- 博客(14)
- 收藏
- 关注
原创 每一个C++开发者都应该知道的线上工具
要想代码写得丝滑,怎么可以不熟练各种开发工具呢?锤子用的好,烦恼会减少。这里推荐几个C++开发中用于编译、构建、调试和性能分析的线上工具,最初的资料来源于Lightning Talk: Online Tools Every C++ Developers Should Know - Thamara Andrade - CppCon 2021[1],我对这些工具做了一些摸索,并整理了相关资料。C++ ShellOnline GDBQuick C++ BenckmarkPerfbenckBuildbe
2022-05-26 20:06:13
1220
原创 实现执行引擎和执行器
执行引擎我们使用迭代模型来实现执行引擎 ExecutionEngine, 该类最重要的方法就是 Execute, 包含执行的计划,需要返回的结果,事务,和执行上下文信息。该方法首先通过工厂方法来生产具体的执行器,然后不断调用Next方法获取执行的结果。graph LR A[执行计划] ---> B{执行引擎} ---> C[查询结果] subgraph 执行 D ---> |返回数据| B B ---> |查询数据| D[(数据库)] e
2021-05-16 22:57:10
309
原创 并发索引
Latch 模式读模式:多个线程在同一时间能够读取相同的对象;如果一个线程获持有一个处于读模式的latch,另一个线程也能够获取该处于读模式的latch。写模式:只有一个线程能够获取该对象;如果有其他线程持有处于任意模式下的latch,则其他线程是不能够获得write latch的。相容性矩阵:Latch的实现Reader-Writer LocksBlocking OS MutexTest-and-Set Spinlock...
2021-05-06 10:07:08
751
原创 B+树索引
B+树的删除删除算法:Remove1. 如果当前的树为空,则立即返回: IsEmpty2. 否则,找到待删除的key所在的叶子页面: FindLeafPage3. 从叶子页面中删除对应的记录: RemoveAndDeleteRecord4. 如果叶子页面中记录条数发生下溢,则需要进行合并或重分配操作: CoalesceOrRedistribute合并或重分配操作: CoalesceOrRedistribute1. 如果当前结点是根页面,则需要调整根:AdjustRoot 1.1 如果是从
2021-05-04 20:04:16
183
原创 排列元素
下一个排列 next_permutation从 next_permutation 的代码注释里面可以了解到,该函数的功能是将[first, last)范围内的元素视作一个序列,然后获取该序列的下一个字典序,当下一个字典序为最小字典序时,返回 false ; 否找,返回 true。如果我们打算产生某个序列的全排列的话,可以先用 sort 函数对该序列进行排序,得到其最小字典序,然后循环调用 next_permutation 直到返回 false。01 /**02 * @brief Permut
2021-04-27 21:54:47
117
原创 索引迭代器
索引迭代器重载解引用运算符 *, 自增运算符 ++(分为前置和后置版本,这里我们实现前置自增运算符), 比较运算符 != 和 ==。为了支持 for-each 循环需要实现 begin() 和 end() 函数, 这里的提供一个和 begin() 类似的 Begin()函数,Begin( const KeyType key)接受一个关键码参数 key,从大于等于该关键码 key 的键值对处开始。重载自增运算符 ++迭代器中包含当前页面正在访问的键值对的数组下标 current_index_, 每次进行
2021-04-22 13:50:34
166
原创 Nginx中的负载均衡策略
负载均衡策略加权Round-Robin以加权轮询的方式访问server指令指定的上游服务,集成在Nginx的upstream框架中。服务访问的权重 weight服务的最大并发数 max_conns最大失败次数 max_fails失败超时时间 fail_timeoutRound-Robin是其他负载均衡算法的基础,当其他负载均衡算法失效的时候,都会退化成Round-Robin算法。哈希算法Round-Robin的缺点:只能进行水平扩展,处理无差别的服务。基于客户端IP的哈希算法 upstr
2021-04-20 22:21:15
192
原创 背包问题总结:你的背包背到现在还没烂
背包问题 2020年9月5日 周六 晴 苏州工业园区 0-1背包416. 分割等和子集给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和...
2020-09-13 10:51:01
178
原创 并查集题目总结:用树结构表示不相交集合
朋友圈班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。示例 1:输入:[[1,1,0],[1,1,0],[0,0,1]]输出:2 解释:已知学生 0.
2020-09-11 15:07:32
654
原创 行人重识别图片相似度比较:马氏距离
马氏距离 2020年9月4日 周五 晴 苏州工业园区 马氏距离(Mahalanobis distance)是度量学习中一种常用的距离指标,同欧氏距离、曼哈顿距离、汉明距离等一样被用作评定数据之间的相似度指标。但却可以应对高维线性分布的数据中各维度间非独立同分布的问题。定义数据点x∈Rm,y∈Rmx\in R^m, y\in R^mx∈Rm,y∈Rm之间的马氏距离为:dM=(x−y)TΣ−1(x−y)d_{M} = \sqrt{(x-y)^T\Sigma^{-1}(x...
2020-09-08 17:33:45
1232
原创 明明的随机数
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。Input Paramn...
2020-02-26 14:50:10
116
原创 计算字符个数
写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。输入描述:第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。输出描述:输出输入字符串中含有该字符的个数。示例1输入ABCDEFA输出1考察点1-不区分大小写,字符串处理<ctype.h> 头文件中包含了一系列与字符处理有...
2020-02-25 22:51:09
135
原创 字符串最后一个单词的长度
计算字符串最后一个单词的长度,单词以空格隔开。输入描述:一行字符串,非空,长度小于5000。输出描述:整数N,最后一个单词的长度。示例1输入hello world输出5考察点1-读取一行带有空白字符(空格符,制表符,换行符等不可见字符)的字符串fgets()函数虽然用 gets() 时有空格也可以直接输入,但是 gets() 有一个非常大的缺陷,即它不检查...
2020-02-24 23:41:56
725
翻译 OpenPose-Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
一、人体姿态识别的定义定位图像中人体的关键点,描绘出每个个体的躯干二、实时多人姿态识别的困难1.每张图片中人体的个数未知,而且人体的尺度大小和出现在图片中的位置不知道2.人体与人体的交叉部分会产生复杂的干扰3.算法的运行复杂度倾向于随着图片中人体的个数而增加(密集人体的识别问题),导致实时性困难三、自顶向下的算法首先运用目标检测算法检测出单个人体,然后再进行单人的姿态识...
2019-03-09 00:00:25
237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人