自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java21虚拟线程原理解析

虚拟线程是Java19中作为预览功能提出,21中正式完成的轻量级线程。旨在减少编写易于观察的高吞吐量的并发程序的工作量。

2025-03-31 19:08:32 383

原创 Spring源码探析(四):prepareEnvironment环境初始化的核心实现

SpringBoot环境初始化源码解析

2025-03-18 14:50:41 1035

原创 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

原创 IDEA注释模板全解析:从类声明到方法参数的自动化配置

IDEA文档注释模板修改。

2025-03-04 12:12:17 142

原创 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

原创 IDEA插件开发:SQL日志动态参数解析与变量转换工具实现

idea插件开发入门,提供Sql日志的参数填充以及命名风格的转换。

2025-02-24 22:15:52 364

原创 Spring 6.0源码编译全流程:Gradle配置优化与IDEA调试环境搭建指南

spring-6.0源码编译

2022-05-25 19:00:00 1509

原创 EasyExcel自定义导出,自定义导入等功能

EasyExcel快速实现导入导出功能,提供自定义导出,日志记录,自定义导入功能

2022-05-19 18:32:50 5885 6

原创 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

原创 快速生成CRUD接口的神器-IDEA插件EasyCode

IDEA使用EasyCode快速生成CRUD代码,提升开发效率

2021-12-03 16:40:45 2926 3

原创 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 NIO实现客户端与服务端通信

使用java NIO实现nio客户端连接nio服务端发送消息二丶NIO客户端实现效果如下:

2021-11-18 15:27:00 1727

原创 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

原创 idea的常用配置

文章目录一.idea的常用设置二.快捷键一.idea的常用设置1.关闭idea自动更新二.快捷键

2020-05-04 19:07:37 349 1

原创 JAVA实现冒泡排序,计数排序,选择排序,插入排序,希尔排序,快速排序,归并排序,基数排序,堆排序

文章目录一.冒泡排序二.计数排序一.冒泡排序原理:从数组中第一个元素开始,将它与它的下一位元素进行比较大小,如果大于,就交换两个元素的位置,在继续从第二个元素开始执行相同操作。直到数组遍历完成,第一轮结束,然后重复数组长度-1轮,执行相同的操作。JAVA代码:public static void bubbleSort(int[] arr) { // 定义一个定时变量,用来进行交换 ...

2020-02-25 18:52:22 492

原创 图的创建,图的深度优先遍历和广度优先遍历

2020-02-21 17:17:53 701

原创 二叉树,顺序存储二叉树,线索化二叉树,二叉排序树,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关注的人

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