CLR via C#读后感1-CLR的执行模型

自己动手写CPU(1)五级流水线及CPU第一条指令ori 自己动手写CPU(1)五级流水线及CPU第一条指令ori 动机 不知为何研一的自由时间突然多起来,可能人一闲下来就容易焦虑吧,hhhhhh。正好之前看到一本《自己动手写CPU》,就按照此书从头实做一遍MIPS指令集的CPU,也当做对大学课程的总结。之前看龙芯杯比赛的代码震惊到我了,想想那堆大佬本科在搞这东西而我本科在瓜瓜地刷分,感叹人之间的差距真的好大。痛定思痛,还是先动手做起来这才能假意安慰自己,我好像也不错。闲言少叙,让我们开始吧! 由于作者提供了各章实现的具体代码,所以该系列博客主要记录我过程中有哪些 阅读详情

CLR via C#这本书是无意间在网上看到别人极力推荐的,找到pdf扫描本后,就迫不及待的看了起来。通过前几章的阅读,发现对.NET底层有了一种新的认识,不再像以前一样只是单纯的写代码。尤其是CLR(Common Language Runtime)的作用,运行方式,有了个大致概念。

CLR是一个可由多种编程语言使用的“运行时”,CLR的核心功能(内存管理,程序集加载,安全性,异常处理,线程同步)可由面向CLR的所有语言使用,所以,在编写源文件的时候,可以选择多种语言(C++/CLI,C#,J#,VB,IronPython,IronRuby,或者IL),至于IL,是微软的一个中间语言,任何C#源代码,都要编译成MSIL+元数据作为托管模块,在运行的时候,CLR运行托管模块,将IL再由JIT(Just-In-Time)编译为本机代码,最终执行。

每一个托管模块包括四个部分:

1.PE32或PE32+头。指明了运行环境是32(64)位或64位Windows系统。

2.CLR头。包含了需要的CLR版本,一些flag,托管模块入口方法(Main方法)以及各种信息。

3.元数据。每个托管模块都包含元数据表,有两种类型,一种类型的表描述源代码中定义的类型和成员,一种类型的表描述源代码中引用的类型和成员。

4.IL代码。编译器编译源代码后生成的代码,在运行的时候,CLR再将IL编译为本地CPU指令。

 

1.执行程序集代码。

为了执行一个方法,必须先将IL指令编译成本地指令,这是CLR的JIT编译器的职责,一个方法(自定义或者FCL函数)在第一次执行时,会造成一些性能损失,因为要对它进行编译,以后对其方法的所有调用,都采用本地代码(本机CPU代码)的形式全速运行,无需再次编译。JIT编译器将本地CPU指令存储在动态内存中。一旦应用程序终止,编译好的代码就会被丢弃。所以,将来再次运行应用程序,或者同时启动两个应用程序实例(在操作系统中,启动两个相同的应用程序也被认为是两个不同的进程),JIT编译器必须再次将IL编译为本地指令。

2.通用类型系统(CommonTypeSystem,CTS)。

CLR完全围绕类型展开的,所以有了”通用类型系统”CTS(CommonTypeSystem),它描述了类型的定义和行为。使用的语言不同,定义类型的语法也不同,但是无论使用哪种语言,类型的行为都是相同的,因为最终是由CLR的CTS来定义类型的行为。比如C#中,int为32位整形数,而在CTS中,Init32为32位整形数,定义了一个int型变量a,a最终都会生成为Init32型。再比如string就是C#的变量类型,而String就是CTS的变量类型。一般情况下,大写的都为CTS类型。

3.公共语言规范(CommonLanguageSpecification,CLS)。

只有语言遵循了Microsoft定义的CLS规范,一个语言才可以访问另一个语言类型的成员。

4.与非托管代码的互操作性。

托管代码就是指运行时,是托管在CLR上,由CLR具体调度、执行、管理。非托管代码指直接调用Win32API进行运行操作。C++.NET并不是传统的C++的扩展,而是将C++程序重新架构,托管在CLR上执行。称为Managed C++。

托管代码可以调用DLL中的非托管函数,托管代码可以使用现有的COM组件,非托管代码可以使用托管类型。

 

 

.NET的架构图(3.5之前)

通用语言基础架构(Common Language Infrastructure,CLI)

通用语言运行平台(Common Language Runtime,CLR),是对CLI这个架构在Windows平台的实现

类库(Framework Class Library,FCL),所有在.NET能够使用的类库。

基类库Base Class Library(BCL),其中包含一些基础的类,如:IO,String,Net等等。

公共语言规范Common Language Specification (CLS) 

公共类型系统Common Type System (CTS)

 

 

FCL与BCL的区别就是,FCL是一个大框架,下面分为BCL与补充类库,补充类库是在基础类库上做的补充,如:ADO.NET、ASP.NET、Windows.Forms等

卸载重装Ubuntu22.04双系统 先说一下写此篇文章的背景吧,我在Windows下配置了三个cornerNet深度学习环境分别是cuda10.3(显卡版本太高不支持),cuda11.3(配置后偶然看到一篇说这个版本win下只能用CPU跑),最后是cuda11.1终究还是没能跑通代码,因为它的代码是在Liunx系统写的,就想着装个Ubuntu试试看,在网上看说一般软件不要装太高版本,我就下载了470版的显卡驱动,跟着步骤升级了系统内核,结果第二天开机Ubuntu就崩了,开机黑屏左上角只有一道横杠显示,只能按ctrl+shift+f5进入命令窗 阅读详情

相关推荐

STM32L051低功耗模式下LPUART的使用

STM32L0系列低功耗UART配置代码清单及注释,大家可参考学习使用。

嵌入式工程师 2101

CLR via C#读后感2-类型基础

CLR要求所有的类型都从System.Object派生,也就是说Object是所有类型的父类。这样就标明所有类型都应该具有Object类的以下方法。Equal:两个对象如果有相同的值,就返回True。GetHashCode:返回对象值的一个哈希码。ToString:该方法默认返回对象完整名,即this.GetType().FullName,我们经常重写该方法,使返回String对象。GetType:返回一个对象的实例,指出调用GetType对象的类型。CLR要求所有对象都用new操作符来创建:Employe

学无止境! 971

计量经济学tempdisagg的python库:年度时序变月度

计量经济学tempdisagg的python库:年度时序变月度

素质云笔记 1526

AArch64平台Qt 5.14.2静态交叉编译实战:从零到一跑通

在嵌入式开发中,目标板运行环境往往与开发机差异巨大,交叉编译是解决异构架构软件构建的常用手段。尤其在ARM64等架构上,程序部署常因动态库缺失、C库版本不匹配而失败。Qt应用作为典型重量级依赖,动态部署时经常遇到QPA平台插件找不到或libQt5Core.so链接失败等问题。通过使用aarch64交叉工具链,合理配置Qt的静态编译参数,可以将整个Qt框架封装进单个可执行文件,从而摆脱对目标板Qt运行环境的依赖,大幅提升程序可移植性。该方法适用于工业控制面板、简单Widgets界面等纯CPU渲染场景。实践过程

weixin_33842304的博客 273

Zabbix安装与部署 系统环境:centos7.0

Zabbix安装与部署 系统环境:centos7.0

weixin_42485027的博客 2600

腾讯ACE反作弊系统:内核驱动与AI行为分析如何守护游戏公平

在游戏安全领域,反作弊技术是保障公平竞技环境的核心防线。其基本原理是通过监控系统关键行为,识别并阻断非法的第三方程序干预。从技术实现看,现代反作弊方案普遍采用分层防御架构,结合用户态模块进行应用层检测,并依赖内核态驱动实现底层深度监控,以此构建纵深防御体系。这种技术的核心价值在于,它能有效对抗从简单内存修改到高级驱动级作弊等多种威胁,维护游戏经济系统和玩家体验的完整性。随着作弊手段的演进,行为分析与AI赋能变得至关重要,系统通过机器学习模型分析进程行为序列的异常模式,即使面对未知特征的外挂变种也能进行有效识

weixin_33978578的博客 741

CLR via C# (第三版)读后总结

版权归作者所有,任何形式转载请联系作者。 作者:V_火赤炼(来自豆瓣) 来源:https://book.douban.com/review/8609352/ 最近工作比较闲,我把这本书看了两遍。 第一遍是从17年3月份开始,断断续续直到上周读完,翻到最后一页的时候,心里如释重负,终于看完了,虽然这本书真的很厉害,但是看这么厚的书,真的很煎熬啊!然而,过了半天,我就忘记讲了什么,只记得委托是一个...

橙-极纪元-JJYCheng 1668

NVIDIA Jetson AGX Xavier设置风扇转速、工作模式及性能监控

Xavier的风扇在开机之后是默认关闭的,每次重启都需要手动打开风扇,后续可能考虑修改bashrc文件进行自动开启 这个是显示当前风扇的转速,默认应该是0,表示关闭,最大是250 cat /sys/devices/pwm-fan/target_pwm 可以通过修改该文件的值来修改风扇转速 vim /sys/devices/pwm-fan/target_pwm 我一般使用的是100这个值 作者:ryan_ren 链接:https://www.jianshu.com/p/d3c2041f7f7d 来源:简书 著

weixin_43877080的博客 1万+

读CLR via C#的观后感(1)

第一次读写写读后感:(如果有错请告知,小弟立马修改) 第一章(1) 执行程序的代码 c# 的代码(托管代码)到cpu指令 需要经过,CLR(公共语言运行库)的检测引用类型,再由JIT编译器找到对应该方法的IL,分配内存块,将IL编译成为CPU指令存入内存块.然后修改对应的条目,能指向这些内存块,跳转到内存块的本机代码. 其中,托管代码和非托管代码的区别: 非托管代码:也叫本地(native)代码. 托管代码:是由公共语言运行库(CLR)执行的代码,而不是由操作系统直接执行。本地代码经过两次编译,

zt13502162671的博客 210

【人工智能时代】- 一键部署本地AI大模型

Ollama是一个开源项目,致力于简化大型语言模型(LLM)的本地部署过程。它允许用户在自己的硬件上运行和测试最新的语言模型,无需依赖云服务。Ollama提供了一个类似于OpenAI的API接口,使得开发者可以轻松地在自己的应用程序中集成大型语言模型。此外,Ollama WebUI为用户提供了一个友好的界面,用于管理和与模型进行交互。

xiaoli8748的专栏 2371

给C#学习者的建议 - CLR Via C# 读后感

CLR Via C# 是一本经典的讲述CLR的教材,一直想好好读读,却一直没有去读。去年年末,终于下决心,买了一本纸质的CLR Via C#,元旦这几天在家里闭门读书(3天元旦 + 2天自己的带薪假期)。 其实,早就在网络上下载过了电子版的英语的CLR Via C#了,不过,电子书的问题也很明显,由于是免费的,所以不是很重视,买了纸质的书,自己花了真金白银,所以格外重视,不能对不起人民币啊(...

weixin_34018169的博客 114

电磁场仿真软件:CST Studio Suite_(25).案例分析与实践

在电磁场仿真中,材料属性的设置至关重要。通过API,您可以轻松地设置和修改材料属性,以适应不同的仿真需求。通过以上案例分析和实践,您已经学会了如何在CST Studio Suite中进行二次开发。自动化仿真流程:批量创建和运行仿真项目、优化设计参数、生成报告。自定义仿真设置:设置材料属性、边界条件和激励源。数据处理与分析:读取仿真结果、数据可视化和数据导出。高级脚本开发:多线程仿真、集成机器学习和云仿真。这些技能将帮助您更高效地进行电磁场仿真,提高设计质量和工作效率。

kkchenjj的博客 1385

《CLR via C#》读书笔记-CLR寄宿与AppDomain

CLR寄存和AppDomain的简介

郑林的专栏 1382

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

框架设计( CLR via C# 2nd Edition ) 读后感

的的确确是本好书。这本书把.net平台上经常用的一些技术讲得是明明白白,让你读后只有一个感觉:通透,就好像吃了芥末一样。Jeffrey Richter在这本书中可谓深入浅出,浅的地方讲了C#语言的语法方面,深的地方,讲了语言背后的机制。不愧是大师级的人物。读这本书的前与后的区别是很大的,以前一些云里雾里的知识点都从这本书中找很很直接、明确的答案。在明白了一种技术背后的原理后,一个合格的程序员就应该

小徐的专栏 785

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

CLR via C#, Third Edition图书推荐及下载

我们先来看看这书的作者Jeffrey Richter,Jeffrey Richter是一位在全球享有盛誉的技术作家,尤其在Windows/.NET领域有着杰出的贡献。他的第一本Windows著作Windows 3: A Developer's Guide大获好评,从而声名远扬。之后,他又推出了经典著作《Windows 高级编程指南》和《Windows核心编程》。如今这两本书早已成为Window...

weixin_34235371的博客 203

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

关于C#本质论(第2版)的读后感

关于C#本质论(第2版) 评论读后感:这本书前一半讲得太基础了,后面的还不错,总体来说还是比较基础的知识,但我还是学到了不少新知识读后感:书内容不需说了,看好了才买的。但是,书的纸质不好,而且书胶也不好,带有很浓的刺激味。读后感:肯定是经典,不过我看了放出的样章,主要还是第一版里面的内容,添加了C# 3.0里面的新特性,对我的吸引力不大,不打算购买。。但是经典书?一定推荐,这就是一本由C#代言人Mark Michaelis著写的经典书! 对最新版的《CLR Via C#》感兴趣,希望“图灵丛书”能够尽快引进

899

《CLR via C#:框架设计》读书笔记 - 类型基础

《CLR via C#:框架设计》读书笔记 - 类型基础

小贱 619

C#本质论(第2版)的评论

关于C#本质论(第2版) 评论读后感:这本书前一半讲得太基础了,后面的还不错,总体来说还是比较基础的知识,但我还是学到了不少新知识读后感:书内容不需说了,看好了才买的。但是,书的纸质不好,而且书胶也不好,带有很浓的刺激味。读后感:肯定是经典,不过我看了放出的样章,主要还是第一版里面的内容,添加了C# 3.0里面的新特性,对我的吸引力不大,不打算购买。。但是经典书?一定推荐,这就是一本由C#代言人M...

weixin_30872337的博客 85

这个寒冬,如何让我们的身价翻倍?

这个寒冬,如何让我们的身价翻倍?——《深入理解.NET(第2版·英文版)》读后感微软4大名著评选结果揭晓在开始正文之前,我先给大家讲一个真实的故事:我有一位朋友,他的一位同学原来是做测试的,几乎没有碰过.NET,工资只有1.5k。后来,他辞职回家,利用3个月时间在家苦读了一本书。三个月后,他前往上海找工作,在微创谋得一份开发工程师的职位,月薪6.5K。面试的时候,他将在本书中所学的垃圾

图灵教育 2494
上一篇: iframe中页面如果有验证导致重复出现页面的问题
下一篇: CLR via C#读后感2-类型基础
mark4ever
博客等级 码龄17年 31粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值