摘要:
什么是Base64? 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)为什么要使用Base64? 在设计这个编码的时候,我想设计人员最主要考虑了3个问题: 1.是否加密? 2.加密算法复杂程度和效率 3.如何处理传输? 加密... 阅读全文
摘要:
1. assembler和compilerassembler 汇编器,一般用于汇编语言,如本书的ILAsm。动词形式为assemble,翻译为汇编。compiler 编译器,一般用于高级语言,如C#等。动词形式为compile,翻译为编译。原书中,作者对这两个词是有所区分的。2.assembly 程序集很多人常常会与module(模块)混淆,以至于分不清哪一个才是真实存在的。没办法,Visual Studio默认生成单模块程序集,而多模块程序集则需要命令行工具手动配置。其实,把assembly翻译为“程序集”并不是很贴切,毕竟,assembly是一个很抽象的东西,而“程序集”又是那么的具体。也 阅读全文
摘要:
什么是资源:首先要提出“什么是资源”。在CLR出来之后,Windows系统资源开始分为“非托管资源”和“托管资源”。 非托管资源是指:所有的Window内核对象(句柄)都是非托管资源,如对于Stream,数据库连接,GDI+的相关对象,还有Com对象等等,这些资源并不是受到CLR管理; 托管资源是指:由CLR管理分配和释放的资源,即由CLR里new出来的对象。其次再来讲,资源的释放方式。 非托管资源:需要显式释放的,也即需要你写代码释放; 托管资源:并不需要显式释放,但是如果引用类型本身含有非托管资源,则需要进行现实释放; 显式释放的C#实现:显式释放的C#实现,由C#语法支持的有: 1:实现 阅读全文
摘要:
避免在finally撰写无效代码:先提出一个问题,即:是否存在一种打破try-finally执行顺序的情况。答案是:没有(除非应用程序本身因为某些很少出现的特殊情况在try块中退出)。你应该始终认为finally内代码会在方法return之前被执行,哪怕return是在try块中。但需要区分引用类型变量和值类型变量在finally中会导致不同结果。 private static int TestIntReturnInTry() { int i; try { return i = 1; ... 阅读全文
摘要:
在 .Net 中,我们一般使用 Random 类来生成随机数,它仅提供了以下几个基本方法供我们使用:名称说明Next() 返回非负随机数。Next(Int32) 返回一个小于所指定最大值的非负随机数。Next(Int32, Int32) 返回一个指定范围内的随机数。NextBytes 用随机数填充指定字节数组的元素。NextDouble 返回一个介于 0.0 和 1.0 之间的随机数。如果想生成一些特殊的随机数,如枚举、日期等,则要再进行几步处理。本文将会扩展 Random 类,让随机更方便。Random 常用扩展布尔:NextBool随机返回 true 或 false,这个实现比较简单:pu 阅读全文