本文假设读者具有Docker基础知识,着重介绍如何在AWS上运行一个简单的Web程序。如果缺乏Docker基础知识,可以通过参考资料「1」的“傻瓜级”教程学习。 本地运行Image...
Continue reading...Tech
Go: 优化项目的编译效率
2月初做了个「优化项目编译效率」的技术需求,达到的效果:编译微服务的内存使用率从最高8-9G下降到了1-2G,编译时间从平均70-80s下降到55-60s。 在查阅了官方资料,及结合自身的分析、实操后,总结了这篇文章。文章记录了我思考、解决问题的过程,如果你有更好的思路,欢迎交流讨论。文章除了简述解决思路外,还介绍了一些工具来辅助分析问题,最后也对编译原理做了概述。...
Continue reading...如何为百万级用户量语音社交软件设计架构?
从上个月公司乔迁新址以来,在组织结构及其他方面上做了大调整。以服务端为例,有以下几个大事件: 开发模型从“固定发版周期”改为“班车模式”...
Continue reading...grpc-go源码分析之logger
从上个月开始梳理grpc-go的源码,希望从中学习到一些来自谷歌“原汁原味”的代码设计及风格。第一个开始分析的包是encoding,这个包下的代码行数不多,主要就是如下两个部分 encoding/decoding...
Continue reading...在阳春三月,开启一段新的学习之旅
在今年春节结束之际,给自己订了学习计划:包括阅读一些书籍和在线课程,其目的是为了提高Go的技术水平。昨天,学习进度到了这项计划的里程碑——50%,而我毅然决然地放弃了之前的计划,花了约一天的时间说服自己制定新的计划并开启一段新的学习之旅。 文章接下来的内容会记录昨天思想斗争的片段,供未来回首。若对正在阅读此篇文章的你有帮助/启发,那真是笔者莫大的荣幸。若跟你的观点相悖,忽略以下内容即可。...
Continue reading...使用map降低算法的时间复杂度
在前两周在开发新接口时,遇到了今天要介绍的两种场景,我都通过map降低了整个算法的时间复杂度。我认为有必要记录一下思考过程,也顺便分享给各位读者。虽然简单,但确实很好用。 1....
Continue reading...结束Java工程师生涯,往新蓝海出发
一周前我入职了新公司,不再以Java工程师的身份。做出这个决定的难度可比写下这篇“看似吸引”的标题的难度大多了。除了想借此篇文章对上一份工作做一次总结,也想为自己留一份“记录”,用以回首这个职业生涯,甚至可能是人生的转折点。
Continue reading...Java并发包工具类使用范式
上周看完极客时间的《Java并发编程》课程,发现知识讲的通俗易懂,没有很多晦涩的用词,个人认为适合Java并发编程入门的读者。对于技术大牛,就别花这一百元去购买课程了,还是建议看回经典的“圣书”。此篇文章不会写过多关于课程的具体内容,笔者希望有兴趣的读者花钱去购买课程,创作不易,“花钱购买别人的知识”是个良性循环。 以下篇幅仅记录课程中提到的关于并发编程在实际工程中推荐使用的编程范式。范式,意味着是经典做法,所以没有特殊理由不要尝试换个写法。
Continue reading...高级树、AVL树和红黑树
覃超的《算法训练营》课程学习已接近尾声,通过这段时间的学习及训练,对数据结构和算法的认知进一步加深。从业务系统的CURD下沉到底层的数据结构和算法,回顾这些知识给我最大的感触是:这些数据结构和算法科学家/专家非常伟大。 今天用一些时间总结课程里关于“树”的知识。读者需要注意的是,对于下文中提到的几种“树”,这里只做简单的介绍、小结。详细的推理和证明建议有兴趣的读者可以查阅详细的资料,本文就不再花费大量篇幅去拷贝各位科学家的论文。提示:本文里有些超链接需要自备科学上网工具才可访问。
Continue reading...