随笔分类 -  系统设计

分布式事务 - 2/ 3阶段式提交
摘要:2/3阶段提交解决的问题是分布式数据操作一致性问题,即在不同节点间数据多个操作的原子性问题,比如在A节点的数据增加和B节点数据的减少需要原子操作。 解决方案:在各个分布式节点之上引入TC(Trancaction Coordinator),由TC进行最终commit操作协调,只有各个节点的预操作(pr 阅读全文

posted @ 2019-12-26 18:32 张叫兽的技术研究院 阅读(277) 评论(0) 推荐(0) 编辑

什么是框架
摘要:到底什么是框架? 框架其实是一种约束,实现的是某种行为的机制;框架最大的价值是基于生命周期的概念,就是软件提供的服务,在服务从构建到销毁的过程中,生命周期各个节点功能实现层面上面所要遵循的约束和机制。 组件(kafaka,log4j)是为了框架的低成本实现(可复用)的产物,可以说是框架的一个实现;但 阅读全文

posted @ 2018-02-25 21:36 张叫兽的技术研究院 阅读(377) 评论(0) 推荐(0) 编辑

系统分析
摘要:分析遵循:首先分析元素以及关系,然后在针对每个元素分析其内部的活动/流程,组织为新的元素,再分析其内部有哪些流程,在进行职责归类(识别类)。 分析架构之前的C4原则和System/Segment/SubSystem/Compent其实是一脉相承的,但是Booch又提出一点就是黑盒-白盒思想,每在一个 阅读全文

posted @ 2017-06-11 14:13 张叫兽的技术研究院 阅读(271) 评论(0) 推荐(0) 编辑

单例模式还是静态类
摘要:什么时候使用单例模式,什么时候采用平台类方式提供静态对象呢? 首先讲一下什么是和单例模式, 首先,这个类在逻辑上面就是一个;只有一个实例;比如主席,全国只有一个,那么就可以设计为单例; 其次,符合单例的逻辑后,判断一下当构造的一个类的时候,不需要外部通过构造参数的形式注入外部模块的时候,就可以使用单 阅读全文

posted @ 2017-05-31 07:51 张叫兽的技术研究院 阅读(525) 评论(0) 推荐(0) 编辑

MINA实战
摘要:backlog,放入到acceptor队列中还未处理最大数量; solinger参数,用来说明close之后是否直接关闭;参数越大,等待时间越长。 mina中的udp处理,即使对端关闭也会继续传输,但是已经捕获到了对端的异常,这里需要进行处理,一旦捕获到了mina通信级别的异常session就关闭。 阅读全文

posted @ 2016-09-16 22:04 张叫兽的技术研究院 阅读(273) 评论(0) 推荐(0) 编辑

软件设计
摘要:软件设计 关系,关系,关系!做设计很重要的一点就是理清楚关系,从session池的处理(连接到同端的连个session怎么区分),到通知参数(多个文件情况如何通知应用),都在说明,设计就是要捋顺对象间关系,面向对象就是构建世界,貌似简单,但是世界对象间很多关系是隐含的,并不显式,有些关系可以忽略不用 阅读全文

posted @ 2016-08-31 21:00 张叫兽的技术研究院 阅读(270) 评论(0) 推荐(0) 编辑

Rsync和FastDFS
摘要:在做分布式文件存储的时候,常常用到两个工具,Rsync和FastDFS;这两者本质的区别在于前者的实时性相面相对较差,需要手工编写脚本同步,然后在放到定时任务(cron)中;FastDFS自动实现同组内机器互备; Rsync架构 Rsync分为客户端和服务器端,客户端主要负责和服务器通信,获取最新的文件;这里的机制和FastDFS有区别,因为没有实时性,所以Rsync在同步的时候,会将服务器... 阅读全文

posted @ 2016-03-04 12:21 张叫兽的技术研究院 阅读(1477) 评论(0) 推荐(0) 编辑

正则表达式
摘要:正则表达式有两个用途,一个用途就是判断一个字符串是否匹配某种模式;匹配从几方面下手: 另外一个用途,就是可以通过()索引字符串匹配某个规则的部分,取出来以作他用;比如取出资源部分(*.htm)作为参数传递个跳转的url; 在java中使用正则表达式还有一个group概念: 返回内容: Group的概 阅读全文

posted @ 2016-02-22 16:16 张叫兽的技术研究院 阅读(300) 评论(0) 推荐(0) 编辑

架构师架构流程
摘要:首先是需求分析 需求分析从三个层次进行,客户,用户以及开发,客户级别就是公司的领导意图以及需求方投资人的意图,比较高层的需求,比如项目周期,资金,目的,以及其他需求;用户级别,就是真正的使用的需求,,第三个就是开发级别,比如项目的团队成员,需要哪方面的技能;接着是每个层次都从三个维度进行分析,功能性的,比如机务维修系统,这个系统的目的就是要算明白钱,深航领导就是想要知道钱都花在哪些地方,因为之前他... 阅读全文

posted @ 2016-02-19 16:00 张叫兽的技术研究院 阅读(470) 评论(0) 推荐(0) 编辑

分布式架构搭建
摘要:首先讲一下架构: 分层:根据职责进行分层;分区; 切割-分布式:基于职责对于分层进行纵切进行分布式部署,比如家用空调和商用空调部署要分开来部署,比如兄弟项目组一个APP项目,订单,商品,维护都是分开来进行部署,做到业务之间松耦合; 集群,服务器负载均衡集群,数据集群,热备; 水平扩展整完了就是再回到垂直了,缓存,比如海尔的项目,因为和数据库IO很高,性能严重影响,引入了memcache,极大地提升... 阅读全文

posted @ 2016-02-17 18:04 张叫兽的技术研究院 阅读(2092) 评论(0) 推荐(0) 编辑

对世界的理解
摘要:抓住三个点:根,生命周期,以及结构化; 所谓根,就是根本,底层;对于需求分析而言,这个根就是这个项目的基本概念,比如对于机务维修系统而言,基本概念就是定期检修检,预提,预算,直接成本,间接成本;至于和海波龙系统交互等等,都是基于这些大的概念进行的;做到架构设计,这个根本,很大程度上就是对业务流程的抽象化理解,比如在中广核项目中,是一个订单,发货,运输,到货检验最后库存的过程;感觉上中间的环节非常多... 阅读全文

posted @ 2016-02-17 17:33 张叫兽的技术研究院 阅读(323) 评论(0) 推荐(0) 编辑

日志设计
摘要:如何来记录日志?回答三个问题,你的日志内容和体系就建立起来了:从记录内容来看(从内容角度)谁,在什么时间,做了什么事情,结果怎么样;结果需要说明一下,有三种可能:正常执行,业务异常以及程序异常,业务异常是指程序本身没有报错,比如更新记录不存在,设置睡眠曲线设备必须在线等,通常可以通过记录错误码以及错误信息来进行记录,业务逻辑上不符合预期;程序异常,比如空指针,数组越界等;从单条操作来看(从了解某次... 阅读全文

posted @ 2014-05-20 09:13 张叫兽的技术研究院 阅读(181) 评论(0) 推荐(0) 编辑

项目任务管理(TaskMgr)设计篇
摘要:为什么使用void FilllXX(TypeA pParm1, TypeB pParm2)应用场景色:void FillXX的好处是可以不用关心实例情况;如果在方法体中需要一个实例,而方法体只知道基类,无法提供继承类的实例,那么就需要外界出入子类的实例,来进行填充,从而实现了对某些操作的“闭”;比如... 阅读全文

posted @ 2014-02-22 00:18 张叫兽的技术研究院 阅读(639) 评论(0) 推荐(0) 编辑

系统设计
摘要:1.一定要注意日志机制,并在项目设计之初就指定日志的方式,哪些地方记录什么样的日志。 2.为什么要适用全局的css,为什么要设计类,来囊括所有的操作或者部分的操作,这些其实都在做一件事:控制。尽量多的内容在控制范围之内,而不是随意散落,让各个单体来自己决定是一件很难控制也很可怕的事情,越大的项目/机构这样也就越危险。3.做系统设计,一定要从划分的模块中跳出来,而是从模块的内在的关系和对象的角度中来做分析和设计。所谓模块是深层业务逻辑的表面体现,换言之是给客户使用的,不是你设计师设计的东西。设计师关注的是根本的东西。比如成本系统中被划分了成本科目管理,发票,项目,成本核算等模块,但是我们看到究其 阅读全文

posted @ 2013-08-24 10:06 张叫兽的技术研究院 阅读(255) 评论(0) 推荐(0) 编辑

关于概要设计
摘要:这几天主要研究了一下设计文档,因为最近客户要求一个《概要设计》,这是个问题,到底什么是概要设计,我们到底需要给客户提供什么文档才合适?首先解释一下概要设计:DB+模块+流程图。其实概要设计是一个遗留问题,因为我们我们知道早期面向流程开发的时候,客户需要的只是流程和数据库,这一点,对日项目保持的非常完好,描述详细的流程,每个流程和那些数据库相关联云云。但是现在的问题是我们已经进入到到了面向对象的时代了,我们思考的过程是需求->对象识别分析(OOA)->面向对象设计(OOD)->面向对象开发(OOP)。所以此时再看概要设计怎看都觉得很简陋而且不丰满的东西,根本无法体现出面向对象的 阅读全文

posted @ 2013-08-06 22:01 张叫兽的技术研究院 阅读(375) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示