一 流的概念
在.NET中Stream 是所有流的抽象基类。流是字节序列的抽象概念,或者说是计算机在处理文件或数据时产生的二进制序列。例如文件、输入/输出设备、内部进程通信管道或者 TCP/IP 套接字。Stream 类及其派生类提供这些不同类型的输入和输出的一般视图,使程序员不必了解操作系统和基础设备的具体细节。简单的说流提供了不同介质之间的数据交互功能

在.NET中常用的流有BufferedStream 、FileStream、MemoryStream



和NetworkStream,他们都是位于System.IO和System.Net命名空间下。流涉及三个基本操作: 读取,写入和查找。根据基础数据源或储存库,流可能只支持这些功能中的一部分。有些流实现执行基础数据的本地缓冲以提高性能。对于这样的流,Flush 方法可用于清除所有内部缓冲区并确保将所有数据写入基础数据源或储存库。

本日志由 ceiling 于 2011-03-03 00:18:04 发表到 DotNet框架 中,目前已经被浏览 193 次,评论 0 次;

首页只显示了部分日志内容,要查看日志的全部内容请阅读全文

应该算是出于对各种DOCK的烦躁(部分DOCK程序在启动程序时,会把当前路径指派为DOCK所在路径,当程序中使用相对路径时,路径对“相对”到DOCK的文件夹里),我在程序中大多使用绝对路径来定位文件方便后来者,在这里总结了下,也摘抄了点网上流传的以我的程序为例物理路径:

本日志由 ceiling 于 2011-03-02 12:20:34 发表到 DotNet框架 中,目前已经被浏览 184 次,评论 0 次;

首页只显示了部分日志内容,要查看日志的全部内容请阅读全文

所谓的对对象集合进行查询的方法,就是指,如何从一个集合中找出符合条件的某些项来。这一次我没有用 自定义对象集合,而是直接使用对象集合,是因为普通的对象集合,如int[], List<int>,这样的东西,也没有统一固定的查询方法,因为对于一个查询来讲,它的条件是多种多样的,所以是无法提供统一固定查询方法的。比如有时候想找出所有大于10的int,有时候又想找所有小于10的int。。。。。。。。。

 

所以要完成这样一个任务,传统的编程方式就是定义方法,其中建立循环,然后逐个遍历每一个元素,查看其是否符合条件,然后把符合条件的结果挑出来,放在一个返回值集合中,最后返回给调用者。这样的方法直接了当,清晰易懂。用了好多年了,但是写起来麻烦,简单点的都得个7,8行。于是.NET又进行了改进。

本日志由 ceiling 于 2011-02-26 14:05:09 发表到 DotNet框架 中,目前已经被浏览 176 次,评论 0 次;

首页只显示了部分日志内容,要查看日志的全部内容请阅读全文

读写锁的出现主要是在很多情况下,我们读资源的操作要多于写资源的操作。但是如果每次只对资源赋予一个线程的访问权限显然是低效的,读写锁的优势是同时可以有多个线程对同一资源进行读操作。因此在读操作比写操作多很多,并且写操作的时间很短的情况下使用读写锁是比较有效率的。读写锁是一个非静态类所以你在使用前需要先声明一个读写锁对象:

static private ReaderWriterLock _rwlock = new ReaderWriterLock();     读写锁是通过调用AcquireReaderLock,ReleaseReaderLock,AcquireWriterLock,ReleaseWriterLock来完成读锁和写锁控制的

本日志由 ceiling 于 2011-02-09 17:49:44 发表到 DotNet框架 中,目前已经被浏览 170 次,评论 1 次;

首页只显示了部分日志内容,要查看日志的全部内容请阅读全文

lock关键字是实现线程同步的比较简单的方式,其实就是设置一个临界区。在lock之后的{...}区块为一个临界区,当进入临界区时加互斥锁,离开临界区时释放互斥锁。MSDN对lock关键字的描述是: lock 关键字可将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。
具体例子如下:

本日志由 ceiling 于 2011-02-09 17:48:47 发表到 DotNet框架 中,目前已经被浏览 127 次,评论 0 次;

首页只显示了部分日志内容,要查看日志的全部内容请阅读全文

481/10