07 2024 档案
摘要:InnoDB是MySQL中默认的事务型存储引擎,支持ACID事务、行级锁定和外键等特性。InnoDB的锁机制是其支持高并发事务处理的关键技术之一。InnoDB主要使用两种类型的锁:行级锁和表级锁,同时还引入了意向锁来优化锁定策略。 行级锁(Row-level Locks) 行级锁是InnoDB特有的
阅读全文
摘要:热点数据会使数据库性能出现问题,主要是因为大量的并发请求集中在少数数据上,导致以下几个方面的问题: 1. 资源竞争 当大量请求同时访问同一份数据时,数据库需要处理这些请求的并发控制,如锁机制。这会导致资源竞争,增加数据库的CPU和内存负担,从而影响数据库的响应时间和吞吐量。 2. 锁争用 在关系型数
阅读全文
摘要:分表设计是数据库优化的一种常见手段,旨在通过将数据分散到多个表中来提高数据库的性能和扩展性。以下是分表设计的一些关键点: 1. 分表的原因 性能提升:单表数据量过大时,查询、更新等操作的性能会下降。分表可以减少单次操作的数据量,提高响应速度。 避免热点:将热点数据分散到不同的表或数据库中,避免单一热
阅读全文
摘要:分表设计 分表是为了提高数据库的性能和扩展性。通过将数据分散到多个表中,可以减少单个表的大小,从而提高查询效率。 跨库Join 跨库Join可以通过应用层进行数据合并,或者使用分布式数据库中间件来实现。 数据量突增 数据量突增可以通过增加数据库实例、分库分表、使用缓存等方式来解决。 线上问题解决 线
阅读全文
摘要:为了满足LRU缓存的约束并保证get和put操作的时间复杂度为O(1),我们可以使用哈希表加双向链表的数据结构。哈希表用于快速定位一个节点,双向链表用于维护节点的使用顺序,最近使用的节点被放到链表尾部,最久未使用的节点在链表头部。 146、LRU 以下是一个简单的实现: import java.ut
阅读全文
摘要:61. 旋转链表 错误代码 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { thi
阅读全文
摘要:82. 删除排序链表中的重复元素 II 是一个有序链表 错误代码 class Solution { public ListNode deleteDuplicates(ListNode head) { ListNode dummy = new ListNode(); dummy.next = head
阅读全文
摘要:LCR 024. 反转链表 1、迭代 这段代码是一个用于反转单链表的Java类。下面是对代码的详细解释: class Solution { public ListNode reverseList(ListNode head) { ListNode prev = null; // 初始化前一个节点为n
阅读全文
摘要:19. 删除链表的倒数第 N 个结点 mid(简单) 快慢指针 时间复杂度O(L) 空间复杂度O(1) class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { // 创建一个哑节点,其next指向head,这
阅读全文
摘要:138. 随机链表的复制 递归和哈希表 时间&空间复杂度 O(n) 复杂链表的特点是每个节点除了有一个指向下一个节点的指针外,还有一个随机指针可能指向链表中的任意节点或null。通过递归和哈希表的方式,能够确保每个节点只被复制一次,并且正确地复制了next和random指针。 /* // Defin
阅读全文
摘要:92. 反转链表 II 其中left和right分别表示要反转的部分的起始和结束位置(从1开始计数)。整个过程分为两个主要步骤: 将p0移动到反转部分的前一个节点。 通过循环反转从left到right部分的链表。 最后,通过调整指针,将反转后的部分重新连接到原链表中。 假设我们有一个链表和给定的le
阅读全文