- 博客(13)
- 收藏
- 关注
原创 异步线程传递MDC信息与异常捕获
为了解决开启异步线程后,日志非常难找的问题,我们继承了Spring的AsyncConfigurer,并重写了getAsyncExecutor方法,这样在Spring中使用@Async注解开启异步线程,会自动传递MDC信息给子线程,具体代码放在文章最后.4.重写getAsyncExecutor方法时,在runnable.run()代码块上使用try/catch,可以捕获方式A,B,C开启的异步。5.使用try/catch包裹整个runnable函数式接口,这样可以捕获A,B,C,D开启的异步。
2024-05-16 18:21:41
886
2
原创 使用行锁解决事务不可重复读问题
这是一个很典型的不可重复读问题,解决这个问题的方法有很多,比如把a.2放到a方法的最后一步,b方法的更新不要使用updateById,只更新部分字段等等,这里博主给出另一种解法,使用行锁解决,下面提供代码实现。但是实际上生产后,代码的流程是a.1=>a.2=>b.1=>a.3=>b.2,这样会导致一个问题,执行b.1代码的时候会读到a方法还未提交的状态,导致执行b.2代码的时候,会覆盖掉a事务已提交的数据。如图,期望是走完a方法,之后,再走b方法,且在非生产环境都没有发生问题.
2024-01-09 15:49:26
508
1
原创 flink cdc全量阶段拉取数据过多导致java heap space
排查到这张表的单条数据非常大,有个字段时text类型,而flink cdc 拉取数据是用select *去拉取的,导致查出来的数据非常多,且这些数据全部在内存中。数据因数=(主键最大值 - 最小值) / 估算的数据行数,注意,这里数据行数是用 SHOW TABLE STATUS 查出来的,取得是Rows字段。使用阿里云flink实时计算平台,全新启动flink作业后,作业不报错,无任何异常,也不拉取数据.实际启动的时候可以根据表的相关数据计算内存应该给到多少,也可以缩小chunk的size.
2023-05-22 16:42:48
1302
2
原创 Mysql在sql中使用where column in (0),如果column为varchar类型且数据中不包含数字,此条件等于1=1
具体的转换规则如下:当字符串被转为数字时,Mysql会从字符串的左边开始,尽可能多的查找可以构成有效数字的字符(包括正负号,数字,小数点,科学计数法中的e或者E),当遇到第一个无法识别为数字的字符时,转换就会停止,剩下部分被舍弃,例如,字符串'123abc'会被转换为123,而字符串'abc123'会被转换为数字0,因为它的最左边没有数字.如果column是varchar类型,但是在in语句中使用了一个整数,Mysql会尝试将varchar类型转换为整数类型来进行比较.
2023-05-22 16:18:19
344
1
原创 抖音视频去水印
基于httpclient实现在线下载抖音去水印后的视频DeleteWatermarkController.java@Controller@Slf4jpublic class DeleteWatermarkController { private final static String ERROR = "error"; private final static String LINK_PREFIX = "https://v.douyin.com/"; privat
2021-12-08 15:29:20
3117
4
原创 手写简单的SSM框架
框架的本质就是反射+注解+设计模式,本文旨在实现简单的SSM框架,帮助大家理解真正的框架思想,关于Spring的AOP部分,有不懂的童鞋可以看博主的另一篇帖子:手写JDK动态代理并实现Spring的各类通知首先是Spring的容器部分:ClassPathXmlApplicationContext.javaimport org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c
2021-12-02 16:10:03
491
原创 手写JDK动态代理并简易实现Spring的各类通知
实现原理是在本地生成一个.java文件,再使用jdk自带的javax.tools.JavaCompiler类在程序运行过程中编译运行生成的java文件,加载到内存中。MyProxy.javaimport javax.tools.JavaCompiler;import javax.tools.StandardJavaFileManager;import javax.tools.ToolProvider;import java.io.File;import java.io.FileWriter
2021-11-30 15:52:52
369
原创 基于http使用feign封装阿里云短信
目前项目太多地方调用短信服务,微服务与微服务之间太多冗余代码,维护起来也不方便。项目中也会更改第三服务,由于多数时用spring-boot框架开发,这里封装一下短信服务,使用的时候只需要修改配置文件引入微服务即可。SmsUtils.java@Component@Slf4jpublic class SmsUtils { @Autowired private SmsFeignClient smsFeignClient; @Value("${sms.signName}"
2021-11-30 15:04:24
810
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅