Linux第三章之重定向 管道命令 环境变量PATH

news2024/9/24 3:26:28

一、了解Linux目录配置标准FHS

FHS本质一套规定Linux目录结构,软件建议安装位置的标准。

使用Linux来开发产品或者发布软件的公司、个人太多,如果每家公司或者个人都按照自己的意愿来配置文件或者软件的存放位置,这无疑是一场灾难。

#进入根目录
[root@localhost home]# cd /
#查看目录树(两层,只看目录,不看文件)
[root@localhost /]# tree -d -L 1
.
├── bin -> usr/bin #可执行文件目录,linux自带命令在这里
├── boot #开机会使用到的文件,包括Linux核心文件以及开机菜单与开机所需配置文件等等。
├── dev #设备目录
├── etc #配置文件几乎都放置在这个目录内,例如人员的帐号密码档、 各种服务的启始档等等。
├── home #家目录,系统默认的使用者主文件夹,用户的个人文件都可放在这里
├── lib -> usr/lib #放置在开机时会用到的函数库,以及在/bin或/sbin下面的指令会调用的函数库
├── lib64 -> usr/lib64 #与lib类似
├── media #放置可移除的设备,包括软盘、光盘、DVD等等设备都暂时挂载于此。
├── mnt #设备临时挂载目录
├── opt #第三方协力软件放置的目录
├── proc #是一个虚拟文件系统,放置内存中的数据,不占用硬盘空间
├── root #系统管理员的主文件夹
├── run #放置系统开机后所产生的各项信息
├── sbin -> usr/sbin #里面包括了开机、修复、还原系统所需要的指令,root用户使用
├── srv #service是一些网络服务启动之后,这些服务所需要取用的数据目录。
├── sys #与proc类似
├── tmp #temp,让一般使用者或者是正在执行的程序暂时放置文件的地方
├── usr #unix software resource:与软件安装/执行有关
└── var #variable,与系统运行过程有关,主要为变动性较大的数据
19 directories
————————————————

文章链接:https://blog.csdn.net/lzq00277/article/details/108303917


二、Linux数据重定向的理解与操作

2.1基本准备

基本大部分计算机,要与人交互,都要默认打开三个设备(文件)

  • 标准输入,stdin,代码是0
  • 标准错误,stdout,代码是1
  • 标准错误输出,stderr,代码是2

为什么?Linux一切皆文件,交互需求,输入输出信息分类。除了上面的三个标准设备(文件), 我们可能经常有从文件读取数据,或者将数据写入文件的场景。

2.2重定向的理解

输出/追加重定向:本来应该显示到显示器(通常)文件的内容,写入到文件当中。
输入重定向:或者本来应该从显示器(通常)文件读取数据,转化成从指定文件读取数据

#输出重定向
[whb@VM-0-3-centos test]$ ls # 当前只有三个文件
file1 file2 file3
[whb@VM-0-3-centos test]$ whoami # 该命令输出的结果,默认是直接打印到标准输出stdout文件中
whb
[whb@VM-0-3-centos test]$ whoami>file4 # 输出重定向,不在显示出来
[whb@VM-0-3-centos test]$ ll # 新创建文件file4
total 4
-rw-rw-r-- 1 whb whb 0 Mar 2 15:22 file1
-rw-rw-r-- 1 whb whb 0 Mar 2 15:22 file2
-rw-rw-r-- 1 whb whb 0 Mar 2 15:22 file3
-rw-rw-r-- 1 whb whb 4 Mar 2 15:23 file4
[whb@VM-0-3-centos test]$ cat file4 #本来应该显示到显示器的内容,写到了file4文件中
whb
#追加重定向
[whb@VM-0-3-centos test]$ cat file4
whb
[whb@VM-0-3-centos test]$ echo "hello bit" > file4 #将新内容重定向到文件file4中
[whb@VM-0-3-centos test]$ cat file4 #发现之前的"whb"被覆盖了
hello bit
[whb@VM-0-3-centos test]$ echo "hello bit" > file4
[whb@VM-0-3-centos test]$ echo "hello bit" > file4
[whb@VM-0-3-centos test]$ echo "hello bit" > file4
[whb@VM-0-3-centos test]$ cat file4 #连续重定向多次,发现文件内容并没有变化
hello bit #其实不是没有变化,而是每次写入都是从头开始
[whb@VM-0-3-centos test]$ cat file4
hello bit
[whb@VM-0-3-centos test]$ echo "hello bit1" >> file4
[whb@VM-0-3-centos test]$ echo "hello bit2" >> file4
[whb@VM-0-3-centos test]$ echo "hello bit3" >> file4
[whb@VM-0-3-centos test]$ cat file4 #通过多次>>,我们发现内容是被追加到文件结尾的,叫做追加重定向
hello bit
hello bit1
hello bit2
hello bit3
#输入重定向
[whb@VM-0-3-centos test]$ cat > file1
hello
bit
best #ctrl+d结束
[whb@VM-0-3-centos test]$ cat file1 #可以看出,如果cat后面没有紧跟数据源文件,默认从标准输入获取数据
hello
bit
best
[whb@VM-0-3-centos test]$ ll
total 4
-rw-rw-r-- 1 whb whb 15 Mar 2 15:22 file1
-rw-rw-r-- 1 whb whb 0 Mar 2 15:22 file2
-rw-rw-r-- 1 whb whb 0 Mar 2 15:22 file3
-rw-rw-r-- 1 whb whb 43 Mar 2 15:30 file4
[whb@VM-0-3-centos test]$ cat file4 #也可以这样输出,想象一下,file4的内容打印到屏幕的具体过程
hello bit
hello bit1
hello bit2
hello bit3
[whb@VM-0-3-centos test]$ cat < file4 #既然cat要打印文件,前提也是先读取file4,所以也可以这样写
hello bit
hello bit1
hello bit2
hello bit3
[whb@VM-0-3-centos test]$ cat < file4 >file3 #理解一下
[whb@VM-0-3-centos test]$ cat file3 #拷贝了file4到file3
hello bit
hello bit1
hello bit2
hello bit3

代码0,1,2?是什么?

[whb@VM-0-3-centos test]$ find /home -name test.c
find: ‘/home/wl’: Permission denied #报错信息
/home/wudu/work/linux-57/linux-lesson7/signal_test/test.c #正常信息
/home/wudu/work/linux-57/linux-lesson7/sigaction_test/test.c #正常信息
...
[whb@VM-0-3-centos test]$ find /home -name test.c > test_list #发现并不是所有信息都被重定向
find: ‘/home/wl’: Permission denied #报错信息并没有被写入目标文件
...
[whb@VM-0-3-centos test]$ cat test_list
/home/wudu/work/linux-57/linux-lesson7/signal_test/test.c #正常信息被写入了
/home/wudu/work/linux-57/linux-lesson7/sigaction_test/test.c
...
# 1:代表标准输出
# 2:代表标准错误
# 但是他们两个默认都会往显示器打印,像上面的情况,打印输出到显示器会发生混乱,so
#只打印正常信息
[whb@VM-0-3-centos test]$ find /home -name test.c 2>err.list
/home/wudu/work/linux-57/linux-lesson7/signal_test/test.c
/home/wudu/work/linux-57/linux-lesson7/sigaction_test/test.c
/home/wudu/work/linux-57/linux-lesson7/sigmask/test.c
/home/wudu/work/linux-57/linux-lesson15/test/test.c
/home/wudu/work/linux-57/linux-lesson4/pipesize/test.c
/home/wudu/work/linux-57/linux-lesson5/testmkfifo/test.c
/home/wudu/work/linux-57/linux-lesson5/shmtest/test.c
/home/wudu/work/linux-57/linux-lesson3/dynamic/test.c
/home/wudu/work/linux-57/linux-lesson3/static/test.c
...
[whb@VM-0-3-centos test]$ cat err.list #错误信息被单独分离出来
find: ‘/home/wl’: Permission denied
find: ‘/home/sly’: Permission denied
find: ‘/home/zwc’: Permission denied
find: ‘/home/cpx’: Permission denied
find: ‘/home/gb’: Permission denied
find: ‘/home/bss’: Permission denied
# 只打印错误信息
# 上面默认就是
# 正常和错误信息都重定向到文件中
[whb@VM-0-3-centos test]$ find /home -name test.c >info.list 2>&1
[whb@VM-0-3-centos test]$ cat info.list
find: ‘/home/wl’: Permission denied
find: ‘/home/wudu/.local’: Permission denied
/home/wudu/work/linux-57/linux-lesson7/signal_test/test.c
/home/wudu/work/linux-57/linux-lesson7/sigaction_test/test.c
/home/wudu/work/linux-57/linux-lesson7/sigmask/test.c
...
#2>&1??又是什么鬼? 这个底层是怎么实现的,目前还不能讲,比特后期的课程才有

/dev/null:垃圾桶黑洞设备,如果我知道有错误信息,但是我不想要,我想凡是错误信息直接丢弃,习惯写法是

[whb@VM-0-3-centos test]$ find /home -name test.c 2>/dev/null #便只显示正常信息了
/home/wudu/work/linux-57/linux-lesson7/signal_test/test.c
/home/wudu/work/linux-57/linux-lesson7/sigaction_test/test.c
/home/wudu/work/linux-57/linux-lesson7/sigmask/test.c
/home/wudu/work/linux-57/linux-lesson15/test/test.c
/home/wudu/work/linux-57/linux-lesson4/pipesize/test.c
/home/wudu/work/linux-57/linux-lesson5/testmkfifo/test.c

2.3Linux管道命令的理解与操作

命令是可以产生数据的,如果我们还要多输出数据进行加工,甚至想多次加工,就需要使用管道
 

[whb@VM-0-3-centos ~]$ last #显示正在或者最近登录linux的用户信息
whb pts/5 123.139.120.197 Tue Mar 2 16:24 still logged in
wudu pts/4 222.91.65.7 Tue Mar 2 15:34 still logged in
wudu pts/3 222.91.65.7 Tue Mar 2 15:34 still logged in
whb pts/2 123.139.120.197 Tue Mar 2 15:21 still logged in
root pts/1 222.91.65.7 Tue Mar 2 15:03 still logged in
whb pts/0 123.139.120.197 Tue Mar 2 13:59 still logged in
wudu pts/2 222.91.65.7 Tue Mar 2 12:12 - 13:52 (01:39)
wudu pts/1 222.91.65.7 Tue Mar 2 12:12 - 13:52 (01:39)
root pts/0 222.91.65.7 Tue Mar 2 12:12 - 13:52 (01:39)
wudu pts/9 222.90.196.96 Mon Mar 1 14:48 - 01:38 (10:50)
wudu pts/6 222.90.196.96 Mon Mar 1 14:41 - 01:38 (10:57)
root pts/8 222.90.196.96 Mon Mar 1 14:19 - 01:39 (11:19)
wudu pts/7 222.90.196.96 Mon Mar 1 14:16 - 01:39 (11:22)
#如果我只想看到前5条信息呢?
[whb@VM-0-3-centos ~]$ last | head -5 #其中'|'就是管道,head是一个截取文本行的工具,可以单独讲
whb pts/5 123.139.120.197 Tue Mar 2 16:24 still logged in
wudu pts/4 222.91.65.7 Tue Mar 2 15:34 still logged in
wudu pts/3 222.91.65.7 Tue Mar 2 15:34 still logged in
whb pts/2 123.139.120.197 Tue Mar 2 15:21 still logged in
root pts/1 222.91.65.7 Tue Mar 2 15:03 still logged in
...
#如果我只想看到我的历史登录信息呢?
[whb@VM-0-3-centos ~]$ last | grep 'whb'
whb pts/6 123.139.120.197 Tue Mar 2 16:30 still logged in
whb pts/5 123.139.120.197 Tue Mar 2 16:24 still logged in
whb pts/2 123.139.120.197 Tue Mar 2 15:21 still logged in
whb pts/0 123.139.120.197 Tue Mar 2 13:59 still logged in
whb pts/9 123.139.172.248 Sat Feb 27 15:22 - 21:04 (05:42)
whb pts/7 125.76.203.208 Fri Feb 5 10:22 - 13:33 (03:10)
whb pts/5 125.76.203.208 Fri Feb 5 08:40 - 13:33 (04:52)
whb pts/10 125.76.203.208 Thu Feb 4 16:40 - 20:07 (03:26)
whb pts/10 125.76.201.15 Thu Feb 4 11:35 - 15:14 (03:39)
whb pts/9 125.76.201.15 Thu Feb 4 11:30 - 15:14 (03:44)
...
#如果我只想看到我的历史登录时间呢?有点难,了解一下就行,其中awk是一个文本处理工具
[whb@VM-0-3-centos ~]$ last | grep 'whb' | awk '{print $1,$4,$5,$6,$7}'
whb Tue Mar 2 16:30
whb Tue Mar 2 16:24
whb Tue Mar 2 15:21
whb Tue Mar 2 13:59
whb Sat Feb 27 15:22
whb Fri Feb 5 10:22
whb Fri Feb 5 08:40

可见,管道是可以级联多条命令的,每条命令的结果输出,都作为输入,导入下一条命令。有点像流水线.

 理论上,管道的基本操作就完了,实际上,如果站在日常使用就够了,但是如果想面试大厂,至少有两方面问题需要深究? 

除了上面的文本处理工具,还有哪些文本处理工具你都使用过,各自有什么特征?
站在操作系统层面,管道的底层原理是什么?


三、Linux 环境变量与PATH

假设我们想用C写一个输出 ‘hello world’ 的程序

[whb@VM-0-3-centos test]$ cat test.c
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
[whb@VM-0-3-centos test]$ gcc -o mycmd test.c
[whb@VM-0-3-centos test]$ ll
total 16
-rwxrwxr-x 1 whb whb 8400 Mar 2 16:46 mycmd
-rw-rw-r-- 1 whb whb 74 Mar 2 16:46 test.c
#等等,这个 './' 是什么东西?mycmd从构成上,也可以认为是一个命令
#像ls,就在/bin/ls or /usr/bin/ls, 为什么执行ls命令不需要带路径呢?(尽管也可以)
[whb@VM-0-3-centos test]$ ./mycmd
hello world

3.1环境变量PATH

是一个路径集,命令再被执行时,系统会在环境变量PATH中进行路径查找,如果找到,就停止查找,执行命令。

[whb@VM-0-3-centos test]$ echo $PATH #不同环境,平台可能内容会有不同
/usr/local/jdk8/bin:/usr/local/jdk8/jre/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sb
in:/home/whb/.local/bin:/home/whb/bin
$: 用来显示PATH环境变量的内容
#各个路径以 : 作为分隔符,每个区域代表一个搜索路径

这也就解释了,为何ls不需要带路径,因为ls所在的路径,本身就在PATH环境变量列表当中。

[whb@VM-0-3-centos test]$ which ls #which 显示指定命令所在路径
alias ls='ls --color=auto'
/usr/bin/ls

那么问题来了,我也想让我的’hello world‘程序执行的时候不带‘./’这样的路径, 怎么办呢?

#方法一
[whb@VM-0-3-centos test]$ mycmd
-bash: mycmd: command not found
[whb@VM-0-3-centos test]$ sudo cp mycmd /usr/bin
[sudo] password for whb:
[whb@VM-0-3-centos test]$ ls /usr/bin/mycmd
/usr/bin/mycmd
[whb@VM-0-3-centos test]$ mycmd #但是千万不要这样干,因为会‘污染’指令集
hello world
#方法二
[whb@VM-0-3-centos test]$ echo $PATH
/usr/local/jdk8/bin:/usr/local/jdk8/jre/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbi
n:/home/whb/.local/bin:/home/whb/bin
[whb@VM-0-3-centos test]$ pwd #查看自己当前处于哪个目录
/home/whb/test
[whb@VM-0-3-centos test]$ export PATH=$PATH:/home/whb/test#导出新的环境变量,加上程序所在的路径
[whb@VM-0-3-centos test]$ echo $PATH
/usr/local/jdk8/bin:/usr/local/jdk8/jre/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbi
n:/home/whb/.local/bin:/home/whb/bin:/home/whb/test
[whb@VM-0-3-centos test]$ sudo rm /usr/bin/mycmd #删掉在/usr/bin路径下的可执行程序
[whb@VM-0-3-centos test]$ which mycmd #mycmd已经能通过环境变量被找到
~/test/mycmd
[whb@VM-0-3-centos test]$ mycmd #可以不带路径
hello world

还有其他环境变量吗?

#了解一下即可
[whb@VM-0-3-centos test]$ env #显示当前用户环境变量
XDG_SESSION_ID=3288
HOSTNAME=VM-0-3-centos
TERM=xterm
SHELL=/bin/bash
HISTSIZE=3000
SSH_CLIENT=123.139.120.197 21378 22
OLDPWD=/home/whb
SSH_TTY=/dev/pts/6
JRE_HOME=/usr/local/jdk8/jre
USER=whb
LD_LIBRARY_PATH=:/home/whb/.VimForCpp/vim/bundle/YCM.so/el7.x86_64
CLASS_PATH=.:/usr/local/jdk8/lib
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or
=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.ta
r=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:
*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:
*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01
;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz
=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:
*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=0
1;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*
.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01
;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fl
i=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.
emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;3
6:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=
01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MAIL=/var/spool/mail/whb
PATH=/usr/local/jdk8/bin:/usr/local/jdk8/jre/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/us
r/sbin:/home/whb/.local/bin:/home/whb/bin:/home/whb/test
PWD=/home/whb/test
JAVA_HOME=/usr/local/jdk8
LANG=en_US.utf8
SHLVL=1
HOME=/home/whb
LOGNAME=whb
SSH_CONNECTION=123.139.120.197 21378 172.17.0.3 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}"
"${PWD/#$HOME/~}"
XDG_RUNTIME_DIR=/run/user/1005
HISTTIMEFORMAT=%F %T
_=/usr/bin/env

系统本身会提供某种全局查找属性,帮我们找到特定的模块/程序

其实,编译器内部也有类似的功能,想想,为何我们#include<头文件> ,并没有指明头文件在哪里,但是编译器也能帮我们找到并展开,包括我们也并没有指明我们的程序依赖哪些第三方库,编译器也能找到。

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

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

相关文章

WordPress--关闭主题和插件的自动更新

原文网址&#xff1a;WordPress--关闭主题和插件的自动更新_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何关闭WordPress主题和插件的自动更新提示。 方法 使用插件&#xff1a;Eay Updates Manager 安装完插件后&#xff0c;所有插件被管理&#xff0c;并自动关闭更新&…

PDM系统的协同优势

在现代制造业中&#xff0c;产品的复杂性和多样性日益增加&#xff0c;要实现高效的生产和交付&#xff0c;协同合作显得尤为重要。而PDM系统&#xff08;Product Data Management&#xff0c;产品数据管理&#xff09;作为关键工具&#xff0c;正是提升协同效率的有力支持。让…

NLP实战9:Transformer实战-单词预测

目录 一、定义模型 二、加载数据集 三、初始化实例 四、训练模型 五、评估模型 &#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同学啊] 模型结构图&#xff1a; &a…

【编程语言 · C语言 · malloc函数】

【编程语言 C语言 malloc函数】https://mp.weixin.qq.com/s?__bizMzg4NTE5MDAzOA&mid2247491503&idx1&sn856b0ee891614a00ae78e84161861e48&chksmcfade356f8da6a404f586365f1987cfc193c0465faf51d959bed9dc5e5e8ce6c112f607f18f3&payreadticketHOUhzlYV…

css图标 | 来自 fontawesome 字体文件的586 个小图标

1. css效果 /*!* Font Awesome 4.4.0 by davegandy - http://fontawesome.io - fontawesome* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)*/.fa-glass:before {content:"\f000"} .fa-music:before {content:"\f001"…

云原生势不可挡,如何跳离云原生深水区?

云原生是云计算领域一大热词&#xff0c;伴随云原生概念而来的是数字产业迎来井喷、数字变革来临、数字化得以破局以及新一波的技术红利等等。云原生即“云”原生&#xff0c;顾名思义是让“应用”最大程度地利用云的能力&#xff0c;发挥云价值的最佳路径。具体来说&#xff0…

transformers里的AutoTokenizer之返回值token_type_ids(二)

在很多案例中&#xff0c;AutoTokenizer会返回token_type_ids这个结果&#xff1a; token_type_ids的解释&#xff1a; 对于两个句子对来说&#xff0c;上一句都标识为0&#xff0c;下一句都标识为1。

ChatGPT + Stable Diffusion + 百度AI + MoviePy 实现文字生成视频,小说转视频,自媒体神器!(一)

ChatGPT Stable Diffusion 百度AI MoviePy 实现文字生成视频&#xff0c;小说转视频&#xff0c;自媒体神器&#xff01;(一) 前言 最近大模型频出&#xff0c;但是对于我们普通人来说&#xff0c;如何使用这些AI工具来辅助我们的工作呢&#xff0c;或者参与进入我们的生活…

K8s的详细介绍

1.编写yaml文件的方式 2.yaml里面的内容介绍 Pod实现机制&#xff1a;&#xff08;1&#xff09;共享网络&#xff08;2&#xff09;共享存储 共享网络:通过Pause容器&#xff0c;把其他业务容器加入到Pause容器里面&#xff0c;让所有业务容器在同一个名称空间中&#xff0c;…

Linux 基础入门篇

挂载点 先在这块新的存储上做文件系统&#xff0c;但是并不是挂载到全局目录树的根上了&#xff0c;你是想让/home 目录和它关联&#xff0c;所以你需要把它挂载到/home目录上 新的粉色的存储设备上的文件系统挂载在了/home 目录&#xff0c;全局目录树/home就和粉色文件系统的…

一起学算法(二维数组篇)

1.概念定义 1.矩阵的定义 矩阵A(nm)的定义时按照长方形排列的复数或实数集合&#xff0c;其中n代表的是行数&#xff0c;m代表的是列数。如下所示&#xff0c;代表的是一个4x3的矩阵 在Java中&#xff0c;我们可以用A[n][m]来代表一个n*m的矩阵&#xff0c;其中A[i][j]代表的是…

Java如何实现将类文件打包为jar包

目录 将类文件打包为jar包 1.写类文件2.编译3.测试4.打jar包jar包应该怎么打&#xff1f; 1.首先确保你的项目2.选中你的项目,点右键3.选择runnable jar file4.如下图,直接看图5.然后点finish 将类文件打包为jar包 为实际项目写了一个工具类&#xff0c;但是每次使用时都需要…

记录--一个好用的轮子 turn.js 实现仿真翻书的效果

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 国际惯例&#xff0c;官网链接 官网传送门 Github地址 github上有几个demos例子&#xff0c;介绍了基础用法。 我参考官网的例子&#xff0c;写了一个demo示例 安装 turn.js 依赖 jquery 库&#xff0…

C++设计模式之建造者设计模式

C建造者设计模式 什么是建造者设计模式 建造者设计模式是一种创建型设计模式&#xff0c;它是一种将复杂对象的分解为多个独立部分的模式&#xff0c;以便于构建对象的过程可以被抽象出来并独立变化。 该模式有什么优缺点 优点 灵活性&#xff1a;建造者设计模式允许对象的…

Nacos1.4.1集群——服务注册失败的原因

前言&#xff1a; 学习nacos的时候碰到的问题 当你单击启动的时候不会出现问题 命令&#xff1a; 单击&#xff1a; startup.cmd -m standalone 集群&#xff1a; startup.cmd -m cluster 当时当你启动集群的时候他会默认把你本地的ipv6那个地址默认放上出 会导致你本来搭建集群…

牛客网Verilog刷题——VL56

牛客网Verilog刷题——VL56 题目答案 题目 实现4bit无符号数流水线乘法器设计。电路的接口如下图所示&#xff1a; 输入输出描述&#xff1a; 信号类型输入/输出位宽描述clkwireInput1系统时钟信号rst_nwireInput1异步复位信号&#xff0c;低电平有效mul_awireInputsize乘数mu…

【动态规划part16】| 583.两个字符串的删除操作、72.编辑距离

&#x1f388;LeetCode583.两个字符串的删除操作 链接&#xff1a;583.两个字符串的删除操作 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 public int minDistance(String word1, Str…

基于Amoeba读写分离(三十六)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 今天要学的是基于Amoeba读写分离。Amoeba是一个开源的关系型数据库管理系统&#xf…

计网第四章网络层错题

4.1 没有要求结点要相邻&#xff0c;可不可靠主要取决于使用的协议&#xff0c;若使用有连接的 就可靠 2.C 本题易误选B 因为大家以为只能用ipv4 但是有特定的路由器可以连接IPv4和IPv6&#xff0c;所以网络层的协议也可以不同 C 路由器无法处理比网络层更高层次的数据 所以…

Redis集群Cluster搭建

Redis集群Cluster搭建 集群框架1、下载redis2.创建Cluster文件3.修改redis配置文件4.启动redis5.链接各个redis6.分配槽位7.添加从机节点&#xff08;备份Redis&#xff09;8.以集群方式登录9.使用开源Redis可视化客户端链接 集群框架 三个集群节点&#xff0c;每个节点有个副本…