- 博客(67)
- 资源 (2)
- 收藏
- 关注
原创 @KafkaListener和KafkaTemplate自动装配原理分析
依赖项和配置信息参见另一篇博文,这里主要借助源码分析@KafkaListener和KafkaTemplate自动装配原理。
2025-02-25 10:57:38
493
原创 SpringBoot配置信息加密
文章介绍基于jasypt加密算法对springboot项目的配置信息(如密码等敏感信息)进行加密的详细实现步骤,以期帮助服务提高安全性能,实测可用。该加密方式的实现原理后续再作介绍。
2024-10-29 15:57:15
467
原创 Granafa配置基于elasticsearch数据源的折线图
Granafa可以直接配置基于elasticsearch数据源的折线图,用于展示es库中数据的最值、均值、总量等。
2024-10-10 10:36:17
381
原创 maven安装本地jar包到本地仓库
有时候我们需要把本地的 jar 包 install 到本地的 maven 仓库,这时就需要手动install依赖项。
2024-09-30 15:13:41
865
原创 Lambda表达式
在Java8语言中引入了Lambda表达式,基于操作符" -> "实现,该操作符被称为Lambda操作符或箭头操作符;Lambda表达式左侧:指定了Lambda表达式需要的参数列表,对应接口的抽象方法的形参列表;Lambda表达式右侧:指定了Lambda体,即Lambda表达式要执行的功能,对应接口的抽象方法的实现逻辑;Lambda表达式本身是一个匿名方法(匿名函数),通常用于实现接口的抽象方法,然后直接赋值给接口变量,它可以使代码形式更简洁、更灵活;
2024-09-18 16:14:17
327
原创 Kafka性质小结
消息的确认包括自动确认和手动确认,通常采用手动确认的方式,配置项和代码块分别如下所示。这里需要注意的是,当消息1、2、3顺序到达,2偏移量确认失败,3偏移量确认成功时,2的偏移量将被覆盖,即后续将从3的偏移量开始消费!!!
2024-09-18 11:21:03
474
原创 Java中的正则表达式
] : 表示匹配括号里的任意一个字符。[abc]: 匹配a,b,c 的任意一个字母;[a-z]: 匹配小写字母的任意一个字母;[^abc]: 匹配 a, b, c 以外的任意一个字符;[A-Za-z]: 匹配所有的小写字母和大写字母的任意一个;[a-zA-Z0-9]: 匹配所有的小写字母和大写字母和数字的任意一个;[a-z&&[^bc]]: 匹配除了b和c以外的所有的小写字母;
2024-09-18 09:49:14
1039
原创 Nacos服务配置与服务注册问题
此时需要网络通畅,spring-boot和spring-cloud版本匹配。-job-tracker.yml》或《-job-tracker》或《
2024-08-13 16:22:56
370
原创 SimpleDateFormat的线程安全问题
假设线程A执行完calendar.setTime(date),把时间设置成2024-07-26,这时候线程被挂起,线程B获得CPU执行权。线程B也执行到了calendar.setTime(date),把时间设置为2024-07-27,线程挂起,线程A继续,calendar还会被继续使用subFormat()方法,而这时calendar用的是线程B设置的值了,这就是引发问题的根源,会出现时间不对,线程挂死等。
2024-08-12 16:54:22
504
原创 Redis数据同步
文章简单介绍基于redis-shake的redis数据同步,该工具基于每个节点同步数据,即每个主节点需同步一次,才能完成整个redis集群的数据同步。
2024-07-10 14:41:24
612
1
原创 SpringBoot配置参数获取
首先创建一个与配置项对应的POJO类,并使用@ConfigurationProperties 注解指定前缀。然后,在主程序类上添加@EnableConfigurationProperties注解,当有大量的配置参数时,可以将它们组合到一个POJO类中,并使用@ConfigurationProperties注解进行自动装配。如果想要全局共享配置参数,则可以使用@EnableConfigurationProperties注解。并传入该POJO类作为参数。
2024-06-27 14:22:33
872
原创 idea搜索快捷键
Ctrl + F / Ctrl + Shift + F 按照文本的内容查找(不搜依赖项)Ctrl + Shift + N 按文件名称搜索文件(所有类型文件)Ctrl + N 按名称搜索类(自定义类+依赖项类)Ctrl + Alt + B 查看子类方法实现。Ctrl + H 查看当前的类的继承关系。Alt + F7 查找类或方法在哪被使用。Shift + Shift 搜索任何东西。
2024-04-02 09:55:58
754
原创 RESTfull接口访问Elasticsearch
如果是keyword类型的,是不能被分词器解析,想使用match或者term来查询这个字段匹配的,只能查询出完全匹配的数据来,其他的数据差一个字符都不能被查询出来!---------------------------------【查询文档】------------------------------q=name:smy。"name": "任飘渺""name": "任飘渺""name": "任飘渺""name": "任飘渺""name": "任飘渺""name": "任飘渺""name": "任飘渺"
2024-04-01 11:31:51
577
1
原创 @Transactional注解的使用与原理
RuntimeException 的异常)或 Error 才回滚事务,其他异常不会触发回滚事务。rollbackFor 可以指定能够触发事务回滚的异常类型,如上面的测试样例。在使用@Transactional注解的时候,rollback属性默认抛出了未检查 unchecked 异常(继承。throw new Exception("Student保存3条后异常");3、在类内部常规方法,调用类内部@Transactional标注的方法;2、事务方法内部捕捉了异常,没有抛出该异常及新异常;
2024-03-27 11:18:31
423
原创 SpringBoot项目启动时的初始化操作
这里主要介绍实现ApplicationRunner接口、CommandLineRunner接口的方式进行初始化操作。实现 ApplicationRunner 接口。实现 CommandLineRunner 接口。
2024-03-08 11:27:51
553
原创 Pg分区表配置与实现
当前PgSQL支持继承式和声明式的分区表。这里主要介绍继承式分区表,继承式分区表安装分区字段的内容,可分为:**范围分区** 每个分区表包含一个或多个字段组合的一部分,并且每个分区表的范围互不重叠。比如可近日期范围分区;**列表分区** 分区表显示列出其所包含的key值;父表是普通表并且正常情况下并不存储数据。
2024-01-26 15:47:44
1465
原创 Pg批量更新数据产生的死锁问题
两个更新事务(如批量update)在已获取锁(行锁)的情况下,都尝试去获取对方的锁(行锁),会互相等待,形成死锁!2、更新事务欲修改行数据时,会获取锁来锁定该行,直到事务执行完毕后释放所有的行锁(Pg会自动为更新添加行锁);因此推测:对应较简单的查询,即使建立并使用索引过滤,Pg依然会进行全表扫描。1、基于update …的批量更新,在提交给Pg后,Pg自动生成批量更新的事务;当两个sql线程同时运行,其更新的记录"碰头"后,会产生死锁!4、死锁后,直到其中一个事务超期结束,其锁被释放,死锁才打开;
2024-01-19 16:32:22
1398
原创 关于@KafkaListener动态订阅消费topic的调研
2、使用Kafka原生客户端,手动初始化消费者并启动消费者线程。在消费者线程中,循环从nacos、redis等第三方数据源获取topic信息,与当前topic比较,如有变化则重新初始化消费者、重新订阅topic;其中,从nacos中获取topic信息可考虑使用@RefreshScope注解;程序启动时,会根据@KafkaListener的配置信息初始化消费者并订阅指定的topic。程序运行过程中修改topic,系统不会自动重新读取配置并订阅修改后的topic;1、修改topic后,重启消费程序;
2024-01-09 17:12:32
953
原创 基于kafka_exporter&prometheus&grafana的kafka监控实现
其中,kafka监控账号:user/pwd【md5(pwd)】 监听端口号:–web.listen-address=:19091 kafka_exporter。使用sudo权限,后台执行Prometheus启动命令,并启用lifecycle功能,指定监听端口为9090。报错原因:kafka_exporter版本太低!kafka_exporter启动脚本。启动grafana,默认端口3000。下载kafka_exporter。启动kafka_exporter。下载kafka监控模板。
2024-01-09 15:42:07
1340
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人