自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

雪落南城的博客

一只Java程序猿~分享日常工作学习遇到的亮点难点

  • 博客(536)
  • 收藏
  • 关注

原创 SpringBoot中@KafkaListener原理

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

2019-11-07 15:24:35 20587 5

原创 ThreadPoolExecutor-线程池如何保证线程不被销毁

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

2019-10-23 14:34:40 7411 16

原创 Kafka的ACK原理

SpringBoot yml 配置原文:https://blog.csdn.net/sheep8521/article/details/89511219spring: kafka: consumer: group-id: ${spring.application.name} enable-auto-commit: false auto-offset-res...

2019-05-07 11:56:15 9572

原创 IDEA启动jsp项目

IDEA启动jsp项目

2024-05-31 09:09:40 773 1

原创 线程池的shutdown和shutdownnow的区别

shutdownnow ---- 不再接收新的任务,清空队列的任务,对works中所有的线程执行interrupt(),会返回没有执行的runnable任务。shutdown ---- 不再接收新的任务,但是已经在执行中和队列中的任务会等待执行完成, 对workers中空闲的线程执行interrupt。模拟场景:线程池 核心线程1,队列20,submit10个任务,执行的过程中执行shutdown和shutdownnow。可以看到只有一个任务执行完成,其他已提交的任务没有执行。

2024-01-04 16:47:41 727

原创 pod存活探针及重要参数

pod探活配置

2023-09-13 19:04:03 543

原创 记一次触发器拦截更新操作

触发器拦截更新操作

2023-08-15 18:08:41 526

原创 当编程式事务写在了声明式事务的代码中,会怎么样?

编程式事务写在声明式事务中

2023-08-07 14:53:47 404

原创 解决大事务问题的一个思路--编程式事务

大事务解决思路

2023-08-03 14:23:19 228

原创 java.lang.reflect.Field.getType()的类型变成了java.lang.Class<capture<?>>

重写一个框架的底层源码,从jar包中copy的代码和源代码并不完全一样,结果出现了类型不一致的问题。然而Field的getType类型返回的就是Class<?问了一下chatGPT。

2023-04-21 22:45:21 246 1

原创 @Cacheable使用redis实战

@Cacheable使用redis实战

2023-03-30 16:42:18 116

原创 使用mysql8.0时报Public Key Retrieval is not allowed

Public Key Retrieval is not allowed

2023-03-08 18:11:25 234

原创 多个AOP修饰同一个方法

多个AOP修饰同一个方法

2023-03-01 21:43:47 1002

原创 本地docker部署mysql,IDEA直连实战

docker部署mysql

2023-02-28 02:34:18 1388

原创 本机安装docker,redis并进行连接实战

win10安装docker及redis镜像实战

2023-02-27 17:41:01 1493

原创 分享一个数据库语句解析进阶版语句--- explain extended

explain extended关键字

2023-02-20 09:37:36 124

原创 怎么理解ThreadContextClassLoader破坏双亲委派?

ThreadContextClassLoader

2023-01-11 00:52:53 265

原创 记一次线上fullgc----数据库查询返回大量数据

线上fullgc

2022-12-26 11:09:47 1063

原创 线上线程池配置错误导致服务故障

线程池配置错误引发线上故障

2022-12-02 15:58:17 258

原创 单元测试的时候读不到resources.test中配置

单测resource文件定位问题解决

2022-11-08 14:59:24 985

原创 记一次redis主从延迟导致的线上问题

redis主从延迟

2022-09-18 01:53:06 292

原创 在项目中写完数据库自动写缓存怎么实现?

自动执行缓存操作

2022-09-18 01:40:51 168

原创 Jackson序列化时忽略null值,并且只输出field内容

jackson序列化field

2022-09-01 20:30:42 1133

原创 mapstruct提示 No property named exists in source parameter(s)

mapstruct找不到属性

2022-07-12 13:16:49 3362 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 1571

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

原创 chrome调试过滤无用url

在使用chrome开发者工具的时候,会对请求的url查看其入参和返回值这时候我们会在过滤框中加入url的关键字进行筛选过滤当我们想看某个页面请求的所有url时,这时候端上有一些心跳or轮训请求,会干扰我们,这时候怎么办呢?反向筛选,包含关键字的url会被过滤不展示,只需要我们勾选右边的Invert批量反向筛选的话,只需要每个关键字之间 用空格间隔就可以了~...

2022-02-21 14:55:28 1751

原创 NoClassDefFoundError问题排查的一个方向

同事遇到了NoClassDefFoundError的问题,但是看路径相关java文件都是在的,运行时却会报这个错误;基础知识储备:1、NoClassDefFoundError 不同于ClassNotFoundException,后者出现在编译期间找不到文件,前者出现在运行期间排查方向建议:可以看一下报错的这个类,是否有一些静态属性,在类加载的过程中出错,也可能会报NoClassDefFoundError的错误咨询群回答:“class初始化失败抛异常被吞,然后就noclassdef了”示例:pu

2022-01-18 19:44:42 434

原创 一个方法被多个AOP切面会发生什么?

背景笔者负责的项目中,对外接口的实现类中,许多接口注解了N个方法,项目中利用AOP对方法进行统一日志输出、异常捕获、业务并发锁等那么,一个方法有多个AOP切面,会相互干扰吗?其执行顺序是怎样的?会生成多个代理类吗?让我们带着问题,进行实战一探究竟~示例...

2022-01-14 20:00:58 1926 3

原创 如何mock一个List类型的属性

https://stackoverflow.com/questions/33302340/how-to-mock-a-autowired-list-of-spring-beans

2022-01-11 01:20:46 3237

原创 快速实现异步调用-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 531

原创 抽象公共参数,减少接口入参

思路:有一些来自前端的请求,会固定传一些类似userId、渠道号、设备信息等数据对于这些公共参数,将其放入通用上下文中,利用threadlocal存储利用AOP,在接口调用前设置相关属性但是依赖RPC框架是否支持…...

2022-01-05 15:32:07 189 3

原创 记一次@Value失效

背景Spring Boot开发中,我们会在application.yml中写一些固定配置,比如appKey,数据库信息等,当我们代码中需要用到这些配置的时候,一般用@Value来取值@Value("${app.name}")private String appName;在某次开发中,希望在创建bean的时候,设置一个配置的值进去,示例代码如下...

2021-12-17 21:16:50 507

原创 注解生效一定作为Spring管理的bean吗?----Reflections获取使用了指定注解的所有字段

由于之前使用注解,大部分都是为了切面,需要有一个切面类,同时目标类也作为一个Spring管理的bean,在Spring启动的时候,生成动态代理类其实我们的注解并不是仅仅为了生成动态代理,比如说mt的配置中心,系统如何实时感知配置项的变更?就是因为加了zk的监听器,每个zk的临时节点都是一个配置项,利用注解为每一个配置项添加监听器其中一个知识就是,初始化的时候遍历服务中注解了@XXConfig的字段,为这些字段添加监听器,用到了开源包org.reflections:reflections:jar:0.9.

2021-12-13 15:19:50 427

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

原创 记一次redis导致的商品超卖问题

背景朋友反馈了一个商品超卖的问题,代码大致逻辑是将商品库存数量存在redis中,在执行扣减库存逻辑的时候,使用了lua脚本,在lua脚本中先查询当前库存数量,和要扣减的值作比较,如果库存数量[>=]要扣减的值,那么再执行decrby操作扣减库存,如果库存数量[<]要扣减的值,则不扣减;扣减成功后的数据库也再执行一遍减库存操作然而出现了商品超卖的问题,直接现象就是redis日志打印了两次相同剩余库存和待扣减库存分析1.很多人认为lua脚本有问题,但是这个是可以排除的,lua脚本是原子性的,

2021-11-11 13:30:21 1245 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 679

原创 为什么线程池在创建线程的时候用ThreadFactory

如题,java线程池创建线程时用的是当然 这个线程工厂有默认的实现同时支持使用自定义的线程工厂,继承ThreadFactory接口即可那么,这么做的好处是什么呢其实这个问题同时也在问 工厂模式的好处是什么:1.可以自定义线程生成的逻辑,比如自定义线程名称等2.方便统计产生的线程数Spring内部的线程工厂...

2021-10-10 19:38:01 303

原创 动态代理实战及注意点

直接上代码:public class DynamicProxy { public static void main(String[] args) { //CGlib Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(User.class); enhancer.setCallback(new MyCgProxy()); User o = (User)

2021-10-10 15:06:26 230

原创 log4j如何定义多个日志输出文件

背景起因于一个线上问题的数据修复,需要通过批量跑大量数据,同时对数据处理结果进行记录,最快捷的方式就是直接将处理结果落到日志文件中去,然后线下统一处理;但是,如果直接使用代码中log会把信息都落到一个日志文件中,没有办法分离;所以,需要对数据修复的程序单独走一个日志文件;做法首先在log4j2.xml中定义新的appender然后再定义新的logger在代码中引入新的logger使用即可:private static final Logger fixLogger = LoggerFa

2021-10-10 13:25:34 849

空空如也

空空如也

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

TA关注的人

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