随笔分类 - Golang
摘要:OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。 注:转自 https://www.ruanyifeng.com/blog/2014
阅读全文
摘要:导语: 在Nitro 中, 我们需要一款专业的负载均衡器。 经过一番研究之后,Mihai Todor和我使用Go构建了基于Nginx、Redis 协议的路由器解决方案,其中nginx负责所有繁重工作,路由器本身并不承载流量。 这个解决方案过去一年在生产环境中运行顺畅。 以下是我们所做的工作以及我们为
阅读全文
摘要:转自:https://mp.weixin.qq.com/s/2daFH9Ej5fVlWmpsN5HZzw 外文链接: https://medium.com/coinmonks/code-a-simple-p2p-blockchain-in-go-46662601f417 在之前的文章中,我们已经知道
阅读全文
摘要:注:图片来自 https://github.com/gocn/knowledge, 更新在此,共勉前行者。
阅读全文
摘要:说明: 无意间看到gin 中有trees的属性,好奇想一探究竟,到底gin是怎样生成路由解析树的? 这是一个测试截图,图中大概可以了解到gin是怎样做路由解析的。配合源码的阅读,解析树大致如下: 通过root -> child 的形式,形成一个路由解析树。当请求进来时,如果能匹配上一条线,则进入相应
阅读全文
摘要:简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,
阅读全文
摘要:为什么要在密码里加点“盐” 盐(Salt) 在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。 以上这句话是维基百科上对于 Salt 的定义,但是仅凭这句话还是很难理解什么叫 Salt,以及它究竟起到什么作用。 第一代密码
阅读全文
摘要:对于Random的使用,在业务中使用频率是非常高的,本文就小结下常用的方法: 在Golang中,有两个包提供了rand,分别为 "math/rand" 和 "crypto/rand", 对应两种应用场景。 一、"math/rand" 包实现了伪随机数生成器。也就是生成 整形和浮点型。 该包中根据生成
阅读全文
摘要:参考:http://tonybai.com/2017/04/20/go-coding-in-go-way/ , 但他实现的没有关闭chan, 导致 fatal error: all goroutines are asleep - deadlock! ,本方法优化了这个BUG.
阅读全文
摘要:废话少叙,先上一段代码,猜猜预期的效果。 out: 是不是很诧异,结果为什么不是预期的,map的值都是一个呢? 原因:for range每次产生的 k , v 都是一个值拷贝,不是 stus对应值得引用,故而会出现这种结果。 细节分析: 快速解决办法: 谨在此记录。
阅读全文
摘要:我们在生产环境下运行的系统要求优雅退出,即程序接收退出通知后,会有机会先执行一段清理代码,将收尾工作做完后再真正退出。我们采用系统Signal来 通知系统退出,即kill pragram-pid。我们在程序中针对一些系统信号设置了处理函数,当收到信号后,会执行相关清理程序或通知各个子进程做自清理。k
阅读全文
摘要:mgo 是 MongoDB 的 Golang 驱动。 连接池 我们通过 Dial 函数创建一个新的 session: 创建的 session 能够和 MongoDB 集群中的所有服务器通讯。需要注意的是,对于一个集群只需要调用一次 Dial,通过此 Dial 返回的 session 的 New 和
阅读全文
摘要:简介 mgo是由Golang编写的开源mongodb驱动。由于mongodb官方并没有开发Golang驱动,因此这款驱动被广泛使用。mongodb官网也推荐了这款开源驱动,并且作者在github也表示受到了mongodb官方的赞助。但由于作者的个人安排原因,该驱动的更新、bug修复、issue维护略
阅读全文
摘要:写在前面 开发过程中会经常处理集合这种数据结构,简单点的处理方法都是使用内置的map实现。但是如果要应对大量数据,例如,存放大量电话号码,使用map占用内存大的问题就会凸显出来。内存占用高又会带来一些列的问题,这里就不展开说了。还有就是,大量数据存放于map,查找的哈希算法消耗也会很高。这时就该考虑
阅读全文
摘要:写在前面 开发 hashset 常用的套路: 我们一般只用 map 的键来保存数据,值是没有用的。所以来缓存集合数据会造成内存浪费。 空对象 空对象是个神奇的东西。它指的是没有字段的结构类型。 它牛逼的地方在于: 可以和普通结构一样操作 var a = []struct{}{struct{}{}}
阅读全文
摘要:转自: 张晓龙 中兴开发者社区 https://mp.weixin.qq.com/s/EEUtTykcrXhcM2hJT01SoQ 序言 众所周知,Golang中不支持类似C++/Java中的标记式泛型,所以对于常用算法,比如冒泡排序算法,有些同学容易写出逻辑上重复的代码,即整型是第一套代码,字符串
阅读全文
摘要:原文地址:http://blog.golang.org/laws-of-reflection ##介绍 反射在计算机的概念里是指一段程序审查自身结构的能力,主要通过类型进行审查。它是元编程的一种形式,同样也是引起混乱的重大来源。 在这篇文章里我们试图阐明Go语言中的反射是如何工作的。每种语言的反射模
阅读全文
摘要:最近在项目中遇到了 Go channel 的一些问题,在此记录下 close channel 的一些特性。 关闭channel 向已经关闭的channel写数据 从已经关闭的channel读取数据 需要分两种情况: 无缓冲channel或者缓冲channel已经读取完毕 缓冲channel未读取完毕
阅读全文
摘要:转自:http://colobu.com/2015/09/07/gotchas-and-common-mistakes-in-go-golang/ 初级 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Ac
阅读全文
摘要:本文转载自:http://colobu.com/2017/02/01/golang-summaries/ 原文: Golang Summaries by TapirLiuima 本文是由TapirLiu总结的Golang中的一些知识点,对于深入学习Golang很有帮助,所以我特意翻译了一下。 1.
阅读全文

浙公网安备 33010602011771号