抢票系统设计
摘要:1. 抢票系统核心挑战: 瞬时高并发:百万级别用户同时请求 数据强一致性:扣除库存保证准确,防止超卖 系统稳定性:防止雪崩 涉及多方系统:查询系统、订单系统、支付系统、通知系统等 公平性:防止黄牛恶意刷票,保证用户公平抢票 2. 架构设计 客户端请求API网关 网关做限流(RateLimter)、防
阅读全文
posted @
2026-01-27 12:35
colorfulworld
阅读(22)
推荐(0)
MVCC
摘要:1.MVCC功能 MVCC(多版本并发控制)是 MySQL InnoDB 实现高并发读写的核心机制,它通过保存数据的多个版本来实现读写不阻塞,提高了数据库的并发性能。 2 MVCC核心思想 "MVCC 的核心思想是:为每个事务创建一个数据快照,不同事务看到的数据版本可能不同。这样就实现了: 读不阻塞
阅读全文
posted @
2026-01-15 07:11
colorfulworld
阅读(12)
推荐(0)
MySQL的ACID是怎么实现的
摘要:1. 数据库数据进行更改操作流程: 数据库大部分的操作(比如Update、Delete、insert)在事务没有提交前,修改的数据页都是在内存缓冲区buffer pool进行的; 修改记录会被写入到redolog和undolog中 执行事务提交时,redolog内容会被强制刷盘持久化到磁盘,但数据页
阅读全文
posted @
2026-01-13 20:25
colorfulworld
阅读(5)
推荐(0)
AQS底层原理
摘要:1 AQS定义: AQS是Java并发包java.util.concurrent.locks中一个核心并发框架,用于构建锁和同步器, 如: ReentrantLock ReentrantReadWriteLock CountDownLatch Semaphore FutureTask 2 AQS核心
阅读全文
posted @
2025-08-05 10:41
colorfulworld
阅读(57)
推荐(0)
K8S
摘要:K8S是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能 核心概念 Pod最小的部署单元,包含一个或多个共享资源的容器。在同一个 Pod 里的几个 Docker 服务/程序,好像被部署在同一台机器上,可以通过 localhost 互相访问,并且可以共用 Pod 里的存
阅读全文
posted @
2025-07-27 09:57
colorfulworld
阅读(38)
推荐(0)
ES面试
摘要:ES结构 集群 节点 分片 ——> https://blog.csdn.net/weixin_43639512/article/details/86736881 ES查询性能调优 ——> https://blog.csdn.net/jbjmh/article/details/139551306 ES
阅读全文
posted @
2025-07-07 10:14
colorfulworld
阅读(16)
推荐(0)
JFR JMC
摘要:JDK14后引入了JFR。JFR和JMC是JVM监控和分析工具。 JMC是JDK自带的工具 jconsole:JDK自带的可视化监控工具。查看Java应用程序的运行概况、监控堆信息、永久区(或元空间)使用情况、类加载情况等。 Visual VM:Visual VM是一个工具,它提供了一个可视界面,用
阅读全文
posted @
2025-07-06 13:35
colorfulworld
阅读(216)
推荐(0)
Spring IOC和AOP
摘要:Spring IOC容器通过控制反转和依赖注入实现对spring bean生命周期的管理;AOP通过动态代理实现面向切面编程。二者构成了Spring核心机制 1 IOC 控制反转和依赖注入 1.1 控制反转机制: 传统模式,实例对象创建是通过new的形式实现,而Spring中将对象的创建 销毁权限交
阅读全文
posted @
2025-07-06 11:31
colorfulworld
阅读(39)
推荐(0)
ClickHouse
摘要:ClickHouse作为开源的列式存储数据库,具有卓越的查询性能和在线实时分析功能。旨在快速执行复杂的聚合查询,能够处理海量的数据集。 clickHouse表是一个大宽表,可能上百个列,减少join过程消耗 clickHouse列式存储原理 按列独立存储,在对应clickHouse partitio
阅读全文
posted @
2025-07-04 18:15
colorfulworld
阅读(107)
推荐(0)
Mybatis
摘要:1 一级缓存与二级缓存 https://blog.csdn.net/qq_62112907/article/details/148400431 Mybatis提供一级缓存和二级缓存机制来提升查询性能 一级缓存 二级缓存 作用域 单个sqlSession中,默认开启 SqlSession sessio
阅读全文
posted @
2025-07-04 09:21
colorfulworld
阅读(14)
推荐(0)
不同版本jdk新增功能
摘要:JDK11新增功能 1.集合增强 集合类如List、Set和Map新增了一些方法,例如List.of可以快速创建一个不可变的List。新的集合方法使得创建不可变集合变得更加简单,也减少了修改原始集合时的副作用。 2 var局部变量关键字 在Java 10中引入的新关键字var,允许在定义局部变量时省
阅读全文
posted @
2025-07-03 11:00
colorfulworld
阅读(28)
推荐(0)
Springboot bean加载过程
摘要:在Spring Boot中,Bean的加载过程涉及到Spring框架的核心机制,主要包括Spring容器的启动和初始化过程。下面将详细介绍Spring Boot中Bean的加载过程: 1. 启动流程 Spring Boot应用启动时,主要通过SpringApplication类的run方法启动。例如
阅读全文
posted @
2025-07-01 17:30
colorfulworld
阅读(101)
推荐(0)
Mongo索引
摘要:Mongo采用的是BSON索引,允许对文档中任一字段创建索引 Mongo索引的基本命令 创建索引 createIndex({字段1:字段排序方式,...,字段n:字段排序方式}); //字段排序方式分为1和-1,1代表升序,-1代表降序 删除索引 dropIndex({字段1:字段排序方式,...,
阅读全文
posted @
2025-06-26 09:28
colorfulworld
阅读(25)
推荐(0)
ElasticSearch
摘要:https://blog.csdn.net/qq_40991313/article/details/133942498 https://blog.csdn.net/qq_40991313/article/details/126646289?csdn_share_tail=%7B%22type%22%
阅读全文
posted @
2025-06-23 12:30
colorfulworld
阅读(25)
推荐(0)
JVM调优
摘要:JVM调优的基本思路是:监控发现问题-》工具分析定位问题-》JVM性能调优。本文主要围绕这三点进行逐个分析 一. 监控发现问题 通过监控工具Prometheus+Grafna/Spring Actuator+Admin,监控服务器有没有以下问题: 死锁:两个线程在持有锁的前提下,尝试获取对方锁,从而
阅读全文
posted @
2025-06-20 17:34
colorfulworld
阅读(122)
推荐(0)
高并发架构设计
摘要:高并发架构设计可以从接入层、应用层、数据层考虑不同的设计实现系统高吞吐、低延迟、高可用性。 接入层 负载均衡: 使用Apigee、Spring Cloud Gateway 进行 API 请求路由、流量分发。 限流: 使用RateLimiter进行限流控制 滑动窗口限流:Redis + Lua 实现
阅读全文
posted @
2025-06-18 17:08
colorfulworld
阅读(66)
推荐(0)
TCP三次握手 & 四次挥手
摘要:TCP 在了解tcp三次握手和四次挥手前,先了解下如下TCP报文 SYN: 用于建立连接。发送方发送SYN到接收方,用于向服务端请求建立连接 ACK:接收方成功收到发送发发送消息 FIN:用于终止TCP连接标志,表示发送方已经没有数据要发送了,希望能够关闭这个 TCP 连接。 tcp 三次握手 如上
阅读全文
posted @
2025-06-16 18:04
colorfulworld
阅读(67)
推荐(0)
SQL优化&索引失效场景 & 查询是否走索引判断
摘要:1 SQL优化 1.1 避免使用select * from table where id=1; select * 不会走覆盖索引,会有大量回表操作,从而导致查询效率低下 1.2 索引优化 使用explain判断查询是否走索引:explain select name from tableName wh
阅读全文
posted @
2025-06-16 14:18
colorfulworld
阅读(65)
推荐(0)
Spring三种注入方式 && @Autowired vs @Resource
摘要:Spring注入方式: 1.属性注入 (不推荐) 字段直接注入,单元测试时难以模拟依赖需要@Mock bean 来模拟依赖 @Service public class TestService(){ ... } @RestController public void TestController(){
阅读全文
posted @
2025-06-14 15:06
colorfulworld
阅读(81)
推荐(0)
mysql为什么不建议直接使用delete删除数据
摘要:不建议使用delete删除数据原因 1.软删除 所谓的软删除是指在表中添加一个例如isactive的字段,isactive=0表不可用,isactive=1表这条数据有效。所以可以通过update这个字段值而不是直接删除数据 2. 性能问题--行级锁 Delete/update/insert/sel
阅读全文
posted @
2025-06-14 09:14
colorfulworld
阅读(123)
推荐(0)