Linux —— FTP服务【从0-1】

目录

一、介绍

1.概述

2.FTP的传输模式

PORT 主动模式

PASV 被动模式

3.FTP服务的作用

二、搭建FTP服务器

FTP服务端配置

1.安装vsftpd文件服务

2.启动服务

3.防火墙配置

4.FTP服务相关文件说明

FTP客户端配置

1.安装FTP客户端工具 lftp

2.访问FTP服务器

Linux系统访问FTP服务器

Windows系统访问FTP服务器

三、FTP服务配置文件

1.配置匿名用户

(1)修改配置文件

(2)创建上传目录

(3)客户端进行文件上传

(4)客户端进行目录上传

2.配置系统用户

(1)创建FTP服务专用用户

(2)将用户禁锢在自己的家目录 chroot_local_user=YES

(3)允许指定系统用户可以切换目录 

(4)白名单

(5)黑名单 /etc/vsftpd/ftpusers

3.配置虚拟用户

(1)建立FTP虚拟用户的用户数据库文件

(3)创建FTP虚拟用户的映射用户

(4)建立支持虚拟用户的PAM认证文件,添加虚拟用户支持

(5)创建虚拟用户的配置文件

(6)客户端进行验证

4.常用的配置指令

5.PASV 被动模式

四、vsftpd加密传输

1.抓取vsftpd传输内容

(1)在同网段主机进行抓包

(2)客户端登录FTP操作

2.openssl+vsftpd加密传输

(1)检查是否安装了 openssl

(2)查看vsftpd是否支持openssl

(3)生成加密信息的私钥、证书、签字证书

3.修改配置文件/etc/vsftpd/vsftpd.conf

4.客户端验证

(1)同网段主机继续抓包

(2)使用第三方客户端进行登录(支持服务器类型:FTP over TLS)

(3)查看抓包信息

        学习是一场马拉松,耐心和坚持是成功的关键。愿你能保持初心,好好学习,天天向上,努力成为最优秀的你。


一、介绍

1.概述

        FTP(File Transfer Protocol,文件传输协议)是TCP/IP协议族中应用层的协议之一。是一种基于TCP的协议,采用客户/服务器模式。通过FTP协议,用户可以在FTP服务器中进行文件的上传或下载等操作。

2.FTP的传输模式

控制端口:控制连接在两主机间传送控制命令,如用户身份、口令、改变目录命令等。

数据端口:数据连接只用于数据传输。

PORT 主动模式

  1. FTP客户端会随机使用一个高位端口Nn > 1024)与FTP服务端21端口进行连接,向服务端发送用户名和密码进行登陆;
  2. 登录成功后要list列表或者读取数据时,客户端开放一个N+1端口(1024以上)进行监听,发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;
  3. FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口(N+1)连接,发送数据;

原理如下图:

PASV 被动模式

  1. FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送用户名和密码进行登陆;
  2. 登录成功后要list列表或者读取数据时,客户端开放一个N+1端口(1024以上)进行监听,然后向服务器发送PASV命令,通知服务器自己处于被动模式。
  3. 服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P
  4. 客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

原理如下图:

3.FTP服务的作用

FTP服务是一种提供共享文件的服务器,它的主要作用有以下几点:

(1)存储文件:FTP服务器可以存储需要传输的文件,用户可以通过FTP客户端连接到FTP服务器,并上传或下载需要的文件。

(2)管理文件:FTP服务器可以管理文件,例如创建、删除、重命名等操作。

(3)提供文件访问权限控制:FTP服务器可以对文件进行访问权限控制,例如限制用户的访问权限、控制用户的上传和下载权限等。

(4)提供匿名访问:FTP服务器可以提供匿名访问,允许用户通过FTP客户端进行匿名的文件传输。

(5)监控文件传输情况:FTP服务器可以记录和监控文件传输情况,例如记录文件传输的日志信息,以便进行后续的审计和管理。

(6)支持多用户同时传输:FTP服务器可以支持多个用户同时进行文件传输,以提高文件传输的效率。

(7)数据备份:FTP服务器可以作为网络备份的存储服务器,用于备份公司或组织的重要数据。

二、搭建FTP服务器

FTP服务端配置

1.安装vsftpd文件服务

[root@localhost ~]# yum install -y vsftpd
已加载插件:fastestmirror
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
......省略输出
已安装:
  vsftpd.x86_64 0:3.0.2-29.el7_9                                                                                                                                              

完毕!
[root@localhost ~]# 
[root@localhost ~]# 

2.启动服务

systemctl start vsftpd # 启动服务

systemctl stop vsftpd # 停止服务

systemctl status vsftpd # 查看服务状态

systemctl enable vsftpd # 开启自启动

3.防火墙配置

systemctl stop firewalld # 停止防火墙 
systemctl disable firewalld # 开机不启动防火墙 
setenforce 0 # 关闭selinux

4.FTP服务相关文件说明

FTP客户端配置

1.安装FTP客户端工具 lftp

[root@localhost ~]# yum install -y lftp
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
......省略输出
  正在安装    : lftp-4.4.8-14.el7_9.x86_64                                                                                                                                1/1 
  验证中      : lftp-4.4.8-14.el7_9.x86_64                                                                                                                                1/1 

已安装:
  lftp.x86_64 0:4.4.8-14.el7_9                                                                                                                                                

完毕!
[root@localhost ~]# 

2.访问FTP服务器

Linux系统访问FTP服务器

(1)客户端工具 lftp

lftp 服务端IP地址

(2)wget 工具

wget ftp://服务器IP/文件名 # 下载文件 wget -m ftp://服务器IP/目录名 # 下载目录

Windows系统访问FTP服务器

(1)浏览器访问

(2)资源管理器访问

三、FTP服务配置文件

1.配置匿名用户

登录账号:ftpanonymous

登录密码:

工作目录:/var/ftp

默认权限:允许下载,不允许上传。

(1)修改配置文件

# 修改配置文件之前先进行备份 
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

vim /etc/vsftpd/vsftpd.conf

# 是否允许匿名用户访问
anonymous_enable=YES
# 允许上传文件
anon_upload_enable=YES
# 允许创建目录
anon_mkdir_write_enable=YES
# 允许用户进行其它操作(删除文件、覆盖文件、重命名文件)
anon_other_write_enable=YES
# 匿名用户所上传文件的权限掩码
anon_umask=022
# 限制最大传输速率 单位:bytes/秒(0为不限速)
anon_max_rate=0

每次修改完配置文件后都需要重启服务

systemctl restart vsftpd # 重启服务

(2)创建上传目录

mkdir /var/ftp/upload # 创建上传目录 
chmod 777 /var/ftp/upload/ # 赋予权限

(3)客户端进行文件上传

(4)客户端进行目录上传

2.配置系统用户

登录账号:/etc/passwd文件的系统用户

登录密码:/etc/shadow文件的用户密码

工作目录:用户家目录

默认权限:drwx — —

将原有内容删除,复制以下内容

# 允许使用系统用户
local_enable=YES
# 系统用户上传的文件的默认权限
local_umask=022
# 禁锢系统用户在自己的家目录
chroot_local_user=YES
# 允许系统用户目录有写入权限
allow_writeable_chroot=YES
write_enable=YES
# 启用进入目录的欢迎信息
dirmessage_enable=YES
# 启用日志功能
xferlog_enable=YES
# 使用20端口进行数据传输
connect_from_port_20=YES
# 记录日志的格式(上传、下载)
xferlog_std_format=YES
# 使用IPv4
listen=YES
pam_service_name=vsftpd 
# 限制最大传输速率(0为不限制,单位:bytes/秒)
local_max_rate=0
tcp_wrappers=YES

不删除原文,只添加以下内容即可

local_enable=YES # 是否允许本地系统用户访问 local_umask=022 #本地用户所上传文件的权限掩码 Chroot_local_user=YES # 禁锢用户在自己家目录 allow_writeable_chroot=YES # 允许系统用户目录有写入权限 local_max_rate=0 # 限制最大传输建率(字节/秒) 0为无限制

(1)创建FTP服务专用用户

-s创建的用户不能登录系统

# 创建两个不能登录系统的用户

useradd -s /sbin/nologin user01 useradd -s /sbin/nologin user02

# 设置密码

passwd user01 passwd user02

(2)将用户禁锢在自己的家目录 chroot_local_user=YES

在vsftpd配置文件中,默认允许系统用户随意切换目录,这个行为是很危险的,需要禁止。

修改配置文件/etc/vsftpd/vsftpd.conf,添加 chroot_local_user=YES 限制系统用户在自己家目录

# 将系统用户禁锢在自己的家目录

chroot_local_user=YES

配置完将用户禁锢在主目录的指令后,再使用普通用户进行登录会出现以下报错:

原因:

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下, 则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报错,并禁止登录。

解决办法:

配置文件/etc/vsftpd/vsftpd.conf中,添加 allow_writeable_chroot=YES # 使系统用户目录有写入权限

(3)允许指定系统用户可以切换目录 

# 配置文件中添加以下

# 开启读取chroot列表功能

chroot_list_enable=YES

# 写在/etc/vsftpd/chroot_list文件里面的用户是切换目录的

chroot_list_file=/etc/vsftpd/chroot_list

再创建chroot_list文件

touch /etc/vsftpd/chroot_list         # 创建切换目录白名单

echo 'user02' 1>> /etc/vsftpd/chroot_list         # 添加用户到白名单中,一行一个用户

验证

(4)白名单

userlist_enable=YES&&userlist_deny=NO # 仅允许/etc/vsftpd/user_list文件中的用户登录FTP

userlist_enable=YES&&userlist_deny=YES # 禁止/etc/vsftpd/user_list文件中的用户登录FTP

配置文件中添加

userlist_enable=YES userlist_deny=NO

添加用户进白名单

echo 'user01' 1>> /etc/vsftpd/user_list

验证

(5)黑名单 /etc/vsftpd/ftpusers

添加进此文件中的用户都禁止登录FTP,立即生效,无需重启服务(权限高于白名单

验证

3.配置虚拟用户

(1)建立FTP虚拟用户的用户数据库文件

vim vsftpd.user # 文件名字可随便定义 文件内容格式:奇数行为用户名,偶数行为用户密码 user01

123

user02

123

user03

123

(2)将虚拟用户文件转换为DB数据库格式文件

db_load -T -t hash -f vsftpd.user vsftpd.db

-T:允许应用程序能够将文本文件转译载入进数据库文件;

-t:指定转译成什么数据库类型;

-f:包含用户名和密码的文本文件;

修改数据库文件的权限,保证其安全性

chmod 600 vsftpd.db

(3)创建FTP虚拟用户的映射用户

由于虚拟用户不是系统用户,没有自己的家目录,所以需要创建一个系统用户,用它的家目录给虚拟用户当做工作目录(家目录);

useradd -s /sbin/nologin virtual

(4)建立支持虚拟用户的PAM认证文件,添加虚拟用户支持

cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam

编辑复制的文件vsftpd.pam(清空所有内容,复制以下两行)

auth required pam_userdb.so db=/etc/vsftpd/vsftpd

account required pam_userdb.so db=/etc/vsftpd/vsftpd

在vsftpd.conf配置文件中修改、添加以下内容

# 修改

pam_service_name=vsftpd.pam

# 添加

guest_enable=YES         # 允许使用虚拟用户功能

gue_username=virtual         # 指定虚拟用户的映射用户

user_config_dir=/etc/vsftpd/dir         # 虚拟用户配置文件的目录(需要自己创建)

(5)创建虚拟用户的配置文件

创建虚拟用户配置文件的目录

mkdir /etc/vsftpd/dir

创建虚拟用户配置文件(虚拟用户的配置指令与匿名用户的配置指令是相同的

先把主配置文件vsftpd.conf中匿名用户的所有配置指令注释掉

修改虚拟用户配置文件

cd /etc/vsftpd/dir/ vim user01

# 添加以下内容

allow_writeable_chroot=YES         # 允许用户的家目录有写入权限 anon_upload_enable=YES         # 允许用户上传 vim user02 # 添加以下内容 allow_writeable_chroot=YES         # 允许用户的家目录有写入权限 anon_mkdir_write_enable=YES         # 允许用户创建文件 vim user03 allow_writeable_chroot=YES         # 允许用户的家目录有写入权限 anon_upload_enable=YES         # 允许用户上传文件(为了覆盖文件开启的) anon_other_write_enable=YES         # 允许用户进行其它操作(删除、覆盖、重命名文件)

注意:请给映射用户家目录添加 o+r 权限,让虚拟用户拥有读取权限;

(6)客户端进行验证

4.常用的配置指令

listen=YES                                #是否以独立运行的方式监听服务

listen_address=192.168.10.112               #设置监听FTP服务的IP地址

listen_port=21                                 #设置监听FTP服务的端口号

write_enable=YES                        #是否启动写入权限(上传、删除文件)

download_enable=YES                   #是否允许下载文件

dirmessage_enable=YES                #用户切换目录显示.message文件

xferlog_enable=YES                        # 启用日志文件,记录到/var/log/xferlog

xferlog_std_format=YES    # 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式

connect_from _port_20=YES        # 允许服务器主动模式 (从20端口建立数据连接)

pasv_enabTe=YES                        # 允许服务器被动模式
pasv_max_port=24600                   # 设置被动模式服务器的最大端口号
pasv_min_port=24500                        # 设置黄动模式服务的最小端口

pam_service_name=vsftpd                # 用户认证的PAM文件

userlist_enable=YES                        # 是否启用user_list列表文件
userlist_deny=YES                        # 是否禁用user_list中的用户

max_cIients=0                                #限制并发客户端连接数

max_per_ip=0                                # 限制同一IP地址的井发连接数
tcp_wrappers=YES                        #是否启用tcp_wrappers主机访问控制

chown_username=root                #表示匿名用户上传的文件的拥有人是root,默认关闭

ascii_upload_enable=YES           # 表示是否允许用户可以上传一个二进制文件,默认不允许

ascii_download_enable=YES        #代表是否允许用户下载个一个二进制文件,默认不允许
nopriv_user=vsftpd                        #设置支撑vsftpd服务的宿主用户为手动建立的vsftpd用户

async_abor_enable=YES                # 设定支持异步传输功能
ftpd_banner=welcome to Awei FTP servers          # 设定vsftpd的登录标语
guest_enable=YES                        # 设置启用虚拟用户功能

guest_username=ftpuser                 # 指定虚拟用户的宿主用户

virtual_use_local_privs=YES                # 设定虚拟用户的权限符合他们的宿主用户

user_config_dir=/etc/vsftpd/vconf        # 设定虚拟用户个人vsftp的配置文件存放路径

5.PASV 被动模式

/etc/vsftpd/vsftpd.conf 配置文件中添加以下内容

pasv_enable=YES         # 开启被动模式

pasv_min_port=3000(大于1024)         # 数据连接最小端口

pasv_max_port=5000         # 数据传输最大端口

验证

客户端下载文件,进行数据传输

服务端查看端口

四、vsftpd加密传输

1.抓取vsftpd传输内容

因为vsftpd是明文传输,所以使用抓包工具可以抓取vsftpd传输的内容

使用tcpdump抓包工具

tcpdump -i 网卡名 -nn -X -vv tcp port 21(服务器端口) and ip host 来源ip(客户端VMnet8网卡IP)

-i:指定需要监听的网卡;

-n: 对回显的信息以数字方式显式,例如地址回显为192.168.157.1,否则显式为主机名;

-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名;

-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出;

-vv:产生更详细的输出;

(1)在同网段主机进行抓包

(2)客户端登录FTP操作

2.openssl+vsftpd加密传输

(1)检查是否安装了 openssl

rpm -q opessl

(2)查看vsftpd是否支持openssl

ldd命令用于打印程序或者库文件所依赖的共享库列表。

[root@localhost virtual]# which vsftpd /usr/sbin/vsftpd

[root@localhost virtual]#

[root@localhost virtual]#

[root@localhost virtual]# ldd /usr/sbin/vsftpd | grep libssl

libssl.so.10 => /lib64/libssl.so.10 (0x00007ff14cf2d000)

[root@localhost virtual]#

(3)生成加密信息的私钥、证书、签字证书

后缀:

  • .key:服务器私钥;
  • .csr:服务器证书;
  • .crt:签字证书;

请注意:服务器所有私钥、证书和签字证书都是存储在/etc/ssl/certs/

a.生成服务器私钥

openssl genrsa -out vsftpd.key 1024

-genrsa:用于生成私钥;

-out:输出文件;

b.通过私钥生成服务器的证书

openssl req -new -key vsftpd.key -out vsftpd.csr

req:生成证书请求;

-new:新的请求;

-key:用于签名待生成的请求证书的私钥文件;

-out:待输出的文件;

c.生成签字证书

openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt

-req:签字证书请求;

-days:签字证书生效时间;

-sha256:签字证书加密方式;

-in:输入文件;

-out:输出文件;

d.把/etc/ssl/certs/目录的权限设置为500,这是必须要做的操作!

chmod 500 /etc/ssl/certs

请注意:在实验环境中可以通过命令行生成CA证书,但在生产环境中必须向CA证书厂商申请注册(否则浏览器不识别)

3.修改配置文件/etc/vsftpd/vsftpd.conf

# 开启ssl证书功能

ssl_enable=YES

# 支持ssl1-3的版本

ssl_tlsv1=YES

ssl_sslv2=YES

ssl_sslv3=YES

# 允许匿名用户(虚拟用户)使用ssl证书功能

allow_anon_ssl=YES

# 强制匿名用户(虚拟用户)登录时使用ssl证书功能

force_anon_logins_ssl=YES

# 强制匿名用户(虚拟用户)传输数据时使用ssl证书功能

force_anon_data_ssl=YES

# 强制系统用户登录时使用ssl证书功能

force_local_logins_ssl=YES

# 强制系统用户传输数据时使用ssl证书功能

force_local_data_ssl=YES

# 服务器签字证书存储位置

rsa_cert_file=/etc/ssl/certs/vsftpd.crt

# 服务器私钥存储位置

rsa_private_key_file=/etc/ssl/certs/vsftpd.key

4.客户端验证

(1)同网段主机继续抓包

(2)使用第三方客户端进行登录(支持服务器类型:FTP over TLS)

(3)查看抓包信息

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

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

相关文章

Rust取代C++? 保守了!关于未来的讨论

当各种平台在大肆讨论rust即将取代C/C的时候,已经有不少人意识到这种讨论是聒噪而无聊的。笔者和老师们通过周末茶会的讨论,认为现今世界常见的大多数编程语言都会在50-80年内被AI取代,同时供人类审计而诞生的“审计语言”会兴起。届时计算机…

D. Nene and the Mex Operator

解题思路 若选定一个区间,则可以构造成值全为构造方如下:先将区间全变为0(若区间有0且不全为0两次(全变为一个值后再全变为0),若没有0则一次,若已经全为0则0次)保留r为0&#xff0c…

Rust - 所有权

所有的程序都必须和计算机内存打交道,如何从内存中申请空间来存放程序的运行内容,如何在不需要的时候释放这些空间,成了重中之重,也是所有编程语言设计的难点之一。在计算机语言不断演变过程中,出现了三种流派&#xf…

访问者模式类图与代码

某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。采用Visitor(访问者)模式实现该要求,得到如图7.16所示的类图。 访…

卷积学习笔记——一文直观形象弄懂

在神经网络的世界中,卷积操作犹如一个神秘的魔术师,它以一种精巧的方式提取出图像、声音等数据中的关键特征,为神经网络模型赋能。但究竟什么是卷积?我们一探究竟。 卷积(Convolution)本质上是一种数学运算操作,它可以用极简的数学形式漂亮地描述一个动态过程。我们可以用形象…

【Django开发】0到1美多商城项目md教程第7篇:登录,1. 互联开发者申请步骤【附代码文档】

美多商城完整教程(附代码资料)主要内容讲述:欢迎来到美多商城!,项目准备。展示用户注册页面,创建用户模块子应用。用户注册业务实现,用户注册前端逻辑。图形验证码,图形验证码接口设…

UDTF函数 explode

场景: 原hive数据形式 split 处理到一个Array 形式 使用explode炸开后的效果是 explode结合侧面视图达到targeType 目标形式: 一进多出 explode 将hive 中复杂的 array 炸成多行 因为炸开后, movie 列值少于categoryname 列所以这里为了达到…

【Spring Boot】深入解密Spring Boot日志:最佳实践与策略解析

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【Spring Boot】深入解密Spring Boot日志:最佳实践与策略解析 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 Spring Boot 日志一. 日志的概念?…

EasyUI Jquery 学习笔记 ——DataGrid(数据网格)与 Tree(树)详细版

1. DataGrid(数据网格)与 Tree(树) 1.1 Datagrid 数据网格 扩展自 $.fn.panel.defaults。通过 $.fn.datagrid.defaults 重写默认的 defaults。 数据网格(datagrid)以表格格式显示数据,并为选择、排序、分组和编辑数据提供了丰富的支持。数据网格(datagrid)的设计目…

快速上手Vue

目录 概念 创建实例 插值表达式 Vue响应式特性 概念 Vue是一个用于 构建用户界面 的 渐进式 框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面 渐进式&#xff1a;Vue相关生态&#xff1a;声明式渲染<组件系统<客户端路由<大规模状态管理<构建工具 V…

数据库(3)

目录 11.那你知道什么是覆盖索引和回表吗&#xff1f; 12.什么是MVCC&#xff1f;说说MySQL实现MVCC的原理&#xff1f; 13.MySQL的锁的类型有哪些呢&#xff1f; 14.你们数据量级多大&#xff1f;分库分表是怎么做的&#xff1f; 15.分表后非分库字段sharding_key的查询怎…

CSS中:root伪类的说明和使用

定义和用法 :root选择器用匹配文档的根元素。在HTML中根元素始终是HTML元素&#xff0c;所以也可以把:root理解为html根元素选择器&#xff0c;但是比html根元素的优先级高&#xff0c;:root伪类选择器常常被用于定义全局的CSS变量或者设置全局的CSS样式。CSS :root 选择器 | …

SecureCRT日志记录的7个经典配置记录与14个环境变量(%Y-%M-%D_%H_%S_session.log %t )

每次更换电脑、主机或者环境都需要配置一遍SecureCRT的参数。感觉就最近十年都已经设置过上百次了。其实设置没什么特别的&#xff0c;只是经过不断地打磨&#xff0c;主打的就是一个经济实用。经常忘记&#xff0c;特此记录。 配置方式 建议直接配置默认session&#xff1a;…

Codeforces Round 938 (Div. 3)(A,B,C,D,E,F,G,H)

题目链接 该死的调休&#xff0c;这几天基本都是满课&#xff0c;要么就是两三场比赛打满&#xff0c;根本补不完题&#xff0c;马上周末又是一堆比赛。最近CF不知道在抽什么风&#xff0c;动不动就要验我是不是机器人&#xff0c;然后转圈圈&#xff0c;再返回一个 “Oops&am…

正确使用@RequestMapping(包含属性详解)

目录 一、基本认知二、RequestMapping的基本使用三、深入学习RequestMapping1、RequestMapping的源码2、RequestMapping的属性2.1 path2.2 method2.3 params2.4 headers2.5 consumes2.6 produces2.7 name 一、基本认知 客户端发起Http请求&#xff0c;会提供一个URL [协议://域…

软件设计师——软件工程基础知识

软件工程基础知识 软件过程软件过程模型软件测试方法进度管理软件复杂性度量环路复杂度耦合聚合和组合 软件过程 软件过程模型 软件测试方法 黑盒测试和白盒测试 白盒测试中&#xff0c;语句覆盖对程序执行逻辑的覆盖很低&#xff0c;因此一般认为它是很弱的逻辑覆盖。 进度管…

企业常用命令(touch/别名/重定向/Linux字符)7368字详谈

企业高薪思维&#xff1a; 企业&#xff08;工作/学习中&#xff09;操作前备份&#xff0c;操作后检查 最小化原则 1.安装软件最小化 2.参数选项最小化 3.登录用户权限最小化&#xff08;不用root登录&#xff09; 要想成功/学习上/工作上 永远比别人多做一点点&#xff08;别…

【智能优化算法】人工原生动物优化器(APO)

人工原生动物优化器(Artificial Protozoa Optimizer&#xff0c;APO)是发表在中科院一区期刊‘Knowledge-Based Systems’期刊上“Artificial Protozoa Optimizer (APO): A novel bio-inspired metaheuristic algorithm for engineering optimization”这篇文章上的算法。 01.引…

1.MMD模型动作场景镜头的导入及视频导出

界面介绍 MIKUMIKUDANCE926版本 MMD的工具栏模型骨骼帧的窗口&#xff0c;在不同时间做不同动作&#xff0c;可以在这里打帧操作时间曲线操作窗口&#xff0c;控制模型两个动作之间的过渡模型操作窗口&#xff0c;导入模型选择模型相机操作&#xff0c;控制相机远近&#xf…

【御控物联】物联网平台设备接入-JSON数据格式转化(场景案例四)

文章目录 一、背景二、解决方案三、在线转换工具四、技术资料 一、背景 物联网平台是一种实现设备接入、设备监控、设备管理、数据存储、消息多源转发和数据分析等能力的一体化平台。南向支持连接海量异构&#xff08;协议多样&#xff09;设备&#xff0c;实现设备数据云端存…