![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
软件工程与架构
- 软件工程思考
- 架构设计
- 管理工具
tangwing
三千年读史,不外功名利禄,九万里悟道,终归诗酒田园
展开
-
Git 项目管理流程与协作方式
近期随着团队规模的扩大以及业务需求的逐渐增长,我花时间思考了团队的代码协作方式,过程中有些收获跟大家分享一下。首先推荐几篇文章:阮一峰的博客介绍了比较主流的集中Git工作流程,再加上这里提到的SVN时代的单主干模型,大家应该有个比较全面的认识了。那么这么多的方式应该如何选择呢?我目前的理解是:单主干模式主干开发,tag或分支发布。这个应该不用考虑了,小项目,两三个人应该还可以玩玩,否则可...原创 2020-03-28 12:32:53 · 314 阅读 · 0 评论 -
如何选择开源许可证?-转自阮一峰的博客
源:http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html如何为代码选择开源许可证,这是一个问题。世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,也很复杂。乌克...转载 2019-02-02 11:19:40 · 196 阅读 · 0 评论 -
Code Review要点以及Java系统开发几大经典故障
Code Review要点CR应当3个人。旁观者的作用很重要。“CR是一次三方的研发协同过程” CR应该频繁进行,应当对每个最小提交单元进行CR(不一定要约会,可以异步)。小步快跑。想象一下,重大发布的前夜,你的同事对你说:“来来帮我review一下这5000行代码…” CR的威力来自于社交效应:不想自己的代码被打脸。所以每个成员都有评论的权利并且可以cc其他人。Java经典故障:f...原创 2019-01-11 10:19:28 · 189 阅读 · 0 评论 -
HeadFirst 设计模式笔记(七)—— 适配器模式与外观模式
适配器模式(Adapter):可以想想现实生活中的转换插头。适配器是一个中间层,能将类的接口转换成想要的接口。这与前文中的装饰者模式有点像,不过装饰者模式是赋予接口新的功能,而适配器模式则把接口转换成需要的样子。我的理解比较简单:假设我们手头有两个接口A和B。有一个类C需要使用接口B的方法,但是在某些情况下接口A中的一些功能更适合C,此时我们定义一个适配器类,包含一个A的对象,并用它实现B的接口。原创 2013-01-15 18:05:59 · 639 阅读 · 0 评论 -
HeadFirst 设计模式笔记(五)—— 单例模式
singleton pattern确保一个类只有一个实体,并提供一个全局访问点。这就是单例模式的功能。典型的实现:public class Singleton{private static Singleton uniqueS = null;private Singleton(){} //将构造函数设为私有public static Singleton getInst原创 2013-01-13 05:21:47 · 662 阅读 · 0 评论 -
HeadFirst 设计模式笔记(六)—— 命令模式
命令模式所实现的就像餐馆里的“订单”对象:服务员不需要知道具体的订单内容,他只需要把订单对象传送给厨师就好了!如此一来,服务员与厨师就解耦了。书中举了个遥控器的例子。遥控器需要控制多种电器的开关操作,比如有电灯和电视机。如果把打开电灯的操作直接实现在按钮函数中,那么电灯与遥控就成了紧耦合,如果电灯更新了,那么遥控器的代码也必须改变。现在我们考虑把二者解耦,遥控器不需要知道具体开灯的原创 2013-01-13 05:50:39 · 640 阅读 · 0 评论 -
How to Install Git on Ubuntu 12.04
FROM: https://www.digitalocean.com/community/articles/how-to-install-git-on-ubuntu-12-04How to Install Git on Ubuntu 12.04About GitGit is a distributed version control system released to t转载 2013-01-01 05:51:41 · 2608 阅读 · 0 评论 -
HeadFirst 设计模式笔记(三)—— decorator
装饰者模式:使用对象组合的方式在运行时给对象赋予新的功能(装饰),而不是滥用继承。举个例子就清晰了:java.io这个包中就应用了这一模式FilterInputStream是一个装饰者类,它和它的子类可以对InputStream的其他子类进行装饰。class java.io.InputStreamclass java.io.ByteArrayInputStr原创 2012-12-29 17:42:14 · 642 阅读 · 0 评论 -
HeadFirst 设计模式笔记(二)—— observer
观察者模式:定义了对象间的一对多依赖,当一个对象有新的消息,所有与之关联的对象都将得到通知。这是一个非常常用的模式,它能使我们的对象知悉现状。就像报社与订报人之间的关系:用户可以随时决定订阅或取消订阅。一旦用户订阅了报纸,那么新一期的报纸只要一出版就会被送上门。为了展示这个模式的应用,我们假设有两个类:Observer和Suject(被观察者,主题)。Subject中:原创 2012-12-29 17:08:23 · 524 阅读 · 0 评论 -
HeadFirst 设计模式笔记(四)—— 工厂模式
当我们使用“new”时我们就是在针对实现编程,这会使代码缺乏弹性。当然我们不可能避免在Java中使用new,真正需要考虑的是系统可能面对的“改变”。我们需要尽量隔离掉可能发生改变的部分。针对实现编程时,我们的代码中涉及到太多具体类,以后只要我们的系统需要改变,我们就不得不修改大量代码;而针对接口编程可以使得我们的代码更灵活,因为它涉及到的不是具体对象,而是一类对象。一个设计应该“对原创 2012-12-31 05:52:38 · 2206 阅读 · 0 评论 -
转一张git和svn常用命令的对比图l
来自http://yehudakatz.com/2010/05/13/common-git-workflows/ComparisonHere’s a workflow comparison between git and subversion:OperationgitsvnClone a repositorygit clo转载 2012-08-31 18:16:21 · 1193 阅读 · 0 评论 -
实习笔记----用脚本实现文件夹双向同步(备份)
实际问题是这样的:我的workspace需要向两个svn地址提交,一个是公司的,一个是个人项目收藏的(开源软件公司所以代码公开的:)直接commit的话只能提交一个,所以我只能又拷贝了一个工作区,每次在主工作区有改动以后手动同步到第二个工作区然后提交;而且还不能直接全部复制并替换因为svn的隐藏文件夹内容是不同的。为此我发了两个帖并得到了一些启发,经过一下午的钻研,我这个linux新手总算写出了第原创 2012-07-26 21:29:24 · 1885 阅读 · 2 评论 -
svn基本工作周期(常用命令详解)
转自http://svndoc.iusesvn.com/svnbook/1.1/svn-ch-3-sect-5.html#id447409偶然发现这篇文章,讲的简明扼要,读完基本可以应付常用的svn操作了。基本的工作周期Subversion有许多特性、选项和华而不实的高级功能,但日常的工作中你只使用其中的一小部分,有一些只在特殊情况才会使用,在这一节里,我们会介绍许多你在日转载 2012-06-30 16:23:17 · 2063 阅读 · 0 评论 -
实习日记第一天——环境配置, ofbiz, Android, https
实习就这样开始了。今天是第一天,下小雨。骑上自行车感觉空气很新鲜,心情也不错。到公司先简单认识了一下各位同事,然后领导给指了个座儿我就开始工作了。首先是环境配置。公司的研究对象是Apache开源软件联盟下的顶级项目——ERP系统ofbiz。这是一个挺特别的公司,一群有开源精神的人,公司的主要目的是发展开源软件。他们帮助企业定制和安装ofbiz,收费的同时为开源社区做贡献。开发环境是Ubun原创 2012-06-26 02:22:07 · 2901 阅读 · 11 评论 -
软件开发这点事1:软件开发概述(笔记)
第一部分一、个人素质成己:积极的心态待人:和谐的人际关系理事:专业的做事精神二、职业素质忠诚守信责任心敬业精神自动自发三、基本程序员素质1、写文档和注释的习惯代码程序员30%的时间写文档,高级程序员和系统分析员还要多很多。(把自己放在开发经理的角度)2、复用性,模块化思维能力软件最大的优点是能够复用。函数->类->组件: 复用性的增加用户控件组件技术(很多类组成组件直接使用)原创 2009-05-15 13:46:00 · 670 阅读 · 0 评论