使用 TiDB 作为 ZaloPay 商户平台核心数据库

作者介绍:Tan To Nguyen Duy,VNG DevOps 工程师,参与电子钱包 ZaloPay 基础架构的开发。 首先介绍一下 VNG。VNG 是越南领先的互联网科技公司,在 2014 年,我们被评为越南唯一一家估值 10 亿美元的创业公司。VNG 推出了许多重要产品,比如 Zalo、ZaloPay、Zing 等,吸引了数亿用户。Zalo 是 VNG 集团的旗舰产品,发布于 2012 年,是越南使用最广泛的通讯 APP,目前活跃用户数达到 1 亿。而本文主角 ZaloPay 是一款移动...阅读全文

golang面试题一

func change( s ...int) { s = append(s,3) } slice := make([]int,5,5) slice[0] = 1 slice[1] = 2 change(slice...) fmt.Println(slice) change(slice[0:2]...) fmt.Println(slice) 第一次调用 change() 时,append() 操作使切片底层数组发生了扩容,原 slice 的底层数组不会改变;第二次调用change() 函数时,使用...阅读全文

简书 2020-07-04 06:32:45 stevenyeahnet

使用Golang重新实现dmidecode

背景 之前采集设备硬件信息使用的是命令行工具: dmidecode, 所以需要提前确认环境是否安装了该工具,而且有些嵌入式的环境, 并不方便安装工具, 所以需要用一个无依赖的库来替换. github找了一圈, 发现并没有现成的,但幸运的是有一个读取smbios信息的库: go-smbios smbios信息读取库, 基于这个功能 再参考SMBIOS Reference 6 Specification就能写解析库了. 在开始解析数据之前, 我们先了解一些关于SMBIOS的基本概念. 什么是SMBI...阅读全文

简书 2020-07-04 06:32:45 李纳斯

2020-07-03 Panic 使用注意点-第一贴

golang语言没有JAVA的异常处理机制。每种语言都有自己的特别之处,否则就没有存在的价值;每有语言都有自己的用武之地,否则就会在滚滚的技术革新中被淘汰。今天我们来说下GO 语言中Panic的使用注意事项:当我们再程序中主动抛出一个系统退出的异常时,就可以用Panic, 我们直接看如下代码”func test() { defer func() { time.Sleep(time.Second * 1) if err := recover(); err != nil { fmt.Println(...阅读全文

简书 2020-07-04 06:32:44 vison_kong

golang使用mux实现http自定义路由

最近在做坐席管理的服务,其中需要对上层业务提供外部的REST接口,去对坐席、坐席组、租户域进行增删改查操作。 采用了gorilla开发的mux实现自定义路由。 package地址如下: github.com/gorilla/mux Golang中http的设计非常轻量,且具有很高的扩展性,上手非常简单。参考gorilla给出的wiki就可以轻易设计出自定义的路由功能。 这对于像我这样的c语言开发者而言,是非常友善的。 下面直接上代码,讲述一下。 我设计了以下三种URL分别定位三种资源(域、组、坐...阅读全文

简书 2020-07-04 06:32:42 5djindoudou

golang x509的Certificate.Verify函数

周末在家无趣,研究了一个golang里面的Certificate.Verify函数。 golang的官方定义在这里:https://golang.org/pkg/crypto/x509/#Certificate.Verify 函数原型声明如下: func (c Certificate) Verify(opts VerifyOptions) (chains [][]Certificate, err error) 其中: c *Certificate是待验证的证书 参数opts定义如下,我们只关注这...阅读全文

简书 2020-07-04 06:32:41 CodingCode

Go 语言操作 MySQL 之 事务操作

友情提示:此篇文章大约需要阅读 5分钟 9秒,不足之处请多指教,感谢你的阅读。 订阅本站 此文章首发于 Debug客栈 |https://www.debuginn.cn 事务 数据库事务( transaction )是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。 事务由事务开始与事务结束之间执行的全部数据库操作组成。 MySQL 存储引擎分类有 MyISAM、InnoDB、Memory、Merge等,但是其中最为常用的就是 MyI...阅读全文

Segmentfault 2020-07-07 14:32:32 Meng小羽

忘掉 Snowflake,感受一下性能高出 587 倍的全局唯一 ID 生成算法

今天我们来拆解 Snowflake 算法,同时领略百度、美团、腾讯等大厂在全局唯一 ID 服务方面做的设计,接着根据具体需求设计一款全新的全局唯一 ID 生成算法。这还不够,我们会讨论到全局唯一 ID 服务的分布式 CAP 选择与性能瓶颈。 已经熟悉 Snowflake 的朋友可以先去看大厂的设计和权衡。 百度 UIDGenertor:github.com/baidu/uid-g… 美团 Leaf:tech.meituan.com/2017/04/21/… 腾讯 Seqsvr: www.info...阅读全文

掘金 2020年07月03日 夜幕镇岳剑丨韦世东

忘掉 Snowflake,感受一下性能高出 587 倍的全局唯一 ID 生成算法

今天我们来拆解 Snowflake 算法,同时领略百度、美团、腾讯等大厂在全局唯一 ID 服务方面做的设计,接着根据具体需求设计一款全新的全局唯一 ID 生成算法。这还不够,我们会讨论到全局唯一 ID 服务的分布式 CAP 选择与性能瓶颈。 已经熟悉 Snowflake 的朋友可以先去看大厂的设计和权衡。 百度 UIDGenertor:https://github.com/baidu/uid-... 美团 Leaf:https://tech.meituan.com/2017... 腾讯 Seqs...阅读全文

Segmentfault 2020-07-07 11:32:42 夜幕镇岳

go语言有什么用,有没有在线编辑运行的工具

Go语言在线编辑个人推荐使用这个网址http://go.jsrun.net/,快速又好用 Go语言一种编译型语言,是谷歌在2009年推出的编程语言,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 Go语言应用已经开始变得广泛,比如 Docker 就是是用Go语言进行开发的,为 比特币/莱特币 开发的闪电网络也是采用Go语言进行开发的。在不损失应用程序性能的情况下降低代码的复杂性。 Go语言主要用作服务器端开发,其定位是用来开发“大型软件,适合于很多程序员一起开发大型...阅读全文

Segmentfault 2020-07-07 09:32:32 清风

这是个招聘帖~~大厂Golang

大家好~急需10个Golang开发同学,接受转语言,3年以上后台开发即可,Base北京/深圳,有兴趣的可发简历邮件到727120269@qq.com 岗位职责 负责服务器端研发维护工作,保障系统稳定性; 负责产品后台功能模块的开发和维护,根据相关需求对功能性进行调整。 岗位要求 熟悉GO编程语言;了解PHP、nodejs、java等其它语言者优先 熟悉web开发技术:Linux操作系统,web服务器,常见数据库和协议、架构、存储、缓存、安全,隐私,消息队列,API设计等 ...阅读全文

Go语言中文网 2020-07-03 16:33:56 ferry

GO语言必备的五大开源工具!

大家都知道编程语言众多,其中有python、GO语言、JAVA语言、PHP语言,而GO语言因为具有广泛的优势,深受大家的喜欢和关注。那么GO语言常用的开源工具有哪些? 1、Go Revive:Revive是一个GO语言的代码质量检测工具,具有快速、可配置、可扩展、灵活和美观等特性,可作为GOLINTd1的替代方案。Revive提供了更多新功能,可以花费很多时间进行研究。 2、Go Callvis:一个非常值得收藏的可视化工具,你可以使用Callvis来视化GO程序的调用图,这个开发工具有一个使用...阅读全文

51CTO博客 2020-07-03 11:50:37 老男孩IT

我们怎样用 Go 和 Vue 快速构建一个病患实时监控系统?

本文最初发布于 Kasvith 博客,经原作者授权由 InfoQ 中文站翻译分享。 现创建了一个“程序员从业者聚集圈”圈内会不定时更新Android、Java等进阶资料;也会分析相对应的从业环境和经验分享;当然也欢迎大家吐槽吹牛;进圈方式放在了文末 疫情爆发 2019 年 11 月,我们听说了来自中国的第一起未知致命疾病的病例。现在,人们都知道它是 Covid-19,并且它似乎永远改变了我们的生活。这种病毒是致命的,具有高度传染性。但是我们对它却知之甚少。我真心希望人类能尽快找到治愈它的方法。 ...阅读全文

简书 2020-07-03 10:33:00 Android全栈

grpc安装以及在go中的简单应用

1.golang语言的安装为了简化安装过程,使用yum方式进行快速安装1.1通过命令查看当前yum中golang的版本信息: yum info golang yum中golang信息查看 1.2 使用yum命令安装golang: yum install golang 1.3 验证安装成功的信息go env 1.4 在环境变量中增加golang的GOROOT和GOPATH路径,将GOPATH设置成项目的实际路径vi /etc/profile在文件末尾添加如下 # GOROOT export GOR...阅读全文

简书 2020-07-03 10:32:57 卢纪超

fabric国密支持

介绍 本文主要介绍fabric国密改造要点、国密改造已完成版本、国密改造后的使用方法,同时,会给出完成国密改造的版本地址,分享给大家使用。 修改要点 1 签名验签改造 这部分改造主要是修改密钥的生命周期管理,包含:密钥生成(keygen.go)、密钥派生(kederiv.go)、密钥加载(keyimport.go)。这些部分添加国密支持后,在sw/new.go的bccsp实例化过程中加入对应的国密处理器类。另外,在sw/fileks.go中将密钥写入文件或者从文件中载入密钥的部分添加国密类型密钥...阅读全文

简书 2020-07-03 10:32:55 百味纯净水

雪花算法生成唯一ID

能做啥? 能够在分布式场景中为我们在每毫秒里面生成4096个纯数字的有序的唯一id,但只能连续使用69年(代码在69年后就不能保证生成的是唯一id了),并且你的分布式机器小于1024台。当然这里面出现的4096,69,1024都是可以通过参数配置调大调小的。 golang版本实现 image.png 最高位是符号位,始终为0,不可用。 41位的时间序列,精确到毫秒级,41位的长度可以使用69年。时间位还有一个很重要的作用是可以根据时间进行排序。 10位的机器标识,10位的长度最多支持部署1024...阅读全文

简书 2020-07-03 10:32:55 Best博客

浅谈JVM与垃圾回收

写在前面 简单的介绍一下JVM(Java Virtual Machine)吧,它也叫Java虚拟机。虽然它叫虚拟机,但是实际上不是我们所理解的虚拟机,它更像操作系统中的一个进程。JVM屏蔽了各个操作系统底层的相关的东西,Java程序只需要生成对应的字节码文件,然后由JVM来负责解释运行。 介绍几个容易混淆的概念,JDK(Java Development Kit) 可以算是整个Java的核心,其中有编译、调试的工具包和基础类库,它也包含了JRE。 JRE(Java Runtime Environm...阅读全文

简书 2020-07-03 10:32:54 HLHdetective