自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

俞欣力's 技术博客

先做人,再做事,偶尔做做秀

  • 博客(73)
  • 资源 (4)
  • 收藏
  • 关注

原创 常用正则表达式

由于在日常编程中,经常会遇到一些需要使用正则表达式的地方,可是有些网上又搜索不到,只好自己写,为了方便以后使用,我在这篇文章中,我会陆陆续续记录下来,不断维护更新1. 匹配url扩展名Regex:(?Source:http://www.baidu.com/index.htmlhttp://www.sina.com/index.aspx?name=laszloyu&e

2010-05-21 14:23:00 501

转载 15个JavaScript Web UI 库

几乎所有的富 Web 应用都基于一个或多个 Web UI 库或框架,这些 UI 库与框架极大地简化了开发进程,并带来一致,可靠,以及高度交互性的用户界面。本文介绍了 15 个非常强大的 JavaScript Web UI 库,非常适合各种各种规模的富 Web 应用的开发。LivePipeLivePipe UI 基于 Prototype Javascript 框架,包含了一整套经严格测试并高

2010-05-20 09:19:00 658

转载 java中的陷阱,你注意了么?

答案隐藏了,Ctrl+A显示。建议先思考一下结果,然后运行代码试验。也许你会恍然大悟。1、找奇数:view plaincopy to clipboardprint?public static boolean isOdd(int i){ return i % 2 == 1; } public static boolean isOdd(i

2010-05-20 09:06:00 489

转载 HeadFirst 设计模式学习笔记9--迭代器模式

1.本节的一个话题引子是一个餐厅,它提供早餐和午餐,但是在订制菜单的时候,早餐(Pancake)和午餐(Dinner)的实现却造成了一些麻烦。订制早餐的菜单是用ArrayList这样一个数据池来维护的。但是订制午餐的菜单则是一个标准数组进行维护。那么在设计订餐程序来遍历这两个不同的数据结构形成的菜单的时候,就会比较麻烦,毕竟返回的数据类型不是一样的。(不知道我说清楚了没,参阅英文版原书P321)

2010-05-14 15:49:00 743 1

转载 HeadFirst 设计模式学习笔记8--模板方法模式

1.这个模式比较简单,我们举一个银行贷款申请流程程序的例子(这个并非是书中的例子):申请贷款,银行要检查这个客户的一些事宜,譬如客户收支状况记录、从三个地方拿到他的信用记录、得到其他已有相关债务信息、得到借债人股票市值、得到借债人未来收入预期分析等等。我们可以设计如下一个模板方法:abstract class CheckBackground { public abstra

2010-05-14 15:31:00 633

转载 追MM与Java的23种设计模式

    1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory   工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创

2010-05-13 19:52:00 440

转载 HeadFirst 设计模式学习笔记7--适配器模式和外观模式

1.适配器的作用:将一个接口转换为另一个接口。我们可以比喻为一个插座的转换头。2.构造适配器的关键:实现了目标接口,并持有被适配者的实例。 而适配器使用的方法是:客户通过目标接口调用适配器的方法对适配器发出请求,适配器使用被适配者接口把请求转换为被支配者的一个或多个调用接口。我们举一个火鸡冒充鸭子的适配器例子:我们定义两个东西:一个是鸭子:public interface Duck

2010-05-13 19:20:00 582

转载 正则表达式30分钟入门教程

本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。如何使用本教程最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门——除非你是超人 :)别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并没有你想像中的那么困难。当然,如果你看完了这篇教程之后,发现自己明白了很多,却又几

2010-05-13 15:01:00 398

转载 HeadFirst 设计模式学习笔记6--命令模式

1.这一节我们的任务是创建一个类似智能家居的万能遥控器,控制各种家电。我们需要将“请求”封装成对象(一个命令对象通过在特定接收者上绑定一组动作来封装请求),以便使用不同的请求、队列、或者日志来参数化其对象——这就是命令模式。2.我们具体来看一个例子:首先我们要完成对命令的对象封装:public interface Command { public void execute(

2010-05-12 18:16:00 760

转载 HeadFirst 设计模式学习笔记5--单例模式

1.单例模式确保一个实例被创建,并且任意时刻都只有一个对象。它给了我们一个全局的访问点,又屏蔽了全局变量的缺点。可以被用来管理共享资源,比如数据库连接或线程池。特征是构造函数为私有,然后声明一个私有静态成员作为类对象,对外提供一个静态类方法创建该对象,在创建对象时会先判断是否已经创建,若是则直接返回已经创建的对象,若没有则创建新对象。2.经典的单例模式如下:public class Sin

2010-05-12 17:49:00 460

转载 HeadFirst 设计模式学习笔记4--工厂模式

1.我们在前边提到一个原则就是“面向接口而不要面向实现编程”,但是我们一直在使用Duck duck = new MallardDuck()这样的模式,后边的new语句却违反了这个原则。工厂方法就可以解决这个问题,它用来封装对象的创建。2.这一节我们考虑如下场景:一个披萨店要制作各种各样的披萨,甚至还要开分店。其中涉及到订购披萨的步骤。我们可以把orderPizza中的关于制作pizza的部分单

2010-05-12 16:05:00 548

转载 HeadFirst 设计模式学习笔记3--装饰模式

1.这个模式可以称为“给爱用继承的人一个全新的设计眼界”的模式。牵扯到第五个设计原则:“类应该对扩展开放,而对修改封闭”。但是要注意,遵循这一标准会带来更多层次上的抽象,增加代码的复杂度,所以并不是所有类都要这样设计。2.文中举了一个为辛巴克咖啡馆写一个计算咖啡价格+调料价格的类,使用了装饰模式——动态的将责任附加到对象上,若要扩展功能,装饰者提供了比继承更加有弹性的替代方案。我们就拿这个计算

2010-05-12 14:32:00 713

转载 HeadFirst 设计模式学习笔记2--观察者模式

1.我们需要理解报社、订阅系统和订报人之间的关系,订报人通过订阅系统订报,一旦报社有新的报纸,订阅系统就会派人送或者邮寄给订报人新的报纸。然后,出版者+订阅者就是观察者模式,只不过名称不一样,主题(Subject,或者叫做Observabler)类比于出版者,订阅者改称为观察者(Observer)。该模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更

2010-05-12 11:21:00 899

转载 HeadFirst 设计模式学习笔记1--策略模式

1.书中举了一个鸭子类的设计,有些会飞或者会叫,有些不会飞可能也不会叫,用继承则导致不该有的功能通过继承而继承了下来,使用接口则代码无法做到最大程度的重用。进而引出设计原则1:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起,把会变化的部分取出并封装起来,好让其他部分不会受到影响 。——每个设计模式背后的精神所在。2.我们希望运行时动态的改变一些行为,这就引出了第

2010-05-11 18:07:00 1010 1

转载 设计模式基础6--监视器

1)使用场景:一个对象可能要访问共享资源来完成它所要提供的服务,在多线程情况下,多个这样的对象在一起就会产生意想不到的后果,比如竞争。监视器就是在这样的一个对象上设置一个锁,以保证在给定时间内,只有一个线程可以执行这个对象上的任何一个方法。 2)例子:我们创建一个日志记录的类public class FileLogger { public synchronized void

2010-05-11 16:30:00 1065

转载 设计模式基础5--不变对象

1)使用场景:牵涉到对数据对象进行修改时,可能由于修改的顺序而造成数据的错乱,此时使用不变对象就可以避免,而且还可以不使用高开销的synchronizing方法。一个数据模型类的实例所持有的数据在整个生命周期中都不变,这个类就会是线程安全。 2)设计方法:a)所有的实例变量都必须在构造函数中设置,因为构造函数是线程安全的。b)将这个类设置为final,防止类由于继承而产生的类方法的

2010-05-11 16:26:00 487

转载 设计模式基础4--常量数据管理器

a)使用场景:在程序设计中,我们可以把所用要用到的常量设计为一个独立的类,使得对常量的管理有效清晰。 b)应用举例:我们考虑一个顾客数据存储的应用场景,要用到三种类,Account, Address 和 CreditCard来代表用户数据信息。   我们设计了一个常量管理器对常量进行集中管理,UML如下: public final class Consta

2010-05-11 16:19:00 734

转载 设计模式基础3--存取方法+Private类成员和方法

本来不想写这个的,太基础了,不过为了整个学习笔记的完备性还是简单写几笔给自己留着看。1.存取方法也就是所谓的getter and setter,对于类中的private成员提供对外的接口,这样的设计使得最后的在程序修改时只需要修改这些setter and getter,而不必工程中修改所有与这个成员相关的东西,这些setter和getter不单单是为了给类外的对象使用的,内部使用时也尽可能使用

2010-05-11 16:09:00 552

转载 java接口与抽象类的区别

一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了。当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可以再次利用 呢,面对对象的设计,复用的重点其实应该是抽象层的复用,而不是具体某一个代码块的复用,是不是一下子感觉自己对复用理解的

2010-05-11 15:41:00 536

转载 抽象类

1.抽象类的特点:包含至少一个以abstract表示的没有实现的方法——抽象方法,来代表父类中的可变方法。包含的有具体实现的方法来代表父类中的不可变的通用方法。不能被实例化。子类继承时必须实现去所有抽象方法,否则子类也是一个抽象类,不能被实例化。这样的设计是使得方法签名上保持持续性。(方法签名是指:方法的名称,参数的数量和参数的类型这三部分,不包含返回类型。可以通过不同的方法签

2010-05-11 15:39:00 644

转载 接口

a)使用场景:解决多重继承和Client需要多Service_Provider的支持。b)典型UML: c)举例:薪水计算类的设计 不同的类别有不同的薪水计算方法,那么getSalary方法可以抽象到一个接口SalaryCalculator内,这样在Client进行调用时就会有多态的效果: public interface SalaryCalculator {

2010-05-11 14:15:00 507

转载 UML统一建模语言初学

1.UML是Object Management Group推出的用于简化复杂软件工程流程的工具,使用UML,用户可以定制并且可视化软件和非软件的设计。注意UML只是一种建模语言,它只定义了words和grammar,而并没有定义建模的过程或流程。2.上文中提到的静态模型和动态模型的分类也可以如下分类,一共十二种图:STRUCTURE DIAGRAMS:可以用来代表一个应用的结构

2010-05-11 14:01:00 668

转载 使用 IntelliTrace 调试应用程序

<a id="ctl00_MTContentSelector1_mainContentContainer_ctl03" onclick="function onclick(){Track(ctl00_MTContentSelector1_mainContentContainer_ctl00|ctl00_MTContentSelector1_mainContentContainer_ctl

2010-05-11 13:34:00 981

转载 ASP.NET缓存分析和实践浅析

说到ASP.NET缓存,那就是:尽早缓存;经常缓存您应该在应用程序的每一层都实现缓存。向数据层、业务逻辑层、UI 或输出层添加缓存支持。内存现在非常便宜 — 因此,通过以智能的方式在整个应用程序中实现缓存,可以获得很大的性能提高。 缓存可以掩盖许多过失 缓存是一种无需大量时间和分析就可以获得“足够良好的”性能的方法。这里再次强调,内存现在非常便宜,因此,如果您能通过将输出缓存 30 秒,而不是花上

2009-10-26 09:43:00 387

转载 什么是DTO

层间数据传输的过程就是服务的执行者将数据返回给服务的调用者的过程。在非分布式系统中由于有类似Open session in view这样的“怪胎解决方案”的存在,所以层间数据传输的问题并没有充分暴露出来,但是在分布式系统中我们就能清楚地意识到层间数据传输的问题,从而能够更合理的进行设计。为了暴露更多问题,本章讨论的层间数据传输假定的场景是“服务器将执行的数据结果如何传递给远程客户端”,尽管在实际场

2009-10-19 16:44:00 2319

转载 学习 ibatisnet + castle 笔记

1.  下载castle 和 ibatisnet 的 dll文件,    注意:目前为止,castle版本最高支持 ibatisnet 的 datamapper的版本是1.5,dataaccess 版本1.8        所以需下载castle 1.0 和 ibatyisnet的 1.5 版本2.  框架 模仿 npetshop2 的架构 并且稍做了简化,去掉了其页面采用castle控制

2009-06-11 11:12:00 1938

原创 DEVELOPER EXPRESS .NET V8.2 使用方法

在官方网站上下载安装程序:DXperience-8.2.2.exe(本文以8.2.2版本为例)安装下载到的程序,假设程序被安装到以下文件夹:D:/Program Files/Developer Express .NET v8.2将源代码文件复制到以下文件夹D:/Program Files/Developer Express .NET v8.2/Sources从以下地址中下载编译脚本

2009-05-15 16:46:00 2244

转载 如何从优化SQL入手提高数据仓库的ETL效率

1        引言      数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取、转换和装载到模型的过程,整个过程基本是通过控制用SQL语句编写的存储过程和函数的方式来实现对数据的直接操作,SQL语句的效率将直接影响到数据仓库后台的性能。目前,国内的大中型企业基本都具有四年以上计算机信息系统应用经验,积累了大量可分析的业务数据,这些信息系统中的

2009-05-13 15:56:00 626

转载 VS2008快捷键大全

VS2008快捷键Ctrl+m+Crtr+o折叠所有大纲Ctrl+M+Crtr+P: 停止大纲显示Ctrl+K+Crtr+C: 注释选定内容Ctrl+K+Crtr+U: 取消选定注释内容Ctrl+J : 列出成员 智能感知Shift+Alt+Enter: 切换全屏编辑Ctrl+B,T / Ctrl+K,K: 切换书签开关Ctrl+B,N / Ctrl+K,N: 移动

2009-05-07 09:10:00 456

转载 ADO.NET、NBear和NHibernate和IbatisNet简单读写性能比较

下载测试示例程序(运行前请先参看压缩包里的说明文件:初始数据和修改数据库链接)测试代码基于Teddy的ADO.NET、NBear和NHibernate简单读写性能比较中的测试代码修改.主要修改:1.ADO.NET的测试使用microsoft的SqlHelper.2.测试引用的版本分别为:NBear V3.7.2.4,IBatisNet V1.6.1,NHibernate1.0.1.0 for ne

2009-04-21 10:48:00 806

转载 将Quartz.NET集成到 Castle中

 Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务.具体可参看TerryLee的Castle 开发系列文章。      可以通过称为 Facility 的组件用控制反转 (Inversion of Control, IoC) 和依赖注入将 第三方

2009-04-20 16:49:00 586

转载 Castle学习笔记之Windsor(二)

最近琐事繁多,以至于这个系列的第二篇文章都迟迟未出,-_-!!今天特定花点时间来完成它.我们接着上篇进行一些深入的分析.首先是构造注入,在Windsor中,我们获取的一个对象实例的代码大致如下:IWindsorContainer container = new WindsorContainer("../../test.xml");container.AddComponent("test", t

2009-04-20 14:55:00 832

转载 Castle学习笔记之Windsor(一)

Castle大名早就如雷贯耳,早就想研究一下,无奈公司项目一直比较紧迫,直到前天BOSS告诉我该转入下一部分框架的设计工作了,嘿嘿,刚好借这个机会,开始我的Castle之旅:) 首先向不熟悉的朋友介绍下Castle到底是什么.Castle是.net平台上的一个开源项目,为企业级开发和WEB应用程序开发提供完整的服务.当前开发的许多流行元素,比如IOC,ORM都在Castle上有非常成熟的应用.

2009-04-20 13:51:00 1076

转载 将Castle IOC引入项目开发中实现“依赖注入”

      我在上一篇笔记Castle学习笔记----初探IOC容器 >里讲到过.      通常IOC实现的步骤为-->建立容器-->加入组件-->获取组件-->使用组件.这篇文章还是以这四个环节来阐述。一.建立容器      这里我拿手上的一个现成项目来做分析,首先我们得建立IOC容器.项目中是建立了一个容器类Container来专门负责IOC容器的搭建及组件的加入.代码如下:  1usi

2009-04-20 13:18:00 1163

转载 Castle IOC容器实践之FactorySupport Facility

摘要:FactorySupport Facility允许我们使用已经存在的工厂来创建组件的实例,可以把已经存在的对象模型加入到容器中,以便它能够使用自动装配。它使用了以下两种处理策略:1.使用访问器来访问组件的实例2.使用静态方法或者实例方式来访问组件的实例 主要内容1.概述2.为什么需要FactorySupport Facility3.如何使用4.常见的配置示例

2009-04-17 16:45:00 521

转载 Castle IOC容器实践之EnterpriseLibrary Configuration Facility

摘要:EnterpriseLibrary Configuration Facility就好像是在容器和数据类之间的桥,让我们可以轻松得去读取和操作配置文件。熟悉Enterprise Library的人都知道,在Enterprise Library中有一个Configuration Application Block,它可以使我们方便的从各种存储中读写配置信息,通过EnterpriseLibrary

2009-04-17 16:44:00 483

转载 Castle IOC容器实践之TypedFactory Facility(二)

摘要:在Castle IOC容器实践之TypedFactory Facility(一)里面大家都已经知道了如何去使用TypedFactory Facility,也已经体会到它的方便之处了,为了更好的使用它,本篇我们对TypedFactory Facility的原理做一些简单的分析。 主要内容TypedFactory Facility原理分析…… 在TypedFactory

2009-04-17 16:43:00 416

转载 Castle IOC容器实践之TypedFactory Facility(一)

摘要:相信大家对于Factory Method设计模式都已经不陌生了,在Factory Method中,对于每一个具体的产品都需要有一个与之对应的工厂类,随着具体的产品越来越多,我们对于工厂类的管理就越来越困难,那如何通过IOC容器来实现对工厂的管理呢?本文将给你答案,通过TypedFactory Facility来实现。 主要内容1.TypedFactory Facility概述

2009-04-17 16:42:00 477

转载 Castle IOC容器实践之Startable Facility(一)

摘要:从本文开始,我们将逐一实践CastleIOC中的Facility,在前面我们说过,Facility它是带有注入性质的。有时我们会遇到这样的问题,当一个组件满足一定的依赖关系之后,让它自动运行,比如说启动一个窗体或者启动某种服务,本文我们就来看如何使用StartableFacility让一个实现了接口IStartable的组件自动运行,以及不实现IStartable接口的组件如何在

2009-04-17 16:39:00 567

转载 Castle IOC容器实践之Startable Facility(二)

摘要:在Castle IOC容器实践之Startable Facility(一)中我们已经学会了如何去使用Startable Facility,本文将在此基础进一步对它的原理做一些分析。 主要内容Startable Facility原理分析…… 在Castle IOC容器实践之Startable Facility(一)中我们已经看到了如何去使用Startable Facil

2009-04-17 16:39:00 433

HeadFirst 设计模式学习笔记3--装饰模式 Demo

HeadFirst 设计模式学习笔记3--装饰模式 Demo http://blog.csdn.net/laszloyu/archive/2010/05/12/5582561.aspx

2010-05-12

HeadFirst 设计模式学习笔记2--观察者模式 demo

HeadFirst 设计模式学习笔记2--观察者模式 demo http://blog.csdn.net/laszloyu/archive/2010/05/12/5581769.aspx

2010-05-12

HeadFirst 设计模式学习笔记1--策略模式Demo

http://blog.csdn.net/laszloyu/archive/2010/05/11/5579765.aspx 示例代码

2010-05-12

iBatisNet实现增删改的一个简单例子

iBatisNet C# WinForm iBatisNet实现增删改的一个简单例子,数据库是sqlservice,大家可以下载来看看。

2009-04-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除