拄杖忙学轻声码
希望学习的同时也能和大家交流分享技术
展开
-
集成 shardingsphere-jdbc 常见问题
1、sharding.yml 文件中配置项要求非常严格,注意属性缩进、最好也不要出现汉字(包括注释汉字)、不能配置 shardingsphere-jdbc 不需要的额外其他属性。【2】actualDataNodes:把逻辑表映射到实际表命名规则。语法:数据源逻辑名_序号索引值.逻辑表名称_序号索引值,示例:ds_${0..1}.t_${0..1}【1】t:是逻辑表名称(一般取表前缀),逻辑表和实际表映射。【1】不配置此项加载单表,则会报错。2、违反1规则,可能会报错。原创 2025-03-29 14:30:00 · 19 阅读 · 0 评论 -
SpringBoot3.x 集成 shardingsphere-jdbc 实现读写分离
【1】jdbc:shardingsphere:classpath:是数据源配置文件路径的前置固定写法,后面sharding-config.yml是刚才创建的数据源配置文件目录和名称。3、打开 bootstrap.yml 文件,添加 ShardingSphereDriver 驱动,以及数据源配置文件的路径。1、在 resources 目录下创建 sharding-config.yml 文件,并添加配置信息。【2】读写库配置、负载均衡规则、分片配置逻辑表等。【3】不同数据源对应的url属性有所不同,说明。原创 2025-03-29 10:30:00 · 66 阅读 · 0 评论 -
解决seata服务常见异常问题
【1】docker创建容器时,显示的分配内存即可 -e JVM_XMS=256m -e JVM_XMX=512m。一、错误信息,此问题可能会出现在docker或k8s部署seata服务时出现。【1】看日志信息,很明显无法分配内存。原创 2025-02-23 14:00:00 · 74 阅读 · 0 评论 -
SpringBoot项目中不启动(不添加) @EnableAspectJAutoProxy 注解,AOP功能还生效吗
1、@EnableAspectJAutoProxy 是Spring框架的一个注解,其主要作用是启用AspectJ的自动代理功能,告诉Spring容器,我们希望使用AspectJ的注解来定义切面,并希望Spring容器能够自动为这些切面目标创建代理对象。2、主启动类启动 @EnableAspectJAutoProxy 之后,项目启动时,会扫描所有标注了 @Aspect 的类,并注册到Spring容器中。2、主启动类不启动 @EnableAspectJAutoProxy。原创 2025-02-17 11:00:00 · 57 阅读 · 0 评论 -
Spring AOP 和 AspectJ AOP 的区别和使用场景
如果你需要增强 final 方法、static 静态方法、字段访问、构造器调用等,或者需要在非 Spring 容器管理的对象上应用增强逻辑,AspectJ 是唯一的选择。(2)Spring AOP 是基于动态代理实现的增强,仅支持增强 Spring 容器内管理的 Bean 实例对象,不支持增强 final 和 staic 修饰的方法。1、AspectJ 是通过直接操作字节码来实现的增强,它不依赖于代理对象,能够直接对目标类的字节码进行修改。(3)AspectJ 可以增强非 Spring 容器管理的对象。原创 2025-01-24 10:15:00 · 107 阅读 · 0 评论 -
Java21虚拟线程的概念和基本使用、以及和传统线程的对比
在 Java 21 中,虚拟线程作为一项全新的功能被引入,与传统线程相比,虚拟线程不仅在内存占用和创建开销上更为轻量,而且能更高效地支持 I/O 密集型应用,极大地提升并发处理能力。1、经验证,虚拟线程性能还是非常强的,但和 Spring 提供的 ThreadPoolTaskExecutor(AsyncTaskExecutor)线程池相比,虚拟线程还是稍逊一筹。首推还是使用虚拟线程,因为虚拟线程属于逻辑层面的线程,和物理机器无关,因此可以随时创建大量的线程也不会占用过多的内存和资源消耗。原创 2025-01-24 14:15:00 · 182 阅读 · 0 评论 -
SpringBoot集成 jakarta mail 实现发送邮件
Jakarta Mail 的前身是JavaMail,JavaMail最后一个版本是于2018年8月发布,现已经停止更新。新项目应该使用 Jakarta Mail。3、如上示例只验证了简单内容的邮件,也支持附件、HTML内容、抄送等邮件。2、MailAccount 实例配置。验证结果:皆成功收到邮件。原创 2025-01-20 14:30:00 · 262 阅读 · 0 评论 -
解决:SpringBoot集成mail服务项目启动报错 Failed to instantiate [MailSenderValidatorAutoConfiguration]: Constructo
出于安全考虑,某云服务器默认封禁了TCP25端口出方向的访问流量,无法在某云上的云服务器通过TCP25端口连接外部地址。原创 2025-01-20 10:00:00 · 125 阅读 · 0 评论 -
SpringBoot提供的常用接口(拓展接口)示例
BeanPostProcess接口只在bean的初始化阶段进行扩展(注入spring上下文前后),而InstantiationAwareBeanPostProcessor接口在此基础上增加了3个方法,把可扩展的范围增加了实例化阶段和属性注入阶段。(2)使用场景,你可以在bean实例化之后,但还未初始化之前,拿到 BeanFactory,在这个时候可以对每个bean作特殊化的定制。(3)该类主要的扩展点有以下5个方法,主要在bean生命周期的两大阶段:初始化阶段和实例化阶段。1、此三者实现方式等效。原创 2024-12-22 03:58:57 · 134 阅读 · 0 评论 -
SpringBoot中 @Import 和 @ImportAutoConfiguration 的区别是什么?
1、@ImportAutoConfiguration 和 @EnableAutoConfiguration 内部都依赖了 @Import 注解,都支持把各个依赖包的 resources 目录下 MATE-INFO 目录下的 spring.factories 文件中配置的自动配置类加载到Spring容器中。1、@Import 注解只能通过 value 属性值进行导入,由于 @Import 注解的value只接受 Class 类型,意味着所导入的类必须在当前模块或所依赖的下游模块中,灵活性有限制。原创 2024-12-12 14:30:00 · 162 阅读 · 0 评论 -
Spring中使用 BeanDefinitionRegistryPostProcessor、ImportBeanDefinitionRegi,自定义注册 Bean 以及改变 Bean 的实例化加载顺序
2、使用 BeanDefinitionRegistryPostProcessor 接口 + Spring容器初始化器接口(ApplicationContextInitializer) + /META-INFO/spring.factories 这种方式注册的Bean,优先级高于 @Component、@Configuration、@Bean、@Service 等扫描注解方式注册的bean。注意:这里自定义注册bean后,那么该bean类上标注的 @Component 注解需要去掉,否则会报错bean重复。原创 2024-12-12 10:30:00 · 123 阅读 · 0 评论 -
java中使用redis及redisson客户端实现轻量级消息队列、延迟消息队列
3、如果业务并发量较大,消息过多可能会导致内存占用过大从而影响 redis 的响应速度,毕竟 redis 的主功能是用作缓存的。2、只是需要把消息队列绑定到延迟队列上,然后生产者端通过延迟队列发送,延迟时间到了之后直接路由到绑定的消息队列中。4、不过还是建议使用专业的消息队列中间件,例如:RabbitMQ、RocketMQ、PulsarMQ 等。2、如果数据量不是特别大,对消息数据可靠性要求不高、允许消息容错的业务,可以使用此方案。1、已经集成了redis服务,这里服务端版本为:Redis 7.0.8。原创 2024-12-11 14:30:00 · 358 阅读 · 0 评论 -
解决redisson:Redis server response timeout (3000 ms) occured for command: (RPUSH) with params: [xxx]
2、消费者不建议使用 take() 方法,take()获取消息会中断。2、升级 redisson 版本至最新版本或接近最新版本。2、(主因)redisson 版本与Redis服务端不兼容。1、客户端长时间未使用,服务端会断开。原创 2024-12-11 10:00:00 · 263 阅读 · 0 评论 -
Spring中使用 @Configuration、@Component、@Bean 来配置Java Bean的特点说明
2、@Configuration 用于标注在类上面,标记此类是个配置类,类中可以配置多个 @Bean 对象,当然此配置类本身也是一个Bean实例。3、@Component 用于标注在类上面,标记此类是个配置类,类中可以配置多个 @Bean 对象,当然此配置类本身也是一个Bean实例。(1)在同一个配置类中,Bean类型、名称都相同,运行后,只会按顺序实例化第一个Bean。(2)在同一个配置类中,Bean类型相同、名称不同,运行后,不同名称的Bean都会实例化。三、使用 @Bean配置 Bean 实例。原创 2024-12-08 14:30:00 · 95 阅读 · 0 评论 -
解决redis连接:DefaultClusterTopologyRefresh : Unable to connect to [10.0.4.6/<unresolved>
2、检查服务端配置 cluster-announce-ip、cluster-announce-bus-port 参数,分别需要绑定公网ip和1800x端口号,这里的1800x端口号用于主从节点通信。1、检查服务端配置bind参数是否正确,bind ip,这里的ip地址要绑定 0.0.0.0。此错误是redis客户端无法连接集群各个节点。原创 2024-12-05 15:30:00 · 369 阅读 · 0 评论 -
SpringBoot 3.x整合Redis集群(lettuce客户端),解决:DefaultClusterTopologyRefresh : Unable to connect to [10.0.4.
此问题是redis服务端集群配置有问题,连接不上,需要排查。默认为 redis 集群已经搭建好了。1、配置好以上信息后,启动如果报错,如下。3、配置Redis实例对象。原创 2024-12-05 10:30:00 · 492 阅读 · 0 评论 -
基于 Spring-Retry 自定义注解 @SpringRetry 实现接口调用异常重试
1、导入 spring-retry 依赖。2、定义注解 @SpringRetry。3、实现重试切面业务。原创 2024-12-02 10:30:00 · 170 阅读 · 0 评论 -
Mybatis Plus代码自动生成器
1、mybatis-plus 和 mybatis-plus-generator 版本皆为:3.5.7。原创 2021-08-02 11:24:31 · 647 阅读 · 1 评论 -
解决:Error parsing HTTP request header、Invalid character found in method name、names must be tokens
查阅了一些资料,说可能是请求头过大导致的问题,需要扩大其可传递请求头的大小。服务日志突然报这个问题。原创 2024-11-22 10:19:32 · 410 阅读 · 0 评论 -
解决xxl-job报错:EmbedHttpServerHandler : >>>>>>>>>>> xxl-job provider netty_http server caught exception
1、终极方案 - 关闭 EmbedServer 的日志打印。1、9999端口在lb上配置http协议。2、关闭lb心跳检查。3、自定义tcp协议。原创 2024-11-10 17:59:44 · 681 阅读 · 0 评论 -
Spring中的 InitializingBean、BeanPostProcessor、@PostConstruct 等初始化动作的执行时机分析,Bean的生命周期理解
2、初始化执行顺序优先级由高到低:BeanPostProcessor的预初始化方法 > @PostConstruct方法 > InitializingBean 的(afterPropertiesSet方法) > BeanPostProcessor的后初始化方法。1、相同点:InitializingBean 的(afterPropertiesSet方法)、BeanPostProcessor、@PostConstruct 都是在bean的属性注入完毕之后才执行,都可以用来进行bean的初始化动作。原创 2024-11-07 15:12:36 · 316 阅读 · 0 评论 -
SpringCloud微服务项目之间跨库联合查询简单的解决方案
4、如果被联合的表结构发生变化或者库服务地址等属性发生变化(必须符合快捷表的connection连接规则),对应的快捷表结构也要跟随变化或重新创建。(1)由于 db_hwy.t_one 表是 db_aly.t_one 表的快捷表,因此在 db_aly.t_one 表中添加数据即可。1、要实现跨库联合查询,前提是双方数据库服务都要开启(FEDERATED)联邦机制,才可以创建并使用快捷表。2、数据服务库:库(db_aly)、表(t_one)3、数据服务库:库(db_hwy)、表(t_one)原创 2024-10-30 14:30:00 · 394 阅读 · 0 评论 -
SpringBoot 3.x 集成 knife4j (Swagger3)
SpringBoot 3.x 开始将 javax 包改成了 jakarta ,而原swagger等包中依然使用的是javax,所以会报错,并且不支持OpenAPI 3标准,升级SpringBoot 3.x以后会有很多问题。访问地址:http://localhost:8080/doc.html。说明:Get对象类型传参方式,需要使用 @ParameterObject 标注。2、Post方式传参和原Swagger2传参方式一样,不需要特殊的标注。3、配置注解,与以往的Swagger注解用法有所不同。原创 2024-10-29 14:30:00 · 702 阅读 · 0 评论 -
xxx.jar中没有主清单属性
1、在服务模块的 pom 文件中配置如下打包插件代码,然后重新打包再运行就ok了。2、java -jar xxx.jar 报xxx.jar中没有主清单属性。原创 2021-09-21 01:06:08 · 185 阅读 · 0 评论 -
springboot项目中使用 @Lazy 注解懒加载解决循环依赖问题,以及 @Lazy 标注顺序
1、示例中 taskServiceImpl 已注入到 groupServiceImpl 中,有循环依赖问题,说明二者业务类中有互相引用注入,你注入我、我注入你。2、此时可以找到被注入的业务类 groupServiceImpl 在此业务类中的 taskService 上标注 @Lazy 懒加载即可。如上示例就是循环依赖引起的报错,往往循环依赖报错只需排查最后一个 Caused by 就行。原创 2024-06-14 10:28:10 · 921 阅读 · 0 评论 -
Spring发布订阅机制,应用监听(ApplicationListener)事件(ApplicationEvent)的基本用法
在实际业务中,一些经常重复操作的动作可以交给spring的监听发布事件来处理,写好监听逻辑,需要操作库的时候只需要发布对应的事件即可。3、例如实际业务中对订单有任何变动操作的,需要记录订单变动日志的场景下,可以使用spring的事件监听记录订单变动日志信息。如果多个监听类监听同一个事件类,此时发布一个事件,多个监听类每个都会监听到该事件。一、创建业务事件Bean,并继承ApplicationEvent。1、有监听就有发布,有发布就有监听,相辅相成。2、监听类只能监听相对应泛型Bean的事件。原创 2024-03-01 14:30:00 · 374 阅读 · 1 评论 -
Java切面中各个方法对象、参数对象、反射以及注解的分析
【1】Annotation[][] parameterAnnotations = method.getParameterAnnotations(),返回的是个二维数组,第一维度包含切入方法的全部参数信息(索引顺序与method.getParameters()和point.getArgs()的顺序一致)、第二维度包含每个参数对应的注解信息。3、Java Aspect 中最重要、也是最常用的 @Around 环绕增强切入,其中切入点对象的方法 point.proceed() 为执行我们的业务方法。原创 2022-12-05 00:27:02 · 4936 阅读 · 0 评论 -
Java实现生成普通二维码(输出流和Base64)、小程序二维码(Base64)、获取小程序短链接
1、使用 Hutool QrCodeUtil 工具类生成普通二维码,关键代码。(2)请求微信api地址需要携带query参数 access_token。(2)请求微信api地址需要携带query参数 access_token。(1)成功获取到小程序二维码所需要的Base64码。(1)成功获取到小程序短链接。1、请求微信api示例代码。1、请求微信api示例代码。(2)Base64方式。原创 2024-01-03 14:00:00 · 1403 阅读 · 0 评论 -
解决swagger报:java.lang.IllegalStateException: Ambiguous models equality when conditions is empty
(2)解决(1)问题,需要把当前类中引用的当前dto类型属性和引用当前dto类的其他dto中对应的类型属性隐藏掉(@ApiModelProperty(value = "xxx", hidden = true))例如:aDto、bDto,aDto中引用aDto自己,bDto中也引用了aDto,就会出现出现本次所说的异常现象,此时把aDto中引用aDto自己这个属性隐藏掉,再把bDto中也引用的aDto属性隐藏掉即可。2、把循环引用的两个dto中swagger属性的文档标记为隐藏 hidden = true。原创 2023-12-21 12:12:21 · 1584 阅读 · 0 评论 -
SpringBoot项目中获取(下载)业务功能的导入数据模板文件
在实际业务场景中,经常会遇到某些管理功能需要数据导入共功能,但既然是导入数据,肯定会有规则限制,有规则就会有数据模板,但这个模板一般是让客户自己下载固定规则模板,而不是让客户自己随便上传模板。下面介绍直接下载模板。1、在项目的 resource 包下创建 template 目录专门用来存放模板文件。2、把模板文件放入此目录中。3、 编写下载模板接口代码。5、成功下载模板文件。原创 2023-11-18 23:57:44 · 806 阅读 · 0 评论 -
解决nacos客户端连接服务端报:Client not connected, current status:STARTING
降低客户端版本至 1.4.1 就Ok了。nacos服务端版本:v2.1.2。nacos客户端版本:2.1.2。原创 2023-11-18 04:13:22 · 3025 阅读 · 0 评论 -
Naocs配置中心配置映射List、Map、Map嵌套List等方式
【1】@ConfigurationProperties(prefix = "list-json-str") 其中 prefix 的 list-json-str 为配置内容的根节点属性。【2】示例代码中 listJsonStrList、cfTestMap、cfTestMapValForList 是配置类的映射属性。【3】示例代码中 ListByJsonStrDto:映射属性传输类dto,此 dto 内属性与配置内容中的节点属性一一映射。原创 2023-11-08 23:57:25 · 2181 阅读 · 0 评论 -
SpringBoot项目中控制线程池、多线程事务提交、回滚的方式
1、由于多线程每个线程都是一个异步任务,所以每个线程都是一个单独的事务,通常使用的声明式事务 @Transactional() 是无法控制多线程中事务的。成功写入10000条数据。插入数据过程中模拟出现异常,事务会全部回滚。此方式没有第一种方式可靠,推荐第一种方式。2、所以只能另寻解决方式。原创 2023-02-20 05:58:46 · 5433 阅读 · 8 评论 -
Java使用 MailUtil、JavaMailSender 实现发送邮件,QQ邮箱为例
2、在 resources 目录下创建配置文件 mail.setting。2、配置 bootstrap.yml 邮件服务属性。成功接收到包含附件的邮件。原创 2023-07-24 12:00:43 · 1357 阅读 · 0 评论 -
SpringRetry实现接口异常优雅重试机制
【4】backoff:重试策略,delay = 1000, multiplier = 2 延迟1秒(1000毫秒)进行第一次重试,后续每次延迟时间会以 multiplier 的倍数进行重试,示例为:1(1000毫秒)秒、2(1000*2)秒、4(2000*2)秒、8(4000*2)秒...以此类推进行重试。【4】如果一个实现类中有多个异常回调方法,在 @Retryable 中可以使用 recover 属性指定回调的方法名。从结果可以看出,符合重试策略的预期,重试5次后依然异常失败,进入失败回调方法结束。原创 2023-04-06 01:59:43 · 712 阅读 · 0 评论 -
Idea解决Service启动服务不显示端口号的问题
1、找到目录:C:\用户\你的用户名\AppData\Local\Temp\hsperfdata_你的用户名,把这个文件夹删了即可。服务启动成功后,但是端口号不显示。2、删除后,重启服务已显示。原创 2023-04-02 02:19:19 · 4965 阅读 · 6 评论 -
java: 找不到符号 符号: 类 xxx
把被调用的模块安装到本地仓库,重新构建就解决了。模块之间引用类或者属性,报的此异常。原创 2021-08-19 17:21:32 · 1443 阅读 · 0 评论 -
The bean ‘xxx-xxx.FeignClientSpecification‘, defined in null, could not be registered. A bean with t
此错误是因为spring容器中存在相同名称的bean对象,在yml配置文件中配置代码。原创 2021-08-24 16:17:03 · 995 阅读 · 0 评论 -
启动SpringBoot服务报Error running Application. Command line is too long. Shorten the command line via JAR
编辑配置主启动类,选择 JAR manifest 即可。原创 2022-04-18 16:22:23 · 2846 阅读 · 0 评论 -
Nacos搭建配置中心并支持多配置文件
spring-cloud-starter-alibaba-nacos-discovery 和 spring-cloud-starter-alibaba-nacos-config 分别为nacos的 注册中心客户端 和 配置中心客户端,需要基于 nacos服务端 来使用。1、spring cloud starter alibaba nacos config,引用这个配置中心的依赖后,需要使用bootstrap.yml作为中转配置文件,读取优先级bootstrap.yml > application.yml。原创 2021-08-19 17:54:25 · 5881 阅读 · 2 评论