- 博客(119)
- 收藏
- 关注
原创 windows10下安装docker且使用wsl2安装双系统并构建最小jre镜像和应用镜像
由于几年前我刚开始接触docker这个东西就觉得是挺神奇挺好用挺奈斯的一个创造性产品,它的思想是:“以此构建,到处运行”,真的是很方便,给开发和运维带来了很大的便利性,同时也是极大地简化部署难度,同时也带来了很大的效率提升,屏蔽了部署环境的差异引发的开发、运维之间的相互吐槽和刷锅行为,提升团队迭代开发效率,同时让生产效率也大大提高了,俗话说:”兴趣是最好的老师”,所以作者就开始了docker的学习实践之路,我相信云原生是未来软件架构的方向和标配,也是大势所趋。...
2025-05-03 22:12:08
2626
8
原创 乐企数电发票分布式发票号码生成重复的问题修复思路分享
由于之前接了乐企数电开票,服务上线之后,使用的公司少没有啥问题,后面切换了两家日开票量大的公司上线之后,就发现发票号码生成重复了,后面下班紧急修复了,修复到凌晨3点发了一个版本上去,之后才没有重复的,这次其实是歪打正着的搞好了,后面我思考分析了下之后重新优化了之后上了几个版本后观察,使用数据库表的方式还是会有一定的概率会重复,之前歪打正着是因为使用了@Transactional注解,事务传播级别设置为READ_COMMITTED,后面揭晓为啥是歪打正着。
2025-04-27 21:48:56
1415
原创 disruptor-spring-boot-start版本优化升级
由于之前写了一篇《disruptor-spring-boot-start生产实践导致pod节点CPU爆表100%的问题解决说明》的文章,里面说本地启动没有啥问题,后面我启动之前写的那个测试的controller发现,本地电脑的CPU直接干100%了,于是乎我就有点纳闷了,这个也太奇葩了,然后我思考了下,知道是啥原因了,原因是:之前那个版本里的初始化的实力有7个disruptor实例,注释了只剩第一之后启动本地电脑CPU占用在50%左右(等待策略是YieldingWaitStrategy的版本),紧接
2025-04-27 21:42:18
480
原创 spring-rabbit的CachingConnectionFactory默认参数导致消费者Channel数量暴增问题解决
由于之前写了一个好用的rabbitmq-spring-boot-start启动器,后面在生产实践之后反馈消费者连接的Channel数量过多,一个消费者的Channel数量可以达到好几百,最多的要干到900多个了,于是乎我就去看了下之前我写的组件的源码,然后去查了下CacheMode的两种模式及相关的参数设置,最终找到了这个是由于一下参数没有设置导致的:RabbitProperties类中的静态内部类Channel中的size和checkoutTimeout没有设置/**/**
2025-04-27 21:39:04
859
原创 rabbitmq-spring-boot-start版本优化升级
由于之前手写了一个好用的rabbitmq-spring-boot-start启动器,虽然实现了相关的功能,但是还有一点小问题,这个也是最近在项目中使用我写的这个组件发现的一个问题,所以修复升级了,maven依赖已经退推送到中央仓库上了,只需要引入依赖,然后简单的配置就可以实现发消息了,使用上会有一点需要注意的,请听下文分解。
2025-04-23 18:05:26
1221
原创 disruptor-spring-boot-start生产实践导致pod节点CPU爆表100%的问题解决说明
好看的皮囊千篇一律,有趣的代码万里挑一啊,有句名言说得好:实践是检验真理的唯一标准!本次分享到此结束,希望我的分享对你有所启发和帮助,请一键三连,么么么哒!
2025-04-23 18:01:54
219
2
原创 使用shell脚本批量curl调用POST接口
这篇文章是使用shell脚本批量调用GET接口的方式,后面项目中需要手动去触发调用接口重新生成数据,由于上线之后有问题的数据比较多,所以一条一条的去触发就不得行了,数据多了,手动一条去处理,就相当于人肉手动方式,效率低,也容易出错,如果使用shell来批量调用岂不是美哉,废话多不多说,直接上code。
2025-04-22 17:38:15
323
原创 接口对外安全交互新姿势
由于这久做了一个乐企数电开票的项目,已经上线了,真的是一言难尽,再回首已经是轻舟已过万重山,接口通过外网暴露给业务方使用,由于业务方的服务是在阿里云上,我的这个服务是在华为云上,所以k8s上的服务只能通过service对外暴露出去给阿里云上的业务侧使用,所以我就有了下面的这个思路,使用ip白名单和sm2对请求body的做解密,响应做加密,只需要把秘钥和加密工具类对给业务侧就可以安全的调用接口,其实在华为云上可以在负载均衡器上配置白名单,只允许阿里云上那几台服务器的ip访问,所以在项目中就不用加这个i
2025-03-12 13:21:13
1138
原创 sa-token之@SaIgnore注解失效的真正原因及正确姿势
sa-token之@SaIgnore注解失效的真正原因及正确姿势 由于之前在项目中使用了sa-token,在使用的过程中发现@SaIgnore注解失效,之前以为是aop切面失效了,不知道失效的真正原因,那本文分分享其失效的真正原因及真确姿势,之前分享文章导读:2.原因2.1原理 首先需要了解Filter、Interceptor、AOP及MVC的原理及调用先后顺序,看上面的几张图可以说是一下子豁然开朗了。 该类在:sa-token-core包中,此包只要引入了sa-token的相关包,会自动引入
2025-01-14 22:07:26
1286
原创 自定义注解使用AspectJ切面和SpringBoot的Even事件优雅记录业务接口及第三方接口调用日志实现思路
在日常的开发中经常会遇到对接第三方系统,如:各种支付(微信支付、支付宝支付。
2025-01-14 21:58:49
706
1
原创 自定义注解之AspectJ切面动态代理使用注意事项
Slf4j@Aspect@Component//切面表达式写法还有很多种//之前逻辑try {//异常逻辑//之后逻辑通过这点东西,后面会写一篇文章分享,如何优雅自定义注解使用AspectJ切面及SpingBoot的Event机制记录业务接口调用日志及第三方接口调用日志,这个思路实现之后对于后期排查问题是非常的方便,本次分享到此结束,希望我的分享对你有所帮助,请一键三连,么么么哒!
2025-01-14 21:52:59
348
原创 SpringBoot项目分离与分层方式之容器化部署
SpringBoot项目分离与分层方式之容器化部署 之前也分享过分离与分层方式部署,本文只不过将之前的那两种方式放到了容器中来部署运行,里面多多少少还是有点坑在里面的,要相对简单一点直接使用如下命令部署: 使用容器部署方式就比这种更高级优雅一点,根据个人喜好去选择适合自己的部署方式。 之前的文章链接如下:2.deom项目工程结构 这里只展示build的配置3.2子模块3的Dockerfile 容器中工作路径下有app.jar、config。resources这几项. 子模块3打包之后
2025-01-10 01:40:11
994
原创 Docker Desktop 构建java8基础镜像jdk安装配置失效解决
Docker Desktop 构建java8基础镜像jdk安装配置失效解决 之前的好几篇文章中分享了在Linux(centOs上)和windows10上使用docker和docker Desktop环境构建java8的最小jre基础镜像,前几天我使用Docker Desktop环境重新构建了一个java8最小jre基础镜像,使用之前windows上使用的dockerfile构建是没有啥问题,但是本地项目引入该基础镜像之后,启动应用的容器,查看日志发现报了一个如下错误: 这也是一个奇葩的问题,在Linu
2025-01-10 01:35:36
1106
原创 之前手写的两个好用开源组件优化升级
这两个手写开源好用的组件是在日常项目实践中发现了一些问题,后面优化了迭代了,依赖包都推送到maven中央仓库上了,项目中直接引入对应的maven依赖包安装教程配置一下,就可以方便轻松快捷的使用我给大家提供的开源组件了,解决对应的业务问题还是一把利器的,简化代码,纵享丝滑,希望我的分享对你有所启发和帮助,请一键三连,么么么哒!
2025-01-10 01:31:50
603
原创 Mysql深度分页之MyBatisPlus百万数据分页优化新姿势
前段时间,我司会员表有600多w数据分页查询特别的慢,于是乎我去explain了一下分页查询的sql是由于没有走索引,导致全表扫描,查询特别的慢,由于会员表有一个逻辑删除的字段,所以查询的时候sql条件会默认第一条件就是逻辑删除的字段,这个之前的文章也有分享过这个逻辑删除字段在查询第一个导致索引失效的坑,于是乎在之前加的索引上把逻辑删除字段加在索引第一列之后,分页查询sql就走了索引,没有之前那么慢;
2024-12-28 18:19:41
1583
1
原创 Docker安装体验kuboard-k8s多集群管理工具
本次分享介绍了通过docker的方式快速部署安装kuboard-k8s多集群管理工具体验,它的官网上的文档非常的详细,还有一些关于k8s知识的分享,让我们可以更好的掌握k8s和通过kuboard-k8s多集群管理工具来管理多个k8s集群,官网也有关于kuboard的其它安装方式,生产环境肯定是要高可用安装,官网也有文档说明,具体的可以去参看官网的详细文档,本次分享到此结束,希望我的分享对你有所启发和帮助,请一键三连,么么么哒!
2024-12-28 14:37:18
1015
原创 disruptor-spring-boot-start启动器
Disruptor是一种高性能的并发编程框架,它由LMAX Exchange公司开发,并于2011年开源。Disruptor旨在解决传统多线程编程中的性能瓶颈和并发问题,特别适用于需要高度并发处理的场景。Disruptor采用了一种称为"无锁编程"的机制,通过使用环形缓冲区(Ring Buffer)和事件驱动的方式实现高效的消息传递和处理。它的核心思想是将消息(事件)在生产者和消费者之间进行无锁的、高效的交换,以减少线程间的竞争和上下文切换。
2024-09-27 16:07:22
1431
1
原创 Idea安装VisualGC插件手把手教程
开发阶段实时监测,自己的JVM信息,实时可视化 Hotspot JVM 垃圾回收监控工具, 支持查看本地和远程JVM进程, 支持G1 and ZGC算法。整个界面主要分为四个区域,分别为:Spaces、Graphs、Histogram和JVM浏览器。如果需要不依赖IDEA单独运行, 请移步: VisualGC 3.0 独立运行增强版, 支持JDK 8**停止监控 按钮: **点击后会停止当前JVM进程的GC监控.JVM 浏览器窗口。
2024-09-27 16:04:30
1884
3
原创 springBoot应用使用exe4j与innosetup打包为exe可执行程序手把手教学
由于之前搞了一个windwos的java应用程序使用的部署在windwos10的机器上,需要先安装配置java环境程序包解压如图所示:exitbarrier.vbs的脚本如下:使用这个barrier.vbs调用了barrier.bat的脚本通过执行barrier.bat或着点击barrier.vbs(或快捷方式)或启动一个cmd的命令行窗口,运行脚本启动了一个cmd的命令行窗口,这种启动方式很丑陋,并且很容易被人点了关闭了,所以一点也不方便和友好。
2024-08-27 17:52:41
1558
原创 我的创作纪念日
天行健,君子以自强不息;地势坤,君子以厚德载物”继续深耕技术业务、不断提升自己的各方面的能力,提示:职业规划、创作规划等。“撸起袖子加油干,”
2024-08-27 17:28:06
664
原创 redis-distributed-id-generator-start之id生成器压测的一些思考
省略–参考之前的文章2.新建表3.测试代码 IdCreate实体类 IdCreateMapper类 TestController类4.jemeter压测结果预期 使用jemeter新建一个线程组,线程数设置1000,循环次数100次,然后多执行几次,直达请求100000(10w)次之后,使用mybatisPlus的sql注入器批量插入100000(10w)条数据到id_create表中,没有出现id重复,导致主键冲突而插入失败的情况,10w数据全部入库。
2024-08-20 21:27:32
880
3
原创 mybatisPlus的@TableLogic逻辑删除注解导致联合索引失效的坑
假设一个mysql的一张单表叫student数据量有500w左右,如果没有选择适当的列加索引的话,相关的查询就会全表扫描,使用的是mybatisPlus作为ORM框架,并且在实体上的逻辑删除字段del(0:否,1:是)上加了@TableLogic注解,那么StudentService中的业务查询代码如下所示: 如果在student的name,address两列上建立了联合索引如下: 请问各位看官上面那个StudentServer的this.getOne的查询有没有走index_nam
2024-08-16 15:29:40
950
原创 集成sms4j修改源码实现发送不带短信模版id的短信
sms4j:让发送短信变得更简单,是一款开源、优雅、开箱即用、切换灵活。功能丰富等特性的发短信的开源好用开源好用的轮子,支持的短信提供商也比较的多,支持的短信提供厂商有:阿里云、容联云、天翼云、亿美软通、华为云短信、京东云短信、 网易云信、腾讯云短信、合一短信、云片短信、助通短信、鼎众短信、联麓短信、七牛云短信 、创蓝短信、极光短信、布丁云V2 、中国移动 云MAS 、百度云短信、螺丝帽短信、SUBMAIL短信、 单米短信;官网上也有详细的说明,本文以华为云短信为例。 由于最近项目需要一个发送短信的功
2024-07-30 17:24:05
1312
原创 集成sa-token前后端分离部署配置corsFliter解决跨域失效的真正原因
缘由请参看下面这篇文章:sa-token前后端分离解决跨域的正确姿势这篇文章虽然经过n多次尝试找到了正确的姿势,但是问题的根本原因没有找到,然后我就经过一些思考和探索,我想这个跨域能不能在本地模拟出来,然后起就去找了项目前端人员老王,然后确实模拟出本地跨域,在项目中将之前sa-token前后端分离解决跨域的正确姿势文章中的SimpleCORSFilter注释之后进行了问题复现。
2024-07-08 20:00:34
1276
2
原创 Lock4j简单的支持不同方案的高性能分布式锁实现及源码解析
lock4j是苞米豆提供的一个分布式锁组件,其提供了多种不同的支持以满足不同性能和环境的需求。立志打造一个简单但富有内涵的分布式锁组件。
2024-07-06 18:56:51
1646
原创 sa-token前后端分离解决跨域的正确姿势
由于最近写了一个项目,前端使用vue,后端使用的是Java,集成国产sa-token(一个轻量级 java 权限认证框架,让鉴权变得简单、优雅!sa-token官网提供的解决跨域的方法如下;上面的方式都只可以参考,但是实际上实践下来都失效了,配置了没有用,项目中使用的springBoot版本是:2.3.12.RELEASE,spring版本是5.2.15.RELEASE,这个跨域真是一个蛋疼的问题,网上各种文章看然后各种姿势去尝试,没有一个是可以的,最后经过各种尝试,终于找到了一个可行的姿势。
2024-07-06 18:49:37
2970
14
原创 TIS人人都会用的数据集成产品
TIS集成大数据领域优秀组件(FlinkX-CDC,Chunjun(FlinkX),DataX,Flink等)为您提供一站式、开箱即用的DataOps数据中台,大幅提高ETL实时数仓构建效率。TIS的愿景是实现企业大数据ETL(Extraction-Transformation-Loading)全覆盖的中台产品,数据抽取(Extraction)是大数据处理所有环节中的第一步,也是最重要的环节。,并且在原生DataX之上添加了功能特性大大提高了DataX的可用性。
2024-07-04 13:13:23
1147
原创 Dinky 让Flink作业纵享丝滑
Dinky的部署方式还有很多:二进制可执行包部署,源码编译部署,docker-compose部署,k8s部署等,支持多种flink模式提交任务,使用flink支持整库同步、增量和实时CDC数据同步,还集成DolphinScheduler(小海豚调度平台),支持主流的关系型数据库、OLAP数据库和数据湖产品,还有运维监控功能,可视化管理flink任务,Dink。
2024-07-01 16:32:35
2506
2
原创 Fast-Retry高性能百万级任务重试框架
Fast-Retry是什么?Fast-Retry是一个高性能任务重试框架,支持百万级别任务的并发重试处理。与主流的Spring-Retry, Guava-Retry等同步重试框架不同,Fast-Retry是一个支持异步重试框架,支持异步任务的重试、超时等待、回调。Spring-Retry, Guava-Retry均无法支持大批量任务的重试,因为会占用过多线程资源导致大量任务在等待处理,随着任务数的增加,系统吞吐量大大降低,性能指数级降低,Fast-Retry的性能是前者的指数倍。
2024-06-02 19:28:55
1526
1
原创 mybatisPlus3.5.1有个奇葩bug的解决方法
mybatisPlus3.5.1有个奇葩bug的解决方法1.2 bug问题 在使用mybatisPlus3.5.1分页查询的时候报了下面这个错,分页的count正常执行,但是分页查询就报下面这个错,这个问题网上千篇一律的添加sqlParser配置,Mapper添加啥注解,我试过了没啥鸟用,这个bug是mysqlPlus的一个租户相关会去解析sql检查执行的sql字段中是否包含关键字,如果包含关键字直接报如下的错误,乍一看自己写的sql在Navicat客户端上还可以正常执行,怎么mybatisPlus执
2024-05-31 12:42:33
1403
3
转载 Apache StreamPark 2.1.4 Release 稳定版发布
在本次发布中,支持了最新的 Apache Flink 1.19,简化了项目的配置,Flink on Kubernetes 方面的能力做了充分验证,修复了一些高危安全漏洞。简化了 on Kubernetes 模式下参数指定:在 Flink on Kubernetes Application 模式下的几个必要的参数如:serviceAccount,在早期的版本中没有直观的体现出来,需要用户通过 -D 动态属性 的方式指定,本次直观的将这些参数放到页面中,方便用户设置。
2024-05-19 00:40:44
257
原创 手写了一个好用的限流、分布式锁和手动控制事务相结合的starter启动器
由于之前写如下两篇文章:自定义注解实现Redis分布式锁、手动控制事务和根据异常名字或内容限流的三合一的功能自定义redission装配和集成分布式开源限流业务组件ratelimiter-spring-boot-starter的正确姿势在项目中使用下来就觉得能不能把这两个结合起来使用?
2024-05-19 00:12:40
619
4
原创 Dubbo接口参数校验的正确姿势
由于之前的文章分享了如下这篇文章:@Validated或@Valid参数注解校验、自定义手机号注解检验及优雅统一异常处理后面在项目中使用dubbo接口,就想能不能让dubbo接口也能参数校验,那么就不用在代码中写很多的if/else的参数校验了,直接dubbo的参数校验就给做了,那这种接口代码是不是又优雅、干净整洁了很多,于是乎我就上网开始看了一个些千篇一律的文章,没有一篇可以的,然后就经过不断的尝试之后,dubbo接口参数校验的正确姿势还是被我搞出来了,下面就分享给大家。
2024-05-19 00:08:50
1358
原创 手写好用工具类
上面都是一些我手写的经过长时间的项目经验代码的积累,可以减少重复的代码,写出优雅美观干净清秀工整的代码,所以干啥都需要厚积薄发,不断的去学习,去思考,去实践,去总结和沉淀,希望我的分享对你有所启发和帮助,请一键三连,么么么哒!
2024-05-19 00:03:31
547
原创 本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例
本地编译先关可以查看之前的文章Apache Seatunnel本地源码构建编译运行调试CentOs7.x安装部署SeaTunnelWeb遇到的坑主要看Apache Seatunnel本地源码构建编译运行调试这篇。
2024-04-30 18:44:07
2567
3
原创 自制Apache-Doris 2.0.4镜像Docker部署一Fe和一Be集群及遇到的问题解决
由于之前学习了下doris,看了下官网,然后就自己根据官网提供的构建镜像的步骤,构建了docker镜像,然后就遇到了Be镜像启动不会自动注册到Fe的问题,解决办法是去be里面手动注册即可。之前本来说研究下doris的,后面遇到这个问题去联系官方,官方也没有回复,后面就没有搞了,然后就想了下,把之前搞的这个过程记录下,以便后面更好的入门和快速上手。
2024-04-23 22:40:43
3191
2
原创 手写基于redis-lua脚本实现分布式id生成器starter
由于之前分享过一篇:百度开源分布式id生成器集成–真香警告里面提到了基于redis来实现一个分布式id生成器的思路,只是简单的说了下,本次分享就手写了一个。本文手写基于redis-lua脚本实现的分布式id生成器starter分享到此结束了,我把我手写的轮子开源出去,可以让java又多了一种分布式id生成的选择,解决了分布式id生成的问题,开源才能繁荣,通过本文的分享和之前文章的分享,在解决分布式id生成问题选择上丰富起来了,各种实现上基本都是类似和相通的,希望我的分享对你有所启发和帮助,请一键三连!
2024-04-23 13:07:21
1702
2
原创 推荐两款好用开源分布式id生成器
Vesta是一款通用的ID产生器,互联网俗称统一发号器,它具有全局唯一、粗略有序、可反解和可制造等特性,它支持三种发布模式:嵌入发布模式、中心服务器发布模式、REST发布模式,根据业务的性能需求,它可以产生最大峰值型和最小粒度型两种类型的ID,它的实现架构使其具有高性能,高可用和可伸缩等互联网产品需要的质量属性,是一款通用的高性能的发号器产品。CosId旨在提供通用、灵活、高性能的分布式 ID 生成器。单机 TPS 性能:1557W/s,三倍于,基于时钟的全局趋势递增ID,可以同时支持一百万个实例。
2024-04-23 13:04:31
1003
原创 @Validated或@Valid参数注解校验、自定义手机号注解检验及优雅统一异常处理
使用@Validated或@Valid对controller接口的参数或controller中body的参数做检验可以让代码更整洁工整,不至于写很多if前置参数校验判断逻辑,在配和上优雅全局统一异常处理,使用本文的套路可以代码更优雅简洁工整清秀,代码可读性高和可维护性强,使开发人员更加专注于业务,我的分享到此结束了,希望对你有所启发和帮助,请一键三连,么么么哒!
2024-04-16 13:27:19
2632
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人