自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于Netty开发RPC远程调用框架

基于Neety开发一套RPC远程调用框架

2024-06-20 16:08:00 189

原创 深度了解LogBak,以及自主开发一个日志框架

自定义开发日志框架

2024-06-19 13:49:05 278

原创 深度了解Netty

深度理解Netty模型

2024-01-23 17:35:57 968

原创 sun.misc.Cleaner GC后不回调处理

GC回收对象之后回调

2023-12-21 17:59:08 151 1

原创 Netty底层设计架构

Netty-NIO设计模型

2023-12-12 16:45:17 79

原创 Proto文件打包成jar包

支持将整个proto文件目录进行打包。

2023-08-16 13:40:02 221

原创 Java之JMX获取应用进程CPU/内存使用率,监控GC回收

Java之JMX获取应用进程CPU/内存使用率,监控GC回收

2022-12-22 17:23:33 2485 1

原创 ByteBuddy-Javaagent的使用

bytebuddy 之 javaagent的应用

2022-12-15 13:06:22 1211 1

原创 Java synthetic

笔记

2022-12-08 18:28:03 253

原创 Spring扫包,是否加载了扫包目录下的所有类至JVM?

Spring扫包

2022-10-18 15:40:45 332

原创 Spring 日志适配器

Spring适配各种日志框架

2022-10-18 14:40:37 176

原创 Java线程池工作流程

线程池

2022-06-21 19:05:58 3274 1

原创 Java在不改变String内存地址的情况下修改内容

总所周知,Java的String类具有不可变性,因为它被final修饰了。我们在平常开发中,将String进行替换,或者其他操作,只要改变其内容,就会新创建一个String,原String保持不变。以下代码:将var1字符串abcd,替换成aBcd后,由var2接收,此时的var2是一个新的字符串。var1和var2的hashCode不一致。那么如何在不改变String地址(hashCode)的情况下,修改内容呢?通过反射去修改String类中 char[] value的值。以下代码表示出.

2021-08-10 22:53:36 1878 3

原创 JVM内存结构常见面试题

JVM内存结构常见面试题JVM内存结构布局虚拟机栈是什么?本地方法栈程序计数器方法区Java8的内存分代改进,为什么要改进?JVM堆有哪些区?分别作用什么?为什么要有新生代和老年代?新生代为什么要分成Eden,Survivor区?新生代为什么要有两个Survivor区?而且一个Survivor区一直为空?对象什么情况会进入老年代?新生代&老年代,Eden&Survivor 分配比例?TLAB(Thread Local Allocation Buffer)的作用?为什么有TLABTLAB是什么

2021-08-04 11:07:34 816

原创 TCP粘包/拆包-解决方案

TCP 是个“流”协议,所谓流,就是没有界限的一串数据。大家可以想想河里的流水, 是连成一片的,其间并没有分界线。假设 Socket 通道中有两个完整的数据包 D1、D2什么是粘包第一次读取到了 D1、D2 完整数据包,D1 跟 D2 就粘一起了,确当成是一个数据包处理。什么是拆包第一次读取到了完整的 D1 包和 D2 包的部分内容,第二次读取到了 D2 包的剩余内容,导致 D2 数据包不完整。解决方案1:报文限定长度设定(发送/响应)报文长度,如果(发送/响应)报文长度不

2021-07-10 18:58:10 355

原创 MySql逆向工程(自定义实现MySql逆向生成Java实体类,包含Lombok注解,Swagger注解,Javax注解)

很多开发者用的 MySql逆向工程应该都是框架自带的(MyBatis),但他的效果可能达不到我们想要的效果,然后生成完代码之后,又要手动去去修修改改,甚是麻烦。这边说明下,我做的这个MySql逆向工程,仅有以下依赖,他是一个单独的模板。mysql-connector-java mysql 连接。fastjson 数据库查询的数据,转换成Java类型。lombok 懒得写 get/set。生成的Java实体类有什么功能?Lombok注解,需要开启。如果没有开启,则生成 get/set/.

2021-03-24 11:29:37 1427

原创 如何处理接口幂等性问题(重复提交)

接口幂等:多次请求,结果一致。同样的请求参数,多次去访问同一个接口,得到的结果是一致的。且服务端(针对于数据入库或数据修改)只处理一次。通俗点讲就是:防止重复提交。以下演示相关案例案例1: 数据表添加数据案例2:完成任务,领取奖励案例3:修改了其他线程已经修改的数据案例4:接口回调,且存在重试总结案例1: 数据表添加数据往数据库添加数据如下数据库(user),和服务端添加(user)数据接口。假如用同样的参数去调用添加(user)接口,那么每次都会往数据库插入一条数据,那么数据库就会有多条

2021-03-20 19:13:28 1869

原创 ArrayList于LinkedList的区别

本文主要讲解Java List集合ListArrayListLinkedListArrayList 内存占用LinkedList 内存占用List按添加顺序排列的集合,予许元素重复,且可以为 null。主要说下List下的两大常用子类ArrayList,LinkedList。ArrayList底层基于一个数组实现,数组长度可动态扩容。数组默认长度 10。‘LinkedList底层基于链表实现,不需要扩容。ArrayList 跟 LinkedList 有什么区别呢?增删查改的区

2021-03-14 23:12:54 152

原创 同时启动3个线程从1开始打印递增数字, 每次每个线程打印3次,且按线程顺序打印,打印到36程序结束

效果:线程1:1线程1:2线程1:3线程2:4线程2:5线程2:6线程3:7线程3:8线程3:9线程1:10线程1:11线程1:12…线程3:34线程3:35线程3:36实现 思路:基于 synchronized 的 wait, notifyAll同时开启三个线程,分别为这三个线程设置name,1 2 3.。定义一个共享的Runnable实现类。定义一把共享锁对象,或者使用 this锁对象。(必须是三个线程共享的锁)white循环,自增数num小于36。

2021-02-20 18:51:41 1055

原创 Java开发注意事项

分享/记录下在日常开发的碰到的问题及解决方案和开发过程的优化。值得一提的是,在今年 年中的时候我还是一个小白,懵懵懂懂的,每天利用业余时间,在网上寻找一些视频教程学习,进步还是有的。拓展了我的知识与见解,然后也理解到一句著名的话(知道的越多,不知道的越少)分享两个学习的网站,个人感觉是非常不错的,可以学到很多知识。尚硅谷,可白嫖,技术点很强,入门至高级。一定要去看看蚂蚁课堂,有免费的基础入门视频,高级篇需要付费同时,我也是蚂蚁课堂的付费学员。搞技术应该充分利用业余时间去找资料学习,拓展自己的

2021-02-01 18:12:45 188

原创 Unable to process parts as no multi-part configuration has been provided 解决方案

记录一个开发中的问题基于Servlet3.0开发,上传文件,httpServletRequest.getParts()报的异常在添加Servlet组件的时候,加上这么一项配置,setMultipartConfig(new MultipartConfigElement(""))public class MultipartConfigElement { // 上传文件的临时路径 用Tomcat默认值 private String location; // 上传文件最大

2021-01-22 16:03:42 8124 6

原创 Tomcat性能调优

资料来自:蚂蚁课堂,Tomcat性能调优此篇文章主要记录下学习的技能,方便后期查阅。Tomcat臃肿点默认加载了一些我们实际开发用不到的组件,例如:JspIO模型默认是APR,可能其他高版本是NIO默认启用了AJP,内部通讯的集群,一直有10个线程在执行。1:不需要视图层开发,也就是前后端分离,或者不需要Jsp的时候,关闭掉Jsp支持。在conf.web.xml中删掉以下两处配置。如果不需要ROOT目录的映射,还可以把DefaultServlet也删掉。2:在conf.we

2021-01-16 21:26:32 299

原创 SpringAOP分布式锁(可以适配redis,zk等多种中间件实现)

关于分布式锁,我也在网上找了很多文章,但始终没有找到一个我想要的解决方案,于是自己动手写了一个。什么是分布式锁:就是在多个服务端都能访问到的中间件上打上一个标记。例如:redis, zookeeper, mysql本文是基于redis 的 setnx 实现分布式锁,但是我写的分布式锁解决方案,还可以适配其他中间件实现。这个才是重点。先说下分布式锁需要解决的问题:有一个服务端获取到了锁,其他服务端是阻塞等待,还是直接以失败响应。获取锁失败,是否需要重试一会。锁必需要具备有可重入性质。服

2021-01-06 15:54:36 748 2

原创 SpringMVC核心组件之(HandlerAdapter)

url映射(HandlerMapping)的执行适配器在DispatcherServlet类中的initHandlerAdapters()初始化handlerAdapters。SpringMVC默认有三个HttpRequestHandlerAdapter, 该HttpRequestHandler接口的适配执行器SimpleControllerHandlerAdapter, 该Controller接口的适配执行器RequestMappingHandlerAdapter,处理@RequestMapp

2020-12-30 10:58:03 977

原创 layui 动态表格之合并单元格

因工作需要对 layui 的动态渲染表格合并,但是 layui 官方也没有给出解决方案,于是就在网上找了好久,终于找到一篇文章。layui 动态表格之合并单元格 感谢该作者提供的设置思路但是该文章提供的方案并没有起到效果,于是借鉴他的思路,对代码进行改进。效果图:在 table.render 的 done渲染成功事件中加入以下代码。注意点:merge_column_infos中的 index 索引从 0 开始(从左边数起)。$("#alert_table_div table").fin

2020-12-28 18:15:57 3878 7

原创 SpringMVC核心组件之(HandlerMapping)

HandlerMapping url映射,也就是访问的url,对应的处理器。在DispatcherServlet类中的initHandlerMappings()初始化HandlerMapping。SpringMVC默认有两个HandlerMappingBeanNameUrlHandlerMapping:只要beanName或别名是以/开头就会添加到该映射处理器中。RequestMappingHandlerMapping:@RequestMapping映射处理,最为常用的。先看看代码块,如果需要

2020-12-27 15:28:28 225

原创 DispatcherServlet.properties

SpringMVC的组件,默认配置文件。#DispatcherServlet策略接口的默认实现类。#当在DispatcherServlet上下文中找不到匹配的beans时,用作后备。#不是由应用程序开发人员定制的。# DispatcherServlet.initLocaleResolver() 国际化解析器org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeade

2020-12-27 14:11:57 465

原创 SpringMVC底层源码分析(Web容器初始化)

SpringMVC是基于Servlet进行包装的,也就是一个Servlet的封装框架。spring-mvc官方文档,用谷歌浏览器打开,翻译成中文,简直很美。https://docs.spring.io/spring-framework/docs/5.1.20.RELEASE/spring-framework-reference/web.html#mvcpom.xml依赖; packaging 指定 war包<dependencies> <dependency&g

2020-12-27 11:22:54 174

原创 Spring后置处理器(BeanPostProcessor)(BeanFactoryPostProcessor)

Spring的后置处理器,在应用Spring框架开发中非常重要,Spring底层的核心,就通过各种后置处理器去完成IOC容器的启动,AOP代理对象的创建。Spring的后置处理器有两大类,BeanFactory与Bean。BeanFactoryBean 工厂方面的后置处理器BeanFactoryPostProcessor 获取IOC容器BeanDefinitionRegistryPostProcessor 向容器注册Bean...

2020-12-23 11:25:52 455 5

原创 mybatis-spring底层源码分析

为什么要学习下mybatis-spring的底层?mybatis-spring 是一款基于Spring开发的优秀框架之一,我们可以通过mybatis-spring学习到如何基于Spring的开放组件,去拓展开发我们的应用程序。如何在Spring容器启动的时候扫包注册自定义的组件? (例如:mapper 接口)如何应用Spring的事务管理器?环境配置查看上一篇文章 mybatis-spring纯注解开发学习mybatis-spring底层需要对mybatis底层源码有一定的了解 MyBat

2020-12-21 17:20:09 358 2

原创 Spring整合MyBatis纯注解开发

为什么要学习mybatis-spring注解版开发呢?可以帮助我们了解到mybatis在spring-boot中自动装配做了什么事情。1:环境搭建maven依赖:<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId&

2020-12-19 19:23:34 572 1

原创 自定义JDBC使用Spring事务

我们自己定义的JDBC如何使用Spring提供的事务管理呢?pom依赖<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.10.RELEASE&l

2020-12-19 17:51:56 157 1

原创 Spring 事务七大传播行为

@Transactional的属性:propagation,事务传播行为,枚举类型 Propagation。注意:事务传播行为在同一Service类中是无效的,只有在AService 调用 BService才有效。因为事务处理是通过AOP代理拦截工作的,在同一Service里调用,不会再触发代理方法拦截。这里写目录标题1:Propagation.REQUIRED,默认的2:Propagation.SUPPORTS3:Propagation.MANDATORY4:Propagation.REQUIR

2020-12-19 11:20:08 261

原创 Spring AOP底层源码分析

本文基于Spring5注解版进行分析分两大块分析,Spring创建AOP切面代理对象流程AOP切面方法通知执行流程Spring的AOP切面功能大家都用过,但是也会有一些人对AOP不是很理解,本文着重解析AOP的工作原理。AOP是什么?对我们的业务方法实现增强,对执行方法进行拦截。实际就是利用JDK/CGLIB实现动态代理。AOP应用场景,能帮我们干什么?控制层请求日志打印 ,保存。控制层权限控制。业务层分布式锁。Spring 事务。开始分析:要用Spring AO

2020-12-14 14:53:06 237

原创 Spring getBean, createBean, doCreateBean

原文地址:Spring 启动流程原文地址:Spring Bean创建流程Spring getBean从IOC容器中获取Bean,如果没有则创建Bean -> createBeanSpring createBean创建Bean实例 -> doCreateBean创建Bean的流程创建Bean的时候,会先记录当前创建的Bean,实例化Bean后,先在三级缓存中,保存信息,为了解决循环依赖问题。(A依赖B,B依赖A)实例化Bean之前,会先创建有@DependsOn注解的Be

2020-12-12 22:08:09 502

原创 Spring Bean创建流程图

原文地址:https://blog.csdn.net/liuqi199707/article/details/110732380原文地址:https://blog.csdn.net/liuqi199707/article/details/111052503简单流程图详细流程图

2020-12-12 21:58:03 619

原创 Spring底层源码解析(二)创建Bean finishBeanFactoryInitialization(beanFactory)

本文基于Spring5注解版进行分析继上一篇文章Spring 底层源码解析(一)扫包注册Bean继续分析Bean的创建过程。此方法将会创建所有的非懒加载的Bean先来看一张简单的Bean创建流程图,Spring创建Bean看着和后置处理器()息息相关啊BeanPostProcessorSpring Bean创建源码流程图对bean的创建描述得非常清晰,请认真观看,跟着流程图走一遍代码。走源码1.0.0:finishBeanFactoryInitialization()/** *

2020-12-12 19:30:35 527

原创 Spring底层源码解析(一)扫包注册Bean

本文基于Spring5注解版进行分析主要分析Spring扫包工作流程@ComponentScan(),Bean创建流程,Bean生命周期Maven依赖:<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId>

2020-12-06 23:36:50 720 5

原创 Spring底层源码解析(开篇)

本文基于Spring5注解版进行分析做Java开发的程序员相信都用过Spring框架,也知道IOC,DI,AOP。但是IOC是什么呢?它是怎么创建对象的呢?它又是怎么管理对象的呢?DI又是怎么帮我们给对象的属性赋值的呢?会在什么时候进行赋值呢?AOP是怎么实现的呢?AOP又是怎么工作的呢?为什么要去了解Spring框架的底层原理呢?只有在深入的了解到一个框架的底层原理,才方便我们去合理的用它。在我们写代码的时候,可以清晰的知道该怎么用框架提供的功能。进入正题:在分析Spring底层源

2020-12-05 19:54:46 2198 5

原创 MyBatis 核心类分析

继上一篇文章MyBatis 底层源码解析,再次分析下MyBatis的核心类初始化,解析配置文件相关类:Configuration:核心中核心配置类,无论执行什么操作,都有他的存在。XMLConfigBuilder:解析mybatis-config.xml。XMLMapperBuilder:解析mapper.xml。XMLStatementBuilder:解析mapper.xml中的Sql语句。MapperAnnotationBuilder:解析Mapper接口的注解信息。MapperBuil

2020-11-22 22:26:12 523 2

protobuf文件打包成jar包

protobuf文件打包成jar包 可以将整个目录进行打包

2023-08-16

MySql 逆向工程.zip

mysql 数据表生成 Java实体类, 并且可以配置生成 Lombok注解信息,Swagger注解描述,Javax注解描述, 提供可以链式的set方法, 也可以自信拓展,基于mysql数据表的字段属性,生成其他Java代码(例如Mapper接口,Dao接口),Service代码。

2021-03-24

空空如也

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

TA关注的人

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