
软件工程
文章平均质量分 65
甜瓜瓜哥
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
避免交易竞争导致状态错误和重复支付的方案
本文提出了一套完整的支付系统防重方案,通过多层防护机制避免交易竞争导致的状态错误和重复支付问题。方案包括:1)数据库层面使用事务隔离、行锁和唯一约束;2)分布式锁实现(Redis/Redisson、ZooKeeper);3)支付流程设计中的状态机与幂等性处理;4)定时对账与补偿机制;5)前端防重措施(按钮禁用、Token机制)。强调关键操作加锁、状态严格管理、全链路幂等设计,并建议建立定期对账和完善监控体系。该方案从数据库到前端构建了完整的防护链条,能有效解决支付系统中的并发问题。原创 2025-08-17 19:39:07 · 230 阅读 · 0 评论 -
如何保证订单状态的一致性
订单状态一致性保障方案:通过幂等性设计(唯一ID、状态检查)防止重复操作;采用状态机模式明确定义合法状态转换路径;分布式事务处理(2PC/TCC/SAGA)协调多服务操作;运用乐观锁/悲观锁控制并发访问;基于消息队列实现异步最终一致性,配套重试和死信机制;建立补偿体系(自动回滚+人工干预)和对账系统兜底。多维度措施形成完整一致性保障闭环。原创 2025-08-16 23:53:07 · 250 阅读 · 0 评论 -
设计模式之抽象工厂模式
摘要:抽象工厂模式是工厂模式的扩展,允许一个工厂生产多个大类产品(如手机和口罩)。与工厂模式只能生产单一产品大类不同,抽象工厂通过新增产品体系实现多产品生产,当仅存在一个产品体系时会退化为工厂模式。其实现原理是为每个产品大类创建接口,具体工厂实现多个产品创建方法。虽然增强了灵活性,但需要修改抽象工厂和具体工厂代码,违反了开闭原则。该模式适用于需要创建多个相关产品族的场景。原创 2025-08-03 15:34:53 · 214 阅读 · 0 评论 -
设计模式之责任链模式
责任链模式是一种行为型设计模式,它将多个处理对象连接成一条链,请求沿着这条链传递,直到被某个对象处理为止。典型应用场景如多级审批流程(如请假审批)。该模式优点在于解耦请求者和处理者,增强系统灵活性;缺点是可能降低性能(长链传递)且调试困难。适用于需要动态指定请求处理者的场景,但需注意控制链的长度以避免性能问题。原创 2025-08-01 21:32:42 · 279 阅读 · 0 评论 -
设计接口来调用多个其他接口并做操作的方案
本文提出了一种高效调用多接口并进行聚合操作的方案。通过CompletableFuture实现并行调用优化响应时间,采用熔断降级和超时控制提升容错性。设计了标准化的响应体结构和线程安全的聚合逻辑,结合Resilience4j实现自动重试。方案包含动态配置、接口治理等扩展能力,通过压测验证了在高并发场景下的稳定性和低错误率。最后针对共享变量累加场景,提出了线程安全的解决方案。整体实现兼顾性能、可靠性和可维护性。原创 2025-05-27 17:22:14 · 755 阅读 · 0 评论 -
如何排查优化线上接口响应慢的问题
本文系统介绍了线上接口响应慢的排查与优化方法。首先通过监控日志、资源检查和链路追踪定位问题根源,区分单接口或全局性能问题。然后分层优化:应用层优化代码逻辑和线程管理;数据库优化SQL、索引和连接池;缓存提升命中率并预防异常;网络优化依赖服务调用。此外,架构层面建议JVM调优、弹性伸缩和微服务拆分。最后通过压测验证效果,并以电商案例展示优化成效(响应时间从2s降至80ms)。持续监控和迭代优化是保障性能的关键。原创 2025-05-27 16:41:10 · 994 阅读 · 0 评论 -
工作流引擎的选择
对于比较简单的流程,OsWorkFlow会是一个比较好的选择,对于复杂的流程就不推荐了,OsWorkFlow是一个轻量化的流程引擎,基于状态机机制,数据库表很少,Osworkflow提供的工作流构成元素有:步骤(step)、条件(conditions)、循环(loops)、分支(spilts)、合并joins)等,但不支持会签、跳转、退回、加签等这些操作,需要自己扩展开发,有一定难度。Camunda我们还能正常的测试,Flowable在并发100的情况下还可以,但是200的时候就直接没有了反应。原创 2025-04-19 00:23:24 · 966 阅读 · 0 评论 -
如何设计一个单例模式下的自定义类加载器和父类加载器
首先,创建一个类加载器类,并确保它是单例的。我们可以通过延迟初始化和线程安全的方式来保证类加载器的唯一性。// 单例对象// 私有构造函数,防止外部实例化// 使用传入的父类加载器// 获取实例的静态方法// 自定义类加载实现@Override// 自定义加载逻辑// 使用父加载器加载,或者自行实现加载逻辑可以在 loadClass 方法中插入自定义的逻辑。例如,如果类是从某个特定的目录或网络位置加载,可以在这里实现相关的字节码读取和类转换操作。@Override。原创 2025-02-24 21:46:28 · 248 阅读 · 0 评论 -
设计模式之适配器模式
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。原创 2025-02-24 21:13:12 · 212 阅读 · 0 评论 -
设计模式之策略模式
定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。原创 2025-02-24 20:55:21 · 391 阅读 · 0 评论 -
软件工程复习题
原创 2023-11-09 16:22:30 · 101 阅读 · 0 评论 -
设计模式之代理模式
为其他对象提供一种代理以控制对这个对象的访问。原创 2023-07-25 14:50:32 · 77 阅读 · 0 评论 -
什么是Tomcat
将应用程序部署在Tomcat服务器上,此时Tomcat服务器起到了一个中间件的作用。即用户通过浏览器发出的http请求经过Tomcat转发到最终的目的服务器上。然后Tomcat将响应消息再返回给浏览器。在整个过程中,Tomcat首先是通过监听端口监听用户的请求,将用户的http请求进行解析后访问到指定的应用系统。最后将应用系统返回的页面呈现给用户。但如果你的应用程序是使用的JSP、ASP或者PHP等动态网页语言,浏览器是无法自行解析的。Tomcat服务器是一个免费的开放源代码的Web应用服务器。原创 2023-07-22 16:25:33 · 121 阅读 · 0 评论 -
瀑布模型和原型模型的特点对比
顺序性:必须等前一阶段的工作完成之后,才能开始后一阶段的工作。依赖性:前一阶段的输出文档是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。原创 2023-04-02 19:47:29 · 255 阅读 · 0 评论