• gpg操作备忘

    gpg的全称是gnu privacy guard,用于实现网络传输时的加密和解密。它有点类似于ssh的加解密过程,都有公钥和私钥,使用私钥加密公钥解密。我有一个应用场景需要在emacs中自动对org mode进行加密,使用了gpg完成加密过程。本文主要总结了gpg的常用命令。

  • 文件操作函数接口的比较

    最近在维护一个老项目时发现,该程序的日志在程序运行时是不能够被其他程序打开的,也就不能通过日志实时地观察程序的运行状态。在我的印象里,我一直认为打开的文件都是共享的,这应该是个错觉。本篇日志主要总结了在打开一个文件时所使用函数接口,方便以后查阅。

  • 为什么条件变量需要与互斥锁配合使用

    条件变量(condition variable)是常用的线程同步技术,通常用于让线程阻塞并等待某个条件满足。它需要与互斥锁搭配使用,但是你有想过为什么需要搭配一个互斥锁呢?

  • 单个进程内最多可以有多少个线程

    在开发一个服务程序时,使用的是单个进程中多线程的模式,要为每个连接的设备分配一个线程。随着设备越来越多,分配的线程数量就不断上升,当线程数量达到一定值时程序就报错退出了。于是问题就来了,单个进程到底可以有多少个线程呢?

  • Linux 常用的排查故障指令

    本文总结了常用的排查 linux 服务器故障的命令行指令,这些指令能够查看操作系统的实时状态信息,在排查问题时起到辅助作用。

  • Linux中修改程序的run path

    对于动态库的加载,不同的操作系统有不同的搜索策略。在windows下,程序会优先加载同路径中的动态库,这是一个非常方便的特性。而在linux下,需要单独配置 LD_LIBRARY_PATH 以实现上述类似特性。曾经困扰我很长一段时间的就是linux平台的动态库加载问题,最常出现的问题是程序启动时找不到所需要的动态库。在得知修改run path可以调整程序搜索动态库的路径时,一切都迎刃而解了。

  • C语言中数组地址的特性

    最近在开发中使用到了C风格的数组,在对数组地址进行增减操作时有些疑惑,现在将这些要点总结下来,方便查阅。

  • 在Linux的信号处理函数中不要进行锁相关操作

    最近在写一个linux程序,其中一个逻辑是要等待信号(signal),我使用了条件变量(condition variable)来完成这个操作,但是实际效果却是整个程序卡住了,经过查阅资料后得知在信号处理函数中是不能进行锁操作的。

  • MSVC工程里Unicode字符集和多字节字符集选项

    在Visual Studio的C++工程中,有个一选项可以设置当前工程的字符集,本文主要围绕着该设置置项展开。

  • 在gdb中以16进制的方式打印变量

    在gdb调试过程中可以通过 print(p) 查看指定变量的内容。在默认情况下,数字是以10进制的形式显示的,但有时候我们想以16进制的形式查看该变量。

  • 排查Windows平台动态库和静态库链接失败问题

    最近帮同事查了一个C++链接过程的问题,这个问题比较隐蔽,也非常有代表性,记录下来方便后面查阅。

  • C++中delete关键字常见错误

    C++中的delete关键字用于释放动态申请的内存,是使用频率非常高的关键字,本文将开发中常出现的错误加以总结,方便以后查阅。