个人工作
分享一下个人工作中遇到的问题和思考
DS_Watson
这个作者很懒,什么都没留下…
展开
-
代码写着写着,if else if 逻辑忘记了,哎。。。
这段是我拿过来测试的,发现下面这个条件成立,但是代码没有进去,自己捣鼓很久都不知道为啥,后面问了一下 一个大佬,说上面那个else if 执行了,下面这个是不执行,把括号和 else if 分开,调试会直接跳过这个else if ,此时想找个地缝溜进去,真是服了我自己啊。今天又被坑了,前人写的代码,我只在上面改,但是我也有责任,没有发现问题,测试也没有发现,不多说,直接上代码。原创 2024-09-25 19:26:04 · 202 阅读 · 0 评论 -
同步数据分页踩坑
商城系统需要同步另一个系统的经销商过来,当时写完测试的时候都没有问题,测试数据也能正常全部同步过来,昨晚上线之后就开始同步全量数据,早上过来发现数据少了,于是把两个系统的数据导出来核对,发现少了45条和,开始对比 唯一ID ,发现代码逻辑确实没有问题。这里走不通,换另一个办法,查看日志,发现了大坑,另一系统的小伙伴 在分页参数上 ,给第几页加了 1 ,哎,这里要么我改,要么他改。原因是他那边的系统设置默认分页从 0 开始。原创 2024-09-14 14:23:45 · 129 阅读 · 0 评论 -
MySQL 字符集踩坑
在这个例子中,我们首先将`email`字段重命名为`old_email`,然后将其编码更改为`utf8mb4`,最后将`old_email`重命名为`email`。我在做一个同步数据的功能,就是通过接口获取上游系统数据,然后同步到本商城系统,同步人员的时候,人员昵称包含特殊字符,表情,这一下我测试数据的表炸了,居然不支持,好嘛,让我看看咋回事。在去生产环境看下这个表也是一样,这下好了,要修改表结构了[捂脸],还要挑时间,生产有200万数据,修改可能会锁表。请注意,你需要确保新字段的类型与旧字段兼容。原创 2024-09-04 10:55:46 · 700 阅读 · 0 评论 -
AOP自定义注解防重
重复提交问题通常出现在用户在短时间内多次点击提交按钮的场景,比如在提交表单或进行支付操作时。这种情况可能会导致数据错误或产生额外的费用。为了解决这个问题,我们可以使用分布式锁或基于Redis的防重机制。通过自定义注解和AOP技术,我们可以在Spring Boot应用中轻松实现防重提交功能。这种方法不仅代码简洁,而且易于维护和扩展。以上就是一个完整的Spring Boot防重提交注解的实现过程。希望这个示例能够帮助您在实际项目中解决重复提交的问题。八、有兴趣的同学可以下载代码玩一下。原创 2024-08-27 15:17:57 · 383 阅读 · 0 评论 -
售后更新出现问题分析-幂等和防重
即使在代码对售后状态进行了校验也是无用,因为并发请求时,上一个售后代码没有执行完成,事务没有提交,新来的请求读取的售后状态也是未完结的,可以继续往下执行代码,流程是这样的: 测试模拟用户下单,提交订单后付款,然后用户又进行退款操作,需要商家审核售后,商家审核通过的话,进行退款操作,售后单更新状态售后完结。那么我现在要做的就是在在售后接口进行防重,先说一下方案,就是在入口处添加一把分布式锁,获取到锁就往下执行,代码执行完成,删除锁,防止并发重复请求。4. 删除操作:删除一个文件或数据库记录的操作也是幂等的。原创 2024-08-27 10:39:26 · 786 阅读 · 0 评论 -
@JsonProperty 踩坑
是 Jackson 库中的一个注解,它用于在 Java 对象和 JSON 之间进行序列化(将 Java 对象转换为 JSON)和反序列化(将 JSON 转换为 Java 对象)时指定字段的 JSON 属性名。如果你正在使用 fastjson 进行 JSON 的序列化和反序列化,并且想要改变字段的 JSON 属性名,你应该使用 @JSONField 注解,而不是 @JsonProperty。总之,只要你的项目中包含了 Jackson 库的依赖,并且你正确地使用了。注解,那么它就应该能够生效。原创 2024-07-19 11:27:13 · 856 阅读 · 0 评论 -
Collectors.toMap 分组踩坑
上面代码对 list 根据 id 分组,运行直接报错 Duplicate key User{id=1, age=2},说的是 Map key 重复了,list 里面确实User 确实有相同的key.merge()或toMap(),它总是抛出IllegalStateException。这可用于强制假设所收集的元素是不同的。今天在使用下面 Collectors.toMap 是遇到了错误,业务场景类似下面,直接看代码。那么这边根据业务情况,当User id 相同,留下 age 最大的就行。原创 2024-07-18 11:19:00 · 355 阅读 · 0 评论 -
字符串和正则表达式踩坑
将 equals 改成 matchers 也是false。将matchers 两个参数换了位置 就输出 true。matchers 方法需要将字符串应该是调用方。上面代码输出 false。原创 2024-07-04 11:09:37 · 443 阅读 · 0 评论 -
访问网络 测试没有问题,正式有问题
检查 地址 账号密码等是否正确,如果正确,那么就要ping 一下网络。首先检查一下网络,在正式服务器ping 一下要访问的地址。笔者因为这个问题浪费了半天时间,一开始都以为是代码问题。如果不行,联系网络管理员开通。原创 2024-06-19 08:43:54 · 194 阅读 · 0 评论 -
20240612生产环境表数据被全部删除复盘
2024-06-13 10:00:00 叫DBA 恢复数据,只能恢复到 2024-06-11 23:00:00 前的数据,DBA 将数据恢复到另外一台机器上,然后我链接上临时库进行数据整理。2024-06-13 18:00:00 停机,进行数据恢复,将 backup 文件导入正式环境,然后通过SQL 恢复数据,重启生产环境,历时一个小时。2024-06-13 14:00:00 从外部系统导出11 12 13 的调用接口的数据,进行手动导入到生产环境。时间是 2024-06-12 19:53:12。原创 2024-06-14 09:45:04 · 392 阅读 · 0 评论 -
MySQL 字段设置默认值踩坑
这个代码实例化 一个 product ,但是 minBuy 属性是 null,更新语句不会添加更新字段,mysql 会自动更新 minBuy =1 , 假如原来是 5的话,这不是我们想要的结果,所以修改如下。最近在做商城项目,由于有些商品是有起购数量的,在给表添加字段的时候设置了默认值。在java 项目中的话,实体类 属性 minBuy 用 Integer。先通过id 查询出原来的 minBuy,把它设置回去。原创 2024-05-13 14:32:07 · 282 阅读 · 2 评论 -
客服留言池设计和思考
最近公司商城需要做一个客服的留言池,简单的来说就是,当商城系统没有客服在线的时候,将顾客发送的消息存放到留言池,通过定时任务将留言池里面的消息分配给在线的客服,然后删除留言池里面的消息。原创 2024-05-10 17:09:08 · 388 阅读 · 0 评论 -
ClickHouse 学习
最近在做商城项目,通过收集用户的各种行为,主要用商品行为和用户行为,存储到ClickHouse进行分析,然后推荐或者推送商品信息给用户,所有学习一下ClickHouse.原创 2024-05-05 11:49:57 · 269 阅读 · 0 评论 -
MongoDB 时间查询踩坑
解决方法:在mongodb可视化工具Robomongo中,我们可以通过"Options" - “Display Dates in…” - "Local Timezone"来设置显示本地时间。这个方法里面会自动给传入的时间设置 timeZone , 然后直接使用如下代码进行查询即可。2.我的项目中我使用的 hutool 工具 DateUtil 进行转换。1.在做查询的时候先设置 UTC 时区。原创 2024-05-10 10:43:38 · 526 阅读 · 0 评论 -
客服在线系统分流思考
加权轮询(Weighted Round Robin, WRR)是一种负载均衡算法,它在传统轮询算法基础上引入了权重的概念,以适应不同后端服务器处理能力不均的情况。在分布式系统、网络服务、数据库集群等场景中广泛应用,旨在更公平、高效地分配请求或任务到各个节点上。原创 2024-04-28 11:45:39 · 782 阅读 · 0 评论 -
MongoDB分页踩坑
MongoDB分页踩坑,先统计总数,在设置分页参数,然后在查询原创 2024-04-29 16:04:29 · 147 阅读 · 0 评论