摘要: 概述一个进程的多个线程可以运行在不同的cpu上,或者多个核心的cpu的不同核心上。windows 资源管理其thread列可以查看进程和每个进程的线程号。进程包含资源,例如window句柄、文件系统句柄和其他核心对象。每个进程都分配了虚拟内存。一个进程至少包含一个线程。操作系统会调度线程。线程有一个优先级、正在处理的程序的位置的计算器、一个存储器本地变量的堆栈。每个线程都有自己的堆栈,但程序代码的内存和对有进程内所有线程共享。这使一个进程中的所有线程通讯非常快--该进程的所有线程都寻址相同的虚拟内存。但是,这也是处理比较苦难,因为多个线程可以修改同一个位置的内存。进程管理的资源包括虚拟内存和w 阅读全文
posted @ 2013-04-09 21:00 Lovey 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 今天搞一个webservice,简单的实现步骤如下:第一,在一个项目中的websercie工程下新建一个.asmx(webservice页面),写好公开的方法。第二,将这个工程运行起来,通过url调用这个webservice,例如:http://localhost:6668/WebService/UploadDllService.asmx 就可以看到相关的方法了。第三,打开注册.net的命令行,输入:wsdl http://localhost:6668/WebService/UploadDllService.asmx /out:D:\UploadDllWebService.cs,此后将会在d盘 阅读全文
posted @ 2013-04-02 13:42 Lovey 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 好久没弄过sql了今天算是复习一下了,应该好好系统的看一遍书了。--创建表create table sys_dynamicdll( filename varchar(40) primary key, fileconten blob, comments varchar(100), uploadUser NUMBER(10), uploadTime timestamp(6) default sysdate, foreign key(uploadUser) references sys_users(ukey));一次更次多条数据就犯了错,写了多次set,其实一次就够了,哎update TABLE_N 阅读全文
posted @ 2013-04-01 18:58 Lovey 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 静态字段与静态构造函数static 修饰成员的初始化总是先与实例成员,static成员与该类型相关与类型实例无关。静态字段类型中静态字段之间的实例化顺序是按代码中的书写顺序执行。静态字段先与本类静态构造函数执行;静态字段中使用到的其他类型的静态字段,则递归倒序从最底层实例化静态字段和调用静态构造函数。静态构造函数静态构造函数不能被任何修饰符修饰,并且整个生命周期只被调用一次。静态只读字段静态只读字段可以在两处被赋值,一次是静态字段本身初始化,另一次是在静态构造函数中修改值,此后永远不允许改变其值。Program.Entry.Code static void Main(string... 阅读全文
posted @ 2013-03-29 17:06 Lovey 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 当我们定义自己的类型时(无论是类还是Struct),应该为类型定义等同性的含义。C#定义了4中不同的函数来判断两个对象是否“相等”。1.public static bool ReferenceEquals(object left,objec right)2.public static bool Equals(object left,object right);3.public virtual bool Equals(object right);4.public static bool operator ==(MyClas left,MyClass right);对于前两种静态函数,我们永远都应 阅读全文
posted @ 2013-03-29 08:59 Lovey 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 引用炒股票与买基金来解释“外观模式”,为用户抽象出复杂业务调用过程,提供一个简单的对外统一调用“接口”。外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。子系统代码模拟:Facade.SubSystem.impl.Code 1 class SubSystemOne 2 { 3 public void MethodOne() 4 { 5 Console.WriteLine("子系统方法一。"); 6 } 7 } 8 ... 阅读全文
posted @ 2013-03-28 23:35 Lovey 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 迪米特原则(low ofDemeter)又称“最少知识原则”(LeastKnowledgePrinciple)迪米特法则(LoD),如果两个类不必彼此直接沟通,那么这两个类就不应当发生直接的相互作用。如果一个类需要调用另一个类的某个方法的话,可以通过第三者转发调用。迪米特法则首先强调的前提是在类的结构设计上,每一个类都应该降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的方法和字段不要公开。迪米特法则其根本思想,是强调类之间的松耦合。程序设计时,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对关系的类造成波及。 阅读全文
posted @ 2013-03-27 22:51 Lovey 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 模版方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变算法的结构即可重定义算法的特定步骤。菜鸟使用模版方法模拟学生做试卷:Pattern.Template Method.Code 1 namespace Pattern.TempleMethod.Newbie 2 { 3 ///学生试卷运用模版模式的实现 4 class TestPaper 5 { 6 public void TestQuestion1() 7 { 8 Console.WriteLine("屠龙刀的玄铁可能是:... 阅读全文
posted @ 2013-03-27 22:31 Lovey 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 原型模式(Prototype),用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象[DP]。“原型模式其实就是从一个对象再创建另外一个可定制的对象,而不需要知道任何创建的细节。”基础知识this.MemberwiseClone(),MSDN解释:创建对象的浅表副本。方法是创建一个新的对象,然后将该对象的非静态字段复制到该新对象。如果字段是值类型,则对字段执行逐位复制。如果对象是引用类型则复制引用而不复制引用的对象;因此原始对象和副本引用一个对象。在.NET在System命名空间提供了ICloneable接口,其中的唯一一个方法Clone()这样只需实现这个接口就可以完成原型模型了。 阅读全文
posted @ 2013-03-26 22:49 Lovey 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 简单工厂vs工厂方法简单工厂是第二章讲解的内容,它与工厂方法很相似。简单工厂模式最大的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关类,对客户来说去除了对具体产品的依赖。但是,每次要添加算法,都需要的在客户端怎加一个case分支条件,修改了原有的类,违反了开放-封闭原则。简单工厂模式复习:Pattern.Sample Factory.Code 1 namespace Pattern.FactoryMethod 2 { 3 //首先复习简单工厂 4 class OperationFactory 5 { 6 public stati... 阅读全文
posted @ 2013-03-26 17:59 Lovey 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 代理模式(Prexy)为其他对象提供一种代理以控制这个对象的访问[DP]。代理模式代码代码比较简单,但是应用场景难于理解。代理模式菜鸟设计应用:Proxy.Newbie.Code 1 namespace Pattern.Proxy.Newbie 2 { 3 interface IGiveGift 4 { 5 void GiveDolls(); 6 void GiveFlowers(); 7 void GiveChocolate(); 8 } 9 10 class Proxy : IGiveGift11 {1... 阅读全文
posted @ 2013-03-26 16:11 Lovey 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 装饰模式(Decorator),动态给一些对象添加额外的职责,就增加功能而言,装饰模式比声明子类更加灵活[DP]。装饰模式使用: 利用SetComponent来对对象进行包装的,这样每个装饰对象的实现就和如何使用这个对象分离开了,每个装饰对象只关心自己的功能,不需要关心如何被添加到对象链当中的[DEP]。装饰模式的原型实现:Pattern.Decorator.Prototype.Code 1 namespace Pattern.Decorator 2 { 3 abstract class Component 4 { 5 public abstract void... 阅读全文
posted @ 2013-03-26 14:11 Lovey 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 依赖倒转原则,A.高层模块不应该依赖低层模块,两者都应该依赖抽象。B.抽象不应该依赖细节,细节应该依赖抽象。(平常高层模块调用,低层已经开发好的函数库,但是比如,客户要求换了数据库的存储方式,依赖低层函数就不行了,如果我们依赖了抽象类或者借口,就不用怕了。)里氏替换原则(LSP),子类必须能够替换掉他们的父类[ASD]。里氏替换原则由Barbara Liskov女士在1988年发表;一个软件实体如果使用的是父类的话,那么一定适用于其子类,而且觉察不到父类对象与子类对象的差别。也就是说,在软件类面,把父类替换为子类,程序的行为没有发生变化。正是因为这个原则,使得继承复用成为可能。只有当子类可以替 阅读全文
posted @ 2013-03-26 13:39 Lovey 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 开放-封闭原则,就是说软件实体(类、模块、函数等)应该可以被扩展,但是不可修改。'对于扩展是开放度(Openforextension)','对于更改是封闭的(Closefor Modification)'.怎样设计才能面对需求的改变却可以保持相对稳定,从而使得系统在第一个版本出来以后不断推出新的版本?如何应变?无论模块怎么‘封闭’,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对那种变化封闭做出选择。他必须猜出最有可能发证变化的种类,然后构建抽象来隔离那些变化。等到发生变化时立即采取行动[ASD]在我们最初编写代码时,假设变 阅读全文
posted @ 2013-03-26 12:47 Lovey 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 单一职责原则(SRP),就一个类而言,应该只有一个引起它变换的原因。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离[ASD]。如果你能有多于一个的动机去改变一个类,那么这个类就有多于一个的职责[ASD]。 阅读全文
posted @ 2013-03-26 12:08 Lovey 阅读(174) 评论(0) 推荐(0) 编辑
摘要: web打印,包括集中打印方案,一,是打印html,二,使用activex,activex是微软支持最好的产品,对其他浏览器需要安装插件,例如火狐,有2中解决办法,第一种安装插件 阅读全文
posted @ 2013-08-07 21:09 Lovey 阅读(621) 评论(0) 推荐(0) 编辑
摘要: http://www.codeproject.com/Articles/27107/Scalable-COMET-Combined-with-ASP-NEThttp://www.codeproject.com/Articles/27699/Scalable-COMET-Combined-with-ASP-NET-Part-2 阅读全文
posted @ 2013-04-22 18:09 Lovey 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 一.首先解锁 配置错误: 不能在此路径中使用此配置节。如果在父级别上锁定了该节便会出现这种情况。锁 定 是 默 认 设 置 的 (overrideModeDefault="Deny") 或 者 是 通 过 包 含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的。 出现这个错误是因为 IIS 7.5 采用了更安全的 web.config 管理机制默认情况下会锁住配置项不允许更改。 要取消锁定可以运行命令行 %windir%\system32\inetsrv\app 阅读全文
posted @ 2013-04-15 09:40 Lovey 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 动态添加程序集 阅读全文
posted @ 2013-04-07 20:50 Lovey 阅读(183) 评论(0) 推荐(0) 编辑
摘要: HttpContext.Current.Request.UserHostAddress //获取用户登录地址。^(([a-zA-Z]:\\)|(\\{2}\w+)\$?)((([^/\\\?\*])(\\?))*)$//验证文件磁盘路径的正则表达式,例如C:\Program Files (x86),但是C:\Program Files (x86)\\无法通过 阅读全文
posted @ 2013-04-02 20:32 Lovey 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 啊啊啊,整几天的ubuntu终于算之,把自己搞晕了,也许所有环境都搭建好了,mono,python,mysql,开始吧,my dear,整整的是过了一个愚人节假期啊。 阅读全文
posted @ 2013-04-02 01:18 Lovey 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 今天做动态加载dll发现一个好的泛型读取列的方法,结合自己的使用,还有自己的命名的越来越感觉好一些,看代码就像读英文。DllFile.cs.Code 1 /// <summary> 2 /// dll文件 3 /// </summary> 4 internal struct DllFile 5 { 6 /// <summary> 7 /// 文件名 8 /// </summary> 9 public string Name { get; set; }10 11 /// <su... 阅读全文
posted @ 2013-04-01 19:47 Lovey 阅读(146) 评论(0) 推荐(0) 编辑