自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蔡定努

蔡定努个人博客

  • 博客(449)
  • 资源 (59)
  • 收藏
  • 关注

原创 Spring Boot 依赖配置分离多种打包方式

springboot中依赖分离打包方式

2025-01-03 18:27:25 307

原创 ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal

复制之后,父子线程中的InheritableThreadLocal就没有关系了,父线程中InheritableThreadLocal的值再修改,也不会影响子线程中的值了,所以两次输出的都是张三。从结果中看,线程池执行了2次任务,2次拿到的都是张三,和主线程第一次放入的值是一样的,而第二次主线程中放入的是李四啊,但是第二次线程池中拿到的却是张三,这是什么原因?上面线程池的大小是1,也就是说这个线程池中只有一个线程,所以让线程池执行的2次任务用到的都是一个线程,从上面的日志中可以看到线程名称都是。

2024-12-30 10:49:45 38

原创 mac中卸载php

如果输出是以/bin/bash开头的路径,那么用户使用的是Bash shell,配置文件可能是.bash_profile或.profile。如果输出是以/bin/zsh开头的路径,那么用户使用的是Z shell (zsh),配置文件可能是.zshrc。注意:现代macOS版本通常默认使用zsh作为用户的登录shell,而不是bash。/.zshrc(取决于你使用的shell)文件,并删除其中关于PHP的路径配置。卸载PHP后,还需要检查并更新系统的PATH环境变量,以确保系统不再使用已卸载的PHP版本。

2024-12-06 09:59:54 613

原创 mac安装php和xdebug调试

要在Mac上安装PHP 7.4,你可以通过几种方式来完成,但鉴于PHP7.4官方已不再维护,并且Homebrew默认仓库中不再提供此版本,我们需要从第三方仓库或直接从源代码进行安装。本文以brew方式安装,如果安装的是8.0以上,就不用tap第三方仓库了直接install。第2步完成之后,会提示环境配置命令,直接执行。使用Homebrew从第三方仓库安装。安装xdebug,开发调试。查看php.ini路径。查看php的安装路径。

2024-12-05 10:48:01 780

原创 laravel中队列使用

Laravel 提供了强大的队列系统,允许开发者将耗时任务推送到后台执行,从而提升系统性能和用户体验。本文将从基本使用到深入解析,结合单进程队列的特点,完整地介绍 Laravel 队列的使用。队列的作用和场景。

2024-11-26 12:54:34 937

原创 java 根据 pdf 模板带图片文字生成pdf文件

在现代应用开发中,自动生成包含动态内容的 PDF 文档在电子发票、合同生成、表单填充等场景中有着广泛的应用。本文将介绍如何使用 iText 库动态填充 PDF 模板字段,并在指定位置插入签名和公章图片。项目需求假设我们有一个 PDF 模板文件,包含表单字段,如用户姓名、地址、爱好等,以及需要插入的签名和公章图片。我们将使用 iText 库读取 PDF 模板,填充字段数据,并在指定位置插入签名和公章图片,生成最终的 PDF 文件。技术实现使用的主要依赖。

2024-11-15 18:46:33 244

原创 本地 SSL 证书生成神器,自己创建SSL

mkcert是由Filippo Valsorda开发的一款免费开源工具,专门用于生成受信任的本地SSL/TLS证书。它通过简单命令自动生成并安装本地信任的证书,让本地环境中的HTTPS配置变得轻松无比。mkcert支持多个操作系统,满足不同开发者的需求。本文以mac为例。

2024-11-13 14:04:03 57

原创 本地 SSL 证书生成神器,自己创建SSL

mkcert是由Filippo Valsorda开发的一款免费开源工具,专门用于生成受信任的本地SSL/TLS证书。它通过简单命令自动生成并安装本地信任的证书,让本地环境中的HTTPS配置变得轻松无比。mkcert支持多个操作系统,满足不同开发者的需求。本文以mac为例。

2024-11-13 12:03:07 130

原创 springboot中返回数据脱敏

特别是在返回用户信息的 API 中,我们通常希望敏感字段(如姓名、身份证、电话号码、地址等)经过脱敏处理后再返回。@Sensitive 注解用于标记需要脱敏的字段,并指定脱敏策略。此脱敏方案适合在 Spring Boot 中使用,特别是数据敏感性较高的场景,如用户信息管理、支付信息保护等。首先,创建 Person 实体类,并在敏感字段上使用 @Sensitive 注解指定脱敏策略。:通过 SensitiveStrategy 枚举,可以轻松扩展新的脱敏策略。@Sensitive:用于标注字段的脱敏策略。

2024-11-12 14:50:02 281

原创 Jar 包加密混淆工具 ClassFinal

ClassFinal 是一款 java class 文件安全加密工具,支持直接加密 jar 包或 war 包,无需修改任何项目代码,兼容 spring-framework;可避免源码泄漏或字节码被反编译。加密后,原始的 class 文件中方法体被清空,当 class 被 classloader 加载时,真正的方法体会被解密注入。为兼容 spring,swagger 等扫描注解的框架,故而保留了方法参数、注解等信息;反编译者只能看到方法名和注解;

2024-10-07 15:36:38 387

原创 Spring Boot 多线程事务管理:使用 CyclicBarrier 和 PlatformTransactionManager 实现全局事务控制

通过本文介绍的多线程事务处理工具类,我们可以轻松地在多线程环境下控制事务的提交与回滚。特别是在多个线程同时操作数据库时,如果其中一个线程失败,如何保证其他线程的事务操作也能一并回滚,而不是部分提交,成为了开发者必须考虑的重点。在默认情况下,Spring 的事务是线程不安全的,即每个线程都有自己独立的事务上下文。为了在多线程环境下保证事务的统一提交或回滚,我们需要一种机制,能够在所有线程完成操作后,再决定是否提交事务。如果某个线程的任务失败,整个事务应当回滚,确保所有线程的任务要么一起成功,要么一起失败。

2024-09-24 23:19:13 322 1

原创 多线程事务管理:Spring Boot 实现全局事务回滚

在本文中,我们通过 TransactionTemplate 和多线程执行器实现了多线程中的全局事务控制,确保所有线程的数据库操作要么一起提交,要么在发生错误时一起回滚。在 Spring Boot 中,我们通常会在需要事务控制的服务方法上使用 @Transactional 注解来保证事务的一致性。在这些用户的处理过程中,数据库操作必须要么全部提交,要么在发生错误时全部回滚。因此,我们需要一种方式,能够在多线程环境下将所有线程的数据库操作放在同一个事务上下文中,并由主线程统一提交或回滚事务。

2024-09-24 23:12:08 891

原创 InheritableThreadLocal vs TransmittableThreadLocal 深入理解与使用场景

即使线程池复用了子线程,它仍然能获取到正确的值。TransmittableThreadLocal 的原理是:每次任务提交时,它会把父线程的 ThreadLocal 值传递给子线程(无论子线程是新建的还是复用的)。则适用于更加复杂的场景,尤其是当我们使用线程池时,希望父线程的上下文信息(例如用户信息、事务ID等)能够传递给子线程,无论子线程是新建的还是复用的。适用于一些简单的场景,比如普通的多线程编程中,父线程需要将 ThreadLocal 值传递给子线程,且子线程不需要在线程生命周期中更新值的场景。

2024-09-12 18:31:22 141

原创 Jenkins+docker+springboot 一键自动部署项目步骤

在 springboot 项目根目录新建一个名为 Dockerfile 的文件,注意没有后缀名,其内容如下:(大致就是使用 jdk8,把 jar 包添加到 docker 然后运行 prd 配置文件)因为我们项目和 jenkins 在同一台服务器,所以我们用 shell 脚本运行项目,原理既是通过 dockerfile 打包镜像,然后 docker 运行即可。点击正在构建的任务,或者点击任务名称,进入详情页面,查看控制台输出,看是否能成功打成 jar 包。】,输入仓库地址,添加凭证,选择好凭证即可。

2024-09-02 10:32:09 757

原创 IDEA插件开发中JavaProgramPatcher的使用

JavaProgramPatcher是设置jvm参数的,点击启动项目的时候会调用。本文介绍插件开发中的基本使用

2024-09-01 21:42:32 398

原创 springboot中自定义Agent

springboot中,-java agent 自定义逻辑

2024-09-01 21:41:09 285

原创 spring、springboot中优雅统计接口耗时

【代码】spring中优雅统计接口耗时。

2024-08-15 16:16:07 137

原创 laravel项目配置

【代码】laravel项目配置。

2024-08-03 01:20:13 323

原创 使用 Prometheus 监控 Spring Boot 应用

前面我们在 Spring Boot 项目中集成 Actuator 和 Micrometer 实现了 Spring Boot 应用监控,基本上覆盖 JVM 各个层间的参数指标,并且配合 Grafana Dashboard 模板基本可以满足我们日常对 Spring Boot 应用的监控。但是,对于核心业务是否也能够监控它们的执行情况呢?答案是肯定的,Micrometer 支持自定义监控指标,实现业务方面的数据监控。例如统计访问某一个 API 接口的请求数,统计实时在线人数、统计实时接口响应时间等。

2024-07-31 11:02:49 120

原创 CPU 占用率 100% 排查五步法

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。对于线上问题定位来说,分秒必争,所以我们在编码过程中,除了要实现业务功能交付,还要追求代码质量,要写出更高效、更优雅的代码。当然,除了使用上面的基础方法外,还有很多工具可以直接使用,例如阿里的 Arthas。的占用 CPU 是最高的,直接是 100%。

2024-07-29 22:29:14 373

转载 SpringBoot 单体应用实现零停机更新

在个人或者企业服务器上,总归有要更新代码的时候,普通的做法必须先终止原来进程,因为新进程和老进程端口是一个,新进程在启动时候,必定会出现端口占用的情况,但是,还有黑科技可以让两个 SpringBoot 进程真正的共用同一个端口,这是另一种解决办法,我们下回分解。那么就会出现一个问题,如果此时有大量的用户在访问,但是你的代码又必须要更新,这时候如果采用上面的做法,那么必定会导致一段时间内的用户无法访问,这段时间还取决于你的项目启动速度,那么在单体应用下,如何解决这种事情?

2024-07-23 22:34:28 188

原创 phpstorm配置xdebug3

添加PHP Remote Debug,server选择刚刚setting添加的server,IDE key填写php.ini中的xdebug.idekey。注意: XDEBUG_SESSION_START=cdn 这个参数必须有,代码这个请求需要debug,值是php.ini中配置的。Xdebug的debug端口必须配置和php.ini中一致。这里配置那个域名的那个服务要用xdebug。查看x-debug是否配置成功。在最后添加,以下是我的配置。查看php路径相关信息。php.ini 配置。

2024-07-23 11:16:52 856

原创 Spring Data MongoDB 自定义转换器:写入和读取 LocalDateTime

在使用 Spring Data MongoDB 时,有时需要将特定类型(如 LocalDateTime)与 MongoDB 文档中的特定格式(如时间戳)之间进行自定义转换。本篇博客将介绍如何创建自定义转换器来实现这一功能。读者需具备以下知识:本文涉及以下技术:转换器在 Spring Data MongoDB 中的作用:详细解释编写写入转换器的步骤:ReadingConverter:将时间戳转换为 LocalDateTime详细解释编写读取转换器的步骤:注册自定义转换器在 Spring 配置类中注册自

2024-07-10 15:51:56 806

原创 Spring Boot整合MongoDB实现事务管理

Spring Boot是一种快速开发Spring应用的方式,它提供了大量的自动配置和默认设置,以简化开发流程。MongoDB是一个基于文档的NoSQL数据库,以其高性能和灵活的数据模型而受到欢迎。从MongoDB 4.0版本开始,引入了对多文档事务的支持,这对于需要保证数据一致性的复杂应用来说是一个重要的特性。本文将介绍如何在Spring Boot应用中整合MongoDB,并实现事务管理。

2024-07-09 12:36:51 1251

原创 idea配置外置gradle

路径: /Users/caidingnu/save/gradle-8.5/init.d/ init.gradle。下载gradle包,解压。idea 配置文件修改。

2024-06-28 16:41:48 732

原创 docker+[nginx] 部署nacos2.x 集群

便于直接使用容器名连接mysql,如果不创建,连接mysql直接使用ip。nginx 【可选,见文末】

2024-06-27 17:22:30 267

原创 RabbitMQ 关闭、开启消费

默认情况下,消费者在项目启动的时候就开始监听队列消费了,在某些特殊情况,可能需要临时关闭消费。

2024-06-20 16:33:02 845

原创 @AliasFor 使用

理论上来说,注解的key和name,都有彼此的别名,设置了一个值之后,另一个值也绑定该值,实际上需要使用AnnotationUtils才行,原因是该属性值的赋予是经过AnnotationUtils中的getAnnotation方法实现的。@AliasFor 它允许开发者为一个注解的属性指定别名。通过使用@AliasFor,我们可以提供多个名称来引用同一属性,从而增加了代码的灵活性和可读性。@AliasFor 使用。

2024-06-16 16:27:33 262

原创 发布代码到maven私有仓库

Durl:私服上仓库的位置,打开nexus——>repositories菜单,可以看到该路径。DrepositoryId服务器的表示id,在nexus的configuration可以看到。maven会先从本地仓库找,本地仓库没有再从私服找,私服没有再去中央仓库(mvn远程仓库)下载,jar包下载成功在私服、本地仓库分别存储一份。-DgroupId和-DartifactId:构成了该jar包在pom.xml的坐标,项目就是依靠这两个属性定位所在位置。Dfile:表示需要上传的jar包的绝对路径。

2024-06-12 12:57:23 1046

原创 Redis 的三种集群模式

本文由转码, 原文地址。

2024-06-06 11:40:02 1343

原创 synchronized 和 ReentrantLock的区别

不管synchronized 和还是ReentrantLock 都是 Java 中的可重入锁,总体上的区别如下用法不同:synchronized 可以用来修饰普通方法、静态方法和代码块,而 ReentrantLock 只能用于代码块。获取锁和释放锁的机制不同:synchronized 是自动加锁和释放锁的,而 ReentrantLock 需要手动加锁和释放锁。锁类型不同:synchronized 是非公平锁,而 ReentrantLock 默认为非公平锁,也可以手动指定为公平锁。

2024-06-04 17:48:25 758 1

原创 发布 jar 包到 maven 中央仓库

目前开发基本都是以maven或者gradle的方式,直接引入依赖包即可,那么该咋那么发布我们自己的jar包到maven仓库,让别人使用呢?本文适用于2024.3之后的步骤。

2024-06-03 23:05:06 491

原创 日常开发踩坑

【代码】日常开发坑记录。

2024-06-03 15:00:33 145

原创 Springboot中使用spel+自定义注解实现权限控制

*** @author 蔡定努/*** permissionAll()-----只要配置了角色就可以访问* hasPermission("MENU.QUERY")-----有MENU.QUERY操作权限的角色可以访问* permitAll()-----放行所有请求* denyAll()-----只有超级管理员角色才可访问* hasAuth()-----只有登录后才可访问* hasTimeAuth(1,10)-----只有在1-10点间访问。

2024-06-02 01:00:50 401

原创 Spel表达式使用案例

【代码】Spel表达式使用案例。

2024-06-02 00:26:35 114

原创 使用Lua基本实现分布式锁并自动续期

分布式锁的成熟方案很多,比如redission、zookeeper……

2024-05-31 11:30:12 502

原创 使用Mysql作分布式锁

实现分布式锁的方式很多,比如redis、redission、zookeeper……,本文使用MYSQL,使用mysql作为分布式锁的介质,主要是围绕以下几个函数来使用的。

2024-05-27 17:09:39 533

原创 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 647 1

原创 使用docker安装向量数据库milvus

向量数据库是一种特殊的数据库,它以多维向量的形式保存信息。根据数据的复杂性和细节,每个向量的维数变化很大,从几个到几千个不等。这些数据可能包括文本、图像、音频和视频,使用各种过程(如机器学习模型、词嵌入或特征提取技术)将其转换为向量。矢量数据库的主要优点是它能够根据数据的矢量接近度或相似性快速准确地定位和检索数据。这允许基于语义或上下文相关性的搜索,而不是像传统数据库那样仅仅依赖于精确匹配或设置标准。推荐系统:向量数据库可以用于存储用户和物品的特征向量,以便实现个性化推荐。

2024-05-11 23:18:01 434

原创 docker安装向量数据库milvus

向量数据库是一种特殊的数据库,它以多维向量的形式保存信息。根据数据的复杂性和细节,每个向量的维数变化很大,从几个到几千个不等。这些数据可能包括文本、图像、音频和视频,使用各种过程(如机器学习模型、词嵌入或特征提取技术)将其转换为向量。矢量数据库的主要优点是它能够根据数据的矢量接近度或相似性快速准确地定位和检索数据。这允许基于语义或上下文相关性的搜索,而不是像传统数据库那样仅仅依赖于精确匹配或设置标准。推荐系统:向量数据库可以用于存储用户和物品的特征向量,以便实现个性化推荐。

2024-05-11 23:12:27 1057

sping-boot-shiro-jwt-redis-refreshtoken.zip

sping-boot-shiro-jwt-redis-refreshtoken,springboot整和shiro、jwt,自动刷新token

2020-08-25

spring-boot+tk.mybatis通用mapper

spring-boot+tk.mybatis通用mapper

2020-08-25

springboot整和jwt、shiro、redis实现token自动刷新

springboot整和jwt、shiro、redis实现token自动刷新

2020-08-19

vue-svg.zip

vue整合阿里素材图标svg格式demo

2020-04-25

springboot整合logback保存日志到文件

springboot整合logback保存日志到文件,日志持久化

2020-04-23

aop 权限验证demo

aop 权限验证

2020-02-27

mybatisplusPage.zip

mybatisplus自定义sqlmybatisplus自定义sqlmybatisplus自定义sqlmybatisplus自定义sql

2020-01-09

mybatisplusPage.rar

MybatisPlus 多表关联查询带分页,单表,多表:注解方式,xml方式,provider方式。

2019-12-30

mybatisplusPage.zip

MybatisPlus 多表关联查询带分页,单表,多表:注解方式,xml方式,provider方式。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2019-12-27

websocket.zip

websocket.zip

2019-12-02

shiro-demo使用redis做缓存.zip

shiro-demo使用redis做缓存.zip

2019-12-01

shiro-demo使用ehcache做缓存.zip

shiro-demo使用ehcache做缓存.zip

2019-12-01

shiro-demo不自定义缓存.zip

shiro-demo不自定义缓存,

2019-12-01

springboot整合shiro

springboot整合

2019-11-26

springboot整合JWT

springboot整合JWT

2019-11-26

centos系统springboot启动、重启、停止shell脚本

centos系统springboot启动、重启、停止shell脚本,centos系统springboot启动、重启、停止shell脚本

2019-11-23

springboot如何使用Freemarker模版引擎

springboot如何使用Freemarker模版引擎

2019-11-20

mybatisPlus.zip(3.X)

mybatisPlus.zip

2019-11-04

mybatisPlus_demo.zip

mybatisPlus_demomybatisPlus_demomybatisPlus_demomybatisPlus_demo

2019-11-01

databaseBackup.zip

数据库备份

2019-10-29

分布式下,springboot一个注解防重复提交starter

springboot一个注解防重复提交,实现原理是使用spring的aop功能,允许用户使用SPEL表达式设置防重key,支持自定义超时时间,结合redis实现分布式防重复

2024-10-16

springboot中多线程事务的实现

springboot中多线程事务的实现,整个springboot和多线程,任何一个线程异常,则每个线程的事务都回滚,保证事务的一致性

2024-09-24

超卖问题的4种解决方案、秒杀方案

超卖问题的4种解决方案,乐观锁、逻辑控制方式来解决超卖问题,都是利用数据库来实现 方案1:通过update中携带条件判断解决超卖问题 方案2:乐观锁解决超卖问题 方案3:对比数据修改前后是否和期望的一致,解决超卖问题 通过辅助类解决超卖问题,这种本质上可以解决所有并发修改db数据出错的问题

2024-09-10

springboot动态线程池、线程池监控

springboot动态线程池,用最简单的方式,api接口方式线程池监控的监控和动态线程数的调整扩展

2024-09-10

springboot整合文件分片上传

springboot整合文件分片上传,文件分片上传,分片上传学习demo,直接运行,基于java8

2024-09-10

整合canal监听mysql

使用开源框架springboot整合canal监听mysql数据变化,涵盖三种方式: main直接连接mysql监听,直接使用rabitmq监听,结合spring监听

2024-05-13

Springboot整合向量数据库Milvus

Springboot整合向量数据库Milvus实现增删改查

2024-05-12

springboot-quartz 单机demo,分布式下demo

springboot-quartz 单机demo, 分布式下,保证不重复执行

2022-02-27

vue-admin-template-master.zip

vue-admin-template-master.zip

2021-12-05

springCloudAlibaba的一个demo,包括注册中心,配置中心,服务熔断降级、链路追踪、seata分布式事务

本项目为学习springCloudAlibaba的一个demo,包括注册中心,配置中心,服务熔断降级、链路追踪、seata分布式事务

2021-10-02

springboot+JPA 多数据源配置

springboot+JPA 多数据源配置springboot+JPA 多数据源配置

2021-08-29

oneToMany-OneToOne-search.zip

oneToMany-OneToOne-search,xml方式、注解方式实现一对一查询、一对多查询,、注解方式实现一对一查询、一对多查询、注解方式实现一对一查询、一对多查询

2020-10-10

springboot-jackson-auto-transform-enum.zip

spring boot 中jackson自定义序列化和反序列化

2020-09-10

springboot-fastjson-auto-transform-enum.zip

springboot 使用fastjson自定义序列化和反序列化

2020-09-10

appname.sh

linux部署jar包的一个脚本,需要把里边的APP_NAME替换成你自己的jar包的路径,会在jar报统计目录生成控制台日志的日志文件,执行 sh appname.sh start/stop/restart

2020-07-18

dynamic-datasource-aop-loop.rar

dynamic-datasource-aop-loop.,springboot结合切面,加上自定义注解实现动态数据源切换,事务处理,循环遍历数据库文件

2020-07-10

dynamic-datasource-aop-copy

springboot结合自定义注解整合动态数据源实现通过注解切换,事务回滚springboot结合自定义注解整合动态数据源实现通过注解切换,事务回滚springboot结合自定义注解整合动态数据源实现通过注解切换,事务回滚

2020-07-09

quartz-springboot

quartz-springboot,quartz-springboot,springboot整合quartz实现对定时任务的增删改查

2020-05-16

springboot-RedisKeyExpirationListener.zip

springboot-RedisKeyExpirationListener,监听redis中的key失效,回调函数,springboot-RedisKeyExpirationListener

2020-05-02

elementui-admin 整合动态侧边栏和按钮权限控制

elementui-admin 整合动态侧边栏和按钮权限控制e

2020-04-29

空空如也

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

TA关注的人

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