工作实践记录
土Bo鼠
这个作者很懒,什么都没留下…
展开
-
IDEA | 更方便地查看方法的调用链路,把控代码变更的影响范围
使用场景:分析修改某个方法的影响范围。原创 2024-04-27 10:49:18 · 611 阅读 · 1 评论 -
MySQL | DDL 里 TEXT、JSON 类型字段不设置默认值
PS:还有说是考虑减少内存的损耗,参考。原创 2024-02-04 13:00:39 · 486 阅读 · 0 评论 -
IDEA | java 项目单测覆盖率看不到
单测类的目录和要测的类目录没对齐,IDEA 单测覆盖率只会展示单测类目录对应 main 目录下的类。原创 2024-02-04 12:58:26 · 642 阅读 · 0 评论 -
DataGrip | 操作数据很容易卡住
其默认设定,每次更新数据库结构时都会自动更新 Schemas。不幸的是,DataGrip 的 introspect schemas 功能有严重的性能问题,数据库有一百多个表格的情况下,同步可能要花费几十分钟,还可能耗尽服务器内存。禁用自动更新数据库表。原创 2024-02-04 12:57:48 · 1229 阅读 · 0 评论 -
Grafana | 拉不到对应环境的 prometheus 数据
所以配置好面板的 datasource 后,再触发 prometheus 数据上报,就可以拉到数据了。如果一开始没有在面板上配置拉取 datasource,等过了时间后再配置,是拉不到之前的数据的。PS:一开始误以为是不同的环境有配置的区别。原创 2024-02-04 12:57:12 · 230 阅读 · 0 评论 -
xxl-job | 2023 问题汇总
一个分片完成就会调用子任务,如果父任务和子任务都是分片广播的路由策略,那就会出现扩散的效果,如触发 n * n 次定时任务,n 为分片数,类似于笛卡尔积效果。作者也在考虑实现所有分片任务都完成的时候,再调用子任务的方式。原创 2024-02-04 12:56:24 · 280 阅读 · 0 评论 -
Java | 如何获取 Enum 类的名称列表
方法获取枚举类型的所有实例,然后使用。方法获取每个实例的名称。原创 2024-02-04 12:52:42 · 341 阅读 · 0 评论 -
接口设计 | 后台防 XSS 攻击
如果是直接记录上游传的记录,我们要做下长度校验,还有就是最好做下 escape,防止别人写入一个 HTML 脚本进来。原创 2024-02-04 12:52:07 · 96 阅读 · 0 评论 -
MySQL | DDL 不回滚;DML 一定要有 commit
DDL 涉及对数据库的结构进行更改,这些更改通常是不可逆的。例如,一旦你创建了一个表,就不容易撤销该操作,因为表可能已经包含了数据,还有其他相关的对象和权限。在大多数数据库管理系统(DBMS)中,DML(Data Manipulation Language)操作默认情况下会自动开启一个事务。这是因为 DML 操作通常需要保证数据的一致性和完整性,而事务提供了一种机制,使得一系列 DML 操作要么全部成功提交,要么全部回滚,从而确保数据库的状态不会处于不一致的中间状态。原创 2024-02-02 20:41:26 · 159 阅读 · 0 评论 -
Mybatis | 在 BATCH 操作时,获取影响行数返回 -2147482646
但这里其实弄起来反而增加了复杂度,所以我最后直接不校验数量了,对数量的要求没有那么高。问题:直接获取 updateByExampleSelective 返回的数量为负数。场景:openSession(ExecutorType.BATCH, …原创 2024-02-02 20:40:48 · 489 阅读 · 0 评论 -
Mybatis | update 时报错 Can not update sharding key
分片的列必须在 where 条件里,并且同更新的值相同;或者将该列设置为 null。因为分表键不能修改,如果改了的话,数据所在库表的位置会变,这是不符合预期的。原创 2024-02-02 20:40:15 · 542 阅读 · 0 评论 -
Mybatis | 逻辑 sql - 结果的映射默认有缓存
所以对于只有表名 tableName 变(用于 sharding)的情况下,需要修改 xml 文件:flushCache = true,来真正触发查询。mybatis 里 select 方法默认会使用缓存,即,如果逻辑 sql 的入参不变,则会走缓存。比如这次做的,遍历一个用户最近几天的核算流水表,clientNo 不变,只变真实表名的情况。原创 2024-02-02 20:39:44 · 416 阅读 · 0 评论 -
Mybatis | 遍历数据库某字段被使用到的地方时
不能只关注 mybatis 默认生成的 DO 模型,因为可能还有自定义的 DO 模型。原创 2024-02-02 20:39:04 · 101 阅读 · 0 评论 -
Postman | 用 Postman 发消息出现问题,学会看 Console
因为平时喜欢用变量的方式减少重复的工作,但这样有时也会隐藏问题,所以要关注最原始的信息,因为 Console 里的报文才是最真实的。原创 2024-02-02 20:38:33 · 115 阅读 · 0 评论 -
MyBatis | Insert null 错误,Column xxx cannot be null,即使数据库DDL里写了DEFAULT ‘‘
属性之前检查它是否为null,如果是null,那么你可以设置它为默认值(在这种情况下,是空字符串)。如果在 xml 文件里处理,也可以在null时直接不插入改字段,使用DDL里的DEFAULT逻辑。(在这种情况下,是null),而不是省略了这个值(在这种情况下,数据库才会使用默认值)。块,这可能会使你的SQL映射文件变得相当复杂,特别是当你有很多字段需要处理时。为null的情况下使用默认值,你需要在Java代码中实现这个逻辑。在MyBatis的XML映射文件中使用的插入语句显然是在为。原创 2024-02-02 20:38:08 · 838 阅读 · 0 评论 -
IDEA | 运行项目时报错 Exception in thread “main“ java.lang.NoClassDefFoundError
Build没问题,运行时报错:Exception in thread “main” java.lang.NoClassDefFoundError: org/jacoco/agent/rt/internal_43f5073/Offline。解决方式:Build > Rebuild Project。原创 2024-02-02 20:35:53 · 670 阅读 · 0 评论 -
SpringWeb | SpringWeb 接口参数的转换异常会被捕捉
SpringWeb 转换参数错误,抛出 HttpMessageConversionException被 @RestControllerAdvice 注解的 BizExceptionHandler 类捕捉,包装成 CommonErrorCode.PARAM_EXCEPTION 异常原创 2024-02-02 20:35:20 · 284 阅读 · 0 评论 -
MySQL | 一定会走索引却没有走的原因,日志报conversion相关错误
原来,是因为 client_no、loan_no 没有用字符串(原类型)的形式。MySQL 的策略是将字符串转换为数字之后再比较,而如果。== 具体情况 ==原创 2024-02-02 20:34:25 · 303 阅读 · 0 评论 -
Apollo | Apollo 配置没生效原因排查
比较下缓存和Apollo portal上的配置区别。实在不行,可以把缓存的properties文件们都删除,记得先备份一下。确认 Java VM 运行参数apollo.meta的正确性,即Apollo地址。确认给Apollo地址配置的host正确性,否则控制台可能报 WARN:同步失败。信息,可能早就已经告诉我们答案了。否则可能报WARN:同步失败。验证是不是配置缓存的影响。:多关注控制台日志里的。原创 2024-02-02 20:32:22 · 780 阅读 · 0 评论 -
MySQL | 黑盒情况下,锁表测试代码乐观锁下的事务回滚
【代码】MySQL | 黑盒情况下,锁表测试代码乐观锁下的事务回滚。原创 2024-02-02 20:29:00 · 227 阅读 · 0 评论 -
MySQL | 数据库里,查询的字段一定要加索引吗?比如这个字段枚举值只有3个,还需要加索引吗?
在数据库中,对于查询的字段是否需要加索引,需要根据具体情况来决定,一般而言,如果一个表中某个字段的枚举值只有3个,通常情况下不需要为这个字段建立索引,因为这样的字段。而对于经常被查询的字段,特别是那些在WHERE子句中频繁使用的字段,应该考虑建立索引来提高查询效率。总之,需要根据具体情况来决定是否需要为某个字段建立索引,需要考虑查询的频率、数据量大小以及其他因素来权衡。如果查询频率较低或者数据量较小,建立索引的效果可能不明显,反而会增加不必要的负担。索引的作用是加快数据检索的速度,原创 2024-02-02 20:28:25 · 568 阅读 · 0 评论 -
Java |「泛型类型擦除后类型信息被丢失」是指什么
❌ Mock无效:Mockito.doReturn(new EasyRandom().nextObject(PortalRepayPlanResponseV1.class)).when(portalDebtService).buildPortalRepayPlanResponseV1(_ as List<例如,如果在泛型方法中尝试使用T的类型信息,那么在运行时,该类型信息将不再可用。此外,如果尝试使用反射获取泛型类型的信息,也可能会遇到类似的问题。,并且在运行时,List对象中的元素类型信息也会被擦除。原创 2024-02-02 20:27:51 · 281 阅读 · 0 评论 -
MapStruct | 用`mapstruct`代替`BeanUtils.copyProperties`
2)后者在源对象模型属性增加时,目标对象的字段会漏掉该属性,但不会暴露,容易隐藏问题。不管是做对象完全转换,还是对象部分转换,我都建议试试 mapstruct 工具。1)后者无法在IDEA中用字段点击查看赋值来源,难以排查问题;1)更新了 @Mapping 相关代码后,需要先。保证删除实现再重新编译,否则更新可能不会生效。原创 2024-02-02 20:27:01 · 150 阅读 · 0 评论