程序员 CMakeLists.txt文件的基本语法 一、概述 CMakeLists.txt是cmake编译系统构建器的构建文件,就像是make中的Makefile一样。 Makefile是通过固定的文件格式来构建目标,相对于Makefile而言,CMa... 01月30日评论 阅读全文
C/C++ 关于vector的扩容机制 往vector中添加元素时,如果空间不够将会导致扩容。vector有两个属性:size和capacity。size表示已经使用的数据容量,capacity表示数组的实际容量,包含已使用的和未使用的。 ... 01月20日评论 阅读全文
C/C++ STL中的迭代器失效 一、迭代器失效 向容器添加或者删除元素可能会导致指向容器的指针、引用或者迭代器失效。使用已经失效的指针、引用或者迭代器将会导致程序出现异常,编码过程中一定要时刻注意迭代器失效的场景。 例如,以vect... 01月15日评论 阅读全文
程序员 磁盘的基本知识:磁道、柱面和扇区 一、磁盘的基本元素 磁盘由多个盘片组成,每个盘片的基本结构为: 各标识含义: A是磁道,多个磁盘的同一个磁道重叠起来叫做柱面,它包含了很多个扇区。 B是几何上的扇区,只做标示,此处无特殊含义。 C是扇... 01月12日评论 阅读全文
C/C++ C++中的友元和运算符重载 一、友元 友元可以允许其他类或者函数访问自己的非共有成员,如果类想把它的函数作为友元,只需要增加一条以friend开头的函数声明即可。 1.1 添加外部函数作为友元 以下一个学生类,类中保存了学生的年... 12月19日评论 阅读全文
数据结构和算法 数据结构之B树 一、B树的基本概念 B树是一种多叉树,被广泛应用于数据库索引中。它也是一种特殊的搜索树,和搜索树最大的不同在于它的每个节点都包含了n个关键字和n+1个指向子节点的指针。它的表现形式为: B树的特点: ... 12月15日评论 阅读全文
程序员 一次pidof命令卡住导致业务中断引发的设计思考 一、问题回顾 问题现象:线上业务,某个进程被卡住了,所有任务都不响应,导致业务中断。 问题原因:程序中调用了system命令,执行了一次pidof命令,然而作者万万没想到这个pidof命令会卡住了,导... 10月21日评论 阅读全文
Golang 国内几个优质的Go Module代理仓库服务 一、简介 go module公共代理仓库,代理并缓存go模块。你可以利用该代理来避免DNS污染导致的模块拉取缓慢或失败的问题,加速你的构建。 简单来说就是国内访问被墙,go get无法在线获取到仓库,... 10月06日评论 阅读全文
编程语言 “缓存穿透”、“缓存击穿”和“缓存雪崩”的概念和解决办法 一、缓存 缓存的作用一般是为了减轻数据库压力设计的,因为数据都是读写磁盘,当并发量大的时候,磁盘IO可能跟不上并发量。而缓存一般设计都是放在内存中的,最常见的例如redis和memcached,都是把... 09月15日评论 阅读全文
Golang Golang中glog库的使用方法 一、关于glog库 golang中的glog库是google著名开源C++日志库glog的golang版本,在golang默认日志库的基础上做了更进一层的封装使得该库能更贴近日常使用。项目首页为gol... 09月08日评论 阅读全文