- 博客(21)
- 问答 (1)
- 收藏
- 关注
原创 如何解构复杂业务
轻量、低侵入性不依赖 Spring、MyBatis 等重框架,可单独使用没有冗余配置,也不用引入笨重的 BPMN 模型可快速集成到现有项目中,基本“开箱即用”业务即流程,逻辑即组件。LiteFlow 就是把你脑子里的业务流程变成代码里的“拼图”,流程可配、组件复用,既强大又灵活。
2025-04-21 00:17:38
799
原创 通过枚举类实现策略模式的上下文切换
一、让我们先来看一段非常蠢的策略切换这段Java代码主要实现了以下功能:依赖注入策略类列表:使用了 注解来自动注入实现了 接口的所有类的实例列表。这些策略类的实例被存储在名为 的 集合中。筛选特定策略实现:通过使用流(Stream)操作,从 列表中筛选出符合特定条件的策略实现。这个条件是策略实现类上的 注解中的 属性值与请求DTO () 中的 属性值相匹配。使用反射获取注解值:在筛选过程中,代码使用了反射来访问每个策略实现类上的 注解,特别是该注解的 属性。反射是必要的,因为这些值
2024-04-29 17:10:57
599
原创 根据不同的场景选择Spring事件监听或消息中间件
Spring事件监听机制和Kafka消息中间件都可以用来实现应用间的通信和数据共享,但它们各自的设计目标和使用场景有显著的不同。
2024-03-14 15:10:18
443
1
原创 Collections验证两个集合是否存在交集关系和包含关系的方法
转换的成本(O(n))在第一次转换后就可以通过后续操作中的性能提升来弥补。进行操作通常会更高效,尤其是在处理大型数据集时。的形式存在,而你需要频繁地进行包含关系的检查,那么将这些。方法来验证一个集合是否包含另一个集合的所有元素时,选择。)中,元素的查找时间复杂度为O(1)。因此,整个操作的时间复杂度大致为O(n),其中n是。中的元素,只需要常数时间就可以检查它是否存在于。的操作时间复杂度可能达到O(n*m),其中n是。中,查找元素的时间复杂度为O(n)。这在两个列表都很大时会非常慢。因此,如果你已经有了。
2024-03-05 16:49:18
633
1
原创 mt代码规范
4.thrift中要将入参DTO转为BO,然后BO作为业务对象在biz中被调用,BO在biz中要做业务的存在性校验,如bo在biz中要验证传入的leadsId的参数的订单是否存在,传入操作人的userId的操作人是否和订单操作人信息一致。2.thrift层级做rpc接口入参的基本参数校验,如leadsModifyReqDTO的leadsId为必传参数,必须做存在性校验。3.thrift中不能调用remote接口,此为业务接口,必须调用biz接口然后由biz来调用remote接口。(调用biz业务接口)
2024-02-04 16:28:18
479
1
原创 使用Spring事件监听来发送消息
我们都知道使用mq是为了业务的解耦,那么在业务代码中插入一段消息发送代码是不是也增加了代码的耦合呢,当然我们可以使用线程池异步发送消息,但是这样依旧让代码变得臃肿,不利于维护,尤其是存在同类型发送消息的业务。此时我们可以想一下,引入mq机制是为了解耦,那么发送消息的这段代码是否可以理解为发布订阅的过程,那么我们就把发送消息的这段代码定义为一个事件,由监听器对该类型事件进行监听和统一处理,这样便实现了业务解耦,同时也省去了线程的开销。
2024-01-30 15:16:24
421
1
原创 接口的向上和向下转型
在Java中,接口的向上转型(Upcasting)和向下转型(Downcasting)也是非常重要的概念。这些概念在接口与实现类之间的关系处理中经常出现。
2024-01-24 16:36:57
676
原创 AOP切面中通知的执行顺序
在面向切面编程(AOP)中,切面(Aspect)的执行顺序是指不同切面或通知(Advice)在目标方法执行过程中的调用顺序。了解和控制这个顺序是非常重要的,特别是当你的应用程序中有多个切面都应用于同一个连接点(如同一个方法)时。
2024-01-24 15:26:28
721
3
原创 CompletableFuture.supplyAsync 和 ExecutorService.submit 的区别
则是一个更底层和简单的异步执行方式,适用于基本的异步任务执行。选择取决于具体的需求和异步编程的复杂性。提供了更强大和灵活的异步编程功能,适用于构建复杂的异步任务链。接下来给大家展示一个更通用的。
2024-01-23 20:00:00
794
1
原创 属性扩展表的创建和使用
"属性扩展表"(Attribute Expansion Table)是一个用于管理和组织数据的概念,它通常用于数据库设计、数据建模或软件开发中。这个表格的目的是为了提供一个灵活的方式来存储和检索那些不易适应传统的、固定列的表格结构的数据。总结:leads作为订单表不可随意扩展字段,一次设计leads_attribute作为订单扩展字段表,leads_id作为关联字段,并且用该字段横向分表。这种表格结构的一个典型应用案例是在电子商务系统中用于存储产品的各种不同属性,因为不同的产品可能有各自独特的属性集。
2023-12-29 14:45:22
593
1
原创 解决黑白客户名单发布和灰度发布问题
2.Lion是作者工作公司的特有中间件,可以理解为nacos的配置文件专门抽出来做了一个功能,用来获取各种类型的配置文件(可修改为nacos配置文件获取工具类)
2023-12-23 14:27:45
537
1
原创 解决静态方法注入bean问题
如果你必须使用静态字段,可以考虑通过一个非静态的setter方法来注入静态字段。在Spring中,你可以通过一个非静态的方法来设置静态字段的值。注解的方法,在所有注入完成后设置静态字段。
2023-12-19 19:15:28
817
1
原创 java主线程等待子线程池执行完再执行
是 Java 中用于等待线程池中的所有任务执行完毕的方法。这个方法通常用于在程序结束前确保所有任务都已经完成,例如在服务器关闭之前。来阻塞当前线程,直到所有任务完成执行,或者超时,或者当前线程被中断。方法来等待线程池中的所有任务执行完毕。以下是一个简单的示例。如果等待过程中当前线程被中断,它会抛出。如果线程池在指定的时间内关闭,或者调用。来创建一个线程池,并使用。在Java中,你可以使用。如果超时期限到达,返回。
2023-11-20 16:54:36
602
1
原创 datetime作为表属性查询不到,date可以
本地测试没问题,查询功能正常,上传到线上后sql打印日志显示查不出数据,经过排查后发现将日期属性从datetime改为date线上就可以正常执行了,原因暂时不知道,欢迎补充。
2023-03-28 10:35:54
221
空空如也
scala中vector类型参数在函数体中无法操作
2022-04-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人