- 博客(31)
- 收藏
- 关注

原创 Spring Aop 源码分析实现原理(JDK动态代理)
Spring aop 源码分析实现原理(jdk动态代理)史上最长的Spring Aop源码讲解
2020-09-26 14:55:51
520
原创 【多图预警】使用Trae快速生成JNI工具类
最近在研究Tomcat吞吐量的计算,有一个功能需要实现:实时打印当前线程所使用的CPU核心。这个功能说难不难,就是需要通过JNI调用C++代码来获取当前线程使用的CPU核心信息。刚好字节也出了一个对标Cursor的编辑器-,恰巧我的Cursor试用也到期了🤣,而且Trae在测试期间免费使用并且也有着类似Cursor的Composer功能-Builder模式,试一下功能究竟如何。
2025-03-03 09:51:27
1181
原创 FunctionCallProcessor助你快速开发大模型业务
在实际使用过程中,方法的参数往往不止基本类型,还可能包含自定义对象。此时在自定义的类中,给属性标注上@Property也能解析出大模型所需的FunctionCall文本。比如现在有一个给员工发起请假流程的方法,需要传入请假时间理由假期类型天数等信息,就需要创建一个对象来承载这些信息了。@Property(desc = "请假时间")@Property(desc = "请假原因")@Property(desc = "请假类型")@Function(desc = "请假")
2025-01-06 10:31:00
797
原创 从零开始写游戏之斗地主-网络通信
到了这里,这一篇斗地主的网络通信就差不多写完了,就差往里面塞代码了。其中有一个非常严峻的问题等着我去做一个抉择,咱游戏的界面究竟要用啥技术呢?是Java的GUI呢还是常规的Web端呢?都是有待商榷的,好了,就说到这里了,下一篇文章再见!
2024-12-02 10:38:55
1060
原创 被抛弃的八股文之keep-alive
差异点TCPHTTP定义操作系统在TCP协议上添加的连接检测机制,用于检测连接状态HTTP请求头中的字段,表示复用同一条TCP连接功能检测TCP连接是否仍然有效,通过空闲时发送探测包来验证连接状态允许在同一TCP连接上发送多个HTTP请求,减少连接建立的开销是否为协议标准不是TCP协议的强制标准,且默认关闭协议的标准,默认开启。
2024-11-11 11:04:51
1025
原创 从零开始写游戏之斗地主-数据结构
最近看游戏直播的过程中,老是看到主播在玩欢乐斗地主。突发奇想,我能不能用Java写一个斗地主的游戏呢?说干就干!Java~~天下第一~~(开玩笑的)。
2024-09-02 10:11:55
573
原创 Netty系列之为什么Netty是网络编程的首选
Netty凭借其简洁的API设计、强大的功能和卓越的性能,成为了许多网络编程框架的首选,广泛应用于诸如Dubbo、RocketMQ等高性能分布式系统中。
2024-08-12 10:14:08
411
原创 用好Interceptor,你也能写一个MybatisPlus
利用好Interceptor,你就能在Mybatis执行SQL时做你想做的事情,但是呢,想写一个新的Mybtis-Plus还是不行的。因为Interceptor只能在执行SQL时进行拦截并处理,但是执行SQL前的一些准备工作就不太行了,比如实体类的解析、SQL的解析等等。但是也足够了,能够在我们工作当中处理大多数需求了。
2024-08-07 11:33:44
1577
原创 深入源码,探究#、$号替换符的区别
在Mybatis的日常使用过程中以及在一些技术论坛上我们都能常常听到,不要使用`$`符号来进行SQL的编写,要使用`#`符号,否则会有**SQL注入的风险**。那么,为什么在使用`$`符号时会有注入的风险呢,以及`#`号为什么不会有风险呢?这一期我们来从源码分析一下。
2024-07-08 09:57:47
944
1
原创 一次线上OOM问题的分析与解决
在周五晚上,突然收到公司系统告警信息,提示一个内部使用的在线文件浏览服务不可用了。收到这个消息之后,就先马上滚动重启了Pod,然后服务也可用了。
2024-06-28 10:25:37
732
原创 Mybatis的Cursor如何避免OOM异常
类型如何获取数据返回值是否关闭Statement、ResultSetCursor用户自行根据Cursor迭代器获取Cursor游标类型不关闭,需要一直持有普通搜索Mybatis内部操控JDBC指针,获取所有查询数据后返回。具体实体类型获取完数据后关闭。
2024-06-25 10:39:21
1234
原创 Mybatis缓存的生命周期、使用的特殊情况
以下场景均在Spring Boot程序中,并非手动创建SqlSession使用。在回答这个问题之前,我们先来回顾一下,Mybatis的一级二级缓存是啥。
2024-06-07 11:23:45
418
原创 一个开源的工具类轮子是怎么造出来的
在22年9月的某一天,在公司开需求评审时,接到了一个给PDF、图片添加水印的需求。做为一个刚工作的CURD程序员,在遇到这些问题时,第一反应是去github上找找有没有类似的开源
2024-05-23 10:21:19
915
1
原创 Redisson中分布式锁的实现原理
锁归根结底就是对同一资源的竞争抢夺,不管是在单体的应用亦或者集群的服务中,上锁都是对同一资源进行修改的操作。至于分布式锁,那就是多个服务器或资源,同时抢占某一单体应用的同个资源了。在本篇文章中,抢占的资源就是Redis中的某个Key了。
2024-05-14 10:17:09
550
1
原创 新版攻略-如何发布Java代码到中央仓库中
前两天打算发布自己的框架到maven仓库上,才发现从2024 年3月12日起之前OSSRH的发布方式已经不再支持新的仓库进行发布了,之后的代码发布只能使用新版的发布流程了。新版的发布步骤与旧版OSSRH类似,不过多了几个步骤而已。
2024-05-06 10:27:31
1276
原创 一个本地文件就能保证RocketMQ5中的定时消息不被丢失?
在RocketMQ5中实现了可控的定时消息,在保证定时消息的准时发送之余,RocketMQ还对定时消息的保存以及系统异常宕机下的特殊情况进行处理,保证消息的可靠性。
2024-04-01 10:09:26
733
原创 一文带你读懂RocketMQ5中定时消息实现原理
RocketMQ5中的定时消息使用起来虽然简单,但是在消息循环处理的过程中,涉及到了多个处理器对其进行处理。而且上面每一个Service都是一个单独的线程来进行处理,其中以及更是开了三个线程来同时处理。社区在讨论什么?下期预告:定时消息宕机时保存以及定时刷盘机制。
2024-03-25 10:23:04
1809
1
原创 深度探索RocketMQ5:定时消息新特性解析【上】
使用场景:在分布式定时调度触发、任务超时处理等场景,需要实现精准、可靠的定时事件触发。使用 Apache RocketMQ 的定时消息可以简化定时调度任务的开发逻辑,实现高性能、可扩展、高可靠的定时触发能力。(来源-官网介绍在RocketMQ5之前,并没有定时消息这个功能,只有延时消息这个类似定时消息但又不太像定时消息的功能。其中设定的延时时间只能从提供的18个定时级别中选择。RocketMQ在这个5.0这个大版本中全面拥抱云原生,在此场景下,也是支持了任意延迟时间的延迟消息功能。定时消息概述。
2024-03-25 10:19:11
989
2
原创 Cleaner:Java的一种新资源释放方式
在JDK9中新增了Cleaner类,该类的作用是用于替代finalize方法,更有效地释放资源并避免内存泄漏。
2024-03-05 18:13:04
1223
原创 【Java引用规范】虚引用以及引用队列
Java提供了四种引用类型:强引用、软引用、弱引用和虚引用。虚引用,作为这四种引用类型中最特殊的一种,主要用于跟踪对象被垃圾回收的状态。
2024-03-02 16:56:05
1045
原创 Xxl-Job定时任务调度失败的排查与解决
一次线上定时任务调度失败原因的排查,一步步地从调度中心到执行器,再到K8S中的Istio进行问题的排查。
2024-02-26 14:58:17
4120
1
原创 【ThreadLocal】实现原理
在上期,介绍了ThreadLocal的概述以及基本用法后,我们本期则研究一下ThreadLocal是怎么实现以及内部工作原理。
2024-02-06 11:26:47
1062
1
原创 【Java引用规范】强软引用
引用是Java中对对象进行操作的主要方式,通过引用,可以在程序中创建、访问和操作对象。你对于Java的引用了解多少呢?
2024-01-14 17:38:09
1087
1
原创 【ThreadLocal】概述与基本用法
在多线程程序中处理共享对象的并发问题的两种解决方案:时间换空间和空间换时间。引入了ThreadLocal类作为空间换时间的实现方式,以及其基本用法和API介绍。通过示例展示了如何在代码中使用ThreadLocal,确保每个线程都能独立访问自己的局部变量。
2024-01-09 18:24:19
405
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
263
原创 JVM基础知识
JVMjvm组成jvm内存结构Java堆 存放对象以及数组 线程共享程序计数器(pc) 来选取下一条需要执行的字节码指令本地方法栈 本地方法栈是为虚拟机调用 Native 方法服务的Java虚拟机栈 基本数据类型、对象的引用、局部变量,操作数栈,返回结果 线程私有方法区 存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据浅拷贝、深拷贝、浅复制、深复制浅拷贝
2021-08-04 22:41:31
111
原创 Arrays.sort底层排序算法
一直以来,我都认为Java内部排序的算法是快速排序。直到有一天,我在面经上看到了有一道这样子的问题。我才发觉,事情远没有我想的那么简单。
2021-07-30 16:52:57
977
原创 1.7-1.8 HashMap和ConcurrentHashMap底层源码解析
1.7和1.8的HashMap源码解析1.7和1.8的ConcurrentHashMap源码解析
2021-04-27 16:17:58
190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人