自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

狂奔之林的博客

技术之长,重在每天积累

  • 博客(54)
  • 资源 (1)
  • 收藏
  • 关注

转载 vba excel编程三日谈(3)

本文将讲解vba连接数据库读取数据,更新数据, vba创建透视图.vba连接数据库读取数据,更新数据使用adodb通过windows系统提供的datasource, 即可连接各类数据库并进行crud操作.通过控制面板->Administrative Tools ->DataSource (ODBC) 即可查看和添加/修改datasource. 下面演示如何为oracle添加一个da

2015-07-31 13:40:54 1228

转载 vba excel编程三日谈(2)

表格基本操作由于表格操作内容繁多, 本文将以例子为主演示一些常用的操作.下面的例子将演示怎么遍历worksheet,选中worksheet,添加worksheet,删除worksheet.[vb] view plaincopySub test8()      Dim sh As Worksheet      For E

2015-07-31 13:40:06 796

转载 vba excel编程三日谈(1)

最近由于要修改一个excel report,见识了vba的强大。 这个report是一个大牛3年前写的,每天只需打开该文件, 就会自动连接oracle的dev和uat数据库读取最新的市场数据, 生成6个透视图,并比较dev和uat的数据的异同。vba操作数据之方便,生成的report之复杂,深深的吸引了我, 于是乎觉得不学点vba真的对不起老本行。花了3天时间学习, 目前觉得基本可以满足大多数需求

2015-07-31 13:38:27 745

转载 C#中的Finalize,Dispose,SuppressFinalize的实现和使用介绍

MSDN建议按照下面的模式实现IDisposable接口:public class Foo : IDisposable{ public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool

2015-07-31 11:26:16 5056

转载 C#中标准Dispose模式的实现

摘要:C#程序中的Dispose方法,一旦被调用了该方法的对象,虽然还没有垃圾回收,但实际上已经不能再使用了。所以使用上要仔细考虑细节。  需要明确一下C#程序(或者说.NET)中的资源。简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类:  托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象;  非托管资源:不受CLR管理的对象,

2015-07-31 11:15:03 522

转载 C# Socket编程笔记

看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现关于这个东东的文章实在是太多了~~~真得是没有写得必要,而且我也有点懒得去琢磨字句。(看到这,肯定得来个转折的了,不然就看不到下文了,不是吗)但是,为了自己下一篇要写的文章做参考,还是有必要先补充一下socket基础知识。      注意:如果你已经接触过socket,那就没什么必要耽误时间看下去了。另外,如果发现其中任何错误,欢迎直接

2015-07-31 10:53:44 392

转载 读书笔记22:职责链模式

1、定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到对象处理它为止。    相信大家都写过if...else或者switch,当条件很多时需要写上数十行代码。如果要修改某些条件或者处理过程,就又要不断地修改这个牛叉的分支语句。这时我们可以采用职责链模式,它是将许多请求的分支或者步骤都独立出来。然后每个独立出来的部分

2015-07-31 10:12:58 309

转载 读书笔记20:中介者模式

1、 定义:用一个中介对象来封装一系列的对象交互。中介者使个对象不需要显示地相互引用,从而使其耦合松散而且可以独立地改变它们之间的交互。    中介者减少了各个同事对象的耦合,使得可以独立地改变和复用各个同事对象和中介者类;由于把对想如何协作进行了抽象,将中介作为一个独立的概念并将其封装在一个对象中,这样关注的对象就从对象各自本身的行为转移到他们之间的交互上来,也就是站在一个更宏伟的角度去考虑

2015-07-31 10:11:25 358

转载 读书笔记21:解释器模式

1、定义    给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。该模式很好理解就是,目的就是解释。比如说世界上的各个地区和国家的汉字各不相同,但是需要表达的意思是相同的。同样描述吃饭的,中国叫吃饭,老外叫Eat...所以解释器模式是指,在程序中,一些符号或字符等需要在特定的条件下解释成这样,在另一情况下解释成那样。2、角色这个模式角色

2015-07-31 10:10:50 352

转载 读书笔记19:访问者模式

1、定义:表示作用于某对象结构中的个元素的操作。它使你可以在不改变个元素的类的前提下定义作用于这些元素的新操作。2、角色:抽象访问者角色(Visitor):声明了一个或者多个访问操作,形成所有的具体元素角色必须实现的接口。 具体访问者角色(CreateVisitor):实现抽象访问者角色所声明的接口,也就是抽象访问者所声明的各个访问操作。 抽象节点角色(Element):声明一个接

2015-07-31 10:09:30 447

转载 面向对象设计原则详解:迪米特法则

定义:如果两个类不必彼此通信,那么这两个类就不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法,可以通过第三者转发这个调用。其本意是,设计中要注意松耦合。    这个很好理解,如果类和类之间没什么联系就不说了。但是如果类之间有联系,比如类1要调用类2的方法或属性,不能说我在类1中引用类2,然后利用类2的引用调用类2的属性或方法。正确的处理是用委托或事件。这样减少类的耦合。下面拿

2015-07-31 10:07:47 405

转载 面向对象设计原则详解:依赖倒置原则

定义:抽象不应该依赖于细节。细节应该依赖于抽象。程序中所有的依赖关系都应该终止于抽象类和接口。针对接口而非实现编程。任何变量都不应该持有一个指向具体类的指针或引用。任何类都不应该从具体类派生。任何方法都不应该覆写他的任何基类中的已经实现了的方法。    说通俗一点就是,你抽象了一个类,这个类在这个工程中可以用,如果再做一个工程,移植过来还能用。遵循这一目的是为了代码的复用。不过这一条规则我觉得

2015-07-31 10:07:08 631

转载 面向对象设计原则详解:开放封闭原则

定义:软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。对于扩展是开放的,对于更改是封闭的。关键是抽象,将一个功能的通用部分和实现细节部分清晰的分离开来。    这里要求我们写代码要有抽象的概念。什么是抽象?指由实体抽离出概念的思考过程。就是从众多的对象中抽离出共同的本质的特征。在写代码的过程中,需要抽象类的地方,只需要抓住这个类的本质功能,不要老想着它在这个工程中的具体功能。

2015-07-31 10:06:41 504

转载 面向对象设计原则详解:里氏替换原则

定义:子类型必须能替换掉他们的基本类型。只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。    继承无非就是,完全按照父类的方法实现和除了父类的方法再加以扩展新的方法两种类型。那么子类要能替换父类,如何替换,不是说不能扩展新方法,相反,继承就是鼓励子类要扩展新的方法,

2015-07-31 10:06:27 1280

转载 面向对象设计原则详解:单一职责原则

定义:就一个类而言,应该仅有一个引起它变化的原因。  就是说一个类只做一件事,只关注它必须关注的,用哲学的语言来说,就是只抓主要矛盾。如果一个类承担了太多的职责,那就意味着这个类和其它程序集,或其它类总是互相影响,会造成整个程序逻辑混乱,既不利于程序的健壮性,也不利于后期维护。所以在设计之前,就要规划好各个类的,各个程序集的职责,显示界面的就只关心界面显示,不要再显示界面的类里去处理后台要

2015-07-31 10:04:17 574

转载 C# Serializable

C# SerializableSystem.SerializableAttribute串行化是指存储和获取磁盘文件、内存或其他地方中的对象。在串行化时,所有的实例数据都保存到存储介质上,在取消串行化时,对象会被还原,且不能与其原实例区别开来。只需给类添加Serializable属性,就可以实现串行化实例的成员。并行化是串行化的逆过程,数据从存储介质中读取出来

2015-07-31 10:01:05 398

转载 读书笔记17:桥接模式

概念 将抽象部分和与之对应的实现部分分离,使它们可以独立地变化。角色Implementor—— 定义实现类的接口CreateImplementorFirst(CreateImplementorSecond)——实现Implementor接口及定义其具体实现。Abstraction——定义抽象的接口。是依据Implementor所构成的高阶操作。RefinedAb

2015-07-30 13:25:52 372

转载 读书笔记18:命令模式

1、定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。[GOF 《设计模式》]2、角色Command——用来执行操作的接口。CreateCommand——将一个接收者对象绑定一个动作,并实现执行命令操作。Invoker——要求该命令执行。Receiver——知道如何实施与执行一个与请求相关的操作,任何类都

2015-07-30 13:25:47 347

转载 读书笔记16:组合模式

概念    将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。角色    Component:组合中对象接口    Leaf:叶子,继承自Component    Composite:分支,继承自Component    注意:这里分为透明模式和安全模式,透明模式指,叶子和分支完全继承自Component,即使没用的方

2015-07-30 13:06:58 354

转载 读书笔记15:备忘录模式

1、  概念在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复至保存时的状态。2、  模型角色:Originator(发起者)——创建备忘录Memorandum,并且根据需要决定,需要保存那些状态。Memorandum(备忘录)——负责存储Originator对象的内部状态,并防止Originator以外的对

2015-07-30 13:06:50 421

转载 读书笔记14:适配器模式

1、  概念将一个类的接口转换成另外一个 用户希望的接口,解决由于接口不兼容而不能一起工作类,能一起工作。2、  模型Target——客户端希望的接口。NeedAdapter——新增的类,没有实现Target接口。由于客户端只认Target的一系列方法,所以NeedAdapter没法在客户端使用。Adapter——适配器,实现Target接口,并负责当调用T

2015-07-30 13:05:50 375

转载 读书笔记13:状态模式

1、概念    当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。主要解决,当一个对象状态转换的条件表达式过于复杂时把状态的判断逻辑转移到表示不同状态的一系列类当中。将复杂的逻辑判断简化。2、模型    有三个角色,    State——抽象状态类,封装一个与特定状态相关的行为。    CreateState——具体状态,实现一个特定状态的行为。 

2015-07-30 13:04:58 435

转载 读书笔记12:观察者模式

1、概念定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象,这个主题的状态发生变化是就通知所有的观察者对象,是这些观察者自动更新自己。2、角色观察者(Observer)—观察者有一个更新自己状态的方法,当它观察的那个主题的装太发生了变化,主题会通知这些观察者,观察者接到通知后更新自己的状态。所以观察者有一个Update()方法。主题(Subject)—

2015-07-30 13:02:55 396

转载 读书笔记11:建造者模式

1、概念将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。2、角色产品(Product)——根据不同建造者建造的结果;抽象建造者(Builder)——包含详细的建造步骤;指挥者(Director)——安排如何建造,如何安排步骤的先后顺序;具体的建造者——根据不同的需求,实现Builder的步骤,每一步骤如何实现是不同的,但是B

2015-07-30 13:01:50 395

转载 读书笔记10:外观模式

1、  概念为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,该接口使子系统更加容易使用。2、  模型[csharp] view plaincopyprint?public class ModularA  {      public void ModularAMethod()      {       

2015-07-30 12:58:01 444

转载 读书笔记9:面向对象设计原则

单一职责原则就一个类而言,应该仅有一个引起它变化的原因。职责即为“变化的原因”。开放封闭原则软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。对于扩展是开放的,对于更改是封闭的。关键是抽象,将一个功能的通用部分和实现细节部分清晰的分离开来。理氏替换原则子类型必须能替换掉他们的基本类型。依赖倒置原则抽象不应该依赖于细节。细节应该依赖于

2015-07-30 12:55:42 399

转载 读书笔记7:原型模式

今天刚看了原型模式,刚一开始还真没弄明白这个模式想干嘛,因为一直都在使用clone方法,我觉得到处深度clone和到处new一个对象的实例,那不是一样的吗?后来查了资料也发帖子问了,其实clone和new有区别的,很简单,clone后的对象的实例不仅和原对象的实例结构一致而且值也一致;而new出来的对象的实例只是结构一致,值是默认值。其实原型模式它的根本目的是创建对象的实例,而且是要创建和已经存在

2015-07-30 12:53:28 387

转载 读书笔记8:模板方法模式

1、  概念    定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类不改变算法的结构也可以重定义某些算法的特定步骤。2、  模型    模板方法模式在编程中是经常用到的,就不做详细解释了。常见模型如下:[csharp] view plaincopyprint?using System;  using 

2015-07-30 12:52:53 352

转载 读书笔记6:工厂方法模式

1、概念    定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法是一个类的实例化延伸到子类。2、背景    已经知道工厂模式,有一个父类SuperClass,以及这个父类的不同实现方法和算法的若干个子类ClassA,ClassB... ...,有一个工厂类DAOFactory,根据客户端传来的标识决定调用哪个子类。如下:[csharp] vie

2015-07-30 12:52:15 352

转载 读书笔记5:代理模式

1、概念    给某一对象提供一个代理对象,并由代理对象控制原对象的引用。2、模型代理模式所涉及的角色有:抽象主题角色:声明了真实主题和代理主题的共同接口。代理主题角色:内部含有对真实主题的引用,可以操作真实主题对象;    代理主题角色提供和真实主题角色相同的接口,可以代替真实主题角色;    代理主题角色被调用传递给真实主题角色之前和之后

2015-07-30 12:51:34 346

转载 读书笔记4:单例模式

单例模式是指在应用程序的运行周期内,一个类始终只有一个实例,不论在何处访问都是如此。    一般单例模式有两种形式。    1、通过私有构造器实现    定义一个类构造器为private,有一个private的static变量,初始化的时候实例化;通过一个public的GetInstance方法获取对象的引用。[csharp] view plaincop

2015-07-30 12:49:55 483

转载 读书笔记3:装饰模式

1、背景   给对象增加新功能,如何实现:   (1)、在原类里面增加——违背开放封闭原则,类可以扩展但不能被修改。   (2)、利用继承扩展功能——造成类不断增多。    例子:给汽车增加对讲机系统,GPS定位系统,影视播放等,这些都不是汽车类的属性。如何增加? 2、认识装饰模式 装饰模式模型如下: [csharp] view plaincopyp

2015-07-30 10:30:46 444

转载 读书笔记2:策略模式

策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响使用算法的客户。    我觉得,策略模式有点类似于工厂模式:继承一个父类,不同的子类实现父类的方法都不同,然后根据需求初始化相应的子类。不同的是策略模式是针对算法的,工厂模式可以使用所有这种情况。依然以截取网页功能为例:截取算法父类:      对于不同的网页截取算法不同,可以抽象一

2015-07-30 10:28:29 361

转载 读书笔记1:简单工厂模式

工厂模式,这几乎是最常见的了,当年在学校的时候,老师讲了n多设计模式,只有这个至今还能想起来的。工作中我用过两个地方,一是数据库的连接,二是和书上的收银台的例子一样的那种。1、连接数据库,以access为例。这种最常见所以记得很清。[csharp] view plaincopyprint?public class DAOFactory  

2015-07-30 10:27:33 413

转载 C#中IList<T>与List<T>的区别感想

写代码时对:IList IList11 =new List ();List List11 =new List ();  有所疑惑,于是在网上搜索一下,很受启发,于是收藏下来,但对部分观点不敢苟同,用红色字体标明我的看法! 首先IList 泛型接口是 ICollection 泛型接口的子代,并且是所有泛型列表的基接口。它仅仅是所有泛型类

2015-07-30 09:22:40 1062

转载 C#中override和overload的区别

重载应该叫overload,重写叫override;重载某个方法是在同一个类中发生的!重写是在子类中重写父类中的方法。1.override:   父类:public virtual string ToString(){return "a";}                   子类:public override string ToString(){return "b";}2.o

2015-07-30 09:08:56 500

转载 杂谈异常处理try-catch-finally

1.   前言最近这段时间正开发一个店铺管理系统,这个项目定位于给中小型店铺使用的软件系统。简单的说,它处理商品的进货,销售,退货等功能。软件虽小,五脏俱全,里面涉及的技术跟大型应用软件其实差别也不大,其中有加密、数据访问、异常处理、日志、验证、ORM、依赖注入等。本篇文章主要介绍C#语言的异常处理方面的内容,其中包含的主要内容:什么是异常?异常的特点?异常处理的基础知识。

2015-07-29 09:09:27 451

转载 C#中的throw

Throw会抛出/传递异常,通过在catch块里使用throw语句.可以改变产生的异常,比如我们可以抛出一个新的异常,throw语句有各种各样的,并且很有必要.例子我们首先看一下三个方法,分别叫做A,B,C,他们使用不同的throw语句。方法A使用了无参的throw语句。这可以被看作是rethrow(继续抛出)—他会抛出已经出现的同样的异常继续,方法B throw一个命名的异常

2015-07-29 08:54:55 3879

原创 DriveInfo类查看磁盘信息

DriveInfo类查看磁盘信息 DriveInfo di = new DriveInfo(@"d:\"); this.Label1.Text = di.Name; //获取磁盘名称 this.Label2.Text =di.TotalFreeSpace.ToString(); //可用空闲空间总量 this.Label3.Text =di.TotalSiz

2015-07-28 11:24:28 745

转载 linux查找目录下的所有文件中是否含有某个字符串

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xargs grep -ri "IBM" -l 1.正则表达式    (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/、*、?等)组成。   (

2015-07-28 10:09:25 394

细品RibbonX(1-59)

介绍教你如何制作office的UI界面的开发、制作。让你随心所遇的玩转UI界面。比pdf文档更合适,支持代码复制和粘贴

2018-03-01

空空如也

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

TA关注的人

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