随笔分类 - go
摘要:一般公司项目比较多,比较分散,但是对于都是公司的用户来说,用户数据一般是共享的,所以集成统一认证与授权的功能一般就必不可少,这样可以实现一个用户,分配一点权限,能访问公司很多项目. 一般的认证与授权方案有 OAuth、分布式 Session、OpenID 和 JWT 等.目前常用的是OAuth2,其
阅读全文
摘要:Golang 定时器Timer和Ticker Golang 定时器包括:一次性定时器(Timer)和周期性定时器(Ticker)。 编程中经常会通过timer和ticker、AfterFunc定时器NewTicker是设定每隔多长时间触发的,是连续触发,而计时器NewTimer是等待多长时间触发的,
阅读全文
该文被密码保护。
该文被密码保护。
摘要:如何输入一个字符串,得到一个唯一的hashcode? 例子如下: package main import ( "fmt" "hash/crc32" ) // String hashes a string to a unique hashcode. // // crc32 returns a uint
阅读全文
摘要:1.json包在使用的时候,结构体里的变量不加tag能不能正常转成json里的字段? 如果变量首字母小写,则为private。无论如何不能转,因为取不到反射信息。 如果变量首字母大写,则为public。 不加tag,可以正常转为json里的字段,json内字段名跟结构体内字段原名一致。 加了tag,
阅读全文
摘要:教程集为您提供谈谈一致性哈希算法及其 Golang 实现(含负载均衡算法概述)等资源,欢迎您收藏本站,我们将为您提供最新的谈谈一致性哈希算法及其 Golang 实现(含负载均衡算法概述)资源 文章目录 一、概述 二、负载均衡算法 2.1 概述 2.2 轮询算法 2.3 随机算法 2.4 随机轮询算法
阅读全文
摘要:package main import ( "fmt" "github.com/chilts/sid" "github.com/kjk/betterguid" "github.com/oklog/ulid" "github.com/rs/xid" "github.com/satori/go.uuid
阅读全文
摘要:通用唯一识别码(英语:universally unique identifier,简称uuid)是一种软件建构的标准,亦为自由软件基金会组织在分散式计算环境领域的一部份。uuid的目的,是让分散式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以
阅读全文
摘要:预备知识: Monotonic Clocks,即单调时间,所谓单调,就是只会不停的往前增长,不受校时操作的影响,这个时间是自进程启动以来的秒数 参考文章:https://www.simpleapples.com/2018/10/26/understand-time-struct-in-go/ 雪花算
阅读全文
摘要:什么是熔断 假设存在这样的调用链: 服务A -> 服务B -> 服务C 如果服C crash 或者一些原因导致不可用,服B可能会阻塞很多线程/协程,如果短时间内大量积压,导致系统资源耗尽服B也变的不可用,同时连带服A一起崩溃,则将形成雪崩现象. 熔断一概念来自于电子工程中的断路器(circuit b
阅读全文
摘要:熔断器像是一个保险丝。当我们依赖的服务出现问题时,可以及时容错。一方面可以减少依赖服务对自身访问的依赖,防止出现雪崩效应;另一方面降低请求频率以方便上游尽快恢复服务。 熔断器的应用也非常广泛。除了在我们应用中,为了请求服务时使用熔断器外,在 web 网关、微服务中,也有非常广泛的应用。本文将从源码角
阅读全文
摘要:// 为什么需要熔断 微服务集群中,每个应用基本都会依赖一定数量的外部服务。有可能随时都会遇到网络连接缓慢,超时,依赖服务过载,服务不可用的情况,在高并发场景下如果此时调用方不做任何处理,继续持续请求故障服务的话很容易引起整个微服务集群雪崩。比如高并发场景的用户订单服务,一般需要依赖一下服务: 商品
阅读全文
摘要:前文中已经介绍了TCP keep alive的做了详尽说明,本文结合golang,介绍如何使用TCP keep alive。 目前golang net包不提供TCP keep alive 空闲多长时间开始探测、 探测总次数直接设置。 可以使用第三方包。 1.下载第三方包 git clone git@
阅读全文
摘要:init函数有一下几点特性: init函数在main执行之前,自动被调用执行的,不能显示调用 每个包的init函数在包被引用时,自动被调用 每个包可以有多个init函数 同一个文件中可定义多个init()函数 package main import ( "fmt" ) func init() { f
阅读全文
摘要:写代码过程中,有时需要分析代码块的时间消耗。 本文介绍使用time包中的Since函数查看程序执行时间。 package main import ( "fmt" "time" ) func main() { t := time.Now() fmt.Println("Hello") for i:=0;
阅读全文
摘要:1. os包 1.1 Write()/WriteString()方法 语法 打开文件 func OpenFile(name string, flag int, perm FileMode) (*File, error) 写入 func (f *File) WriteString(s string)
阅读全文

浙公网安备 33010602011771号