- 博客(539)
- 收藏
- 关注

原创 SpringBoot中@KafkaListener原理
在我们的SpringBoot工程中,只需在方法中注解@KafkaListener(topics = {”demo_topic_01“})即可实现对该topic的监听我们知道,kafka的consumer端通过从broker poll消息,然后处理我们通过正向理解 + 结果反推 来分析代码最终肯定会调用KafkaConsumer的poll()方法,可以通过方法栈来确定调用来源查看poll...
2019-11-07 15:24:35
20904
5

原创 ThreadPoolExecutor-线程池如何保证线程不被销毁
1、通常情况下 我们new一个线程执行任务,任务执行完之后线程也随之销毁了2、为了减少创建线程的开销,使线程可以复用,我们使用线程池3、那么问题来了,线程池是如何保证池子里的线程执行完不被销毁的呢?入口:我们使用线程池时,代码如下Executors.newFixedThreadPool(5);public static ExecutorService newFixedThr...
2019-10-23 14:34:40
7604
16

原创 Kafka的ACK原理
SpringBoot yml 配置原文:https://blog.youkuaiyun.com/sheep8521/article/details/89511219spring: kafka: consumer: group-id: ${spring.application.name} enable-auto-commit: false auto-offset-res...
2019-05-07 11:56:15
9662
原创 如何安装Cursor到指定路径
Start-Process -FilePath “.[安装包的名称].exe” -ArgumentList /D=“想安装的路径” -Wait。也可以直接打开终端,然后 cd 到指定路径, 比如 cd D:\Cursor 即可。第一次安装Cursor的时候,打开安装包直接安装了,没有给我选择路径的机会。1、找到cursor安装包所在的目录,就是.exe程序所在的文件夹。比如 我想把cursor安到D:\Cursor。在空白处右击鼠标,选择【在终端中打开】比如我的路径是 D:\Cursor。
2025-02-21 11:20:25
636
原创 【Maven】maven加载不到包
网上有很多类似的教程了,跟大家说下我最后怎么解决的。更诡异的是,在有的同学的电脑上就正常加载 编译。改成了maven 3.6.3 就好了。一开始我本机用的是maven 3.9。可以参考下这个解决思路。
2025-02-21 10:13:08
333
原创 记一次数据库故障导致应用停摆GetConnectionTimeoutException
如果不能直接创建新的数据库连接,或者创建新的数据库连接失败,则尝试从连接池中获取已有的数据库连接。如果连接池中没有空闲连接,且当前活动连接数小于最大活动连接数,且当前没有其他线程正在创建连接,且创建连接的调度器的队列中没有等待的任务,则设置标志位,使下一次循环尝试直接创建新的数据库连接。如果可以,且当前没有其他线程正在创建连接,则创建新的物理连接,并将其包装为。因为新监控平台对两台数据库主机添加了监控,结果触发了主机光纤卡的bug,无法连接到存储,数据库无法提供服务,进而导致应用服务获取连接失败,停摆。
2024-12-02 14:39:22
1031
原创 线程池的shutdown和shutdownnow的区别
shutdownnow ---- 不再接收新的任务,清空队列的任务,对works中所有的线程执行interrupt(),会返回没有执行的runnable任务。shutdown ---- 不再接收新的任务,但是已经在执行中和队列中的任务会等待执行完成, 对workers中空闲的线程执行interrupt。模拟场景:线程池 核心线程1,队列20,submit10个任务,执行的过程中执行shutdown和shutdownnow。可以看到只有一个任务执行完成,其他已提交的任务没有执行。
2024-01-04 16:47:41
1020
原创 java.lang.reflect.Field.getType()的类型变成了java.lang.Class<capture<?>>
重写一个框架的底层源码,从jar包中copy的代码和源代码并不完全一样,结果出现了类型不一致的问题。然而Field的getType类型返回的就是Class<?问了一下chatGPT。
2023-04-21 22:45:21
303
原创 使用mysql8.0时报Public Key Retrieval is not allowed
Public Key Retrieval is not allowed
2023-03-08 18:11:25
306
原创 mapstruct提示 No property named exists in source parameter(s)
mapstruct找不到属性
2022-07-12 13:16:49
3581
1
原创 Jackson代替FastJson
jar包:如果是SpringBoot工程的话,默认会引入使用:将jackson交给Spring管理@Componentpublic class JacksonObjectMapperUtil { @Bean public ObjectMapper getJacksonObjectMapper() { return new ObjectMapper(); }}或者定义全局变量public class JacksonUtil { publi
2022-04-27 12:02:52
1633
原创 Spring中的beanDefinition
BeanDefinition是什么BeanDefinition是一个接口,定义了对一个bean元信息的描述,比如bean的class,bean的作用域,bean的Order等信息,在Spring生成bean的时候需要依赖于bdBeanDefinition什么时候加载的Spring在启动时会先把BD加载进容器,那么具体是什么时候加载的呢?总结放前边:就是在Spring启动时,初始化beanFactory的时候,将bd加载进容器,之后在创建bean的时候依赖BD首先我们进入AbstractAppli
2022-03-08 09:35:44
559
原创 chrome调试过滤无用url
在使用chrome开发者工具的时候,会对请求的url查看其入参和返回值这时候我们会在过滤框中加入url的关键字进行筛选过滤当我们想看某个页面请求的所有url时,这时候端上有一些心跳or轮训请求,会干扰我们,这时候怎么办呢?反向筛选,包含关键字的url会被过滤不展示,只需要我们勾选右边的Invert批量反向筛选的话,只需要每个关键字之间 用空格间隔就可以了~...
2022-02-21 14:55:28
1965
原创 NoClassDefFoundError问题排查的一个方向
同事遇到了NoClassDefFoundError的问题,但是看路径相关java文件都是在的,运行时却会报这个错误;基础知识储备:1、NoClassDefFoundError 不同于ClassNotFoundException,后者出现在编译期间找不到文件,前者出现在运行期间排查方向建议:可以看一下报错的这个类,是否有一些静态属性,在类加载的过程中出错,也可能会报NoClassDefFoundError的错误咨询群回答:“class初始化失败抛异常被吞,然后就noclassdef了”示例:pu
2022-01-18 19:44:42
483
原创 一个方法被多个AOP切面会发生什么?
背景笔者负责的项目中,对外接口的实现类中,许多接口注解了N个方法,项目中利用AOP对方法进行统一日志输出、异常捕获、业务并发锁等那么,一个方法有多个AOP切面,会相互干扰吗?其执行顺序是怎样的?会生成多个代理类吗?让我们带着问题,进行实战一探究竟~示例...
2022-01-14 20:00:58
2077
3
原创 如何mock一个List类型的属性
https://stackoverflow.com/questions/33302340/how-to-mock-a-autowired-list-of-spring-beans
2022-01-11 01:20:46
3982
原创 快速实现异步调用-Spring @Async注解
[INFO ] [10:44:25] org.springframework.scheduling.annotation.AnnotationAsyncExecutionInterceptor - More than one TaskExecutor bean found within the context, and none is named ‘taskExecutor’. Mark one of them as primary or name it ‘taskExecutor’ (possibly a
2022-01-07 19:09:15
562
原创 抽象公共参数,减少接口入参
思路:有一些来自前端的请求,会固定传一些类似userId、渠道号、设备信息等数据对于这些公共参数,将其放入通用上下文中,利用threadlocal存储利用AOP,在接口调用前设置相关属性但是依赖RPC框架是否支持…...
2022-01-05 15:32:07
210
3
原创 记一次@Value失效
背景Spring Boot开发中,我们会在application.yml中写一些固定配置,比如appKey,数据库信息等,当我们代码中需要用到这些配置的时候,一般用@Value来取值@Value("${app.name}")private String appName;在某次开发中,希望在创建bean的时候,设置一个配置的值进去,示例代码如下...
2021-12-17 21:16:50
585
原创 注解生效一定作为Spring管理的bean吗?----Reflections获取使用了指定注解的所有字段
由于之前使用注解,大部分都是为了切面,需要有一个切面类,同时目标类也作为一个Spring管理的bean,在Spring启动的时候,生成动态代理类其实我们的注解并不是仅仅为了生成动态代理,比如说mt的配置中心,系统如何实时感知配置项的变更?就是因为加了zk的监听器,每个zk的临时节点都是一个配置项,利用注解为每一个配置项添加监听器其中一个知识就是,初始化的时候遍历服务中注解了@XXConfig的字段,为这些字段添加监听器,用到了开源包org.reflections:reflections:jar:0.9.
2021-12-13 15:19:50
451
原创 IDEA工程External Lib中有相关包,但是maven依赖中没有
问题:这是工程里External Lib中引到的包使用maven依赖查询mvn dependency:tree -Dverbose没有找到1.2.6版本的包但是发现了这么一句话:从这句话中分析出,pom文件里的dependencyManagement中使用了1.2.6,但是后边又说重复所以忽略了;实际使用的版本就是2.0.9那么问题还可能出现在哪里呢进入Project Structure中,查看Libraries,定位问题的引入项点击上方的 减号 -可以定位到是哪个modue
2021-12-07 14:32:49
1857
原创 记一次redis导致的商品超卖问题
背景朋友反馈了一个商品超卖的问题,代码大致逻辑是将商品库存数量存在redis中,在执行扣减库存逻辑的时候,使用了lua脚本,在lua脚本中先查询当前库存数量,和要扣减的值作比较,如果库存数量[>=]要扣减的值,那么再执行decrby操作扣减库存,如果库存数量[<]要扣减的值,则不扣减;扣减成功后的数据库也再执行一遍减库存操作然而出现了商品超卖的问题,直接现象就是redis日志打印了两次相同剩余库存和待扣减库存分析1.很多人认为lua脚本有问题,但是这个是可以排除的,lua脚本是原子性的,
2021-11-11 13:30:21
1311
1
原创 maven进行compile时提示Fatal error compiling
背景某些原因把本地工程删了,从git上clone了一遍新的,但是在compile的时候提示Fatal error compiling解决新clone的工程默认使用了JDK11…修改成JDK 8 就好了…方法: File - Project Structure
2021-10-27 10:43:16
743
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人