蔡定努
人前拼实力,人后拼努力
展开
-
Java中使用自定义序列化器:自动添加View字段的实现与应用
本文介绍了如何在 Java 中实现一个自定义的 BigDecimal 序列化器,以在序列化过程中自动添加格式化后的视图字段。通过使用 JsonSerializer 和 DecimalFormat,我们可以在输出 JSON 数据时,既保留原始的 BigDecimal 数值,又添加一个格式化后的字符串字段,便于前端展示。文章详细展示了如何定义 BigDecimalViewSerializer 序列化器,并将其应用于实体类中的 BigDecimal 字段。此外,还提供了测试示例,展示了序列化后的 JSON 输出效原创 2025-05-13 16:46:32 · 25 阅读 · 0 评论 -
Java中使用自定义序列化器:自动添加View字段的实现与应用
在Java开发中,处理BigDecimal类型数据时,常常需要在序列化过程中添加格式化后的视图字段,以满足前端展示需求。本文通过实现一个自定义的BigDecimalViewSerializer序列化器,展示了如何在序列化时自动添加view字段。该序列化器继承自JsonSerializer<BigDecimal>,重写serialize方法,在输出原始数值的同时,生成格式化后的视图字段。通过@JsonSerialize注解,可以将该序列化器应用于实体类中的BigDecimal字段。最终,返回的JS原创 2025-05-13 10:36:37 · 58 阅读 · 0 评论 -
Git标签删除脚本解析与实践:轻松管理本地与远程标签
本文介绍了一个用于删除本地和远程 Git 标签的脚本,并详细解析了其逻辑和使用注意事项。脚本首先检查本地标签,若不存在则从远程拉取,随后批量删除本地标签。接着,脚本检查远程标签,并通过循环逐个删除。使用该脚本时需注意权限问题、备份重要标签以及处理特殊字符。通过合理运用该脚本,开发者可以更高效地管理 Git 标签,确保版本控制的清晰和规范。原创 2025-05-09 14:40:15 · 241 阅读 · 0 评论 -
利用 SSE 实现文字吐字效果:技术与实践
Server-Sent Events 是一种允许服务器向客户端发送实时更新的 Web API。与传统的轮询(客户端定期向服务器发送请求以获取更新)或 WebSocket(全双工通信)不同,SSE 是单向的,即服务器可以主动向客户端推送数据,而客户端只能接收。这种单向通信模式非常适合那些只需要服务器向客户端发送数据的场景,如新闻更新、股票价格变化、实时日志等。简单易用:相比于 WebSocket,SSE 的实现更加简单,不需要复杂的握手过程。自动重连:如果连接中断,浏览器会自动尝试重新连接到服务器。原创 2025-04-24 22:31:57 · 91 阅读 · 0 评论 -
Spring Boot 中基于 Reactor 的服务器端事件(SSE)推送机制实践
SSE 是 HTML5 规范的一部分,它允许服务器向客户端推送实时更新。与传统的轮询(Polling)方式相比,SSE 通过建立持久的 HTTP 连接,减少了不必要的请求开销,极大地提升了实时数据传输的效率。客户端只需创建一个对象,就能轻松接收服务器推送的事件流,而服务器则负责将数据以特定格式(如)发送给客户端。方法是实现 SSE 推送的核心接口。通过注解将该方法映射到路径,并指定,表明该接口返回的数据类型为,符合 SSE 的数据格式要求。在方法内部,首先使用创建一个每秒发出一个元素的Flux流。原创 2025-04-19 20:47:20 · 273 阅读 · 0 评论 -
IDEA中.gitignore未忽略指定文件的问题排查与解决
在使用 IntelliJ IDEA 进行项目开发时,合理利用.gitignore文件来管理版本控制是非常重要的。它能帮助我们排除一些不需要纳入版本管理的文件,比如包含敏感信息的.env文件。然而,有时我们会遇到一种情况:明明已经将.env文件添加到了.gitignore文件中,但在提交代码到 Git 时,.env文件还是被提交了。这篇博客将深入探讨这个问题出现的原因,并提供相应的解决方法。原创 2025-02-28 00:05:22 · 332 阅读 · 0 评论 -
Spring Boot 依赖配置分离多种打包方式
springboot中依赖分离打包方式原创 2025-01-03 18:27:25 · 594 阅读 · 0 评论 -
ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal
复制之后,父子线程中的InheritableThreadLocal就没有关系了,父线程中InheritableThreadLocal的值再修改,也不会影响子线程中的值了,所以两次输出的都是张三。从结果中看,线程池执行了2次任务,2次拿到的都是张三,和主线程第一次放入的值是一样的,而第二次主线程中放入的是李四啊,但是第二次线程池中拿到的却是张三,这是什么原因?上面线程池的大小是1,也就是说这个线程池中只有一个线程,所以让线程池执行的2次任务用到的都是一个线程,从上面的日志中可以看到线程名称都是。原创 2024-12-30 10:49:45 · 100 阅读 · 0 评论 -
java 根据 pdf 模板带图片文字生成pdf文件
在现代应用开发中,自动生成包含动态内容的 PDF 文档在电子发票、合同生成、表单填充等场景中有着广泛的应用。本文将介绍如何使用 iText 库动态填充 PDF 模板字段,并在指定位置插入签名和公章图片。项目需求假设我们有一个 PDF 模板文件,包含表单字段,如用户姓名、地址、爱好等,以及需要插入的签名和公章图片。我们将使用 iText 库读取 PDF 模板,填充字段数据,并在指定位置插入签名和公章图片,生成最终的 PDF 文件。技术实现使用的主要依赖。原创 2024-11-15 18:46:33 · 341 阅读 · 0 评论 -
本地 SSL 证书生成神器,自己创建SSL
mkcert是由Filippo Valsorda开发的一款免费开源工具,专门用于生成受信任的本地SSL/TLS证书。它通过简单命令自动生成并安装本地信任的证书,让本地环境中的HTTPS配置变得轻松无比。mkcert支持多个操作系统,满足不同开发者的需求。本文以mac为例。原创 2024-11-13 14:04:03 · 122 阅读 · 0 评论 -
本地 SSL 证书生成神器,自己创建SSL
mkcert是由Filippo Valsorda开发的一款免费开源工具,专门用于生成受信任的本地SSL/TLS证书。它通过简单命令自动生成并安装本地信任的证书,让本地环境中的HTTPS配置变得轻松无比。mkcert支持多个操作系统,满足不同开发者的需求。本文以mac为例。原创 2024-11-13 12:03:07 · 287 阅读 · 0 评论 -
springboot中返回数据脱敏
特别是在返回用户信息的 API 中,我们通常希望敏感字段(如姓名、身份证、电话号码、地址等)经过脱敏处理后再返回。@Sensitive 注解用于标记需要脱敏的字段,并指定脱敏策略。此脱敏方案适合在 Spring Boot 中使用,特别是数据敏感性较高的场景,如用户信息管理、支付信息保护等。首先,创建 Person 实体类,并在敏感字段上使用 @Sensitive 注解指定脱敏策略。:通过 SensitiveStrategy 枚举,可以轻松扩展新的脱敏策略。@Sensitive:用于标注字段的脱敏策略。原创 2024-11-12 14:50:02 · 384 阅读 · 0 评论 -
Jar 包加密混淆工具 ClassFinal
ClassFinal 是一款 java class 文件安全加密工具,支持直接加密 jar 包或 war 包,无需修改任何项目代码,兼容 spring-framework;可避免源码泄漏或字节码被反编译。加密后,原始的 class 文件中方法体被清空,当 class 被 classloader 加载时,真正的方法体会被解密注入。为兼容 spring,swagger 等扫描注解的框架,故而保留了方法参数、注解等信息;反编译者只能看到方法名和注解;原创 2024-10-07 15:36:38 · 513 阅读 · 0 评论 -
Spring Boot 多线程事务管理:使用 CyclicBarrier 和 PlatformTransactionManager 实现全局事务控制
通过本文介绍的多线程事务处理工具类,我们可以轻松地在多线程环境下控制事务的提交与回滚。特别是在多个线程同时操作数据库时,如果其中一个线程失败,如何保证其他线程的事务操作也能一并回滚,而不是部分提交,成为了开发者必须考虑的重点。在默认情况下,Spring 的事务是线程不安全的,即每个线程都有自己独立的事务上下文。为了在多线程环境下保证事务的统一提交或回滚,我们需要一种机制,能够在所有线程完成操作后,再决定是否提交事务。如果某个线程的任务失败,整个事务应当回滚,确保所有线程的任务要么一起成功,要么一起失败。原创 2024-09-24 23:19:13 · 421 阅读 · 0 评论 -
多线程事务管理:Spring Boot 实现全局事务回滚
在本文中,我们通过 TransactionTemplate 和多线程执行器实现了多线程中的全局事务控制,确保所有线程的数据库操作要么一起提交,要么在发生错误时一起回滚。在 Spring Boot 中,我们通常会在需要事务控制的服务方法上使用 @Transactional 注解来保证事务的一致性。在这些用户的处理过程中,数据库操作必须要么全部提交,要么在发生错误时全部回滚。因此,我们需要一种方式,能够在多线程环境下将所有线程的数据库操作放在同一个事务上下文中,并由主线程统一提交或回滚事务。原创 2024-09-24 23:12:08 · 1118 阅读 · 0 评论 -
InheritableThreadLocal vs TransmittableThreadLocal 深入理解与使用场景
即使线程池复用了子线程,它仍然能获取到正确的值。TransmittableThreadLocal 的原理是:每次任务提交时,它会把父线程的 ThreadLocal 值传递给子线程(无论子线程是新建的还是复用的)。则适用于更加复杂的场景,尤其是当我们使用线程池时,希望父线程的上下文信息(例如用户信息、事务ID等)能够传递给子线程,无论子线程是新建的还是复用的。适用于一些简单的场景,比如普通的多线程编程中,父线程需要将 ThreadLocal 值传递给子线程,且子线程不需要在线程生命周期中更新值的场景。原创 2024-09-12 18:31:22 · 210 阅读 · 0 评论 -
Jenkins+docker+springboot 一键自动部署项目步骤
在 springboot 项目根目录新建一个名为 Dockerfile 的文件,注意没有后缀名,其内容如下:(大致就是使用 jdk8,把 jar 包添加到 docker 然后运行 prd 配置文件)因为我们项目和 jenkins 在同一台服务器,所以我们用 shell 脚本运行项目,原理既是通过 dockerfile 打包镜像,然后 docker 运行即可。点击正在构建的任务,或者点击任务名称,进入详情页面,查看控制台输出,看是否能成功打成 jar 包。】,输入仓库地址,添加凭证,选择好凭证即可。原创 2024-09-02 10:32:09 · 808 阅读 · 0 评论 -
IDEA插件开发中JavaProgramPatcher的使用
JavaProgramPatcher是设置jvm参数的,点击启动项目的时候会调用。本文介绍插件开发中的基本使用原创 2024-09-01 21:42:32 · 451 阅读 · 0 评论 -
springboot中自定义Agent
springboot中,-java agent 自定义逻辑原创 2024-09-01 21:41:09 · 336 阅读 · 0 评论 -
spring、springboot中优雅统计接口耗时
【代码】spring中优雅统计接口耗时。原创 2024-08-15 16:16:07 · 186 阅读 · 0 评论 -
使用 Prometheus 监控 Spring Boot 应用
前面我们在 Spring Boot 项目中集成 Actuator 和 Micrometer 实现了 Spring Boot 应用监控,基本上覆盖 JVM 各个层间的参数指标,并且配合 Grafana Dashboard 模板基本可以满足我们日常对 Spring Boot 应用的监控。但是,对于核心业务是否也能够监控它们的执行情况呢?答案是肯定的,Micrometer 支持自定义监控指标,实现业务方面的数据监控。例如统计访问某一个 API 接口的请求数,统计实时在线人数、统计实时接口响应时间等。原创 2024-07-31 11:02:49 · 162 阅读 · 0 评论 -
CPU 占用率 100% 排查五步法
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。对于线上问题定位来说,分秒必争,所以我们在编码过程中,除了要实现业务功能交付,还要追求代码质量,要写出更高效、更优雅的代码。当然,除了使用上面的基础方法外,还有很多工具可以直接使用,例如阿里的 Arthas。的占用 CPU 是最高的,直接是 100%。原创 2024-07-29 22:29:14 · 517 阅读 · 0 评论 -
docker+[nginx] 部署nacos2.x 集群
便于直接使用容器名连接mysql,如果不创建,连接mysql直接使用ip。nginx 【可选,见文末】原创 2024-06-27 17:22:30 · 303 阅读 · 0 评论 -
发布 jar 包到 maven 中央仓库
目前开发基本都是以maven或者gradle的方式,直接引入依赖包即可,那么该咋那么发布我们自己的jar包到maven仓库,让别人使用呢?本文适用于2024.3之后的步骤。原创 2024-06-03 23:05:06 · 564 阅读 · 0 评论 -
日常开发踩坑
【代码】日常开发坑记录。原创 2024-06-03 15:00:33 · 159 阅读 · 0 评论 -
Springboot中使用spel+自定义注解实现权限控制
*** @author 蔡定努/*** permissionAll()-----只要配置了角色就可以访问* hasPermission("MENU.QUERY")-----有MENU.QUERY操作权限的角色可以访问* permitAll()-----放行所有请求* denyAll()-----只有超级管理员角色才可访问* hasAuth()-----只有登录后才可访问* hasTimeAuth(1,10)-----只有在1-10点间访问。原创 2024-06-02 01:00:50 · 493 阅读 · 0 评论 -
Spel表达式使用案例
【代码】Spel表达式使用案例。原创 2024-06-02 00:26:35 · 142 阅读 · 0 评论 -
使用Lua基本实现分布式锁并自动续期
分布式锁的成熟方案很多,比如redission、zookeeper……原创 2024-05-31 11:30:12 · 537 阅读 · 0 评论 -
Springboot整合向量数据库Milvus
构建一个MilvusClient工厂类查询工具封装配置Range Search 范围查询Range Search 即范围搜索。不同于 KNN Search 返回最相似的 TOP-K 个结果,Range Search 会返回向量距离落于某一区间的 TOP-K 个结果。那么,何时选择 Range Search 而非 Top-K 搜索?Range Search 最典型的应用场景就是推荐系统。比如商品推荐,一个好的推荐系统,返回的应该是与用户点击的商品有一定相似度,但又不太相似的结果。太相似或太不相原创 2024-05-12 23:29:42 · 949 阅读 · 1 评论 -
使用docker安装向量数据库milvus
向量数据库是一种特殊的数据库,它以多维向量的形式保存信息。根据数据的复杂性和细节,每个向量的维数变化很大,从几个到几千个不等。这些数据可能包括文本、图像、音频和视频,使用各种过程(如机器学习模型、词嵌入或特征提取技术)将其转换为向量。矢量数据库的主要优点是它能够根据数据的矢量接近度或相似性快速准确地定位和检索数据。这允许基于语义或上下文相关性的搜索,而不是像传统数据库那样仅仅依赖于精确匹配或设置标准。推荐系统:向量数据库可以用于存储用户和物品的特征向量,以便实现个性化推荐。原创 2024-05-11 23:18:01 · 646 阅读 · 0 评论 -
docker安装向量数据库milvus
向量数据库是一种特殊的数据库,它以多维向量的形式保存信息。根据数据的复杂性和细节,每个向量的维数变化很大,从几个到几千个不等。这些数据可能包括文本、图像、音频和视频,使用各种过程(如机器学习模型、词嵌入或特征提取技术)将其转换为向量。矢量数据库的主要优点是它能够根据数据的矢量接近度或相似性快速准确地定位和检索数据。这允许基于语义或上下文相关性的搜索,而不是像传统数据库那样仅仅依赖于精确匹配或设置标准。推荐系统:向量数据库可以用于存储用户和物品的特征向量,以便实现个性化推荐。原创 2024-05-11 23:12:27 · 2067 阅读 · 0 评论 -
使用YOURLS生成短链(统计点击数)
http://ip+端口/admin。原创 2024-04-26 17:57:30 · 209 阅读 · 2 评论 -
MDC方式实现简单链路追踪
MDC 方式实现日志链路追踪。原创 2023-10-07 15:48:26 · 216 阅读 · 0 评论 -
Linux CPU 占用率 100% 排查五步法
Linux 服务器 CPU 占用率达到 100% 且一直居高不下,严重影响业务系统的正常使用,这时候领导让你来排查问题原因,如果不知道该如何下手,就有点尴尬了。当然,除了使用上面的基础方法外,还有很多工具可以直接使用,例如阿里的 Arthas。原创 2023-06-28 12:25:43 · 11122 阅读 · 0 评论 -
SpEL解析对象属性、Map
【代码】SpEL解析对象属性、Map。原创 2023-06-27 13:59:36 · 892 阅读 · 0 评论 -
jar包中生成接口文档不识别注释解决办法
【代码】jar包中没有注释解决办法。原创 2023-05-31 17:15:15 · 812 阅读 · 1 评论 -
docker 传递容器的环境变量
第一种本案例以springboot为例第一种。原创 2023-04-29 00:07:54 · 477 阅读 · 0 评论 -
docker 运行xxl-job-admin
xxl-job-admin 使用docker打包部署原创 2023-04-28 17:23:57 · 434 阅读 · 0 评论 -
springboot中手动管理事务(编程式事务)
【代码】springboot中手动管理事务(编程式事务)原创 2023-03-27 15:19:03 · 1753 阅读 · 0 评论 -
jenkins+docker部署springboot项目
jenkins+docker部署springboot原创 2023-03-13 17:24:27 · 843 阅读 · 0 评论