- 博客(168)
- 收藏
- 关注

原创 JVM堆内存配置错误导致过长的STW
其次怀疑是数据迁移导致的问题,因为历史原因,之前的数据在创建的时候很不规范,所以在迁移的时候进行数据分析时比较麻烦,会导致迁移后的数据与旧数据对应不上。然后再查看服务引入的redis依赖包,因为该依赖包是公司自研的,并且我在其基础上添加了redis加锁重试机制,因为报错的地方就是在执行加锁重试那一块代码,所以我怀疑是这部分代码的问题。先查看调用方的日志,发现确实是进入到服务提供方(此次重构的服务)之后就出现问题了,顿时心凉半截,想着多怕是自己写的代码问题。堆内存在增加到最大堆内存之前,一直没进行回收。
2024-07-13 15:14:03
1025

原创 Docker日志相关命令
tail 是 Docker Logs 命令的一个选项,用于限制显示容器日志的行数。通过指定 --tail 后面的数字参数,你可以只显示最后几行的日志内容。-n和–tail效果一样。
2024-06-09 15:21:03
1187
1

原创 无须关注看文章
直接上方法。首先鼠标放到关注博主即可阅读全文上面,然后右键鼠标选择检查,在Elements下面搜索 article_content,会定位到id="article_content"的一个div然后在Styles下面找到element.style代码块,我们需要手动取消掉height和overflow前面的勾选框。然后就可以阅读全文啦。
2022-12-15 10:15:25
393

原创 关于git的commit提交回退的三种命令模式
git reset --mixed HEAD^使用 git reset HEAD^ 命令默认的就是mixed模式,此命令表示保留对工作区的修改,但是修改未进入暂存区。git reset --soft HEAD^此命令也表示保留对工作区的修改,并且修改已进入暂存区。git reset --hard HEAD^此命令表示不保留对工作区的修改,也即工作区完全回退到上个版本的样子。此命令注意慎用。...
2022-01-06 00:48:41
8631
1

原创 Autowired注解与Resource注解的区别
两者的用法其实这两个注解的作用都一样,都是在做bean的注入,在使用过程中,两个注解有时候可以替换使用.两者的共同点@Resource注解和@Autowired注解都可以用作bean的注入. 在接口只有一个实现类的时候,两个注解可以互相替换,效果相同.两者的不同点@Resource注解是Java自身的注解,@Autowired注解是Spring的注解. @Resource注解有两个重要的属性,分别是name和type,如果name属性有值,则使用byName的自动注入策略,将值作为需要
2021-09-09 20:40:14
49960
27
原创 MySQL的MVCC多版本并发控制
MVCC (Multi-Version Concurrency Control) 是 MySQL 实现高并发访问的核心机制,它通过在数据行上维护多个版本,使读写操作可以并发执行而不互相阻塞。
2025-08-13 17:11:14
1022
原创 Xxl-Job的路由策略,以及使用分片广播策略优化项目现有功能
XXL-JOB路由策略摘要:系统提供多维度任务路由方案,包括基础单节点策略(FIRST/LAST/ROUND/RANDOM)确保简单调度,集群负载策略(HASH/CONSISTENT_HASH/LFU/LRU)实现智能负载均衡,特殊场景策略(FAILOVER/BUSYOVER)保障系统可靠性。核心分片广播策略支持数据并行处理,通过shardIndex/shardTotal参数实现分布式计算。不同策略适应开发测试、生产集群、关键业务等场景,开发者可根据任务特性(状态要求、负载特征、容错需求)选择最优方案,其中
2025-08-05 11:37:13
559
原创 ES组合使用must与should时的注意事项
**同时有 `must` 和 `should`**:`should` 条件变为完全可选,不要求必须匹配任何 `should` 条件,除非显式设置 `minimum_should_match`- **没有 `must` 只有 `should`**:默认至少需要匹配一个 `should` 条件,可通过 `minimum_should_match` 参数调整。{"range": {"publish_date": {"gte": "now-7d/d"}}} // 最近发布的加分。
2025-07-16 22:11:39
596
原创 ES中must与filter的区别
must的本质:贡献相关性评分的条件,适用于需要影响结果排序的场景。filter的本质:高效的二进制过滤器,适用于精确匹配和高频查询。黄金法则能用filter的不要用must—— 除非明确需要该条件影响评分。
2025-05-29 16:20:02
909
原创 Kafka的broker、topic、partition、group的关系
Kafka的消费模式主要有两种:一种是一对一的消费,也即点对点的通信,即一个发送一个接收。第二种为一对多的消费(发布/订阅模式),即一个消息发送到消息队列,消费者根据消息队列的订阅拉取消息消费。
2025-04-09 11:15:30
1172
原创 MySql表达式中字符串类型与整型的隐式转换
当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。某些转换是隐式发生的。例如,MySQL 会根据需要自动将字符串转换为数字,反之亦然。也可以使用函数显式地将数字转换为字符串。转换是隐式进行的,因为它需要字符串参数。
2025-04-03 14:48:07
488
原创 MapStruct 使用@Context注解传递上下文信息
创建包含所需信息的上下文类:2. 在 Mapper 接口中声明上下文参数在映射方法的参数中添加 注解:3. 在抽象类中使用上下文通过抽象类处理复杂逻辑,直接访问上下文字段:4. 使用场景示例 动态设置字段值:根据上下文中的用户信息设置创建者。 格式化日期:通过上下文的日期格式配置转换时间字段。 调用外部服务:从上下文中获取服务实例,查询补充数据。三、真实项目改造修改前先进行对象转换,转换之后再遍历转换结果并修改数据使用@context注解传递上下文信息,减
2025-03-27 11:27:23
665
原创 5年的项目,使用的雪花算法生成的id居然出现了重复?
今天线上出现了数据表插入数据失败的情况。异常日志如下:即出现了主键冲突。需注意:该服务在线上环境部署了6个实例。
2025-03-18 18:50:38
666
原创 真实项目中使用到的ES自定义评分脚本
/ 快速返回条件len : len1;len1 : len;return 30;return 100;return 90;// 预处理// 动态规划数组j <= len1;i <= len;j <= len1;// 取最小值根据纯文本和标签格式匹配语料。标签格式一致则加分。
2025-03-05 18:05:44
381
原创 ES中数据刷新策略refresh
参数控制文档在写入后何时对搜索可见,其行为直接影响数据可见性和系统性能。参数,可以在数据可见性、写入性能和系统稳定性之间取得最佳平衡。在 Elasticsearch 中,插入数据时的。
2025-03-05 17:59:41
1064
原创 泛型子类使用Builder提示:both methods have same erasure, yet neither hides the other
子类自定义builder方法。
2025-01-21 21:01:17
324
原创 正则表达式常用
正向先行断言用于检查某个模式在当前匹配位置后是否存在,而不包括该模式本身在内。X(?=Y)这个模式将匹配X,前提是X后面必须跟着Y。但只会返回X的匹配结果。在这个例子中,\d会匹配任何单个数字,但只会在数字后面跟着 " dollars" 的情况下匹配。字符串5 dollars可以匹配到5,而5 euros则不会。
2024-11-21 11:19:47
282
原创 Retryable重试机制
如果不需要回调方法,可以直接不写回调方法,那么实现的效果是,重试次数完了后,如果还是没成功没符合业务判断,就抛出异常。@Recover注解来开启重试失败后调用的方法(注意,需跟重处理方法在同一个类中),此注解注释的方法参数一定要是@Retryable抛出的异常,否则无法识别,可以在该方法中进行日志处理。方法的第一个参数,必须是Throwable类型的,建议是与@Retryable配置的异常一致,其他的参数,需要哪个参数,写进去就可以了(@Recover方法中有的)该回调方法与重试方法写在同一个实现类里面。
2024-11-05 17:34:21
441
1
原创 springboot项目测试环境构建出的依赖包比本地构建出的依赖包多
对比测试环境启动的jar包和本地启动的jar之后发现,确实测试环境的jar包中会有druid的jar包,而本地无此jar包。上述druid是服务pom文件中之前引入的依赖包,后续由于某种原因而不需要该依赖包了,故已在pom文件中移除掉了该依赖包。导致在构建本项目时,通过common的路径在maven仓库中得到的依赖包是其它项目的,所以会将druid引入进来。最终在组长的帮助下,发现本项目中引入的common依赖包的路径和其它项目的common依赖包的路径是一样的。而测试环境却出现上述错误。
2024-10-24 18:51:20
352
原创 ES分词导致查询结果不准确
也就是自定义一个词库,让es遇到自定义词库中的词时也进行分词。比如将上述的“层”加入自定义词库当中,如何es分词时则会将“层”给分词出来。这需要改动es的配置文件IKAnalyzer.cfg.xml,修改文件里面的扩展配置指向自定义词库。这种方案的缺点是不能一次性解决该问题,因为需要遇到此问题时,才能将未查询到的词组加入自定义词库,而且需要重启es,会影响线上功能。
2024-09-18 14:17:24
1061
原创 Java对象列表属性映射工具类
经常有这种情况,就是获取到一个对象列表之后,需要根据对象里某个字段的值去获取另一个字段的值。如下所示,有个Item对象列表,Item对象里有个id字段和Value字段,现需要根据id的值去查询value的值。
2024-09-13 17:33:54
501
原创 ElasticSearch常用DSL命令
上述命令类似于MySQL命令:where dbId = '19841159f25845008fad2512aa91f48b' and original like '%边水%'。must类似于mysql里面的and命令,上述命令相当于MySQL里面的 where dbId in(287994) and original like '%层%'。注意此处把match命令当成了mysql的like命令,其实这两个命令还是有明显区别的。1、查询索引字段的映射关系。2、查询索引的分词器等设置。3、根据指定分词器分词。
2024-09-02 17:10:01
474
原创 循环依赖问题差点导致线上事故
到了发版的日期,同事将此情况汇报给了组长,没想到才没过一会儿,组长就发现代码中确实有循环依赖,只不过该循环依赖存在于3个类之间,也就是A->B->C->A。查看代码发现,也确实是同事新写的代码的问题。在同事修改代码之前,类的关系是B->C->A,然后同事后面又在A中引入了B,所以引发了循环依赖。至于项目启动偶然才出现循环依赖的问题,这应该和类的加载顺序有关,因为spring在默认情况下不保证bean的加载顺序。起因是同事在测试环境启动项目时日志报了个循环依赖的错误,日志提示类A和类B发生了循环依赖。
2024-07-25 16:23:59
314
1
原创 时间转换Java脚本,用于时间戳和标准时间格式互转
请先确保已经正确安装了Java运行环境(JRE)。你可以在cmd命令行中输入。直接复制该代码放到txt文件中,然后更改文件类型为java.来检查Java的安装情况。
2024-06-28 09:51:35
331
原创 Consul删除失效服务实例
服务重新构建后,consul并未将旧服务剔除。服务在consul成功注册,但服务调用失败。使用官网提供的api删除无效的服务实例。请求之后就可以删除此无效实例。
2024-06-11 13:27:59
603
原创 自定义注解+AOP切面实现日志记录
在需要进行日志记录的操作方法上使用该自定义注解,并要求使用@ApiOperation注解(用于记录操作描述)。OPERATOR_NAME和OPERATOR_CODE两个字段用于记录操作人和操作人编码,从请求头中获取。
2024-05-29 13:44:10
268
原创 Consul部分服务注册失败
该服务配置了心跳检查,然而consul访问不到心跳检查接口(该接口由配置文件配置consul心跳检查时指定)然后将maven重新导入一下,再重启服务即可。这是因为该服务没有添加心跳检查的依赖包。部分服务注册成功,部分服务注册失败。
2024-05-20 18:22:49
766
原创 线上问题回溯
原因:启动类未添加该api的hystrix接口的包扫描。因为@EnableFeignClients注解里添加的包路径只会扫描到@FeignClint注解定义的接口,而扫描不到由@Component 注解定义Hystrix接口。项目启动时提示找不到该Api,该Api接口用于其它服务服务pretreatment服务。1.关于项目启动时找不到自定义的FeignApi。解决:启动类添加该api目录的包扫描。
2024-05-20 09:12:54
279
空空如也
MySQL部分数据源切换问题
2023-12-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人