自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xujunson的博客

Write the code, Change the world!

  • 博客(113)
  • 收藏
  • 关注

原创 [Java并发与多线程]

Java多线程目录第一章 基本概念第二章 synchronized关键字第三章 线程等待与唤醒day day up!

2019-08-03 20:51:43 343

原创 [Spring框架]Spring事务原理-踩坑

实现IOC(控制反转)的三种方式1. IOC理论的背景下面通过具体的例子来说明:有三种方式:属性注入,构造器注入,自动装配。方式一. 属性注入(setter注入(IOC)这里感谢 CSDN 的原博客:https://blog.csdn.net/zhaoraolin/article/details/789410621. IOC理论的背景上文书说道:软件系统在没有引入IOC容器之前,如果对象A依...

2019-07-13 17:16:40 205

转载 你管这破玩意叫线程?

(1)操作系统:操作系统位于计算机硬件与应用软件之间,是一个协调、管理和控制计算机硬件资源和软件资源的控制程序,本质上也是软件。在程序执行的过程中,需要将其放入内存中之后才会被CPU所处理。早期的计算机中只支持单道程序,即一次只能有一个程序在内存中运行。内存被划分为程序段和数据段,程序段用于存放程序代码,数据段则用于存放程序中的数据。因为只有一个程序,所以很容易就能在内存中找到相应的程序段和内存段。只有当这个程序执行完毕,才能装入下一个程序。

2024-04-07 19:51:07 20

原创 JavaAgent 技术原理及实战

利用 javassist 对 Log 框架进行切面增强。利用 Spring 的拦截器技术实现了 Web 请求的 traceId 初始赋值。通过整合 dubbo SPI,结合 dubbox 调用拦截器,实现 traceId 的拦截及赋值。引入TransmittableThreadLocal 解决父子线程上下文传递的问题。

2024-03-31 18:06:11 907

原创 揭秘Java switch语句中的case穿透现象

在开始揭秘case穿透现象之前,我们先简单回顾一下switch语句的基本用法。switch语句用于根据变量的不同取值执行相应的代码块。// 执行代码块1break;// 执行代码块2break;...default:// 默认代码块switch case支持的6种数据类型:switch 表达式后面的数据类型只支持byte、short、int整形类型、字符类型char、枚举类型和java.lang.String类型。根据expression的值,程序会跳转到对应的case。

2023-10-29 12:55:47 733

原创 一文彻底弄懂ConcurrentHashMap

一文彻底弄懂ConcurrentHashMap

2022-10-06 10:05:00 2441 1

原创 HashMap 硬核 10 连问

HashMap 10 连问

2022-10-03 21:36:49 639

原创 一文弄懂 HashMap 中的位运算

位运算的奇淫技巧

2022-10-03 20:59:42 1116 1

原创 深入剖析 HashMap

深入理解 HashMap。

2022-10-03 20:32:57 737

原创 高频面试题:谈谈你对 Spring Boot 自动装配机制的理解

Spring Boot 自动装载原理解析

2022-09-12 21:00:18 3365 1

原创 Java 并发之 AQS 详解(下)

Java 并发之 AQS 详解

2022-09-04 20:56:07 351

原创 Java 并发之 AQS 详解(上)

Java 并发之 AQS 详解

2022-09-04 19:58:07 424

原创 消息队列常见问题整理

消息队列常见问题分析

2022-08-20 21:07:40 1129

原创 Java 线程池实现原理及实战

ThreadPoolExecutor万字详解

2022-08-07 17:45:23 509

原创 Spring AOP 通俗理解与应用

Spring AOP

2022-06-28 22:54:33 519

原创 设计模式之代理模式

设计模式之代理模式

2022-06-26 16:34:58 257

原创 位运算的秒用:异或运算

异或运算:实现两数交换

2022-06-12 13:46:37 348

原创 JVM 垃圾回收机制和常见的垃圾回收器

JVM 垃圾回收机制和常见的垃圾回收器

2022-06-05 16:51:34 408

转载 如何写出一篇好的技术方案?

如何写出一篇好的技术方案?

2022-06-02 10:00:51 219

原创 一张图看懂 JVM 之垃圾回收机制

一张图看懂JVM之垃圾回收机制导读什么是垃圾回收?哪些内存需要回收?如何判断对象已成垃圾?引用计数法可达性分析算法四种引用方式强引用软引用弱引用虚引用引用小结垃圾收集算法标记-清除算法标记-复制算法标记-整理算法分代收集算法分代收集理论为什么要分代?内存分代划分Eden 区Survivor 区为啥需要 Survivor 区?老年代(Old Gen)堆内存常见的分配策略对象优先在 Eden 区分配大对象直接进入老年代长期存活的对象将进入老年代总结有这样一个梗,说在食堂里吃饭,吃完把餐盘端走清理的,是 C++

2022-05-14 16:11:35 528

原创 面试官:讲讲什么是 JMM

讲讲什么是 JMM什么是 JMM?JMM 抽象:主内存与工作内存为什么需要 JMM,它试图解决什么问题?八种内存交互操作JMM 三大特征原子性可见性有序性volatile 关键字可见性volatile 一定能保证线程安全吗?Happen-before8 条 Happens-before 规则禁止指令重排序volatile 禁止指令重排序的原理是什么?内存屏障Load-Load BarriersLoad-Store BarriersStore-Store BarriersStore-Load Barriers

2022-05-03 15:57:11 1324

原创 读懂 JVM 内存管理这篇就够了

读懂 JVM 内存管理这篇就够了JVM 的内存结构程序计数器作用概述PC寄存器的常见问题虚拟机栈栈中可能出现的异常栈的存储单位栈运行原理栈帧的内部结构局部变量表槽 Slot操作数栈动态链接JVM 是如何执行方法调用的?方法返回地址(return address)附加信息本地方法栈堆内存划分对象在堆中的生命周期对象的分配过程元空间方法区对于方法区,Java8 之后的变化方法区内部结构类型信息域(Field)信息方法(Method)信息运行时常量池常量池运行时常量池参考与感谢Java 与 C++ 之间有一堵

2022-04-29 21:33:46 3436 2

原创 面试题:请介绍 JVM 类加载机制

JVM 类加载机制Java 代码执行流程类的生命周期加载验证准备解析初始化clinit 和 init 方法类加载的时机被动引用类加载器双亲委派机制我们在前面分析JVM架构解析的时候,简单介绍了 Java 类加载机制,本文带大家深入分析一下。Java 代码执行流程根据上图所示,Java 代码执行步骤如下:步骤 1: 获取 Java 源代码;步骤 2: 编译器把 java 文件转变成 class 文件。编译过程大致可以分为 1 个准备过程和 3 个处理过程:准备过程:初始化插入式注解处理器解

2022-04-23 16:17:08 2701

原创 一文读懂JVM架构解析

JVM 架构解析Java 架构JVMJVM是如何工作的?类加载器子系统运行时数据区执行引擎每个 Java 开发人员都知道字节码经由 JRE(Java运行时环境)执行。但他们或许不知道 JRE 其实是由 Java虚拟机(JVM)实现,JVM分析字节码,解释并执行它。作为开发人员,了解 JVM 的架构是非常重要的,因为它使我们能够编写出更高效的代码。本文中,我们将深入了解 Java 中的 JVM 架构和 JVM 的各个组件。首先我们介绍一下 JDK、JRE 以及 JVM 之间的关系。Java 架构J

2022-04-16 23:48:53 1878 1

原创 面试官:谈谈你对 Java 平台的理解

谈谈你对 Java 平台的理解参考回答知识点面向对象平台无关性JVM类加载机制垃圾回收异常处理面试的时候,经常会有面试官问:请你谈谈对 Java 平台的理解,「Java 是解释执行」,这句话正确吗?其实这个问题,问得有点笼统。题目本身是非常开放的,往往考察的是多个方面,比如,基础知识理解是否很清楚;是否掌握 Java 平台主要模块和运行原理等。个人认为,回答这类开放性问题的思路,可以从宏观的角度出发,从浅入深,由点到面。总的来说可以从如下几个方面来回答:面向对象:封装、继承、多态;平台无关性:

2022-04-10 11:19:20 984

原创 深入分析 MySQL 索引原理

深入分析 MySQL 索引原理索引结构B+ 树B+ 树索引结构索引维护InnoDB 的索引模型索引组织表回表覆盖索引联合索引最左前缀原则如何安排索引内的字段顺序索引下推总结谈到 MySQL 索引,服务端的同学应该是再熟悉不过,很多人会通过索引联想到字典中的目录,这样的类比是很形象的。但是如果再往深处说,恐怕很多小伙伴就有点张口结舌了。比如 MySQL 索引都有哪些类型呢?索引结构是什么样的呢?有了索引是如何检索数据的呢?本文就围绕这些问题来探讨一下MySQL 索引的实现原理。本文篇幅稍微有点长,希

2022-04-06 22:13:26 1117

原创 二叉树基础知识

二叉树基础知识概述5 种基本形态特殊的二叉树满二叉树完全二叉树术语术语解释节点节点的度叶子节点分支节点树的度节点的层次二叉树性质性质1性质2性质3性质4性质5常见的三种遍历代码实现二叉树遍历我们在 MySQL 为什么用 B+ 树实现索引 提到了二叉树的相关知识,本文就来详细分析一下二叉树。概述维基百科定义:在计算机科学中,二叉树(英语:Binary tree)是每个节点最多只有两个分支(即不存在分支度大于2 的节点)的树结构。通常分支被称作 “左子树” 或 “右子树”。二叉树的分支具有左右次序,不

2022-03-26 19:07:06 1441

原创 面试官:MySQL 为什么用 B+ 树实现索引

MySQL 为什么用 B+ 树实现索引索引概述常见的索引模型哈希表有序数组二叉查找树二叉查找树的查找操作二叉查找树的缺陷为什么索引不用二叉树实现InnoDB 的索引模型B 树B 树存在的问题B+ 树B 树 和 B+ 树 的区别总结索引对大家来说肯定不会陌生,不管是日常的开发还是面试中,都少不了索引的身影。我们都会使用索引,但是我们对于索引的原理却是一知半解。本文就带大家深入学习一下 MySQL 的索引模型。索引概述关于索引的定义,百度百科给出的解释是:在关系数据库中,索引是一种单独的、物理的对数

2022-03-19 16:10:07 4930 5

原创 一文读懂 MySQL 事务隔离机制

MySQL 事务隔离机制隔离性与隔离级别四个案例看懂 MySQL 事务隔离级别查看隔离级别READ_UNCOMMITTED脏读不可重复读幻读READ_COMMITTEDREPEATABLE_READSERIALIZABLE事务隔离的实现总结提到事务,大家肯定不陌生。最经典的例子就是银行转账。比如,A 账户给 B 账户转账 100。在这种交易的过程中,有几个问题值得思考:如何同时保证上述交易中,A 账户总金额减少 100,B账户总金额增加 100?A 账户如果同时在和 C 账户交易(T2),如何让这

2022-03-12 14:58:07 1392

原创 通过一条更新语句的执行,深入理解 InnoDB 的底层架构

通过一条更新语句的执行,深入理解 InnoDB 的底层架构InnoDBInnoDB 重要的内存结构Buffer PoolRedo LogRedo Log 的基本概念Redo LogUndo Log更新语句的执行流程Change BufferBinlogBinlog 日志格式MySQL 为什么会有两份日志binlog 和 redo log 的区别执行器和 InnoDB 引擎执行 update 语句时的内部流程两阶段提交总结前面通过 一条查询SQL的执行过程 我们知道了 MySQL 的整体架构。对一条查询 S

2022-02-27 21:39:48 782

原创 面试官:说说一条查询SQL的执行过程

一条查询语句是如何执行的?MySQL 的架构分层MySQL组件定义连接器长链接的问题查询缓存分析器词法分析语法分析优化器执行器总结本文和大家一起讨论查询语句在 MySQL 中的执行过程。为了理解这个问题,我们先从 MySQL 的架构说起,对于 MySQL 来说,虽然经历了多个版本迭代,但每次的迭代,都是基于 MySQL 基架的。下面我们开始分析下 MySQL 的架构体系。MySQL 的架构分层MySQL 大致可以分为 3 层架构,如下图:第一层客户端,主要负责与 MySQL Server 层建

2022-02-19 21:48:31 3852

原创 【超硬核】一文打尽 Redis 核心技术

Redis 核心技术前言基础篇Redis 特性Redis 的数据结构以及数据类型Redis 键和值用什么结构组织?Redis 为什么不使用多线程?单线程 Redis 为什么那么快?Redis 单线程处理 IO 请求性能瓶颈Redis 持久化机制Redis 高可用之主从模式主从模式常见的问题复制缓冲区(replication buffer) 和 复制积压缓冲区(repl_backlog_buffer) 的区别为什么主从库间的复制不使用 AOF 呢?Redis 高可用之哨兵集群Redis 集群Redis 集群数

2022-02-12 23:06:18 1268

原创 Redis 高可用之切片集群

Redis 高可用之切片集群前言如何保存更多数据?Redis 集群搭建 Redis 集群数据切片和实例的对应分布关系哈希槽与 Redis 实例映射客户端如何定位数据?计算键属于哪个槽判断槽是否由当前节点负责处理MOVED 错误重新分片ASK 错误ASK 和 MOVED 的区别复制与故障转移故障检测故障转移选主消息前言【正值春节之际,祝各位新的一年,身体康健,大吉大利。】我们在前面的文章里分析了几种 Redis 高可用性的解决方案。包括:「主从模式」、「哨兵机制」以及「哨兵集群」。「主从模式」具有读

2022-01-26 22:20:08 2200

原创 Redis 高可用之哨兵集群

Redis 高可用之哨兵集群前言哨兵集群启动并初始化 Sentinel初始化 Sentinel 状态初始化Sentinel监视的主服务器列表创建连向主服务器的网络连接获取主服务器信息获取从服务器信息创建Sentinel之间的网络连接向主从服务器发送信息接收主从服务器的频道信息Sentinel 的工作原理检测主观下线状态检测客观下线选举领头Sentinel由哪个哨兵执行主从切换?故障转移前言我们在前面的文章中分析了Redis 集群之主从模式。主从复制奠定了 Redis 分布式的基础,但是普通的主从复制并

2022-01-10 22:00:24 485

原创 Redis 高可用之哨兵机制

Redis 高可用之哨兵机制主库挂了,如何不间断服务?哨兵机制获取主服务器信息哨兵机制的基本流程监控主观下线和客观下线误判如何减少误判?如何选定新主库?筛选条件打分通知主库挂了,如何不间断服务?在前面的文章中,我们分析了 Redis 主从模式。在这个模式下,如果从库发生故障,客户端可以继续向主库或其他从库发送请求,进行相关的操作。但是如果主库发生故障了,那直接就影响到从库的同步,因为从库没有相应的主库可以进行数据复制操作了。如果说,客户端发送的都是读操作请求,那还可以由从库继续提供服务,这在纯读的业

2022-01-02 21:18:01 678

原创 Redis 集群之主从模式

Redis 集群之主从模式如何保证 Redis 的可靠性Redis 主从模式为什么要采用读写分离的方式呢?主从库间如何进行第一次同步?从节点配置第一阶段第二阶段第三阶段PSYN2.0「主从级联模式」分担全量复制时的主库压力"主 - 从 - 从"模式主从库间网络断了怎么办?如何避免增量复制失效replication_buffer 与replication_backlog_bufferreplication_bufferreplication_backlog_buffer如何保证 Redis 的可靠性我们在

2021-12-25 22:06:22 2111

原创 Redis 的内存淘汰机制,看这篇就够了。

缓存数据的淘汰机制缓存满了怎么办

2021-12-12 17:00:52 5166 1

原创 解决缓存和数据库双写数据一致性问题

解决缓存和数据库双写数据一致性问题缓存的作用缓存和数据库双写不一致的原因并发引发的一致性问题先更新数据库,后更新缓存先删除缓存,后更新数据库先更新数据库,后删除缓存如何保证「第二步操作失败」的双写一致?基于消息队列的重试机制如何保证并发场景下的数据一致性总结缓存的作用在公司刚起步,业务量比较小的时候。对于系统的读写请求,我们一般的做法都是直接操作数据库。但是随着业务体量的不断增长,用户请求增多,这时候只用数据库处理业务是不够的,存在着性能问题。业内通用做法就是引入「缓存」。缓存可以提升性能,缓解数据库

2021-12-09 23:38:34 6183 6

原创 面试官:Redis 事务完全保证 ACID 么?

Redis事务机制ACID

2021-11-20 17:05:48 1764 4

原创 一文读懂Redis持久化机制

一文读懂Redis持久化机制

2021-11-16 00:18:31 1515

空空如也

空空如也

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

TA关注的人

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