自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Aop 源码分析实现原理(JDK动态代理)

Spring aop 源码分析实现原理(jdk动态代理)史上最长的Spring Aop源码讲解

2020-09-26 14:55:51 431

原创 深入源码,探究#、$号替换符的区别

在Mybatis的日常使用过程中以及在一些技术论坛上我们都能常常听到,不要使用`$`符号来进行SQL的编写,要使用`#`符号,否则会有**SQL注入的风险**。那么,为什么在使用`$`符号时会有注入的风险呢,以及`#`号为什么不会有风险呢?这一期我们来从源码分析一下。

2024-07-08 09:57:47 842 1

原创 一次线上OOM问题的分析与解决

在周五晚上,突然收到公司系统告警信息,提示一个内部使用的在线文件浏览服务不可用了。收到这个消息之后,就先马上滚动重启了Pod,然后服务也可用了。

2024-06-28 10:25:37 630

原创 Mybatis的Cursor如何避免OOM异常

类型如何获取数据返回值是否关闭Statement、ResultSetCursor用户自行根据Cursor迭代器获取Cursor游标类型不关闭,需要一直持有普通搜索Mybatis内部操控JDBC指针,获取所有查询数据后返回。具体实体类型获取完数据后关闭。

2024-06-25 10:39:21 801

原创 Mybatis缓存的生命周期、使用的特殊情况

以下场景均在Spring Boot程序中,并非手动创建SqlSession使用。在回答这个问题之前,我们先来回顾一下,Mybatis的一级二级缓存是啥。

2024-06-07 11:23:45 354

原创 一个开源的工具类轮子是怎么造出来的

在22年9月的某一天,在公司开需求评审时,接到了一个给PDF、图片添加水印的需求。做为一个刚工作的CURD程序员,在遇到这些问题时,第一反应是去github上找找有没有类似的开源

2024-05-23 10:21:19 856 1

原创 Redisson中分布式锁的实现原理

锁归根结底就是对同一资源的竞争抢夺,不管是在单体的应用亦或者集群的服务中,上锁都是对同一资源进行修改的操作。至于分布式锁,那就是多个服务器或资源,同时抢占某一单体应用的同个资源了。在本篇文章中,抢占的资源就是Redis中的某个Key了。

2024-05-14 10:17:09 448 1

原创 新版攻略-如何发布Java代码到中央仓库中

前两天打算发布自己的框架到maven仓库上,才发现从2024 年3月12日起之前OSSRH的发布方式已经不再支持新的仓库进行发布了,之后的代码发布只能使用新版的发布流程了。新版的发布步骤与旧版OSSRH类似,不过多了几个步骤而已。

2024-05-06 10:27:31 1184

原创 一个本地文件就能保证RocketMQ5中的定时消息不被丢失?

在RocketMQ5中实现了可控的定时消息,在保证定时消息的准时发送之余,RocketMQ还对定时消息的保存以及系统异常宕机下的特殊情况进行处理,保证消息的可靠性。

2024-04-01 10:09:26 648

原创 一文带你读懂RocketMQ5中定时消息实现原理

RocketMQ5中的定时消息使用起来虽然简单,但是在消息循环处理的过程中,涉及到了多个处理器对其进行处理。而且上面每一个Service都是一个单独的线程来进行处理,其中以及更是开了三个线程来同时处理。社区在讨论什么?下期预告:定时消息宕机时保存以及定时刷盘机制。

2024-03-25 10:23:04 1390 1

原创 深度探索RocketMQ5:定时消息新特性解析【上】

使用场景:在分布式定时调度触发、任务超时处理等场景,需要实现精准、可靠的定时事件触发。使用 Apache RocketMQ 的定时消息可以简化定时调度任务的开发逻辑,实现高性能、可扩展、高可靠的定时触发能力。(来源-官网介绍在RocketMQ5之前,并没有定时消息这个功能,只有延时消息这个类似定时消息但又不太像定时消息的功能。其中设定的延时时间只能从提供的18个定时级别中选择。RocketMQ在这个5.0这个大版本中全面拥抱云原生,在此场景下,也是支持了任意延迟时间的延迟消息功能。定时消息概述。

2024-03-25 10:19:11 760 2

原创 Cleaner:Java的一种新资源释放方式

在JDK9中新增了Cleaner类,该类的作用是用于替代finalize方法,更有效地释放资源并避免内存泄漏。

2024-03-05 18:13:04 856

原创 【Java引用规范】虚引用以及引用队列

Java提供了四种引用类型:强引用、软引用、弱引用和虚引用。虚引用,作为这四种引用类型中最特殊的一种,主要用于跟踪对象被垃圾回收的状态。

2024-03-02 16:56:05 890

原创 Xxl-Job定时任务调度失败的排查与解决

一次线上定时任务调度失败原因的排查,一步步地从调度中心到执行器,再到K8S中的Istio进行问题的排查。

2024-02-26 14:58:17 3023 1

原创 【ThreadLocal】实现原理

在上期,介绍了ThreadLocal的概述以及基本用法后,我们本期则研究一下ThreadLocal是怎么实现以及内部工作原理。

2024-02-06 11:26:47 821 1

原创 【Java引用规范】弱引用

在上一节,我们介绍了强软引用。在这期,从内存变动趋势图以及内存快照中研究GC怎么特殊处理弱引用的。

2024-01-22 10:18:33 548

原创 【Java引用规范】强软引用

引用是Java中对对象进行操作的主要方式,通过引用,可以在程序中创建、访问和操作对象。你对于Java的引用了解多少呢?

2024-01-14 17:38:09 999 1

原创 【ThreadLocal】概述与基本用法

在多线程程序中处理共享对象的并发问题的两种解决方案:时间换空间和空间换时间。引入了ThreadLocal类作为空间换时间的实现方式,以及其基本用法和API介绍。通过示例展示了如何在代码中使用ThreadLocal,确保每个线程都能独立访问自己的局部变量。

2024-01-09 18:24:19 348

原创 ChatGPT介绍

ChatGPT介绍、gpt前世今生

2023-07-07 18:12:09 1235 1

原创 ReentrantLock锁底层实现

ReentrantLock锁synchronized 倒序唤醒 EntryList JVM 底层C++实现ReentrantLock 顺序唤醒 Java实现都是双向链表上锁private volatile int state; //锁状态,加锁成功则为1,重入+1 解锁则为0非公平锁 直接尝试能不能设置状态,可以就直接占用,否则就等待锁 final void lock() { if (compareAndSetState(0, 1))

2021-08-08 12:10:14 201

原创 JVM基础知识

JVMjvm组成jvm内存结构Java堆 存放对象以及数组 线程共享程序计数器(pc) 来选取下一条需要执行的字节码指令本地方法栈 本地方法栈是为虚拟机调用 Native 方法服务的Java虚拟机栈 基本数据类型、对象的引用、局部变量,操作数栈,返回结果 线程私有方法区 存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据浅拷贝、深拷贝、浅复制、深复制浅拷贝

2021-08-04 22:41:31 78

原创 Arrays.sort底层排序算法

一直以来,我都认为Java内部排序的算法是快速排序。直到有一天,我在面经上看到了有一道这样子的问题。我才发觉,事情远没有我想的那么简单。

2021-07-30 16:52:57 881

原创 1.7-1.8 HashMap和ConcurrentHashMap底层源码解析

1.7和1.8的HashMap源码解析1.7和1.8的ConcurrentHashMap源码解析

2021-04-27 16:17:58 151

原创 Spring 扫描原理源码分析

Spring 扫描原理源码分析

2020-08-13 00:23:53 734

空空如也

空空如也

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

TA关注的人

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