05 2023 档案
【每日一题】[1110. 删点成林]
摘要:#### [1110. 删点成林](https://leetcode.cn/problems/delete-nodes-and-return-forest/) 给出二叉树的根节点 root,树上每个节点都有一个不同的值。 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一
计算机网络(一)计算机网络概述
摘要:### 计算机网络概述 #### 因特网 `网络`:许多计算机通过`交换机`连接在一起 `互联网(internet)`:许多网络通过`路由器`连接在一起 `因特网(Internet)`:全球最大的互联网,网络通过TCP/IP协议进行通信 ##### 因特网发展过程 分组交换网络 -> 互联网 ->
计算机网络(三)物理层
摘要:### 计算机网络(三)物理层 #### 1 物理层的基本概念 - 物理层就是要解决在连接计算机的传输媒体上传输**数据比特流**(比特0和比特1)的问题 - 向上一层数据链路层屏蔽各种传输媒体的差异,提供透明的比特流传输服务。 ##### 物理层协议的主要任务 #### 2 物理层下的传输媒体
计算机网络(二)OSI七层模型、TCPIP四层模型与原理五层模型
摘要:### 1 OSI参考七层模型(法律上的标准) #### OSI七层模型 OSI:**开放式互连通信参考模型** 分层的原因:标准化、降低各个层之间的关联依赖 ① **应用层**:解决通过应用进程交互实现特定网络应用的问题;**能产生流量**能够**和用户交互的应用**;**与通信无关的内容就应该属
JVM(五)本地方法接口
摘要:JVM(五)本地方法接口和本地方法栈 1 本地方法 一个Native Method就是一个Java调用非Java代码的接口。 在定义本地方法的时候,不提供实现体 标识符native能够和除了abstract的java标识符连用 public class NativeTest{ public nati
JVM(四)虚拟机栈(三)虚拟机栈面试题
摘要:JVM(四)虚拟机栈(三)虚拟机栈面试题 1 举例栈溢出的情况? 当方法调用不停将栈帧压入虚拟机栈导致栈内空间不足而出现StackOverFlowError即是出现了栈溢出 可以通过-Xss设置栈的大小,栈的大小可以是固定的也可以是动态变化的,如果固定且超出设定值则就会出现栈溢出;如果是动态变化的,
JVM(四)虚拟机栈(一)栈帧结构:局部变量表与操作数栈
摘要:JVM(四)虚拟机栈(一)栈帧结构:局部变量表与操作数栈 1 虚拟机栈 1.1 简介 虚拟机栈出现的背景:由于跨平台性的设计,Java的指令都是根据栈来设计的,不同平台的CPU架构不同,所以不能基于寄存器。这样做的优点是跨平台,指令集更小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令
JVM(四)虚拟机栈(二)栈帧结构:动态链接、方法返回地址与附加信息
摘要:JVM(三)虚拟机栈(二)栈帧结构:动态链接、方法返回地址与附加信息 1 动态链接技术 每一个栈帧,都包含着一个指向运行时常量池中该指针所属方法的引用,即方法区中的方法地址,包含该引用的目的就是为了支持当前方法能够实现动态链接。所以动态链接又称为运行时常量池中的方法引用 在java源文件被编译为字节
JVM(三)运行时数据区概述及线程
摘要:运行时数据区概述及线程 简介 内存是硬盘和CPU的中间仓库和桥梁,承载着操作系统和应用程序的实时运行。JVM的内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对内存的划分方式和管理机制存在着部分差异。 如下图,主要流程是类加载子系统加载字节码文件
JVM(二)类加载器子系统和类加载过程
摘要:类加载器子系统和类加载过程 1 简介 类加载器子系统:负责从文件系统或者网络中加载字节码文件,字节码文件在文件开头有特定的文件标识(Coffee Baby)。ClassLoader只负责文件的加载,它是否可以运行由Execution Engine决定。 加载的类信息存放在内存中一块成为方法区的空间,
JVM(一)JVM与Java体系结构
摘要:[toc] ### JVM与Java体系结构 Java是目前应用最广泛的软件开发平台之一,是一门**跨平台的语言**,write once,runanyWhere。Java程序编译为字节码文件之后,可以被各个平台的JVM解释运行。 而JVM则是**跨语言的平台**,不仅仅支持java语言,其他提供的
【优先队列&&堆排序】[1054. 距离相等的条形码]
摘要:1054. 距离相等的条形码 在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。 请你重新排列这些条形码,使其中任意两个相邻的条形码不能相等。 你可以返回任何满足该要求的答案,此题保证存在答案。 示例 1: 输入:barcodes = [1,1,1,2,2,2] 输出:[2
Redis6(一)五大数据类型
摘要:1 NoSQl数据库 1.1 技术的发展 技术的分类: ①解决功能性问题:javase ②解决扩展性问题:框架 ③解决性能问题:redis 1.2 NoSQL数据库概述 NoSQL(Not Only SQL),不仅仅是SQL ,泛指非关系型数据库。不依赖业务逻辑存储,而是以简单的key-value键
【每日一题】[2441. 与对应负数同时存在的最大正整数]
摘要:【每日一题】2441. 与对应负数同时存在的最大正整数 给你一个 不包含 任何零的整数数组 nums ,找出自身与对应的负数都在数组中存在的最大正整数 k 。 返回正整数 k ,如果不存在这样的整数,返回 -1 。 示例 1: 输入:nums = [-1,2,-3,3] 输出:3 解释:3 是数组中
【单调栈】[739. 每日温度]
摘要:【单调栈】739. 每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入: temperatures =
【完结撒花】MySQL(二十三)主从复制
摘要:### MySQL(二十三)主从复制 #### 1 主从复制概述 ##### 1.1 如何提高数据库并发能力 - 在实际工作中,常将`Redis`和`MySQL`配合使用,如果有请求的时候,首先在缓存中查找,如果存在就直接取出,不存在再访问数据库,这样就提升了读取的效率,减少了对后端数据库的访问压力
MySQL(二十二)其他数据库日志(一)通用查询日志和错误日志
摘要:### MySQL(二十二)其他数据库日志(一)通用查询日志和错误日志 #### 1 MySQL支持的日志 ##### 1.1 日志类型 - **慢查询日志**:记录执行时间超过`long_query_time`的所有查询,方便我们对查询进行优化 - **通用查询日志**:记录所有连接的起始和终止时
MySQL(二十二)其他数据库日志(二)bin log二进制日志与中继日志
摘要:### MySQL(二十二)其他数据库日志(二)bin log二进制日志 #### 1 bin log二进制日志 - bin log 即 binary log,二进制日志,也叫做变更日志 - 它记录所有更新数据的DDL和DML语句,但是不包含没有修改数据的语句(如Select、show等),以`事件
MySQL(二十一)MVCC多版本并发控制
摘要:MySQL(二十一)MVCC多版本并发控制 1 什么是MVCC MVCC(Multiversion Concurrency Control)多版本并发控制。即通过数据行的多个版本管理来实现数据库的并发控制,使得在InnoDB事务隔离级别下执行一致性读操作有了保障。 就是为了查询一些正在被其他事务更新
MySQL(二十)锁(二)表锁、行锁与页级锁
摘要:[TOC] ### MySQL(二十)锁(二)表锁、行锁与页级锁 ### 从操作粒度的锁类型划分:表级锁、行级锁和页锁 为了提高数据库的并发度,每次锁定的数据范围越小越好,理论上只锁定当前操作的数据的方案会获得最大的并发度,但是管理锁也是很耗费资源的事情(涉及锁的获取、检查和释放),因此需要在`
MySQL(二十)锁(三)乐观锁与悲观锁、显示隐式锁和其他锁
摘要:### MySQL(二十)锁(三)乐观锁与悲观锁 显式锁和隐式锁 #### 1 从对待锁的态度划分:乐观锁、悲观锁 - 从对待锁的态度划分,可以将锁划分为乐观锁和悲观锁,可以看出这两种锁是两种**对待数据并发的思维方式**。 - **乐观锁和悲观锁并不是锁,而是锁的设计思想** ##### 1.1
MySQL(十九)MySQL事务日志(二)UndoLog
摘要:### MySQL(十九)MySQL事务日志(二)UndoLog #### 1 undo 日志概述 `redo log`是事务`持久性`的保障,而`undo log`则是事务`原子性`和`一致性`的保证,如上图,在事务中更新数据的前置操作其实是需要将数据写入到 `undo log` 方便回滚。
MySQL(二十)锁(一)锁的概述与S、X锁
摘要:### MySQL(二十)锁(一)锁概述、S锁和X锁 #### 1 概述 - **`锁`是计算机协调多个线程或进程并发访问某一资源的机制**。 在程序开发过程中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是一些敏感的数据(如金额、订单等),就需要保证**这个数据在任何时刻都最多
MySQL(十八)MySQL事务(二):事务的隔离级别
摘要:### MySQL(十八)MySQL事务(二):事务的隔离级别 MySQL是一个`客户端/服务器`架构的软件,可以有若干个客户端与之连接,连接上之后都可以被称作是一个会话,每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是事务的一部分,**因此对于服务器来说需要同时处理多个事
MySQL(十九)MySQL事务日志(一)RedoLog
摘要:### MySQL(十九)MySQL事务日志(一)RedoLog 事务的四种特性:`原子性`、`一致性`、`持久性`和隔离性都是基于什么机制实现的? - 事务的隔离性由`锁机制`实现 - 而事务的`原子性`、`一致性`和`持久性`则由事务的 `redo` 和 `undo` 日志来实现的 - `r
【动态规划】 392. 判断子序列
摘要:8 392. 判断子序列 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。 进阶: 如果有大量输入的 S,称作 S1, S
【DP滚动数组空间优化】NO.1143. 最长公共子序列 NO.718. 最长重复子数组 NO.1035. 不相交的线
摘要:5 1143. 最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符
MySQL(十八)MySQL事务(一):事务的概述与使用
摘要:### MySQL事务(一):事务的概述与使用 #### 1 数据库事务概述 **事务是数据库区别于文件系统的重要特性之一**,当我们有了事务就会让数据库始终保持`一致性`,同时我们还能通过事务的机制`恢复到某个时间点`,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失。 ##### 1.
【动态规划】NO 123. 买卖股票的最佳时机 III
摘要:【动态规划】123. 买卖股票的最佳时机 III 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入:prices = [3
【动态规划】No 309. 最佳买卖股票时机含冷冻期
摘要:【动态规划】309. 最佳买卖股票时机含冷冻期 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。
MySQL(十七)查询优化(二)与数据库主键设计
摘要:### 查询优化(二) #### 1 覆盖索引 ##### 什么是覆盖索引 看下面的例子,对于联合索引age_sno_name,当查询字段较少时能够使用索引,而字段较多的时候只能进行文件排序,这是由优化器判断通过**索引加回表**或者**直接文件排序**的成本来决定的。**这种一个索引包含了满足
MySQL(十七)查询优化(一)
摘要:### 查询优化(一) #### 1 关联查询优化 ##### 数据准备 ```sql CREATE TABLE `type` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `card` INT(10) UNSIGNED NOT NULL, PRI
【字节二面算法】NO662 二叉树最大宽度
摘要:[字节二面算法] 662. 二叉树最大宽度 给你一棵二叉树的根节点 root ,返回树的 最大宽度 。 树的 最大宽度 是所有层中最大的 宽度 。 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。将这个二叉树视作与满二叉树结构相同,两端点间会出现一些延伸到这一层的 nul