自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Redis底层数据结构实现

当我们向压缩列表插入数据的时候,压缩列表会根据数据类型是字符串还是整数,以及数据的大小,会使用不同空间大小的prevlen和encoding这两个元素里保存的信息,这种根据数据大小和数据类型进行不同的空间分配的设计思想 ,目的是为了节省内存。整数集合会有一个升级规则,就是当我们将一个新元素加入到整数集合里面,如果新元素类型比整数集合现有所有元素类型都要长的时候,整数集合就会进行升级,也就是按新的元素类型来扩展当前元素的大小,然后再把新元素加入到整数集合中。跳表相邻两层节点数量的比例会影响跳表的查询性能。

2025-03-28 21:46:46 1061

原创 MySQL执行计划分析

执行计划就是一条SQL语句在经过MySQL查询优化器优化之后,具体的执行方式。执行计划通常用于SQL性能查询,优化等场景。可以通过EXPLAN命令,查看一条SQL的具体执行信息。

2025-03-26 22:19:52 899

原创 MySQL锁

如果查询的记录存在:由于索引不唯一,肯定存在相同的记录,在扫描到的符合条件的二级索引加next-key lock,对于第一个不符合条件的二级索引记录,该二级索引记录的next-key lock会退化成间隙锁。由于存在两个索引,主键索引和非唯一索引,所以加锁的时候,会同时对两个索引加锁,但是对主键索引加锁的时候,只有满足查询条件的记录才会加锁。如果查询的记录不存在:扫描到的第一个不符合条件的非唯一索引记录,该索引的next-key lock会退化成间隙锁,不会对主键加锁。求职者:你录用我,我就告诉你。

2025-03-26 22:16:47 903

原创 Redis持久化机制

Redis使用写时复制技术,在执行bgsave的时候,会先fork子进程,然后子进程和父进程共享一块内存区域,但是,如果父进程对这些共享数据中的某块数据进行写操作的时候,就复制一块数据副本,主线程会在这个数据副本进行修改操作。fork出来的子进程会将主线程共享的内存数据以RDB方式写入AOF文件,然后将AOF重写期间执行的操作命令写入重写缓存区里,然后再把重写缓冲区的命令写如到AOF文件,写入完成之后通知主进程将含有RDB信息和AOF信息的AOF文件替换成旧的AOF文件。实际执行的是bgsave。

2025-03-26 18:58:58 331

原创 从数据库角度看B+Tree,B+Tree相关面试题

InnoDB的数据是按照页进行存取的。每页默认大小是16KB,每个数据页之间通过双向链表的形式组织起来。页内的记录通过单向链表按照主键递增连接。B+Tree的每个节点就是一个页(数据页和索引页)。MySQL表数据量不超过2000w行,是因为超过2000w之后,B+Tree的高度可能会更高(3层到4层),数据库I/O次数就会更多,影响查询性能。

2025-03-24 22:42:16 223

原创 MySQL索引相关面试题

索引就是帮我们快速查找的一种数据结构。形象的说就是索引就是数据库的目录。索引位于存储引擎中。前缀索引是对字符类型字段的前几个字符建立的索引,而不是整个字段。将多个字段组合成一个索引。联合索引遵循最左匹配原则,B+tree的节点存储的是联合索引的字段。先按照左边第一个字段进行比较,如果相同,再按照左边第二个字段进行比较,以此类推。如果不遵循最左匹配原则,索引就会失效。注意,因为有查询优化器,a字段在where子句的顺序不重要。上面的索引都会生效。就会索引失效。

2025-03-24 20:01:44 329

原创 Java内存区域

程序计数器是一块较小的空间,可以看作是当前线程所执行的字节码的行号计数器。字节码解释器工作的时候通过改变这个计数器的值来选取下一条所需执行的字节码指令。程序计数器是唯一不会出现的内存区域,随着线程创建而创建,线程消亡而消亡。和程序计数器一样,Java虚拟机栈也是线程私有的,它的生命周期和线程相同,随着线程创建而创建,线程消亡而消亡。除了一些本地方法是通过本地方法栈实现的,其它所有方法调用都是通过栈实现的。方法调用的数据通过栈传递,称为压栈。每个方法调用结束之后,都有一个栈帧弹出。栈由一个个栈帧。

2025-03-23 13:00:18 732

原创 Java+Redisson封装高效的幂等性组件,简单易用

*幂等(Idempotent)**是一个数学和计算机科学中的概念,主要描述的是一种属性,即一个操作可以被多次应用,但结果仍然保持不变。在数学中,幂等通常用于描述某些运算或函数的特性。例如,对于单目运算,如果一个运算对于在范围内的所有数,多次进行该运算所得的结果和进行一次该运算所得的结果相同,那么该运算就是幂等的。在双目运算中,如果当参与运算的两个值是等值的情况下,运算结果与参与运算的两个值相等,那么该运算也是幂等的。

2025-03-18 00:49:50 154

原创 MySQL日志八股

Statement直接记录原sql,Row模式会记录具体的变更的信息,Mixed模式是两者混合,MySQL5.7.7之后默认是Row模式。

2025-03-17 21:53:13 737

原创 Java集合面试八股

Java集合面试八股

2025-03-15 00:07:14 607

原创 JAVA基础面试八股

JAVA基础八股

2025-03-15 00:04:36 668

原创 建造者模式

建造者模式中,有三个重要的角色:创建者、构建工具包、物料。

2025-02-27 12:28:50 264

原创 直接在命令行中使用的翻译工具,不用每次打开浏览器翻译了

private static final String SECURITY_KEY = “你的百度密钥”;private static final String APP_ID = “你的百度appid”;// 在百度翻译开发平台申请的APP ID和密钥。java “中文/英文” zh/en。

2025-01-15 23:06:52 224

原创 雪花算法详解及利用Redis生成分布式ID

SnowFlake算法是Twitter开源的分布式ID生成算法。核心思想就是:使用一个64 bit的 long 型的数字作为全局唯一ID。算法中还引入了时间戳,基本上保证了自增特性。其特点是将64位的long型ID分为四个部分,分别为:时间戳、机器ID和序列号,详情查看结构图1个bit41个bit10个bit12个bit特点优点缺点注意。

2025-01-11 19:22:39 960

原创 Redis缓存击穿解决方案

Redis缓存击穿解决方案,封装缓存工具类

2024-12-31 14:43:12 218

原创 第一章 容器与Bean

Spring 源码阅读系列:容器与Bean

2024-12-29 13:57:51 1063

原创 JAVAEE简单HTTP服务器

if (header.isEmpty()) { // 读取到空行时, HTTP Header读取完毕。// 空行标识Header和Body的分隔。* @Description http 服务器。

2024-10-14 11:17:53 346

原创 OpenMP并行编程

OpenMP是一个编译器指令和库函数的集合,主要是为共享式存储计算机上的并行程序设计使用的。目前支持OpenMP的语言主要有Fortran,C/C++。

2024-10-13 12:22:31 1226

原创 SpringCloud个人笔记

Between | 是某两个时间点之前的请求 | - Between=2037-01-20T17:42:47.789-07:00[America/Denver], 2037-01-21T17:42:47.789-07:00[America/Denver] || **名称** | **说明** | **示例** |

2024-09-28 15:35:13 1062 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除