![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
System Architecture
文章平均质量分 77
唐家文
喜欢系统架构、开发流程的研究。
展开
-
大型Vue应用插件架构(二)
如何不用复制粘贴式的重用前端组件代码?你需要这个Vue插件框架原创 2021-03-25 16:21:36 · 584 阅读 · 1 评论 -
大型Vue应用插件架构(一)
大型应用需要处理两个重要问题:功能如何拆分成可控的小粒度如何把多个小粒度合并成一个整体针对这个问题,现在的大多数方向都往微前端(micro-frontend)倾斜,据说微前端的其中一个好处是各个分部可以独立发布和管理,这个方案是处理了分和合的问题,不过要合的有深度,各个部件需要有不同程度的协调与交互,这个是我理解的微前端的一个没有处理好的领域。而我现在以另外一个方向处理分和合的问题。整体思路先定义最终结果:我们需要一个大型应用的前端(Vue)框架,让开发同学可以分开部分来开发,其交付的内容就是原创 2021-03-14 17:23:09 · 937 阅读 · 3 评论 -
依赖关系分析是开发者必须经过的一道坎
依赖关系是什么依赖关系是用来描述一个事情发生的必要条件。如:吃饱才有力气干活。那么干活依赖吃饱这个条件。要表达干活依赖吃饱,通常我们会用一个箭头链接吃饱和干活,如下图:#mermaid-svg-l3iF11rPbbnishmX .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-l3iF11rPbbnishmX原创 2021-02-08 18:48:49 · 1173 阅读 · 0 评论 -
混合HTTP API和消息队列的对接策略
现代接口设计会默认使用HTTP,但有些情况使用HTTP API并不是最好的方案。本文尝试探讨这个问题。原创 2020-09-11 23:56:56 · 1327 阅读 · 2 评论 -
时间的基础知识
时间的基础知识前言时间的本质时间的表达方式运行结构存储方式数据库存储结构JDBC调用的影响传递方式总结前言时间处理是所有程序员都必须面对的难题,如果你遇过以下问题:时间显示时总是差八个小时时差存储在数据库的时间看起来没问题,就是程序读出来的时候差了八个小时时差浏览器传过到后台的时间,差了八个小时时差八个小时时差这个事,好像总是跟程序员过不去,而程序员总是糊里糊涂的把时差补上去完事,...原创 2018-09-30 17:38:22 · 623 阅读 · 0 评论 -
HTTP WEB基本功
我发觉很多程序员,即便是有很多年经验的,也会对HTTP基本原理的理解不够透彻,特别明显的是对资源的理解。具体问题体现在服务器中的临时文件的处理。以下让我描述一下某些错误观点。错误一:某些动态生成的资源(如PDF,验证码图片等等),需要写在文件系统中,而该目录需要在应用服务器中的某个公开目录,才可以让用户访问我们以前做的JSP,放在webapp目录中的文件都是可以直接访问的(或ASP项目中的...原创 2018-06-28 12:37:58 · 298 阅读 · 0 评论 -
机会
一般做系统开发,很多时候都是在某些基础之上搭建新的功能,或者维护现有的功能。从零开始做起的项目是很少很少遇到的。在有一定基础上建设系统,需要的技能是快速理解现有代码,框架和结构,并按需求加以改造。按这种思维做出来的代码通常不会做大手术(架构调整),因为任何大动作都影响旧的功能导致运行问题。如果幸运的,有测试代码覆盖了旧的功能,需要重构的时候比较安心,如果不幸没有任何测试代码,那结果就是不动为妙...原创 2018-04-09 23:57:57 · 151 阅读 · 0 评论 -
项目中的大改动
关于项目改动的一些分层分析:包括界面、逻辑、模型、框架上的改动原创 2017-06-09 17:26:38 · 345 阅读 · 0 评论 -
软件模块和领域概念
技术上我们经常强调模块化、组件化,但是能真正实现软件模块化,需要通过对业务领域有一定程度的理解才能达到。我们可能有专业培训组件和模块技术的课程(OSGi等),但这类课程并不会告诉我们所在的领域上具体情况应该如何划分模块,大概辨别和划分模块的能力是理所当然。但事实上并非如此。用一个例子说明:假如一个网站需要添加一个广告功能。大概有以下可能性:如果该网站本来是没有模块化的,直接就往代码里做修改。而后果原创 2015-03-29 11:13:09 · 1540 阅读 · 0 评论 -
贡献式编程(四)
xu界面上,订单明细的UI,同样定义两个区域,一个区域显示通用字段,另外一个区域显示平台特有字段。而这个平台特有区域就是可以扩展的地方了。原创 2014-09-04 14:23:56 · 823 阅读 · 0 评论 -
贡献式编程(三)
定义过贡献单元后,开始更改架构来支撑每一个贡献的可能性了。支持贡献的技术变更由于第一版和第二版是不支持贡献的,我们需要定义贡献的目的地:订单系统。先把[订单系统]抽出来。Amazon 和 eBay 分别是两个不同的贡献。在没有 Amazon 和 eBay 这两个贡献之前,订单系统就应该存在,而且应该是可以“正常”运行的(正常的意思是没有报错,只是没有下载订单数据)。第二版(第二稿)原创 2014-09-03 21:06:05 · 897 阅读 · 0 评论 -
贡献式编程(一)
我想在这里强调以下这个模块式原创 2014-09-03 10:56:39 · 1103 阅读 · 1 评论 -
贡献式编程(二)
前面说到,原创 2014-09-03 11:38:08 · 906 阅读 · 0 评论 -
新兴技术名字Reactive
近1-2年Reactive:意思是原创 2014-08-30 08:25:19 · 902 阅读 · 2 评论 -
持续集成的成功要素
成功的持续集成环境,在我看来包括几个重要部分:1. 清晰的依赖管理 Dependency Management2. 内部软件库 Package Repository3. 可配置的环境参数、配置管理 Configuration Management4. 可分拆的部署单元、发布单元、贡献单元原创 2014-09-11 15:17:34 · 1902 阅读 · 1 评论 -
一次简单的重构经验
背景曾经为一家律师事务所做的案件信息管理工作,使用的是Playframework 2.3.x / Java。由于是外包项目,原来就只是一个工程,也没有打算再拆分子模块。后来这家公司继续为系统考虑添加功能,要增加一系列的CRM中的销售管理的功能,问题慢慢浮现。我发现问题有几个:Playframework本来就能进行代码修改、编译、加载、运行,一直以来都非常方便,但是开原创 2014-08-11 09:39:16 · 1705 阅读 · 0 评论 -
贡献式编程(总结)
介绍贡献式编程的思考方式:一个系统的可扩展性,是这个系统生命力的所在。容易扩展,容易修改,容易做出贡献,生生不息。原创 2014-09-04 14:35:02 · 1564 阅读 · 1 评论