• C++11中的内存顺序

    在C++11中引入了内存顺序(memory order)这一概念,我查阅资料进行了一番研究,把认为有用的知识点整理记录下来,方便以后查阅。

  • 在C++智能指针中使用自定义的deleter

    在最近的开发中,我使用了智能指针来管理一个动态申请的对象,但是这个对象需要调用特定的函数完成内存释放。以编程的专业术语来讲,就是为智能指针提供一个自定义的deleter。我很好奇的是,这个自定义资源回收函数是否需要在入口处对参数进行空指针检查呢?

  • 栈溢出问题和chkstk

    最近在调试程序时遇到了一个栈溢出的问题,栈溢出通常是由程序错误引起的,通过修正程序的bug就能解决问题。但是这次的栈溢出,从代码上看并没有错误,经过一番排查和调试,我找到了解决问题的方法,同时也加深了对操作系统中一些概念的理解。

  • MSVC的stdio版本适配问题

    windows系统的向下兼容性一直是做的比较好的,一些老旧软件不需要修改就能跑在最新版的windows上。这篇文章主要讨论的是库(library)的向下兼容性,在开发中某些库可能是由较老的编译器生成的,当使用新版本的编译器进行链接时可能需要对stdio相关库进行适配。

  • 时间轮算法

    在之前的一篇 文章 中谈到了定时器的基本实现原理,其中提到了几种定时器的调度算法。当需要处理的定时器越来越多时,那些调度策略就不再适合了。本篇文章可以看作是前面文章的拓展,主要展开讲时间轮算法的思路和它的变体。

  • Windows平台下System32和SysWOW64文件夹

    在64位的Windows操作系统下,你会发现在System32目录存放的是64位的程序,而SysWOW64目录存放的是32位的程序。本文围绕着这个进行了展开,介绍了Window系统32位和64位的相关知识。

  • 如何实现一个定时器

    在以前的一次面试中,我被问到该如何实现一个定时器,当时我并没有思考过这个问题,所以回答的并不令人满意。在日常的开发中,一个需要定时执行的任务是很常见的。我认为这个问题比较有意义,也非常具有代表性。于是,我查阅了一些资料,并整理出这篇博客。

  • 在git中撤回最后一次本地提交

    有时候在git中进行了一次提交,这次提交还没有被推送到服务器上,如果这时发现了一些错误,想进行修正怎么办?本文记录了撤回这次提交的步骤,以备不时之需。

  • 网络编程中的Reactor和Proactor模式

    本文介绍了两种常用的网络编程模式:Reactor模式和Proactor模式。这两种设计模式比较相似,它们的典型应用案例都是处理网络编程的并发请求,但是它们在具体的请求分派方式上又有区别。

  • Qt程序中OLE错误的调试记录

    最近解决了一个Launchy的 bug ,通过剪贴版向excel拷贝内容时会报OLE错误。我认为这个bug的排查过程比较有意义,在此记录下来。

  • 软件设计模式-门面模式

    最近在看一些开源的日志库时了解到了门面模式,查了些资料学习了一下。门面模式是我们在设计中经常会使用到的模式,只是在以前的开发中并没有意识到这个是门面模式。

  • 在Linux中关闭防火墙

    本文主要介绍了firewalld、ufw和iptables防火墙的关闭方法,为了方便以后查阅。