摘要:所有代码基于Go-1.17。一些研究Go数组的自问自答,可以考虑作为面试题。 问题:静态存储区是什么?和堆/栈有什么区别? 回答: 可以参考下列图 堆上存放new产生的大块内存 栈上存放的是程序运行的时候使用的局部变量内存 代码段和数据段可以统一称为静态存储区 代码段存放的就是程序的二进制文件 数据 阅读全文
SSA:终于知道编译器偷摸做了哪些事
2021-12-22 14:51 by 轩脉刃, 848 阅读, 1 推荐, 收藏, 编辑
摘要:你好,我是轩脉刃。 在golang中,我们可以使用go tool compile -S main.go 工具将一个go程序直接转换为汇编代码。但是你会发现,最终编译出来的汇编代码其实是已经被优化过了的,编译器其实很聪明,甚至将一些函数合并,取消等。至于这个过程,并不是一蹴而就的,在golang代码和 阅读全文
丈量你的代码,从cloc开始
2021-12-19 15:50 by 轩脉刃, 1030 阅读, 0 推荐, 收藏, 编辑
摘要:如果我想统计我当前的项目有多少代码量?行数最高的代码文件有哪些?并且排除某些目录,怎么统计?要统计出注释多少行,和代码多少行?使用cloc就行。 cloc是一款使用Perl语言开发的开源代码统计工具,支持多平台使用、多语言识别。 mac上安装cloc还是用brew最为简单, brew install 阅读全文
我的极客时间专栏结课了!!!
2021-12-17 01:16 by 轩脉刃, 814 阅读, 2 推荐, 收藏, 编辑
摘要:我的极客时间专栏结课了!!! 我的极客时间专栏结课了!!!太TMD不容易了。 今天下班到家的时候,收到了一份包裹,里面是极客时间送的结课礼物。是的,我的《手把手带你写一个web框架》专栏终于结课了。 “老师总计输出了38篇文字,约321458字,总计上线音频时长11小时13分34秒。“ ”积土成山, 阅读全文
使用plantuml,业务交接就是这么简单
2021-12-14 07:09 by 轩脉刃, 1237 阅读, 3 推荐, 收藏, 编辑
摘要:使用plantuml,业务交接就是这么简单 你好,我是轩脉刃。 最近交接了一个业务,原本还是有挺复杂的业务逻辑的,但发现交接过来的项目大有文章,在项目代码中有一个docs文件夹,里面躺着若干个 puml 文件,这些puml文件把业务中最核心的一些业务流程图和时序图都绘制清楚了。看到这个文件夹无异于发 阅读全文
collection库更新1.4.0版本
2021-12-12 22:43 by 轩脉刃, 287 阅读, 0 推荐, 收藏, 编辑
摘要:collection库更新1.4.0版本 collection库一直在使用中,周末集合github上的反馈以及contributor的修改,更新了1.4.0版本。 这个版本做了几个事情: 增加了三种类型, uint, uint32, uint64 这三种类型也算基础类型了,目前基本上已经把所有基础类 阅读全文
设计一个回调要注意哪些事情
2021-02-20 18:49 by 轩脉刃, 911 阅读, 2 推荐, 收藏, 编辑
摘要:设计一个回调要注意哪些事情 回调是我们在设计系统的时候经常会使用到的, A服务调用B服务, 但是如果B服务提供的是一个较长时间的、异步的接口, 那么我们就会想到使用一个回调, 让B服务在异步处理结束之后, 来调用A的一个回调接口. 但是细品一下, 这一来一回的设计, 需要思考的点远不是一个回调接口这 阅读全文
谈服务可用性监控
2020-12-24 10:00 by 轩脉刃, 2011 阅读, 1 推荐, 收藏, 编辑
摘要:谈服务可用性监控 一个服务的监控从整体考虑,要达到哪些才能算是完善的?我想,如果没有一个全局性的监控思考,一个服务的监控即使加的再多也是会有监控盲区的。 监控的层次 从基础机器到上层业务,分为三个不同层次:系统,应用,业务。不同的层次都应该有其不同的监控目的。 系统监控 这个层次监控服务所在服务器的 阅读全文
grafana 的主体架构是如何设计的?
2020-12-21 17:51 by 轩脉刃, 2048 阅读, 2 推荐, 收藏, 编辑
摘要:grafana 的主体架构是如何设计的? grafana 是非常强大的可视化项目,它最早从 kibana 生成出来,渐渐也已经形成了自己的生态了。研究完 grafana 生态之后,只有一句话:可视化,grafana 就够了。 这篇就想了解下它的主体架构是如何设计的。如果你对 grafana 有兴趣 阅读全文
一篇理解什么是CanSet, CanAddr?
2020-10-27 12:38 by 轩脉刃, 829 阅读, 2 推荐, 收藏, 编辑
摘要:什么是可设置( CanSet ) 首先需要先明确下,可设置是针对 reflect.Value 的。普通的变量要转变成为 reflect.Value 需要先使用 reflect.ValueOf() 来进行转化。 那么为什么要有这么一个“可设置”的方法呢?比如下面这个例子: var x float64 阅读全文