zyfforlinux

专注linux内核,系统编程,C++服务器端编程,golang ,python/bash脚本编程,DevOps,分布式...

Item16 Make const member functions thread safe

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ const(可以用constexpr替换见Item15)成员函数和线程安全是本文的一个核心主题,两者究竟是如何联系在一起的呢?...

2016-10-24 12:45:33

阅读数:806

评论数:0

Item15 Use constexpr whenever possible

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 如果有人问在C++11引入的众多关键字中,有哪个关键字是最让你迷惑的,我会立马回答是constexpr,当这个关键字应用到对象...

2016-10-23 16:11:52

阅读数:600

评论数:0

世界上最简单的无锁Hash Table

​ 一个无锁的hash table是把双刃剑,它可以为某些应用程序提供性能上的大幅提升,它的缺点就是过于复杂了。Dr. Cliff Click使用Java写了第一个可工作的无锁hash table,并在2007年的时候公布其源码,并且在同一年在Google发表了演讲。原理分析​ 本文将通过...

2016-10-19 19:44:11

阅读数:747

评论数:0

Item14 Declare functions noexcept if they won't emit exception

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 在C++98中异常规格说明是一个废弃的,没有人用的特性,因为它需要知道一个函数可能会抛出的异常类型,如果函数后面有改动,那么异...

2016-10-18 22:26:44

阅读数:373

评论数:0

2016年规划

要读的书 c++ concurrency in action Effective Modern C++ go学习笔记 go in practice preshing的博客 MIT6.824的课程 要做的事情 写自己的key/value分布式存储 对C++并发编程和内存模型有深刻认识 工作落实 论文...

2016-10-18 18:00:24

阅读数:349

评论数:0

Item13 Prefer const_iterators to iterators

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ const_iterator 是STL提供的一个等同于const指针的东西,并且它所指向的值是不可变的。标准实践中,当你需要迭...

2016-10-16 22:52:03

阅读数:439

评论数:0

并发数据结构Leapfrog Probing

Leapfrog Probing一个hash table是用来存取一系列key/value对,有很多方式用来实现一个hash table。但是都有一个共同点就是桶,每一个hash table都会包含一系列的桶,对于每一个key来说都会唯一的属于一个桶。为了决定某个key是属于哪个桶,你需要对这个k...

2016-10-13 22:01:28

阅读数:918

评论数:0

Item12 Declare overriding function override

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 在C++面向对象的世界里面主要是围绕着类,继承和虚函数,而在这个世界里面虚函数的实现就是靠派生类重写基类的虚函数,但是这很容易出错, ...

2016-10-11 21:20:26

阅读数:628

评论数:0

Item11 Prefer deleted functions to private undefined ones

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 如果你把你的代码提供给其他开发者,但是却不想让其他人调用某些函数,这个时候你只需要不声明这个函数就可以了,但是有的时候你拿到了这个函数...

2016-10-09 19:41:40

阅读数:582

评论数:0

使用QSBR进行安全的内存回收

使用QSBR进行安全的内存回收在多线程场景下,经常我们需要并发访问一个数据结构,为了保证线程安全我们会考虑使用互斥设施来进行同步,更进一步我们会根据对这个数据结构的读写比例而选用读写锁进行优化。但是读写锁不是唯一的方式,我们可以借助于COW技术来做到写操作不需要加锁,也就是在读的时候正常读,写的时...

2016-10-09 15:24:27

阅读数:606

评论数:1

Chromium base库介绍

AtExitManager 类似于linux下的atexit,注册退出清理函数,不过base库的实现机制是利用了C++的RAII。void exit_first(void *data) { LOG(INFO) << "first"; }void exit_last(...

2016-10-08 09:52:44

阅读数:1816

评论数:0

Item10 Prefer scoped enums to unscoped enums

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 通常来说我们在花括号中定义的名称其作用域就在花括号中,但是C++98的枚举类型的声明缺不遵从这个规则。enum Color {blac...

2016-10-07 23:36:54

阅读数:299

评论数:0

Item9 Prefer alias declarations to typedefs

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 C++11中引入的std::unique_ptr智能指针是个好用的东西,在我们使用unique_ptr的时候往往会写出这样的类型std...

2016-10-07 20:23:35

阅读数:507

评论数:0

Item8 Prefer nullptr to 0 and NULL

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 0是int类型,并不是指针类型,但是当0赋值给一个指针类型的时候,0将会被解释成空指针,在C++98中关键字NULL其本质就是一个lo...

2016-10-07 18:30:25

阅读数:546

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭