Tech

Go: 优化项目的编译效率

2月初做了个「优化项目编译效率」的技术需求,达到的效果:编译微服务的内存使用率从最高8-9G下降到了1-2G,编译时间从平均70-80s下降到55-60s。 在查阅了官方资料,及结合自身的分析、实操后,总结了这篇文章。文章记录了我思考、解决问题的过程,如果你有更好的思路,欢迎交流讨论。文章除了简述解决思路外,还介绍了一些工具来辅助分析问题,最后也对编译原理做了概述。...

Continue reading...

grpc-go源码分析之logger

从上个月开始梳理grpc-go的源码,希望从中学习到一些来自谷歌“原汁原味”的代码设计及风格。第一个开始分析的包是encoding,这个包下的代码行数不多,主要就是如下两个部分 encoding/decoding...

Continue reading...

在阳春三月,开启一段新的学习之旅

在今年春节结束之际,给自己订了学习计划:包括阅读一些书籍和在线课程,其目的是为了提高Go的技术水平。昨天,学习进度到了这项计划的里程碑——50%,而我毅然决然地放弃了之前的计划,花了约一天的时间说服自己制定新的计划并开启一段新的学习之旅。 文章接下来的内容会记录昨天思想斗争的片段,供未来回首。若对正在阅读此篇文章的你有帮助/启发,那真是笔者莫大的荣幸。若跟你的观点相悖,忽略以下内容即可。...

Continue reading...

结束Java工程师生涯,往新蓝海出发

一周前我入职了新公司,不再以Java工程师的身份。做出这个决定的难度可比写下这篇“看似吸引”的标题的难度大多了。除了想借此篇文章对上一份工作做一次总结,也想为自己留一份“记录”,用以回首这个职业生涯,甚至可能是人生的转折点。

Continue reading...

Java并发包工具类使用范式

上周看完极客时间的《Java并发编程》课程,发现知识讲的通俗易懂,没有很多晦涩的用词,个人认为适合Java并发编程入门的读者。对于技术大牛,就别花这一百元去购买课程了,还是建议看回经典的“圣书”。此篇文章不会写过多关于课程的具体内容,笔者希望有兴趣的读者花钱去购买课程,创作不易,“花钱购买别人的知识”是个良性循环。 以下篇幅仅记录课程中提到的关于并发编程在实际工程中推荐使用的编程范式。范式,意味着是经典做法,所以没有特殊理由不要尝试换个写法。

Continue reading...

高级树、AVL树和红黑树

覃超的《算法训练营》课程学习已接近尾声,通过这段时间的学习及训练,对数据结构和算法的认知进一步加深。从业务系统的CURD下沉到底层的数据结构和算法,回顾这些知识给我最大的感触是:这些数据结构和算法科学家/专家非常伟大。 今天用一些时间总结课程里关于“树”的知识。读者需要注意的是,对于下文中提到的几种“树”,这里只做简单的介绍、小结。详细的推理和证明建议有兴趣的读者可以查阅详细的资料,本文就不再花费大量篇幅去拷贝各位科学家的论文。提示:本文里有些超链接需要自备科学上网工具才可访问。

Continue reading...