归档
10
26
深入理解 CPP 之 smart pointer 深入理解 CPP 之 smart pointer
shared_ptr定义遵循共享所有权的概念,即不同的 shared_ptr 对象可以与相同的指针相关联 如果指向的资源没有任何一方需要的话,就会析构并释放资源 实现每个shared_ptr对象在会在栈上设立两个指针,分别指向堆上的两个
2022-10-26
24
The Google File System The Google File System
gfs为google内部的文件系统,其开源实现为hdfs,大数据领域标准的开源实现 GFS是一个存储非结构化数据的存储系统,和bigtable(列存储,存储结构化数据,关系模型,表结构)是相对应的 GFS只存储数据,不关心数据的结构和内容是
2022-10-24
23
深入理解 CPP 之 type conversion 深入理解 CPP 之 type conversion
backround基类对象转换为派生类对象,是不安全的 派生类是包含于基类的,即基类的“体积”是小于派生类的 如果一个指向基类的指针强转为指向派生类的指针(该指针始终指向基类,只是指针类型变了),再通过该指针调用派生类的特有方法或者数据
2022-10-23
23
MapReduce: Simplified Data Processing on Large Clusters MapReduce: Simplified Data Processing on Large Clusters
mapreduce的背景随着业务的增长,待处理的数据集越来越多,单机无法在规定时间内对海量数据进行处理 因此需要同时使用多台机器对数据进行处理 而大规模的数据处理,需要同时应对多机并行协同,网络通信,处理错误,提高执行效率等问题 但这些问题
2022-10-23
22
深入理解 CPP 之 auto,decltype,move,forward 深入理解 CPP 之 auto,decltype,move,forward
left value定义其实left value并没有很好的定义去说明,一种被普遍认同的观点便是在内存的表达式,能够用内置&进行取地址的值 // 错误的观点1:等号右边的是右值,左边的是左值 int a = 3; //
2022-10-22
22
STL 源码剖析之 map STL 源码剖析之 map
STL中的红黑树特点RB-tree不仅是一个二叉搜索树,而且必须满足以下规则: 1、每个节点不是红色就是黑色 2、根节点是黑色 3、如果节点为红,其子节点必须为黑 4、任一节点到NULL(树尾端)的任何路径,所含的黑色节点数必须相同
2022-10-22
21
STL 源码剖析之 deque STL 源码剖析之 deque
定义是一种双向开口的连续线性空间,可以在头尾两端分别做元素的插入和删除 允许O(1)时间内对头端进行元素的插入或移除操作 没有容量的概念,因为它是以动态的分段连续空间合成,随时可以增加一段新的空间并连接起来 一旦有必要在deque的前
2022-10-21
20
STL 源码剖析之 vector STL 源码剖析之 vector
实现 vector 中有三个指针:指向使用空间的头(start)和尾(finish),以及可用空间的尾(end_of_storage) 可用空间:为了降低空间配置的速度成本,vector 实际配置的大小可能比客户需求的大一些(即capaci
2022-10-20
10
10
Deep into BinaryTree Deep into BinaryTree
二叉树的基本性质思路 二叉搜索树的基本性质,二叉树前中后序遍历的特性,完全二叉树的性质 从前,中遍历或中,后遍历能够推出二叉树 关于节点数量的规律:设非空二叉树中度为0、1和2的结点个数分别为n0、n1和n2,则有 n0 = n2 + 1
2022-10-10
09
Deep into Sort Deep into Sort
快速排序(QuickSort)代码实现递归版本(非稳定版)/*arr为需要排序的数组,left为左边界,right为右边界*/ void quick_sort(vector<int> &arr, int left, int r
2022-10-09