代码改变世界

Stub学习

2014-05-07 10:36 by 付哲, 1765 阅读, 0 推荐, 收藏, 编辑
摘要:RPCRPC(Remote Procedure Call)就是某台主机A(一般为client)像调用本地的过程一样去调用另一台主机B(一般为server)上的某个过程。RPC代码可能长成这个样子://clientvoid SampleFunc() { Request req; req.s... 阅读全文

使用CAS实现无锁的SkipList

2014-04-07 16:33 by 付哲, 1990 阅读, 0 推荐, 收藏, 编辑
摘要:无锁并发环境下最常用的同步手段是互斥锁和读写锁,例如pthread_mutex和pthread_readwrite_lock,常用的范式为:void ConcurrencyOperation() { mutex.lock(); // do something mutex.unlock();}这种方法的优点是:编程模型简单,如果小心控制上锁顺序,一般来说不会有死锁的问题; 可以通过调节锁的粒度来调节性能。 缺点是:所有基于锁的算法都有死锁的可能; 上锁和解锁时进程要从用户态切换到内核态,并可能伴随有线程的调度、上下文切换等,开销比较重; 对共享数据的读与写之间会有互斥。 无锁编程(严格来讲是非阻 阅读全文

C++总结:C++中的const和constexpr

2014-02-18 15:31 by 付哲, 23650 阅读, 3 推荐, 收藏, 编辑
摘要:C++中的const可用于修饰变量、函数,且在不同的地方有着不同的含义,现总结如下。 const的语义 C++中的const的目的是通过编译器来保证对象的常量性,强制编译器将所有可能违背const对象的常量性的操作都视为error。 对象的常量性可以分为两种:物理常量性(即每个bit都不可改变)和逻辑常量性(即对象的表现保持不变)。C++中采用的是物理常量性,例如下面的例子: struct... 阅读全文

[翻译]将智能指针用于C++的类成员

2014-02-14 19:29 by 付哲, 1996 阅读, 1 推荐, 收藏, 编辑
摘要:http://stackoverflow.com/questions/15648844/using-smart-pointers-for-class-membersQuestion:I'm havingtrouble understanding the usage of smart pointers as class members in C++11. Ihave read a lot about smart pointers and I think I do understand howunique_ptrandshared_ptr/weak_ptrwork in general. 阅读全文

读书笔记:提高C++性能的编程技术

2014-02-12 20:57 by 付哲, 3531 阅读, 1 推荐, 收藏, 编辑
摘要:Efficient C++ Performance Programming Techniques第1章 跟踪范例1.1 关注点本章引入的实际问题为:定义一个简单的Trace类,将当前函数名输出到日志文件中。Trace对象会带来一定的开销,因此在默认情况下不会开启Trace功能。问题是:怎么设计Trace类,使得在不开启Trace功能时引入的开销最小。1.2 使用状态变量开关功能用宏来开关Trace功能很简单,在不开启时开销完全没有:#ifdef TRACETrace trace("aaa");#endif缺点是每次开关都需要重新编译。使用状态变量的话有一定的运行时开销,但能 阅读全文

Bigtable阶段性总结(版本1)

2014-01-13 11:04 by 付哲, 813 阅读, 0 推荐, 收藏, 编辑
摘要:Bigtable学习第1阶段(2014.1.6-2014.1.12),参考:英文论文和不知道谁的中文翻译 阅读全文

[翻译]MapReduce: Simplified Data Processing on Large Clusters

2013-11-07 23:22 by 付哲, 26557 阅读, 7 推荐, 收藏, 编辑
摘要:MapReduce: Simplified Data Processing on Large Clusters的翻译 阅读全文