
获得徽章 0
打卡第一天~
fasthttp号称比net/http快十倍,其优化的核心思路很简单:资源复用。
复用 goroutine,减轻 runtime 调度压力;
对象复用,大量使用 sync.Pool 减轻 GC 压力。
除了复用,还有其他的一些优化手段,例如尽量避免 string 与 []byte 的转换开销等。
这些优化技巧和最佳实践,在其 Github 主页上已经贴心给出:_github.com/valyala/fas…
因为fasthttp的实现与标准库差距较大,所以它与net/http的 API 接口是不同的,这导致从net/http重构为fasthttp需要一些学习成本。
使用fasthttp的知名项目:Fiber、Gearbox、atreugo
fasthttp号称比net/http快十倍,其优化的核心思路很简单:资源复用。
复用 goroutine,减轻 runtime 调度压力;
对象复用,大量使用 sync.Pool 减轻 GC 压力。
除了复用,还有其他的一些优化手段,例如尽量避免 string 与 []byte 的转换开销等。
这些优化技巧和最佳实践,在其 Github 主页上已经贴心给出:_github.com/valyala/fas…
因为fasthttp的实现与标准库差距较大,所以它与net/http的 API 接口是不同的,这导致从net/http重构为fasthttp需要一些学习成本。
使用fasthttp的知名项目:Fiber、Gearbox、atreugo
展开
评论
点赞
#青训营 x 字节后端训练营#
拒绝bigkey
防止网卡流量、慢查询,string类型控制在10KB以内,hash、list、set、zset元素个数不要超过5000。
反例:一个包含200万个元素的list。
非字符串的bigkey,不要使用del删除,使用hscan、sscan、zscan方式渐进式删除,同时要注意防止bigkey过期时间自动删除问题(例如一个200万的zset设置1小时过期,会触发del操作,造成阻塞,而且该操作不会不出现在慢查询中(latency可查)),查找方法和删除方法
选择适合的数据类型
例如:实体类型(要合理控制和使用数据结构内存编码优化配置,例如ziplist,但也要注意节省内存和性能之间的平衡)
拒绝bigkey
防止网卡流量、慢查询,string类型控制在10KB以内,hash、list、set、zset元素个数不要超过5000。
反例:一个包含200万个元素的list。
非字符串的bigkey,不要使用del删除,使用hscan、sscan、zscan方式渐进式删除,同时要注意防止bigkey过期时间自动删除问题(例如一个200万的zset设置1小时过期,会触发del操作,造成阻塞,而且该操作不会不出现在慢查询中(latency可查)),查找方法和删除方法
选择适合的数据类型
例如:实体类型(要合理控制和使用数据结构内存编码优化配置,例如ziplist,但也要注意节省内存和性能之间的平衡)
展开
评论
点赞
#青训营 x 字节后端训练营#
版本库
.git
当我们使用git管理文件时,比如git init时,这个时候,会多一个.git文件,我们把这个文件称之为版本库。
.git文件另外一个作用就是它在创建的时候,会自动创建master分支,并且将HEAD指针指向master分支。
工作区
本地项目存放文件的位置
可以理解成图上的workspace
暂存区 (Index/Stage)
顾名思义就是暂时存放文件的地方,通过是通过add命令将工作区的文件添加到缓冲区
本地仓库(Repository)
通常情况下,我们使用commit命令可以将暂存区的文件添加到本地仓库
通常而言,HEAD指针指向的就是master分支
版本库
当我们使用git管理文件时,比如git init时,这个时候,会多一个.git文件,我们把这个文件称之为版本库。
.git文件另外一个作用就是它在创建的时候,会自动创建master分支,并且将HEAD指针指向master分支。
工作区
本地项目存放文件的位置
可以理解成图上的workspace
暂存区 (Index/Stage)
顾名思义就是暂时存放文件的地方,通过是通过add命令将工作区的文件添加到缓冲区
本地仓库(Repository)
通常情况下,我们使用commit命令可以将暂存区的文件添加到本地仓库
通常而言,HEAD指针指向的就是master分支
展开
评论
点赞
#青训营 x 字节后端训练营#
版本库
当我们使用git管理文件时,比如git init时,这个时候,会多一个.git文件,我们把这个文件称之为版本库。
.git文件另外一个作用就是它在创建的时候,会自动创建master分支,并且将HEAD指针指向master分支。
工作区
本地项目存放文件的位置
可以理解成图上的workspace
暂存区 (Index/Stage)
顾名思义就是暂时存放文件的地方,通过是通过add命令将工作区的文件添加到缓冲区
本地仓库(Repository)
通常情况下,我们使用commit命令可以将暂存区的文件添加到本地仓库
通常而言,HEAD指针指向的就是master分支
展开
评论
点赞
#青训营 x 字节后端训练营#
第一天
ProtoBuf 的全称是 Protocol Buffers,它是由 Google 开发和定义的与 XML、JSON 类似的一种协议格式,用于高效存储与读取结构化数据。它基于二进制,因此使用 ProtoBuf 能将数据压缩得更小
第一天
ProtoBuf 的全称是 Protocol Buffers,它是由 Google 开发和定义的与 XML、JSON 类似的一种协议格式,用于高效存储与读取结构化数据。它基于二进制,因此使用 ProtoBuf 能将数据压缩得更小
展开
评论
点赞