- 博客(22)
- 收藏
- 关注
原创 MySQL篇-其他面试题
MySQL事务是一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。事务的ACID特性包括原子性、一致性、隔离性和持久性,分别保证操作的完整性、数据一致性、独立执行和永久性。并发事务可能引发脏读、不可重复读和幻读问题,通过设置不同的事务隔离级别(如读未提交、读已提交、可重复读和串行化)来解决。MySQL默认隔离级别为可重复读。此外,MySQL通过undolog和redolog分别保证事务的原子性、一致性和持久性。MVCC(多版本并发控制)机制通过维护数据的不同版本来保证事务的隔离性。
2025-05-22 00:05:43
693
原创 Mysql篇-优化
本文主要探讨了MySQL面试中常见的理论问题与优化技巧,重点围绕索引相关问题展开。首先,介绍了如何定位慢查询,包括使用开源工具(如Arthas、Prometheus、Skywalking)和MySQL自带的慢查询日志。其次,分析了SQL语句执行缓慢的原因,如聚合查询、多表查询、大数据量查询等,并提供了通过EXPLAIN命令分析执行计划的方法。接着,详细解释了索引的概念、底层数据结构(B+树)、聚簇索引与非聚簇索引的区别,以及覆盖索引的作用。此外,还讨论了索引的创建原则、索引失效的常见情况。
2025-05-20 20:52:41
836
原创 Redis篇-消息队列
消息队列是一种用于存储和管理消息的机制,主要包含消息队列、生产者和消费者三个角色。Redis提供了三种实现消息队列的方式:List结构、PubSub(发布订阅)和Stream。List结构基于双向链表,支持LPUSH/RPOP或RPUSH/LPOP操作,优点是利用Redis存储不受JVM内存限制,支持持久化和消息有序性,但存在消息丢失风险和仅支持单消费者。PubSub模型支持多生产者和多消费者,但不支持数据持久化,存在消息丢失和堆积上限问题。Stream模型较为完善,支持消息回溯、多消费者读取和阻塞读取,但
2025-05-19 01:52:25
239
原创 Redis篇-使用场景与面试技巧【分布式锁及其他场景与问题】
Redis分布式锁的实现主要依赖于setnx命令,确保在集群环境下任务的幂等性,如抢单、抢券等场景。Redisson提供了分布式锁的实现,支持可重入锁,并通过WatchDog机制自动续期锁的有效时长,避免锁过期。Redis集群方案包括主从复制、哨兵模式和分片集群,分别解决高可用、高并发读和海量数据存储问题。分片集群通过哈希槽分配数据,确保数据存储和读取的高效性。Redis的高性能得益于其单线程模型、纯内存操作和I/O多路复用技术,有效避免了线程切换和资源竞争问题。
2025-05-19 01:47:38
1050
原创 Redis篇-使用场景与面试技巧【缓存问题】
Redis作为高性能的缓存数据库,广泛应用于多种场景,但也面临缓存穿透、击穿、雪崩等问题。缓存穿透指查询不存在的数据导致数据库压力增大,可通过缓存空数据或使用布隆过滤器解决。缓存击穿发生在热点数据过期时,大量请求直接访问数据库,可通过互斥锁或逻辑过期策略解决。缓存雪崩则是大量缓存同时失效或Redis服务宕机,可通过设置随机过期时间、使用Redis集群或添加降级限流策略来应对。此外,Redis的双写一致性、持久化策略(RDB和AOF)、数据过期策略(惰性删除和定期删除)以及数据淘汰策略(如LRU、LFU等)也
2025-05-17 23:40:09
997
1
原创 Redis篇-布隆过滤器
布隆过滤器是一种基于位数组和哈希函数的数据结构,用于高效地判断一个元素是否存在于一个集合中。它由一个初始值为0的位数组和多个哈希函数组成。当布隆过滤器判定某个元素存在时,可能存在误判;但若判定不存在,则该元素一定不存在。布隆过滤器的主要优势是空间效率高,但存在一定的误判率,主要由于哈希冲突导致。例如,当某个不存在的元素被误判为存在时,系统会错误地认为该元素存在于集合中。
2025-05-16 22:24:02
160
原创 Redis篇-入门
Redis是一个高性能的基于内存的键值对数据库,适用于存储热点数据如商品、资讯等。它支持多种数据类型,包括字符串、哈希、列表、集合和有序集合,每种类型都有特定的应用场景和操作命令。Redis提供了丰富的命令集,如SET、GET、HSET、HGET等,用于数据的存储、查询和删除。在Java中,可以通过Jedis、Lettuce或Spring Data Redis等客户端与Redis进行交互。Spring Data Redis通过简化配置和提供模板类,使得在Spring项目中操作Redis更加便捷。通过Redi
2025-05-16 00:38:27
563
原创 Vue路由
自定义组件和路由之间的跳转命令:# vue版本为2则安装:# vue版本为3则安装:如果已经使用脚手架安装好的了路由,就不在需要使用该命令。
2024-09-29 12:39:16
206
原创 《深入理解计算机系统》----第六章:存储器层次结构
是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。靠近CPU的小的、快速的作为一部分存储在相对慢速的中的数据和指令的缓冲区域。主存暂时存放存储在容量较大的、慢速磁盘上的数据,而这些磁盘常常又作为存储在通过网络连接的其他机器的磁盘或磁带上的数据的缓冲区域。
2024-09-22 15:56:39
549
原创 《深入理解计算机系统》----第三章:程序的机器级表示
Intel处理器系列俗称x86,经历了一个长期的、不断进化的发展过程。开始时它是第一代单芯片、16位微处理器之一,由于当时集成电路技术水平十分有限,其中做了很多妥协。此后,它不断地成长,利用进步的技术满足更高性能和支持更高级操作系统的需求。
2024-09-19 11:02:44
944
原创 SpirngBoot项目怎么推到Gitee上
7、最后在Gitee上查看新建的仓库信息查看项目内容也没问题注意!!!本次操作是指在新建项目的情况下,没有创建gitee仓库,需要第一次推送项目到Gitee上。需要这样操作。如果已经存在git仓库。则不需要这样操作。
2024-09-15 17:15:30
563
1
原创 Maven搭建多模块开发手脚架--模块化开发
以往我们开发都只创建一个工程,所有代码都放到一起。而模块化开发是将一个大的工程拆分为众多的子工程(模块),在结构上就是创建一个父工程,下面创建众多模块。
2024-09-15 01:46:10
332
原创 《深入理解计算机系统》----第一章:计算机系统漫游
而并发执行则是说一个进程的指令和另一个进程的指令是交错执行的(看上去像是多个进程同时执行,但是针对单个处理器来说,每个时间片只有一个进程的代码在执行)。从一个进程到另一个进程的切换是由操作系统内核管理的,内核是操作系统代码常驻主存的部分(注意:内核不是一个独立的进程,相反,它是系统管理全部进程代码和数据结构的集合)是进程内部的执行单元。处理器的核心是一个字长的存储设备(或寄存器),称为程序计数器(PC),在任何时刻,PC都在指向主存中的某条机器语言指令。每个进程看到的内存都是一样的,成为虚拟地址空间。
2023-10-01 23:17:48
118
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人