2016年8月13日
摘要: 有的东西你天天在用,但未必就代表你真正了解它,正如我之前所了解的 static 。 一、静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类; 阅读全文
posted @ 2016-08-13 15:52 Now,DayBreak 阅读(61922) 评论(9) 推荐(8) 编辑
摘要: 大部分的内存溢出(及内存泄漏)都和不好的开发习惯有直接关系,以下几个方式可以有效预防OOM。 一、批量和分页 每个合格的coder对数据的处理,必须要有分页或批量多次的意识。大数据量的读取或查询结果集是内存占用大户,是系统性能下降的直接原因之一。 在典型的互联网web应用中,数据量较大且高并发的情况 阅读全文
posted @ 2016-08-13 15:40 Now,DayBreak 阅读(772) 评论(1) 推荐(0) 编辑
摘要: 一、GC的必要性 1、应用程序对资源操作,通常简单分为以下几个步骤:为对应的资源分配内存 → 初始化内存 → 使用资源 → 清理资源 → 释放内存。 2、应用程序对资源(内存使用)管理的方式,常见的一般有如下几种: [1] 手动管理:C,C++ [2] 计数管理:COM [3] 自动管理:.NET, 阅读全文
posted @ 2016-08-13 14:35 Now,DayBreak 阅读(10368) 评论(2) 推荐(3) 编辑
摘要: C#把数据类型分为两种:值类型 和 引用类型。值类型存储在堆栈中,而引用类型存储在托管堆上。 一、值类型和引用类型变量的存储 首先,变量是存储信息的基本单元,而对于计算机内部来说,变量就相当于一块内存空间。 C#中的变量数据类型有两种: [1] 值类型:简单类型、结构类型、枚举类型 [2] 引用类型 阅读全文
posted @ 2016-08-13 13:32 Now,DayBreak 阅读(918) 评论(0) 推荐(0) 编辑
摘要: 一、基本概念: --托管模块:一个标准的32的可移植执行体(PE32)文件或一个标准的64位可移植执行体(PE32+)文件。由用支持CLR的任何一种语言创建的源代码文件,再经过相应的编译器检查语法和分析源代码,编译生成。如下: --程序集:由一或者多个模块/资源文件的逻辑性组合。程序集是重用、安全性 阅读全文
posted @ 2016-08-13 13:30 Now,DayBreak 阅读(804) 评论(0) 推荐(0) 编辑
摘要: 我们都知道,C#程序需要在 .NET Framework 的环境中运行。 一、程序运行所需的三个关键 1、IL(中间语言):编译器编译源代码时生成的代码。 2、 Framework类库(Framework Class Library,FCL):FCL是一组DLL程序集的统称,其中包含数千个类型定义和 阅读全文
posted @ 2016-08-13 12:49 Now,DayBreak 阅读(531) 评论(0) 推荐(0) 编辑
摘要: 源代码代码第一次编译形成IL中间语言的托管代码,在运行时被Class Loader装载后进行JIT第二次编译形成托管的本地代码。在执行过程中,它会不断地检查当前我们执行的代码的安全性和规范性。 Class Loader在装载可执行程序exe或者动态链接库dll的时候,它不是把所有的exe和dll当中 阅读全文
posted @ 2016-08-13 12:37 Now,DayBreak 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 一、什么是托管代码(managed code)? 托管代码:是微软的中间语言(IL),即微软中间语言MSIL(Microsoft Interspace Language)。 “ 源代码→机器码 ”运行分为两个阶段: 1 源代码 → 编译(csc.exe为C#编译器) → 托管代码(即IL),(所以源 阅读全文
posted @ 2016-08-13 10:04 Now,DayBreak 阅读(604) 评论(0) 推荐(0) 编辑