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

news/2025/2/21 10:42:25/

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.ppmy.cn/news/35815.html

相关文章

从零开始学Python第08课:常用数据结构之列表-1

在开始本节课的内容之前,我们先给大家一个编程任务,将一颗色子掷6000次,统计每种点数出现的次数。这个任务对大家来说应该是非常简单的,我们可以用1到6均匀分布的随机数来模拟掷色子,然后用6个变量分别记录每个点数出现…

【网络分析】并查集/树上差分

2069. 网络分析 文章目录题目描述解题思路代码实现题目描述 给出一个 nnn个孤立点的图,每个点上的权值都是 000,进行 mmm 次操作 操作 1 :把两个点所在的连通块合并起来 操作 2 :向某个点所在的连通块的所有点累加一个值 n≤104,m…

如何应对上手英文工具站的 8 大误区

这次给大家带来程序员如何应对上手英文工具站的 几点误区,帮助大家跳出程序员思维,一起出海软件掘金 ~ ----- 小小分割线 ----- 误区一:以为参加了这一次航海,就可以赚到美刀。这样想,往往很难达到预期。 我的看法&…

济南高新技术企业认定条件

济南高新技术企业认定条件2022 (一)企业申请认定时须注册成立一年以上; (二)企业通过自主研发、受让、受赠、并购等方式,获得对其主要产品(服务)在技术上发挥核心支持作用的知识产权…

跨域常见的解决方案

目录 一:什么是跨域 二:为什么会跨域 三:跨域的解决方案 1.代理服务器 1.1.生产环境 1.2.开发环境 2.JSONP 3.CORS 一:什么是跨域 跨域是指浏览器在向一个服务器发送请求时,该请求的地址与当前页面的地址不同…

数据结构——AVL树

一、AVL树 1.概念 二叉搜索树虽然可以缩短查找效率,单如果数据有序或解决有序,二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,发明了一种解决上述问题的方法:当向二叉搜索树…

05期:面向业务的消息服务落地实践

这里记录的是学习分享内容,文章维护在 Github:studeyang/leanrning-share。 我们在上次分享中聊到了领域驱动设计和微服务,在 DDD 中有一个术语叫做领域事件,例如订单模型中的订单已创建、商品已发货。领域事件会触发下一步的业务…

【内网安全】 横向移动PTH哈希PTT票据PTK密匙Kerberos密码喷射

文章目录章节点域横向移动-PTH-Mimikatz&NTLM概述1、Mimikatz2、impacket-at&ps&wmi&smb域横向移动-PTK-Mimikatz&AES256概述域横向移动-PTT-漏洞&Kekeo&Ticket概述1、漏洞-MS14-068(webadmin权限) 利用漏洞生成新用户(高权限)的票据2、kekeo(高权…