
日常业务开发
文章平均质量分 95
记录日常开发的一下常用技巧
李少谦
22届毕业、软件工程、Java、写代码、独立思考
展开
-
【SpringBoot应用篇】SpringBoot+MDC+自定义Filter操作traceId实现日志链路追踪
*** traceId过滤器,用于设置traceId*/@Order(1)@Override//traceId初始化//执行后续过滤器try {logger.info("请求地址:{},耗时(ms):{}", ((HttpServletRequest) request).getRequestURI(), (et - st));/*** traceId初始化*///尝试获取http请求中的traceId。原创 2025-01-14 11:04:28 · 1072 阅读 · 0 评论 -
【SpringBoot应用篇】SpringBoot 业务代码中常用技巧
Spring MVC拦截器跟Spring拦截器相比,它里面能够获取和等web对象实例。方法 - 用于在将请求发送到控制器之前执行操作。此方法应返回true,以将响应返回给客户端。目标方法执行后执行请求完成时执行为了方便我们一般情况会用接口的实现类类。登录验证,判断用户是否登录。权限验证,判断用户是否有权限访问资源,如校验token日志记录,记录请求操作日志(用户ip,访问时间等),以便统计请求访问量。处理cookie、本地化、国际化、主题等。性能监控,监控请求处理时长等。原创 2023-01-05 09:45:19 · 1017 阅读 · 0 评论 -
【SpringBoot应用篇】【AOP+注解】SpringBoot+Redis基于注解实现接口幂等性校验
取请求头中的token,判断Redis中是否存在该token,若是存在,表示第一次发起支付请求,删除缓存中token后开始业务逻辑处理;1、客户端向系统发起一次申请token的请求,服务器系统生成token令牌,将token保存到Redis缓存中,并返回前端(令牌生成方式可以使用。WEB系统中: 就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生不同的结果。,不管执行成功多少次状态都是一致的,所以也是幂等操做。,每次执行的结果都会发生变化,这种不是幂等的。原创 2022-11-09 00:19:52 · 1356 阅读 · 0 评论 -
【日常业务开发】代码简洁之道
每次转换原有 Stream 对象不改变,返回一个新的 Stream 对象,这就允许对其操作可以像链条一样排列,形成了一个管道。只要实现方和调用方遵循规范,可以避免不必要的空值判断,这充分体现了阿里的“新六脉神剑”提倡的“因为信任,所以简单”。链式编程,也叫级联式编程,调用对象的函数时返回一个this对象指向对象本身,达到链式效果,可以级联调用。利用 Map 的 computeIfAbsent 方法,可以保证获取到的对象非空,从而避免了不必要的空判断和重新设置值。对于属性字段较少的类,可以自定义构造方法。原创 2023-10-13 09:26:29 · 2690 阅读 · 0 评论 -
【日常业务开发】接口性能优化
我们都用过数据库连接池,线程池等,这就是池思想的体现,它们解决的问题就是避免重复创建对象或创建连接,可以重复利用,避免不必要的损耗,毕竟创建销毁也会占用时间。下图是一个电商的创建订单接口,创建订单记录并插入数据库是我们的核心诉求,至于后续的用户通知,如:给用户发个短信等,如果失败,并不影响主流程的完成。分布式锁,只需要在临界资源处加锁即可,不涉及共享资源的,不必要加锁,就好比你要上卫生间,只需要把卫生间的门锁上就可以,不需要把客厅的门也锁上。引发的问题主要有:死锁、接口超时、主从延迟等。原创 2023-10-13 09:22:58 · 850 阅读 · 0 评论 -
【日常业务开发】Java实现异步编程
首先我们先看一个常见的用户下单的场景:在同步操作中,我们执行到发送短信的时候,我们必须等待这个方法彻底执行完才能执行赠送积分这个操作,如果赠送积分这个动作执行时间较长,发送短信需要等待,这就是典型的同步场景。实际上,发送短信和赠送积分没有任何的依赖关系,通过异步,我们可以实现赠送积分和发送短信。原创 2023-09-20 19:26:25 · 517 阅读 · 0 评论 -
【日常业务开发】Java调用第三方http接口的常用方式
在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。在Java项目中调用第三方接口的常用方式有:通过JDK网络类通过Apache common封装好的HttpClient通过Apache封装好的通过OkHttp通过Spring的通过hutool的HttpUtil。原创 2023-09-19 17:12:49 · 1067 阅读 · 0 评论 -
【日常业务开发】策略+工厂模式优化 if...else判断逻辑
此处的初始化是指:所有的Bean被成功装载,后处理Bean被检测并激活,所有Singleton Bean 被预实例化,ApplicationContext容器已就绪可用。业务中经常有支付业务,项目刚开始所有业务使用支付宝支付,后面湖南地区需要使用微信支付,然后湖北又需要使用易宝支付,后期可能还有扩展。工厂类PayFactory,暴露注册bean到工厂容器Map对象方法,提供根据type类型查询bean的静态方法。Key为bean的名称、value为IPay接口对应的bean实现类。对应的业务类型不好扩展。原创 2023-01-12 17:57:44 · 1179 阅读 · 0 评论 -
【日常业务开发】业务代码常见类命名
Aware就是感知的意思,一般以该单词结尾的类,都实现了Aware接口。说实话,它和Properties的区别并不大,但由于Option通常是一个类,所以功能可以扩展的更强大一些。invoker是一类接口,通常会以反射或者触发的方式,执行一些具体的业务逻辑。5、工具类***Util,***Helper。注意它们语义上的区别,一般特别复杂的转换或者有加载过程的需求,可以使用Resolver。如果你的应用程序,需要经过大量的初始化操作才能启动,那就需要把它独立出来,专门处理初始化动作。原创 2023-01-09 10:10:24 · 1150 阅读 · 0 评论 -
【日常业务开发】常用JSON库API
Jackson是当前用的比较广泛的,用来序列化和反序列化json的Java开源框架。Jackson社区相对比较活跃,更新速度也比较快, 从Github中的统计来看,Jackson是最流行的json解析器之一,Spring MVC的默认json解析器便是Jackson。GSON 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库,可以快速的将一个 Json 字符转成一个 Java 对象,或者将一个 Java 对象转化为 Json 字符串。原创 2023-01-12 14:29:02 · 2075 阅读 · 0 评论