最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
给大家整理的电子书资料:
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
文章目录
1.1 在 .NET 之前
- MFC(Microsoft Foundation Class,微软基础类库)
微软公司提供的一个类库,以 C++ 类的形式封装了 Windows 的 API,并包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量 Windows 句柄封装类和很多 Windows 的内建控件和组件的封装类。
- COM(Component Object Model,组件对象模型)
基于 Windows 平台的一套组件对象接口标准,由一组构造规范和组件对象库组成。组件对象不使用方法而用接口来描述自身。
1.2 .NET 时代
.NET 框架的特点:
- 多平台:可以在各种计算机上运行。
- 行业标准:使用行业标准的通信协议,如 XML、HTTP、SOAP、JSON 和 WSDL。
- 安全性:提供安全的执行环境,即使有来源可疑的代码存在。
1.2.1 .NET 框架的组成
如图 1.1 所示。
图1.1 .NET 框架的组成
- CLR(Common Language Runtime,公共语言运行库)
在运行时管理程序的执行,主要内容有
+ 内存管理和垃圾收集;
+ 代码安全验证;
+ 代码执行、线程管理及异常处理。
- BCL(Base Class Library,基类库)
是 .NET 框架使用的一个大类库,可以在程序中使用。
1.2.2 大大改进的编程环境
- 面向对象的开发环境
CLR、BCL 和 C# 完全面向对象,形成良好的集成环境。
2. 自动垃圾收集
* GC(Garbage Collector,垃圾收集器)
自动管理内存,删除程序不在访问的对象。
-
互操作性
- 允许不同的 .NET 语言编写的软件模块无缝交互。
- 只要遵循一定的规则,.NET 语言的程序可以相互使用其他 .NET 语言写的类;
- .NET 框架被称为“语言无关”。
- 提供平台调用特性(Platform Invoke,P/Invoke),允许 .NET 代码调用非 .NET 代码。
- .NET 框架能与 COM 组件相互调用。
- 允许不同的 .NET 语言编写的软件模块无缝交互。
-
简化的部署
- 不需要使用注册表注册。
- 提供并行执行的特性:允许 DLL 不同版本在同一台机器上存在。
-
类型安全性
CLR 检查并确保参数及其他数据对象的类型安全。
6. 基类库
.NET 框架提供庞大的基础类库(BCL),有时也称为 FCL(Framework Class Library,框架类库)。
1.3 编译成 CIL
.NET 语言的编译器接受源代码,生成名为程序集的输出文件,如图 1.2 所示。
图1.2 编译过程
- CIL(Common Intermediate Language,公共中间语言)
即程序集里的代码,不是本机代码。
-
程序集包含如下信息:
- 程序的 CIL;
- 程序中使用的类型的元数据;
- 对其他程序集引用的元数据。
1.4 编译成本机代码并执行
程序集的 CIL 直到被调用运行时才会被编译成本机代码,运行时执行的步骤如图 1.3 所示。
图1.3 运行时被编译成本机代码
- 检查程序集的安全特性;
- 在内存中分配空间;
- 把程序集中的可执行代码发送给 JIT(Just-In-Time,及时编译器),编译一部分内容为本机代码。
程序集中的可执行代码只在需要的时候由 JIT 编译,之后被缓存起来以备后续使用。一旦 CIL 被编译为本机代码,CLR 就在它运行时进行管理,如释放无主内存、检查数组边界、检查参数类型和管理异常等。
- 托管代码:由 .NET 框架编写的代码,需要 CLR。
- 非托管代码:不在 CLR 控制之下运行的代码,如 C/C++、DLL。
最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
给大家整理的电子书资料:
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!