当前位置: 首页 > news >正文

Linux之基础知识

目录

一、环境准备

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就是一种具体的外壳程序)如图:

相关文章:

Linux之基础知识

目录 一、环境准备 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…...

[mlr3] Bootstrap与交叉验证k-fold cross validation

五折交叉验证因其无放回分层抽样和重复验证机制&#xff0c;成为超参数调优的首选&#xff1b; 而Bootstrap因有放回抽样的重复性和验证集的不稳定性&#xff0c;主要服务于参数估计&#xff08;置信区间的计算&#xff09;而非调优。 实际应用中&#xff0c;可结合两者优势&am…...

自动化构建攻略:Jenkins + Gitee 实现 Spring Boot 项目自动化构建

Jenkins Gitee 实现 Spring Boot 项目自动化构建 环境准备安装配置jdk安装配置maven安装git安装配置Jenkins 测试构建测试自动化触发 环境准备 云服务器环境&#xff1a; 系统版本&#xff1a;Ubuntu 24.04 64位ecs规格&#xff1a;4核(vCPU)8 GiB公网带宽&#xff1a;10Mbi…...

Python 中的不可变数据类型的解析

# Python 中的不可变数据类型的解析 在 Python 的世界里&#xff0c;数据类型扮演着至关重要的角色。根据数据是否可以在创建后被修改&#xff0c;Python 数据类型可分为可变和不可变两类。本文将聚焦于不可变数据类型&#xff0c;详细介绍它们的特点&#xff0c;并结合具体实例…...

【Kafka】分布式消息队列的核心奥秘

文章目录 一、Kafka 的基石概念​主题&#xff08;Topic&#xff09;​分区&#xff08;Partition&#xff09;​生产者&#xff08;Producer&#xff09;​消费者&#xff08;Consumer&#xff09;​ 二、Kafka 的架构探秘​Broker 集群​副本机制​ 三、Kafka 的卓越特性​高…...

基于Promise链式调用的多层级请求性能优化

代码优化-循环嵌套关联请求 1. 背景 在实际开发中&#xff0c;我们经常会遇到需要嵌套关联请求的场景&#xff0c;比如&#xff1a; 获取项目列表获取项目详情获取项目进度 2. 问题 在这种场景下&#xff0c;我们可能会遇到以下问题&#xff1a; 串行请求瀑布流&#xff…...

RuoYi基础学习

1 若依搭建 前后端分离版本&#xff1a;RuoYi-Vue利用SpringBoot作为后端开发框架&#xff0c;与Vue.js结合&#xff0c;实现了前后端分离的开发模式。这种架构有助于提高开发效率&#xff0c;前后端可以独立开发和部署&#xff0c;更适合现代化的Web应用开发。 RuoYi-Vue3&a…...

解决关于原生gmssl无法直接输出sm2私钥明文的问题

解决关于原生gmssl无法直接输出sm2私钥明文的问题 问题描述解决方法解决方法一解决方法二 问题描述 通过gmssl生成sm2公私钥对时&#xff0c;输出的是加密的sm2私钥&#xff0c;无法获取到SM2私钥明文。 解决方法 解决方法一 手动解密&#xff1a; 解决方法二 修改源码&…...

AT24Cxx移植第三方库到裸机中使用

简介 MCU : STM32F103C8T6 库: HAL库裸机开发 EEPROM : AT24C02, 256Byte容量&#xff0c;I2C接口 电路图 AT24C02 电路图 电路图引用 逻辑直接读写 // 写入数据到 EEPROM HAL_StatusTypeDef EEPROM_WriteByte(uint16_t MemAddress, uint8_t Data) {// 发送数据uint8_t …...

【落羽的落羽 C++】内存区域、C++的内存管理

文章目录 一、内存区域二、C的内存管理1. new和delete2. new和delete的特点3. 实现的原理 一、内存区域 C语言和C中&#xff0c;我们常把计算机的内存分为不同的区域&#xff0c;有各自不同的功能&#xff1a; 栈区&#xff1a;存放函数的局部变量、参数、返回地址等。堆区&a…...

星际旅行(去年蓝桥杯省赛b组-第7题)

题目链接: 蓝桥账户中心 朋友分享给我一道题&#xff0c;我刚开始其实先用dfs写&#xff0c;但是直接就超时了(很大的一部分原因是截图中没有数据范围) #include<bits/stdc.h> using namespace std; const int MAXN 1e97; vector<int> graph[MAXN]; bool visite…...

转发和重定向的区别详解

转发&#xff08;Forward&#xff09;和重定向&#xff08;Redirect&#xff09;是 Web 开发中两种常用的请求处理方式&#xff0c;主要用于将客户端请求从一个资源转移到另一个资源。它们在实现机制、行为表现和应用场景上有显著区别&#xff0c;以下是对两者的详细解析&#…...

HarmonyOS NEXT——【鸿蒙相册图片以及文件上传Picker封装】

1、鸿蒙系统文件/图片上传base64&#xff1a; 鸿蒙应用需要上传图片或者文件时&#xff0c;由于更高的安全性与更严谨的访问权限&#xff0c;通常无法直接从系统相册或文件管理中直接上传&#xff0c;因此我们可以通过picker对象去拉起相册访问的能力&#xff0c;引导用户选择…...

Java中文件copy的5种方式

Java中文件copy的5种方式 传统字节流缓冲流jdk7 Files.copy通道&#xff08;零拷贝&#xff09;内存映射对比 传统字节流 缓冲流 jdk7 Files.copy 通道&#xff08;零拷贝&#xff09; 内存映射 对比...

Nacos Client 模块的作用是什么?是如何与 Server 端通信的?

Nacos Client 模块是 Nacos 架构中的重要组成部分&#xff0c;它负责与 Nacos Server 端进行交互&#xff0c;实现服务注册、服务发现、配置管理等核心功能。 可以将 Nacos Client 理解为 Nacos 提供给应用程序使用的 SDK。 Nacos Client 模块的主要作用: 服务注册 (Service R…...

c中的变量命名规则

在 C 中&#xff0c;变量命名需要遵循一定的规则和约定&#xff0c;以确保代码的可读性和合法性。以下是 C 变量命名的详细规则&#xff1a; 1. 基本规则 字母开头&#xff1a;变量名必须以字母&#xff08;a-z 或 A-Z&#xff09;或下划线&#xff08;_&#xff09;开头&…...

DDR(Double Data Rate)详解

一、DDR的定义与核心特性 DDR&#xff08;双倍数据率同步动态随机存取存储器&#xff09; 是一种 基于时钟上升沿和下降沿传输数据的高速内存技术&#xff0c;广泛应用于计算机、嵌入式系统、移动设备等领域。其核心特性包括&#xff1a; 双倍数据率&#xff1a;每个时钟周期传…...

aocache:AOCache 新增功能深度解析:从性能监控到灵活配置的全方位升级

最近对aocache 进行了重要升级&#xff0c;最新版本0.6.0增加了几项新功能&#xff1a;性能分析日志&#xff0c;AOCache性能分析工具&#xff0c;切入点自定义配置&#xff0c;全局配置&#xff0c;本文详细说明这几项目新功能的作用和使用方式。 一、性能分析日志 需求背景…...

IsaacLab最新2025教程(7)-引入IK solver控制机器人

机器人控制可以直接给定关节角进行驱动实现功能&#xff0c;完成任务&#xff0c;但是关节角不是很直观而且做teleoperation或者是结合VLA模型时候&#xff0c;用eef pose会更符合直觉一些&#xff0c;isaacsim用的是LulaKinematics&#xff0c;因为IsaacLab现在是ETHZ的团队在…...

【测试】每日3道面试题 3/30

每日更新&#xff0c;建议关注收藏点赞。 白盒测试逻辑覆盖标准&#xff1f;哪种覆盖标准覆盖率最高&#xff1f; 5种。语句覆盖、分支/判定覆盖、条件覆盖、条件组合覆盖【覆盖率最高&#xff0c;所有可能条件组合都验证】、路径覆盖【理论上最高&#xff0c;但实际很难实现】…...

矩阵中对角线的遍历问题【C++】

1&#xff0c;按对角线进行矩阵排序 题目链接&#xff1a;3446. 按对角线进行矩阵排序 - 力扣&#xff08;LeetCode&#xff09; 【题目描述】 对于一个m*n的矩阵grid&#xff0c;要求对该矩阵进行 变换&#xff0c;使得变换后的矩阵满足&#xff1a; 主对角线右上的所有对角…...

自动化与智能化的认知差异

从认知心理学的角度对自动化和智能化进行了区分&#xff0c;我们可以从同化、顺应、平衡、图式方面来理解&#xff1a;一、自动化与图式及同化&#xff08;1&#xff09;图式是认知心理学中的一个重要概念&#xff0c;指个体对世界的知觉经验和理解方式&#xff0c;是个体过去经…...

leetcode 2360 图中最长的环 题解

题面 给定一个有向图&#xff0c;每个点出度最大为一&#xff0c;现在问你图中最长的环的长度是多少&#xff0c;如果没有环输出 -1&#xff0c; 1 ≤ n ≤ 1 0 5 1 \le n \le 10^5 1≤n≤105。 题面 解题思路 我们直接说结论&#xff0c;我们从任意一个点出发&#xff0c;用…...

鸿蒙UI开发

鸿蒙UI开发 本文旨在分享一些鸿蒙UI布局开发上的一些建议&#xff0c;特别是对屏幕宽高比发生变化时的应对思路和好的实践。 折叠屏适配 一般情况&#xff08;自适应布局/响应式布局&#xff09; 1.自适应布局 1.1自适应拉伸 左右组件定宽 TypeScript //左右定宽 Row() { …...

华宇TAS应用中间件与晓窗科技智慧校园管理一体化平台完成兼容互认证

近日&#xff0c;华宇TAS应用中间件与安徽晓窗教育科技有限公司&#xff08;以下简称晓窗科技&#xff09;的智慧校园管理一体化平台V1.0完成兼容性认证。经双方联合测试&#xff0c;两款产品在稳定性、安全性以及性能等方面表现优异&#xff0c;可以满足政企客户对于数据安全以…...

Java——数组

一、数组是&#xff1f; 数组就是一个容器&#xff0c;用于存储一批同种类型的数据。 数组变量名中存储的是数组在内存中的地址&#xff0c;数组是一种引用数据类型。 二、静态初始化数组 &#xff08;一&#xff09;定义 即定义数组的时候直接给数组赋值。 &#xff08;…...

MySQL排序详解

MySQL支持两种方式排序filesort和indexindex是指扫描索引本身完成排序&#xff0c;index效率高filesort是指通过内存或者排序文件完成排序&#xff0c;filesort效率低 order by满足两种情况时会使用index排序 order by语句使用索引最左列where条件字段和order by字段组合满足索…...

【python实战】-- 选择解压汇总mode进行数据汇总20250329更新

系列文章目录 文章目录 系列文章目录前言一、功能列表二、程序如下&#xff1a;总结 前言 一、功能列表 该模板用于多功能数据汇总处理&#xff1a; 1、用于解压压缩包&#xff0c;输入指定路径&#xff0c;即可解压多级压缩文件&#xff1b; 2、镜筒反射率、LAB文件汇总&…...

Java 程序员面试题:从基础到高阶的深度解析

引言 Java 作为全球最流行的编程语言之一&#xff0c;其面试题不仅考察候选人的编程能力&#xff0c;更关注对底层原理和架构设计的理解。本文将系统梳理 Java 面试中的高频考点&#xff0c;结合代码示例与原理分析&#xff0c;助您从容应对技术面试。 一、Java 基础语法与核…...

JSP(实验):带验证码的用户登录

[实验目的] 1&#xff0e;掌握应用request对象获取表单提交的数据。 2&#xff0e;掌握解决获取表单提交数据产生中文乱码的问题。 3&#xff0e;掌握使用response对象进行定时跳转功能。 4&#xff0e;掌握使用session对象完成登录和注销功能。 [实验要求] 设计带验证码…...

【安全运营】关于攻击面管理相关概念的梳理(二)

CYNC&#xff08;持续可见性和网络控制&#xff09; CYNC&#xff08;Continuous Visibility and Network Control&#xff09;即“持续可见性和网络控制”&#xff0c;是一个与网络安全和IT运营管理相关的概念。它强调的是在一个组织的数字环境中&#xff0c;确保对所有资产、…...

【Linux篇】进程入门指南:操作系统中的第一步

步入进程世界&#xff1a;初学者必懂的操作系统概念 一. 冯诺依曼体系结构1.1 背景与历史1.2 组成部分1.3 意义 二. 进程2.1 进程概念2.1.1 PCB&#xff08;进程控制块&#xff09; 2.2 查看进程2.2.1 使用系统文件查看2.2.2 使⽤top和ps这些⽤⼾级⼯具来获取2.2.3 通过系统调用…...

Linux进程状态补充(10)

文章目录 前言一、阻塞二、挂起三、运行R四、休眠D五、四个重要概念总结 前言 上篇内容大家看的云里雾里&#xff0c;这实在是正常不过&#xff0c;因为例如 写实拷贝 等一些概念的深层原理我还没有讲解&#xff0c;大家不用紧张&#xff0c;我们继续往下学习就行&#xff01;&…...

STM32_HAL开发环境搭建【Keil(MDK-ARM)、STM32F1xx_DFP、 ST-Link、STM32CubeMX】

安装Keil(MDK-ARM)【集成开发环境IDE】 我们会在Keil(MDK-ARM)上去编写代码、编译代码、烧写代码、调试代码。 Keil(MDK-ARM)的安装方法&#xff1a; 教学视频的第02分03秒开始看。 安装过程中请修改一下下面两个路径&#xff0c;避免占用C盘空间。 Core就是Keil(MDK-ARM)的…...

全自动数字网络机器人:重塑未来的无形引擎 ——从金融量化到万物互联,为何必须“ALL IN”?

全自动数字网络机器人&#xff1a;重塑未来的无形引擎 ——从金融量化到万物互联&#xff0c;为何必须“ALL IN”&#xff1f; &#xff08;2025年3月29日&#xff09; “未来十年&#xff0c;代码将比石油更具价值。” —— DeepSeek创始人梁文锋 一、数据洪流与AI进化&#…...

每日一题之修建灌木

问题描述 爱丽丝要完成一项修剪灌木的工作。 有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晩会修剪一棵灌 木, 让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始, 每天向右修剪一棵灌木。当修剪了最右侧的灌木后, 她会调转方向, 下一天开 始向左修…...

智能仪表板DevExpress Dashboard v24.2新版亮点:支持.NET 9

使用DevExpress BI Dashboard&#xff0c;再选择合适的UI元素&#xff08;图表、数据透视表、数据卡、计量器、地图和网格&#xff09;&#xff0c;删除相应参数、值和序列的数据字段&#xff0c;就可以轻松地为执行主管和商业用户创建有洞察力、信息丰富的、跨平台和设备的决策…...

ubuntu下终端打不开的排查思路和解决方法

问题现象描述&#xff1a;ubuntu开机后系统桌面显示正常&#xff0c;其他图形化的app也都能打开无异常&#xff0c;唯独只有terminal终端打不开&#xff0c;无论是鼠标点击终端软件&#xff0c;还是ctrlaltt&#xff0c;还是altF2后输入gnome-terminal后按回车&#xff0c;这三…...

鸿蒙项目源码-天气预报app-原创!原创!原创!

鸿蒙天气预报项目源码包运行成功含文档ArkTS语言。 我半个月写的原创作品&#xff0c;请尊重原创。 原创作品&#xff0c;盗版必究&#xff01;&#xff01;&#xff01;&#xff01; 原创作品&#xff0c;盗版必究&#xff01;&#xff01;&#xff01;&#xff01; 原创作品…...

Turtle事件处理(键盘与鼠标交互)

Turtle 提供了 事件驱动编程,允许我们使用 键盘 和 鼠标 控制 Turtle,从而实现交互式绘图。例如,我们可以让 Turtle 响应 按键、鼠标点击 和 拖动 事件,使其根据用户的输入进行移动、旋转或绘制图形。 1. 事件机制概述 Turtle 的事件处理主要依赖 turtle.Screen() 提供的 …...

算法基础——模拟

目录 1 多项式输出 2.蛇形方阵 3.字符串的展开 模拟&#xff0c;顾名思义&#xff0c;就是题⽬让你做什么你就做什么&#xff0c;考察的是将思路转化成代码的代码能⼒。这类题⼀般较为简单&#xff0c;属于竞赛⾥⾯的签到题&#xff08;但是&#xff0c;万事⽆绝对&#xff…...

惠普(HP)和联想(Lenovo)作为全球两大电脑品牌,并不是简单的“拼接电脑”

惠普&#xff08;HP&#xff09;和联想&#xff08;Lenovo&#xff09;作为全球两大电脑品牌&#xff0c;并不是简单的“拼接电脑”&#xff0c;它们都有自己的核心技术、专利设计和生态体系。以下是它们“自己的”核心部分&#xff1a; 1. 关键自研技术 品牌自研技术/专利说明…...

一些练习 C 语言的小游戏

一些练习 C 语言的小游戏 — 1. 猜数字游戏 描述&#xff1a;程序随机生成一个数字&#xff0c;玩家需要猜测这个数字&#xff0c;并根据提示&#xff08;太高或太低&#xff09;调整猜测&#xff0c;直到猜中为止。 功能点&#xff1a; 随机数生成 (rand() 函数)。循环和…...

曲线拟合 | Matlab基于贝叶斯多项式的曲线拟合

效果一览 代码功能 代码功能简述 目标&#xff1a;实现贝叶斯多项式曲线拟合&#xff0c;动态展示随着数据点逐步增加&#xff0c;模型后验分布的更新过程。 核心步骤&#xff1a; 数据生成&#xff1a;在区间[0,1]生成带噪声的正弦曲线作为训练数据。 参数设置&#xff1a…...

Python 序列构成的数组(对序列使用+和_)

对序列使用和* Python 程序员会默认序列是支持 和 * 操作的。通常 号两侧的序列由 相同类型的数据所构成&#xff0c;在拼接的过程中&#xff0c;两个被操作的序列都不会被 修改&#xff0c;Python 会新建一个包含同样类型数据的序列来作为拼接的结果。 如果想要把一个序列…...

洛谷题单1-P5703 【深基2.例5】苹果采购-python-流程图重构

题目描述 现在需要采购一些苹果&#xff0c;每名同学都可以分到固定数量的苹果&#xff0c;并且已经知道了同学的数量&#xff0c;请问需要采购多少个苹果&#xff1f; 输入格式 输入两个不超过 1 0 9 10^9 109 正整数&#xff0c;分别表示每人分到的数量和同学的人数。 输…...

计算机网络 用deepseek帮助整理的复习资料(一)

### 计算机网络基础知识整理 --- #### **一、网络类型** 1. **局域网 (LAN)** - **定义**&#xff1a;覆盖小范围&#xff08;如家庭、教室、公司&#xff09;。 - **特点**&#xff1a;高带宽、低延迟&#xff0c;设备通过交换机互联。 - **示例**&#xff1…...

虚拟电商-话费充值业务(二)话费充值对接供应商模块开发

一、对接供应商模块开发 供应商对接模块chongba_recharge_supplier主要负责的就是调用外部的供应商系统进行充值下单&#xff0c;这种调用是一种基于HTTP协议的调用。 此外在供应商对接模块中主要是实现的业务逻辑有&#xff1a; 1&#xff1a;余额或押金不足情况下的失败轮…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例3,TableView16_03 拖拽视觉反馈示例

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例3,TableView16_03 拖…...

游戏引擎学习第186天

回顾并规划今天的任务 现在&#xff0c;我们站在了一个关键的时刻&#xff0c;准备突破&#xff0c;拥有一些优秀的性能分析代码。从目前来看&#xff0c;我们已经能够看到时间的消耗情况&#xff0c;我对这一点感到非常兴奋。昨天的直播中我们勉强让一些东西工作了&#xff0…...