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

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

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

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

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

原创 Autowired注解与Resource注解的区别
两者的用法其实这两个注解的作用都一样,都是在做bean的注入,在使用过程中,两个注解有时候可以替换使用.两者的共同点@Resource注解和@Autowired注解都可以用作bean的注入. 在接口只有一个实现类的时候,两个注解可以互相替换,效果相同.两者的不同点@Resource注解是Java自身的注解,@Autowired注解是Spring的注解. @Resource注解有两个重要的属性,分别是name和type,如果name属性有值,则使用byName的自动注入策略,将值作为需要
2021-09-09 20:40:14
49802
27
原创 Kafka的broker、topic、partition、group的关系
Kafka的消费模式主要有两种:一种是一对一的消费,也即点对点的通信,即一个发送一个接收。第二种为一对多的消费(发布/订阅模式),即一个消息发送到消息队列,消费者根据消息队列的订阅拉取消息消费。
2025-04-09 11:15:30
611
原创 MySql表达式中字符串类型与整型的隐式转换
当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。某些转换是隐式发生的。例如,MySQL 会根据需要自动将字符串转换为数字,反之亦然。也可以使用函数显式地将数字转换为字符串。转换是隐式进行的,因为它需要字符串参数。
2025-04-03 14:48:07
436
原创 MapStruct 使用@Context注解传递上下文信息
创建包含所需信息的上下文类:2. 在 Mapper 接口中声明上下文参数在映射方法的参数中添加 注解:3. 在抽象类中使用上下文通过抽象类处理复杂逻辑,直接访问上下文字段:4. 使用场景示例 动态设置字段值:根据上下文中的用户信息设置创建者。 格式化日期:通过上下文的日期格式配置转换时间字段。 调用外部服务:从上下文中获取服务实例,查询补充数据。三、真实项目改造修改前先进行对象转换,转换之后再遍历转换结果并修改数据使用@context注解传递上下文信息,减
2025-03-27 11:27:23
401
原创 5年的项目,使用的雪花算法生成的id居然出现了重复?
今天线上出现了数据表插入数据失败的情况。异常日志如下:即出现了主键冲突。需注意:该服务在线上环境部署了6个实例。
2025-03-18 18:50:38
404
原创 真实项目中使用到的ES自定义评分脚本
/ 快速返回条件len : len1;len1 : len;return 30;return 100;return 90;// 预处理// 动态规划数组j <= len1;i <= len;j <= len1;// 取最小值根据纯文本和标签格式匹配语料。标签格式一致则加分。
2025-03-05 18:05:44
362
原创 ES中数据刷新策略refresh
参数控制文档在写入后何时对搜索可见,其行为直接影响数据可见性和系统性能。参数,可以在数据可见性、写入性能和系统稳定性之间取得最佳平衡。在 Elasticsearch 中,插入数据时的。
2025-03-05 17:59:41
793
原创 泛型子类使用Builder提示:both methods have same erasure, yet neither hides the other
子类自定义builder方法。
2025-01-21 21:01:17
271
原创 正则表达式常用
正向先行断言用于检查某个模式在当前匹配位置后是否存在,而不包括该模式本身在内。X(?=Y)这个模式将匹配X,前提是X后面必须跟着Y。但只会返回X的匹配结果。在这个例子中,\d会匹配任何单个数字,但只会在数字后面跟着 " dollars" 的情况下匹配。字符串5 dollars可以匹配到5,而5 euros则不会。
2024-11-21 11:19:47
238
原创 Retryable重试机制
如果不需要回调方法,可以直接不写回调方法,那么实现的效果是,重试次数完了后,如果还是没成功没符合业务判断,就抛出异常。@Recover注解来开启重试失败后调用的方法(注意,需跟重处理方法在同一个类中),此注解注释的方法参数一定要是@Retryable抛出的异常,否则无法识别,可以在该方法中进行日志处理。方法的第一个参数,必须是Throwable类型的,建议是与@Retryable配置的异常一致,其他的参数,需要哪个参数,写进去就可以了(@Recover方法中有的)该回调方法与重试方法写在同一个实现类里面。
2024-11-05 17:34:21
379
1
原创 springboot项目测试环境构建出的依赖包比本地构建出的依赖包多
对比测试环境启动的jar包和本地启动的jar之后发现,确实测试环境的jar包中会有druid的jar包,而本地无此jar包。上述druid是服务pom文件中之前引入的依赖包,后续由于某种原因而不需要该依赖包了,故已在pom文件中移除掉了该依赖包。导致在构建本项目时,通过common的路径在maven仓库中得到的依赖包是其它项目的,所以会将druid引入进来。最终在组长的帮助下,发现本项目中引入的common依赖包的路径和其它项目的common依赖包的路径是一样的。而测试环境却出现上述错误。
2024-10-24 18:51:20
324
原创 ES分词导致查询结果不准确
也就是自定义一个词库,让es遇到自定义词库中的词时也进行分词。比如将上述的“层”加入自定义词库当中,如何es分词时则会将“层”给分词出来。这需要改动es的配置文件IKAnalyzer.cfg.xml,修改文件里面的扩展配置指向自定义词库。这种方案的缺点是不能一次性解决该问题,因为需要遇到此问题时,才能将未查询到的词组加入自定义词库,而且需要重启es,会影响线上功能。
2024-09-18 14:17:24
926
原创 Java对象列表属性映射工具类
经常有这种情况,就是获取到一个对象列表之后,需要根据对象里某个字段的值去获取另一个字段的值。如下所示,有个Item对象列表,Item对象里有个id字段和Value字段,现需要根据id的值去查询value的值。
2024-09-13 17:33:54
435
原创 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
439
原创 循环依赖问题差点导致线上事故
到了发版的日期,同事将此情况汇报给了组长,没想到才没过一会儿,组长就发现代码中确实有循环依赖,只不过该循环依赖存在于3个类之间,也就是A->B->C->A。查看代码发现,也确实是同事新写的代码的问题。在同事修改代码之前,类的关系是B->C->A,然后同事后面又在A中引入了B,所以引发了循环依赖。至于项目启动偶然才出现循环依赖的问题,这应该和类的加载顺序有关,因为spring在默认情况下不保证bean的加载顺序。起因是同事在测试环境启动项目时日志报了个循环依赖的错误,日志提示类A和类B发生了循环依赖。
2024-07-25 16:23:59
293
1
原创 时间转换Java脚本,用于时间戳和标准时间格式互转
请先确保已经正确安装了Java运行环境(JRE)。你可以在cmd命令行中输入。直接复制该代码放到txt文件中,然后更改文件类型为java.来检查Java的安装情况。
2024-06-28 09:51:35
304
原创 Consul删除失效服务实例
服务重新构建后,consul并未将旧服务剔除。服务在consul成功注册,但服务调用失败。使用官网提供的api删除无效的服务实例。请求之后就可以删除此无效实例。
2024-06-11 13:27:59
512
原创 自定义注解+AOP切面实现日志记录
在需要进行日志记录的操作方法上使用该自定义注解,并要求使用@ApiOperation注解(用于记录操作描述)。OPERATOR_NAME和OPERATOR_CODE两个字段用于记录操作人和操作人编码,从请求头中获取。
2024-05-29 13:44:10
249
原创 Consul部分服务注册失败
该服务配置了心跳检查,然而consul访问不到心跳检查接口(该接口由配置文件配置consul心跳检查时指定)然后将maven重新导入一下,再重启服务即可。这是因为该服务没有添加心跳检查的依赖包。部分服务注册成功,部分服务注册失败。
2024-05-20 18:22:49
683
原创 线上问题回溯
原因:启动类未添加该api的hystrix接口的包扫描。因为@EnableFeignClients注解里添加的包路径只会扫描到@FeignClint注解定义的接口,而扫描不到由@Component 注解定义Hystrix接口。项目启动时提示找不到该Api,该Api接口用于其它服务服务pretreatment服务。1.关于项目启动时找不到自定义的FeignApi。解决:启动类添加该api目录的包扫描。
2024-05-20 09:12:54
265
原创 常用反射方法
getActualTypeArguments():返回表示此类型实际类型参数的 Type对象的数组。【一般不直接使用该方法,而是在该方法后加一个下标,如下两行】getGenericSuperclass():返回当前类父类的类型(即:包名.类名)getActualTypeArguments()[0]:返回当前类父类泛型的第一个参数。getActualTypeArguments()[1]:返回当前类父类泛型的第二个参数。getClass():返回当前类的包名.类名。
2024-05-09 15:55:47
158
原创 Java实体类之间的转换
通常在后端开发中经常不直接返回实体Entity类,经过处理转换返回前端,前端提交过来的对象也需要经过转换Entity实体才做存储。
2024-03-26 14:00:19
1650
原创 @Scheduled的使用
Scheduled是springboot自带的定时任务注解,可以快速实现任务的定时执行,使用方法是直接在要实现定时任务的方法上加上@Scheduled注解。但是需要特别注意的是,在使用这个注解时应现在启动类上加上@EnableScheduling注解,表示可以开启定时任务的注解。
2024-03-21 10:08:31
3973
原创 死记硬背spring bean 的生命周期
spring bean的生命周期主要会经过3个关键步骤,即实例化对象、给对象进行属性注入、对象初始化,只不过在进行对象初始化之前或之后有可能会进行一些自定义的处理,比如对象实现了BeanNameWare接口,可以用来设置bean对象的名称,也比如对象实现了BeanPostProcessor接口,就可以增加一些自定义的逻辑在该接口的两个方法中。当然对象初始化完成后,最后还可以增加对象的销毁方法,让对象在销毁时进行一些自定义的操作。
2024-02-29 21:45:29
673
原创 bat脚本打开多个黑窗口并执行不同的命令
在使用java -jar运行jar包之前,需要先启动redis,而redis的安装目录与jar包不在同一目录下,所以每次启动项目的时候都需要来回的切换目录。现写了一个bat脚本,用来一键启动redis和jar包。start cmd /k "cd /d redis安装目录 && redis-server redis.windows.conf"其中,cmd /k命令是不关闭黑窗口的命令,timeout /T 3表示等待3秒,/NOBREAK表示键盘输入不会中断等待。
2024-01-26 15:41:30
466
原创 关于数据库切换的麻烦
现项目使用了两个数据源,分别为A、B,两个数据库的数据结构并不相同,数据库A是用来做查询一些基本信息的,数据库B是用来保留业务操作数据的。后端是在mapper层用@DS注解来区分哪些地方用数据库A,而哪些地方用数据库B的。现在有个新需求,业务新增一个功能,用户可以在界面选择,有两个选项,分别是,而业务需要展示对应模式的数据,也就是说需要新增一个数据库C,用来保留训练模式下的数据,原本的数据库B用来保留作战模式下的数据,但是不管在哪种模式下,数据库A是不需要切换的。
2024-01-09 11:43:51
646
空空如也
MySQL部分数据源切换问题
2023-12-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人