析构函数和成员析构的先后顺序
肖总问到这个问题,写了个程序验证:
class Member
{
public:
Member (){}
virtual ~Member (){printf(“member destruct\n”);}
};
class Base
{
public:
Base (){}
virtual ~Base (){ printf(“destruct\n”);}
private:
Member member_;
};
int main(int argc, const char *argv[])
{
Base c;
return 0;
}
结果是:
destruct
member destru...
分布式系统/NOSQL入门书单
简单记一下我看过的和觉得值得看的。主要是给@赵龙作为参考。
分布式相关
[1] 大规模分布式存储系统, http://book.douban.com/subject/25723658/
阿里日照的书,全面介绍了分布式系统的原理和实践,入门不可多得的书
[2] 分布式系统原理介绍, http://blog.sciencenet.cn/home.php?mod=attachment&id=31413
百度刘杰的,讲基本的分布式原理,有些笔误什么的。
[3] paxos算法相关, http://cxh.me/2014/08/26/paxos-study/
总结了paxos算法一些资料。
[5] 分布式数据库系统原理, htt...
自动生成ifdef标记和作者信息的插件
针对团队开发为了统一代码风格往往有比较严格的代码规范。为了自动化的生成一些不变的内容,写了如下两个插件(有的是改动):
ifdef.vim 生成ifndef标记,防止重复包含。
author_info.vim 生成更新作者信息版权声明
详见https://github.com/chenxiaohui/ifdef_generator.
永不分开,世界的爱
这应该算是很古老很古老的一首歌了,当时赵薇还是个青涩的小燕子。2000年的时候还在上初中,实在不理解新千年的意义。现在回想起来,新千年的到来,对人类来说,实在是个有着难以名状的意义。20世纪前半叶的多灾多难,后半叶的冷战阴云,没有哪个世纪会产生如此重大的人类群体性灾难。旧的秩序被打破,核战争的阴云,武器发展到批量化的收割人命,20世纪可能是人类历史上绝无仅有一个世纪。
从这个角度想,这首歌真是充满了感慨。停留在20世纪的末尾,回首这一个多灾多难的世纪,看人类从错误中反省,最终一起站在新千年的入口展望未来。某种意义上说,人类第一次站在一起迎接和平,憧憬未来。这其中的意味可能只有经历过苦难的人才体会的出来,虽然2000年的时候局部战争依然在进行着。
一首歌的意味只有联想到背景才体会得到...
用google来验证一下Maclaurin展开式
偶然发现google可以直接画出函数图像来,精准度极高,于是想起来用这个功能来看一下Maclaurin展开是如何随精度增加而逼近展开式的。从某种角度上讲,这是一个极好的拟合过程,相对于梯度下降的逐步拟合来讲,泰勒公式或者麦克劳林展开直接推导出了每一个拟合因子。
泰勒级数的定义如下:
不过这是带拉格朗日余项的形式。让基准值=0可以得到 Maclaurin 展开式,当然这也就意味着Maclaurin展开式在0附近的拟合是最精确的。定义如下:
《改善C++程序的150个建议》勘误
翻了一下编写高质量代码:改善C++程序的150个建议,感觉一般,主要是能下到pdf。看到两个错误。
第一个错误是内存池的那里,内部类使用了外部类的成员变量,这是C++啊,不是java,内部类默认不持有外部类指针。
class MemPool
{
public:
MemPool (int nItemSize, int nMemBlockSize = 2048):
m_nItemSize(nItemSize),
m_nMemBlockSize(nMemBlockSize),
m_pMemBlockHeader(NULL),
m_pFreeNodeHeader(NULL)
{}
virtual ~MemPool ...
506 post articles, 64 pages.