黑马程序员 linux 学习笔记入门部分合集

ubuntu 安装

本课程使用 ubuntu 系统。

ubuntu 官网 - download。

上面会显示有两个版本,每年 ubuntu 发布两个版本,LTS 是长期维护版,所以相对会较稳定。

介绍

Linux 发行版本

不管什么版本,内核都是一样的。

  • RPM based,如 red hat,centos7.
  • dpkg based,如 ubuntu,debian。
  • gentoo,基于源代码编译。

linux from scratch 网站可以帮助我们以源代码的方式写一个自己的操作系统。

live CD

在光盘上的操作系统。比如电脑操作系统崩溃了,我们想把数据拷出来再重装,但是操作系统都崩了怎么用啊。这时就可以用到这种光盘,插进去拷贝。

学习方法

放弃 GUI,使用 CLI。

查询资源:

  • linux 自带:/usr/share/doc 目录下。
  • TLDP
  • CLDP,该项目已终止。

入手准备

软件准备

apt-get

apt-get update //先查看一下服务器上软件的最新版本

image-20230312174202607

和 windows 不同,不是一开始创建的用户就是 admin 的,linux 创建的账户只给你必要的权限。更多权限需要申请。

sudo apt-get update # sudo: 执行此语句的时候,临时把用户设置为 root

sudo apt-get upgrade # 根据之前获取的最新版本,更新软件

一种报错的解决方案:【已解决】Could not get lock /var/lib/dpkg/lock-frontend_could not get lock /var/lib/dpkg/lock-frontend. it_Bungehurst的博客-CSDN博客。

不过前提肯定也是:你当前的用户可以有 Sudo 权限。(super user do)

镜像源

前面 apt-get 的时候我们可知,是通过 http://cn.archive.ubuntu.com/ubuntu 网站获取的最新软件。可能这个网站不适合自己的系统,我们可以更换源。

nano /etc/apt/sources.list ,nano 是编辑器,源在 sources.list 文件中。

image-20230314152538082

jammy 是不同 ubuntu 版本各自的一个代号。

可以百度搜索一些镜像网站替换,一般这类网站是支持大部分版本的。

该文件是只读的,需要 sudo 权限。改好后 write out。

改完后一定重新 update 一下!

软件安装包清除

存放于 /var/cache/apt 下。

archives 文件夹下可见有很多 deb 文件。du -sh . 可以查看大小。

sudo apt-get clean 清除下载的所有软件包。

安装文件

sudo apt-get install 软件名

查看需要安装的软件包名字: apt-cache search 软件名

可以通过正则表达式限定搜索结果,如 search "^mysql" 即只在包名或包描述行首出现 mysql 的软件包。

dpkg 相比 apt-get ,就只下载 deb 包,不会安装软件,也不会连带把关联的依赖软件也下载。

dpkg -l 查看当前安装了哪些包。

dpkg -L 软件包名 查看某一特定包的安装信息。

卸载文件

sudo apt-get remove [--purge] 软件名 ,purge 是把其配置文件也删掉。

当然也可以手动 dpkg -L rm 删掉里面的所有内容,但是这样删不掉 apt-get 里的数据库信息,也就是说 apt-get 里还是记载了这个软件的而实际上已经删除掉了,对应不上。所以不建议这样使用。

WSL

相比 VMWare 创建一整个虚拟机,windows 支持 WSL 软件把我们的 win 系统模拟成 linux 系统。

在 windows 功能中打开 linux 项,在应用商店中安装 ubuntu,重启后打开 ubuntu 就是新的页面。

我们还可以在 windows terminal 中找到 ubuntu。在设置-启动配置文件中可以设置打开时默认就打开 ubuntu。

image-20230315214845754

相比较 VMWare 还是有好处的,比如可以拍摄快照紧急恢复。

登录

Unix 其实是多用户操作系统,每个用户使用 ID PWD 登录。

登录

首先确认自己的机器与某台 Unix 相连(ssh),或者自己的机器本身就是 Unix,通过控制台登录。允许别人远端登录的服务器需要执行 openssh server以前用的是 telnet 和 telnetd,但是这种传输数据方式是补码,不安全。

为了保证安全,账号密码错误之后不会告知具体是账号错了还是密码错了,而且核对账号密码还有一定的延迟时间。

黑马课程使用 finalshell 连接到 VMware 里的 linux 系统,跨越了 vmware 使用会方便很多。

查看 linux 系统的 ifconfig 中的 ens33 inet 项,利用这个 ip 地址实现远程连接。需要先在 linux 中安装 ssh 相关内容。

image-20230315195521818

退出

logout 或 exit 或 ^d.

关机

关机重启需要权限。

shutdown -h nowhaltinit 0 .

重启

reboot init 6 .

修改密码

passwd

Shell

一个到 linux 操作系统的界面,便于我们运行程序。操作系统内核是一个球心,Shell 则是外层的一层球壳(nb)。我们通过 shell 发送指令。

shell 配置在 /etc/passwd 下,每条记录的最后一个字段。使用 more 查看该文件可以看到其信息:

用户名:密码(x 代表有密码):userId:groupId:desc:家目录(该用户初次登录时处于哪个目录):该用户使用的 shell

不同 shell 支持的命令不同,是否支持命令行编辑(如上下键,快捷键),是否支持历史记录(history , !编号!! ),配置文件的设置,环境变量,命令行提示符(prompt string),编程方式等都有不同。现在常用的是 bash。

还有基于文字的图形化 shell,和图形化 shell。

入门

结构

树形结构,没有诸多盘符,所有文件在根目录 / 下。

windows 层级关系用 \ 表示,linux 层级关系还是 / 符号。

命令基础

命令通用语法:command [-option] [parameter] ,options 表示参数细节,parameter 表示具体执行目标。

ls -l /home ,就是以列表形式列出 home 下所有文件。

ls:平铺形式列出当前文件夹下所有文件。

  • options -a: 列出所有文件包括隐藏文件。
  • options -l:每个文件一行,一列表形式展现,并且还会展现每个文件的详细信息(如创建日期)。
  • options -a -l 或 -al 或 -la:同时应用 -a -l。
  • options -h:必须和 -l 一起使用。在以列表形式列出全部文件的前提下,每个文件的文件大小缩写(K M G)。
  • parameter:要列出的目录路径,默认为当前工作目录。

打开系统时默认用户目录为当前工作目录。linux 里是 /home/usrname, windows 里是 c:\user\usrname

pwd:查看当前目录。

cd:进入特定目录。

  • parameter 特定目录地址:进入该路径。 / 开头是绝对路径,没有是相对路径。
  • parameter .:表示当前路径。如 cd ./home
  • parameter … :向上一级路径。
  • parameter ~:进入当前用户的 home 路径。

mkdir:创建目录。必须加参数,表示路径。

  • options -p:如果父路径不存在,是否也新建父路径。-p 表示新建。
  • parameter 特定目录地址:要创建的目录及其地址。

创建文件夹需要权限。因此一定在 home 内创建,在外面创建无法成功。 后面详细介绍权限管控。

touch:创建文件。参数必填,无选项。

ls -l 开头是 - 号的是文件,没有 - 号的是文件夹。

cat:查看文件。参数必填,是要查看的文件的路径和文件名;无选项。

more:同 cat,但是是以分页的方式查询的。空格翻页,more 退出。

cp:复制文件,参数1 2必填。

  • options [-r]:如果复制的是文件夹使用,代表递归。
  • parameters 路径1:要复制的文件或文件夹。
  • parameters 路径2:要复制到的目标文件夹。

mv:移动文件。

  • parameters 路径1:要移动的文件或文件夹。

  • parameters 路径2:要移动到的目标文件夹。如果只写路径,表示移动到该路径下;如果再加文件名,表示移动到该路径下并重命名。

rm:删除文件。

  • options -r:用于文件夹删除。
  • options -f:强制删除,不会弹出提示信息。root 用户会弹。
  • parameters 文件1 文件2 文件n:要删除的文件。

* 是通配符,如 *test 代表以 test 结尾的任何内容。

这里学到了一个小技巧,我的 root 密码不是默认的12334556,但是通过 sudo su 的方式居然登录成功了。

which:查找指令。

上面学到的指令都是以二进制文件形式存放在 linux 中,类似 .exe 文件。我们可以通过 which 查找这些指令。

  • parameters 指令名。如 which ls

find:查找文件。

find dirName -name fileName

可以基于通配符 * 模糊查询。

find dirName -size +|-n[K|M|G]

查找大于|小于 n K|M|GB 的文件。

grep:查找文件中符合字符串或 regex条件的行。

grep [-n] 关键字 文件路径

-n 表示是否显示行号。

关键字因为可能有特殊字符,建议用双引号包裹。

wc:统计文件中的行数,单词数量等信息。

wc [-c -m -l -w] fileName

-c:统计 bytes 数量。

-m:统计字符数量。

-l:统计行数。

-w:统计单词数。

管道符 |:管道符左边的结果作为右边的输入。 options 输入或 parameters 输入都可以。

cat abc.txt | grep abc1 .

grep 的文件路径可以由管道符输入。比如上例为:查找 abc.txt 中的内容 abc1.

或者如 ls -l | grep abc ,只查看名称带 abc 的文件的详细信息。

ls -l | wc -l 统计文件数。

echo :输出。如 echo 'hello world' ,然后就会输出 hello world。

如果加反引号 ` 输出,其中的内容会以命令形式执行而不是普通字符。如 echo `pwd` .

重定向符 >:把左侧内容覆盖写入右侧。如 echo 'hello world' > abc.txt ,就把 abc.txt 的内容覆盖为这一行:hello world 了。

>> :在末尾追加写入。

tail :查看文件尾部内容。

  • options [-f]:表示持续跟踪,会实时更新。
  • options [-num] :表示查看末尾的行数,默认10行
  • parameters 文件路径。

vi 编辑器

linux 中最经典的文本编辑器。

vim 兼容 vi,还可以编辑 shell 程序,可以通过颜色辨别语法正确性。

有三种模式:

命令模式 command mode :所按的键都是命令。不能编辑文本。

输入模式 insert mode :可编辑文本的模式。

底线命令模式 last line mode : 以 : 开始,通常用于保存、退出文件。

image-20230317230337618

vi 文件路径 .文件已存在则打开,不存在则新建。最下面一行显示了是 new file 还是 open file。

按 i 进入输入模式。按 : 进入底线命令模式。两种模式都是按 esc 回到命令模式。

image-20230318154828047

命令模式有一些快捷指令,如 yy 复制当前行,p粘贴,dd 删除,u 撤销。

image-20230318155043706

底线模式 w 保存写入,q 退出当前文件。q! 强制退出。

set nu:显示行号。

set paste:设置粘贴模式。开启后,输入模式下粘贴的内容会原封不动地粘贴。

用户

root

Linux 中权限最大的用户。我们注册的那个账户不是 root 用户,权限不足,比如不能在根目录下新建文件。

每个用户只有在自己的 home 下有最大权限,其他地方只有只读、执行权限,无修改权限。

可以通过 su [-] root (好像默认密码 1234556,但是我的不是,不知道是新版本的问题还是设置虚拟机时没注意)或 sudo su [-] [root] 登录,默认切换到 root 用户,可换用户名。我们已经知道可以通过 sudo 命令临时获取权限。

exit 或 ctrl+d 返回上一个用户。普通用户切换用户需要密码,root 切换不用。

sudo

root 并不安全,还是 sudo 执行单条指令较为安全。当然用户需要有 sudo 权限才可以使用。

sudoers 文件编辑

每隔一段时间使用 sudo 命令就需要重新输入密码。可以配置使得不用手动输入吗?

有个 sudoers 文件,存放于 etc/sudoers 下。可以直接通过 sudo visudo 编辑。

打开后还是通过 nano 编辑器编辑。但区别在于,修改的内容不会直接修改在原文件中,而是先保存在 tmp 文件中。

然后系统会检测 sudoers 文件的语法,语法错误会问你是否保存,或重新修改。一定不要保存错误的修改!!! 因为如果 sudoers 文件出错了,以后就使用不了 sudo 命令了,而且想再修改 sudoers 文件也要用到 sudo 命令,也改不了了。

添加一句:

%adm ALL=(ALL)NOPASSWD:ALL ,adm 是用户名。意为 adm 组里的所有用户使用 sudo 的时候都不需要密码,而且对于任何指令都是如此。

用户和用户组

linux 中可以配置用户,配置用户组,每个用户可以在多个组里。

可以针对某一用户设置权限,也可以针对用户组。

用户

useradd [-g -d] userName

-g:指定所在组。不指定会自动创建同名组并加入。如果已经存在同名组,必须加 -g。

-d:指定用户 home 路径,不指定自动在 /home/userName 下。

userdel [-r] userName

-r:删除 home 目录。

id [userName] 查看用户,默认看自己。

用户组

groupadd groupName

groupdel groupName

usermod -aG userName groupName

使用 getent passwd 或者查看 /etc/passwd 内容,逐行显示:

用户名:密码(x 代表有密码):userId:groupId:desc:家目录(该用户初次登录时处于哪个目录):该用户使用的 shell

getent group 查看组信息。

权限

ls -l 文件列表也可以查看权限。

image-20230319003910043

第一列:文件的权限控制信息。

第三列:所属用户。

第四列:所属用户组。

文件权限控制信息10位,分别的意义:

image-20230319004223122

软链接之后再展开说~

r:读。w:写(增、删、改名文件夹,在文件夹中创建文件)。x:执行(cd 此文件夹)。

chmod 改权限

chmod [-R] 权限 文件或文件夹

-R 表示对文件夹内所有子内容都应用这个权限。

权限形如 u=rwx, g=rx, o=x

当一个文件权限为 rwxrwxrwx 时,这个文件在 ls -l 中会以红色显示。

快捷修改权限方法:

image-20230319140827152

比如我们想把一个文件设置为 rwx rx x,即二进制 7 5 1,chmod 715 test.txt .

chown 改权限控制

直接把一个文件或文件夹改主人。

chown [-R] [user]:[userGroup] 文件或文件夹 ,-R 同样表示迭代。

chown usr test.txt

chown :usrGroup test.txt

不过,普通用户没有权限执行这条指令,只有 root 用户可以执行。

实用操作

快捷键

输错了命令,或程序想提前停止,可以按下 ctrl+c 强行停止。

ctrl+d 可以退出当前账户登录,或退出当前程序专属页面。

history 查看历史输入的命令。

! 可以自动匹配最近一次输入的,匹配前缀的内容。如输入 !p ,最近一次输入的 p 开头的命令是 python ,就会执行 python

不过这个从下往上匹配并不那么方便。如果找远一点的历史记录,可以 ctrl+r ,类似我们平时使用的 ctrl+f。

光标移动:ctrl+a 是 home,ctrl+e 是 end,ctrl+← 是光标向左跳一个单词,ctrl+→ 是向右跳一个单词。

ctrl+l 或 clear 清屏。

软件安装

安装包,如 windows 常用下载 .exe 文件或 .msi 文件,点击安装。mac 常用 dmg pkg 文件。

linux 是 rpm, deb 文件,centos 通过 yum 安装,ubuntu 通过 apt 安装。

yum

yum [-y] [install | remove |search] fileName

-y:无序确认,直接安装。

yum 需要联网,需要 root 或 sudo 权限。

apt

apt [-y] [install | remove |search] fileName

systemctl

linux 很多软件使用 systemctl 启动,停止,开机自启。

systemctl start | stop| status | enable | disable 服务名

enable disable 用于调整是否开机自启。

服务例如:

  • NetworkManager 主网络服务

  • network 副网络服务

  • firewalld 防火墙

  • sshd, ssh 服务(finalshell 用于远程控制 linux 的服务)

status 有 active 和 inactive。

很多系统或第三方软件是自动继承到 systemctl 中的。不过也有很多没有,后面再说对于这类软件要如何处理。

软链接

把文件、文件夹链接到其他位置,类似 windows 的快捷方式。

ln -s 被链接的文件或文件夹 要链接到的目的地

日期和时区

date [-d] [+格式化字符串]

image-20230319160307898

date "+%H-%M-%S"

-d 可以进行日期计算,如:

date -d "-1hour" "+%H-%M-%S" ,在当前时间基础上-1.

image-20230319160715459

修改时区

先删掉现在的时区文件。

rm -f /etc/localtime

然后从时区文件中挑选上海,创建软链接。

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ntp 自动校准系统时间

首先 ntp 程序需要安装。

然后 systemctl start ntpd system enable ntpd ntpd 会自动联网帮我们校准时间。

这里好像 ubuntu 系统启动 ntp 服务需要输入的是 ntp?还是说,这是新版 ntp 的设定?反正我执行的代码是systemctl start ntp

手动更新时间:ntpdate -u ntp.aliyun.com (ntpdate 好像也要更新)

网络传输

IP

IP 地址是每台联网的计算机独有用于标志自己,与其他计算机通信使用的。

有 V4 和 V6 两个版本,V6 不常用。

IP 地址是四个 0~255 的数字的组合。可以通过 ifconfig 查看(查看不了需要安装 net-tools),主网卡:ens33 中的 inet 选项即为 IPV4 地址。lo 网卡是本地回环的网卡,virbr0 是虚拟机专用的网卡。

127.0.0.1:代指本机。

0.0.0.0:代指本机;或在端口绑定中确定绑定关系;或在一些 IP 限制中表示全部 IP 地址放行。

主机

除了 IP 地址,每台计算机有一个自己的名字,叫主机名。linux 输入 hostname 查看。

image-20230320103048195

可以通过 hostnamectl set-hostname newName 来修改当前主机名,需要重新登陆 finalshell 才能查看。

域名解析

我们知道一般我们访问网站是通过更方便记忆的域名(如 www.baidu.com )来访问的。

域名和 IP 之间通过 DNS 系统映射。先查看本地 DNS 库是否有记录要访问的域名,如果没有再联网到 DNS 公开服务器寻找该地址。

windows 本地域名存储文件在:C:\Windows\System32\drivers\etc\hosts ,linux 在 /etc/hosts

当我们在 windows 本地设置了 linux IP 地址和域名的映射,通过 finalshell 连接时就可以不用输入 IP 地址,而是输入主机名即可。

配置固定 IP 地址

linux 的 IP 地址是通过 DHCP 动态获取的,这样我们配置的域名映射随着更新就无法应用了,需要频繁更改。

VMWare WorkStation -编辑-虚拟网络适配器-VMnet8,子网设置为 192.168.88.0,子网掩码为 255.255.255.0,NAT 设置中为 192.168.88.2

image-20230320105512706

这里 ubuntu 系统不太一样,是在 /etc/network/interfaces 中配置。

而我们如果使用的是桌面版 ubuntu,也不是在这里配置。参考这篇文章:Ubuntu Server20.04 静态ip配置(netplan)_Brady-wdh的博客-CSDN博客

ethernets: ens33: # 配置的网卡名称,可以使用ifconfig -a查看本机的网卡 dhcp4: no # 关闭动态IP设置,因为要设置固定IP addresses: [192.168.88.130/24] # 要设置为的固定IP,后面的24为子网掩码的位数 gateway4: 192.168.88.2 # 要设置的网关地址 nameservers: addresses: [192.168.88.2,8.8.8.8] # 要设置的DNS地址 ———————————————— 版权声明:本文为CSDN博主「Brady-wdh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_45949008/article/details/118862854

最后 systemctl restart network ,netplan 是: netplan generate 为渲染器生成所需配置,netplan apply 为渲染器应用配置。

之后, ifconfig 就一直是 192.168.88.130 固定不再改变。

ping

通过 ping 测试服务器是否可连通。

ping [-c num] IPAddress ,-c 是限定 ping 几次,如果不限定则无限检查。

这里我们可以先在 vim /etc/resolv.conf 中添加 nameserver 8.8.8.8 ,这是一个 Google 提供的免费 DNS服务器 的IP地址,应该能解决如 baidu 等域名的映射。

如果无法 ping 通:显示 unreachable.

wget

非交互式下载工具。

wget [-b] url ,-b 是后台下载,并把下载信息保存到当前工作目录下的 wget-log 文件中。可以通过 tail -f 持续跟踪。

curl

发送 http 请求,可获取信息或下载文件。

curl [-O] url

-O:下载文件。

比如 curl cip.cc ,该网站会告诉我们本机的公网 IP 地址。

端口

物理端口:可见,如 USB 接口。

虚拟端口:计算机内部端口,不可见,操作系统用于和外部交互。

image-20230320181540486

IP 地址是一个小区地址,程序是住户,进程就是门牌号用于找到各个用户。

image-20230320183846899

linux 使用 nmap 指令查看指定主机对外暴露端口情况。

nmap 被查看的 IP

22:ssh 端口。finalshell 远程连接会使用。

netstat:查看端口占用情况。

netstat -anp | grep portNo

进程管理

为了方便管理,操作系统给运行中的程序分配进程 ID。

ps [-e -f] 查看进程信息。

-e:查看全部进程。

-f:查看全部信息。

  • PPID:父进程 ID。

  • C:CPU 占用率。

  • STIME:启动时间。

  • TTY:启动此进程的终端序号,?表示不是终端启动的。

  • TIME:累计使用 CPU 的时间。

  • CMD:启动命令或路径。

关闭进程:kill [-9] PID ,-9 强制关闭。不强制关闭的话,只是发送关闭请求,并不一定关闭。比如 tail 收到 kill 命令后会自行 terminated,但强制关闭就是被 killed 了。

主机状态监控

查看系统资源占用

top 命令,5s 一刷新,类似任务管理器。

image-20230323184326044

image-20230323232340079

image-20230323233928213

image-20230323234504022

查看磁盘使用情况

df [-h] ,-h 是以 KMG 单位显示。

查看磁盘速率

iostat [-x] [num1] [num2] ,-x 显示更多信息,num1 刷新间隔,num2 刷新次数。

查看网络状况

sar,该指令比较复杂。因此应对网络统计,我们只记一个固定的语法:

sar -n DEV num1 num2 ,-n 指查看网络,DEV 只查看网络接口。num1 刷新间隔,num2 刷新次数。

环境变量

我们知道指令就是一个个可执行程序,which 可以查到。

但是为什么指令不用跳转到特定目录下就能执行?像 windows 一样,得益于环境变量。

环境变量是一种键值对型结构,记录了系统运行中需要的一系列关键信息。可以使用 env 指令查看。

其中的 PATH 中存储了一系列指令搜索路径。

环境变量开头加 $ 符号,可以获取环境变量的值。可以和 echo 结合使用。如:echo ${PATH}ABC .

如此,我们可以把自己的程序添加到环境变量中,或把程序放到 PATH 路径下。

设置环境变量 临时生效:export virableName virableValue

针对当前用户 永久生效:~/bashrc 文件中。

针对所有用户 永久生效:/etc/profile 中。

可以通过 source 配置文件 或重启 finalshell 立刻生效。

配置 PATH :echo PATH , export PATH=$PATH:路径 ,或者把后面这句话添加到用户或系统环境变量中。

这里先写 $PATH: ,是为了和之前的 PATH 值做拼接,一定不能忽略这一步。

finalshell 传输文件

右键文件就可以把文件从虚拟机下载到本地。用哪个账号登录,看到的就是哪个账号可以看到的内容。

上传:本地文件直接拖拽到 finalshell 中。

或者下载 lrzsz 指令。下载:sz 文件 ;上传:rz ,随机就会自动弹出文件框供选择。

不过上传大文件 拖拽效率 > rz 。

压缩 解压

image-20230324012526297

tar:简单组装文件,大小上压缩前后无大区别。

tar.gz:使用了压缩算法,大大缩小。

tar [-c -v -x -z -C -f] 可以解压或压缩。

-c:压缩。

-v:显示进度。

-v:解压。

-z:加了是 gzip 模式,不加是 tarball 模式。

-C:解压目的地。

-f:指代被创造/解压的文件。

指令可以合起来写,不过-z 必须在开头,-f 必须在最后。如 tar -zcvf 1.tar.gz 1.txt 2.txt 3.txt

-C 要单独写。 tar -zxvf test.tar.gz -C /home/jingqing

zip 是压缩,可以加 -r 代表递归处理文件夹。zip -r test.zip /test 1.txt

unzip 解压 zip 文件,-d 指定地址类似 -C。unzip test.zip -d /home/jingqing

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“遥感+”蓝碳储量估算、红树林信息提取与论文写作

详情点击链接:“遥感”蓝碳储量估算、红树林信息提取与论文 一,光谱遥感数据及预处理 .1高光谱遥感数据 高光谱分辨率遥感是用很窄而连续的光谱通道对地物持续遥感成像的技术。在可见光到短波红外波段其光谱分辨率高达纳米数量级。高光谱图像数据…

Linux-Vim

一、Vim 配置 ​ vim界面打开以后很丑就不提了,关键有很多基本功能没有办法实现,所以需要自己配置,如果是linux系统,那么应该找到 /usr/share/vim/.vimrc​ 如果是windows装完git以后会自动一个vim,此时应该找到 Gi…

电子招标采购系统—企业战略布局下的采购寻源

​ 智慧寻源 多策略、多场景寻源,多种看板让寻源过程全程可监控,根据不同采购场景,采取不同寻源策略, 实现采购寻源线上化管控;同时支持公域和私域寻源。 询价比价 全程线上询比价,信息公开透明&#xff…

vue + table原生实现表格单元列列宽可重置

const tableMixin {data() {return {dragState: {}, // 记录子表的列宽移动的一些数值dragging: false // 子表是否在重置列宽}},methods: {handleMouseMove(event) {let target event.targetwhile (target && target.tagName ! TH) {target target.parentNode}if (…

算法竞赛ICPC、CCPC、NIO、蓝桥杯、天梯赛

算法竞赛前言一、为什么学习算法竞赛二、学习算法的阶段三、算法竞赛具体学习内容1、基础数据结构1.1、链表1.1.1、动态链表1.1.2、静态链表1.1.3、STL list1.2、队列1.2.1、STL queue1.2.2、手写循环队列1.2.3、双端队列和单调队列1.2.4、优先队列1.3、栈1.3.1、STL stack1.3.…

23 - x的平方根,快速幂,超级次方

文章目录1. x的平方根2. 快速幂3. 超级次方1. x的平方根 二分查找 class Solution { public:int mySqrt(int x) {int left 1, right x;while(left < right){int mid left (right - left) / 2;if(mid > x / mid){right mid - 1;}else if(mid < x / mid){left mi…

OpenShift 4 - Red Hat 是如何对容器镜像的安全风险进行评估分级的

《OpenShift / RHEL / DevSecOps 汇总目录》 文章目录RedHat 对 CVE 的风险级别的评级通用漏洞评分系统 CVSS红帽严重性分级RedHat 对容器镜像的整体风险的分级云原生应用的运行载体是容器镜像&#xff0c;因此容器镜像的安全便是云原生应用安全的关键因素。为此&#xff0c;Re…

联合解决方案|亚信科技AntDB携手蓝凌软件,助推企业数字化办公转型升级

随着企业数字化转型的深入&#xff0c;企业对于协同办公、移动门户、数字运营、智能客服等方面的需求越来越高&#xff0c;数智化正成为催生新动能和新优势的关键力量。数字化的办公平台可以帮助企业实现各类信息、流程的集中化、数字化和智能化管理&#xff0c;为企业管理者提…

老板,你的绩效管理该升级了!

中小企业的绩效考核&#xff0c;一直是一个备受关注的话题。虽然传统的绩效考核理论已经非常成熟&#xff0c;但是在实际应用中&#xff0c;我们往往会遇到各种各样的问题。因此&#xff0c;在选择绩效考核工具和方法时&#xff0c;我们应该注重实用性&#xff0c;不断探索新的…

32位单片机MM32G0140免费申请样品及开发板

灵动微MM32G系列MCU搭载ArmCortex-M0或安谋科技“星辰”STAR-MC1处理器&#xff0c;率先推出的产品支持64KB到128KB Flash存储范围&#xff0c;提供从20脚到64脚封装选项&#xff0c;适用于广泛的智能工业与电机&#xff0c;物联网&#xff0c;智能家居和消费类等应用。其中&am…

比亚迪车载Android开发岗三面经历~

前言 首先&#xff0c;我想说一下我为什么会想去比亚迪这样的车企做车载Android开发。我是一名有5年经验的Android开发工程师&#xff0c;之前一直在互联网软件公司工作&#xff0c;做过移动端App和IoT产品的开发。但我一直对汽车领域很感兴趣&#xff0c;也希望自己的技术能应…

【python+requests】接口自动化测试

这两天一直在找直接用python做接口自动化的方法&#xff0c;在网上也搜了一些博客参考&#xff0c;今天自己动手试了一下。 一、整体结构 上图是项目的目录结构&#xff0c;下面主要介绍下每个目录的作用。 Common:公共方法:主要放置公共的操作的类&#xff0c;比如数据库sql…

前端算法codewhy第一章:队列

目录 认识队列 生活中的队列 开发中队列的应用 队列类的创建 队列的常见操作 击鼓传花 import ArrayQueue from "./01_实现队列结构Queue";function hotPotato(names: string[], num: number): number {if (names.length 0) return -1;// 1.创建队列结构const queue…

数据库安装与使用、mysql、sqlite、mongodb

一、MongoDB MongoDB Server 安装 优秀文章&#xff1a; link1 link2 MongoDB 是一个文档数据库&#xff0c;旨在简化开发和扩展。 下载 官网(社区版) &#xff1a;https://www.mongodb.com/try/download/community 下载完后一路安装即可。 添加环境变量 开启 mongodb服务…

[Linux]环境变量

一.什么是环境变量 为了满足不同的运行场景&#xff0c;操作系统预先设置了一大批全局变量&#xff0c;这种可以指定操作系统运行环境的变量就是环境变量。 我们平常使用的指令本质上也是用C语言实现的一个个小程序&#xff0c;但是我们在执行我们自己的可执行程序时往往是类…

go调用docker远程API(二)-docker API 的容器操作

文章目录1 获取容器列表2 查看指定容器信息3. 查看容器日志4 创建容器4.1 简单使用4.1.1 语法4.1.2 完整示例4.2 端口映射4.2.1 语法4.2.2 完整示例4.3 挂载本机目录/文件4.3.1 语法4.3.2 完整代码5. 启动容器6 停止容器7 删除&#xff08;已停止的&#xff09;容器8 进入容器执…

线程池的7种创建方式

文章目录普通方式创建线程存在的问题什么是线程池线程池的好处线程池设计思路线程池相关类的继承关系线程池的创建方式固定容量线程池——FixedThreadPool相关构造方法示例运行结果缓存线程池——CachedThreadPool相关构造方法示例运行结果单线程线程池——SingleThreadExecuto…

关于国产化系统银河麒麟(Kylin)的问题记录--持续更新

kylin 镜像 &#xff1a; Kylin-Server-10-SP2-x86-Release-Build09-20210524 Kylin-Server-10-SP1-Release-Build20-20210518-x86_64 1.ansible 模块无法使用yum 报错&#xff1a;"msg": "The Python 2 bindings for rpm are needed for this module. If you r…

Dart语言操作符?和!的用法

一.基本使用 1. ? 操作符跟在类型后面&#xff0c;表示当前变量可为null。 int a null; //这句代码在有空安全时&#xff0c;编译会提示错误如果想给一个变量赋值null要如何处理呢&#xff1f;只需要在类型 后面添加操作符&#xff1f;即可&#xff0c;eg: int? a null…

UWB高精度定位系统源码,工业安全定位系统源码

基于VueSpring boot前后端分离架构开发的一套UWB高精度定位系统源码。有演示。 文末获取联系 系统采用UWB高精度定位技术&#xff0c;可实现厘米级别定位。UWB作为一种高速率、低功耗、高容量的新兴无线局域定位技术&#xff0c;目前应用主要聚焦在室内外精确定位。在工业自动化…