- 博客(37)
- 收藏
- 关注
原创 【MySQL】InnoDB的索引为什么用B+树而不用B树?
面试版回答如下:B+树相比B树有三个核心优势:1.:B+树的,单次IO能加载,减少磁盘访问次数。2.:叶子结点形成,适合WHERE id>100这类查询。3.,查询时间复杂度稳定为。
2025-04-01 14:06:20
217
原创 【MySQL】MySQL结构体系及核心组件功能是怎样的?
MySQL采用处理网络连接和认证;包含等核心功能;插件式支持InnoDB等引擎。其中负责选择。
2025-03-27 15:37:38
395
原创 【Redis】Redis中的热点key问题如何解决?
热点key问题:在Redis中,某些Key被频繁访问,导致单个Redis实例的负载过高,进而影响系统性能。解决该问题,可以从以下几方面入手:1.3Key访问统计使用redis-cli的–hotkeys选项识别热点Key:2.解决方案2.1数据分片原理:将热点Key分散到多个Redis实例中,减轻单个实例的负载。实现方式:优点:
2025-03-20 15:56:47
848
原创 【RabbitMQ】RabbitMQ的基本架构是什么?包括哪些核心组件?
Producer:发送消息。Exchange:路由消息Queue:存储消息。Binding:定义路由规则。Consumer:消费消息。Connection:建立与RabbitMQ的连接。Channel:执行具体操作的信道。
2025-03-19 22:25:55
790
原创 【RabbitMQ】RabbitMQ中死信交换机是什么?延迟队列呢?有哪些应用场景?
延迟队列:消息在发送到队列后,不会立即被消费,而是延迟一段时间后被消费者处理。实现方式:RabbitMQ本身不支持直接的延迟队列功能,但可以通过死信交换机+TTL实现。死信交换机:用于处理无法被正常消费的消息,常用于异常消息的处理和延迟队列。延迟队列:通过死信交换机+TTL实现,适用于订单超时取消、定时任务、重试机制等场景。应用场景死信交换机异常消息处理、延迟队列。延迟队列订单超时取消、定时任务、重试机制。
2025-03-19 20:52:21
567
原创 【RabbitMQ】RabbitMQ消息的重复消费问题如何解决?
消息重复消费的原因包括消息队列机制消费者端逻辑问题解决方案:确保消息处理的幂等性。优化消息确认机制,避免消息丢失。使用消息队列或者消费者端的去重功能。控制消息的重试次数,避免无限重试。通过并发控制避免多个消费者同时处理同一条消息。
2025-03-19 17:42:22
889
原创 【RabbitMQ】RabbitMQ如何保证消息不丢失?
开启消息确认机制,发送持久化消息。持久化队列和交换机,使用镜像队列。开启手动确认机制,实现消费重试或使用死信队列。
2025-03-19 17:01:23
560
原创 【Redis】Redis的数据删除(过期)策略,数据淘汰策略。
Redis的过期key删除是惰性删除+定期删除的结合。惰性删除确保访问时key是最新的,定期删除减少内存占用。常用策略:allkeys-lru和是最常用的淘汰策略。
2025-03-18 20:31:05
379
原创 【Redis】Redis的双写一致性是什么?如何保证?
是指在系统中同时使用缓存(如Redis)和数据库(如MySQL)时,如何确保两者的数据保持一致。在,可能会出现的情况。为了解决这个问题,需要设计合理的策略。
2025-03-18 17:01:59
478
原创 【Redis】什么是缓存穿透、击穿、雪崩?如何解决?
缓存击穿是指某个热点数据在缓存中过期后,大量请求同时涌入,直接访问数据库,导致数据库压力骤增。缓存雪崩是指大量缓存数据在同一时间过期,导致大量请求直接访问数据库,数据库压力骤增,直接崩溃。
2025-03-18 15:01:16
645
原创 什么是死锁?如何避免死锁?
死锁是多个线程或进程因争夺资源而互相等待的现象。死锁的四个必要条件是互斥、占有并等待、非抢占和循环等待。避免死锁的方法是破坏死锁的四个必要条件之一。如果死锁发生,可以通过检测和恢复机制来解决。
2025-03-17 19:31:08
326
原创 【Spring框架】Spring框架中的单例bean是线程安全的吗?
bean的多种状态指的是Bean实例中有可变的成员变量,这些变量在多线程环境下可能会被并发修改,从而导致线程安全问题。无状态的Bean:通常线程是安全的。有状态的Bean:需自行保证线程安全,可以通过同步机制、线程安全类或改变Bean的作用域来实现。指的是Bean中有可变的成员变量,这些变量在多线程环境下可能会被并发修改,从而导致线程安全问题。
2025-03-17 16:41:23
380
原创 【计算机网络】TCP粘包、拆包的机制
TCP粘包和拆包是由于TCP协议面向流的特性导致的。解决粘包和拆包的核心是定义消息边界,常见的方法包括固定长度消息、特殊分隔符、消息头+消息体等。
2025-03-17 00:14:29
387
原创 【Java基础】为什么Java代码可以实现一次编写,到处运行?
是Java跨平台的关键程序运行前,Java源代码.java经过编译成字节码文件.class。程序运行时,JVM将文件翻译成特定平台下的并运行。只要在上安装,就可以运行字节码文件。
2025-03-14 16:55:44
191
原创 【MySQL】B树和B+树的区别?MySQL为什么选用B+树作为索引数据结构?
这使得 B + 树在频繁的插入和删除操作下,仍然能够保持较好的性能,例如查询某个时间段内的订单记录。B + 树的叶子节点通过指针连接成。,对于需要排序的查询操作,B + 树可以直接利用叶子节点的有序性,,磁盘 I/O 操作是影响数据库性能的重要因素。B + 树的插入和删除操作主要影响。,从而降低了树的高度。,使得范围查询可以通过。
2025-03-14 08:44:26
551
原创 int和Integer有什么区别?两者进行==运算时会得到什么结果?
int 和 Integer 在数据类型、默认值、存储方式和方法属性等方面存在差异,使用 == 比较时需要根据具体情况判断是比较值还是引用。在比较 Integer 对象的值时,建议使用equals()方法。
2025-03-12 11:17:36
295
原创 MySQL中的事务隔离级别有哪些?
允许一个事务读取到另一个已经提交的事务的数据确保一个事务中的多个查询返回的结果是一致的。是MySQL事务隔离级别的最高级别通过锁机制,一个事务只会等待前一个事务成功提交才会开始,确保了事务的完全隔离避免了并发执行时可能出现的所有问题。
2025-03-06 17:13:51
430
原创 I/O是什么?
是计算机系统中用于,指的是在(如键盘、显示器、磁盘等)之间,或在的数据传输过程I/O操作包括(数据从外部设备读取到计算机)和(数据从计算机传输到外部设备)。
2025-01-24 14:23:53
313
原创 什么是物理地址?什么是逻辑地址?
通过使用逻辑地址,程序可以将其内存访问操作与实际的物理存储位置解耦。这使得操作系统能够对。,其中包含了程序执行所需的代码、数据和堆栈等信息。,从而确保它们不会相互干扰或访问对方的内存空间。的方式,使得程序员可以更方便地编写和管理程序,而。:逻辑地址空间可以使不同的。这种抽象使得程序能够在。:逻辑地址提供了一种。:逻辑地址提供了一种。,而无需修改其代码。
2025-01-22 20:09:32
282
原创 Datawhale X 李宏毅苹果书AI夏令营 task3
(Activation Layer):卷积层输出的特征图通常通过一个非线性激活函数进行处理,如 ReLU(Rectified Linear Unit)。(Pooling Layer):用于对特征图进行降采样,减少特征图的尺寸,保留重要特征。对于图像,输入通常是一个三维矩阵(高度 x 宽度 x 通道数,如 RGB 图像有三个通道)。(Output Layer):最后一层通常使用 Softmax /Sigmoid 函数,将全连接层的输出转换为类概率分布或回归结果。,负责提取数据的局部特征。之后,激活函数之前。
2024-09-03 21:17:41
762
原创 Datawhale X 李宏毅苹果书AI夏令营 task2
在训练过程中,可以根据不同条件自动调整,不是固定不变的。可以在模型训练的早期阶段使用较大的学习率,加速收敛;在训练的后期阶段使用较小的学习率,精细调整模型参数,避免跳过全局最优点。LR从大变小。
2024-08-31 20:50:27
424
原创 Datawhale X 李宏毅苹果书 AI夏令营 task1
)是局部最大值、局部最小值、或者是鞍点。一维空间中的误差表面,有一个局部极小值。因为在临界点时,梯度g=0,所以。特征值有正有负,则原点为鞍点。可以根据第二项来判断在。
2024-08-26 17:45:47
840
原创 对进程和线程的理解,以及两者的对比。
定义:进程是操作系统中的一个运行中的程序的实例,它包含了程序的代码、数据和资源,是操作系统进行和的基本单位。
2024-06-01 10:24:13
691
原创 Java中String,StringBuilder,StringBuffer有什么区别?应用场景是什么?
1)如果频繁修改字符串且不涉及多线程操作,推荐使用StringBuilder。2)如果设计多线程操作,则应该选择StringBuffer。3)如果字符串是固定不变的或者不需要频繁修改,则可以使用String。
2024-05-29 21:52:27
190
原创 Java中==和equals有什么区别?
在需要判断两个对象的内容是否相等时,使用equals()方法。例如,在比较两个字符串、集合或自定义对象时,我们通常关心它们的内容是否相等,而不是它们是否是同一个对象。:在需要判断两个对象引用是否指向同一个对象时,使用==操作符。因为我们更关心对象的内容是否相等。注意:1.默认情况下,Object类的equals()方法与==运算符的行为相同,即比较两个对象的。equals()方法是java.lang.Object类中的一个方法,通常用于比较两个对象的。:使用==操作符来比较两个基本数据类型的值是否相等。
2024-05-28 11:08:57
445
1
原创 ArrayList和LinkedList有什么区别?
ArrayList: 是基于动态数组的实现。它内部使用了一个对象数组来存储元素。当元素被添加到ArrayList时,如果当前数组的大小不足以容纳新元素,那么就会创建一个新的更大的数组,并将旧数组的内容复制到新数组中。LinkedList:是基于双向链表(在 Java 6 之前是双向循环链表)的实现。每个元素(称为节点)都包含数据和指向下一个节点以及前一个节点的引用。因此,在LinkedList中添加或删除元素通常只需要修改几个引用,而不需要像ArrayList那样复制整个数组。
2024-05-28 01:12:21
559
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人