数据结构
文章平均质量分 79
繁华落尽梦一场
暮春者,春服既成,冠者五六人,童子六七人,浴乎沂,风乎舞雩,咏而归
展开
-
数据库事务中MVCC的实现
原文链接 数据库事务中MVCC的实现MVCC(Multi-Version Concurrency Control),实现了读事务不加锁。MVCC对每行数据维护多个版本,无论事务执行时间有多长,MVCC总是能够提供与事务开始时刻一致的数据以InnoDB实现为例,InnoDB对每张表增加了两个隐藏列,其中一列存储行被修改的“时间”,另一列存储行被删除的“时间”。当然了,InnoDB存储的不是时间,而是与时间对应的数据库系统的版本号,当开启一个事务时,InnoDB都会给这个事务分配一个递增的版本号,这个版本号原创 2020-10-01 11:47:17 · 201 阅读 · 0 评论 -
redis源码之一步一步解析客户端连接请求
redis是一个性能很高的内存数据库,那么从我们使用客户端连接到执行一个命令,在redis中是如何执行的?接下来我们从源码角度调试查看内部流程。由于redis 6对网络IO使用了多线程,我们暂时先用redis 5来调试。服务启动redis作为后台服务,首先自己先要运行起来,然后等待客户端的连接。我们知道,redis网络模型是常见的Reactor模式,简单来说就是主函数复杂接收包,对于处理请求通过回调函数(CallBack)处理。通常情况下,我们会把回调函数放在单独我work线程里面。我们从main函转载 2020-10-01 11:45:05 · 701 阅读 · 0 评论 -
leetcode-212. Word Search II
/*Given a 2D board and a list of words from the dictionary, find all words in the board.Each word must be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those ho...原创 2020-01-16 23:30:00 · 187 阅读 · 0 评论 -
leetcode 二叉树先、中、后序遍历,非递归法
1. 先序遍历vector<int> preorderTraversal(TreeNode* root){ vector<int> result; stack<TreeNode *> st; TreeNode *p = root; while (!st.empty() || p != nullptr) { ...原创 2020-01-10 23:15:36 · 177 阅读 · 0 评论 -
[LeetCode] 判断两个链表是否有公共节点并返回第一个公共节点
Write a program to find the node at which the intersection of two singly linked lists begins.For example, the following two linked lists:A: a1 → a2 ↘原创 2015-12-05 22:39:55 · 924 阅读 · 0 评论 -
C++中七大排序算法
这里的七大指的是快速排序、堆排序、归并排序、希尔排序、选择排序、插入排序和冒泡排序,由于桶排序应用场景有限,这里就不写了。先对比一下这几种排序的效率:观察表发现一个有趣的现象:对于堆排序和归并排序,他们的最好、最坏和平均的时间复杂度都是O(nlogn),也就是说数据的初始化顺序对这两种算法是没有影响的。先来一个直观的比较(500000条数据)直观来看,快速排序、堆排序和归并排序的时...原创 2015-12-18 12:06:22 · 1072 阅读 · 0 评论