Go 语言原生提供了测试框架,支持单元测试、性能测试等等,这篇文章将学习 Go 的测试框架,同时还会介绍 Go 内置的工具链。
Go 语言学习笔记(5):包结构、反射
这篇文章学习 Go 语言中的包结构,同时 Go 语言原生支持了反射,这里一并介绍。
Go 语言学习笔记(4):并发
Go 语言最大的特色就是其对并发编程的支持。这篇文章重点介绍 Go 语言的并发机制 go routine,以及如何通过 go channel 实现各个 go routine 之间的通信。
Go 语言学习笔记(3):方法与接口
方法是与对象实例绑定的特殊函数,方法是面对对象编程的基本概念,用于维护和展示对象的自身状态。对象是内敛的,每个实例都有各自不同的独立特征,以属性和方法来暴露对外通信接口,而普通函数则专注于算法流程,通过接收参数来完成特定逻辑运算,并返回最终结果。也就是说,方法是有关联状态的,而函数则没有。
Go 语言学习笔记(2):函数与数据
函数是结构化编程的最小模块单元,它将复杂算法过程分解为若干较小任务,隐藏相关细节,使得程序结构更加清晰,易于维护。函数被设计成相对独立、通过接收输入参数完成一段算法,输出或存储相关结果。因此函数也是代码复用和测试的基本单元。
Go 语言学习笔记(1):初识 Go,类型与表达式
Go 语言自 C 一脉相承,又吸收了些时髦的东西。最重要的是,它依旧简单。本系列文章是《Go 语言学习笔记》一书的读书笔记。
Screen 使用指南
Linux 程序员通常需要打开多个终端窗口连接到远端服务器,虽然现在的终端程序都比较好用,可以让你在多窗口间自如地切换。但是一旦你的网络断了,所有窗口上的远程连接也就断了,下一秒你不得不重新在各个窗口上进行重连。
通过 Screen,你可以在服务器上建立一个多窗口的会话,即使本地 PC 断网,重连服务器之后,直接恢复该 Screen 会话即可。本篇文章介绍 Screen 的基本用法。
使用 gperftools 检测内存泄露
每个 C/C++ 程序员可能都经历过定位内存泄露问题的痛苦。一方面,为了减少内存泄露问题,在 C++ 程序中,我们应该尽量使用智能指针,在 C 程序中,我们也可以通过一些内存池技术来管理内存的申请与释放。另一方面,当内存泄露问题真的出现时,通过 gperftools 的 heap checker,我们也可以比较轻松地找到内存泄露的线索,缩短问题定位时间。
一个编译宏引发的 bug
昨天使用厂内 bthread 库(来源于 brpc,已开源)中的 TimerThread 工具来做定时重试任务,但是在打印返回的 TimerThread ID 时,始终打印的是 0,而 TimerThread 分明已经启动成功了。定位了将近一天,才找到原因,这里分享一下。
重读《C++ Primer》02:字符串、向量和数组
除了内置类型之外,C++ 语言还定义了一个内容丰富的抽象数据库类型。其中 string 和 vector 是最重要的标准库类型。前者支持可变长字符串,后者则表示可变长的集合。还有一种标准库类型是迭代器,它是 string 和 vector 的配套类型,常被用于访问 string 中的字符或 vector 中的元素。内置数组是一种更基础的类型,string 和 vector 都是对它的某种抽象。