w
h
y
?
y
o
u
a
r
e
h
e
r
e
?
亮
如果你只是急于解决太多细微的问题,能力就很难得到质的提升Redis 学习的路线
底层数据结构基础数据结构
key-value的管理方式
如果哈希表里写入的数据越来越多,哈希冲突可能也会越来越多,这就会导致某些哈希冲突链过长,进而导致这个链上的元素查找耗时长,效率降低。Redis 默认使用了两个全局哈
...
引入的原子指令SSE2 extensions introduce two new fence instructions (LFENCE and MFENCE) as companions to the SFENCE instruction introduced with SSE extensions
...
IntroductionC ++ 11引入了lambda,该lambda提供了一种语法上轻量级的方式来动态定义函数。它们还可以通过值或引用来捕获(或封闭)周围范围的变量。在本文中,我们将研究lambda与纯函数和函子类(实现的类)在实现方面的区别operator()。
Capture By Valu
...
transaction事务是一个抽象层,允许应用程序假装某些并发问题和某些类型的硬件和软件故障不存在。各式各样的错误被简化为一种简单情况:事务中止(transaction abort),而应用需要的仅仅是重试。
如果没有事务处理,各种错误情况(进程崩溃,网络中断,停电,磁盘已满,意外并发等)意味着数
...
一句话概述std::move本身只做类型转换,对性能无影响。我们可以在自己的类中实现移动语义,避免深拷贝,充分利用右值引用和std::move的语言特性。
移动语义目的就是用浅拷贝代替深拷贝,右值引用跟深拷贝放到同一场景才是有意义的。
实现移动语义在没有右值引用之前,一个简单的数组类通常实现如下,有
...
遇到的问题对于正在运行的程序,当更新动态库尝试重新加载时,可能会导致程序 CoreDump 。
case:我们的一个开发环境中有多个进程依赖同一个动态库.so, 我更新这个so的时候,直接用1cp new.so old.so
导致多个进程同时core,😮😮😮
这里简单解释下其原因,以及规避方
...
概述首先,相较于C语言,C++语言并没有额外增加内存消耗(确切说,在没有虚函数情况下)。 对于一个C++类对象,每个对象有独立的数据成员(非static),但是内存中成员函数只有一份,该类的所有对象共享成员函数。
编译器在编译阶段,进行函数的重构,即将成员函数进行非成员化。通过将this指针作为函数
...
shared_ptr1template< class T > class shared_ptr; (C++11 起)
多个shared_ptr管理同一个指针,仅当最后一个shared_ptr析构时,指针才被delete。这是怎么实现的呢?答案是:引用计数(reference counti
...
hook的并发症可以理解成一个有意思的问题,假如地址 addr1 上有一个函数func1,长度为len, 将这个函数 整体换一个位置,挪到 addr2, 移动之后的函数成为func2
1memcpy(addr2 ,addr1,len );
原来调用 func1 语法是:
1func1(arg1 ,
...