限制请求频率idempotent 请求幂等idempotent 在后端接口开发好之后,对于下单,支付等一些请求,防止重复快速请求,生成重复数据,可以做请求幂等的限制,但如何优雅的做出有效的限制,还不会导致代码复杂化,需要更多的研究,下面是工作中项目使用的方案(注解+Reids分布式锁)。 注解可以更灵活的使用功能,不会导致代码复杂化 代码结构|-- idempotent |-- config |-- Idempoten 2025-02-24 编程学习 #Java
MyBatis之动态SQL:if、choose、when、otherwise、where、set、SQL片段、foreach语句 MyBatis之动态SQL 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。 使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyB 2024-08-31 编程学习 #Java #Mybatis #Sql
JavaOptional的学习 学习Optional,优雅判空 在Java中,Optional.ofNullable(object).isPresent() 是一种用于检查对象是否为 null 的常用方法。具体来说,这段代码的作用是: Optional.ofNullable(object): 这个方法创建一个 Optional 对象。Optional 是一种容器,用于避免直接使用 null 值,从而减少 NullPoint 2024-08-15 编程学习 #Java
订单重复提交问题 解决订单重复提交问题问题背景 工作开发的项目中对于订单的处理还不够完善,在网络卡顿,恶意提交或者移动端提交后返回等,都会导致订单重复创建,导致数据出错。 问题分析 导致重复生成订单的原因是业务人员在生成订单后返回至前一个页面,继续点击生成订单按钮.解决方式很多,只要有唯一的标识,让系统知道这个订单已经存在,不能继续生成。 解决方案 使用UUID随机生成一个不重复的字符串,并存放至Red 2024-08-07 编程学习 #Java
Mybatis查询记录数量与数据库直接查询不一致 起因 今天改bug,发现一个查询代码查出来的集合数只有一个,然后将其sql语句拿到数据库客户端查询,发现是多个 问题排查 通过一层一层的追溯,原来是Mybatis的xml映射不全导致的问题。xml内容类似与下面xml代码 <select id="findUserInfoListForMap" resultMap="BaseResultMap"> SELECT p.n 2024-07-29 编程学习 #Java #Mybatis
Spring中的ApplicationContext事件机制 Spring中的ApplicationContext事件机制 今天看到了ac.publishEvent(event)的写法,这个事件处理机制在学习中没有怎么去写,公司里面是用来处理与主程序无关的流程,这里想到了平时用的比较多的异步线程去处理的方式,今天来学习ApplicationContext事件机制. 理解 ApplicationContext的事件机制是观察者设计模式的实现,通过 Appl 2024-07-24 编程学习 #Java
时间在iphone中显示NaN 时间在iphone中显示NaN问题问题背景 今天公司的公众号测试中,业务人员发现时间显示NaN,当时其他人手机都正常,然后发现是苹果手机,随后去了解怎么去解决显示问题。 解决方案 原来后台返回来的数据是createTime=”2024-07-22 12:12:00”,iphone手机是不能对这种格式的时间进行格式化,需要把-改成/,解决可以调用formatDate(tim 2024-07-22 编程学习 #Java
Stream中的GroupingBy 今天在工作中写了类似下面这段代码,代码被同事看到说存在问题,今天来学习一下Stream中的groupingBy。 Map<Integer, List<String>> integerListMap = list.stream().collect(Collectors.groupingBy(String::length)); 这段代码本身从语法和功能上来看是正确的,它将li 2024-07-21 编程学习 #Java