关于Go测试的方法以及建议
单元测试在一定意义上能够保证代码的质量,用以衡量软件工程的质量,帮助我们规避重构的风险。
每一个单元测试代表着一个业务逻辑,修改代码后,运行单元测试,就能帮助我们确定新代码会不会影响已有的业务逻辑,可以降低线上的风险和测试的问题。
单元测试在一定意义上能够保证代码的质量,用以衡量软件工程的质量,帮助我们规避重构的风险。
每一个单元测试代表着一个业务逻辑,修改代码后,运行单元测试,就能帮助我们确定新代码会不会影响已有的业务逻辑,可以降低线上的风险和测试的问题。
文中有感于卓老板聊科技,以及科学思维课上所提到的科学指导性知识,常年听知识,有时间可将其收纳起来,做成思维导图形式的东西,方便自己,同时也分享出来。
希望在田野,科学在人间。
bufio 包实现了缓存IO。它包装了 io.Reader 和 io.Writer 对象,创建了另外的Reader和Writer对象,它们也实现了 io.Reader 和 io.Writer 接口,不过它们是有缓存的。
ReadLine
可以读取单独的行,一般读文件的时候,我就使用它,但由于缓存的问题,造成使用上出了些问题。
stringSlice转换——无需内存copy,这是之前写过的一篇文章,可以将结构体,byte,string以指针这种形式达到转换的作用,效率非常高效,可以说是黑魔法
。
而问题也就是出现在这里了。在使用过程中,我出现了sweep increased allocation count
错误。
每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!虽然现在大多数情况下都能订到票,但是放票瞬间即无W票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306服务”承受着这个世界上任何秒杀系统都无法超越的QPS,上百万的并发再正常不过了!笔者专门研究了一下“12306”的服务端架构,学习到了其系统设计上很多亮点,在这里和大家分享一下并模拟一个例子:如何在100万人同时抢1万张火车票时,系统提供正常、稳定的服务。
nohup 和 &
&
的意思是在后台运行, 什么意思呢? 意思是说, 当你在执行 ./a.out & 的时候, 即使你用ctrl C, 那么a.out照样运行(因为对SIGINT信号免疫)。 但是要注意, 如果你直接关掉shell后, 那么, a.out进程同样消失。 可见, &
的后台并不硬(因为对SIGHUP信号不免疫)。