- 博客(7)
- 收藏
- 关注
原创 MVCC 多版本并发控制
MVCC 多版本并发控制多版本并发控制多版本并发控制(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于**实现提交读(Read Committed,简称RC)和可重复读(Repeatable Read,简称RR)**这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,要求很低,无需使用 MVCC。可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。基本思想当多个事务同时执
2020-08-12 16:53:30
168
原创 单例模式——Double Check 双重校验锁实现方式为什么要加volatile关键字
单例模式——Double Check 双重校验锁实现方式为什么要加volatile关键字单例模式双重校验锁实例:public class Singleton { private static volatile Singleton singleton = null; private Singleton() {} public static Singleton getInstance(){ //第一次校验singleton是否为空 if(
2020-07-30 16:00:15
606
原创 快慢指针专题
快慢指针专题针对的题型快慢指针主要针对以下两种类型的题目,其中第一种比较常见判断链表或数组是否有环或与环相关的问题寻找中点与双指针的区别: 快慢指针:像单链表这样的数据结构,指针只能进行单向运动,通常使用快慢指针 双指针:像数组或双向链表这样的数据结构,可以考虑是否使用双指针。还有一个特点是,通常数组或双向链表是有序的下面从LeetCode中选取四道题为例。快慢指针例题141.环形链表题目描述:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来
2020-06-22 21:24:37
289
原创 LeetCode 76 最小覆盖子串
LeetCode 76 最小覆盖子串最小覆盖子串题目描述题目描述:给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。题解这题属于滑动窗口类型。思路简单来说就是,用start、end控制一个滑动窗口。当滑动窗口中未包含所有T中字符,end右移
2020-06-04 20:16:00
136
原创 面向对象和面向过程的特点及区别
面向过程面向过程指的是,分析出解决问题所需的若干个步骤,用函数将这些步骤一一实现,使用时依次调用这些函数即可。优点: 性能比面向对象高。常用于单片机、嵌入式开发、Linux/Unix,因为它们侧重于更高的性能、更小的资源消耗缺点: 没有面向对象易维护、易复用、易扩展引用网上看到的一个五子棋例子:面向过程的设计思路是分析解决问题的步骤:1)开始游戏,2)黑子先走,3)绘制画面,4)判断输赢,...
2020-04-06 15:55:18
2810
原创 剑指Offer——判断平衡二叉树
最直接做法最直接的做法就是根据平衡二叉树的定义和特点来判断,1)一棵平衡二叉树的左右子树都是平衡二叉树;2)平衡二叉树的左右子树的高度差不超过1。class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if(TreeDepth(pRoot)<=2) retur...
2020-03-25 22:04:44
154
原创 剑指Offer——两个链表的第一个公共节点
剑指Offer——两个链表的第一个公共节点两个链表的第一个公共节点计算两个链表长度的解法不计算链表长度的解法两个链表的第一个公共节点计算两个链表长度的解法先用两个指针遍历两个链表计算出链表长度l1和l2,然后让长链表的指针从头先走abs(l1-l2)步,再一起往后走并判断两个指针是否相等,找到第一个相等的节点就是公共节点。/*struct ListNode { int val; st...
2020-03-24 21:08:01
104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人