自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java八股文-Spring Bean生命周期

Spring Bean生命周期

2022-09-08 23:57:58 422 1

原创 Java八股文-Spring refresh流程

Spring refresh流程

2022-09-07 00:58:39 217

原创 Java八股文-Spring事务失效场景

Spring事务失效的场景

2022-09-03 22:53:10 360

原创 腾讯OCR认证

对接腾讯OCR识别身份证识别接口文档地址:https://cloud.tencent.com/document/product/866/33524API工具:https://console.cloud.tencent.com/api/explorer?Product=ocr&Version=2018-11-19&Action=IDCardOCR&SignVersion=营业执照识别接口文档:https://cloud.tencent.com/document/product/866/36215A

2022-06-20 19:14:14 580

原创 Java合并PDF文件方式

需求说明:需要将多个PDF文件或者文件流合并为一个文件

2022-06-18 23:27:06 2767 3

原创 Spring高级篇-手写实现动态代理

手写实现JDK动态代理手写实现Cglib代理

2022-05-23 22:25:11 322

原创 Spring高级篇-AOP的4种实现方式底层原理

AOP 底层实现方式之一是代理,由代理结合通知和目标,提供增强功能。除此以外,aspectj 提供了两种另外的 AOP 底层实现实现方式底层原理区别|ajc 编译器通过 ajc 编译器在编译 class 类文件时,就把通知的增强功能,织入到目标类的字节码中编译期间增强agent探针通过 agent 在加载目标类时,修改目标类的字节码,织入增强功能加载期间通过ASM技术增强jdk动态代理jdk 动态代理要求目标必须实现接口,生成的代理类实现相同接口,因此代理与目标

2022-05-21 23:32:42 970

原创 Spring高级篇-Bean的作用域

在当前版本的 Spring 和 Spring Boot 程序中,支持五种 Scope作用域范围singleton容器启动时创建(未设置延迟),容器关闭时销毁prototype每次使用时创建,不会自动销毁,需要调用 DefaultListableBeanFactory.destroyBean(bean) 销毁request每次请求用到此 bean 时创建,请求结束时销毁session每个会话用到此 bean 时创建,会话结束时销毁applicationw

2022-05-20 17:41:57 212

原创 Spring高级篇-Aware接口及InitializingBean接口

Aware接口功能Aware 接口提供了一种【内置】 的注入手段Aware接口功能BeanNameAware注入 bean 的名字BeanFactoryAware注入 BeanFactory 容器ApplicationContextAware注入 ApplicationContext 容器EmbeddedValueResolverAware注入 ${} 解析器InitializingBean 接口提供了一种【内置】的初始化手段案例演示创建Bea

2022-05-20 16:31:43 817

原创 Spring高级篇-基于BeanDefinitionRegistryPostProcessor手写后置处理器

上一篇文章中通过ConfigurationClassPostProcessor、MapperScannerConfigurer扫描到了Config类中定义的Bean信息。这篇文章来手动实现这些扫描类的功能。如何扫描到定义的类加入到容器中?BeanDefinitionRegistryPostProcessor接口继承BeanFactoryPostProcessor接口,在所有bean定义信息将要被加载,bean实例还没有创建的时候执行。BeanDefinitionRegistry是bean定义信息的保存

2022-05-19 20:32:11 231

原创 Spring高级篇- BeanPostProcessor和BeanFactoryPostProcessor

Spring提供了BeanPostProcessor、BeanFactoryPostProcessor两大类后置处理器BeanPostProcessor:属于 bean 生命周期阶段(依赖注入, 初始化)的扩展功能。@Autowired、@Resource、@Value 等注解的解析由不同的 Bean后处理器来完成。BeanFactoryPostProcessor:主要就是补充了一些 bean 定义。@ComponentScan, @Bean, @Mapper 等注解的解析属于核心容器(即 BeanF

2022-05-18 22:53:54 1198

原创 Spring高级篇-Bean的生命周期

一个受 Spring 管理的 bean,生命周期主要阶段有创建:根据 bean 的构造方法或者工厂方法来创建 bean 实例对象依赖注入:根据 @Autowired,@Value 或其它一些手段,为 bean 的成员变量填充值、建立关系初始化:回调各种 Aware 接口,调用对象的各种初始化方法销毁:在容器关闭时,会销毁所有单例对象(即调用它们的销毁方法)。prototype 对象也能够销毁,不过需要容器这边主动调用#mermaid-svg-uKLrURPXIiJ5Iner {font-fam

2022-05-16 23:17:15 101

原创 Spring高级篇-容器和Bean

1. 容器接口BeanFactory能做哪些事ApplicationContext有哪些扩展功能事件解耦1.1 BeanFactory和ApplicationContextBeanFactory是ApplicationContext的父接口,它才是Spring的核心容器,提供getBean的能力主要的子类ApplicationContext是组合了BeanFactory的功能。它扩展了 BeanFactory 接口的功能,如:国际化通配符方式获取一组 Resource 资源整合

2022-05-14 23:31:39 326

原创 环形数组/递归复杂度分析

环形数组如何实现环形数组思路:使用一个putIndex和一个getIndex表示插入的位置和获取的位置,但是这样就要考虑两个指针的追赶情况,如果都是0是代表初始化还是代表已经追赶上了?增加一个size变量 插入和获取只需要判断size大小即可public class RingArray { private int[] arr; private int pushi;// end private int polli;// begin private int si

2022-05-13 22:18:54 152

原创 JDK8时间日期处理大全

一、前言学习概述:在Java开发中必不可少的要处理时间,那前后端如何传递时间参数?数据库的时间使用什么类型?Java中时间转换的各种方式有哪些?经过本篇文章带大家一一了解。如果有不正确的地方,欢迎大家评论讨论,谢谢。 学习目标:读完这篇文章之后,希望你能学会熟练使用JDK8z中各种时间转换方法。二、常用时间类1.为什么JDK8新增了时间处理类老版本的java.util.Date与java.util.Calendar类是线程不安全的,并且使用起来复杂。线程不安全示例:final

2022-05-12 22:45:37 2583

原创 归并排序/快排-非递归版本

归并排序思路:设置step步长 将数组按步长划分 比如arr[0,1,2,3,4] 开始step = 1;第一个左组[0] 和 第一个右组[1] 进行merge操作;第二个左组[2] 和 第二个右组[3] 进行merge操作;剩下的不足以划分将step * 2 , 开始merge新的左组 和 右组,等到step = 4时 此时左组[0,1,2,3] 右组[4] 进行merge操作判断step >= N 就可以退出循环public static void mergeSort2(Int

2022-05-11 23:25:09 58

原创 大厂必考二叉树算法-递归的深度使用

遍历二叉树static class TreeNode{ private int data; private TreeNode left; private TreeNode right; public TreeNode(int a) { this.data = a; } public TreeNode addL(int a) { TreeNode left =

2022-05-10 23:19:28 139

原创 大厂必考链表算法-反转链表/合并有序K链表

反转链表Node节点public static class Node<T> { public T value; public Node next; public Node(T data) { value = data; } public void print() { Node head = this; StringBuffer sb =

2022-05-09 22:33:05 217

原创 二分法查找特定数据

二分法有序数组中找到num思路:采用二分法先判断mid位置元素的大小如果arr[mid] = num 就直接返回如果arr[mid] < num 就继续向右边找是否还存在 = num的数据, 即设置 L = mid + 1如果arr[mid] > num 就设置 R = mid - 1, 继续向左边找public static boolean find(int[] arr, int num) { if (arr == null || arr.length ==

2022-05-08 21:15:50 258

原创 前缀和&等概率器

前缀和问题描述有一个整数数组,给出数组范围L、R,求L到R之间的数据和思路循环L到R之间的数据累加构造二维数组,里面保存所有可能的L到R的数据累加和重新构造一个整数数组,后面一个元素保存前面所有元素和自己本身元素之和,计算arr[L,R] = arr[R] - arr[R - L + 1]方式一...

2022-05-08 00:54:53 387

原创 简单排序-选择/归并/快排/冒泡/插入

选择排序思路:第一层循环代表需要存放最小值得索引第二层循环找到最小值的索引交换第一层索引和最小索引的值public class SelectSort<T extends Comparable<T>> { public static void sort(Comparable[] arr) { for (int i = 0; i < arr.length; i++) { int minIdx = i;

2022-05-07 13:05:23 531

原创 位运算-实现位图和计算器

常用的位运算位运算符说明计算案例&与都是1为1, 否则即为 04 & 3 = 0100 & 0011 = 0000 == 0|或有一个为1就是14 & 3 =》 0100 | 0011 = 0111 == 7^异或不同为1 相同为07 & 3 =》 0111 ^ 0011 = 0100 == 4~取反二进制的0变成1,1变成0~4 = 11111111111111111111111111111011

2022-05-06 15:58:29 615

实用工具游览器插件-变更响应请求结果

实用工具游览器插件-变更响应请求结果

2024-06-28

jprofiler性能分析神器

java程序员不可避免的要去观察下jvm的运行情况,尤其是访问量大的应用,通常我们可以使用jstack、jmap等jdk自带的命令行工具来分析,但还是不方便。于是就有了mat、jprofiler这些更加智能直观的ui应用,jprofiler相比mat具有更多的功能,可以连接到远程的应用,使用方便,可以说是一款银弹工具

2023-11-24

VisualVM GC分析工具

VisualVM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于 Java 技术的应用程序(Java 应用程序)的详细信息。**您可以查看本地应用程序以及远程主机上运行的应用程序的相关数据。此外,还可以捕获有关 JVM 软件实例的数据,并将该数据保存到本地系统,以供后期查看或与其他用户共享。

2023-11-24

Fiddler EveryWhere

Fiddler EveryWhere

2023-05-17

SM2前端加密工具类使用

SM2前端加密工具类使用

2023-03-30

mac版本反编译工具jd-gui

mac版本反编译工具jd-gui

2023-03-09

空空如也

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

TA关注的人

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