KT's 小站
02
28
跳表skipList解析 跳表skipList解析
1. 前言面试的时候问了这些。所以要弄清楚具体的查询过程,以及跳表的结构,还有实现利用 ZSET 实现排行榜是怎么从跳表上获取元素的。怎么获取某个数据的名次。 老规矩,先来一个对整体的大概了解。 跳表的结构,多层链表,链表节点中有多个指
2024-02-28
24
如果不用Cookie怎么统计uv呢 如果不用Cookie怎么统计uv呢
如题,面试的时候问了这个问题,我当时没想好解决方案,事后就思考了一下。 怎么不用 Cookie 来统计 uv. 就在这猜测一下吧,思考过程: 如果不用 cookie,那就说明用 session 也不行,因为 session 也是需要依赖
2024-02-24 KTpro
24
24
联合索引进行的范围查询为什么会导致索引失效 联合索引进行的范围查询为什么会导致索引失效
也是面试问的,由于不够深入底层存储结构,导致对索引的理解不够深刻。加入了 TODO,准备好好的解析底层结构。 自己想的范围查询过程貌似差不多对了。但是没说清楚索引失效原因,补充一下。 到底为什么失效呢比如有三个字段,A=, B&g
2024-02-24 KTpro
18
消息队列怎么保证消息不丢失的 消息队列怎么保证消息不丢失的
#task 消息队列怎么保证消息不丢失的 ✅ 2024-02-18 为什么会发生消息丢失可能因为网络问题导致消息丢失,以及存储时消息队列宕机了等情况。具体发生位置如下。 还是画个简单的流程图吧,比较清晰: 如何解决可以从生产者、消息队
2024-02-18
17
为什么要引入消息队列之异步削峰解耦 为什么要引入消息队列之异步削峰解耦
消息队列其实就是用一个队列存储消息,我们可以从中获取消息并处理。 1. 消息队列的三大用处异步、削峰、解耦。 异步处理提高系统性能(减少响应时间) 削峰:就是限流 解耦:降低系统耦合性,更好维护,拓展性更高 1.1. 异步 为什么要
17
对Synchronized锁升级,锁消除的理解 对Synchronized锁升级,锁消除的理解
前言Synchronized 锁升级放下这么久了,今天打算好好学一下。主要方式是通过读《Java 并发编程的艺术》来进行学习。 Synchronized 锁状态共分为无锁、偏向锁、轻量级锁以及重量级锁。锁一旦升级就不能进行降级。 先从 Sy
2024-02-17
14
为什么说线程创建的方式只有一种 为什么说线程创建的方式只有一种
线程创建的方式说是有四种, 但是实际上只有一种创建方式. 为什么? 因为不管是 Callable 还是线程池创建线程, 看它们的实现方式或者说底层源码,其本质上都是通过创建 Thread 对象来实现真正的创建线程. 而实现 Runable
2024-02-14 KTpro
14
ThreadLocal的应用--用户信息上下文记录 ThreadLocal的应用--用户信息上下文记录
就拿用户上下文信息保存来说。 场景: 现在有一个场景,客户端请求新建一个短链接的分组,用户只需要输入一个分组名,然后确认即可创建分组。(全局唯一的分组 ID 这些都是由后端进行处理的)。如下请求: 而且,我们分组和用户名要进行关联,不然我们
2024-02-14 KTpro
08
对Redolog持久化的底层理解 对Redolog持久化的底层理解
前言RedoLog 如何保证事务特性中的持久性的,之前学习的是只知道是缓存中更新数据,然后刷新到磁盘,这个过程中也知道借助了 Redolog 来实现,但是不知道更细节的层面,比如存储引擎数据页层面。 所以呢就补充了一点内容记录一下。 1.
2024-02-08
04
Session的工作原理以及实操 Session的工作原理以及实操
原理Session 依赖于 Cookie。 当客户端首次访问服务器时,服务器会为其创建一个 session 对象,该对象具有一个唯一标识 SESSIONID。并且在响应阶段,服务器会创建一个 cookie,并将 SESSIONID 存入其
2024-02-04 KTpro