Linux之基础知识

news2025/4/1 12:58:24

目录

一、环境准备

1.1、常规登录

1.2、免密登录

二、Linux基本指令

2.1、ls命令

2.2、pwd命令

2.3、cd命令

2.4、touch命令

2.5、mkdir命令

2.6、rmdir和rm命令

2.7man命令

2.8、cp命令 

2.9、mv命令

2.10、cat命令

2.11、echo命令

2.11.1、Ctrl + r 快捷键

2.11、more命令

2.12、less命令

2.13、head和tail命令

2.13.1、管道

2.15、时间相关的指令

2.16、find命令

2.17、which命令

2.17.1、alias

2.18、grep命令

2.19、zip和unzip命令

2.20、tar命令

2.21、uname命令(不重要,了解即可)

2.21.1、Ctrl+d 热键

三、shell命令以及运行原理


一、环境准备

这里我们采用云服务器的方式进行学习。首先先安装一个叫做 Xshell 的软件,通过这个软件我们可以远程连接我们的云服务器进行Linux的相关操作。

1.1、常规登录

登录 Xshell 软件进行远程服务器的连接,我们需要输入命令:ssh 用户名@公网IP。如图:

然后会弹出让我们输入密码的框框,这时我们只需要输入密码就可以进行连接了。如图:

1.2、免密登录

如果我们每次登录都输入一次密码,就很麻烦,所以我们可以设置免密登录,点开Xshell程序时会弹出下图窗口:

鼠标右键点击要设置免密登录的会话,点击属性,会出现下图:

点击连接中的用户身份验证,输入用户名和密码,以后就可以免密登录了,以后只需要点击会话就可以登录上了。

上图中红框起来的部分,左侧按钮是新建会话,其中名称随便起,主机就是公网IP,右侧按钮可以弹出所有回话。

二、Linux基本指令

2.1、ls命令

功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。

语法:ls [选项] [⽬录或⽂件]

基础使用:

常用选项:(ls的选项非常多,这里并没有写全,只是罗列了常用的几个)

-a:列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。

-l:列出⽂件的详细信息。(ll 命令相当于ls -l 命令)

-d:将⽬录像⽂件⼀样显示,⽽不是显示其下的⽂件。如:ls ‒d 指定⽬录。

-i:输出⽂件的 i 节点的索引信息。如 ls ‒ai 指定⽂件。

-k:以 k 字节的形式表⽰⽂件的⼤⼩。ls ‒alk 指定⽂件。

使用:(这里只演示 -a 和 -l )

-a:

-l:

-a 和 -l 一起使用:(其他选项也可以像下面一样一起使用)

-d:

正常情况下,我们通过 ls 命令来观察一个目录,默认显示出来的是该目录里面的内容,如图:

如果我们想观察目录本身,而不关心里面的内容,这是就可以带上 -d 选项。如图:(这里和 -l 一起使用,便于看到更详细的信息)

知识点:

(1)在 Linux 中以 . 开头的文件,我们叫做隐藏文件,隐藏文件默认不显示,通过 -a 选项进行显示。

(2)文件 = 文件内容 + 文件属性。如下图:

上图中红色框框起来的部分就是文件属性,其中所有属性的最前面以 d 开头代表是目录,以 - 开头的是普通文件类型。

(3)ls 命令默认显示的是当前工作路径下的内容,即 pwd 显示的路径下的内容,但是我们可以在 ls 命令后面进行指定路径,这样就可以看到指定路径下的文件和文件夹了。如图:

2.2、pwd命令

功能:显示用户当前所在目录。

使用:

知识点:

(1)windows:\ 是路径分隔符;Linux:/ 是路径分隔符。

(2)在Linux中,一条路径最左侧的 / 代表根目录,例如:/root/112/lesson2 这条路径中,最左侧标红的 / 就代表根目录。

验证:

从图中我们可以看出,/ 也是一个目录(属性起始位置以 d 开头),又因为从前面所有图片中可以看到,其余所有目录或文件都在该目录下,所以该目录为根目录。

2.3、cd命令

功能:改变⼯作目录。将当前⼯作目录改变到指定的⽬录下。

语法:cd 目录名

使用:

知识点:

上图用红框框起来的目录中,. (一个点)代表当前目录,.. (两个点)代表上一级目录。所以我们可以通过cd .. 进行简单的路径回退。

验证:

路径的认识:

(1)Linux系统中,磁盘上的⽂件和⽬录被组成⼀棵⽬录树,每个节点都是⽬录或⽂件。

(2)其中普通⽂件⼀定是⽬录树的叶⼦节点,⽬录可能是叶⼦(空⽬录),也可能是路上节点。

(3)路径存在的意义:树状组织⽅式,都是为了保证快速定位查找到指定的⽂件,⽽定位⽂件就需要具有唯⼀性的⽅案来进⾏定位⽂件。而任何一个父节点,可能有多个子节点,但是其中任何⼀个子节点,都一定只有⼀个⽗节点,所以,从根⽬录开始,定位指定⽂件,路径具有唯⼀性。

(4)绝对路径:⼀般从 / 开始,不依赖其他⽬录的定位⽂件的⽅式。

(5)相对路径:相对于当前用户所处⽬录,定位⽂件的路径⽅式。

(6)绝对路径⼀般不会随着用户的路径变化而丧失唯⼀性,⼀般在特定服务的配置⽂件中经常被使⽤。

(7)相对路径因为它的便捷性,⼀般在命令⾏中使⽤较多。

(8)在Linux中,任何一个目录都有 . ..,新建的空目录也是如此。我们可以把每一个目录想象成一个节点,. .. 想象成指针,. 指向当前目录自己,.. 指向当前目录上一级目录,不过根目录比较特殊,它 . .. 都指向自己,因为它已经没有上级目录了。

验证路径的树状结构(多叉树):

为了验证这个树状结构,我们需要引入一个新的命令:tree。

如果显示没有这个命令,可以通过 yum install -y tree 命令进行安装(centOS版本下),或者apt install tree(ubuntu版本下)。验证如图:

cd命令的特殊用法:

(1)cd - 命令

功能:跳转到最近的上一次路径。

语法:cd -(cd 和 - 之间有一个空格) 

使用:

(2)cd ~ 命令

功能:进入家目录

语法:cd ~ (两者之间有一个空格)

使用:

补充知识:

无论在Windows还是Linux操作系统中,都是允许多用户的,在Linux操作系统中,root用户首次登录,所处的路径,叫做 root 的家目录,普通用户首次登录,所处的路径,叫做普通用户的家目录。总结:用户登录Linux,默认所处的路径,都在自己的家目录下,其中 root 是超级用户。

补充一条小命令(whoami)

命令:whoami

功能:显示当前登录用户的用户名

如图:

上图说明当前的操作者是 root 用户。

2.4、touch命令

功能:touch命令参数可更改⽂档或⽬录的⽇期时间,包括存取时间和更改时间,或者新建⼀个不存在的⽂件。

语法:touch [选项]... ⽂件...

常用选项:

-a:change only the access time

-c:change only the modification time 

使用:

2.5、mkdir命令

语法:mkdir [选项] dirname...

功能:在当前⽬录下创建⼀个名为 “dirname”的⽬录。

常用选项:-p/--parents: 可以是⼀个路径名称。此时若路径中的某些⽬录尚不存在,加上此选项后,系统将⾃动建⽴好那些尚不存在的⽬录,即⼀次可以建⽴多个⽬录。

使用:

从上面代码可以看到,mkdir不加任何选项时不可以创建不存在的多级目录,但是我们可以加上选项 p 解决这个问题,如图:

当命令中的多级目录中有一部分已经存在了,mkdir -p 命令会将不存在的那部分创建出来。如图:

2.6、rmdir和rm命令

rmdir是⼀个与mkdir相对应的命令,mkdir是建⽴⽬录,⽽rmdir是删除命令。

语法:rmdir  [dirName]

适用对象:具有当前⽬录操作权限的所有使⽤者。

功能:删除空目录。(普通文件和非空目录均无法删除)

常用选项:-p 当⼦⽬录被删除后如果⽗⽬录也变成空⽬录的话,就连带⽗⽬录⼀起删除。

使用:

rm 命令可以同时删除文件或目录。

语法:rm [-f-i-r-v] [dirName/dir]

适用对象:所有使⽤者。

功能:删除⽂件或⽬录。

常用选项:

-f:强制删除(不再询问用户是否确定),即使⽂件属性为只读(即写保护),亦直接删除。

-i:删除前逐⼀询问确认。

-r:递归式删除⽬录及其下所有⽂件(root 用户可以能会逐一询问,确认是否删除)。

使用:

这样一直确认太过麻烦,可以使用 -f 选项直接强制删除。如图:

知识点:

(1) * :通配符,可以匹配任意字符。

如图:

rm -rf  * 会将当前目录下所有文件和目录全部删除。

(2)两个热键

tab:快速按两下,可以进行补齐,既可以补齐命令,也可以补齐路径。

Ctrl + c:当页面处于失控的状态,可以尝试Ctrl+c终止。

2.7man命令

Linux的命令有很多参数,我们不可能全记住,可以通过查看联机⼿册获取帮助。

语法:man [选项] 命令(进入查找页面后按 q 退出,不指定章节时默认从1号手册开始查找)

常用选项:

-k:根据关键字搜索联机帮助。

num:只在第num章节查找(该选项就是一个数字)。

-a:将所有章节的都显⽰出来,⽐如 man printf 它缺省从第⼀章开始搜索,找到后就停⽌,如果使用a选项(当按下q退出),他会继续往后⾯搜索,直到所有章节都搜索完毕。

注意:man指令可能需要自己安装,安装指令:yum install -y man-pages(centos版本下),apt install --reinstall man-db(ubuntu版本下)。

解释⼀下,man⼿册分为9章(不同系统可能会有差别):

1是普通的命令。

2是系统调⽤,如open,write之类的(通过这个,⾄少可以很⽅便的查到调⽤这个函数,需要加什么头⽂件)。

3是库函数,如 printf,fread 是特殊⽂件,也就是 /dev 下的各种设备⽂件。

4:略

5是指⽂件的格式,⽐如 passwd,就会说明这个⽂件中各个字段的含义。

6是给游戏留的,由各个游戏⾃⼰定义。

7是附件还有⼀些变量,⽐如像 environ 这种全局变量在这⾥就有说明。

8是系统管理⽤的命令,这些命令只能由 root 使⽤,如 ifconfig。

9:略

如图:(使用man  man 命令进行查 man 命令本身的作用)

man指令的使用:

指令:

效果:

指令:

效果:

2.8、cp命令 

语法:cp [选项]  源⽂件或⽬录⽬标⽂件或⽬录

功能:复制⽂件或⽬录

说明:

(1)cp指令⽤于复制⽂件或⽬录。

(2)如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中

常用选项:

-f 或 --force:强⾏复制⽂件或⽬录,不论⽬的⽂件或⽬录是否已经存在。

-i 或 --interactive:覆盖⽂件之前先询问用户。

-r:递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符 号链接,则⼀律视为普通⽂件处理。

使用:

拷贝单个文件或空目录

拷贝多级目录

注意:同级目录中不可以有同名文件或目录。

总结:

2.9、mv命令

mv命令是move的缩写,可以⽤来移动⽂件或者将⽂件改名(move (rename) files,经常⽤来备份⽂件或者⽬录

语法:mv [选项] 源⽂件或⽬录  目标文件或目录

功能:

(1)视mv命令中第⼆个参数类型的不同(是⽬标⽂件还是⽬标⽬录),mv命令将⽂件重命名或将其 移⾄⼀个新的⽬录中。

(2)当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬录名),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。

(3)当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源⽂件均移⾄⽬标⽬录中。(相当于将指定文件或目录剪切到指定路径)

常用选项:

-f:force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖。

-i:若⽬标⽂件(destination)已经存在时,就会询问是否覆盖!

使用:

2.10、cat命令

语法:cat [选项] [⽂件]

功能:查看⽬标⽂件的内容。

常用选项:

-b:对⾮空输出⾏进行编号。

-n:对输出的所有⾏进行编号。

-s:不输出多⾏空⾏。

使用:

当 cat 命令后面不加任何东西时,我们输入什么,回车后他就会显示什么(通过Ctrl+c进行终止命令)。如图:

2.11、echo命令

在Linux环境中一切皆文件,显示器和键盘也可以理解成文件,打印数据其实就是向显示器文件写入数据,从键盘读取数据其实就是从键盘文件读取。而 echo 命令默认就是向显示器文件写入,该命令后面跟的什么内容就写入什么内容,如图:

但是 echo 命令不止可以向显示器文件进行输入,还可以向其他文件进行输入,只需要在该命令后面加上 > 文件名 就可以向指定文件进行输入了,这个过程叫做输出重定向,且对于不存在的文件,该命令会新建文件并将内容输入进入,对于已经存在的文件,该命令直接输入内容。如图:

如果我们只是想新建一个空文件,也可以通过 > 符号,如图:

对于输出重定向,如果指定的文件已经存在,那么会先清空文件原有内容,在输入新的内容;我们也可以通过这个特性快速的将一个文件的内容清空。如图:

如果我们不想清空原有内容,想在原有内容基础上进行追加,我们可以使用追加重定向,只需要将> 替换为 >> 即可。如图:

除了输出重定向,还有输入重定向,输入重定向通过 < 符号实现,可以从让某一指令从指定文件中读取数据。如图:

2.11.1、Ctrl + r 快捷键

Ctrl + r 快捷键可以帮我们快速搜索历史命令,只要我们输入想找的命令的片段,他就会进行查找,并返回匹配的命令。

2.11、more命令

对于短文件,我们可以使用 cat 进行打印查看,但是如果是长文件,直接使用 cat 就会刷屏,不方便查看,这时可以使用 more 命令来查看,该命令输出满一屏后就会停止输出,等待我们自己向下翻找。

语法:more [选项] 文件

功能:more命令,功能类似 cat。

常用选项:-n:指定输出⾏数。

q 键:退出more。

使用:

效果:

2.12、less命令

less ⼯具也是对⽂件或其它输出进⾏分⻚显⽰的⼯具,应该说是linux正统查看⽂件内容的⼯具, 功能极其强⼤。less 的⽤法⽐起 more 更加的有弹性,在 more 的时候,我们并没有办法向前⾯翻,只能往后⾯看,但若使⽤了 less 时,就可以使⽤ [pageup] [pagedown] 等按键的功能来往前往后翻看⽂件,更容易⽤来查看⼀个⽂件的内容。除此之外,在 less ⾥头可以拥有更多的搜索功能,不⽌可以向下搜,也可以向上搜。

语法:less [参数] ⽂件

功能:less 与 more 类似,但使⽤ less 可以随意浏览⽂件,⽽ more 仅能向前移动,却不能向后移动,⽽且 less 在查看之前不会加载整个⽂件。

选项:

-i:忽略搜索时的⼤⼩写。

-N:显⽰每⾏的⾏号。

/字符串:向下搜索“字符串”的功能。

?字符串:向上搜索“字符串”的功能。

n:重复前⼀个搜索(与 / 或 ? 有关)。

N:反向重复前⼀个搜索(与 / 或 ? 有关)。

q键:退出

使用:

查找带有100数字的记录:

2.13、head和tail命令

head 与 tail 就像它的名字⼀样的浅显易懂,它是⽤来显⽰开头或结尾某个数量的⽂字区块,head⽤来显⽰档案的开头⾄标准输出中,⽽ tail 是看档案的结尾。

语法:head [参数]...[⽂件]...

功能:head ⽤来显⽰档案的开头⾄标准输出中,默认head命令打印其相应⽂件的开头10⾏。

选项:-n + 行数:控制显⽰的⾏数。(n 可省略)

使用:

语法:tail 必要参数  [⽂件]

功能:⽤于显⽰指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。

选项:

-n+行数:控制显⽰⾏数。(n 可省略)

-f:循环读取。

使用:

2.13.1、管道

管道符号 | ,通过管道可以连接多个命令,并且管道会记录前一个命令产生的数据供给后一条命令使用,在Linux下一切皆文件,所以管道也可以理解成文件。如果我们想只查看一个大文件中间的某一部分,我们可以使用管道。如图:

2.15、时间相关的指令

指定格式显示时间:date +%Y:%m:%d

用法:date [OPTION]... [+FORMAT]

(1)在显示方面,使⽤者可以设定想要显示的格式,格式设定为⼀个加号后接数个标记,其中常⽤的标记列表如下:

%H : 小时(00..23)

%M : 分钟(00..59)

%S : 秒(00..61)

%X : 相当于 %H:%M:%S

%d : 日(01..31)

%m : ⽉份(01..12)

%Y : 完整年份 (0000..9999)

%F : 相当于 %Y-%m-%d

(2)设定时间方面

date -s:设置当前时间,只有root权限才能设置,其他只能查看。

date -s 20080523:设置成20080523,这样会把具体时间设置成空00:00:00

date -s 01:01:01:设置具体时间,不会对⽇期做更改

date -s “01:01:01 2008-05-23″ :这样可以设置全部时间

date -s “01:01:01 20080523″:这样可以设置全部时间

date -s “2008-05-23 01:01:01″:这样可以设置全部时间

date -s “20080523 01:01:01″:这样可以设置全部时间

(3)时间戳

时间转换时间戳:date +%s 

时间戳转换时间:date -d@1508749502(时间戳)

Unix时间戳(英⽂为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1⽉1 ⽇(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒

使用:

2.16、find命令

Linux下 find 命令在⽬录结构中搜索⽂件,并执⾏指定的操作。Linux下 find 命令提供了相当多的查找条件,功能很强⼤。由于find具有强⼤的功能,所以它的选项也很多,其中⼤部分选项都值得我们花时间来了解⼀下。 即使系统中含有⽹络⽂件系统(NFS),find 命令在该⽂件系统中同样有效,只要你具有相应的权限。在运⾏⼀个⾮常消耗资源的 find 命令时,很多⼈都倾向于把它放在后台执⾏,因为遍历⼀个⼤的⽂件系统可能会花费很⻓的时间(这⾥是指30G字节以上的⽂件系统)。

语法:find pathname -options

功能:⽤于在⽂件树中查找⽂件,并作出相应的处理(可能访问磁盘)。

常用选项:-name:按照⽂件名查找⽂件。(其他选项根据需要查,可以使用man)

使用:

2.17、which命令

功能:搜索系统指定的命令。

使用:

知识点:指令就是一个程序,就是一个文件,安装在系统的特定目录下。

2.17.1、alias

功能:给命令起别名。

我们使用的 ls 和 ll 其实都是被 alias 命令起的别名,如图:

自己使用 alias 起别名:

这个别名是内存级别的,当Xshell关闭之后就会消失,如果想使用需要重新起别名,ls 和 ll 一直好使是因为每次Xshell启动后都会自动起好别名。

2.18、grep命令

语法:grep [选项]  搜索的字符串   ⽂件

功能:在⽂件中搜索字符串,将找到的⾏打印出来

常用选项:

-i:忽略⼤⼩写的不同,所以⼤⼩写视为相同。

-n:顺便输出⾏号。

-v:反向选择,亦即显⽰出没有 '搜索字符串' 内容的那⼀⾏。

使用:

知识点:grep 通常可以用来进行进程搜索。

2.19、zip和unzip命令

为什么要打包和压缩:减少网络传输的数据,提高传输效率,将多个文件变为一个文件传输,防止传输过程某些数据丢失。

zip语法:zip 压缩⽂件.zip   ⽬录或⽂件

功能:将⽬录或⽂件压缩成zip格式。

常用选项:-r:递归处理,将指定⽬录下的所有⽂件和⼦⽬录⼀并处理。

unzip语法:unzip 打包后的文件名 -d 路径 (若不写 -d 选项和路径,默认会在当前路径解包)

功能:将打包后的文件进行解包。

常用选项:-d:指定解包后的文件放到哪个路径

打包命令打包一个路径及路径下的所有内容时,如果不加任何选项,只能够打包指定的路径,而路径中的内容都不会打到包中,所以需要加上 -r 选项。如图:

知识点:Linux中有一个 rzsz 工具,这个⼯具⽤于 windows 机器和远端的 Linux 机器通过 XShell传输⽂件。安装完毕之后可以通过拖拽的⽅式将⽂件上传过去。centOS版本安装命令:yum install lrzsz;Ubuntu版本安装命令:apt install lrzsz。

2.20、tar命令

tar命令的选项非常多,这里直接写一种用该命令打包的方式和解包的方式。

打包:tar -czf 压缩文件.tgz  文件或目录

解包:tar -xzf 压缩文件名

选项解释:

-c:建⽴⼀个压缩⽂件的参数指令(create 的意思);

-x:解开⼀个压缩⽂件的参数指令!

-z:是否同时具有 gzip 的属性?亦即是否需要⽤ gzip 压缩?

-f:使⽤档名,注意,在 f 之后要⽴即接档名喔!不要再加参数!

-v:压缩的过程中显⽰⽂件!这个常⽤,但不建议⽤在背景执⾏过程!

-C:解压到指定⽬录。

使用:

2.21、uname命令(不重要,了解即可)

语法:uname [选项] 

功能:uname⽤来获取电脑和操作系统的相关信息。

补充说明:uname可显⽰linux主机所⽤的操作系统的版本、硬件的名称等基本信息。

常用选项:-a 或‒all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称。

2.21.1、Ctrl+d 热键

功能:Ctrl + d命令可以在Xshell程序中退出当前登录的账号。

三、shell命令以及运行原理

Linux严格意义上说的是⼀个操作系统,我们称之为“核⼼(kernel)”,但我们⼀般用户,不能直接 使⽤ kernel。⽽是通过 kernel 的“外壳”程序,也就是所谓的shell,来与 kernel 沟通。

从技术角度,Shell 的最简单定义:命令⾏解释器(command Interpreter)。主要功能包含:

(1)将使⽤者的命令翻译给核⼼(kernel)处理。

(2)将核⼼的处理结果翻译给使⽤者。

对⽐windows GUI,我们操作 windows 不是直接操作 windows 内核,⽽是通过图形接⼝,进行点击,从⽽完成我们的操作(⽐如进⼊D盘的操作,我们通常是双击D盘盘符,或者运⾏起来⼀个应⽤程序)。shell 对于Linux,有相同的作⽤,主要是对我们的指令进⾏解析,解析指令给Linux内核。反馈结果再通过内核运⾏出结果,通过shell解析给用户。

广义上Linux操作系统是指Linux内核+shell外壳程序,为什么会存在外壳程序简单来说就是因为大部分用户不擅长或者不会操作内核,并且内核也不会让用户直接访问到,所以需要一个外壳程序作为中间商帮助我们,将我们的命令翻译给内核处理,同时将内核处理后的结果翻译给我们,且外壳程序进行翻译时,一般都是创建子进程,让子进程去翻译。 (shell外壳有很多种,bash就是一种具体的外壳程序)如图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2324328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

llamafactory微调效果与vllm部署效果不一致如何解决

在llamafactory框架训练好模型之后&#xff0c;自测chat时模型效果不错&#xff0c;但是部署到vllm模型上效果却很差 这实际上是因为llamafactory微调时与vllm部署时的对话模板不一致导致的。 对应的llamafactory的代码为 而vllm启动时会采用大模型自己本身设置的对话模板信息…

WebSocket通信的握手阶段

1. 客户端建立连接时&#xff0c;通过 http 发起请求报文&#xff0c;报文表示请求服务器端升级协议为 WebSocket&#xff0c;与普通的 http 请求协议略有区别的部分在于如下的这些协议头&#xff1a; 上述两个字段表示请求服务器端升级协议为 websocket 协议。 2. 服务器端响…

分布式ID服务实现全面解析

分布式ID生成器是分布式系统中的关键基础设施&#xff0c;用于在分布式环境下生成全局唯一的标识符。以下是各种实现方案的深度解析和最佳实践。 一、核心需求与设计考量 1. 核心需求矩阵 需求 重要性 实现难点 全局唯一 必须保证 时钟回拨/节点冲突 高性能 高并发场景…

dom0运行android_kernel: do_serror of panic----failed to stop secondary CPUs 0

问题描述&#xff1a; 从日志看出,dom0运行android_kernel&#xff0c;刚开始运行就会crash,引发panic 解决及其原因分析&#xff1a; 最终问题得到解决&#xff0c;发现是前期在调试汇编阶段代码时&#xff0c;增加了汇编打印的指令&#xff0c;注释掉这些指令,问题得到解决。…

HarmonyOS NEXT——【鸿蒙原生应用加载Web页面】

鸿蒙客户端加载Web页面&#xff1a; 在鸿蒙原生应用中&#xff0c;我们需要使用前端页面做混合开发&#xff0c;方法之一是使用Web组件直接加载前端页面&#xff0c;其中WebView提供了一系列相关的方法适配鸿蒙原生与web之间的使用。 效果 web页面展示&#xff1a; Column()…

优选算法的慧根之翼:位运算专题

专栏&#xff1a;算法的魔法世界 个人主页&#xff1a;手握风云 一、位运算 基础位运算 共包含6种&(按位与&#xff0c;有0就是0)、|(按位或有1就是1)、^(按位异或&#xff0c;相同为0&#xff0c;相异为1)、~(按位取反&#xff0c;0变成1&#xff0c;1变成0)、<<(左…

图论问题集合

图论问题集合 寻找特殊有向图&#xff08;一个节点最多有一个出边&#xff09;中最大环路问题特殊有向图解析算法解析步骤 1 &#xff1a;举例分析如何在一个连通块中找到环并使用时间戳计算大小步骤 2 &#xff1a;抽象成算法注意 实现 寻找特殊有向图&#xff08;一个节点最多…

【数据结构】栈 与【LeetCode】20.有效的括号详解

目录 一、栈1、栈的概念及结构2、栈的实现3、初始化栈和销毁栈4、打印栈的数据5、入栈操作---栈顶6、出栈---栈顶6.1栈是否为空6.2出栈---栈顶 7、取栈顶元素8、获取栈中有效的元素个数 二、栈的相关练习1、练习2、AC代码 个人主页&#xff0c;点这里~ 数据结构专栏&#xff0c…

Redis设计与实现-哨兵

哨兵模式 1、启动并初始化sentinel1.1 初始化服务器1.2 使用Sentinel代码1.3 初始化sentinel状态1.4 初始化sentinel状态的master属性1.5 创建连向主服务器的网络连接 2、获取主服务器信息3、获取从服务器的信息4、向主从服务器发送信息5、接受主从服务器的频道信息6、检测主观…

C++进阶——封装哈希表实现unordered_map/set

与红黑树封装map/set基本相似&#xff0c;只是unordered_map/set是单向迭代器&#xff0c;模板多传一个HashFunc。 目录 1、源码及框架分析 2、模拟实现unordered_map/set 2.1 复用的哈希表框架及Insert 2.2 iterator的实现 2.2.1 iteartor的核心源码 2.2.2 iterator的实…

【算法day25】 最长有效括号——给你一个只包含 ‘(‘ 和 ‘)‘ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

32. 最长有效括号 给你一个只包含 ‘(’ 和 ‘)’ 的字符串&#xff0c;找出最长有效&#xff08;格式正确且连续&#xff09;括号子串的长度。 https://leetcode.cn/problems/longest-valid-parentheses/ 2.方法二&#xff1a;栈 class Solution { public:int longestValid…

Jenkins + CICD流程一键自动部署Vue前端项目(保姆级)

git仓库地址&#xff1a;参考以下代码完成,或者采用自己的代码。 南泽/cicd-test 拉取项目代码到本地 使用云服务器或虚拟机采用docker部署jenkins 安装docker过程省略 采用docker部署jenkins&#xff0c;注意这里的命令&#xff0c;一定要映射docker路径&#xff0c;否则无…

一款超级好用且开源免费的数据可视化工具——Superset

认识Superset 数字经济、数字化转型、大数据等等依旧是如今火热的领域&#xff0c;数据工作有一个重要的环节就是数据可视化。 看得见的数据才更有价值&#xff01; 现如今依旧有多数企业号称有多少多少数据&#xff0c;然而如果这些数据只是呆在冷冰冰的数据库或文件内则毫无…

RedHatLinux(2025.3.22)

1、创建/www目录&#xff0c;在/www目录下新建name和https目录&#xff0c;在name和https目录下分别创建一个index.htm1文件&#xff0c;name下面的index.html 文件中包含当前主机的主机名&#xff0c;https目录下的index.htm1文件中包含当前主机的ip地址。 &#xff08;1&…

【C++篇】类与对象(上篇):从面向过程到面向对象的跨越

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对C感兴趣的…

智慧运维平台:赋能未来,开启高效运维新时代

在当今数字化浪潮下&#xff0c;企业IT基础设施、工业设备及智慧城市系统的复杂度与日俱增&#xff0c;传统人工运维方式已难以满足高效、精准、智能的管理需求。停机故障、低效响应、数据孤岛等问题直接影响企业运营效率和成本控制。大型智慧运维平台&#xff08;AIOps, Smart…

基于大语言模型的智能音乐创作系统——从推荐到生成

一、引言&#xff1a;当AI成为音乐创作伙伴 2023年&#xff0c;一款由大语言模型&#xff08;LLM&#xff09;生成的钢琴曲《量子交响曲》在Spotify冲上热搜&#xff0c;引发音乐界震动。传统音乐创作需要数年专业训练&#xff0c;而现代AI技术正在打破这一壁垒。本文提出一种…

Reactive编程:什么是Reactive编程?Reactive编程思想

文章目录 **1. Reactive编程概述****1.1 什么是Reactive编程&#xff1f;****1.1.1 Reactive编程的定义****1.1.2 Reactive编程的历史****1.1.3 Reactive编程的应用场景****1.1.4 Reactive编程的优势** **1.2 Reactive编程的核心思想****1.2.1 响应式&#xff08;Reactive&…

深度剖析:U盘突然无法访问的数据拯救之道

一、引言 在数字化办公与数据存储日益普及的当下&#xff0c;U盘凭借其小巧便携、即插即用的特性&#xff0c;成为了人们工作、学习和生活中不可或缺的数据存储工具。然而&#xff0c;U盘突然无法访问这一棘手问题却时常困扰着广大用户&#xff0c;它不仅可能导致重要数据的丢失…

蓝桥杯-特殊的三角形(dfs/枚举/前缀和)

思路分析 深度优先搜索&#xff08;DFS&#xff09;思路 定义与参数说明 dfs 函数中&#xff0c;last 记录上一条边的长度&#xff0c;用于保证新选边长度大于上一条边&#xff0c;实现三边互不相等 。cnt 记录已选边的数量&#xff0c;当 cnt 达到 3 时&#xff0c;就构成了…