.Net程序员:最简单方式掌握Linux本质

.NET平台本质解析:从CLR、IL到跨平台演进 .NET是一个统一的开发者平台,其核心是公共语言运行时(CLR)与中间语言(IL)构成的托管执行模型。CLR提供内存管理、异常处理、跨语言互操作等底层能力,而IL作为平台无关的字节码,由JIT编译器按需转换为原生指令,实现高性能与可移植性的平衡。这一设计赋予.NET强类型安全、确定性垃圾回收和企业级稳定性,广泛应用于银行核心系统、政务平台及云原生微服务。结合.NET Standard的API契约机制与.NET 5+的统一平台演进,开发者得以在Windows、Linux、macOS间无缝迁移代码。本文深入CL 阅读详情

2010年12月29日09:45 来源:栖山的博客 作者:栖山 编辑:胡铭娅 评论:5条

    【IT168 评论】“If you can't explain it simply, you don't understand it well enough” Albert Einstein

  有很多关于Linux的书籍,博客。大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多人望而却步。未入其门就路过了。

  所以我设想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语言来介绍Linux背景和动机。 就如同所有的的网络游戏都要先介绍游戏的历史观,然后再介绍游戏的操作。

  大多数初学者在刚刚接触Linux都会有非常陌生的感觉。往往会有一些疑惑和问题。而我们就沿着这些问题,从远及近,从宏观到微观来理解Linux的简洁和美丽。

  问题1: Winows有注册表,为什么Linux没有注册表

  注册表是Windows核心组件,对整个系统进行配置。Linux是以整个文件系统作为"注册表“,Windows注册表的树形结构,可以粗略的对应Linux文件系统的树形结构。

  Linux的配置文件就相当于注册表的键,或者说Linux采用是的分布式的注册表。

  那么Linux为什么要这样设计呢?因为Linux是所谓的网络操作系统,所以单台电脑不是Linux的界限,如果是多台电脑组成的系统,那么分布式的管理就有着巨大的优势。

  例如:一个包含配置文件的磁盘的损害不会让整个系统瘫痪,而可能只是让部分功能失效。

  问题2:Windows有完善的图形界面,而Linux为什么要学命令行。

  首先,命令行绝对要比图形界面先进的多。命令行是程序员的第一界面,而图形界面是普通用户的第一界面。

  也许很多人会有不同意见,其实我们再向前想一步,就很清楚了。

  命令行的下一步演化是什么? 很简单就是语音控制,就是把人类自然语言转化为命令

  图形界面的的下一步演化是什么? 是姿势控制。从目前的Windows系统来说一共只有3种姿势, 单击,双击,拖放。而更先进的IPad有拨动,画圈等。

  姿势控制很简单,便于用户上手,语音控制很复杂,但是控制精度很高。

  作为程序员我们要求电脑完成的工作要比普通用户复杂的多,所以使用命令行会非常高效。

  退一步讲,图形界面本质也是命令行,只不过将姿势翻译成命令执行而已。

  程序员编程的代码也都是“命令行”,一条一条的指令而已。

  总之,只要能打破对Linux命令行的恐惧感,接下来的事就会非常容易了。这个命令行绝对不是你简单想像中的命令行,它是非常智能化的。

  问题3:Linux有那么多目录,那么多命令,怎么记得住呢?

  首先,Linux目录是Linux系统最灵魂的东西,所有的硬件都可以被抽象为文件,从而实现网络化。(Internet只不过是Unix/Linux的进一步的演化而已)

  所以只要掌握了Linux目录的规律,在理解的基础上记忆就可以容易的多。另外Linux的命令行有智能化功能,可以让你少打95%以上的字符来完成命令。

  绝非你所想象的傻乎乎的敲一大堆命令,那些用Linux大牛都是绝顶聪明的人,怎么可能让自己辛苦呢?

  问题4:Linux的文件夹结构看上去很复杂,怎么理解呢?

  我们这里假设,我们就是设计者,如果我们设计一个文件系统,我们会如何去做呢?

  我们需要一个起点, 这个起点就叫根目录,用“/”来表示,然后我们需要启动Linux,那么我们就会把所有核心的启动文件(包括Linux核心本身)都放到一个“/boot"目录下。

  当系统启动后,我们需要执行一些基本命令在操作系统,这些命令都会放到“/bin"目录下。然后这些命令可能会用到一些库,这些库就被放到“/lib"下面,而这些库可能会会用到一些设备驱动文件,

  那么这些驱动文件就会放到“/dev"目录下。

  /:根目录

  /boot:系统启动和内核

  /bin :系统基本命令 (bin是binary的缩写)

  /lib : 系统库(不能直接运行的代码)(lib是libary的缩写)

  /dev : 设备驱动 (dev是device的缩写)

  到目前为止只用5个目录,很简单吧。

  问题5: 什么是"/usr" ,"/etc"和“/var“

  当用户启动系统以后,要做一些更加复杂的工作,这时候就会涉及到一个叫“/usr",这个情况稍微有些复杂,是一个难点。不过也很容易解释清楚。

  早期的unix系统都有很多块硬盘,当时硬盘的容量都很小, 所以往往一个硬盘只放一个目录,比如“/boot"可以放在一个单独的"boot"盘上,上面提到的5个目录,是系统运行必不可少的。

  而当系统启动以后,我们需要其他一些用于具体工作的程序时,我们就会加载一个“/usr"目录,上面放重要的运行程序。

  容易引起疑惑的是"usr"这个名字, 在历史上,原来这个确实是user的缩写,不过现在和user没有任何关系了, 你可以把它看成是"universal software resource"的缩写。

  这个“/usr"有点类似Windows里面的Program Files。

  因此 /bin 和 /usr/bin的区别,就是 /bin里面的程序更加核心

  这时候,很多人会有疑问, 我们记住哪些命令在/bin 还是在/usr/bin呢?

  放心,由于所有的bin目录都会登记到系统变量PATH里面, 因此无论你在任何当前目录中,只要输入命令文件的名称,系统都会帮你找到这个命令并运行。

  要点:

  1,/usr上面一般都是只读文件,数据文件和配置文件不放在上面(放到哪里,后面会讲)

  2,没有“/usr",linux系统也能正常运行

  2,/usr可以被多台电脑共享(这里体现Linux系统的网络性)

  由于/usr只放只读文件,那么配置文件和数据文件放哪里呢?这里就出现了2个新的目录“/etc"和“/var"

  这里容易初学者迷惑的就是这个2个目录的名字。

  在历史上 "etc“是 “etcetera”,中文意为“其他”, 现在这个和“其他”没有任何关系, 就是专门存放配置文件的地方,可以理解为“editable text configuration"的缩写

  比如 /etc/mysql就是放mysql的配置文件 /ect/apache2/就是apache2的配置文件

  在历史上“var" 是 “variable",中文意为“变动”,现在主要用来存放log,lock等文件。

  例如 /var/mysql就是用来存放mysql的log

  问题6:用户自己产生的数据放到哪里?

  当我们运行程序后,会产生很多自己的成果,这些成果放哪里呢? 这里就出现了一个“/home"目录,不过你不能直接放到“/home"目录下, 因为Linux是个多用户操作系统, 所以系统会有一个以用户的名字命名的目录。

  例如:用户是jack ,那么目录就是/home/jack ,这个目录也可以用“~“来表示。

  至此,我们也就基本了解了Linux的组成。

[Asp.Net Core]NET5跨平台的本质 NET5跨平台的本质 1.Web应用程序是一个控制台;—Main程序的入口;跨平台的原因在于框架已经内置了主机,只要是 程序启动,就是启动了主机,就可以监听端口;请求来了,只要是请求这个端口,主机就可以响应;无 论是在Windows还是在Linux下开发,都是要第一步完成环境的;这样就不用拘泥于是在Windows还是 在linux,----这就是能够跨平台的本质原因; 新的改变 public static void Main(string[] args) { 阅读详情

相关推荐

MacBook 上 LaTeX 环境搭建:从 Mactex 到 Sublime Text 与 Skim 的保姆级配置流程

本文详细介绍了在MacBook上搭建LaTeX环境的完整流程,从Mactex安装到Sublime Text与Skim的配置优化。涵盖基础环境准备、编辑器设置、PDF预览同步等关键步骤,帮助用户快速建立高效的LaTeX工作流,特别适合学术写作和技术文档创作。

weixin_30824599的博客 678

etc目录Editable Text Configuration

etc目录--->Editable Text ConfigurationRef : https://zhidao.baidu.com/question/357817880.html

weixin_38937997的博客 373

QGC二次开发实战指南(一):从零构建自定义地面站界面

本文详细介绍了QGC二次开发实战指南,从零开始构建自定义地面站界面。通过QT和QML技术结合MAVLINK协议,开发者可以打造适合特定业务场景的无人机监控系统,提升操作效率与用户体验。文章包含环境搭建、界面设计、数据绑定等完整开发流程,是QGC二次开发的实用教程。

weixin_28693683的博客 494

运维常见的22个故障排查和10个问题解决技巧大汇总!

12、MySQL数据库的安装不能成功,总是提示软件的依赖关系,造成所要安装的软件包不能顺利安装 答:说明所要安装的软件包需要其他组件或共享库的支持,MySQL的rpm包安装方式本身就繁琐一些,要求安装的软件包比较多,包之间的依赖关系非常明显,根据提示找到需要的组件包并安装,安装时要注意软件包顺序。3、Linux系统安装时,制定安装中,软件包的选择感觉困惑,安装完成后发现不符合我们的要求,有些组件没有安装,而不需要的组件却装上了 答: 对Linux系统的了解还太少,反复安装多次后,自然掌握自如。

征服Bug的博客 2万+

从Zemax到Speos:HUD设计数据无缝迁移避坑指南(含STEP文件精度验证)

本文详细介绍了从Zemax到Speos的HUD设计数据无缝迁移方法,重点解决Zernike曲面参数保真、虚拟厚度设置和坐标系对齐等核心问题。通过STEP文件精度验证和工程化解决方案,帮助工程师避免数据迁移中的常见陷阱,提升HUD系统设计效率。适用于Ansys Zemax和Ansys Speos用户,优化光学性能验证流程。

h6i7j8的博客 1063

使用机器学习算法预测黄金价格

在本文中,我们将使用线性回归、XGBoost和LSTM这三种不同的机器学习算法来预测黄金价格。接下来,我们使用线性回归、XGBoost和LSTM分别建立了模型,并进行了训练和预测。这些机器学习算法可以帮助我们对黄金价格进行预测,但请注意,市场价格受多种因素影响,因此预测结果可能并不完全准确。接下来,我们需要对数据进行一些预处理,以便用于机器学习模型的训练和测试。我们将使用80%的数据作为训练集,20%的数据作为测试集。最后,我们将绘制每个模型的预测结果,并将其与实际价格进行比较,以评估模型的性能。

QromMatlab的博客 1316

运维面试常问的100道题(大数据统计)

服务器是一种高性能的计算机,用于为网络中的其他设备提供服务。类型包括:Web 服务器:用于托管网站和 Web 应用程序。数据库服务器:存储和管理数据。文件服务器:提供文件存储和共享服务。邮件服务器:处理电子邮件的发送和接收。DNS(Domain Name System)即域名系统,作用是将域名转换为 IP 地址,以便设备能够通过域名访问网络资源。HTTP(Hypertext Transfer Protocol)是超文本传输协议,用于在 Web 上传输数据。

虚构规律,寰宇笑谈 5053

【软考中级】多媒体应用设计师复习笔记第十章【free】

第10章法律法规与标准规范 行业标准 缩写的大写拼音 地方标准 DB加生代码 企业标准Q加斜线企业代号国际标准是国际标准化组织ISO和国际电工委员会IEC制定的标准 国家标准是由国务院标准化行政主管部门制定,全国范围内使用 ?强制性国家标准的代号为GB,推荐性国家标准的代号为GB/T。 ?软件开发规范GB8566-88属于强制性国家标准 在这里插入图片描述 行业标准代号由大写汉语拼音字母组成,加上斜线和T,组成推荐性行业标准,如XX/T。已经发布的行业代号有QJ(航天),SJ(电子

weixin_47120900的博客 639

Linux 系统编程:文件系统基础

本文描述 Linux 文件系统的基础知识,一些操作文件和文件夹的 shell 命令。

朱工的专栏 1432

斑马算法优化变分模态分解ZOA-VMD数字信号去噪(优化K值 alpha值)【含Matlab源码 4887期】

斑马算法优化变分模态分解ZOA-VMD数字信号去噪(优化K值 alpha值) 完整的代码,包运行;运行操作视频见优快云资源!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 810

【实战】LLaMA-Factory 如何做 LLM 的多轮对话微调

LLaMA-Factory 作为一个广受欢迎、易于使用的 LLM 微调框架,为开发者提供了便捷的途径来针对特定任务(包括多轮对话)优化模型。本文将深入探讨 LLaMA-Factory 如何支持多轮对话微调,涵盖其基本概念、数据准备、核心机制、评估方法等。简单来说,多轮对话是指包含两个或更多轮次(Turn)的交互过程,其中每一轮通常包含用户的一个输入和模型的一个输出。后续轮次的回应通常依赖于前面轮次的对话内容。模型需要理解并记忆对话历史。

kakaZhui的博客 1309

Linux 命令和参数 英文全称

UNIX 系统中除进程之外的一切皆是文件,目录是记录其他文件名的文件。 这里写图片描述 /bin = BINaries /dev = DEVices /etc = 存放配置文件的地方。Editable Text Configuration /lib = LIBrary /mnt = mount 挂接光驱、USB设备的目录,加载后,会在mnt里多出相应设备的目录 /opt = Optional ap...

Zmc8721的博客 588

IDEA的使用指南

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

初学者如何以最简单方式学习Linux?

有很多关于Linux的书籍,博客。大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步。未入其门就路过了。所以我设想用一种更为平滑的学习方式,...

Linux云计算数据自学 796

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Window/.Net程序员如何用最简单的方式掌握Linux的本质

from:http://www.cnblogs.com/frand/archive/2010/12/27/1918371.html “If you can't explain it simply, you don't understand it well enough”                                                        Alb

mypods 903

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

.Net程序员学习Linux最简单的方法

.Net程序员学习Linux最简单的方法 作者: zock  来源: 博客园  发布时间: 2013-07-02 16:57  阅读: 4091 次  推荐: 60   原文链接   [收藏]     有很多关于Linux的书籍、博客。大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步。未入其门就路过了。   所以我设想用一种更为平滑的学习方

sflkuio的专栏 811

以最简单方式学习Linux

转载自:http://www.eepw.com.cn/article/201612/341945.htm 有很多关于Linux的书籍,博客。大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步。未入其门就路过了。 本文引用地址:http://www.eepw.com.cn/article/201612/341945.htm   所以我设想用一种

C语言是最好的编程语言 2617

Java与.NET程序员的本质差异:工程操作系统级对比

Java和.NET早已超越编程语言范畴,演变为两套深度耦合基础设施、运维体系与开发范式的‘工程操作系统’。其核心差异源于运行时设计哲学——JVM追求跨平台抽象一致性,CLR强调API契约下的平台行为可预期;构建体系上,Maven依赖中央权威保障可重现性,NuGet采用联邦自治提升企业可控性;应用生命周期中,Spring的IoC容器以插件化解耦见长,ASP.NET Core中间件管道则以执行路径透明取胜。这些底层分野直接决定分布式事务处理、实时通信性能、Windows生态集成等关键场景的技术选型。理解Java

SailingAptech的专栏 547

.NET 8 项目 Docker 方式部署到 Linux 系统详细操作步骤

本文详细介绍了如何将一个 .NET 8 项目通过 Docker 部署到 Linux 系统中。安装 Docker 和 .NET SDK。创建 .NET 8 项目并编写 Dockerfile。构建 Docker 镜像并运行容器。Docker 为 .NET 项目的部署提供了很好的解决方案,能使得应用在不同平台上快速启动并保持一致性。希望通过本文的学习,能够帮助你顺利将 .NET 8 项目部署到 Linux 系统中,并在 Docker 容器中高效运行。

AngelCryToo的专栏 2763

在Linux开发.NET——拜拜了Win10

原文:.NET on Linux – bye, Windows 10. 作者:Piotr Gankiewicz 翻译:赖信涛 责编:仲培艺 我是一个有多年开发经验的.NET程序员。最近,我决定使用*NIX系统来开发.NET程序,虽然看起来有些激进,但是我可以说,这是我做过最好的决定了。事情的起因是这样的,上周星期五(十月14日),我正在办公室处理一些东西,突然Windows弹出一个窗口...

Joy0921的博客 5641

为什么我们不要.NET程序员

为什么我们不要.NET程序员   也许你已经知道了,我们正在招聘最优秀的程序员。不错,每个人都这样说。但是我们的程序员能打败你们的——任何时候。比如,米奇虽然只有5英尺高,但他是一个有相当实力的击剑手。维托尔德以前是一个6’3″的职业冰球选手。内特喜欢以丢匕首为乐。当然,他们都是很有水平的程序员。   发现这些人才,并不是你好好上班就能完成的事。事实上,我生活的一半时间都花在了上面,而

又被扼杀在萌芽 1003
上一篇: 常用ADB命令
下一篇: 京东与卓越
lanman
博客等级 码龄25年 56粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值