目录

计算机与操作系统发展史简介:
- 🧐世界上第一台计算机(1946年)是美国科学家为了计算导弹弹道而制造出来的庞然大物,那时候的计算机体积巨大,而且当时并没有操作系统的概念,所以计算机的操作和维护成本十分巨大,仅仅只有顶尖的实验室人员才能使用
- 🧐1969年,贝尔实验室的肯汤普森和丹尼斯里奇(C语言之父)分别用汇编语言和C语言实现了Unix操作系统,计算机的应用开始普及到一般的高校研究人员层面(Unix操作界面是纯粹的黑屏指令操作)
- 🧐随着技术的进步,计算机运算核心(芯片)的集成度越来越高,体积越来越小,计算效率越来越高。于是便有了芯片领域的摩尔定律:在一定大小的集成电路上,晶体管的数量每隔18个月就会增长一倍,芯片的性能也会随之提高,价格则会下降。
- 🧐芯片的快速发展和操作系统的出现,让微软和苹果两大公司最早看到了计算机民用化的可能性,并开始研发民用计算机和用户界面型操作系统(比如微软的window,苹果的mac)(这两家公司的研发成果大都是闭源的,即核心技术和源代码不对外公开),于是计算机进入了商业化的快速发展阶段直到今天。
计算机与操作系统的关系:
- 😍操作系统的内核是用于管理计算机硬件和软件的代码集群(一组程序和数据的集合),它的出现的初衷是为了使人们能够更加方便,更加低成本地使用计算机:
- 😍操作系统是计算机的管理者
- 😍操作系统对上要管理和控制所有的应用软件,并为其提供稳定的运行环境和资源
- 😍操作系统对下要管理和控制计算机的硬件体系资源,使其可以被合理地分配和利用
- 😍同时,操作系统还负责管理用户和应用软件之间的信息交互
开源软件的代名词:Linux
- 🙂上世纪90年代,来自芬兰的大学生Linus在Unix操作系统的基础之上开发出了Linux操作系统并将其进行开源(内核源代码完全对外公开)
- 🙂Linux内核代码公开后,有众多的软件工程师都参与了Liunx操作系统的改进和发展,使得Linux操作系统变得更加高效,更加稳定,更加安全(相比于闭源的操作系统(比如windows)),如今,Linux已被绝大多数企业应用于服务器开发,桌面操作系统开发,移动嵌入式开发,云计算/大数据等领域.
非图形化界面的Liunx
- 😇在非图形化界面的Linux之下,我们只能单纯利用命令行对计算机进行操作.
- 😇纯命令行界面:(XShell远程链接并操作云服务器(Linux操作系统))
- 🙂相比于图形化界面操作计算机的方法,纯命令行操作(指令操作)计算机的方法有如下特点:
- 🙂指令是操作系统直接为我们提供的操作接口,因此指令操作能让我们更贴近操作系统
- 🙂图形化界面操作实质是调用经过封装的指令,因此直接输入指令操作计算机效率更高
- 🙂因此在企业级开发中,我们通常使用的都是纯命令行界面的Liunx操作系统
- 😄在磁盘中,操作系统组织文件所使用的数据结构为多叉树:
关于操作系统文件树的几个重要概念和知识点:
- 🤪文件树中的文件分为两大类型:一种是目录文件(相当于windows下的文件夹),一种是普通文件(用于存储各种数据,代码段(比如.c文件),指令段等等的文件)
- 🤪普通文件位于文件树的叶子结点位置:
- 🤪整颗文件树有且只有一个根目录(Linux下根目录文件名为"/"),根据数据结构中树的特点,文件树中,每个非根结点有且只有一个前驱结点(后继结点可以有多个)
操作系统中文件的标识
- 🤪文件的绝对路径:一个文件的绝对路径指的是从根目录出发,沿着连通路径访问到该文件所经历的最短路径(根据树的结构特点,该路径一定是唯一的)(因此文件的绝对路径可以用于标识文件)
- 🤪文件的标识分为两个部分:文件的绝对路径 + 文件名
- 🤪在操作系统的命令行界面,可以通过 "." +文件的标识来直接访问某个文件:(以上图中的test.c为例)
vim ./home/work/test.c //通过vim编辑器打开test.c文件
树形结构组织文件的优势:
- 🤪树的结构保证树的每个非根节点有且只有一个前驱结点,因此文件的标识(绝对路径+文件名)是唯一的,因此我们可以唯一地标识一个文件并很明确地定位它
- 🤪树形结构引索文件的效率很高.比如:由一亿个文件构成的满二叉树结构,树的高度只有三十多层,即每个文件的绝对路径长度最大为三十左右,从根目录开始要访问某个文件只需遍历三十多个结点,效率非常高(试想若换成顺序结构,各文件的绝对路径长度会非常大)
- 😄操作系统中指令的本质是一系列可执行程序,我们可以使用which指令来查看特定指令的系统路径
- 😄实际上,操作系统中所有指令,工具,命令等等本质上都是可执行程序
Linux的系统用户
- 🤔Linux操作系统是一个多用户的操作系统,新装的Linux操作系统一般只有一个root用户,root用户同时也是操作系统中权限最高的用户,在root用户下,我们可以通过如下命令添加用户,设置新用户密码,查看当前我们所登录的用户,以及删除用户:
adduser 用户名 //添加用户 passwd 用户名 //设置用户密码 whoami //查看当前我们所登录的用户 userdel 用户名 //删除用户🤔Linux操作系统的根目录为/,根目录下有多个子目录文件,其中有一个就是home目录文件,home目录文件中存放着各个非root用户的专属目录文件:
🤔与home目录同层的其他目录中一般存放与操作系统内核相关的程序文件
🤔每当我们登录Linux操作系统,就会默认来到所登录用户的专属目录文件之下,该目录称为该用户的初始工作目录,后续操作中我们可以通过指令:cd ~ 随时回到初始工作目录下,如果我们想查询自己当前所处的目录(所处的文件路径),可以使用指令:pwd
cd ~ //回到初始工作目录下 pwd //查看自己当前所处的文件路径
cd伴生指令
🤔改变工作目录:
- 🤔Linux下的相对路径:".."代表当前工作目录的上级目录, "."代表当前工作目录(".."和"."是相对路径的标识开头)
cd .. //返回上级目录//通过文件的相对路径进入指定目录 cd ./文件名 //进入当前路径的 /文件 目录下 cd ../文件 //进入上级路径的 /文件 目录下 //通过绝对路径进入指定目录 cd 文件标识
- 🤔图示:
- 🤔基于树的结构,返回上级路径的路径选择是唯一的
cd - //返回最近访问目录
ls指令:目录文件查看
- 🤔ls指令可以查看我们当前所处目录下的各个子文件(所处文件结点的各个子文件)
🤔指令常用选项:
ls -a //可以显示隐藏文件 ls -l //可以查看文件详细信息
🤔Linux中以"."开头的文件为隐藏文件
🤔"ls -l"中"-l"的含义是以list的形式显示更多文件信息
stat指令:
- 🤔如果想查看指定文件被创建,被修改的相关时间日志信息,可以使用stat指令:
stat 文件标识 //查看特定目录下各子文件的信息
Linux中文本文件内容显示指令:
- 🤔cat指令:显示文本文件中的内容
cat 文本文件标识 //显示指定文本文件内容🤔head -数字:显示文本文件前一定行数的内容
head -20 文本文件标识 //显示文本文件前20行的内容
🤔tail -数字:显示文本文件后一定行数的内容
tail -20 文本文件标识 //显示文本文件尾20行的内容Linux中最常用的文本翻阅指令:less指令
less /var/log/dmesg.old //翻阅日志信息
- less指令一般用于翻阅大篇幅的文本文件的内容,输入指令后可以通过[pageup][pagedown]按键上下翻阅文本
- 其中还内置很多搜索功能,可以通过man指令查看其详细功能(man指令本身的使用方法可以通过man自身来查看)
man 1 less // 1代表查看系统指令 less是所查看的指令手册 man man // 查看man自身的使用手册
- 🤔创建普通文件:
touch 文件名 //当前工作目录下创建文件🤔在文件名前加上绝对路径或者相对路径,也可以实现在指定路径下创建普通文件
🤔创建目录文件
mkdir 已存在绝对路径或相对路径/目录名 //在指定目录下创建目录文件 mkdir -p 新建的绝对路径或相对路径 //在文件树中新增一条文件路径🤔删除普通文件: rm指令
rm -f 文件绝对路径标识或相对路径标识 //删除指定目录下的普通文件🤔删除目录文件: rmdir和rm指令
rmdir 目录文件绝对路径标识或相对路径标识 //删除一个空目录 rm -f -r 目录文件绝对路径标识或相对路径标识 //删除指定目录及其下的所有子文件🤔-f 在Linux中一般表示强制操作(屏蔽提示);-r 在Linux中一般表示递归,可以对指定的文件树的某颗子树中所有内容进行某种操作,许多指令都有-f,-r这两个选项;
- 🥰文件的拷贝:
cp -f 待拷贝的文件的标识 拷贝出来的文件名 //拷贝指定的普通文件 cp -r -f 待拷贝的文件的标识 拷贝出来的文件名 //拷贝指定的目录文件(包括其所有子文件) //-r表示递归🥰文件的剪切:
mv 已存在的文件的标识 绝对或相对路径 //将普通文件剪切到指定路径 mv -r 已存在的文件的标识 绝对或相对路径 //将目录文件(包括其子文件)剪切到指定路径 mv 已存在的文件标识1 新文件标识2 //将文件1重命名为文件2 //-r表示递归
输出重定向:
- 🥰Linux的众多输出指令(比如echo,cat的等等)的默认输出对象都是标准输出终端(显示在系统的命令行界面)
- 🥰">"可以以文本覆写的形式进行文本输出指令(比如echo,cat的等等)的输出重定向,比如echo指令默认会将特定文本内容输出到标准输出终端中,通过">"重定向可以将特定文本内容覆写到某个系统容器(比如文本文件)中:
echo "特定文本内容" > 文本文件标识 //将指定内容覆写到指定文本文件🥰">>"可以以文本追加的形式进行文本输出指令(比如echo,cat的等等)的输出重定向,比如echo指令默认会将特定文本内容输出到标准输出终端中,通过">>"重定向可以将特定文本内容追加到某个系统容器(比如文本文件)中:
echo "特定文本内容" >> 文本文件标识 //将指定内容追加到指定文本文件输入重定向:
- 🥰"<"可以以文本覆写的形式进行文本输入指令(比如cat等等)的输入重定向,比如cat指令默认会从键盘缓存区中读取数据,通过"<"重定向可以让cat从指定的容器中以文本覆写的方式读取数据:
cat < 文本文件标识 //从指定文件中以覆写的形式读取数据并显示在标准输出中🥰"<<"可以以文本追加的形式进行文本输入指令(比如cat等等)的输入重定向,比如cat指令默认会从键盘缓存区中读取数据,通过"<<"重定向可以让cat从指定的容器中以文本追加的方式读取数据:
cat << 文本文件标识 //从指定文件中以追加的形式读取数据并显示在标准输出中初识Linux管道:
- 🥰实例:通过如下指令可以查看某个文本文件file.txt第100到120行的内容:
head -120 file.txt | tail -20- 🥰操作系统中各数据容器(指令作为可执行程序本身也可能是数据容器)之间的数据交互都是通过管道实现的

?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
Rails相对较新。我正在尝试调用一个API,它应该向我返回一个唯一的URL。我的应用程序中捆绑了HTTParty。我已经创建了一个UniqueNumberController,并且我已经阅读了几个HTTParty指南,直到我想要什么,但也许我只是有点迷路,真的不知道该怎么做。基本上,我需要做的就是调用API,获取它返回的URL,然后将该URL插入到用户的数据库中。谁能给我指出正确的方向或与我分享一些代码? 最佳答案 假设API为JSON格式并返回如下数据:{"url":"http://example.com/unique-url"
我正在尝试复制此GETcurl请求:curl-D--XGET-H"Authorization:BasicdGVzdEB0YXByZXNlYXJjaC5jb206NGMzMTg2Mjg4YWUyM2ZkOTY2MWNiNWRmY2NlMTkzMGU="-H"Content-Type:application/json"http://staging.example.com/api/v1/campaigns在Ruby中,通过电子邮件+apikey生成身份验证:auth="Basic"+Base64::encode64("test@example.com:4c3186288ae23fd9661c
前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型
文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景 最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。 在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记
Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好
文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分
如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack
我在LinuxMint17.2上。我最近使用apt-getpurgeruby删除了ruby。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,