代码改变世界

C++:几种callable实现方式的性能对比

2017-10-31 20:51 by 付哲, 2833 阅读, 0 推荐, 收藏, 编辑
摘要:C++中几种callable实现方式的性能对比 前言 C++中想实现一个callable的对象,通常有四种方式: 1. :最common的方式,一般会配合 使用。 2. function pointer:最C的方式,但没办法实现有状态的callable object。 3. function obj 阅读全文

C++:为什么unique_ptr的Deleter是模板类型参数,而shared_ptr的Deleter不是?

2017-10-31 20:48 by 付哲, 2898 阅读, 0 推荐, 收藏, 编辑
摘要:为什么 的Deleter是模板类型参数,而 的Deleter不是? 上面的代码中能看到 的第二个模板类型参数是Deleter,而 的Delete则只是构造函数参数的一部分,并不是 的类型的一部分。 为什么会有这个区别呢? 答案是效率。 的设计目标之一是尽可能的高效,如果用户不指定Deleter,就要 阅读全文

WiscKey: Separating Keys from Values in SSD-Conscious Storage [读后整理]

2017-10-31 20:45 by 付哲, 2215 阅读, 0 推荐, 收藏, 编辑
摘要:WiscKey: Separating Keys from Values in SSD Conscious Storage WiscKey是一个基于LSM的KV存储引擎,特点是:针对SSD的顺序和随机读写都高效的特点,Key和Value分开存储以最小化IO放大效应。YCSB场景中它比LevelDB和 阅读全文

C++:delete不完整类型的指针

2017-10-31 20:35 by 付哲, 3330 阅读, 0 推荐, 收藏, 编辑
摘要:简单版 以下代码编译时会有warning: 在GCC4.1.2下,编译出错信息是: 这是因为在 里,编译器看不到 的完整类型,没办法确定两件事情: 1. 有没有自定义的析构函数(准确的说,有没有non trivial的析构函数)。 2. 有没有自定义的 函数。 在不确定这两件事情的情况下,编译器只能 阅读全文

HHVM代码规范

2017-10-31 20:32 by 付哲, 564 阅读, 0 推荐, 收藏, 编辑
摘要:"__原文戳我__" 本文旨在为HHVM编写C++代码提供一种指南,包括了什么时候、怎么使用各种语言功能,以及代码的格式。我们的目标是确保代码持续高可用的同时,还能容易被阅读和参与贡献,尤其是对新人而言。 HHVM代码库包含来自很多不同作者的大量代码。它已经经历了多个不同的重要阶段,包括存在于多个不 阅读全文

物理内存的访问(翻译)

2014-09-16 11:35 by 付哲, 860 阅读, 0 推荐, 收藏, 编辑
摘要:[Getting Physical With Memory](http://duartes.org/gustavo/blog/post/getting-physical-with-memory/)尝试理解复杂的系统时,你经常能通过去掉抽象层而直接看底层中学到很多东西。本着这种情况,我们从最简单最基本... 阅读全文

内核是如何管理内存的(翻译)

2014-09-01 22:24 by 付哲, 1274 阅读, 0 推荐, 收藏, 编辑
摘要:[How the Kernel Manages Your Memory](http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory/)在研究完进程的虚拟地址布局后,我们来看看内核是怎么管理用户内存的。还是以gonz... 阅读全文

Linux进程内存布局(翻译)

2014-08-26 11:29 by 付哲, 3035 阅读, 0 推荐, 收藏, 编辑
摘要:Linux,内存布局 阅读全文

为什么Rebase是有害的

2014-08-12 17:15 by 付哲, 1547 阅读, 0 推荐, 收藏, 编辑
摘要:[Rebase Considered Harmful](http://changelog.complete.org/archives/586-rebase-considered-harmful)## Merge的两种方式 ##1. 向上游提交“干净”的patch。不包含历史信息——日常提交、BUG ... 阅读全文

读写锁的一个奇怪表现

2014-07-29 21:09 by 付哲, 831 阅读, 0 推荐, 收藏, 编辑
摘要:读写锁 阅读全文