栈
栈 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 的事务隔离级别下执行 一致性读 操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它…
锁
锁 1. 概述 锁 是计算机协调多个进程或线程 并发访问某一资源 的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何时刻 最多只有一个线程 在访问,保证数据的 完整性 和 一致性 。在开发过程中加锁是为了保证数据的一致性,这个思想在数据库领域中同样…
事务
事务 事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库始终保持一致性,同时我们还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失 1. 概述 1.1 存储引擎支持情况 SHOW ENGINES 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务 能看出在 My…
索引优化与查询优化
索引优化与查询优化 1. 数据准备 学员表插50万条,班级表插1万条 CREATE DATABASE atguigudb2; USE atguigudb2; 步骤1:建表 CREATE TABLE `class` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `className` VARCHAR(30) DEFA…
链表
链表 1. 剑指 Offer 52. 两个链表的第一个公共节点 题目地址:LeetCode 注意: 如果两个链表没有交点,返回null 在返回结果后,两个链表仍须保持原有的结构 可假定整个链表结构中没有循环 程序尽量满足O(n)时间复杂度,且仅用O(1)内存 解题思路: 只有当链表headA和headB都不为空时,两个链表才可能相交。因此首先判断链…
网络层
网络层 1. 概述 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输 要实现网络层任务,需要解决以下主要问题: 网络层向运输层提供怎样的服务(可靠还是不可靠) 网络层对分组丢失、分组失序、分组重复等传输错误采取措施,使得接收方能正确接受发送方发送的数据,就是可靠传输;反之,如果什么措施也不采取,则是不可靠传输 网络寻址问题 路由选择…