随笔分类 - [20]DesignAnalysis设计分析
-
面向对象软件设计原则—— 软件实体的设计原则
摘要:提起面向对象,大家也许觉得自己已经非常“精通”了,起码也到了“灵活运用”的境界。面向对象设计不就是OOD吗?不就是用C++、Java、Smalltalk等面向对象语言写程序吗?不就是封装+继承+多态吗? 很好!大家已经掌握了不少对面向对象设计的基本要素:开发语言、基本概念、机制。Java是一种纯面向对象语言,是不是用Java写程序就等于面向对象了呢?我先列举一下面向对象设计的11个原则,测试一下大家对面向对象设计的理解程度~^_^~单一职责原则(The Single Responsibility Principle,简称SRP)开放-封闭原则(The Open-Close Principle. 阅读全文
-
软件系统的稳定性
摘要:软件系统的稳定性软件系统的稳定性,主要决定于整体的系统架构设计,然而也不可忽略编程的细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。这正是我阅读Release It!的直接感受。究其原因,一方面是程序员对代码质量的追求不够,在项目进度的压力下,只考虑了功能实现,而不用过多的追求质量属性;第二则是对编程语言的正确编码方式不够了解,不知如何有效而正确的编码;第三则是知识量的不足,在编程时没有意识到实现会对哪些因素造成影响。例如在Release It!一书中,给出了如下的Java代码片段:?1234567891011121314151617181 阅读全文
-
基于UPA模式的设计思想
摘要:背景WEB2.0 --Web2.0 是相对Web1.0 的新的一类互联网应用的统称。Web1.0 的主要特点在于用户通过浏览器获取信息。Web2.0 则更注重用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者。所谓网站内容的制造者是说互联网上的每一个用户不再仅仅是互联网的读者,同时也成为互联网的作者;不再仅仅是在互联网上冲浪,同时也成为波浪制造者;在模式上由单纯的“读”向“写”以及“共同建设”发展;由被动地接收互联网信息向主动创造互联网信息发展,从而更加人性化!百度连接 --百度连接开放平台基于OAuth2.0授权协议,向所有第三方开放了百度的账号体系、好友关系链以及相关产品线的核 阅读全文
-
多维数据查询效率分析
摘要:有时需求需要我们把系统做成灵活的。最常见的形式是,属性不能是固定的,要用户可以自定义。这样的需求往往会在数据库中建模成一个一对多的关系。create table person {... }复制代码create table person_attribute {person_id ...attribute_name ...attribute_value ......}复制代码这样的建模在没有查询需要的时候,还是蛮不错的。但是一旦需要对扩充的属性值进行查询,速度往往惨不忍睹。曾经在新加坡做过一个电信的遗留系统的前端,其数据库的建模就是这样的。对于中间的属性表,一个简单的查询都需要join好几次,速. 阅读全文
-
探讨大数据量处理
摘要:bloom-filter 算法场景:我说的大数据量处理是指同时需要对数据进行检索查询,同时有高并发的增删改操作;记得以前在XX做电力时,几百万条数据,那时一个检索查询可以让你等你分钟;现在我是想探讨下对大数据量的处理,那时我就在想例如腾讯,盛大,动辄数以亿计的帐号,怎么能这么快呢, 于是找到了互联网现在对数据处理的发展:对于大数据量处理,如果是互联网处理的话,一般分为下面阶段:第一阶段,所有数据都装入一个数据库,当数据量大了肯定就会出现问题,就像刚刚说的查询,于是想办法第二阶段,那时肯定想做缓存机制,确实可以如加上缓存Memcached,但缓存也是治标不治本,数据量太大了也是不行于是第三阶段, 阅读全文
-
微软学术搜索项目 10个版本的历程
摘要:这是我在微软亚洲研究院参与的项目之一, 从 2009 年秋天开始, 我们小组把它从一个研究原型发展为涵盖全学科的学术搜索门户。 它索引了 4千万论文, 2千万作者, 6 大实体类型, 8 种数据可视化功能, 具有开放的API 平台和手机客户端.下面说说项目的进展:2009/8: 内部发布 alpha 版本, 以验证想法为目的的 V1 结束, 数据量: 3 million2009/9: 开始V2, 研究员和工程人员合作规划项目的目标, 远景,阶段,典型用户;决定代码管理,项目管理 (都用 MS TFS 管理).决定 V2 着重于 Computer Science 领域决定系统的特点在于展示六大实 阅读全文
-
实体扩展属性系统 - 设计方案说明书
摘要:这篇设计文档是 12 月份写来参加公司的研发峰会的,自己倒是信心满满,不过最后还是没有入围。现在想想也没啥大用,所以贴出来,期待与园友交流。 文档有点长,没全部贴在博客中,有兴趣的可以下载附件中的 PDF。附件:《实体扩展属性系统-系统设计说明书.pdf》================= 分隔线 ======================目录前言... 41 背景与需求... 51.1 产品 721 客户化开发的需要... 51.2 实体动态列... 61.3 分离只读/视图属性... 61.4 提升框架性能... 61.5 支持 WPF 绑定... 61.6 其它需求... 72 分析. 阅读全文
-
编写高速缓存友好代码
摘要:开篇上一篇博文对缓存的思考——提高命中率详细介绍了高速缓存的组织结构,并通过实例说详细明了cpu从高速缓存中取数据的过程,对于缓存的工作机制应该有了清晰的认识。这篇博文就来简单讨论以下对于缓存在实际开发中的应用,这里将告诉你如何让你的程序充分利用该缓存,即如何编写高速缓存友好的代码。提示:如果高速缓存的运行机制还没有清晰的认识,请参照前面文章。注1:关于文中提到的局部性的相关知识参照:局部性原理浅析——良好代码的基本素质注2:这是一个系列的文章,收录在程序性能优化注3:文章知识有些地方不容易理解,所以用心才能看完噢。“用空间换时间”在搞算法的时候经常能听到这种说法,算法研究中通常要考虑算法的时 阅读全文
-
如何优化一个网站使之提高访问速度
摘要:最近公司开始考核企业站下所有站点,首先从itpub开始进行。为此,开始学习关于如何优化一个网站使之提高访问速度这方面的知识。得知page speed 是个不错的工具,就下载下来了。介绍下这个工具吧,Page Speed 是开源 Firefox/Firebug 插件。网站管理员和网络开发人员可以使用 Page Speed 来评估他们网页的性能,并获得有关如何改进性能的建议。对网站的网络服务器配置和前端代码执行若干测试。这些测试基于一组已知可增强网页性能的最佳实践。在网页上运行 Page Speed 的网站管理员会获得一组针对各网页的分数,以及有关如何改善网页性能的有用建议。它会使你的网站更快速, 阅读全文
-
对缓存的思考——提高命中率
摘要:开篇编写高效的程序并不只在于算法的精巧,还应该考虑到计算机内部的组织结构,cpu微指令的执行,缓存的组织和工作原理等。好的算法在实际中不见得有高效率,如果完全没有考虑缓存、微指令实现的话。前两篇博文局部性原理浅析介绍了程序的局部性原理,如何写出局部性良好代码。提高程序性能、何为缓存讨论了存储器层次结构,计算机内部的存储结构、缓存的概念,简单的介绍了缓存的工作机制。建议先阅读前两篇博文,虽然他们之间联系不大,在前面也有一些对本文的铺垫。而且,这是一个系列的文章。旨在优化程序性能。这篇博文主要介绍的是缓存的组织、工作原理。拨开迷雾,让你更加清晰的认识缓存。通用缓存结构回顾在提高程序性能、何为缓存中 阅读全文
-
IOC/AOP随笔目录
摘要:在当前软件开发OO设计中,面对软件需求的各种潜在变化,我们可能会采用领域驱动开发,把我们的各个业务逻辑分层次隔离解除耦合,这就出现了N层架构(这面值得是逻辑上的分层,当然我们的逻辑分层层次需要比物理架构层次多),这样将会使得我们的软件能够适应更多的需求变化。关于领域驱动开发的实例网上都很多,不得不推荐的是微软开源实例项目的NLayerApp:http://microsoftnlayerapp.codeplex.com/。 然而在于我们的逻辑分层的每一层次之间的耦合度解耦也是一个常见的问题.这样在层次的变化中我们需要实现不变更服务层次,这是我们的设计必须依赖于不变接口(抽象)。对于分层的接口对象 阅读全文
-
对交叉销售和向上销售业务的产品关联推荐分析和设计
摘要:一、产品目录定义在电子商务系统中,产品目录是组织网店产品的一种分类方式。产品目录一般为树形结构,结构上支持无限分级,但是最常见的是2~3级,很少4级或者以上的(B2B类网站除外)。比如有类似京东、卓越一样的百货式商场,目录很丰富,图书/家电/手机数码等,每个一级目录下,还划分二级/三级子目录等,也是三级就满足了业务需求。而对于一些专业类的网站,如草莓派/麦包包等,两级就可以了,其它的细分通过扩展属性来满足。产品目录是用户定位产品最为常见的方式,所以网站设置产品目录需要仔细斟酌,根据网站运营特点来做设置。一般而言,笔者建议能够两层解决的不必用三层,实在需要三层的,可以将第三层隐含在搜索条件中,总 阅读全文
-
开源权限系统sshpermissions
摘要:1.1 编写目的使用easyui+ssh2+shiro的权限管理系统,粒度可细化到按钮及菜单级别。目前是第一个稳定版本,可实现基本的权限控制功能,并且可以使用shiro的标签对细粒度的权限进行管理。Jar包除了几个核心包之外全部使用maven管理。1.2 是否开源完全开源免费。地址是:https://code.google.com/p/sshpermissions/需要源码的可以通过svn下载地址是:http://sshpermissions.googlecode.com/svn/trunk/第一章 设计思路1.1 基于RBACRBAC认为权限授权实际上是Who、What、How的问题。在RB 阅读全文
-
持续集成实践:使用Visual Studio 2010 Coded UI Test 制作能自动安装/卸载UI应用的程序
摘要:前言Coded UI Test是Visual Studio 2010对于Testing Project(测试工程)提供的关于UI自动化测试的框架,支持Win32/Web/WPF等UI的自动化测试,在介绍它之前,先简单介绍一下持续集成。大家如果对持续集成不感兴趣的话,可以直接跳到第3节。1:持续集成持续集成由软件工程大师Martin Fowler提出,他对技术集成下的定义是:持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。按照持续集 阅读全文
-
软件工程之系统建模
摘要:1、系统工程:软件工程由系统工程演变而来,要了解软件工程应先了解系统工程。系统工程一般通过自顶向下、自底向上的方法,用层次结构来来分析整个系统。在系统工程层次图中自顶向下依次是全局视图(业务或产品域)——领域视图(关注全局中感兴趣领域)——要素视图(关注领域中系统要素)——详细视图(关注系统要素的组成要素),可以有很多层次,是个金字塔结构。2、系统建模:对于一个系统模型要定义在所考虑视图中满足需要的过程,描述过程行为和该行为所依据的假设,明确定义模型的外在和内在输入,描述有助于工程师理解视图的全部联系。系统建模中的制约因素:假设、简化、限制(确定系统边界)、约束、偏好。基于计算机的系统:组织在 阅读全文
-
代码重构——程序员应有的基因
摘要:去年帮另一个项目组赶项目时,总是有很多地方令我不舒服。本人编码有点小小的“洁癖”——即不喜欢见到冗余代码。即时现在忙,没时间整理,但是一有时间,我都尽可能的去重构。也许本人是个完美主义者吧。个人认为重构有以下好处:改善软件的性能、质量。使架构更加合理。使代码更容易被理解。提高软件的扩展性和可维护性。提高代码的重用率,通用性。提高软件的开发速度。更容易发现BUG。可以提高开发人员的开发水平。在我见过的很多代码中,很多程序员宁愿无限复制粘贴代码,也不愿意重构代码。比如经常可以看到这样一个Switch结构中,每个Case块除了某个参数不同,里面的代码几乎一模一样。看到这种代码,不知道是我的悲哀,还是 阅读全文
-
极速理解设计模式系列:24.解释器模式(Interpreter Pattern)
摘要:五个角色:场景(Context)、抽象表达式(Component)、终结符表达式(TerminalExpression)、非终结符表达式(NonterminalExpression)、客户端(Client)场景(Context):解释器的全局信息抽象表达式(Component):定义一个接口来解释操作终结符表达式(TerminalExpression):直接跳过步骤,不用解释语句非终结符表达式(NonterminalExpression):根据规则实现解释操作 客户端(Client):调用解释器,对语句进行解释。实现思路:建立语法树,然后用语法将表达式进行解析。类图:应用场景:将十六进制值解释 阅读全文
-
Step By Step(Java 系列的目录)
摘要:此前写这个系列博客的初衷非常简单,就是打算帮助自己梳理一下JDK中的类库,毕竟自己对J2EE知识知之甚少,因此就想,还是让已经掌握的知识更夯实一些吧。记得在很早以前曾经写过类似的电子文档,将平时积累下来的技术和技巧都记录了下来,以备后用。然而在经过一段时间之后,重新翻出这些文档时,就会感觉帮助不是很大,经过分析后总结出以下几点原因: 1. 都是一些较小的技巧和看一遍就可以牢记的知识点; 2. 记录的比较分散,或者说凌乱,因为都是随手记下来的,后来也没有再经过很好的整理和规划; 3. 实际案例较少,不能做到一看就能立刻回忆起当时的场景,并且对关键技术要点没有突出显示,不能做到一目了然; 4. 知 阅读全文
-
B2C电子商务系统研发——商品SKU分析和设计(二)
摘要:上文谈到5种商品SKU设计模式,本文将做些细化说明。 笔者研究过不少电子商务平台软件,关于SKU的设计各有不同,之所以有这样的区别,是因为面向不同规模的电子商务网站,存在产品分类复杂度,产品数量级的差异。一种设计方式对于百货式的网站,如京东、淘宝等,也许比较方便,但也许对于一个专卖服装的小型时尚类网站就不够方便了。我们先看一下麦包包的 女包:http://item.mbaobao.com/pshow-1209056501.html 手包:http://item.mbaobao.com/pshow-1209050001.html?s=gl_4f_2 可见SKU很简单,就是颜色,至于尺寸,麦包包. 阅读全文
-
企业信息开发平台
摘要:当前标签: 企业信息开发平台企业信息开发平台(6)Web表单设计器开源zdming 2011-05-20 10:46 阅读:2752 评论:13企业信息开发平台(5)流程设计(二)zdming 2011-05-19 17:17 阅读:1395 评论:11企业信息开发平台(5)流程设计(一)zdming 2011-05-19 15:13 阅读:913 评论:0企业信息开发平台(4)表单设计(下)zdming 2011-05-16 19:30 阅读:1730 评论:23企业信息开发平台(4)表单设计(中)zdming 2011-05-16 18:26 阅读:1514 评论:2企业信息开发平台(4) 阅读全文