读书笔记
文章平均质量分 66
lulu_jiang
这个作者很懒,什么都没留下…
展开
-
.NET组件程序设计 第7章 异步调用
异步调用模式:对象在后台执行方法调用后,控制权立即返回客户端(调用期间客户端不阻塞),随后以某种方式通知客户端该方法执行完毕。 委托,你懂的:当使用一委托调用方法时,委托会阻塞调用者一直到所有目标方法都返回。委托是能够用于异步调用目标的方法。委托实际上是编译成类。//声明一个委托public delegate void MyDelegate();//委托实际编译为类public seale原创 2011-06-25 22:58:00 · 932 阅读 · 0 评论 -
.NET组件程序设计 第6章 事件
基于委托的事件:发布事件的对象叫事件源(发布者),响应事件并处理的一方叫接受器(订阅者)。事件通知形式:发布者调用订阅者的方法。 使用.NET事件://定义委托签名//参数sender:订阅者为多个发布者提供相同处理方法,为区分不同发布者用//参数eventArgs:提供给事件的特定参数容器对象,要防止其中定义属性被订阅者修改public delegate void原创 2011-06-22 18:32:00 · 659 阅读 · 0 评论 -
.NET组件程序设计 第5章 版本控制
为毛突然就说起版本控制了,不解 程序集版本号:每个程序集都有一个版本号,该号应用于此程序集中所有组件(多个模块)。打开程序集信息对话窗,为一程序集属性可视化编辑器,这些属性存在项目的AssemblyInfo.cs中。 版本号基础:由主版本号,次版本号,构建版本号,修改号共4部分组成。 程序集部署模型:1.专用程序集,每个客户端程序维护自己专用本地程序集拷贝。原创 2011-06-21 16:16:00 · 851 阅读 · 0 评论 -
.NET组件程序设计 第4章 生命周期管理
托管堆:.NET运行时都会预先分配一个特殊内存堆(托管堆)。用于为对象,数据存储分配内存。每次new操作,.NET都从托管堆中分配内存。托管堆是一长内存空间,由.NET维护一个指向堆中下一个可用地址的指针。当.NET需要new一个新对象,会为之分配空间,并移动指针到下一可用地址。与传统内存分配模式比,此种方式更快。因为对于非托管环境,内存分配由操作系统完成,每次都通过遍历寻找够大的连续原创 2011-06-18 19:15:00 · 629 阅读 · 0 评论 -
.NET组件程序设计 第2章
公共语言运行时(CLR):.NET CLR提供一个公共上下文,执行所有.NET组件,不考虑具体编写语言。为实现语言互操作性,编译器生成的代码必须遵守严格的CLR类型系统,即为CLR兼容类型。 托管代码:.NET CLR管理代码行为的方方面面,针对CLR的代码,称为托管代码,统一由CLR管理。 编译.NET托管代码:1.高级语言(C#) -----------编译--原创 2011-06-15 18:03:00 · 887 阅读 · 0 评论 -
.NET组件程序设计 第3章
接口实现:实现类必须声明接口的方法为公共的,接口当做二进制契约对待,保证客户端不因为服务提供程序的改变而受影响。.NET不强制接口从实现分离,但我们应该总强调分离!分离!分离! 显式接口实现://定义接口public interface IMyInterface{ void Fun();}//实现接口public class MyClass : I原创 2011-06-16 17:11:00 · 570 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第9章_泛型_概论
泛型优点: 1.性能ArrayList list = new ArrayList(); list.Add(22); //装箱操作(值类型转引用类型),要装箱一个整数类型 int il = (int)list[0]; //拆箱操作(引用类型转值类型),把对象转换为整数类型 foreach (int i in list原创 2010-04-23 11:03:00 · 715 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_读书总结篇
挤出差不多2个星期的时间,断断续续的,看了此书的第一部分讲到泛型,集合,就有些挺不住了,内容真多啊此书的例子都很经典,很值得玩味 决定还是掏钱买本(听说厚的跟牛津字典有的一拼@-@)放在家里当工具书用,应该还不错原创 2010-04-23 15:18:00 · 842 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第7章_事件
1.事件接收器 protected void Page_Load(object sender, EventArgs e){ //多播委托 //告诉运行库,引发buttonOne的Click事件执行EventHandler委托所引用的自定义Button_Click方法 this.buttonOne.Click += new EventHandler(Butt原创 2010-04-22 14:13:00 · 620 阅读 · 0 评论 -
.NET组件程序设计 第8章 多线程和并发管理
^-^ 终于到多线程了!嘿咻。。。嘿咻。。。 线程和多线程:线程仅仅是一个进程中一条执行路径。通常在应用程序提供上下文中执行。.NET中线程为基本执行单元。.NET线程是操作系统底层线程托管代码表示。例:用户界面在一个线程,应用程序在另一个线程处理用户请求。因原创 2011-07-04 19:39:17 · 3898 阅读 · 0 评论 -
.NET组件程序设计 第8章 多线程和并发管理 同步线程_监视器
同步线程:.NET组件(类)默认在一多线程环境执行,可通过并发多线程访问,但可能导致对象状态破坏。想要该对象线程安全,就应确保一次只有一个线程可访问该对象。 自动同步://&-&看不懂,后补 手动同步:.NET手动同步提供了丰富的同步锁。1.监视器(Monit原创 2011-07-06 18:32:16 · 1715 阅读 · 0 评论 -
[高性能JavaScript] 第1章 加载和执行
1.1 脚本位置浏览器再解析到标签之前,不会渲染页面的任何部分,将脚本(标签)放到页面顶部(标签)会导致明显延迟(虽然目前浏览器标签下载外部资源时不会阻塞其他标签,但任然会阻塞页面渲染,如图片加载)。由于脚本会阻塞页面其他资源的下载,推荐将所有标签尽可能放到标签底部,减少整个页面下载的影响。 Script Example Hello world!原创 2013-03-06 20:40:36 · 728 阅读 · 0 评论 -
.NET组件程序设计 第10章 远程处理
应用程序域:托管代码不能在本地操作系统进程中直接执行,在托管代码和非托管代码间需要一桥梁,这便是应用程序域。可将应用程序域看为一.NET进程,但单一物理进程可有多个应用程序域。原创 2011-08-05 22:40:34 · 682 阅读 · 0 评论 -
.NET组件程序设计 第9章 序列化和持久化
序列化和持久化:描述对象状态以某种形式存储到文件,以及后来的恢复该对象状态。 Serializable属性:默认,用户定义类型(类,结构)不可序列化,需要显示用[Serializable]特性修饰自定义类型。 不可序列化成员:当一个类可序列化,.NET原创 2011-08-02 22:51:19 · 785 阅读 · 0 评论 -
.NET组件程序设计 第8章 多线程和并发管理 .NET多线程服务
线程相关静态变量默认静态变量应用程序域所有线程可见。如果静态变量需要在线程间共享,同步访问也就必然了。线程相关静态变量保证线程安全,同一时间只有一个线程可访问,且每个线程都有该静态变量的拷贝。public class MyClass{ //.NET支持线原创 2011-08-01 20:47:37 · 3186 阅读 · 0 评论 -
.NET组件程序设计 第8章 多线程和并发管理 同步委托
.NET中调用委托前必须检查值是否为NULL,否者会引发一空引用异常。但对于多线程环境,此种检查任然不够,因为访问委托时可能发生竞态条件。public class Publisher{ public event EventHandler MyEvent;原创 2011-07-10 14:50:07 · 727 阅读 · 0 评论 -
.NET组件程序设计 第8章 多线程和并发管理 同步线程_信号
4.信号(Semaphores)Semaphores继承WaitHandle类。限制可同时访问某资源的线程数。包含一个计数器,计数器值为正数,句柄信号发送,线程不阻塞。计数器值为零,句柄信号未发送,线程阻塞。 如计数器为正数,且有线程一等待方法调用,线程不阻塞,计数器值减小一。R原创 2011-07-09 16:28:36 · 867 阅读 · 0 评论 -
.NET组件程序设计 第8章 多线程和并发管理 同步线程_互斥
飞原创 2011-07-08 20:25:33 · 514 阅读 · 0 评论 -
.NET组件程序设计 第8章 多线程和并发管理 同步线程_互锁,读写锁
5.互锁(Interlock)用于增加,减少,交换,比较数值。互锁提供一系列以原子方式访问变量的方法。int i = 8;//以原子方式递增指定变量的值int newValue = Interlocked.Increment(ref i);//输出9Conso原创 2011-07-09 20:42:49 · 1063 阅读 · 1 评论 -
.NET组件程序设计 第8章 多线程和并发管理 同步线程_可等待事件
3.可等待事件(EventWaitHandle)EventWaitHandle派生自WaitHandle,用于跨线程通知事件。EventWaitHandle有两种方式:手动重置(ManualReset)和自动重置(AutoReset)对应强类型子类ManualResetEvent原创 2011-07-09 16:26:16 · 851 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第7章_委托
委托是一种特殊的对象类型,只包含方法的地址 1.声明委托 c#中使用一个类时,要先定义这个类,再实例化该类的对象使用委托时也是这样 理解委托:把委托当方法签名和返回类型指定名称,我们习惯于把数据作为参数传递给方法所以,把方法作为参数传递给另一方法听起来奇怪(想想回调函数^-^) public partial class Default4 : System.Web原创 2010-04-21 15:26:00 · 558 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第5章_数组
1.简单数组 数组声明,初始化/***** * 声明数组后,必须为数组分配内存 * 数组是引用类型,保存在托管堆*****/int[] myArray1 = new int[4];int[] myArray2 = new int[4] {4, 7, 1, 2};int[] myArray3 = new int[] {4, 7, 1, 2};int[] m原创 2010-04-21 10:09:00 · 730 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第2章_c#基础_c#预处理器指令
2.13c#预处理器指令 这些命令从来不会转化为可执行代码中的命令,但会影响编译过程的各个方面 #define, #undef#if, #elif(=else if), #else, #endif 结合实现条件编译://告诉编译器存在给定名称的符号,类似于声明变量,但这个变量没有真正的值,只是存在而已#define DEBUG//删除符号定义//#und原创 2010-03-31 09:21:00 · 539 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第2章_c#基础_枚举
2.6枚举 public partial class Default2 : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { //获取枚举的字符串标示 TimeOfDay time = TimeOfDay.Afternoon;原创 2010-03-30 16:21:00 · 510 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第3章_对象和类型_结构
3.4结构1.结构是值类型2.结构不可继承3.结构不许定义无参数的构造函数,且必须有构造函数存在4.结构也可以使用Close()或Dispose()方法 public partial class Default2 : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs原创 2010-03-31 15:18:00 · 523 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第2章_c#基础_命名空间
2.8命名空间 命名空间是一种逻辑组合,而不是物理组合,告诉使用类的人:这两个类是如何相关如何使用 //嵌套命名空间namespace Wrox{ namespace ProCSharp { namespace Basics { //code }原创 2010-03-31 08:42:00 · 619 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第2章_c#基础_流控制
2.5流控制 1.条件语句 if 语句 switch (integerA) { case 1: ... break; case 2: ... break;原创 2010-03-30 15:57:00 · 473 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第2章_c#基础_预定义数据类型
2.4预定义数据类型 1.值类型和引用类型 值类型例子:int i = 20;int j = i;i = 10; Response.Write(i); ->输出10Response.Write(j); ->输出20 注:会在内存的两个地方存储值20 引用类型例子:Vector x原创 2010-03-30 15:17:00 · 610 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第2章_c#基础_变量
2.3变量 1.变量初始化int x = 10, y = 10;int x = 10;int x = 10, bool y = true; C#强调安全性,需要变量初始化后,才能使用 2.类型推断int someNumber = 0;var someNumber = 0; 上两句等价,即使为指定变量类型,编译器可根据变量初始化值"推断"变量类型原创 2010-03-30 13:35:00 · 647 阅读 · 0 评论 -
C#高级编程(第6版) 目录
书找到了听说没目录,补上@0@看起来好难啊~~ C#高级编程(第六版) 目录 第Ⅰ部分 C# 语 言 第1章 .NET体系结构 2 1.1 C#与.NET的关系 2 1.2 公共语言运行库 3 1.2.1 平台无关性 3 1.2.2 提高性能 3 1.2.3 语言的互操作性 4 1.3 中间语言 5 1.3.1 面向对象和接口的支持 6 1.3.2 相异值类型和引用原创 2010-03-30 09:29:00 · 2402 阅读 · 0 评论 -
红皮书_ASP.NET2.0网站开发全程解析_第2章_主题
使用主题: web.config中对所有页面应用主题 theme="Yellow" masterPageFile="~/Master/MasterPage.master" /> 对某个页面应用主题Theme="Yellow" %> 主题文件结构:- App_Themes //主题文件夹 - Def原创 2010-03-18 11:24:00 · 667 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第3章_对象和类型_类
3.2类成员 1.数据成员包含类的数据:字段(与类相关的变量),常量,事件 /* 定义类 star */class PhoneCustomer{ //数据成员 public const string d = "Monday"; public int id = 0;}/* 定义类 end *///实例化类Phon原创 2010-03-31 10:37:00 · 525 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第3章_只读字段和匿名类型
3.2.3只读字段 readonly与const区别: 1.const声明时必须初始化,后其值不可修改 readonly声明无需初始化,仅在构造函数中赋值修改,但没赋值,其值就是其数据类型的默认值 2.const无需显示指定static readonly要显示指定static:public static readonly int i; 3.2.4匿名原创 2010-03-31 14:56:00 · 456 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第4章_修饰符
4.3修饰符 public 任何代码可以访问protected 只有派生类可访问internal 只能在包含它的程序集中访问private原创 2010-04-04 22:33:00 · 427 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第4章_继承_继承的类型
4.1继承的类型 1.实现继承表示一个类型派生于一个基类,拥有该基类型的所有成员字段和函数 2.接口继承表示一个类型只继承函数签名,没有继承任何实现代码 3.多重继承即一个类派生于多个类 4.结构和类结构总派生于System.ValueType,结构不可继承,但可派生任意多个接口类总是派生于用户选择的另一个类,可派生任意多个接口原创 2010-04-03 16:01:00 · 434 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第4章_继承_实现继承
4.2实现继承 //类class MyClass : MyBaseClass, IInterface1, IInterface2{}//结构public struct MyStruct : IInterface1, IInterface2{} 1.虚方法把基类函数声明为virtual,该函数可以在派生类中重写,也可以把属性声明为virtualusing Sy原创 2010-04-03 16:15:00 · 554 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第4章_接口
4.4接口 namespace lulu{ using System; //定义接口 public interface IBankAccount { void PayIn(decimal amount); bool Withdraw(decimal amount); decimal Ba原创 2010-04-04 23:10:00 · 553 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第4章_继承_派生类的构造函数
4.2.6派生类的构造函数 在创建派生类的实例时,实际上会有多个构造函数起作用,要实例化的类的构造函数本身不能初始化,必须调用基类构造函数using System;//抽象基类public abstract class GenericCustomer{ //私有成员字段,派生类无法访问 private string name; //构造原创 2010-04-03 19:46:00 · 668 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第3章_对象和类型_扩展方法
3.8扩展方法 如果有类的源码,继承是给对象添加功能的方法如果没有类的源码,可使用扩展方法,允许改变一个类/**** 源码 star ****/using System;/// ///MainEntryPoint 的摘要说明/// public class Money{ //标示货币的预定义类型 //成员字段 private原创 2010-04-01 15:21:00 · 465 阅读 · 0 评论 -
红皮书c#高级编程(第6版)_第3章_对象和类型_Object类
3.7Object类 所有.net类都派生于System.Object,如没有指定基类,编译器就自动假定这个类派生于Object因此,除了自己定义的方法属性外,可以访问Object定义的公共或受保护的成员方法 System.Object方法:1.ToString():获取对象字符串表示2.GetHashTable()3.Equals(),ReferenceEqual原创 2010-04-01 14:58:00 · 488 阅读 · 0 评论