作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 代码请看:https://github.com/ahfuzhang/cowmap 有这样一种场景:数据量不多的map,在使用中读极多写极少。为了在这种场景下做极致的优化,我实现了copy-on-write的map:其实现原理为:所有的读都可以不加锁的并发读取,一旦需要写,则copy一份原来的map,在备份上修改,然后通过原子操作把指针切换到新的对象上。 我对比了CowMap(Copy-On-WriteMap)和sync.Map,以及普通map+读写...

  ZvAhkxhPQwyp   16天前   24   0   0 Go

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 大家好,我曾是一名鹅厂的后台开发工程师。从2013年开始,我就在准备一个后台开发方向的培训文档,并多次在内部培训和腾讯课堂上分享过。可是,当《数据密集型应用系统设计》这本书诞生后,我发现我已经没有继续做这件事的必要了。我总结的文档也并非完全没用,在很多微小的细节上可以作为上面这本书的补充。因此分享出这份总结文档,希望能够对初学者有用。 文档放在了我的Github上:海量后台开发——从入门到放弃 Havefun!😃

  ZvAhkxhPQwyp   2024年03月08日   46   0   0 Go

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 1.背景 在可观测领域的metrics解决方案中,VictoriaMetrics整个产品体系的性能非常高。两年前,我们团队用这个组件来代替kafka+druid实现的旧版监控系统。其中一个群集扛住了鹅厂内部一个达到9000万/sdatapoint的业务所产生的metrics数据,vm部分用了不到1000核,成本相比kafka+druid低了很多。美中不足是VictoriaMetrics并未提供类似历史群集的解决方案,虽然提供了免费的vmbackup...

  ZvAhkxhPQwyp   2024年01月26日   16   0   0 其他数据库

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 不好意思,刚刚才开始用terraform,或许是更好的办法而我不知道。知道的朋友请一定教教我。 下面是我的办法: provider"kubernetes"{ config_path="../k8s.yaml" } resource"kubernetes_deployment""ahfu-test-deploy-1"{ metadata{ namespace="test-devops" name="ahfu-test-deploy-1" label...

  ZvAhkxhPQwyp   2023年12月08日   21   0   0 云计算

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 我实在是非常喜欢这个强大的metrics监控组件VictoriaMetrics.近期团队需要部署一份,我顺手把用于测试的部署脚本开源到了我的仓库中:https://github.com/ahfuzhang/deploy_VictoriaMetrics_cluster 克隆仓库后,cd到docker_compose目录,然后执行makedeploy就能在macbook上启动完整的一套群集。 通过docker-compose来一键启动多个容器,这当然没...

  ZvAhkxhPQwyp   2023年12月04日   23   0   0 云计算

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 在阅读VictoriaMetricsv1.95.1的命令行手册的时候,发现这样一段: -internStringCacheExpireDurationduration Theexpirydurationforcachesforinternedstrings.Seehttps://en.wikipedia.org/wiki/String_interning.Seealso-internStringMaxLenand-internStringDisab...

  ZvAhkxhPQwyp   2023年11月24日   14   0   0 Go

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 近期在学习golangplan9汇编,总算基本做到了手写汇编,并整理了很多笔记。plan9汇编的资料少,难学,难用。可能也有想学习汇编的人会遇到与我一样的问题。于是把笔记进行了整理,分享到了github:https://github.com/ahfuzhang/learning_go_plan9_assembly 笔记的地址在:https://github.com/ahfuzhang/learning_go_plan9_assembly/blob/...

  ZvAhkxhPQwyp   2023年11月06日   80   0   0 Go

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 接上一篇:http中使用gzip输出内容时,如何预先压缩前一半页面? 经过实测,对线上一个输出html的服务进行了改造,通过预先压缩页面前半部分的方法,此接口的性能提升了20%. 对比项 无gzip压缩 gzip压缩+前半部分预压缩 输出字节数 4399 2246 每核qps 14052.63 16924.75 具体的写法如下:1.获取改造后的库 gogetgithub.com/ahfuzhang/compress@v1.1...

  ZvAhkxhPQwyp   2023年11月02日   38   0   0 Go

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 团队中之前的文件下载做得比较复杂,因为担心量太大,是后台做异步的下载,最终生成文件,传送文件到CDN服务器,最后再告诉用户下载链接。其实在查询接口中就可以实现流式下载,这样查询接口和下载接口可以合二为一,更加简单。 下面是我的demo: 1.建立一个download_file的文件夹作为项目文件夹 gomodinitdownload_file 2.生成go.mod文件,并准备对应的包: gogetgithub.com/gin-gonic/gin@...

  ZvAhkxhPQwyp   2023年11月02日   33   0   0 Go

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 首先,我希望所有golang中用于http请求响应的结构,都使用proto3来定义。麻烦的是,有的情况下某个字段的类型可能是动态的,对应的JSON类型可能是number/string/boolean/null中的其中一种。 一开始我尝试用proto.Any类型,就像这样: import"google/protobuf/any.proto"; messageMyRequest{ google.protobuf.Anyuser_input=1;//用...

  ZvAhkxhPQwyp   2023年11月02日   56   0   0 Go

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 我在多进程插件框架hashicorp/go-plugin的基础上,使用protoreflect来解析proto3语法的IDL文件,通过命令行工具自动生成多进程框架的callee和caller代码。项目的地址请看:https://github.com/ahfuzhang/go-plugin/tree/main/examples/code_generator并且已经提了PR到官方。 golang自身的plugin还非常的弱,主要有这些限制: 其插件的...

  ZvAhkxhPQwyp   2023年11月02日   68   0   0 Go

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 为了提升性能,使用unsafe代码来重构了凯撒加密的代码。代码如下: const( lowerCaseAlphabet="abcdefghijklmnopqrstuvwxyz" upperCaseAlphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ" ) var( lowerCaseAlphabetArr=[]byte(lowerCaseAlphabet) upperCaseAlphabetArr=[]byte(upp...

  ZvAhkxhPQwyp   2023年11月02日   36   0   0 Go

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 使用benchmark压测过程中通常会出现这样的信息: gotest-v-bench=.-benchmem f110000120860ns/op2433B/op28allocs/op f210000120288ns/op2288B/op26allocs/op 可以看见f1在每次运行都产生了28次内存分配。gc通常是golang最大的性能杀手,减少内存分配对性能提升非常明显。 可以把程序区分为hotpath和非hotpath,hotpath即运行最...

  ZvAhkxhPQwyp   2023年11月02日   24   0   0 Go
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~