分享自己用go语言写的properties配置文件读写库,java的朋友应该很熟悉。写godoc 很好的实例

# properties Properties 是一个用于读写属性文件的Go库。Properties 可保存在流中或从流中加载。 属性列表中每个键及其对应值都是一个字符串。它是线程安全的:多个线程可以共享单个 Properties 对象而无需进行外部同步。 Properties is a Go library for reading and writing properties files. The Properties model represents a persistent s...阅读全文

Go语言中文网 2021-08-17 18:21:42 wandercn

用Go轻松完成一个TCC分布式事务,保姆级教程

什么是TCC,TCC是Try、Confirm、Cancel三个词语的缩写,最早是由 Pat Helland 于 2007 年发表的一篇名为《Life beyond Distributed Transactions:an Apostate’s Opinion》的论文提出。 ### TCC组成 TCC分为3个阶段 - Try 阶段:尝试执行,完成所有业务检查(一致性), 预留必须业务资源(准隔离性) - Confirm 阶段:如果所有分支的Try都成功了,则走到Confirm阶段。C...阅读全文

Go语言中文网 2021-08-15 22:02:17 yedf

go-eventbus事件总线

# go-eventbus事件总线 地址: [github.com/lockp111/go-eventbus](https://github.com/lockp111/go-eventbus) 参考go-observable, 但是那个代码有问题, 会因为map同时读写出现crash, 我修复之后提交给作者也一直不理我, 于是就自己fork一份自用, 后来觉得反射调用的损耗还是比较大的, 而且使用func如果不注意, 有可能出现两个相同的func, 于是改成interface, Benc...阅读全文

Go语言中文网 2021-08-14 22:40:43 harman

Go Module 教程第 2 部分:项目、依赖和 gopls

## 引言 模块是集成到 Go 系统中,为依赖管理提供支持。这意味着模块几乎可以触及任何与源代码相关的内容,包括编辑器支持。为了向编辑器提供模块支持(以及其他原因) ,Go 团队构建了一个名为 [gopls](https://github.com/golang/tools/blob/master/gopls/doc/user.md) 的服务,它实现了语言服务器协议([LSP](https://microsoft.github.io/language-server-protocol/))。L...阅读全文

Go语言中文网 2021-08-14 22:40:02 polaris

飞书 + Lua 实现企业级组织架构登录认证

![](https://pic3.zhimg.com/v2-6f1ed5de3e7587b848024b63c40e2ba5_r.jpg) 飞书是字节跳动旗下一款企业级协同办公软件,本文将介绍如何基于飞书开放平台的身份验证能力,使用 Lua 实现企业级组织架构的登录认证网关。 <!--more--> ## 登录流程 让我们首先看一下飞书第三方网站免登的整体流程: 第一步: 网页后端发现用户未登录,请求身份验证; 第二步: 用户登录后,开放平台生成登录预授权码,30...阅读全文

Go语言中文网 2021-08-14 11:41:36 hsowan

接口分离原则在 Go 语言中的实践

每个人都应该写一篇关于 Golang 接口的文章!不知道我为什么等了这么久才写了这篇! 当你需要 mock 一个对象或者函数需要接受一组相关的功能从而来与对象进行交互时,Golang 的接口都可以 使这些变得更为简单。 是的!实际上接口就是被用来实现这些目的的,你或许有一个实现了很多方法的对象实例,但当你将它作为参数传递 给另外一个函数的时候,该函数可能仅仅使用了对象实例的一部分方法,为了解决这个问题,你可以通过更改函数签名的方式来解决, 你可以定义一个新的接口,函数接收实现了...阅读全文

Go语言中文网 2021-08-13 10:46:00 polaris

Go: 内置函数优化

![由 Renee French 创作的原始 Go Gopher 作品,为“ Go 的旅程”创作的插图。](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200813-Go-Built-in-Functions-Optimizations/Illustration.png) ℹ️ 这篇文章基于 Go 1.13。 Go 语言提供内置函数来辅助开发者处理 channel,slice,或者 map。...阅读全文

Go语言中文网 2021-08-12 11:48:03 dust347

Go: 定时器的生命周期

![](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200704-go-timers-life-cycle/图0.png) > 本篇文章基于 Go `1.14` `定时器` 对于在将来的某个时刻执行代码时非常有用。Go 内部在管理创建的定时器的同时,也会对其执行进行规划。后者可能有点棘手,因为 Go 调度器是一个协作式(`cooperative`)调度器,这意味着一个 goroutine 必须...阅读全文

Go语言中文网 2021-08-12 11:40:18 double12gzh

当在 Go 中使用微服务还不够时:介绍 DDD Lite

当我开始用 Go 工作时,社区并不看好类似 DDD(Domain-Driven Design 领域驱动设计)和清晰架构这样的技术。我很多次听到这样的声音:*“不要在 Golang 中用 Java!”,“我已经在 Java 中见过了,请别这样做!”*。 这些时候,我已经有了近 10 年的 PHP 和 Python 经验。我已经见过太多糟糕的事情了。我记得所有那些“八千行”(有着 8 千行以上代码的方法 😉)和没有人愿意维护的应用。我查看了这些丑陋怪物以前的 Git 历史,他们最初看起来是无害...阅读全文

Go语言中文网 2021-08-12 11:29:55 dust347

Go:对象文件&重定位

![](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200701-Go:Object-File%26Relocations/1_HxAju6n33e9Y8AJwMuQL3w.png) **本文章基于 Go 1.14** 重定位是链接过程中的一个阶段,重定位是链接过程中为每个外部符号分配适当地址。由于每个包都是单独编译的,因此它们不知道来自其它包的函数或者变量在哪里。 让我们从一个需要重定位的简...阅读全文

Go语言中文网 2021-08-12 11:18:15 vearne

Go 语言 HTML 安全编码

> 免责声明:这不是一个官方的谷歌帖子或公告,本文只是我理解的一些可以用的理论方法。 谷歌信息安全小组谷歌发布了 [Go 语言 “safehtml” 包](https://github.com/google/safehtml) 。如果你有兴趣使你的应用程序能够自适应服务器端 XSS,那么你可能希望采用它来替代“html/template”。(将你的应用程序中的 HTML 类库)迁移到 safehtml 会非常简单,因为它只是原始 html/template 标准包的一个强化分支。如果你的应...阅读全文

Go语言中文网 2021-08-12 11:11:41 lts8989

容器的艰难之旅:gocker —— Go 实现的迷你 Docker

容器很受欢迎,但是被误解了。 容器已成为应用程序在服务器上打包和运行的默认方式,最初是由 Docker 普及的。现在,Docker 本身被误解了。它是一个公司的名字和一条命令(更确切地说是一组命令),使你容易地管理容器(创建,运行,删除,连接网络)。但是容器本身是由一组操作系统原语创建的。在本文中,我们将关注 Linux 操作系统上的容器,就像 [Windows 上的容器](https://docs.microsoft.com/en-us/virtualization/windowscontai...阅读全文

Go语言中文网 2021-08-12 10:40:39 alandtsang

为什么说 Golang 是 DevOps 专业人士的第一首选?

Golang 是当今最受欢迎的编程语言之一,现在就让我们来看看它在 DevOps 空间中能够做什么? Golang,也称为 “Go”,是一种具备快速和高性能的编译型语言,这是被设计成为易于阅读和理解的原因。Go 是由 Rob Pike,Robert Griesemer 和 Ken Thompson 等人在 Google 时编写的,于 2009 年 11 月首次发布。 Golang 被设计成高度简洁和易于理解的语法。 这是 Golang 中经典的 “hello world” 示例...阅读全文

Go语言中文网 2021-08-12 10:21:31 polaris

Go开发的后台管理系统,主框架是用Gin

## 平台简介 * 基于Gin的后台管理系统 * 前端采用ruoyi-ui 、Vue、Element UI。 * 后端采用GO语言 框架 Gin。 * 本项目由猴酷团队开发。 ## 内置功能 1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 3. 岗位管理:配置系统用户所属担任职务。 4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 5. 角色管理:角色菜单...阅读全文

Go语言中文网 2021-08-12 08:52:51 druidcaesa

golang elasticsearch 搜索封装

#日志系统说明 - 先来传送门: [代码传送门](https://github.com/xxjwxc/esLog) - 1、日志主要说明:谁在什么时间,在什么地方,做了什么事情,产生了什么影响,影响的变化因子。 - 2、日志系统主要建设在oplogger基础上。将现有的mysql存储方式改成elasticsearch的存储方式。并且更新了现有字段,使其更优化 - 3、以下为主要设计原理图: 说明: 1. trace_id : 用来追踪一个请...阅读全文

Go语言中文网 2021-08-11 20:56:29 xie1xiao1jun

关于Golang struct{}{}用法和注意事项

引自[ljq@GitHub](https://github.com/ljq/jackliu-golang-notes) * struct {} struct {}是一个**无元素的结构体类型**,通常在没有信息存储时使用。 优点:不需要内存来存储struct{}类型的值。 * struct{}{} struct{}{}是一个**复合字面量**,它构造了一个**struct{}类型的值**,该值也是空。 * 两个structt{}{}地址相等 ``` package mai...阅读全文

Go语言中文网 2021-08-11 14:05:54 ljq

[长沙] AISHU | 爱数-急需高级前端开发工程师,薪资open

### 企业介绍: - 爱数是领先的**大数据基础设施提供商**,致力于为政府、公共事业及企业的数字化转型赋能,帮助各行各业的客户在数字化浪潮中充分释放数据价值,实现即时、随时、实时的数据服务。 - 爱数成立于2006年,经过多年的沉淀与积累,**目前已完成E轮融资并实现自主盈利**,有1500+名员工,合作伙伴上千家,总部位于上海,在长沙、上海、成都、德国汉堡设有研发中心,客户分布于全球40+个国家,在政府、企业、金融、教育、医疗等行业内已获得24,000+家客户的认可。 - 为...阅读全文

Go语言中文网 2021-08-11 10:55:48 tanksun

如何选择最适合你的分布式事务方案

之前我有一篇文章,介绍了[分布式事务最经典的七种解决方案](https://segmentfault.com/a/1190000040321750),这里我们从业务需求的角度,根据不同的业务场景,给出最适合的解决方案。 当我们采用服务/微服务架构,对业务进行分拆解耦后,原先在一个单体内,使用本地数据库保证ACID的数据修改,因为跨了多个服务,就不再适用了,就需要引入分布式事务来保证新的原子性。 由于分布式事务方案,无法做到ACID的保证,没有一种完美的方案,能够解决掉所有业务问题。因...阅读全文

Go语言中文网 2021-08-09 09:41:30 yedf