-
如何给自己的项目设计好CICD
现如今,CICD 的理念越来越深入人心,我供职过的公司无一例外的都采用了 CICD 来加强软件质量。不过因为供职过的公司规模大小、行业属性不尽相同。所以落地CICD的方式也不尽相同,特别是在老东家的时候,参与了 Mono repo 的建设与 CICD 系统的开发。所以自觉的对 CICD 有所深入了解可以总结一下。 一个失败的 CICD 成长史 你的失败命中注定 当你的项目刚刚开始时,一切看起来都很美好。编译测试都可以快速的完成,整个项目也可以只有你一个人,这时候 CICD 也可以做的非常简单。于是乎,你觉得部署jenkins/ teamcity这类需要自己部署的CICD,还需要自己的机器资源。于是乎,你不加思索得使用了 github action 这类的免费CICD。一切看上去都... Read More
-
LevelDB代码阅读:Arena
Arena源代码分析 首先我们来看定义 class Arena { public: Arena(); ~Arena(); // Return a pointer to a newly allocated memory block of "bytes" bytes. char* Allocate(size_t bytes); // Allocate memory with the normal alignment guarantees provided by malloc char* AllocateAligned(size_t bytes); // Returns an estimate of the total memory usage o... Read More
-
LevelDB代码阅读:Varint
C++一直是我想要学习的编程语言之一,但是拖延症,使我始终都没有学个明白。所以借LevelDb代码阅读之际,复习一下,随带学习一下KV数据库 Varint介绍 Varint是Leveldb中的一种表示数字的方法,他用一个或多个字节表示一个数字,值越少的数字,所占用的字节数越少。比如对于int32类型的数字,一般需要4个byte来表示。但是采用Varint,对于很小的int32类型的数字,则可以用1个byte来表示。当然凡事都有好的也有不好的一面,采用Varint表示法,大的数字则需要5个byte来表示。从统计的角度来说,一般不会所有的消息中的数字都是大数,因此大多数情况下,采用Varint 后,可以用更少的字节数来表示数字信息。 Varint每个byte的最高位bit有特殊含义,如... Read More
-
优雅の使用sync.WaitGroup
“keep it simple, stupid” Background 自从上次参加2017 GopherChina被安利了NSQ后,阅读了NSQ的源代码,从中学到了不少代码技巧。于是乎,我就把这些代码技巧运用到了veda上,提高了代码质量。 WaitGroup介绍 WaitGroup用来等待一群goroutine结束,主Goroutine调用Add来设置有多少goroutines需要去等待。然后各个goroutines开始运行,当结束时,调用Done。同时,可以使用Wait来堵塞程序,直到全部Goroutines已经结束。下面是一个WaitGroup的小例子。 var wg sync.WaitGroup var urls = []string{ "h... Read More
-
Linux系统编程笔记:Linux中的fork
“fork是一种创建自身进程副本的操作。 ” Background 最近正在阅读Twemproxy的源代码,从中发现涉及到大量《操作系统原理》和Linux系统编程的知识,由此我这些知识记录下来,做一个系列的笔记。 概论 在多任务操作系统中,运行中的程序需要一种方法来创建新进程,例如运行其他程序。Fork及其变种在类Unix系统中通常是这样做的唯一方式。如果进程需要启动另一个程序的可执行文件,它需要先Fork来创建一个自身的副本。然后由该副本即“子进程”调用exec系统调用,用其他程序覆盖自身:停止执行自己之前的程序并执行其他程序。 正文 进程复制 Fork操作会为子进程创建一个单独的定址空间。子进程拥有父进程所有内存段的精确副本,其中包括:进程上下文、进程堆栈、内... Read More
-
start.sh
“Yeah It’s on. ” 终于在一次次的尝试后,终于令我满意的方案,去开启我的blog之旅。 我最早的blog是高中的时候挂在blogbus上的,不过那都是我从csdn上摘抄来的东西,虽然行为有些幼稚,不过可以看出当时的我对计算机还是无比热爱的。不过最后我并没有读上自己喜欢的计算机专业,反而读了药学,浪费了四年提升计算机水平的机会,还不慎在计算机的道路上走偏。 大四的时候毅然把原本所学的专业彻底放弃,开始成为了程序员,从一开始的前端工程师,到现在的后端工程师。越发感觉到自己在计算机的不足,因此我更加需要一个blog,可以记录下自己的学习过程和感谢,加深自己的记忆。 为什么选用Jekyll 高度可定制化,又不会像Wordpress做的太复杂,同时我也不太想学PHP... Read More