阻塞队列,在生产者/消费者的场景中使用较多,例如:一个配置文件生成工具中,多个线程同时工作,不同线程分别生成不同的文件,程序运行过程中需要将运行信息及时地显示到软件界面,那么我们就可以借助于BlockingQueue,多个线程将运行时信息put到BlockingQueue中,另一个线程一直不断地从BlockingQueue中take数据,有则取出并显示到界面。在Java中,BlockingQueue是一个现成的接口,实现原理比较简单,只需要一个普通队列,一个互斥器,一个条件变量,分别实现put,take方法即可。
在软件开发中,日志记录十分重要,好的日志记录能够帮助程序员准确的定位与分析问题。C++目前常见的开源日志库也较多,例如:easyloggingpp,glog等等。这些第三方库都很好用, 但是有些时候为了方便编写日志解析工具进行一些日志分析,我们有必要对日志记录内容进行一些定制,因此,简单起见,我们完全可以实现一个满足自己需求的日志记录模块。
在平时的程序开发中,我们一般都会在程序的关键部位记录相应的日志信息,方便以后排查bug,但是当程序Crash的时候,通过有限的日志有时很难定位问题所在。因此,我们需要在程序Crash时能够自动记录导致Crash的CallStack信息并且生成Dump文件。Google Breakpad功能十分强大,能够很好地满足我们的需求。但有时如果没有特殊的需求的话,为了使用起来既简单又方便,我们完全可以自己实现,本文将对此进行简要介绍。
在平时的工作中,经常需要根据接口文档进行开发,在调试时一般都会借助WireShark抓包进行分析,但是当协议较为复杂时,需要根据字节数手动计算进行解析,费时费力。曾经打算自己写个简单的自定义协议解析工具,后来发现WireShark提供了Lua接口,可以通过Lua脚本根据协议格式自动对获取的数据报进行解析,本文将对此进行简要介绍。
在公司里面,各个部门一般都会要求员工每周通过周报的形式对这一周的工作进行总结。本人所在的公司虽然有一个独立的部门专门负责公司的信息化建设,各大信息化系统总体来说还是挺全的,但是唯独没有一个周报管理系统,仍然采用Excel填写,邮件发送的形式,感觉既不方便填写,也不方便查看和统计。因此,前一段时间本人单独花了两周多时间开发了一个简单的周报系统。
在平时的开发过程中,尤其是多人共同参与开发的项目中,编码规范的重要性无需多说。由于个人工作主要以C++为主,因此,本文介绍的主要是C++编码规范相关。关于C++编程规范网上有很多,对比了一下,个人比较喜欢Google的C++编码规范,cpplint.py就是Google提供的一个C++代码规范检查的python脚本。本文介绍如何利用git hook实现C++代码提交前自动规范检查以及自动进行代码格式化,主要是通过脚本对cpplint.py以及astyle.exe的操作进行了封装,并且通过git hook技术来实现在提交代码前自动执行该脚本。