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/xferlogxferlog_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)查看抓包信息

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

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

相关文章

探索量子计算:打开未来技术的大门

在科技领域,每一次技术革命都能开启新的可能性,推动人类社会进入一个新的时代。当前,量子计算作为一种前沿技术,正引领着下一轮科技革命的浪潮。本文将深入探索量子计算的奥秘,解析其工作原理,并通过一个简…

Windows10/11 重装之后,刷新原来的文件夹里的用户权限

将 d:\* 下所有文件的所有者,更改为Administrator takeown /F d:\WorkSpaces\* /R /A 赋予system、Administrator、Authenticated Users所有控制访问权限。可以自己改用户,删掉对应的即可 icacls d:\* /grant System:(F) /grant Administrator:(F) …

子集和问题(c++题解)

题目描述 子集和问题的一个实例为〈S,t〉。其中,S{ x1, x2,…, xn}是一个正整数的集合,c是一个正整 数。子集和问题判定是否存在S的一个子集S1,使得子集S1和等于c。 对于给定的正整数的集合S{ x1&#xf…

深度学习图像处理基础工具——opencv 实战2 文档扫描OCR

输入一个文档,怎么进行文档扫描,输出扫描后的图片呢? 今天学习了 opencv实战项目 文档扫描OCR 问题重构:输入图像 是一个含有文档的图像——> 目标是将其转化为 规则的扫描图片 那么怎么实现呢? 问题分解&#…

ELFK日志分析系统

目录 1. Elasticsearch 特点和功能: 使用场景: Elasticsearch 结构和术语: 2. Logstash Logstash 的特点和功能: Logstash 工作流程: Logstash 的插件(Plugin): 3. Kibana …

Go 之常见的几种设计模式

学一学Go中常见的几种设计模式和对应的示例 单例模式 确保一个类型只有一个实例,同时提供一个全局访问点。 package mainimport "fmt"type Singleton struct {data string }var instance *Singletonfunc GetInstance() *Singleton {if instance nil {…

Python 复杂密码图形化生成工具,支持选择生成10位和12位复杂密码(初版)

代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2024/3/26 15:22 # Author : wyq # File : 部署测试.py import random import string from tkinter import *def generate_password(length):characters string.ascii_letters string.digits string.p…

HTML:链接

目录 一、超链接 二、 外联元素 一、<a>超链接 <a> 标签用于定义超链接&#xff0c;超链接可以让用户从一个网页跳转到另一个网页。 常用属性&#xff1a; href指定链接的目标地址。download表示链接是一个下载链接&#xff0c;指定下载的文件名。target 指定在…

JavaScript扩展运算符...的实现原理

… 作用 扩展运算符&#xff08;spread&#xff09;是三个点&#xff08;…&#xff09;&#xff0c;用于取出参数对象中的所有可遍历属性&#xff0c;浅拷贝到当前对象之中。 常见用法 1.浅拷贝数组 const a1 [test1, test2]; const a2 [...a1];a2[0] test2; a2 // [te…

【vue】Vue3开发中常用的VSCode插件

Vue - Official&#xff1a;vue的语法特性&#xff0c;如代码高亮&#xff0c;自动补全等 Vue VSCode Snippets&#xff1a;自定义一些代码片段 v3单文件组件vdata数据vmethod方法 别名路径跳转 参考 https://www.bilibili.com/video/BV1nV411Q7RX

学校4-11天梯赛选拔赛

目录 L1-5 6翻了 题目 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 思路 AC代码 L1-1 嫑废话上代码 题目 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; AC代码 L1-8 刮刮彩…

HDFS、Hive、Redis、MySQL、HBase、Kafka、Flink等常用技术架构是什么?架构核心是什么?架构工作流是什么?

这些常用的技术架构在大数据和分布式系统领域发挥着重要作用&#xff0c;每个都有其特定的用途和核心组件。 HDFS (Hadoop Distributed File System)&#xff1a; 架构核心&#xff1a;HDFS是Hadoop生态系统的一部分&#xff0c;用于存储大规模数据集&#xff0c;并提供高吞吐量…

代码随想录-二叉树

************二叉树的前序遍历&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 递归 public class LeetCode144 {class TreeNode{int val;TreeNode left;TreeNode right;public TreeNode() {}public TreeNode(int val) {this.val val;}public TreeNode(int val, Tre…

初识责任链模式--一起学习吧之数据库

一、定义 责任链模式是一种对象行为型模式&#xff0c;用于处理请求发送者和多个请求处理者之间的耦合问题。在这种模式中&#xff0c;请求的处理者通过前一对象记住其下一个对象的引用而连成一条链。当有请求发生时&#xff0c;请求会沿着这条链传递&#xff0c;直到有对象处…

深入了解边缘AI的发展

人工智能先进功能的融合、物联网设备的广泛采用以及边缘计算的强大性能释放了边缘AI的潜力。这种变革性的协同作用涵盖了辅助医疗诊断、自动驾驶和仓库物流自动化等应用。 边缘计算起源于1990年代的内容分发网络&#xff0c;现在被广泛使用&#xff0c;尤其是在边缘AI领域。企…

Vue入门:天不生Vue,前端万古如长夜 - Vue从入门到放弃

&#x1f44b; Vue环境搭建 首先&#xff0c;搭一个打代码的环境 1.安装node.js 在使用VS Code之前&#xff0c;需要安装Vue的开发环境。 安装Vue的最简单方法是使用npm包管理器&#xff0c;先安装Node.js和npm。 node官网 ​​ 2.配置环境变量 在nodejs安装目录下新建…

免费分享Springboot+Vue的影院管理系统源码,真酷!

今天给大家分享一套基于SpringbootVue的影院管理系统源码&#xff0c;在实际项目中可以直接复用。(免费提供&#xff0c;文末自取) 一、系统运行图 1、登陆页面 2、系统后台 3、选座功能 影院管理系统通常具有以下七个功能点&#xff1a; 1.电影管理&#xff1a; 包括电影信…

https://ac.nowcoder.com/acm/contest/79505

A-KNN算法_"华为杯"华南理工大学程序设计竞赛(同步赛) (nowcoder.com) //当时就抱着试一试的心态 果然超时&#xff1a; 1.#include<bits/stdc.h> using namespace std; #define int long long const int N2e56; const int inf0x3f3f3f3f; int a[N];int c[N]…

c++ - 动态载入DLL接口,可以给IDA静态分析增加一点麻烦

文章目录 c - 动态载入DLL接口&#xff0c;可以给IDA静态分析增加一点麻烦概述笔记测试工程test_load_dll_then_call_api.cppCMyUser32Dll.hCMyUser32Dll.cppLateLoad.hIDA静态分析引入表中没有PostMessageW字符串查找能找到PostMessageW备注看看CMyUser32Dll.h编译完的样子备注…

CSS快速入门

目录 一、CSS介绍 1、什么是CSS&#xff1f; ​编辑2、基本语法规范 3、引入方式 4、规范 二、CSS选择器 1、标签选择器 2、类&#xff08;class&#xff09;选择器 3、id选择器 4、通配符选择器 5、复合选择器 三、常用CSS 1、color 2、font-size 3、border 4…