02 2021 档案
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 一文读懂clickhouse集群监控 常言道,兵马未至,粮草先行,在clickhouse上生产环境之前,我们就得制定好相关的监控方案,包括metric采集、报警策略、图形化报表。有了全面有效的监控,我们就仿佛拥有了千里眼顺风耳,对于线上任何风吹草动都能及
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 如果把大脑比作一个CPU, 我们日常的工作、生活、学习类似CPU处理前台任务,而暗时间就像CPU处理后台任务,虽然看不见也没有产生直接成果,但是如果一个人能充分利用这些时间进行思考、消化平时所读所看,便能使得认识更系统、全面、深入,也能无形之中拥有更多的
阅读全文
摘要:Vim是从vi发展出来的一个文本编辑器,是Linux后端开发人员必会工具之一,被广大码农戏称为编辑器之神(神之编辑器是Emacs,笔者没用过,看起来段位比Vim更高)。本文简单介绍Vim中不同的模式以及每个模式下的高频命令,希望能够引领初学者快速入门。
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 1 相关头文件 functional functional.h stl_function.h 2 一元函数对象 一元函数对象,是指这类函数对象只接受一个参数并返回一个参数。 unary_function为STL中所有一元函数对象的基类。它定义了一元函数对
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 STL中实现了一些跟容器相关的一些算法。这里介绍algorithm头文件中一些有意思的算法实现。 1 相关头文件 stl_algo.h stl_algobase.h stl_numeric.h 2 find algorithm头文件中定义的find函数可
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 1 相关头文件 bitset 2 bitset bitset中STL中用于表示位图的容器,它支持读写特定bit、从整数或字符串生成bitset对象。bitset大小通过模板参数指定,一旦编译器确定便无法变更,这一点与vector<bool>有差异。 2.
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 1 相关头文件 tree.h stl_tree.h map.h stl_map.h set.h stl_set.h 2 红黑树的实现 首先重温下红黑树的定义。同时满足以下条件的二叉树才可称之为红黑树: 所有节点非红即黑 根节点为红色。 所有叶子节点为黑色
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 traits(译作萃取)是C++中一种特殊的编程技法,它是模板元编程最直接的用例之一。通过traits,可以抽取模板入参类型的各种属性。接下来我们通过STL中最常见的几种traits举例说明。 1 __type_traits:trivial判定 __ty
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 1 相关头文件 iterator iterator.h stl_iterator.h stl_iterator_base.h 2 输入迭代器 2.1 iterator的种类 在STL中,迭代器分为输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 1 deque相关头文件 deque deque.h stl_deque.h 2 deque的数据结构 deque为双向队列,同时支持从队首和队尾插入和弹出值。其数据结构分为两部分,如下图所示: 连续缓冲区_M_map, 元素类型为——Tp*。如果元素值
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 1 相关文件 list list.h stl_list.h 2 链表节点结构 基类_List_node_base只有_M_prev, _M_prev,分别指向前置节点和后继节点,由此看出STL list是双向链表(首节点为空) struct _List_
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 1 string的数据结构 从定义可知, string其实是base_string的特化类,string使用默认的内存分配器__STL_DEFAULT_ALLOCATOR(_CharT)。 template <class _CharT, class _T
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 1 相关头文件 stl_vector.h vector.h vector 2 内存分配 vector默认使用__default_alloc_template分配内存,该分配器是线程安全的,具体可见STL源码分析-内存分配 3 vector的缓冲区 vec
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 说明:STL采用SGI版本, 下载地址 1 相关头文件 stl_alloc.h alloc.h 2 allocator STL中默认使用的内存分配器,被广泛用于vector, hashmap, deque等数据结构中 该类实现以下接口: allocate
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 一、redis分布式锁的简易实现 用redis实现分布式锁是一个老生常谈的问题了。因为redis单条命令执行的原子性和高性能,当多个客户端执行setnx(相同key)时,最多只有一个获得成功。因此在对可用性要求不是特别高的场景下,redis分布式锁方案不
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 大家可能和我一样,在Python日常开发过程中会遇到各种各样的编码问题。因此在此以个人的踩坑经验总结出一些常见问题和解决方案。 0 如何查看py源文件编码 vim py文件 输入 :set fileencoding 输出 fileencoding=utf
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 本文将介绍一下c++代码模板的小技巧 CRTP 虚函数 在介绍 CRTP 之前,我们先来了解下虚函数。 虚函数是通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数,从而实现了多态的特性。 一段简单的代码示例 class A { public:
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 《Linux Shell脚本攻略》是一本适合初学者系统学习Bash Shell的书籍,墙裂推荐。以下是我阅读这本书的笔记,希望对读者有用。 输出颜色字符 echo -e "\e[1:41m" # 1表示背景色 echo打印!需转义 echo "hello
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 C/C++关键字之restrict 在C语言中,restrict关键字用于修饰指针(C99标准)。通过加上restrict关键字,编程者可提示编译器:在该指针的生命周期内,其指向的对象不会被别的指针所引用。 需要注意的是,在C++中,并无明确统一的标准支
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 最近偶然看到一些有意思的shell命令,分享给大家。 fork炸弹 代码如下 :(){ :|:& };: 还是看不懂,将:替换成fork fork(){ fork | fork &} 这时候应该可以看出来了,这个炸弹的代码分为两个部分 第一部分:定义函数
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 现代C++之右值语义 在现代C的众多特性中,右值语义(stdmove和stdforward)大概是最神奇也最难懂的特性之一了。本文简要介绍了现代C中右值语义特性的原理和使用。 1 什么是左值,什么是右值? int a = 0; // a是左值,0是右值
阅读全文
摘要:更多精彩内容,请关注微信公众号:后端技术小屋 工欲善其器,必先利其器。性能与效率是程序员们永恒的追求,对代码如此,对日常搬砖也应如此。对于日常搬砖过程中的热点操作,本文推荐几个好用的在线工具,只愿各位同仁少加班,早下班,Work Life Balance, 两开花! 1 Linux命令搜索 传送门
阅读全文
摘要:〇、环境 zk client: github.com/samuel/go-zookeeper 一、zk client状态 zookeeper是一款流行的分布式协调组件,被广泛用于leader选举、分布式锁、服务发现、名称服务、配置中心等场景。 1. 状态含义 zk client与zk server在
阅读全文