摘要:
基础概念 函数模板(function template) template <typename T> int compare(const T &v1, const T &v2) { if (v1 < v2) return -1; if (v2 < v1) return 1; return 0; } 阅读全文
摘要:
前言 一般情况下我们将负载均衡为分客户端负载均衡与服务端负载均衡(代理)。服务端负载均衡通常是使用现成的软件产品(如nginx)实现,其功能也更全面,比如它与K8s可以很好的结合使用,一定程序上降低了开发和维护的成本。但对于 RPC 服务而言,服务端负载均衡会增加两次额外的网络跳数(往返),并且它还 阅读全文
摘要:
前言 我们应当忘记小的性能改善,百分之九十的情况下,过早优化都是万恶之源 —— 高德纳 测量和实验是所有改善程序性能尝试的基础。性能优化的基本规则是90/10规则:一个程序花费90%的时间执行其中10%的代码。识别出10%的热点代码是值得花费时间的,但靠猜想选择优化哪些代码可能只是浪费时间 —— 《 阅读全文
摘要:
互斥元 std::mutex std::lock_guard 实现互斥元的 RAII 惯用语法,它在构造时锁定所给的互斥元,在析构时将互斥元解锁,从而保证被锁定的互斥元始终被正确解锁 std::unique_lock 提供了lock()、try_lock()和unlock()三个成员函数,它们会调用 阅读全文
摘要:
如何从线程获取结果 首先可以传递结果引用给线程函数,这种方法需要额外的同步机制确定结果已经就绪;此外在C++11中可使用如下多种方法:stdasync可以启动一个新线程并执行,其结果保存在返回的stdfuture中;stdpackaged_task<>将一个future绑定到一个函数或可调用对象,当 阅读全文
摘要:
概念(扫盲) google three paper Google File System(2003) - 存储 MapReduce(2004) - 计算 BigTable(2006) - 查询 HDFS Hadoop Distributed File System,分布式文件系统,它是GFS的开源实 阅读全文
摘要:
Bridge Pattern 概念 桥接模式,待补充 Pimpl Pattern 概念 Pointer to Implementation,即在 handle class 内通过一个私有的成员指针变量,将指针所指向的 implementation class 的内部成员进行隐藏 优点 降低模块间耦合 阅读全文
摘要:
背景 在请求具有一定的重复性的业务场景下,客户端或者服务端将请求结果保存在缓存中,可以大大减少服务端压力和延时(尤其是请求方采用负载均衡策略,比如IP一致性哈希时)。通常缓存的大小是固定的,在大部分情况下缓存应该尽量保存热度较高的请求结果以提高缓存命中率,有多种缓存淘汰策略如:LRU、定期淘汰等,在 阅读全文
摘要:
概念 链接属性 linkage,链接属性是描述链接器应如何链接变量的属性。链接属性决定某变量是否可供另一个文件使用,或者是否只在声明它的文件中使用 外部链接属性 - 本编译单元中有外部链接属性的变量/函数可被所有其他编译单元访问 - 其内存通常在程序启动前的加载阶段被分配 内部链接属性 - 其他编译 阅读全文
摘要:
内存模型基本结构:对象和内存位置 内存顺序 内存模型关系 sequenced-before 表达式的评估顺序,它只在单个线程中被考虑。如语句A && B中会先执行 A,判断为true后再执行 B,更为详细的定义以及规则可参考Order of evaluation 代码的顺序也可以理解为sequenc 阅读全文