建造者模式 指挥者的作用 建造者模式的表述:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。用了建造者模式,用户只需指定需要建造的类型就可以得到它们,而具体的过程和细节就不需要知道了。而建造者中的一个非常重要的类就是指挥者类,它用来控制建造过程,也用它来隔离用户与
代理模式使用场合与注意事项 代理 模式的定义: 为其它对象提供一种代理以控制这个对象的访问--《设计模式》GOF注意事项:1. 接口并不是必须的,大多数情况下,我们为了保持对对象操作的透明性,并强制实现类实现代理类所要调用的所有的方法,我们会让它们实现与同一个接口。2. 但是我们说代理类它其实只是在一定程度上代表了原来的实现类,所以它们有时候也可以不实现于同一个接口。3. Proxy封装了对Rea
代理模式vs适配器模式vs外观模式 一、定义代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,使得原本接口不兼容而不能一起工作的那些类可以一起工作。外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。二、理解代理模式和适配器模式应该说很相
反射的简单实用 1. 动态加载一个程序集 var ass = System.Reflection.Assembly.LoadFile(ddlPath)2. 获取程序集里面的所有类型 ass.GetTypes()3.判断一个Type是否继承自指定的类 type.IsSubclassOf(Type)4.获得一个Type的全名(包含所在的命名空间) type.FullName
数据库查询优化方案(处理上百万级记录如何提高处理查询速度) 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select
C# 中使用Lock关键字 一、Lock定义 lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。 在多线程中,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来
一个Restful Api的访问控制方法 一个Restful Api的访问控制方法分类: 算法研究最近在做的两个项目,都需要使用Restful Api,接口的安全性和访问控制便成为一个问题,看了一下别家的API访问控制办法。新浪的API访问控制使用的是AccessToken,有两种方式来使用该AccessToken:1、API请求 URL 的后面加上一个AccessToken2、Http头里面加一个字段
在C#中使用扩展方法 在我们的编程过程中,会使用各种类库,有自己写的,有的用别人的.当我们使用第三方的类库时,有时候为了使用方便,希望给类库增加一些Helper方法,这时候就要使用扩展方法了.看看MSDN上的介绍:扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。通常,建议你只在不得已的
Params, ref ,out 简介 C# Paramsparamsparams 关键字可以指定在参数数目可变处采用参数的方法参数。一般来说,参数个数都是固定的,定义为集群类型的参数可以实现可变数目参数的目的,但是.NET提供了更灵活的机制来实现可变数目参数,这就是使用params修饰符。可变数目参数的好处就是在某些情况下可以方便地对参数个数不确定情况的实现,例如计算任意数字的加权和,链接任意字符串为一
Lambda 表达式的简介及形成过程 Lambda 表达式的简介及形成过程C#的Lambda表达式是一种"语法糖",使用 Lambda 运算符 =>,该运算符读为“goes to”。语法如下:形参列表=>函数体函数体多于一条语句的可用大括号括起。要了解Lambda表达式,首先就要了解什么是委托,委托(delegate)是一种引用类型.简单讲,委托就是一个函数指针.先看一个例子 //声明一个委托
C#中 Var 和 dynamic 整理介绍 常有人会拿var这个关键字来和dynamic做比较。实际上,var和dynamic完全是两个概念,根本不应该放在一起做比较。var实际上是编译期抛给我们的“语法糖”,一旦被编译,编译期会自动匹配var 变量的实际类型,并用实际类型来替换该变量的申明,这看上去就好像我们在编码的时候是用实际类型进行申明的。而dynamic被编译后,实际是一个object类型,只不过编译器会对dynamic类型进行特殊
添加区域视图 找到多个与名为“home”的控制器匹配的类型 今天在项目中遇到一个问题,在MVC下想建立一个区域的后台Admin视图,出现了"找到多个与名为“home”的控制器匹配的类型"的问题,希望下面的解决方案能够帮助到大家在Areas区域下有一个Admin的管理区域,解决问题只需要将最外层的路由和Admin下的路由设置命名空间就可以了.这是最外层的路由设置:using System;using System.Collectio
.NET ORM框架 从网上搜集整理了一些ORM的框架微软自家的LINQ to SQL, ADO.NET Entity Framework不多说。 在.NET平台下,关于数据持久层框架非常多,本文主要对如下几种做简要的介绍并推荐一些学习的资源:1.NHibernate2.NBear3.Castle ActiveRecord4.iBATIS.NET5.DAAB附加介绍:DLin
CSS 选择器总览 css1-css3提供非常丰富的选择器,但是由于某些选择器被各个浏览器支持的情况不一样,所以很多选择器在实际css开发中很少用到。1.基础的选择器选择器含义示例*通用元素选择器,匹配任何元素* { margin:0; padding:0; }E标签选择器,匹配所有使用E标
UML类图几种关系的总结(转) 在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1.泛化(Generalization)【泛化关系】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为例如:老虎是动物的一种.【箭头指向】
NET 单元测试扫盲 网上搜索并整理了一些关于单元测试的概念概念: 单元测试(Unit Test) 是软件测试的最小单位. 用于检查一个或几个相关的方法行为是否正确。1. 单元测试的3A原则 Arang:排列,初始化 Action: 操作, 执行 Assert: 断言,结果2. 常用断言方法 AreEqual—断言两个值是相等的 AreNotEqual—断言两个
.NET开源项目介绍及资源推荐:IOC容器篇 .NET开源项目介绍及资源推荐:IOC容器篇关于IOC的概念就不多说了,在.NET平台下,比较优秀的IOC容器框架有如下四种,本文试图作一个简单的介绍,以及推荐一些各个框架的学习资源。一.Castle在Castle中包含了一组开发框架,它里面的IOC容器是Windsor,目前Castle已经发布了RC1版本,其中Windsor已经是RC3了。在Windsor中提出了自动装配的概念,
使用CKEdito和AJAX时候, 引号不能提交的问题 今天碰到一个问题, 在使用CKEditor,进行AJAX提交的时候,如果包含单引号,则内容提交不到后端. 经过搜索,得到以下解决方案 前端JS代码(使用了CKEditor): var strContent = encodeURI(CKEDITOR.instances.txtContent.getData()).replace(/'/g, "'").rep
非关系型数据库是SaaS最佳存储介质 非关系型数据库 Is SaaS最佳存储介质 SaaS以租赁的方式向用户提供软件服务。中小型企业在资金和信息化人才缺乏的情况下,可通过向SaaS购买帐号,可以迅速实现信息化,节约成本。SaaS虽然在国内普及度不够高,但随着云计算宣传力度增大,市场广度会越来越大。 对于软件提供商,在设计SaaS平台时,难度会比传统的应用模式大的多。因为提供的服务平台,而不是一个软件应用,在多企业共用平
SaaS系统中的数据模型设计思路 本文尝试通过对国内外对于基于SaaS模式的数据模型的几种常见思路及其适用场景的研究,对这方面的若干关键问题进行初步的探讨和分析。SaaS系统常见数据模型在设计SaaS系统的数据模型时出于服务客户及减低开发成本等考虑,在数据的共享和隔离之间求得一定的平衡是必须考虑的一个重要因素。因此一般在设计对应数据模型时不仅要考虑到技术因素,例如怎样构建一个弹性架构以支持数目不定的客户
别再吐槽了:12306网站已接近技术极限 写在前面的话:在我的博客里,有许多自称是资深程序员说12306的问题如何如何容易解决,它的技术如何如何烂,下面是一位真正的内行写的技术分析,但我要修正他一点,关于网站访问量,12306是世界第一,其他任何一个网站无法望其项背。腾讯自称自己的最高日访问量是1.6个亿,而12306这几天的最高日访问量是18个亿,是腾讯的11倍多。而且腾讯是24小时访问,12306后半夜维护,实际开放时间是16个小时左
分布式文件系统试用比较 分布式文件系统试用比较 MooseFS 很不错,已经实用了半月了,易用,稳定,对小文件很高效。 MogileFS 据说对于 Web 2.0 应用存储图片啥的很好。 GlusterFS 感觉广告宣传做的比产品本身好。 OpenAFS/Coda 是很有特色的东西。 Lustre 复杂,高效,适合大型集群。 PVFS2 搭配定制应用会很好,
敏捷开发之Scrum扫盲篇 敏捷开发之Scrum扫盲篇现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP...为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资料的讲述方式让初学者不太容易理解;所以我决定写一篇扫盲性的博文,同时试着也与园
从Knockout到AngularJS 从Knockout到AngularJS两年前初见Knockout.js后便一脚踏入MVVM世界无法回头。学习简单很快上手,用Knockout做出错误少又容易扩充维护的AJAX网页。在此之前,为了让字段连动,总要写一堆、 onchage、onclick事件,事后常需要在一堆事件程序代码里追查更动来源,更糟的是稍一调整就常因触发顺序改变导致错误,修改维护是件苦差事;改用KO后,专心把ViewMod
C# web api返回类型设置为json的两种方法 C# web api返回类型设置为json的两种方法web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Application_Start()方法中添加一句: 。代码如下:GlobalConfiguration.Conf
大数据时代数据库混合部署方案探究 大数据时代数据库混合部署方案探究 引言在大数据时代,“多种架构支持多类应用”成为数据库行业应对大数据的基本思路,数据库行业出现互为补充的三大阵营,适用于事务处理应用的OldSQL、适用于数据分析应用的NewSQL和适用于互联网应用的NoSQL。但在一些复杂的应用场景中,单一数据库架构都不能完全满足应用场景对海量结构化和非结构化数据的存储管理、复杂分析、关联查询、实时性处理和
WEB 打印方案汇总 在WEB系统中,打印的确是个烦人的问题----特别是你的应用环境又有很多种类的打印机。如果自己开发打印控件,可能因为项目时间紧而来不及。前段时间有机会接触了一下WEB打印。在博客园、CSDN以及各个论坛上找了老半天,终于顺利的完成了公司项目。现在就结合我的应用体验,将市面上的所有的免费打印控件为大家做一个介绍。1、 DLPrinter这个打印控件完全免费,界面还不错,使用也
WEB 打印 LODOP 一.什么是lodoplodop取意自“load or print”,是一款优秀的Web打印控件。在B/S系统中,传统打印控件总是“页面看到什么才能打印什么”,缺乏灵活性,使打印略显呆板。而使用lodop则可以做到“只看想看的、打印想打的”,不仅开发人员可以自由设置打印输出内容,用户还可对打印内容进行一系列调整。lodop控件目前有简体中文、繁体中文、大五码(
SSO SSO的解决方案很多,但搜索结果令人大失所望,大部分是相互转载,并且描述的也是走马观花,本文对此进行详细介绍,需要了解的朋友可以参考下前些天一位朋友要我帮忙做一单点登录,其实这个概念早已耳熟能详,但实际应用很少,难得最近轻闲,于是决定通过本文来详细描述一个SSO解决方案,希望对大家有所帮助。SSO的解决方案很多,但搜索结果令人大失所望,大部分是相互转载,
C# 单点登录 MVC C# 单点登录 MVC实现sso系统的主要难点:1:不能直接访问数据库,有安全隐患,而且还容易乱套。2:多个系统需要进行单点登录,逻辑需要严谨,能支持N多系统、而不只是少数几个系统。3:代码不能过于复杂,需要简洁,灵活支持本地部署,单点部署,集群部署,相同的代码可以通过部署配置灵活实现服务段(sso)、本地段(子网站)功能。4:多系统的权限也可以灵活判断,不能访
软件团队开发-评审代码 在我10多年的软件开发中,经历过超过200人的软件开发团队,也有过两三个人开发的小团队,但无论团队的大小,都是采用一个很简单的软件开发方法,就是把项目切分成模块,然后每个人开发一块,最后集合起来,调试完成,再经过测试,交给客户使用,就算项目完成了。在这其间,团队成员之间,没有什么交集,相互的代码也没有查看,或者了解一下。因此,当某一个成员离职或者病休时,就会带来很大的问题,因为其它人员都对
WCF安全 - 不同的安全模式 WCF的安全体系主要包括三个方面:传输安全(Transfer Security)、授权或者访问控制(Authorization OR Access Control)以及审核(Auditing)。而传输安全又包括两个方面:认证(Authentication)和消息保护(Message Protection)。认证帮助客户端或者服务确认对方的真实身份,而消息保护则通过签名和加密实现消息的一致性
WCF的三个名称/命名空间 在定义和寄宿WCF服务的时候会面临三个名称/命名空间,它们分别是ServiceContractAttribute、ServiceBehaviorAttribute和Binding的Name和Namespace属性,很对人对此不能很好地区分。一、ServiceContractAttribute的名称/命名空间每个服务契约都有一个确定的名称,当在一个接口或类上应用了ServiceCon
EndpointAddress 终结点是整个WCF的核心,由经典的ABC三要素组成。作为表示地址的EndpointAddress,很多人仅仅将其看成是一个表示标识服务并且表示服务所在地址的Uri,其实服务标识和定位服务仅仅是EndpointAddress一个基本的功能,它不仅仅是Uri那么简单一、EndpointAddress的三个功能作为终结点的三要素之一的地址(Address),在基于WCF的通信中不仅仅定位
【设计模式】漫谈六大原则 六大原则的起因:面向对象中封装、继承、多态三大支柱蕴含了用抽象来封装变化,降低耦合,实现复用的精髓。封装:隐藏内部实现,保护内部信息。继承:实现复用,归纳共性。多态:改写对象行为,实现更高级别的继承。要实现这些目的,就必须遵守一些原则:封装变化、对接口编程、少继承多聚合等等总结这些,归纳出六大原则 单一职责原则(SRP)定
设计模式--基础学习总结 回顾自己学习《大话设计模式》的旅程,有一种飘忽不定的感觉,单个进入一个模式,非常好理解,但随着模式的增多,越来越发现各个设计模式之间联系紧密,又有区别。于是慢慢学着总结……【模式归类】 在书的结尾处,为23个设计模式(不包含简单工厂模式)做了一个系统的分类: 个人认为这样的分类方式其
对软件开发有利的5个敏捷编程方法 在技术要求较高的软件开发领域,敏捷性的重要性不言而喻。本文来自网站 JavaScriptStyle,网站创始人即文章作者 Santosh Kumar是一位搜索引擎优化专家。其书写此文旨在分享敏捷软件开发所带来的好处,以及中小型企业能够从敏捷开发这一方法中获得怎样的启示。敏捷编程是一个以客户为导向的方法来管理软件开发团队和项目,它侧重于终端用户的参与、早期发布和增量发布,以及频繁的质量控
Spreadsheet 常用属性 Spreadsheet常用属性 标题栏可视Spreadsheet1.TitleBar.Visible=true 标题栏背景颜色Spreadsheet1.TitleBar.Interior.Color="Green" 标题栏标题内容Spreadsheet1.TitleBar.Caption="test" 标题栏字体颜色Sp
网站性能工具Yslow的使用方法 Yslow是雅虎开发的基于网页性能分析浏览器插件,从年初我使用了YSlow后,改变了博客模板大量冗余代码,不仅提升了网页的打开速度,这款插件还帮助我分析了不少其他网站的代码,之前我还特意写了提高网站速度的秘籍,就是通过这款插件分析得出的。网络上已经有不少Yslow使用说明了,本文我想介绍下我使用Yslow的方法和一些别人没提到的小技巧。Yslow的安装方法现在Yslow已经有很多版
使用YSlow,对自己的网站进行评分 YSlow是Yahoo开发者团队发布的一款基于Firebug的插件。用于分析网页,并根据一些高性能网站的规则进行相应的评级打分,对于网页性能优化有很好的帮助作用,告诉你那些部分影响了你的网页速度,Why Slow!!主要规则有13条,其中11条比较关键:Make fewer HTTP requests--更少的http请求,也就是说页面中尽量少的引用外部
亿万用户网站MySpace的成功秘密 亿万用户网站MySpace的成功秘密 高速增长的访问量给社区网络的技术体系带来了巨大挑战。MySpace的开发者多年来不断重构站点软件、数据库和存储系统,以期与自身的成长同步——目前,该站点月访问量已达400亿。绝大多数网站需要应对的流量都不及MySpace的一小部分,但那些指望迈入庞大在线市场的人,可以从MySpace的成长过程学到知识。MySpace开发人员已经多次
大规模服务设计部署经验谈 大规模服务设计部署经验谈本文中提出的最佳实践,来自于作者多年大规模服务设计和部署的经验,为设计、开发对运营友好的服务提供了一系列良好的解决方案。■ 文/James Hamilton 译/赖翥翔1 引言本文就设计和开发运营友好的服务的话题进行总结,得出一系列最佳实践。设计和部署大规模服务是一个高速发展的领域,因而随着时间的流逝,任何最佳实践集合都可
WCF 入门概念 WCF入门1.SOA概念:面向服务,是一种软件系统架构原则:边界清晰 服务自治 兼容性基于策略 共享模式和契约2.WCF概念:是面向SOA架构的应用程序的框架(windows communication foundation) 是微软发展的一组数据通信的应用程序开发接口 服务是被动的,客户端是发起者
网站优化 1. 先优化JS,CSS,IMG静态资源,减少HTTP请求2. CDN加速,不需要改动程序 将你的域名提交给CDN服务商OK了 清楚CDN缓存:URL加版本号 CDN会设置过期时间的,比如24小时3. 开WEB园,保持SESSION memchached 同步4. 增加WEB服务器,同事增加反向代理(LINUX + NGINX)保持Session
服务器架构 演化过程 服务器架构 分布式架构服务器的划分:1) 文件服务器: 图片 文件2) 代理服务器:LINUX + nginx作为反向代理,把客户的URL路径路由到不同的服务器3) web服务器:IIS Nginx4) 应用服务器:负责系统中各个业务逻辑的提供,比如用户中心,结算中心,支付中心5) 缓存服务器:Memcached6) 数据库服务器:带宽的计算:PV = pa
开发使用混合式Winform模块 WCF 1、Winform数据访问模式定义传统的Winform程序模块:用于传统的数据库通讯获取数据,这种方式获取数据,方便快捷,可以用于常规的业务系统的场景,用于单机版软件或者基于局域网内的业务系统软件。WCF的Winform程序模块:采用了WCF技术的分布式开发模式,系统能够通过远程的WCF服务获取数据,而不用直接和数据库相连,提高数据的安全性和可维护性,适用于互联网、局域网环境下的业
什么时候使用NoSQL NoSQL这两年越来越热,尤其是大型互联网公司非常热衷这门技术。根据笔者的经验,并不是任何场景,NoSQL都要优于关系型数据库。下面我们来具体聊聊,什么时候使用NoSQL比较给力:1) 数据库表schema经常变化比如在线商城,维护产品的属性经常要增加字段,这就意味着ORMapping层的代码和配置要改,如果该表的数据量过百万,新增字段会带来额外开销(重建索引等)。NoSQL应用在这种
大型软件开发与ORM构架 大型软件开发与ORM构架 在最近的几年里,很多程序员把自己的业余时间献给了ORM框架的开发,甚至在有些单位的招聘面试中把是否理解或是能否使用一种ORM构架,作为了一种评价开发人员技能的必要条件。作为一个一线的开发工人,我毫不否认ORM框架对设计模式社区发展作出巨大的贡献,以及对提高开发效率这一目标的成果。 但是请各位读者注意的是,本文是站在大型软件开发的