news 2026/4/9 7:08:46

先做个垃圾出来——聊聊我的开源经历

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
先做个垃圾出来——聊聊我的开源经历

完美和拖延

程序员中的很多人都是完美主义者,在工作对自己的要求是一丝不苟,不能出一丝一毫的错误,交付给领导的技术方案连个错别字都不能有,线上也不能有bug,无论是主动或被动,很多人都有在追求完美主义。这里面也包括我~

大概一年前,我就有一个想法,做一个开源项目————订单中台系统,但是一直没有付诸行动,我给自己的解释是,我还没有想好如何设计,很多决策点困惑着我,一来二去拖了非常久的时间。

直到去年过年,我有大把的时间,闲得无聊,我不想再等了,想不明白也要开搞,我决定:先搭建一套 SpringBoot应用,把常见的框架中间件先引入进来。

先做一个垃圾出来

我发现,当我抱着做完这件事,而不是把这件事做完美的想法去做事以后,事情有了很大的进展!

引入MQ/DB/Redis/Mybatis/SpringCloud等等框架和中间件,把项目搭建好,仅用了一天半不到,剩下的半天我把项目里的工具类、基础组件写好,包括扩展点引擎和流程引擎。

万事开头难,可以先从自己最熟悉最擅长的部分开始入手~

扩展点引擎

扩展点引擎是我很早之前就想明白,同时在业界也是广泛采用的办法,它解决的痛点是交易系统中台要接入很多的业务方,每个业务方并不是完全相同。很多时候无法完全复用,需要改造系统适应新的业务。

对于一个复杂的多业务并存的交易系统,新增业务代码时,务必要保证原有业务不受影响,如果没有插件扩展能力,就会充斥大量的 if else 。

因此项目开发初期,我完成了插件扩展点引擎的开发,用了不到半天,一两百行代码,但是很关键!可以很好解决业务隔离性差和扩展难 的问题。

调研流程引擎

我还花了一天的时间调研了流程引擎框架,LiteFlow,但是调研以后发现它的流程设计和我预想中不太一样,我期望的流程引擎执行时,每个节点类似于过滤器链条中的1个节点,当流程失败以后,执行各个节点的回滚方法,但是LiteFlow只能顺序的执行每个节点,不能回滚。因此我决定自己写一个流程引擎很简单的那种,花了大概不到半天,实际用起来发现很好用~

不要等到百分百想明白再干,而是在干中想,干中学,慢慢就全明白了~

机-会

技术大厂,前端-后端-测试,全国均有机-会,感兴趣可以试试。待遇和稳定性都还不错~

不断推翻重来

开工以后项目经历了三次大的修改,其中最大的1次,我将设计好的数据库模型全部推翻,把之前写的代码全部删除重写一遍,重新梳理思路,重新设计。

之前在设计订单系统时,我把交易下单部分和履约部分分拆成两个独立的模型,后来发现完全没有必要,履约只是订单交易系统的一个模块。下单、消单、履约、退款是在订单模型上驱动订单状态改变并执行其他业务动作。订单履约没有必要抽出和订单模型一对一的模型。当然这是有前提条件的,MemberClub目前的定位是虚拟订单系统,它的履约模块的业务复杂度相比实物订单配送履约系统,是简单不少的,所以没有必要单独抽离出履约单模型,反而抽出履约单模型,会增加系统的复杂度和理解难度。

如无必要,勿增实体。

我不认为被删除的代码是做了无用功,恰恰相反,我认为如果没有这次试错,我就算干想一万年,也可能想不明白这件事。经过这次修改以后,我脑海里不成熟的想法逐渐成熟。

最后,如果欢迎掘友们加入我的开源项目 MemberClub,欢迎关注。

它可实现一天时间内搭建一套订单交易系统。 轻量级完全开源的交易引擎,以SDK方式对外提供通用的交易能力,能让开发者像搭积木方式,从0到1,快速构建一个新的电商交易系统!

github: github.com/juejin-wuya…

gitee: gitee.com/juejinwuyan…

——转载自:五阳

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 1:11:52

影响独立站SEO排名和网站性能的六大要素

网站建成后,需要做好网站优化,才能有更好的排名和更多的流量。但影响网站SEO优化的因素有很多,没有专业人员的帮助,卖家经常会多走很多弯路。今天小编与大家一起来了解一下影响谷歌SEO排名的六大主要因素。1、域名年龄、URL 和权限…

作者头像 李华
网站建设 2026/4/8 3:07:53

SpringBoot如何实现大文件秒传功能?

大文件传输系统解决方案 - 专业提案 项目背景与需求分析 作为北京教育行业国企项目负责人,我们面临以下核心需求: 大文件传输能力:单文件100G支持,文件夹传输保留层级结构稳定性要求:断点续传需支持浏览器刷新/关闭…

作者头像 李华
网站建设 2026/4/3 1:38:06

YOLO26数据增强 :自动生成图片以及xml文件,开箱即用

💡💡💡本文改进内容:针对小样本数据集如何有效的数据增强,以及如何自动生成对应的xml文件,本文提供了多种数据增强方式,如1)Gamma变化;2)滤波类数据增强: GaussianBlur、medianBlur、blur;3)缩放类数据增强;4)翻转类数据增强; 《YOLO26魔术师专栏》将从以下…

作者头像 李华
网站建设 2026/4/8 1:37:20

YOLO26优化:多尺度 | 大内核和倒瓶颈设计CMUNeXt,高效提取全局上下文信息助力医学图像检测

💡💡💡提出了一种高效的全卷积轻量级医学图像分割网络CMUNeXt,该网络能够在真实场景场景中实现快速准确的辅助诊断。CMUNeXt利用大内核和倒瓶颈设计,将远距离空间和位置信息彻底混合,高效提取全局上下文信息 💡💡💡如何使用:1)替换YOLO26 C3k2,实现二次创新,…

作者头像 李华
网站建设 2026/4/8 2:27:24

EVA Human论文复现

本文主要聚焦于EVA GitHub项目论文框架的初步理解以及在Linux的环境配置操作,部分内容可能存在错误,望提出本文中存在的问题并作出指正以及对内容进行补充,谢谢 一、论文框架 基于其整体流程以及与3DGS原理核心框架进行对比理解 1.1 输入与…

作者头像 李华
网站建设 2026/4/8 1:41:06

基于微信小程序的在线预约挂号系统(源码+lw+部署文档+讲解等)

课题介绍 本课题聚焦基于微信小程序的在线预约挂号系统的设计与实现,后端依托SpringBoot架构提供稳定业务支撑,针对性解决传统医疗就诊中挂号排队耗时久、号源管控混乱、医生排班不透明、就诊提醒缺失、跨院病历不通等核心痛点,构建集在线挂号…

作者头像 李华