随笔分类 - [20]DesignAnalysis设计分析
-
缓存总结
摘要:提高性能最好最快的办法当然是通过缓存来改善,对于任何一个web开发者都应该善用缓存。Asp.net下的缓存机制十分强大,用好缓存机制可以让我们极大的改善web应用的性能,下面是一些总结的缓存的知识点,与大家分享交流:1.页面缓存 要实现页面输出缓存,只要将一条 OutputCache 指令添加到页面即可。 <%@ OutputCacheCacheProfile=" "NoStore="True | False"Duration="#ofseconds"Shared="True | False"Location 阅读全文
-
.NET插件系统(三) 插件间通信问题——设计可自组织和注入的组装程序
摘要:一. 问题的背景 动态系统的要求之一,是不同模块可以根据自身需求自动组装,这往往通过配置文件或用户选择进行。 这个基本问题在前面的文章中已经讲述过了。 但新的问题来了,我们定义了不同的插件A,B,C,那么,不同插件之间的通信如何进行? 如果系统本身的框架非常明晰而且不易更改,那么面向固定接口的方法是最简单方便的。 这也是大部分插件系统在“主结构”上使用的做法。 但是,如果系统框架本身非常易变,连他们之间交互的接口都会随着问题的不同而不同。这就好像,系统中包含不同种类的插座和插头,我们需要自动将符合要求的插座和插头安装好,实现自动组网。如何实现这种自组织的组装程序呢? 二 . ... 阅读全文
-
一种MemoryStream的替代方案
摘要:简介这篇文章阐述了当使用MemoryStream处理大型数据集时经常触发的模棱两可的OutofMemoryException异常,并且介绍了一个类——MemoryTributary,他可以用来替代.NET内置的MemoryStream,并且能够支持大型数据的处理。背景当试图使用MemoryStream处理较大数据(in the order of tens of MB)时,它通常会引发OutofMemoryException异常。这是不是因为,正如其命名的那样,超出了系统内存的限制了呢?但实际上那都是进程的虚拟地址空间。当进程从Windows申请内存的时候,内存管理器并没有从RAM中分配地址空间 阅读全文
-
工作流在多组织架构下费用报销的应用
摘要:由于以前是各事业部有各自的报销流程,虽然整合在同一系统中,但其实是不同的流程,如集团报销流程、各事业部报销流程等,造成这一情况的原因是:公司分布地域比较广泛,组织机构庞大,如:总公司下有集团财务,总公司除财务还有信息,公共事务等部门;各事业部有事业部财务,各事业部还有其他职能部门;各区域有区域财务,另区域下设有区域办,同时管理所辖门店;另外加一个大型物流中心。所以,目前公司需要整合以前的费用报销流程,使之规范化。 按上述描述分析,以前在进行费用报销时,完全是按照行政组织进行路由。这种组织架构,在只有一个财务管理中心直管全司的情况下,完全没有问题。但是,根据公司目前实际情况,那么必须对组织构架模 阅读全文
-
《JAVA与模式》之简单工厂模式
摘要:在阎宏博士的《JAVA与模式》一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。那么简单工厂模式是在什么场景下使用呢,下面就以本人的理解举例说明: 就拿登录功能来说,假如应用系统需要支持多种登录方式如:口令认证、域认证(口令认证通常是去数据库中验证用户,而域认证则是需要到微软的域中验证用户)。那么自然的做法就是建立一个各种登录方式都适用的接口,如下图所示:public interface Login { //登录验证 public bool... 阅读全文
-
模式原则
摘要:模式设计不只是简单的描述问题的解决方案,而且很重视解决方案的可重用性和灵活性通过以灵活的关系来组合对象,组件能在运行时被定义运行时组合对象所达到的灵活性非常高,而这在单独的继承树中是不可能达到的组合优于继承把变化的概念封装起来 -------《设计模式》继承是应对变化的环境及上下文设计的有效方式,然而它会限制灵活性,尤其当类承担多重职责的时候。在父类的代码中使用条件语句是一种倒退,通常用多态来替代条件语句策略模式适用于将一组算法移入到一个独立的类型中显示调用另一个对象的方法来执行一个请求的方式便是委托。动态的组合及重组对象,远胜于将功能静态的建立在代码结构中。组合使用对象比使用继承体... 阅读全文
-
面向对象的设计原则(JAVA)
摘要:一、单一职责原则(Single Responsibility Principe,SRP)1.1单一职责原则的定义1)定义:在软件系统中,一个类只负责一个功能领域中的相应职责。2)另一种定义方式如下:就一个类而言,应该仅有一个引起它变化的原因。1.2对可变性的封装原则一个类(或者大到模块,小到方法)承担的职责越多,它被复用的可能性越小。而且如果一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作。类的职责主要包过两方面:数据职责和行为职责,数据职责通过其属性来体现,而行为职责通过其方法来体现。单一职责原则是实现高内聚、低耦合的指导方针,在很多代码重构 阅读全文
-
千万级数据的分页
摘要:问题想说这个问题,来源来自于CSDN论坛的一个帖子:《sqlserver2005,1690万的数据量怎么快速分页查询》在之前也有很多人问类似这样的问题,回复这样的问题,我们一般会从索引,水平分区,垂直分区和硬件的升级等方面考虑。分析对于千万级数据的分页,要求在秒级内响应,解决方案除了刚列的几个方面考虑,这里说一个非常重要的考虑(评估)是,现实意义。拿CSDN论坛的那1690万数据来说,我按每页显示200行数据,需要84500页。从站在用户(使用者)角度看,对于查看1万页以后的数据的概率是非常小。假设我们是使用者,让我们一页一页的点,点到100页都够郁闷的了,更何况是1万页后的数据了。这里从现实 阅读全文
-
通用权限管理设计 之 数据权限
摘要:阅读目录前言初步分析通用查询机制数据权限规则实际应用结语前言前一篇文章《通用权限管理设计 之 数据库设计方案》介绍了【主体】- 【领域】 - 【权限】( who、what、how问题原型 ) 的设计思想本文将对这种设计思想作进一步的扩展,介绍数据权限的设计方案。权限控制可以理解,分为这几种 :【功能权限】:能做什么的问题,如增加产品。【数据权限】:能看到哪些数据的问题,如查看本人的所有订单。【字段权限】:能看到哪些信息的问题,如供应商账户,看不到角色、 部门等信息。上面提到的那种设计就是【功能权限】,这种设计有一定的局限性,对于主体,只能明确地指定。对于不明确的,在这里可能就没办法处理。比如下 阅读全文
-
代码重构
摘要:代码重构——程序员应有的基因去年帮另一个项目组赶项目时,总是有很多地方令我不舒服。本人编码有点小小的“洁癖”——即不喜欢见到冗余代码。即时现在忙,没时间整理,但是一有时间,我都尽可能的去重构。也许本人是个完美主义者吧。个人认为重构有以下好处:改善软件的性能、质量。使架构更加合理。使代码更容易被理解。提高软件的扩展性和可维护性。提高代码的重用率,通用性。提高软件的开发速度。更容易发现BUG。可以提高开发人员的开发水平。在我见过的很多代码中,很多程序员宁愿无限复制粘贴代码,也不愿意重构代码。比如经常可以看到这样一个Switch结构中,每个Case块除了某个参数不同,里面的代码几乎一模一样。看到这种 阅读全文
-
MVP+WCF+三层结构搭建项目框架
摘要:MVP+WCF+三层结构搭建项目框架(上) 最近,我一直在重构之前做的一个项目,在这个过程中感慨万千。原先的项目是一个运用了WCF的C/S系统,在客户端运用了MVC模式,但MVC的View、Model耦合以及WCF端分布式欠佳等问题让我有了重构的想法,经过了一段时间的改造,逐渐形成了MVP+三层结构+WCF的面向服务的程序架构。在这里我把我的想法写成了一个例子,供大家参考。 在正式开始讲解之前,我必须得感谢Artech、代震军等诸多大虾,他们的文章给了我很大的启发。 我写的这个例子是关于博客管理的,逻辑很简单,就是用户发表文章、发表评论,管理员可以对用户进行管理。让我们先从MVP的运用开始.. 阅读全文
-
四层架构设计实践
摘要:在经典三层架构的基础上,通过开发实践,总结的四层架构设计,以后慢慢深化吧……UI层制作图形用户界面。操作型的函数都应检测返回值,只有返回值为1,才可以继续运行。查询型函数一般不必检测。BLL层只组织业务逻辑,不考虑合法性,目的在于展现清晰的函数结构。有时也可以根据功能组装函数,起到桥梁的作用。ECL层对于UI层传下来的参数来说,检查合法性。共有的合法性检验放在全局检验函数里,私有的合法性检验放在函数体内,不合法直接显示不合法的原因,并停止下传DAL层,直接返回非1值。保证交给DAL层的都是合法数据。(不保证逻辑合法)对于DAL层返回的值来说,如果一切正常,返回1,直接上传BLL层。如果出现逻辑 阅读全文
-
ZhYong10 Code笔记
摘要:学习:学习,进步,成就,常常偏执得觉得这就是生活中最有意义的事情了。以下是最近看书的一些摘录和感悟,不求华丽,但朴实深刻。 价值:考虑自已的决定所带来的商业影响的程序员的身份与黄金相当。特别是想提高收入的人,要考虑自己做的事情自否能带来怎样的价值。架构:处理一个问题的思路架构,应该描述所有主要行动决策的动机。如果架构不能作为小决策的出发依据,那么架构还不够完备。符号:一套好的符号系统能把大脑从所有非必要的工作中解脱出来,集中精力去对付更高级的问题,从功效上看,能够有地提高人类的智力。在引入阿拉伯数字之前计算乘法是困难的,古希腊的数学字或许会惊叹于小学生的除法运算能力。 规范:遵... 阅读全文
-
DICOM Query 和Retrieve 的方法和定义
摘要:概要在用DCMTK库来写query和retrieve的时候查询条件的定义不是很清楚,DICOM的query和数据库的select 有什么区别呢?Query即C-Find, Retrieve 即C-Move, 在放射影像设备、系统中是仅次于C-store(发送影像)应用最多的命令, 相较c-sore, c-find/c-move 要复杂很.....Query/retrieve 简化序列图 (只有一个c-move-rsp 回合)对于SCU (发起方)通俗来讲Query 是指请求对方系统把 请求某个级别(Patient/Study/Series/Image)的信息传送给自己。当然也可以进行关联查询要 阅读全文
-
大型网站开发系列
摘要:前言网上有很多关于网站结构的各种讨论,对于他们的好坏,我没有资格去评论,因为对于不同领域需要不同的结构。我这里只讲解下我所开发的项目的各个方面,整理下自己的思路,同时也希望分享给大家。好了,还是回归到正题上。项目背景我所开发的项目是一个会员中心,一个社区项目,用户量比较大。至于具体有多少功能,这里不太好详细介绍,单纯从一个社区性质的角度来解读下该网站项目。我们经历过的网站架构1)server-lient:一台服务器,搭载了DB和Web服务器,这样开始了网站服务。2)DB server-Web server-client:DB和Web服务器分开,随着网站访问量增加,这个做了拆分。3)DB ser 阅读全文
-
转载ASP.NET MVC经典项目ProDinner项目解析
摘要:转载:http://www.cnblogs.com/aspnetdream/前面的话: 由于最近在设计一款Web产品,我希望找到一成熟的耦合度低的产品架构,并且是建立在asp.net mvc的框架基础上的,对此找到ProDinner开源项目,但是网上的资料少得可怜,好,没有范例,那么就自己来做处理,所以将自己的所学与各位分享,多有不足,就算是抛砖引玉,望高手指点。一、整体系统分析 系统采用了Entity Framework Code First+Asp.NET MVC Razor+Castle.Core+Castle.Windsor,可以说整体设计是个非常轻量级别的框架,但却是做到了或者说惯承 阅读全文
-
管理系统开发平台
摘要:一年前做的系统,show一下吧:菜单目前是两级导航,上面是一级导航,左侧是二级导航,也可以做成多级导航。对于树结构的数据,采用树展示,默认显示树结构和表格。点击每个树节点后,显示详细信息。对于员工,需要上传个人头像、身份证照片等。对于一些数据是需要排序的,我们采用箭头表示:编辑器采用的是CKEditor,可以上传文件和图片:这是个性化的需求,下方是产品树,点击每个节点后会自动添加到上面的表格中,属于业务:下面是一颗多选树,关联权限等操作:更优雅的是下面这种方式:下面是换肤功能,系统可以根据时期,例如节假日等,自动切换logo和背景图片:本人擅长java和js,对于图片和css有些差,因此不够美 阅读全文
-
TWaver在FTTX设备网管系统中的应用
摘要:近几年,随着对带宽要求的越来越高,光网络设备已经逐渐取代老的传输介质成为主流,下面用一个demo简单介绍下TWaver在FTTX设备网管中的应用,本demo总共分3层1、MAP层这一层采用的是MAP+网元的叠加方式,在整体上对当前系统做一个概览,这里的地图实际上是有n个元素拼接起来的,每块都是可以管理的,可以选中操作,也可以修改元素的颜色表示不同的状态等,关于MAP具体请参考http://twaver.servasoft.com/?p=2515,在这个demo中,双击区域块或者上面的网元都可以进入到下一层(此处可以根据具体需求进行交互定制)2、GIS层这一层采用的是TWaver的GIS组件,T 阅读全文
-
SOAP消息机制简介
摘要:SOAP消息机制简介 SOAP(Simple Object Access Protocol,简单对象访问协议)作为一种信息交互协议在分布式应用中非常广泛,如WebService。在使用.Net开发WebService时候,只需要在对应的方法上加上WebMethod特性然后就可以通过网络进行SOAP消息的发送。这样在平时使用Webservice时,可能不太关心SOAP消息的结构到底是怎样的。下面大致说说SOAP消息的结构,以及使用工具监听SOAP消息报文。本节目录:1、XSD是什么2、基于SOAP的数据交互系统是XSD的3、SOAPSOAP消息结构4、支持SOAP的协议5、通过SOAPHead. 阅读全文
-
【十五分钟Talkshow】为什么新浪微博的输入文本框具有记忆功能
摘要:摘要提示“十万个为什么” 之 为什么在新浪微博上面的输入文本框有记忆功能? 1.在网页关闭之前,如果文本框不为空,则将内容保存起来(保存到哪里去==>cookie) 2.在网页加载的时候,想办法还原视频地址http://www.tudou.com/programs/view/DOkXpZQnnFw/示例代码<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplicationSample 阅读全文