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

❀My学习Linux命令小记录(12)❀

目录

❀My学习Linux命令小记录(12)❀

46.arp指令

47.tcpdump指令

48.chmod指令

49.chown指令

50.bash调用脚本指令

shell介绍

shell脚本的组成部分

脚本执行方式

检查脚本语法

bash之变量

变量的种类:根据生效的范围不同来区分

bash的配置文件

profile类:为交互式登录的shell提供配置

bashrc类:为非交互式登录的shell提供配置

bash的IO重定向

bash算数运算:bash对数字进行隐式的类型转换

bash条件测试

bash的测试类型:

文件测试:测试文件存在与否,属性信息等

bash的逻辑运算:true(0)、false(1-255)

编写脚本backup.sh,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中

编写脚本nologin.sh和login.sh,实现禁止和允许普通用户登录系统

编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值                                                                  


❀My学习Linux命令小记录(12)❀

46.arp指令

功能说明:arp 命令用于显示和修改 IP 到 MAC 转换表

(ps.arp 命令是 Address Resolution Protocol,地址解析协议,是通过解析网络层地址找寻数据链路层地址的一个网络协议包中极其重要的网络传输协议。而该命令可以显示和修改 arp 协议解析表中的缓冲数据。它将 IP 地址映射到物理 MAC 地址。)   

基本语法:arp(选项)(参数)

选项:

-a 主机 :显示 arp 缓冲区的所有条目

-H 地址类型 :指定 arp 指令使用的地址类型;

-d 主机 :从 arp 缓冲区中删除指定主机的 arp 条目

-D:使用指定接口的硬件地址;

-e:以 Linux 的显示风格显示 arp 缓冲区中的条目;

-i 接口 :指定要操作 arp 缓冲区的网络接口;

-s 主机 MAC 地址 :设置指定的主机的 IP 地址与 MAC 地址的静态映射

-n:以数字方式显示 arp 缓冲区中的条目;

-v:显示详细的 arp 缓冲区条目,包括缓冲区条目的统计信息;

-f 文件 :设置主机的 IP 地址与 MAC 地址的静态映射。

实例:

# arp -a  #显示系统的 ARP 表

# arp -v  #显示arp 缓冲区内容

#添加静态 arp 映射

arp -s IP MAC-ADDRESS

arp -s 192.168.1.1 00:b1:b2:b3:b4:b5  

#删除 arp 缓存条目

arp -d 192.168.1.1

47.tcpdump指令

功能说明:一款sniffer工具,是Linux上的抓包工具,嗅探器

(ps.tcpdump命令是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。)

基本语法:tcpdump(选项)

选项:

-a:尝试将网络和广播地址转换成名称;

-c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作;

-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;

-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;

-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;

-e:在每列倾倒资料上显示连接层级的文件头;

-f:用数字显示网际网络地址;

-F<表达文件>:指定内含表达方式的文件;

-i<网络界面>:使用指定的网络截面送出数据包;

-l:使用标准输出列的缓冲区;

-n不把主机的网络地址转换成名字

-N:不列出域名;

-O:不将数据包编码最佳化;

-p:不让网络界面进入混杂模式;

-q :快速输出,仅列出少数的传输协议信息;

-r<数据包文件>:从指定的文件读取数据包数据;

-s<数据包大小>:设置每个数据包的大小;

-S:用绝对而非相对数值列出TCP关联数;

-t:在每列倾倒资料上不显示时间戳记;

-tt: 在每列倾倒资料上显示未经格式化的时间戳记;

-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型;

-v详细显示指令执行过程

-vv更详细显示指令执行过程;

-x:用十六进制字码列出数据包资料;

-w<数据包文件>:把数据包数据写入指定的文件。

实例:

# tcpdump   #直接启动tcpdump将监视第一个网络接口上所有流过的数据包

# tcpdump -i eth0   #捕获指定网络接口的所有数据包

# tcpdump udp port 123   #对本机的udp 123 端口进行监视 123 为ntp的服务端口

# tcpdump -i any port 80 -A   #抓取80端口的HTTP报文,以文本形式展示

# tcpdump ip and not net localnet   #打印所有源地址或目标地址本地主机的IP数据包(如果本地网络通过网关连到了另一网络,则另一网络并不能算作本地网络。)

# tcpdump host 192.168.1.1   #捕获指定主机的数据包

# tcpdump src port 80 or dst port 80   #捕获源或目标端口为80的数据包

# tcpdump -X   #显示数据包的内容(以16进制和ASCII形式)

# tcpdump -i eth0 -w capture.pcap   #将捕获的数据包保存到文件中

# tcpdump -r capture.pcap   #从保存的文件中读取数据包进行分析

# tcpdump -v   #显示捕获的数据包的包头信息

# tcpdump -vv   #显示更详细的包头信息

# tcpdump -i eth0 -n 'tcp port 80'   #捕获并显示特定协议的数据包(例如,只显示HTTP流量)

48.chmod指令

功能说明:用来变更文件或目录的权限

(ps.chmod命令 用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。)

权限范围的表示法如下:

u User,即文件或目录的拥有者;

g Group,即文件或目录的所属群组;

o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;

a All,即全部的用户,包含拥有者,所属群组以及其他用户;

r 读取权限,数字代号为“4”;

w 写入权限,数字代号为“2”;

x 执行或切换权限,数字代号为“1”;

- 不具任何权限,数字代号为“0”;

s 特殊功能说明:变更文件或目录的权限。

基本语法: chmod(选项)(参数)

选项:

u  # 操作对象简称,用户user,文件或目录的所有者。

g  # 操作对象简称,同组用户group,文件或目录所属群组

o  # 操作对象简称,其它用户others

a  # 操作对象简称,所有用户all,系统默认使用此项

+  # 权限操作符,添加某些权限

-  # 权限操作符,取消某些权限

=  # 权限操作符,设置文件的权限为给定的权限

r  # 权限设定(英文),表示可读权限

w  # 权限设定(英文),表示可写权限

x  # 权限设定(英文),表示可执行权限

-  # 权限设定(英文字符),表示没有权限

X  # 权限设定,如果目标文件是可执行文件或目录,可给其设置可执行权限

s  # 权限设定,设置权限suid和sgid,使用权限组合“u+s”设定文件的用户的ID位,“g+s”设置组ID位

t  # 权限设定,只有目录或文件的所有者才可以删除目录下的文件

-c或——changes    # 效果类似“-v”参数,但仅回报更改的部分,如果文件权限已经改变,显示其操作信息;

-f或--quiet或——silent # 操作过程中不显示任何错误信息;

-R或——recursive  # 递归处理,将指令目录下的所有文件及子目录一并处理;

-v或——verbose    # 显示命令运行时的详细执行过程

--reference=<参考文件或目录> # 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;

<权限范围>+<权限设置> # 开启权限范围的文件或目录的该选项权限设置;

<权限范围>-<权限设置> # 关闭权限范围的文件或目录的该选项权限设置;

<权限范围>=<权限设置> # 指定权限范围的文件或目录的该选项权限设置;

--help    # 显示帮助信息

--version # 显示版本信息

知识扩展和实例:

Linux用户分为:拥有者、组群(Group)、其他(other),Linux系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及root的相关信息, 都是记录在/etc/passwd文件中。每个人的密码则是记录在/etc/shadow文件下。 此外,所有的组群名称记录在/etc/group內!

linux文件的用户权限的分析图

  -rw-r--r--   1 user  staff   651 Oct 12 12:53 .gitmodules

# ↑╰┬╯╰┬╯╰┬╯

# ┆ ┆  ┆  ╰┈ 0 其他人

# ┆ ┆  ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ g 属组

# ┆ ╰┈┈┈┈ u 属组

# ╰┈┈ 第一个字母 `d` 代表目录,`-` 代表普通文件

例:rwx rw- r--

r=读取属性  //值=4

w=写入属性  //值=2

x=执行属性  //值=1

# chmod u+x,g+w abc.txt # 为文件abc.txt设置自己可以执行,组员可以写入的权限

# chmod u=rwx,g=rw,o=r abc.txt  #给文件abc.txt设置权限,使用者权限为rwx即可读可写可执行,组员权限可读可写不可执行,其他人权限只可读

# chmod 764 abc.txt  #为文件abc.txt增加权限764,使用者权限7(4+2+1)读可写可执行,组员权限6(4+2)可读可写不可执行,其他人权限4(4)只可读

# chmod a+x abc.txt    # 对文件abc.txt的u,g,o都设置可执行属性

将/home/wwwroot/里的所有文件和文件夹设置为755权限

①# chmod -R 755 /home/wwwroot/*

②# cd /home/wwwroot

# chmod -Rv 755 *     #注意:“*”表示通配符,指的是所有文件和文件

# sudo chmod o+rw /shared  #设置文件夹权限以保证其余用户可以访问它

49.chown指令

功能说明:用来变更文件或目录的拥有者或所属群组

(ps.chown命令 改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符

只有文件主和超级用户才可以便用该命令。)

语法:chown(选项)(参数)

选项:

-c或——changes:效果类似“-v”参数,但仅回报更改的部分;

-f或--quite或——silent:不显示错误信息;

-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;

-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;

-v或——version:显示指令执行过程;

--dereference:效果和“-h”参数相同;

--help:在线帮助;

--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;

--version:显示版本信息。

实例

# chown -R rosy /usr/meng  #将目录/usr/meng及其下面的所有文件、子目录的文件主改成 rosy

50.bash调用脚本指令

编程语言分为两种

过程式:以指令为中心,数据服务于指令

对象式:以数据为中心,指令服务于数据

shell介绍

shell是一个用C语言编写的程序,它是用户使用Linux系统的窗口,一个桥梁,起到人机交互的作用。

shell既是一种命令语言,又是一种简单的程序设计语言,为什么说简单,因为有很多复杂的工作不用Shell去做。

shell本身是一种应用程序,运行与内核之上,这个应用程序为提供了一个界面,用户可通过这个界面访问操作系统内核的服务。shell是Linux系统内嵌的,安装操作系统之后看到的界面就是一个shell程序提供的界面。

shell程序: 是一个过程式的解释器,把源代码翻译成机器语言,然后执行,对于过程式语言来讲,是一行一行翻译并执行的;

shell脚本的组成部分

shell程序开头的环境指定:称之为shebang,如下:

#!/bin/bash

#!/bin/python

#!/bin/perl

shebang是告诉操作系统内核通过哪一个解释器来执行当前脚本;

#:行首为#号则为注释行,额外的解释信息

第一个脚本

#!/bin/bash

echo "Hello World !!!"

脚本执行方式

需给予脚本执行权限

# chmod +x hello.sh

通过脚本文件所在绝对路径进行执行

# /root/hello.sh

直接运行解释器,将脚本作为解释器的参数来执行

# sh hello.sh

检查脚本语法

bash -n :测试语法是否正确

bahs -x :查看脚本执行过程

bash -xv 更详细的查看脚本执行过程

例:bash -x hello.sh

bash之变量

变量=变量名+指向的内存空间

将数据存放于内存中,为了方便使用,为这段数据取了个名字,使用时,直接调用变量名,系统会根据变量名指向的数据位置将数据提取,进行使用。

变量赋值:就是将数据存储于这个变量名指向的内存空间的过程

变量的类型:定义数据存储的格式

①字符型

②数值型整数型浮点型

对于编程语言来说变量还分为:强类型和弱类型,bash为弱类型变量语言,如果没有明确表明,bash把所有变量统统视为字符型,而当我们运算时,bash会自动将变量值转为数值型。bash不支持浮点型,除非借助外部工具。

bash中的变量无需事先声明,随用随时到内存空间中定义。

变量的种类:根据生效的范围不同来区分

本地变量:范围是当前shell进程

环境变量:范围是当前shell进程和子shell进程

局部变量:范围是当前shell进程某个代码块(通常指函数)

位置变量:用于放在脚本代码块中调用通过命令行传递给脚本的参数

特殊变量

$?命令执行的状态值,值的范围0-255,其中0为真,表示命令执行成功,1-255为假,表示命令执行失败

$#传递给脚本的参数的个数

$*:传递给脚本的所有参数,全部参数合为一个字符串

$@:传递给脚本的所有参数,每个参数为独立字符串

$0:表示命令本身

本地变量:

变量赋值name="value"

value的值也可以引用:

可以直接使用字符串:name="username"

可以使其他变量的值:name="$username"

可以直接引用命令的值:name=`hostname`或者name=#(hostname);

变量引用${var_name}可简写为$var_name

""引用,其中的变量引用会被替换成变量的值

例:[root@centos_7 ~]# NUM="$PATH";echo $NUM             

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

''引用,其中的变量引用不会被替换,而是保留引号内原字符串

例:[root@centos_7 ~]# NUM='$PATH';echo $NUM  

$PATH

``命令引用,如括号内是命令会被识别,返回的是命令执行完成的值

   例:[root@centos_7 ~]# NUM=`seq 1 10`;echo $NUM

1 2 3 4 5 6 7 8 9 10

查看变量:set

撤销变量:unset name

输出变量:echo $name

环境变量:

变量赋值:export name=value

   declare -x name=value

查看变量:export、declare、env

撤销变量:unset name

输出变量:echo $name

bash有许多内建的环境变量:

PATH,PWD,USER,HOSTNAME,SHELL,UID,HOME等等

只读变量:只读变量的证明周期为当前shell进程的生命周期,随着shell进程的终止而终止

变量赋值:declare -r name

  readonly name 

位置变量:$1,$2……$10,对应第1,第2个参数

shift轮替,将第1个参数踢掉,第2个参数变为第一个参数,可一次踢多个,shift#;

set – :清空所有位置变量

命令行中定义的变量会随着当前shell进程的生命周期,Shell进程结束,变量时效

变量名的命名规则:

只能用数字,字母,下划线,且不能使数字开头。

变量名尽量做到见名知意

不能使用程序的保留字,如PATH、PWD、if、else之类的 。

bash的配置文件

全局配置文件:对当前主机所有用生效

/etc/profile

/etc/profile.d/*.sh

个人配置文件:只对当前用户生效

.bash_profile

.bashrc

按照功能分,分为两类:

profile类:为交互式登录的shell提供配置

交互式登录:直接通过某终端输入账号和密码后登录打开的shell进程

使用su -命令登陆的方式:su - username

全局:/etc/profile,/etc/profile.d/*.sh

个人:.bash_profile

:用于定义环境变量

  运行命令或脚本

交互式登录方式文件的读取顺序:

/etc/profile --> /etc/profile.d/*.sh --> .bash_profile --> /etc/bashrc --> .bashrc

注意:仅管理员可修改全局配置文件

bashrc类:为非交互式登录的shell提供配置

非交互式登录:图形界面下打开的终端

  使用su username

  运行脚本

全局:/etc/bashrc

个人:.bashrc

作用:定义本地变量

  定义命令别名

非交互式登录文件的读取顺序:

.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

配置文件定义的特性,只对随后的shell进程生效

让通过编辑配置稳健的特性立即生效:

退出并重新登录

通过命令行重复定义一次

让shell进程重读配置文件

source FileName

. FileName

bash的IO重定向

输出重定向:

> 覆盖输出

>>追加输出,在原有文件的尾部添加内容

set -C  :禁止覆盖输出重定向至已存在的文件

>| 强行覆盖输出

set +C 关闭上述特性

错误输出重定向:

2> 错误覆盖

2>> 错误追加

合并正常输出和错误输出:

&>覆盖

&>>追加

/dev/null:相当于一个垃圾箱,当我们不需要将命令执行结果输出至屏幕时,可使用&> /dev/null,把结果丢进垃圾箱只判断命令执行状态返回值

重定向写入文件:

cat << EOF

content

...

EOF

----

cat > /PATH/TO/FILE << EOF

content

……

EOF

bash算数运算:bash对数字进行隐式的类型转换

+,-,*,/,%(取模),**(乘方)

实现算数运算:

let var=算数表达式,如:let var=1+2

  例:

[root@centos_7 ~]# let var=1+2

[root@centos_7 ~]# echo $var

3

var=$[算数表达式],如:var=$[1+2]

var=$((算数表达式)),如:var=$((1+2))

echo '算数表达式' | bc ,如echo ‘1+2’ | bc

expr 数值1 运算符 数值2,如expr 1 + 2

增强型复制:

+=,-=,*=,/=,%=

使用方法:let 变量名运算符算数表达式

例:let=i+=1即i=i+1

自增,自减

let i+=1 即let i++

let i-=1 即let i--

 例:

[root@centos_7 ~]# let i++;echo $i

1

[root@centos_7 ~]# let i++;echo $i

2

[root@centos_7 ~]# let i++;echo $i

3

bash条件测试

判断某条件是否满足,满足则完成某项任务,不满足则退出

条件测试命令的表达式:

test 表达式

[ 表达式 ]

[[ 表达式 ]]

与[ ]不同,[[ ]]双括号内支持正则表达式,而[ ]单括号不支持

常用例:N=abc;[[ $N =~ ^[0-9]+$ ]] && echo true || echo false :解释为,如果$N的值为整数型,则返回true,否则返回false。

注意:表达式两边必须要有空格

bash的测试类型:

数值测试:

-eq:是否等于

-ne:是否不等

-gt:是否大于

-lt:是否小于

-ge:是否大于或等于

-le:是否小于或等于

字符测试:

==:是否等于

!=:是否不等

>:是否大于

<:是否小于

=~左侧字符串是否能被右侧模式所匹配

-z "string":测试字符串是否为空,空则为真,不空则为假

-n "string":测试字符串是否不空,不空为真,空则为假

文件测试:测试文件存在与否,属性信息等
  1. 测试文件是否存在和文件类别

-e file:测试指定文件是否存在,存在为真,不存在则为假

-b file:文件是否存在且为块设备

-d file:文件是否存在且为目录

-c file:文件是否存在且为字符设备

-f file:文件是否存在且为普通文件

-h file:文件是否存在且为符号链接文件

-p file:文件是否存在且为命名管道文件

-S file:文件是否存在且为套接字文件

1)文件权限测试

-r file:文件是否存在且当前用户是否可读

-w file:文件是否存在且当前用户是否可写

-x file:文件是否存在且当前用户是否有执行权限

-u file:文件是否存在且拥有suid权限

-g file:文件是否存在且拥有sgid权限

-k file:文件是否存在且拥有sticky权限

2)文件大小测试

-s file:文件是否存在且非空

3)文件是否被打开

-N file:文件自从上一次被读取之后是否被修改过

-O file:当前用户是否为文件属主

-G file:当前用户是否为文件属组

bash的逻辑运算:true(0)、false(1-255)

运算

真 && 真 = 真

真 && 假 = 假

假 && 真 = 假

假 && 假 = 假

只要有假便为假

运算

真 || 真 = 真

真 || 假 = 真

假 || 真 = 真

假 || 假 = 假

只要有真便为真

运算

! 真 = 假

! 假 = 真

ls / &> /dev/null && echo 'hello' :当&&左边条件为真时,&&右边条件执行,&&左边条件为假时,&&右边条件不执行

ls /// &> /dev/null || echo 'hello' :当||左边条件为假时,||右边条件执行,||左边条件为真时,||右边条件不执行

第二种方式

-a与远算

-o或运算

非运算

例:主机名是否为localhost,如果是改为centos

[ `hostname` == localhsot ] && hostname centos || echo "current hostname is `hostname`"

例:测试文件是否存在

[ -e /etc/passwd ] && cat /etc/passwd || echo "file not exist.."

例:测试主机名是否为空或者为localhost,如果为空或者为localhost则将其改为centos

[ -z `hostname` -o hostname == `hostname` ] && hostname centos || echo "current hostname is `hostname`"

编写脚本backup.sh,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中

#!/bin/bash#Filename:      backup.sh
#Description:   create script file
#Date:          2019-08-20 11:20:30
#*************************************************dir=etc`date +"%Y-%m-%d"`
DIR=/root/$dir
[ -d $DIR ] && echo "dir exist.." && exit 0
mkdir $DIR
cp -ar /etc/* $DIR  &&  echo -e  "\033[1;5;31mcopy finished...\033[0m"

编写脚本nologin.sh和login.sh,实现禁止和允许普通用户登录系统

[root@centos7 bin]#cat nologin.sh

#!/bin/bash##*************************************************
#Filename:      login.sh
#Description:   create script file
#Date:          2019-08-20 11:38:59
#*************************************************[ `id -u $1` -ge 1000 ]  || exit 1
[ $# -lt 1 ] && echo "please input a users .." && exit 0
read -p "your ensure ban user nologin ? input y/n:" NOLOGIN
[ $NOLOGIN == y ] && sed -i -r '/^'''$1'''/s#(.*:)([^:]+)$#\1/bin/nologin#' /etc/passwd && exit 0
[ $NOLOGIN == n ] && exit 0

[root@centos7 bin]#cat login.sh

#!/bin/bash##*************************************************
#Filename:      login.sh
#Description:   create script file
#Date:          2019-08-20 12:55:48
#*************************************************[ $# -lt 1 ] && echo "please input a user .." && exit 0
[ ` id -u $1 ` -ge 1000 ] && sed -i -r '/^'''$1'''/s#(.*:)([^:]+)$#\1/bin/bash#'  /etc/passwd
read -p "you need login system ? input y/n :" LOGIN
[ $LOGIN == y ] && su - $1
[ $LOGIN == n ] && exit 0

编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值                                                                  

[root@centos7 bin]#cat disk.sh

#!/bin/bash##*************************************************
#Filename:      disk.sh
#Description:   create script file
#Date:          2019-08-20 13:08:14
#*************************************************device=`df | grep "/dev/sd" |tr -s " " % | sort -t% -k5 -nr | cut -d% -f1 |head -1`
DISK=`df | grep "/dev/sd" | tr -s " " : | cut -d: -f5 | sort -nr|head -1`
echo "The most used is $device already use $DISK"

❀My学习Linux命令小记录(12)❀over~

相关文章:

❀My学习Linux命令小记录(12)❀

目录 ❀My学习Linux命令小记录&#xff08;12&#xff09;❀ 46.arp指令 47.tcpdump指令 48.chmod指令 49.chown指令 50.bash调用脚本指令 shell介绍 shell脚本的组成部分 脚本执行方式 检查脚本语法 bash之变量 变量的种类&#xff1a;根据生效的范围不同来区分 …...

MySQL学习day05

DCL&#xff08;Data Control Language&#xff09;数据控制语言学习 作用&#xff1a;用来创建数据库用户、控制数据库的访问权限 1&#xff09;查询用户&#xff1a; use mysql; select * from user; 2&#xff09;创建用户&#xff1a; create user 用户名主机名 identifi…...

JAVA面试题7

1.Java中的ClassLoader是什么&#xff1f; 它有什么作用&#xff1f; 答案&#xff1a;ClassLoader是一种加载Java类文件的机制&#xff0c;可以从不同的来源加载类文件&#xff0c;如本地文件系统、网络等。ClassLoader可以帮助实现模块化开发和动态加载类等功能。 2.什么是J…...

好用免费的AI换脸5个工具

在当今社会的发展中&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;扮演着关键的角色&#xff0c;其应用领域不断扩展。作为AI的一个分支&#xff0c;换脸技术近年来备受欢迎。这项技术使得将一个人的面部特征迁移到另一个人的照片或视频成为可能。除…...

【Linux】公网远程访问AMH服务器管理面板

目录 1. Linux 安装AMH 面板2. 本地访问AMH 面板3. Linux安装Cpolar4. 配置AMH面板公网地址5. 远程访问AMH面板6. 固定AMH面板公网地址 AMH 是一款基于 Linux 系统的服务器管理面板&#xff0c;它提供了一系列的功能&#xff0c;包括网站管理、FTP 管理、数据库管理、DNS 管理、…...

随笔-这都是命吗

我与鹏哥、小付有个小群&#xff0c;前几天&#xff0c;鹏哥在群里发了一个图&#xff0c;是他那个城市准备扶持的高新产业&#xff0c;有元宇宙、量子信息、生物制药、人工智能什么的。 先前的时候鹏哥给我说过&#xff0c;当地准备了六百多亩地&#xff0c;准备发展高新产业…...

优化网站性能,从容谈CDN加速的部署与运维

随着互联网的迅猛发展&#xff0c;网站的性能优化成为网站运维工作中不可或缺的一环。其中&#xff0c;CDN&#xff08;Content Delivery Network&#xff09;加速技术因其在全球范围内提供快速、可靠的内容分发而备受关注。本文将从一个网站运维的角度出发&#xff0c;深入探讨…...

JavaScript-事件

事件 事件流 指的是事件完整执行过程中的流动路径 两个阶段&#xff1a; 捕获阶段&#xff1a;从大到小冒泡阶段&#xff1a;从小到大 实际开发中都是使用事件冒泡为主 事件捕获 从DOM的根元素开始取执行对应的事件&#xff08;从外到里&#xff09; document.addEventLis…...

linux的磁盘管理

Linux 提供了多种工具和技术来进行磁盘管理。下面是对 Linux 磁盘管理的详细解释&#xff1a; 磁盘和分区&#xff1a; 磁盘&#xff08;硬盘&#xff09;&#xff1a;Linux 系统中的磁盘通常是通过 SATA、SCSI、NVMe 等接口连接的物理硬盘。可以使用工具如 lsblk、fdisk、pa…...

qt-C++笔记之主线程中使用异步逻辑来处理ROS事件循环和Qt事件循环解决相互阻塞的问题

qt-C笔记之主线程中使用异步逻辑来处理ROS事件循环和Qt事件循环解决相互阻塞的问题 code review! 文章目录 qt-C笔记之主线程中使用异步逻辑来处理ROS事件循环和Qt事件循环解决相互阻塞的问题1.Qt的app.exec()详解2.ros::spin()详解3.ros::AsyncSpinner详解4.主线程中结合使用…...

【Docker】从零开始:18.使用Dockerfile构造自己的KingbaseES数据库镜像

【Docker】从零开始&#xff1a;17.使用Dockerfile构造自己的数据库镜像 新建一个自定义目录并创建Dockerfile文件上传需要的文件到自定义目录下注意docker-circle-init.sh文件内容password 内容 开始打包注意打包完成后执行 尝试用工具连接数据库 kingbase.tar.gz 包过大我就上…...

YOLOv8独家改进《全网无重复 YOLOv8专属打造》感知聚合SERDet检测头:简单高效涨点,即插即用|检测头新颖改进

💡本篇内容:YOLOv8独家改进《全网无重复,YOLOv8专属》感知聚合SERDet检测头:高效涨点,即插即用|检测头新颖改进 💡🚀🚀🚀本博客 YOLO系列 + 全新原创感知聚合SERDet检测头 改进创新点改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可,附改进源代…...

Android Studio中Flutter项目找不到Android真机设备解决方法

起因&#xff1a;创建正常Android项目可以运行在真机设备上&#xff0c;创建flutter项目就找寻不到Android真机设备。 1&#xff1a;在flutter sdk安装目录按下Shift和鼠标右键&#xff0c;打开Powershell窗口 2&#xff1a;输入以下&#xff0c;然后回车 flutter config --…...

Vue 静态渲染 v-pre

v-pre 指令&#xff1a;用于阻止 Vue 解析这个标签&#xff0c;直接渲染到页面中。 语法格式&#xff1a; <div v-pre> {{ 数据 }} </div> 基础使用&#xff1a; <template><h3>静态渲染 v-pre</h3><p v-pre>静态渲染&#xff1a;{{ n…...

C语言基础概念考查备忘 - 标识符、关键字、预定义标识符、语法检查、语义检查 ... 左值、右值、对象、副作用、未定义行为、sizeof是什么等等

什么是标识符、关键字和预定义标识符&#xff1f;三者有何区别&#xff1f; 当谈论C语言中的标识符、关键字和预定义标识符时&#xff0c;让我们从每个概念的基础开始。 标识符&#xff08;Identifiers&#xff09;&#xff1a; 标识符是用来给变量、函数、类型等命名的。在…...

插件原理与开发

插件原理与开发 在 Mybatis总体执行流程 一文中简单的介绍了插件的初始化过程&#xff0c;本文将从源码的角度介绍一下mybatis的插件原理与简单开发实战。 插件原理 插件的注册和管理是通过InterceptorChain进行的&#xff0c;在创建Executor、StatementHandler、ParameterH…...

Git 分支合并时 Merge, Rebase, Squash 的使用场景

前言 Git 的分支设计大大提升了并行开发的能力&#xff0c;但相应的&#xff0c;也就要解决如何进行分支合并。毕竟分久必合&#xff0c;最终还是要把大家的工作合并起来&#xff0c;进行统一发布的。在合并时&#xff0c;通常有三种操作&#xff1a; Merge commitsRebaseSqu…...

第5节:Vue3 JavaScript 表达式

在 Vue3 中&#xff0c;JavaScript 表达式的使用方式与 Vue2 有所不同。 在 Vue3 中&#xff0c;你可以使用 v-bind 指令来绑定 JavaScript 表达式。例如&#xff1a; <template><div>{{ count }}</div> </template><script> import { ref } f…...

StarRocks 存算分离最佳实践,让降本增效更简单

StarRocks 存算分离自版本 3.0.0 开放使用&#xff0c;已经历过多个大版本迭代&#xff0c;在众多客户生产环境中得到验证。但在用户使用过程中也反馈了一些问题&#xff0c;大多源自对新能力不够熟悉导致无法达到最佳效果。因而&#xff0c;本文提供 StarRocks 存算分离最佳实…...

虚拟网络技术:bond技术

网卡bond也称为网卡捆绑&#xff0c;就是将两个或者更多的物理网卡绑定成一个虚拟网卡。 bond的作用&#xff1a; 1.提高网卡的吞吐量 2.增加网络的高可用&#xff0c;实现负载均衡。 一、bond简介 bond技术即bonding&#xff0c;能将多块物理网卡绑定到一块虚拟网卡上&…...

【Android】解决安卓中并不存在ActivityMainBinding

安卓中并不存在ActivityMainBinding这个类&#xff0c;这个类是在XML布局的最外层加入就会自动生成。但是你在最后绑定主布局时会报错获取不到根节点getRoot(). 最好的办法就是&#xff0c;删除原来的最外层节点&#xff0c;再重新添加&#xff0c;感觉是因为复制时并没有让系…...

mysql的几种索引

mysql索引的介绍可以mysql官网的词汇表中搜索&#xff1a; https://dev.mysql.com/doc/refman/8.0/en/glossary.html mysql可以在表的一列、或者多列上创建索引&#xff0c;索引的类型可以选择&#xff0c;如下&#xff1a; 普通索引&#xff08;KEY&#xff09; 普通索引可…...

R语言手册30分钟上手

文章目录 1. 环境&安装1.1. rstudio保存工作空间 2. 创建数据集2.1. 数据集概念2.2. 向量、矩阵2.3. 数据框2.3.1. 创建数据框2.3.2. 创建新变量2.3.3. 变量的重编码2.3.4. 列重命名2.3.5. 缺失值2.3.6. 日期值2.3.7. 数据框排序2.3.8. 数据框合并(合并沪深300和中证500收盘…...

前缀和例题:子矩阵的和AcWing796-Java版

//前缀和模板提,在读入数据的时候就可以先算好前缀和的大小 //计算前缀的时候用:g[i][j] g[i][j-1] g[i-1][j] - g[i-1][j-1] Integer.parseInt(init[j-1]); //计算结果的时候用:g[x2][y2] - g[x1 - 1][y2]- g[x2][y1-1] g[x1 -1][y1 - 1] "\n" //一些重复加的地…...

前端传参中带有特殊符号导致后端接收时乱码或转码失败的解决方案

文章目录 bug背景解决思路1&#xff1a;解决思路2解决思路3&#xff08;最终解决方案&#xff09;后记 bug背景 项目中采用富文本编辑器后传参引起的bug&#xff0c;起因如下&#xff1a; 数据库中存入的数据会变成这种未经转码的URL编码 解决思路1&#xff1a; 使用JSON方…...

【扩散模型】深入理解图像的表示原理:从像素到张量

【扩散模型】深入理解图像的表示原理&#xff1a;从像素到张量 在深度学习中&#xff0c;图像是重要的数据源之一&#xff0c;而图像的表示方式对于算法的理解和处理至关重要。本文将带你深入探讨图像的底层表示原理&#xff0c;从像素到张量&#xff0c;让你对图像表示有更清…...

WPS论文写作——公式和公式序号格式化

首先新建一个表格&#xff0c;表格尺寸按你的需求来确定&#xff0c;直接 插入--》表格 即可。 然后在表格对应位置填上公式&#xff08;公式要用公式编辑器&#xff09;和公式序号&#xff0c;然后可以按照单独的单元格或者整行或整列等来设置样式&#xff0c;比如居中对齐、…...

ChatGPT一周年,奥特曼官宣 OpenAI 新动作!

大家好&#xff0c;我是二狗。 今天是11月30日&#xff0c;一转眼&#xff0c;ChatGPT 发布已经一周年了&#xff01; 而就在刚刚&#xff0c;ChatGPT一周年之际。 OpenAI 正式宣布Sam Altman回归重任CEO, Mira Murati 重任CTO&#xff0c;Greg Brockman重任总裁&#xff0c;O…...

JVM 运行时内存篇

面试题&#xff1a; 讲一下为什么JVM要分为堆、方法区等&#xff1f;原理是什么&#xff1f;&#xff08;UC、智联&#xff09; JVM的分区了解吗&#xff0c;内存溢出发生在哪个位置 &#xff08;亚信、BOSS&#xff09; 简述各个版本内存区域的变化&#xff1…...

Docker安装postgres最新版

1. postgres数据库 PostgreSQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是一种高度可扩展的、可靠的、功能丰富的数据库系统。以下是关于PostgreSQL的一些介绍&#xff1a; 开源性&#xff1a;PostgreSQL是一个开源项目&#xff0c;可以…...

浅析计算机网络安全的的防范与措施

摘 要 随着信息和通讯的高速发展使得人们对计算机的依赖逐渐增强&#xff0c;生活与工作当中计算机都担任着那个不可或缺的角色&#xff0c;已经是人们生活当中的一部分&#xff0c;充分影响着我们生活和工作中的很多关键点&#xff0c;但计算机过多地在工作和生活中使用也带来…...

多表操作、其他字段和字段参数、django与ajax(回顾)

多表操作 1 基于对象的跨表查 子查询----》执行了两句sql&#xff0c;没有连表操作 2 基于双下滑线的连表查 一次查询&#xff0c;连表操作 3 正向和反向 放在ForeignKey,OneToOneField,ManyToManyField的-related_namebooks&#xff1a;双下滑线连表查询&#xff0c;反向…...

您知道计算机是怎么分类的嘛

地表最强计算机 第 61 版全球最强大的超级计算机已经发布。名为 Top500&#xff0c;顾名思义&#xff0c;该列表列出了全球 500 台最强大的超级计算机。榜单显示&#xff0c;美国的AMD、英特尔和IBM处理器是超级计算系统的首选。在 TOP10 中&#xff0c;有四个系统使用 AMD 处理…...

[MTK]安卓8 ADB执行ota升级

需求 adb 推送update.zip进行安卓的OTA升级 环境 平台:mtk SDK:Android 8 命令方式 需要root adb root adb remount adb push update.zip /data/media/0/ adb shell uncrypt /data/media/0/update.zip /cache/recovery/block.map adb shell echo /data/media/0/update.zi…...

python-比较Excel两列数据,并分别显示差异

利用 openpyxl 模块&#xff0c;操作Excel&#xff0c;比较Excel两列数据&#xff0c;并分别显示差异 表格数据样例如下图 A&#xff0c;B两列是需要进行比较的数据&#xff08;数据源为某网站公开数据&#xff09;&#xff1b;C&#xff0c;D两列是比较结果的输出列 A&#…...

RT-DETR手把手教程:NEU-DET钢材表面缺陷检测任务 | 不同网络位置加入EMA注意力进行魔改

💡💡💡本文独家改进:本文首先复现了将EMA引入到RT-DETR中,并跟不同模块进行结合创新;1)多种Rep C3结合;2)直接作为注意力机制放在网络不同位置; NEU-DET钢材表面缺陷检测: 原始 rtdetr-r18 map0.5为0.67 rtdetr-r18-EMA_attention map0.5为0.691 rtdetr-r18-…...

WebGL笔记:矩阵缩放的数学原理和实现

矩阵缩放的数学原理 和平移一样&#xff0c;以同样的原理&#xff0c;也可以理解缩放矩阵让向量OA基于原点进行缩放 x方向上缩放&#xff1a;sxy方向上缩放&#xff1a;syz方向上缩放&#xff1a;sz 最终得到向量OB 矩阵缩放的应用 比如我要让顶点在x轴向缩放2&#xff0c;y轴…...

处理器中的TrustZone之安全状态

在这篇博客中&#xff0c;我们将讨论处理器内对TrustZone的支持。其他部分则涵盖了在内存系统中的支持&#xff0c;以及建立在处理器和内存系统支持基础上的软件情况。 3.1 安全状态 在Arm架构中&#xff0c;有两个安全状态&#xff1a;安全状态和非安全状态。这些安全状态映射…...

开发一款短剧视频小程序软件多少钱?

今年最炙手可热的互联网项目之一当属短剧小程序&#xff0c;常常受到客户的咨询&#xff0c;他们想了解开发一套短剧小程序需要多少费用。今天&#xff0c;我将详细介绍相关费用及开发细节。 小程序认证费用&#xff1a; 每年300元&#xff0c;是确保小程序正常运营所必需的认证…...

『PyTorch学习笔记』分布式深度学习训练中的数据并行(DP/DDP) VS 模型并行

分布式深度学习训练中的数据并行(DP/DDP) VS 模型并行 文章目录 一. 介绍二. 并行数据加载2.1. 加载数据步骤2.2. PyTorch 1.0 中的数据加载器(Dataloader) 三. 数据并行3.1. DP(DataParallel)的基本原理3.1.1. 从流程上理解3.1.2. 从模式角度理解3.1.3. 从操作系统角度看3.1.…...

揭秘C语言结构体:通往内存对齐的视觉之旅

揭秘C语言结构体&#xff1a;通往内存对齐的视觉之旅 引言 在C语言的编程旅程中&#xff0c;结构体&#xff08;structs&#xff09;是一个关键而强大的概念。结构体不仅允许我们组织和存储不同类型的数据&#xff0c;而且通过深入了解内存对齐&#xff0c;我们可以更好地优化…...

java中可重入锁的作用是什么?

可重入锁的主要作用是允许同一个线程在持有锁的情况下多次进入同步代码块或方法&#xff0c;而不会被阻塞。这样做的主要目的是为了简化编程模型&#xff0c;增强程序的灵活性&#xff0c;并避免死锁的发生。 1. 简化编程模型&#xff1a; 可重入锁使得同一个线程在执行临界区…...

适合炎热天气的最佳葡萄酒有哪些?

每年的夏天&#xff0c;白葡萄酒和玫瑰红葡萄酒总会是葡萄酒爱好者的首选&#xff0c;这是为什么呢&#xff1f;随着春天的逝去&#xff0c;夏天悄悄地到来&#xff0c;空气变得炎热和沉重&#xff0c;树木变得越来越郁郁葱葱&#xff0c;白天的时间更长而晴朗了。多雨的五月变…...

软件工程 课后题 选择 查缺补漏

在一张状态图中只能有一个初态&#xff0c;而终态则可以没有&#xff0c;也可以有多个 所有的对象可以成为各种对象类&#xff0c;每个对象类都定义了一组 方法 通过执行对象的操作可以改变对象的属性&#xff0c;但它必须经过 消息 的传递 UML应用于 基于对象的面向对象的方…...

PyQt基础_011_对话框类控件QMessage

基本功能 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class WinForm( QWidget): def __init__(self): super(WinForm,self).__init__() self.setWindowTitle("QMessageBox") self.resize(300, 100) self.myButt…...

SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel | 京东云技术团队

前言&#xff1a;作者查阅了Sentinel官网、51CTO、CSDN、码农家园、博客园等很多技术文章都没有很准确的springmvc集成Sentinel的示例&#xff0c;因此整理了本文&#xff0c;主要介绍SpringMvc集成Sentinel SpringMvc集成Sentinel 一、Sentinel 介绍 随着微服务的流行&…...

[LeetCode] 12. 整数转罗马数字

12. 整数转罗马数字 罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 …...

深入了解Java Period类,对时间段的精确控制

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概2900多字&#xff0c;预计阅读时间长需要3分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&#x…...

企业软件的分类有哪些|app小程序定制开发

企业软件的分类有哪些|app小程序定制开发 企业软件是指为了满足企业运营和管理需求而开发的软件系统。根据不同的功能和应用领域&#xff0c;企业软件可以分为以下几个分类&#xff1a; 1. 企业资源计划&#xff08;Enterprise Resource Planning&#xff0c;ERP&#xff09;软…...

选择更好的Notes索引附件方式

大家好&#xff0c;才是真的好。 首先介绍最近产品更新消息。在上一周&#xff0c;HCL主要发布了以下几个产品更新&#xff1a;HCL Verse 3.2.0、HCL Volt MX Go 2.0.2、HCL Domino Rest API 1.0.8。 HCL Verse是今后Domino的产品当中主要使用的webmail功能&#xff0c;这一次…...