缓存
缓存 1. 基本概念 缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码 // 1. 本地用于高并发 static final ConcurrentHashMap map = new ConcurrentHashMap(); // 2. 用于redis等缓存 static final Cach…
命令
命令 1. 通用命令 通用命令是所有数据类型都可以使用的指令,常见的有: KEYS:查看符合模板的所有 key,不建议在生产环境设备上使用 DEL:删除一个指定的 key EXISTS:判断 key 是否存在 EXPIRE:给一个 key 设置有效期,有效期到期时该 key 会被自动删除 TTL:查看一个 KEY 的剩余有效期 通过 help [c…
队列和Hash
队列和Hash 1. LeetCode 232. 用栈实现队列 题目地址:LeetCode 解题思路: 加入队尾 push() : 将数字 val 加入栈 A 即可 获取队首元素 peek() : a. 当栈 B 不为空: B 中仍有已完成倒序的元素,因此直接返回 B 的栈顶元素 b. 否则,当 A 为空: 即两个栈都为空,无元素,因此返回…
应用层
应用层 1. 概述 我们在浏览器的地址中输入某个网站的域名后,就可以访问该网站的内容,这个就是万维网 WWW 应用,其相关的应用层协议为超文本传送协议 HTTP 用户在浏览器地址栏中输入的是“见名知意”的域名,而 TCP/IP 的网际层使用 IP 地址来表示目的主机,从域名到 IP 地址的装转换,由属于应用层范畴的域名系统DNS,在后台帮用户完成 …
二叉树
二叉树 1. LeetCode 102. 二叉树的层序遍历 题目地址:LeetCode [ [3], [9,20], [15,7] ] 解题思路: 特例处理:当根节点为空,则返回空列表[] 初始化:打印结果列表res = [],包含根节点的队列 queue = [root] BFS 循环:当队列 queue 为空时跳出 a. 新建一个临时列表 …
栈
栈 1. LeetCode 20. 有效的括号 题目地址:LeetCode 解题思路: 创建一个栈(这里用 Stack<Character> 类型的 stack 变量)用来存储遍历过程中遇到的开括号; 遍历输入字符串 s 中的每个字符 c; 如果 c 是开括号('('、'{' 或 '['),则将其压入栈 stack; 如果 c 是闭括号…
运输层
运输层 1. 概述 之前课程所介绍的计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议 进程之间的通信 从通信和…
数组
数组 1. LeetCode 896. 单调数列 题目地址:LeetCode /** * 一次遍历 * * @param nums * @return */ public boolean isMonotonic(int[] nums) { boolean inc = true, dec = true; int n = nums.length; fo…
日志
日志 我们在讲解数据库事务时,讲过两种日志:重做日志、回滚日志 对于线上数据库应用系统,突然遭遇数据库宕机怎么办?在这种情况下,定位宕机的原因就非常关键。我们可以查看数据库的错误日志。因为日志中记录了数据库运行中的诊断信息,包括了错误、警告和注释等信息。比如:从日志中发现某个连接中的 SQL 操作发生了死循环,导致内存不足,被系统强行终止了。明确了…
多版本并发控制
多版本并发控制 1. 什么是 MVCC MVCC(Multi Version Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的 并发控制 。这项技术使得在 InnoDB 的事务隔离级别下执行 一致性读 操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它…