Docker安装记录 老是报错 “Error response from daemon: Get “https://registry-1.docker.io/v2/”: proxyconnect tcp: dial tcp 127.0.0.1:7890: connect: connection refused” ,不知道是什么原因,卸载了重装一下。
bpf对内核的观测 bpftrace 总的来说是对线上项目的系统调用的函数的观测,因为这时已经不能往函数里面加log了。相关的开源项目 https://github.com/iovisor/bpftrace
redis存储原理与数据模型学习笔记 理解一下,如下图,要访问节点12,第一层常规的遍历方法用的次数明显比蓝色箭头用的次数要多。非完美跳表,插入节点会用随机层数的方式,这样第二层对于第三层就可能不会是“每隔一个节点提取一个元素了”,相邻的元素可能会被直接提取到上一层,更高层也是。因为6%4=2, 6%8=6, 当key时2,6的时候,size=4, key%size = 2。ht_table二维指针,这里可以理解为指针数组,对应哈希存储数组 ht 的每一个槽位ht[i] 挂的是一个链表。ht的槽位成对出现,ht[1]是为扩容备用的。
redis协议与异步方式学习笔记 EVAL的第二个参数是参数的个数,后面的参数(从第三个参数),表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。事务是整体同生共死,假如有ABCD四个节点与服务器连接,每一个节点中都可能有事物,其中任意一个节点都有可能宕机,为了保证事物的安全性,怎么办?numkeys 对应上面例子中的1,KEYS[1]表示 score:10001, 可选参数arg没有使用到。
理解内存序,指令重排与内存模型 1 多线程同步:当多个线程需要共享一个变量,并且需要确保每个线程对该变量的读操作都能够正确地获取最新值时,可以使用std::memory_order_acquire来确保同步。memory_order_relaxed (松散内存序): 只确保原子性,不具备同步性,顺序不一定,编译器,cpu都可以对ab、ef优化(改变顺序,重排)memory_order_acquire (获得操作): 原子性,同步性,顺序性 与memory_order_release 相反。a,b能否优化到c后面来?
理解分布式锁的实现过程 在分布式系统中,一个应用部署在多台机器当中,在某些场景下,为了保证数据一致性,要求在同一时刻,同一任务只在一个节点上运行,即保证某个行为在同一时刻只能被一个线程执行;在单机单进程多线程环境,通过锁很容易做到,比如mutex、spinlock、信号量等;而在多机多进程环境中,此时就需要分布式锁来解决了;所谓的分布式场景就是:多机器,多网段,通过socket通信。
内存泄漏检测相关内容 通过拦截 malloc,free函数,然后以宏定义的方式,改造malloc, free: malloc的时候根据指针地址写一个文件,free的时候根据指针地址删除这个文件。最后根据留下的文件就可以知道哪个new没有释放内存了。_malloc__FILE____LINE___free__FILE____LINE__方法1的弊端是,最好是用在一个.c文件中,如果文件较多的话就不太适用。