浅谈Linux环境
冯·诺依曼体系结构:
绝大多数的计算机都遵守冯诺依曼体系结构
在冯诺依曼体系结构下各个硬件相互配合处理数据并反馈结果给用户
其中控制器和运算器统称为中央处理器(CPU),是计算机硬件中最核心的部分,像人类的大脑操控其他器官一样来控制其他硬件资源
存储器指的是内存(磁盘不是存储器,而是输入输出设备)
输入设备和输出设备有很多具体例子,例如键盘、显示器、磁盘等等。
如果不涉及控制命令,我们认为中央处理器只从存储器中读取数据,输入设备中的数据必须先加载到内存中等待。
可以说存储器是一切硬件数据交互的一个媒介。
存储器为什么存在?为什么不采用输入设备→CPU→输出设备的体系?
这是一个好问题。
在人看来计算机的速度是很快的。
但站在计算机的角度,各种硬件的读取速度相差非常大。
形象一点说,CPU的速度是纳秒级,存储器的速度是微秒级,磁盘的速度是毫秒级
如果没有存储器作为过渡,CPU直接访问磁盘,数据的读取非常慢,而CPU的目的就是高效处理,从这角度上来看可以说磁盘拖累了CPU,因而CPU需要一个工具,使得单位时间内能给它更多数据处理,而这就是存储器
初始操作系统:
我们都多多少少地听过操作系统,平时也会有人谈论win10好还是win11好,但是真正了解操作系统的人却不多,因为其体系过于庞大复杂,晦涩难懂。
从一个很大的角度来看,操作系统就是一款软件,一款负责管理、负责为用户提供更好的人机交互的软件
计算机无非是由各种软件和硬件组成的,如果让民众直接操作软件和硬件,那可以说没几个人会使用电脑了,操作系统相当于帮人做事,用户只需要告诉操作系统要做什么,操作系统便根据用户的需求来控制软硬件处理数据,复杂缜密的过程用户不需要知道。
有了操作系统,用户要做一件事,只需要给一个触发条件,这样看就有一点封装的意味了。
用户通过一些外壳接口输入指令,外壳会自动的寻找到系统接口进行系统调用。
不允许用户直接访问操作系统内核的原因是出于安全性。
进程:
所谓程序:简单地说可以看作是一个正在执行的程序;准确来说进程是进程控制块+所对应的程序
举一个形象的例子:当我们开始执行一个test的可执行程序时,其实是创建了一个新的进程,可执行程序的属性会被加载到内存
计算机肯定是不会出现只有一个进程的情况,往往是有许许多多进程并发执行的。
那么进程之间如果是杂乱无章的肯定是不行的,必须要先描述这些进程的属性信息,再借助数据结构来组织起来,使其有序。
加载到内存的可执行程序的属性会被一个名为进程控制块/PCB的所描述,每一个进程都对应着一个PCB,在Linux中PCB是一个名为task_struct的结构体。
在windows可以通过shift+ctrl+esc的方式打开任务管理器查看进程
那么Linux下如何查看呢?
下面介绍一种最常用的方法:
ps ajx | head -1 && ps ajx | grep ###
用于查找某一个进程
这里需要重点了解两个属性
PID:又称进程ID,用于表示某一个进程,类似于人的身份证号
PPID:父进程ID,标识此进程由哪个进程创建
进程是可以由进程创建的,于是就有了父子进程的关系,
下面介绍一个C语言中创建子进程的函数:fork()
在执行到fork语句时会创建一个子进程共享后续代码
环境变量:
引子:
windows按住win+R弹出命令框,输入cmd可以打开终端,输入ts却什么都没有;
这就像我们在Linux中在命令行上输入ls可以显示文件信息,输入自己产生的可执行程序却不行。
ls指令其实也是一个可执行程序,之所以能直接执行ls,是因为有环境变量在帮助系统去找到ls可执行程序所在的路径使其能快速执行,而环境变量没有存储用户自己产生的可执行程序,就当然找不到了。
浅浅思考一下,输入一行命令后系统需要去寻找改命令对应的程序所在路径,在没有任何工具的情况下找起来是不是非常难受,系统当然不想这么做,环境变量的作用就等同于直接告诉系统要找的程序的路径,直接访问就好了。
在Linux下可以通过
echo $PATH
来查看当前环境变量
我们在命令行输入一些常用指令是系统就会去这些路径下搜索
假如我们想让自己生成的可执行程序能够像ls指令一样直接执行,那么就必须把他添加到环境变量中去
我们采用export PATH=$PATH:路径的方式添加环境变量
环境变量具有全局特性,可以被子进程继承
相关文章:

浅谈Linux环境
冯诺依曼体系结构: 绝大多数的计算机都遵守冯诺依曼体系结构 在冯诺依曼体系结构下各个硬件相互配合处理数据并反馈结果给用户 其中控制器和运算器统称为中央处理器(CPU),是计算机硬件中最核心的部分,像人类的大脑操控…...

Spring 用法学习总结(一)之基于 XML 注入属性
百度网盘: 👉 Spring学习书籍链接 Spring学习 1 Spring框架概述2 Spring容器3 基于XML方式创建对象4 基于XML方式注入属性4.1 通过set方法注入属性4.2 通过构造器注入属性4.3 使用p命名空间注入属性4.4 注入bean与自动装配4.5 注入集合4.6 注入外部属性…...

免费软件推荐-开源免费批量离线图文识别(OCR)
近期要批量处理图片转电子化,为了解决这个世纪难题,试了很多软件(华为手机自带OCR识别、 PandaOCR、天若OCR、Free OCR)等软件,还是选择了这一款,方便简单 一、什么是OCR? 光学字符识别(Opt…...
2 scala集合-元组和列表
1 元组 元组也是可以存放不同数据类型的元素,并且最重要的是,元组中的元素是不可变的。 例如,定义一个元组,包含字符串 hello,数字 20。如果试图把数字 20 修改为 1,则会报错。 scala> var a ("…...
Spring Boot开启SSL/Https进行交互。
为2个springboot工程开启进行SSL进行交互的认证步骤 //哪个犬玩意举报我侵权的? 一、认证步骤 1、 为服务器生成证书 keytool -genkey -v -alias testServer -keyalg RSA -keystore E:\ssl\testServer.p12 -validity 36500 2、 为客户端生成证书 keytool -genkey -v -alias…...
88.Go设计优雅的错误处理
文章目录 导言一、Go 的约定二、简单错误创建1、 errors.New()2、fmt.Errorf() 三、哨兵错误四、对错误进行编程1、优雅的错误处理设计2、与错误有关的的API 五、总结 导言 在 75.错误码设计、实现统一异常处理和封装统一返回结果 中,我们介绍了错误码的设计&#…...

Python4Delphi: Delphi 程序使用 Python 抓取网页
想用程序去抓取一个网页的内容,Delphi 有自己的 HTTP 库。比如 Indy 的 TIdHTTP,或者 TNetHTTPClient。 这里测试一下使用 Python 的 HTTP 库抓取网页,然后把抓取的内容给 Delphi 的程序。 Delphi 程序,界面上拖控件如下&#x…...
编辑器Zed
什么是Zed 官网:https://zed.dev/ Zed 是 Atom 编辑器原作者主导的新项目 —— 一款支持多人协作的代码编辑器,底层采用 Rust,且默认支持 Rust,还自带了 rust-analyzer,主打 “高性能”,颜值也十分在线&a…...

Java的接口
目录 1.接口的概念 2.语法规则 3.接口的使用 4.接口的特性 总结: 5.实现多个接口 6.接口间的继承 1.接口的概念 接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。 在Java中,接口可以看成…...
【计算机网络】计算机软件工程人工智能研究生复试资料整理
1、JAVA 2、计算机网络 3、计算机体系结构 4、数据库 5、计算机租场原理 6、软件工程 7、大数据 8、英文 自我介绍 2. 计算机网络 1. TCP如何解决丢包和乱序? 序列号:TCP所传送的每段数据都有标有序列号,避免乱序问题发送端确认应答、超时重传:解决丢包问题滑动窗口:避免…...
【Network Management】AUTOSAR架构下CanNm User Data详解
目录 前言 正文 1.CanNm user data概念 2.CanNm user data配置 2.1CDD方式访问CanNm user data...

量子算法入门——2.线性代数与复数
参考资料: 【【零基础入门量子计算-第03讲】线性代数初步与复数】 来自b站up:溴锑锑跃迁 建议关注他的更多高质量文章:CSDN:【溴锑锑跃迁】 0. 前言 强烈建议搭配b站原视频进行观看,这只是我当时看的笔记,…...
分别通过select、多进程、多线程实现一个并发服务器
多进程 #include<myhead.h>#define PORT 8888 //端口号 #define IP "192.168.114.74" //IP地址//定义函数处理客户端信息 int deal_cli_msg(int newfd, struct sockaddr_in cin) {//5、收发数据使用newfd完成通信char buf[128] "&qu…...

如何在 emacs 上开始使用 Tree-Sitter (archlinux)
文章目录 如何在emacs上开始使用Tree-Sitter(archlinux) 如何在emacs上开始使用Tree-Sitter(archlinux) 在archlinux上使用比windows上不知道要方便多少倍! $ sudo pacman -S emacs $ sudo pacman -S tree-sitter这里…...

FL Studio2024最新中文版有哪些其新功能特点?
除了之前提到的特点外,FL Studio 21还有以下一些值得注意的特点: 高效的音频处理:FL Studio 21具备高效的音频处理能力,能够实时处理多轨道音频,提供低延迟的音频播放和录制,确保音乐制作过程中的流畅性和实…...

Oracle的学习心得和知识总结(三十二)|Oracle数据库数据库回放功能之论文四翻译及学习
目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《Oracle Database SQL Language Reference》 2、参考书籍:《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…...

系统架构27 - 软件架构设计(6)
基于架构的软件开发方法 基于架构的软件开发方法(ABSD)概述概念与术语开发模型体系结构需求体系结构设计体系结构文档化体系结构复审体系结构实现体系结构的演化 基于架构的软件开发方法(ABSD) 基于体系结构的软件设计 (Architec…...

STM32 cubemx配置DMA+空闲中断接收不定长数据
文章目录 前言一、串口空闲中断二、DMA空闲中断接收不定长数据实现思路三、STM32Cubemx配置DMA空闲中断接收不定长数据四、代码编写总结 前言 本篇文章给大家讲解一下DMA串口空闲中断接收串口不定长数据,之前我们也是讲解过串口接收不定长数据的,那么本…...
Pycharm配置运行selenium教程
一、下载chrome浏览器和同版本的chromedriver chrome测试版版本120.0.6099.109 链接:https://pan.baidu.com/s/1pvFqL0WN8OkqPmURAs83kg?pwdvtsh 提取码:vtsh chromedriver版本120.0.6099.109 链接:https://pan.baidu.com/s/16fWWkrlD5C3J…...
银河麒麟V10开机后黑屏解决方法
情况描述: 单位的国产化电脑采用银河麒麟V10系统,在使用了近两个月时间后,开机到加载桌面那一步无法加载图形化桌面。 原理讲解 Linux本是纯命令行形式的系统,银河麒麟基于Linux中的Ubuntu LTS内核开发,其图形化的品牌…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...