为何删除文件后磁盘空间未释放

问题   如图,某日志文件 loop.log 正在被进程 log_server 不断写入。 其对应代码大致如下: log_server.c 1 2 3 4 5 6 7 8 9 int main() { FILE* fp = fopen("loop.log", "a+"); const char* content = "A test sentence\n"; for

GFlags使用

GFlags   GFlags 是 Google 开源的一个命令行 flag 库。与 getopt 之类不同,flag 的定义可以散布在各个源码中,而不用放在一起。一个源码文件可以定义一些它自己的flag,链

Go 语言入门

Golang   本文也并非 Go 语言基础语法的全部罗列,只是摘录一些独特特性。 变量 指针 1 var p *int // 指针默认值nil 数组 1 2 3 4 5 6 7 8 9

2D凸包问题

MathJax.Hub.Config({ tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ], processEscapes: true } }); 凸包   凸包(Convex Hull)是一个计算几何(图形学)中的概念。点集Q的凸包是指一个最小凸

TCP 网络编程三部曲

SO_REUSEADDR   允许 TCP server crash/kill 后复用端口,立即重启。   传统的 fork-per-connection 模型需要使用,fork 出的子进程后,父进程的 listen 退出

POSIX thread

  《APUE》这本书算是个字典了,本文算是对 pthread 的一些总结,主要是对原书中几段代码的解释说明,在读代码中记录知识点,技术

C++ 对象模型

  本文是看《深度探索 C++ 对象模型》这本书后的一些总结,并非单纯的摘录,而是结合相关博客和自己的理解所写的心得,有一定参考

stringstream 类型转换

sprintf()   使用stdio.h的sprintf()可以实现数据的类型转换。 1 2 3 4 5 6 char s[5]; memset(s, 0, sizeof(s)); double d = 3.14; sprintf(s, "%f", d); cout << s << endl; // print "3.140000"

链表排序

链表排序   在学习STL中的双向链表std::list时,被它的sort()函数惊艳到,发现《STL源码剖析》一书中对该

红黑树删除节点

红黑树   红黑树是一种自平衡的二叉查找树(BST),可在O(logN)时间内完成查找、插入、删除等操作。  &e

Effective C++ 笔记

条款2:尽量以 const,enum,inline 替换 #define 对于单纯常量,尽量以const对象或enum替换#define。 enum是一个右值,无