架构设计
文章平均质量分 74
文斌
个人成长咨询顾问,北京航空航天大学软件工程硕士,信息系统项目管理师。
22年软件研发和管理经验。曾任数码视讯战略研究院架构师,百度架构师,百度技术委员会委员、最佳导师。
5年合伙人创业,经历了完整的企业生命周期。
展开
-
程序员,你离年薪100万差什么?
对于软件技术人员,有一种能力至关重要,然而很多人却又没有意识到,这种能力就是技术迁移能力。原创 2020-12-29 17:50:28 · 884 阅读 · 1 评论 -
架构师应该编码吗?
架构师从编码中来,通过构建原型、框架和基础,实验新技术,代码评审等必不可少的编码活动最终完成产品的交付。难道不应该编码吗?原创 2015-03-02 19:15:25 · 3894 阅读 · 0 评论 -
注重纪律——读《浮现式设计》有感
题记:正在读《浮现式设计:专业软件开发的演进本质》(荣获第19届Jolt生产力大奖)一书,顺手写下了一点自己的感想与浅见,是以为记。 这一章的主题是单元测试,给我带来了很多思考。 首先就是测试经济学,作者为我们带来了非常有趣的辩证逻辑:大多数软件开发专业人员都会称赞测试的好处,而大部分现代软件开发过程亦会包含测试,将其作为项目中必备的元素之一许多软件开发人员除了确保他原创 2013-02-27 21:24:01 · 2293 阅读 · 0 评论 -
注重原则和智慧结晶——读《浮现式设计》有感
题记:正在读《浮现式设计:专业软件开发的演进本质》(荣获第19届Jolt生产力大奖)一书,顺手写下了一点自己的感想与浅见,是以为记。 使用与创建分离原则是我以前没有接触的,说起来很易于理解,即分离对象的创建和使用职责,在一个系统中,限制任意实体A与任意实体B之间的关系,A可以创建B,或者A可以使用B,但A不能既创建又使用B。通过这样的分离,使得创建和使用被独立开了,如果创建方式发生原创 2013-02-24 11:07:15 · 2114 阅读 · 0 评论 -
微博网站用OAuth就一定安全吗?
以新浪微博的OAuth为例看开放平台的鉴权安全问题原创 2011-04-20 10:57:00 · 13078 阅读 · 47 评论 -
单例的灾难
单例模式是设计模式的一种,由于其实现简单、易于使用,几乎为程序员必备模式,你问100个程序员,可能99个人都会用单例模式,但是,如果再让他们总结一下单例的弊端,那能脱颖而出的就没有几个了。 单例的生存期超长,会导致内存的持续占用。这是最常见的答案。 单例在多线程环境需要小心的处理线程互斥,进行资源保护。这是少数人可以给出的答案。 单例在类的继承树中不利于使用,会破坏继承体系原创 2014-08-05 18:51:51 · 4364 阅读 · 0 评论 -
架构师的大局观
时常听到大局观这个词,每每总是心存敬畏,大局观到底为何? 当我还是一个刚入行的软件工程师的时候,我每天忙碌于代码,输入的是各种需求,输出的是各种功能模块。当时,我心中的大局观就是我输出的模块能被他人很方便的调用,能与其他人合作得愉快,能为产品做好我负责的那部分。 当我成为一名高级软件工程师的时候,我沉浸于对语言的细节研究,对面向对象方法论的深入思考,对设计思维的训练。输入的不再是零散的需求,而是一原创 2011-12-10 16:53:55 · 10881 阅读 · 22 评论 -
用Unicode迎接未来
项目中使用了emoji,然后,问题产生了,后端MySQL数据库无法存储emoji字符,悲了个剧。emoji是Unicode字符集的子集,Unicode的使用应该很普遍了,怎么会遇到这样的问题呢?这还要从头说起。 Unicode是为了解决全球字符的统一编码,用这一个字符集就可以容纳得下全球各语种的字符和特殊符号。与之对应的是GB-2312或GBK这样的国标编码,用于对中文字符进行编码的。现在原创 2014-06-17 19:51:42 · 2120 阅读 · 0 评论 -
注重软件质量——读《浮现式设计》有感
题记:正在读《浮现式设计:专业软件开发的演进本质》(荣获第19届Jolt生产力大奖)一书,顺手写下了一点自己的感想与浅见,是以为记。 封装、内聚、耦合,这是编码的首要原则。 这三个原则不是面向对象开发才有的,早在面向过程的开发方法中就已经作为普适原则存在了,随便问一位软件工程师,都能对“高内聚,低耦合”说上几句。到了面向对象方法中,对“封装”的概念进一步得到强化,利用原创 2013-02-23 17:20:43 · 2019 阅读 · 0 评论 -
Native App 不再首选
近日调研了与Web App、Hybrid App、React、HTML5相关的技术及当前的应用现状,确实有弱Native化的趋势。原创 2015-05-13 19:53:00 · 4034 阅读 · 0 评论 -
注重实践——读《浮现式设计》有感
题记:正在读《浮现式设计:专业软件开发的演进本质》(荣获第19届Jolt生产力大奖)一书,顺手写下了一点自己的感想与浅见,是以为记。 各行各业几乎都有自己的实践,不管是约定俗成,还是通过文字传承,都在这个行业中起着重要的作用。作为软件专业,虽然年轻,但该专业对实践格外重视,所以注重实践,并积累实践经验对这个专业的发展就尤为重要。 我们先来看书中提到的四个实践。原创 2013-02-25 20:12:27 · 6847 阅读 · 1 评论 -
测试驱动开发——读《浮现式设计》有感
题记:正在读《浮现式设计:专业软件开发的演进本质》(荣获第19届Jolt生产力大奖)一书,顺手写下了一点自己的感想与浅见,是以为记。 前几天刚在我的微博上说我在读一本《测试驱动开发》的书,今天在读《浮现式设计》时又遇见了“测试驱动开发”,好友胡研还调侃说现在有需求驱动开发、系分驱动开发、文档驱动开发、模型驱动开发、用例驱动开发、项目管理驱动开发、质量驱动开发等各种驱动开发。开发人员原创 2013-03-02 15:25:32 · 2379 阅读 · 2 评论 -
实用设计模式之状态模式
状态模式的针对性很强,当有状态变化的时候很多工程师会倾向于选择状态模式,但在使用时仍然存在着很多问题,比如状态的拆分不清晰、状态的变迁不准确、类的职责划分不单一等,一旦与具体的业务逻辑和已有的代码上下文放在一起,就出现了混乱。因此,本文以一个实际的例子来总结一下在现实当中如何使用状态模式。 1.什么是状态模式 状态模式(State Pattern)是设计模式的一种,属于行为模式。其定原创 2013-03-17 16:29:51 · 4815 阅读 · 2 评论 -
架构如何才能抵制熵增
首先我们来了解一下熵增定律,百度百科的描述是: “孤立系统总是趋向于熵增,最终达到熵的最大状态,也就是系统的最混乱无序状态。但是,对开放系统而言,由于它可以将内部能量交换产生的熵增通过向环境释放热量的方式转移,所以开放系统有可能趋向熵减而达到有序状态。” “熵增的热力学理论与几率学理论结合,产生形而上的哲学指导意义:事物的混乱程度越高,则其几率越大。” 通俗点理解原创 2012-02-29 23:30:05 · 12483 阅读 · 12 评论 -
设计模式15问
设计模式是什么? 优秀的设计范例 从优秀设计方案中发现和总结出来的经验 在实践中反复出现的设计问题的优秀解决方案 设计和开发人员相互交流的基本术语 设计模式不是什么? 面向对象设计的框架 可供简单组合的积木式的设计元件 新发明的创新思路和方法 解决面向对象设计问题的完整方案 我想学习设计模式,需要具备什么基础呢? 一门面向对象的编程语言 一些面向对象的基本概原创 2011-07-25 13:59:48 · 3489 阅读 · 1 评论 -
移动应用需要架构设计吗
移动应用需要软件架构设计吗?这是个经常被提到的问题。 回顾十几年前为PC开发应用软件的历史。早期没有架构设计,在可维护性和易扩展性上面都要付出相当大的成本。后来人们认识到了软件架构的重要性,并使得软件架构的概念逐渐成熟起来,在延长软件的生命周期上发挥了巨大的作用。现在,几乎所有的软件都会经过架构设计,这已经是软件开发企业和从业人员的共识。 同理,移动应用也是软件,它原创 2012-04-09 22:40:39 · 6835 阅读 · 10 评论 -
移动应用的架构约束
架构设计是在平衡各种约束条件,比如运行环境、接口标准、人员因素、技术因素、办公条件等等,具体到移动应用软件,其架构设计又有哪些特殊的约束条件呢? 首先是运算能力。移动应用主要的运行环境是移动设备如各种手机、嵌入式设备、平板电脑等。这些设备相比于PC机,其运算能力是低一些。运算能力的高低会决定我们在设计时要将大运算量的模块如何分解和放置的问题。由于移动设备的运算能力相对较低,所以浮点运原创 2012-04-16 18:57:43 · 4762 阅读 · 3 评论 -
实用设计模式之单例模式
1.什么是单例模式 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并提供全局访问点。 2.单例的使用 教科书中的示例是很简单的,要想实现一个单例类,只需要三点:定义私有的静态成员私有化构造方法提供公有的静态工厂方法 典型的代码是:原创 2013-03-27 19:13:31 · 5789 阅读 · 0 评论 -
如何避免设计过度与不足
在知乎上看到关于“什么是软件开发中的过度设计”的问题,其中一个回答很形象,摘要如下: 假如今天你打算开发一个知乎的客户端,那么一个过度设计的"你"就开始琢磨了,嗯,我要面向对象,我要可扩展,我要牛逼!开始设计,首先业务和界面要分开,先用库的形式搞一个知乎sdk,然后你就搞了一大堆接口,可是接口还没实现呢,你又想了,我要通用啊,现在的社区网站有一定的共同点,我要把他们的sdk封装到一起原创 2013-06-14 15:58:25 · 6978 阅读 · 1 评论 -
闲说缓存
翻翻博客,离最近的一篇也已经过去4个月了,这四个月当中,摩托裁员了,微软换了Windows Phone 8内核了,Apple的New iPad能销售了,Google的Android份额又升了,4年一次的奥运会也结束了。外部环境在变,内部环境也在变,部门调整,项目变更,团队有了新力量,熟悉的脸孔也在消散,世易时移。 今天看到《探讨iOS应用里的缓存设置》一文,虽然与前述这些没什么关系,原创 2012-08-13 19:50:19 · 5139 阅读 · 4 评论 -
客户端与服务器协同开发中的自测
客户端与服务器协同开发的软件,通常是确定好通信协议后由双方各自开发,到某个时间点进行联合调试这样一个过程。因此,时常有进行联调时发现问题互相推脱的现象,为了减少或避免这种情况发生对项目进度/质量造成影响,必须强调开发阶段自测的重要性,并对此进行制度化,规范化。 对客户端而言,某些界面的表现必须要有数据的支撑,在开发初期,服务器端还无法提供这样的数据,因此必须原创 2009-03-07 15:17:00 · 1600 阅读 · 0 评论 -
实用设计模式之观察者模式
1.什么是观察者模式 观察者模式是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。 2.观察者模式的实现 虽然在Java中提供了现成的Observer和Observable实现,但由于Observable已经被实现成class,所以当需要将自己的某个业务类实现成可被观察的特性时,往往还是得自己来实现,因此原创 2013-03-30 11:32:01 · 3013 阅读 · 0 评论