-
如何实现一个定时器
在以前的一次面试中,我被问到该如何实现一个定时器,当时我并没有思考过这个问题,所以回答的并不令人满意。在日常的开发中,一个需要定时执行的任务是很常见的。我认为这个问题比较有意义,也非常具有代表性。于是,我查阅了一些资料,并整理出这篇博客。
-
在git中撤回最后一次本地提交
有时候在git中进行了一次提交,这次提交还没有被推送到服务器上,如果这时发现了一些错误,想进行修正怎么办?本文记录了撤回这次提交的步骤,以备不时之需。
-
网络编程中的Reactor和Proactor模式
本文介绍了两种常用的网络编程模式:Reactor模式和Proactor模式。这两种设计模式比较相似,它们的典型应用案例都是处理网络编程的并发请求,但是它们在具体的请求分派方式上又有区别。
-
Qt程序中OLE错误的调试记录
最近解决了一个Launchy的 bug ,通过剪贴版向excel拷贝内容时会报OLE错误。我认为这个bug的排查过程比较有意义,在此记录下来。
-
软件设计模式-门面模式
最近在看一些开源的日志库时了解到了门面模式,查了些资料学习了一下。门面模式是我们在设计中经常会使用到的模式,只是在以前的开发中并没有意识到这个是门面模式。
-
在Linux中关闭防火墙
本文主要介绍了firewalld、ufw和iptables防火墙的关闭方法,为了方便以后查阅。
-
Windows常用命令行指令dumpbin
在Windows平台下,dumpbin是一个非常有用的命令行工具,主要用于查看可执行程序和动态库的内部信息。本文总结了dumpbin的几种常见用法,方便以后查阅。
-
gpg操作备忘
gpg的全称是gnu privacy guard,用于实现网络传输时的加密和解密。它有点类似于ssh的加解密过程,都有公钥和私钥,使用私钥加密公钥解密。我有一个应用场景需要在emacs中自动对org mode进行加密,使用了gpg完成加密过程。本文主要总结了gpg的常用命令。
-
文件操作函数接口的比较
最近在维护一个老项目时发现,该程序的日志在程序运行时是不能够被其他程序打开的,也就不能通过日志实时地观察程序的运行状态。在我的印象里,我一直认为打开的文件都是共享的,这应该是个错觉。本篇日志主要总结了在打开一个文件时所使用函数接口,方便以后查阅。
-
为什么条件变量需要与互斥锁配合使用
条件变量(condition variable)是常用的线程同步技术,通常用于让线程阻塞并等待某个条件满足。它需要与互斥锁搭配使用,但是你有想过为什么需要搭配一个互斥锁呢?
-
单个进程内最多可以有多少个线程
在开发一个服务程序时,使用的是单个进程中多线程的模式,要为每个连接的设备分配一个线程。随着设备越来越多,分配的线程数量就不断上升,当线程数量达到一定值时程序就报错退出了。于是问题就来了,单个进程到底可以有多少个线程呢?
-
Linux 常用的排查故障指令
本文总结了常用的排查 linux 服务器故障的命令行指令,这些指令能够查看操作系统的实时状态信息,在排查问题时起到辅助作用。