- 博客(34)
- 收藏
- 关注
原创 Java21虚拟线程原理解析
虚拟线程是Java19中作为预览功能提出,21中正式完成的轻量级线程。旨在减少编写易于观察的高吞吐量的并发程序的工作量。
2025-03-31 19:08:32
383
原创 Spring源码探析(三):ApplicationStartingEvent事件发布
SpringBoot启动源码解析,ApplicationStartingEvent事件处理逻辑。
2025-03-11 16:08:37
328
原创 Spring源码探析(二):BootstrapContext初始化深度解析(默认配置文件加密实现原理)
BootstrapContext源码解析,配置文件加密实现原理。
2025-03-09 16:03:04
422
原创 Spring源码探析(一):SpringApplication构造函数核心逻辑
作为Spring Boot应用启动的核心入口,SpringApplication.run()方法承载着从环境准备到上下文初始化的全流程控制,而SpringApplication的构造函数则是这一流程的基石。通过解析其构造逻辑,可深入理解Spring Boot如何根据主配置类推断应用类型、加载初始化组件,并为后续的自动装配和上下文构建奠定基础。接下来将以该项目中ExcelApplication类开启Spring源码解析之旅。
2025-03-06 17:27:05
281
原创 SpringBoot整合FastExcel(EasyExcel)实战:国际化+时区适配的百万级批量导入/导出最佳实践
基于FastExcel提供常用批量导出,导入功能。支持自定义列,排序,自定义导入,国际化,时区等相关功能的支持。对于还在使用EasyExcel的可以将api进行调整使用。
2025-03-03 16:59:13
861
原创 从反射到字节码:Java22 ClassFile API在Bean属性访问与拷贝中的降维打击
通过java新特性ClassFile Api实现高性能的Bean属性访问以及Bean对象之间的属性复制。方便动态获取类中属性。
2025-03-01 21:30:59
238
原创 SpringBoot手写动态数据源实战:基于ThreadLocal与AOP的事务级多库无缝切换实践
实现数据源切换,健康检查,Spring事务等功能的一个简单易用的动态数据源
2025-02-27 21:33:43
287
原创 Disruptor无锁环形队列实战:实现多主题事件发布订阅模型
基于Disruptor - 高性能内存消息传递系统的事件发布订阅,简单调用即可享受高性能异步任务。
2025-02-26 21:49:55
385
原创 Spring 6 HttpExchange自动装配与Nacos微服务负载均衡深度整合
Spring新特性,HttpExchange的自定注入以及服务发现等功能的实现
2025-02-25 21:33:57
466
原创 SpringBoot实现接口的RSA和AES加解密
RSA加密和AES加密使用了hutool工具包依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.13</version></dependency>加解密工具类public class EncryptionUtil { // rsa秘钥
2021-12-30 11:28:12
2011
3
原创 JavaCV实现视频抽帧 JFrame字符动画
本文实现对视频进行抽帧,将视频图片转换成字符图片,在使用JFrame实现图片的连续播放。javaCV实现对视频进行抽帧 <!-- 首先引入javaCv的相关依赖 --> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>1.
2021-12-16 11:46:08
2999
4
原创 SpringWeb使用protostuff进行对象序列化
protobuf是Google推出的一种高效的序列化对象的方式,protostuff是基于protobuf的更容易使用的JAVA工具包。更加方便实现对象的序列化和反序列化。代码如下: <!-- 引入依赖 --> <dependency> <groupId>io.protostuff</groupId> <artifactId>protostuff-runtime</artifactId
2021-12-07 14:29:34
936
原创 Java将图片绘制成字符图
使用java将图片转换成字符图片带颜色的LOVE无序布满字符图:带颜色的LOVE有序布满字符图:效果差不多就这些,贴上代码public static void main(String[] args) throws Exception { // 使用字符来绘制图像的原理:(个人理解,可能不是很正确) // 就是把一张图片的每个像
2021-12-04 15:45:02
766
原创 JAVA实现命令行操作,动态加载类以及Groovy脚本
一丶命令行// 执行命令行操作 ProcessBuilder processBuilder = new ProcessBuilder("ipconfig"); processBuilder.redirectErrorStream(true); try { Process start = processBuilder.start(); // 读取执行结果 BufferedReader bu
2021-11-24 11:51:11
956
原创 Spring实现扫描接口进行动态代理
本文实现扫描对应包下接口,使用JDK动态代理进行接口代理一丶JDK动态代理的接口/** * 该注解标志需要代理的接口,类似mybatis的@Mapper注解,也可以扫描的时候扫描所有接口,不进行筛选 */@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)public @interface DemoRegistry {}/** * 进行动态代理的接口,@DemoRegistry代表筛选的条件 */@DemoRegi
2021-11-23 11:41:34
686
1
原创 Spring Batch实现批处理
本文实现解析csv格式文件,插入数据到数据库,Spring Batch概念请自行查找一丶Spring Batch配置spring: batch: job: # 自动执行批处理 enabled: false jdbc: # 是否执行sql初始化脚本,always每次启动都执行sql脚本,表存在的时候会报错,程序中把异常隐藏了,debug日志可见 initialize-schema: always # 数据库连接配置 dat
2021-11-22 16:36:36
809
原创 JAVA百度brpc线程池
brpc线程池相关一丶brpc中的线程工厂二丶队列三丶线程池实现一丶brpc中的线程工厂public class CustomThreadFactory implements ThreadFactory { /** * 自定义的线程工厂 主要是创建守护线程和使用netty的FastThreadLocalThread */ private AtomicInteger threadNumber = new AtomicInteger(1); private S
2021-09-18 16:12:32
589
原创 JDK动态代理 cgLib动态代理 java agent
动态代理一丶JDK动态代理二丶CGLIB动态代理三丶JAVA agent一丶JDK动态代理/** * 被代理接口(JDK动态代理必须有接口) * * @author hujun * @date 2021/09/11 */public interface ProxiedInterface { void sayHello(); void sayBye();}
2021-09-16 17:56:08
321
原创 JAVA实现冒泡排序,计数排序,选择排序,插入排序,希尔排序,快速排序,归并排序,基数排序,堆排序
文章目录一.冒泡排序二.计数排序一.冒泡排序原理:从数组中第一个元素开始,将它与它的下一位元素进行比较大小,如果大于,就交换两个元素的位置,在继续从第二个元素开始执行相同操作。直到数组遍历完成,第一轮结束,然后重复数组长度-1轮,执行相同的操作。JAVA代码:public static void bubbleSort(int[] arr) { // 定义一个定时变量,用来进行交换 ...
2020-02-25 18:52:22
492
原创 二叉树,顺序存储二叉树,线索化二叉树,二叉排序树,AVL树,赫夫曼树(文件压缩,解压)
文章目录二叉树二叉树的三种遍历方式顺序存储二叉树线索化二叉树二叉排序树二叉树二叉树:每个节点最多只用两个节点的树。二叉树的三种遍历方式前序遍历:先找到根节点,然后左节点,最后右节点。中序遍历:先左节点,根节点,右节点。后序遍历:先左节点,右节点,根节点。JAVA代码实现:// 创建节点@Dataclass Node { // 存储数据 private int no;...
2020-02-17 12:09:21
545
5
原创 死亡8皇后-Jquery实现
死亡八皇后国际象棋中有一个棋子叫皇后,他可以对自己米字范围内的所有敌方棋子进攻,也就是所在行所在列所在对角线上不能有重复的棋子,放满八个即为游戏胜利。游戏页面:当放满八个人物棋子,既可以通关游戏。HTML页面:<html> <head> <meta charset="utf-8"> <title></title> ...
2020-02-14 20:16:53
469
原创 哈希表的实现
哈希表:数组+链表实现的数据结构。简单实用单向链表来模拟实现JAVA代码实现:// 自定义结点class Node { // 模拟存放的数据 int id; String name; // 指向下一个结点 Node next; public Node(int id, String name) { super(); th...
2020-02-13 10:33:29
164
原创 二分查找算法,插值查找,斐波那契查找
文章目录二分查找插值查找斐波那契查找二分查找原理:给定一个有序的数组,每次从中间开始查找,判断查找的val与中间值的比较,大于继续向后查找,小于向前查找。步骤:得到一个有序的数组。计算中间索引,mid = (left + right)/ 2与待查找的值进行比较,相等返回mid。不相等,向左或向右重复2,3步。JAVA代码实现:/** * 二分查找 * * @pa...
2020-02-12 15:08:20
329
原创 链表和递归解决死亡八皇后和迷宫问题
单向链表实现思路:创建一个Node结点,有data和next结点。创建一个链表类,里面存一个head结点。具体JAVA代码实现:// 结点类class Node<E> { // 存放的数据 public E data; // 指向下一个结点 public Node<E> next; public Node(E data) { this.da...
2020-02-11 16:53:07
262
原创 稀疏数组、栈(用栈实现计算器)和队列
学习算法与数据结构已经一段时间了,之前学习了现在已经遗忘了一些,现在从头开始以自己的理解整理一遍,加深自己的印象。稀疏数组 正常的二维数组会存在大部分重复的元素,而这些大量重复的元素在存储的过程中是没有必要且浪费空间的,所以有了稀疏数组。 稀疏数组:把大量重复的元素视为无效元素,创建一个N行3列的二维数组来存数据,第一行第一列存原始数组的行,第二列存原始数据的列,第三列存原始数据的有效数据...
2020-02-11 11:18:45
242
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人