- 博客(124)
- 资源 (2)
- 收藏
- 关注
原创 jdk21 虚拟线程原理及使用分享
jdk21已于北京时间9月19日21点正式发布, 其中引人注目的就是虚拟线程(Virtual Thread)随之正式发布, 不再是此前jdk19、jdk20中的预览版本。:java传统的线程是对系统线程的包装,为了区别于虚拟线程,因此将通过传统方式实现的线程叫做平台线程(Platform Thread):虚拟线程是由JDK内部实现的轻量级线程,不依赖于操作系统,可以显著减少编写、维护和观察高吞吐量并发应用程序的工作量。
2023-11-12 15:56:50
5467
原创 SpringBoot使用PropertiesLauncher加载外部jar包
使用SpringBoot的PropertiesLauncher可以优先加载外部的jar文件, 这样可以在程序运行前替换jar包,官方文档: Launching Executable Jars在启用应用程序时通过指定外部jar的目录, 再启动, 访问接口返回2.0.0版本, 说明包替换成功指定PropertiesLauncher启动类执行可以正常只加载2.0.0版本中的实现类, 这个符合预期访问资源文件, 会发现本应只从2.0.0版本中加载文件, 结果1.0.0版本中的也被加载了
2023-07-30 00:14:21
3260
原创 SpringMVC打印请求参数和响应数据最优方案
SpringMVC 使用RequestBodyAdvice和ResponseBodyAdvice打印请求参数和响应数据
2023-07-19 03:09:38
4887
5
原创 原来url写对了, 也可能会出现404 ??!
opentelemetry+SpringBoot 2.7.11, tomcat启动成功, 但是访问任何接口都是返回404异常问题排查, 原因: 低版本opentelemetry和高版本tomcat存在兼容问题
2023-05-29 00:27:49
871
原创 dubbo SPI之@Activate注解
本文基于dubbo 2.7.22分析:dubbo SPI之@Activate注解, @Activate用于指明该SPI实现类在什么条件下生效
2023-02-25 19:48:40
1961
原创 dubbo SPI之使用Wrapper包装类拦截SPI实现类
本文基于dubbo2.7.7分析1. 讲解如何通过Wrapper类实现对SPI实现类的拦截处理
2023-02-20 12:42:25
1278
原创 dubbo SPI之依赖注入、禁止依赖注入@DisableInject
dubbo SPI之依赖注入、禁止依赖注入@DisableInject、Wrapper包装类
2023-02-20 00:02:57
1457
原创 dubbo SPI之@SPI、@Adaptive注解, 以及什么时候动态生成$Adaptive代码
本文基于dubbo2.7.7对如下三个问题分析1. ``@SPI``注解的作用;2. ``@Adaptive``注解的作用,放在Type和Method上的区别和注意点;3. 什么时候动态生成和编译``xxx$Adaptive``代码
2023-01-31 12:44:39
973
原创 Springboot中使DispatcherServlet提前初始化
Springboot中可以通过配置项spring.mvc.servlet.load-on-startup=1使DispatcherServlet提前初始化
2022-04-27 21:29:17
2395
原创 Spring中@Autowire支持注入多个实现类的集合并排序
Spring中``@Autowire``支持注入多个实现类的集合,支持的集合类型包括,``数组``、``Collection的子类接口``、``List``、``Map``类型。并且还会对``数组``和``List``类型就行排序。
2022-04-27 13:44:16
2536
原创 Sentinel高可用流量控制组件-SpringMVC使用Sentinel实现流量监控
sentinel高可用流量控制组件-SpringMVC使用Sentinel实现流量监控
2022-04-02 21:07:55
2072
原创 java获取文件的inode标识符
java获取文件的inode标识符,如果文件被删除或者重命名,inode的值会发生变更,因此可以在第一次加载File之后记录inode,后续校验inode的值来判断文件是否被删除、重命名或重新创建等。
2022-04-01 03:57:43
775
原创 Sentinel高可用流量控制组件-目录设置
设置日志目录,默认在 $HOME/logs 目录下//设置metric.log / block.log / sentinel-record.log 等日志目录System.setProperty("csp.sentinel.log.dir", baseDir + "/csp"); //设置eagleeye-self.log目录System.setProperty("EAGLEEYE.LOG.PATH", baseDir + "/eagleeye");metric.log 是记录
2022-03-29 01:29:51
2325
原创 Spring事务处理2-TransactionInterceptor
org.springframework.jdbc.support.JdbcTransactionManager<br/>org.springframework.transaction.interceptor.TransactionInterceptor
2022-03-15 00:45:02
1287
原创 Spring事务原理1-动态代理
spring中事务、缓存、@Async、aop等实现原理其实基本一致,都是通过cglib或jdk生成动态代理,然后通过拦截器执行对应的逻辑。如果同一个类中既有``@Transactional``又有``@Cacheable``生成的是同一个代理类,但是会有多个处理器``Advice``,会适配成``org.aopalliance.intercept.MethodInterceptor``,多个拦截器组成一个拦截器链,调用方法式时依次执行各个拦截器。一个典型的**责任链模式**
2022-03-12 22:38:40
3264
原创 SpringBoot中spring.factories配置的EnableAutoConfiguration执行顺序
SpringBoot中spring.factories指定的EnableAutoConfiguration并不是按照配置顺序执行 ! ! !
2022-03-09 00:01:44
6809
4
原创 Why choose CGLIB proxying as the default after SpringBoot 2.0
SpringBoot 2.0之后为什么选择Cglib作为默认的aop代理方式
2022-03-06 13:48:15
375
1
原创 java高效简洁编码
基于java8高效简洁编码避免未使用变量的定义,减小变量作用域避免无效对象的创建避免频繁创建大对象,大对象容易进入老年代,频繁创建容易导致老年代频繁GC(例如数据库连接)线程中执行定时任务,需要try-catch,否则一旦出现异常,则定时任务不可用最小化变量作用域带有返回值的方法,不应该在方法体内对成员变量修改利用链式编程优化前代码StringBuilder builder = new StringBuilder(96);builder.append("select id, nam
2022-02-27 14:11:57
682
原创 @ControllerAdvice和@RestControllerAdvice注解使用及实现原理
1、统一异常处理;2、通过@InitBinder统一请求参数数据类型转换;
2022-02-18 03:54:50
1834
原创 SpringBoot配置内容协商
默认情况下,SpringBoot中SpringMVC接口返回的数据是json格式,但有些时候同样的数据我们可能需要根据请求来返回不同的格式。即同一个接口可以返回json格式,又可以返回xml格式
2022-02-12 02:07:25
876
原创 Spring对配置类之间继承的特殊处理
Spring对配置类之间继承的特殊处理,相关issue:SpringBoot中冗余的RequestMappingHandlerMapping配置 </br>https://github.com/spring-projects/spring-boot/issues/29682
2022-02-09 17:22:14
3346
4
原创 Spring中相同类型Bean存在多个时抛出异常分析及解决方案
Spring中相同类型Bean存在多个时,通过``@Autowired``在其他类中注入,那么在Spring启动时会抛出异常。</br>调用DefaultListableBeanFactory#getBean(java.lang.Class requiredType)也会抛出异常
2022-02-09 16:51:23
4945
2
原创 获取SpringMVC中url和执行方法的映射
SpringBoot注册了Bean RequestMappingHandlerMapping用于保存Url到Controller中执行方法的映射. 所以只要通过@Autowired获取到RequestMappingHandlerMapping对象就可以获取SpringMVC中url和执行方法的映射.
2022-02-09 00:54:45
1040
原创 ScheduledThreadPoolExecutor定时任务
scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)任务完成之后延时指定时间,再执行下一个任务。如果任务执行过程中发生异常将会终止后续定时任务。scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)每隔period时间执行一次任务如果指定period内,上
2022-02-07 21:50:28
988
原创 SpringBoot中java.class.path返回的是SpringBoot jar
SpringBoot中System.getProperty(“java.class.path”)返回的是SpringBoot jar, 而不是在外部化部署中返回的加载的jar集合.参考官方文档 https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html
2022-01-23 13:28:34
617
原创 java原生和SpringBoot读取jar包中MANIFEST.MF的方式
java原生和SpringBoot读取jar包中MANIFEST.MF的方式
2022-01-20 22:45:31
6268
原创 Spring对使用@Configuration @Component的类中 “内部类的特殊处理”
Spring对使用@Configuration @Component的类中 “内部类的特殊处理”
2021-12-20 12:01:40
3486
3
原创 使用@Component会导致spring.factories中的EnableAutoConfiguration无效
本文基于SpringBoot 2.6.0 分析,使用@Component会导致spring.factories中的EnableAutoConfiguration无效
2021-12-20 11:49:53
5158
原创 通过maven-clean-plugin插件清除指定的目录
maven-clean-plugin 可以帮助清除java maven工程中编译的target目录,同时我们也可以通过配置来删除指定的目录或者文件。删除工程中的logs目录<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId> <configuration>
2021-12-17 00:36:13
5427
原创 SpringBoot配置logback.xml,控制台设置彩色字体,按日志级别划分log文件
1. 按照日志级别输出到不同日志文件 2. 控制台日志设置和SpringBoot同风格彩色字体样式 3. 指定该包下的日志都打印在customAppender中指定的文件路径 4. 启动后不变的日志打印到单独的包,例如环境变量打印到environment.log中
2021-12-01 00:46:10
3783
原创 基于k8s+docker+istio+envoy+grpc搭建service mesh
基于k8s+docker+istio+envoy+grpc搭建service mesh
2021-11-12 15:54:43
902
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人