Linux网络 ----- 网络文件共享服务之FTP服务
引言
FTP服务是Internet上最早应用于主机之间进行数据传输的基本服务之一。是目前Internet上使用最广泛的文件传送协议
一、FTP概述
FTP(File TransferProtocol,文件传输协议)是典型的C/S架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能。FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。
TCP协议:20,21端口。
20端口用于建立数据连接,并传输文件数据。
21端口用于建立控制连接,并传输FTP控制命令
1、Standard模式(主动模式)
FTP客户端首先和FTPServer的TCP21端口建立,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器通过自己的TCP 20端口发送数据。FTPserver必须和客户端建立一个新的连接用来传送数据。
2、Passive模式(被动模式)
在建立控制通道的时候和standard模式类似,当客户端通过这个通道发送PASV命令的时候,FTPserver打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server将通过这个端口进行数据的传送,这个时候FTp server不再需要建立一个新的和客户。
二、文件存储类型
1、DAS ---- 直连式存储
Direct-Attached Storage,简称DAS。
DAS存储是最常见的一种存储方式,尤其是在中小企业应用中。PC中的硬盘或只有一个外部SCSI接口的JBOD都属于DAS架构。DAS是指存储设备直接连接到服务器总线上,存储设备只与一台独立的主机连接,其他主机不能使用这个存储设备。DAS存储设备与服务器主机之间的连接通道通常采用SCSI连接,DAS存储设备主要是磁盘阵列(RAID: Redundant Arrays of Independent Disks)、磁盘簇JBOD:Just a Bunch Of Disks)等。
2、SAN ---- 存储区域网络
存储区域网络:Storage Area Network,简称SAN(可以使用空间,管理也是你来管理)。
存储区域网络,这个是通过光纤通道或以太网交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。
3、NAS ---- 网络附加存储
网络附加存储:Network-Attached Storage,简称NAS(存储和管理空间都在远程)。
NAS存储就是存储设备通过标准的网络拓扑结构(比如以太网)添加到一群计算机上。与DAS以及SAN不同,NAS是文件级的存储方法。NAS是文件级的存储方法,它的重点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。
NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内,同时NAS的应用非常灵活。但NAS有一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。
DAS | NAS | SAN | |
---|---|---|---|
传输类型 | SCSI | IP | IP、FC、SAS |
数据类型 | 数据块 | 文件 | 数据块 |
典型应用 | 任何 | 文件服务器 | 数据库应用 |
优点 | 磁盘与服务器分离, 便于统一管理 | 不占用应用服务器资源 广泛支持操作系统 扩展较容易, 即插即用,安装简单方便 | 高扩展性 高可用性 数据集中,容易管理 |
缺点 | 连接距离短 数据分散,共享困难 存储空间利用率不高 扩展性有限 | 不适合存储量大的块级应用 数据备份及恢复占用网络带宽 | 相比NAS成本成本较高 安装和升级比NAS复杂 |
4、三种存储架构的应用场景
- DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业
- NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低
- SAN则适用于大型应用或数据库系统,缺点是成本高、较为复杂
5、常见的端口号
- ftp 20(数据) 21(命令) 软件 要利用协议 协议是通过应用程序实现
- ssh 22
- http 80
- https 443
- telnet 23
- mysql 3306
- redis 6379
以后会经常使用
三、FTP工作原理介绍
FTP文件传输协议:FTP是早期的三个应用级协议之一,基于C/S结构
数据传输格式:二进制(默认)和文本
双通道协议:命令和数据连接 21 命令端口(权限,认证) 20数据端口(真实传数据)
1、FTP作用:
internet上用来远程传输文件的协议。
2、FTP工作原理与流程
从服务器角度
FTP数据连接分为主动模式和被动模式
-
主动(PORT style):服务器开启20端口主动连接客户端,传递数据
命令(控制):客户端:随机port ---> 服务器:21/tcp
数据:客户端:随机port <---服务器:20/tcp
主动模式:服务器主动发起数据连接
-
被动(PASV style):服务器开启随机端口被动等待客户端连接,然后传递数据
命令(控制):客户端:随机port ---> 服务器:21/tcp
数据:客户端:随机port ---> 服务器:随机port /tcp
被动模式:服务器被动等待数据连接
1.主动模式流程图:
主动模式工作原理:FTP 客户端连接到FTP 服务器的21号端口,发送用户名、密码和连接模式命令端口等,客户端随机开放一个端口(1024以上),发送PORT 命令到FTP 服务器,告知服务器客户端采用主动模式并开放端口,FTP服务器收到PORT主动模式命令和端口后,通过服务器的20号端口和客户端开放的端口连接,发送数据。
主动模式有个弊端,客户端必须关闭防火墙,否则不能传输数据。
2.被动模式流程图
被动模式工作原理: PASV是Passive的缩写,中文成为被动模式。FTP客户端连接到FTP服务器所监听的21号端口,发送用户名和密码,发送PASV命令到FTP服务器,服务器在本地也随机开放一个端口(1024以上),然后把开放的端口告知客户端,而后客户端再连接到服务器开放的端口进行数据传输
注:以上的说明主动和被动,是相对于的FTP server端而判断,如果server去连接client开放的端口,说明是主动的,相反,如果client去连接server开放的端口,则是被动。
注意:
FTP服务器默认使用TCP协议的20、21端口与客户端进行通信windows:Serv-U、FTP server、filezilla serverLinux:ProFTPD 重点:Very Secure FTP(vsftp)工作环境中都用这个FTP服务TFTP:端口号69,简单FTP(没有加密协议)ssh SFTP 文件传输
FTP服务状态码
1XX:信息 125: 数据连接打开
2XX:成功类状态 200:命令OK 230:登录成功
3XX:补充类 331:用户名OK
4XX:客户端错误 425:不能打开数据连接
5XX:服务器错误 530:不能登录
用户认证:
-
匿名用户:ftp,anonymous,对应Linux用户ftp root
-
系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
-
虚拟用户:特定服务的专用用户,独立的用户/密码文件
3、常见的FTP相关的软件
Wu-ftpd,Proftpd,Pureftpd,Filezilla Server,Serv-U,Wing FTP Server,IIS
vsftpd:Very Secure FTP Daemon,CentOS 默认FTP服务器
高速,稳定,下载速度是WU-FTP的两倍
ftp.redhat.com数据:单机最多可支持15000个并发
四、搭建和配置FTP服务
vsftpd官网: https://security.appspot.com/vsftpd.html
1、安装前的准备工作
服务端
1.关闭防火墙和核心防护
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #开机自关闭防火墙
setenforce 0 #临时关闭增强型安全功能
vim /etc/selinux/confing #永久关闭防火墙 将里面的配置改为 SELINUX=disabled
2.查看信息并安装服务
rpm -qa|grep vsftpd #查看vsftp信息
[root@localhost ~]#rpm -qa |grep vsftpd
[root@localhost ~]#yum install -y vsftpd ##安装ftp服务
[root@localhost ~]#systemctl start vsftpd ##开启服务
[root@localhost ~]#systemctl status vsftpd ##查看服务状态
给服务端做备份
客户端连接服务端
先下载ftp
ftp里面的一些指令
退出用 quit 或着使用 ctrl+d
五、vsftpd服务常见配置
配置文件
vim /etc/vsftpd/vsftpd.conf
1、修改默认命令端口
listen_port=628 默认值为21
服务端:修改默认命令端口
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf #随便一行插入listen_port=628[root@node2 pub]#systemctl restart vsftpd #重启服务[root@node2 pub]#ss -ntl #查看端口
操作:
在服务端修改端口号
进入客户端要共享文件时必须带上已修改的端口号
2、主动模式端口
connect_from_port_20=YES ##主动模式端口为20
ftp_data_port=20 ##(默认) 指定主动模式的端口
3、被动模式端口
pasv_min_port=6000 ##0为随机分配,端口范围会影响客户端的并发数
pasv_max_port=6010
4、使用当地时间
use_localtime=YES ##使用当地时间(默认为NO,使用GMT)
##格林威治 +8 ==当地时间
5、匿名用户登录
anonymous_enable=YES ##支持匿名用户,CentOS8 默认不允许匿名
no_anon_password=YES ##匿名用户略过口令检查 , 默认NO
6、匿名用户上传
anon_upload_enable=YES ##匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES ##匿名建目录chmod 777 /var/ftp/pub
########客户端#########
ftp> !ls #使用! 代表 在本地使用命令
abc.txt anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
ftp> cd pub
ftp>put abc.txt #上传 文件, ftp 默认不允许上传文件, 安全考虑, 人人都传空间,病毒等问题
local: abc.txt remote: abc.txt
227 Entering Passive Mode (192,168,91,101,126,214).
550 Permission denied.#########服务端#####
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf
#此处是被注释开启就可以了
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[root@node2 pub]#ll /var/ftp/pub/
#没权限写 ,在传文件时需要考虑 文件系统权限, 你是远程用户把文件放在磁盘上,需要考虑文件系统的权限
#程序权限,文件系统权限
总用量 1048576
-rw-r--r--. 1 root root 1073741824 8月 4 16:02 bigfile[root@node2 pub]#setfacl -m u:ftp:rwx /var/ftp/pub/
#添加ftp 用户的权限
[root@node2 pub]#setfacl -m u:ftp:rwx /var/ftp
[root@node2 pub]#setfacl -b /var/ftp属主 权限发生了改变######客户端#####
ftp> cd pub ####注意文件夹位置
250 Directory successfully changed.
ftp> put abc.txt
local: abc.txt remote: abc.txt
227 Entering Passive Mode (192,168,91,101,181,62).
150 Ok to send data.
226 Transfer complete.### 是可以对ftp的根目录设置权限的 一般是不对根做操作的
### 但是再次登录会有问题
注意:还需要开启文件系统访问的权限,不能给FTP根目录写权限否则报如下错误
anon_world_readable_only=no ##只能下载全部读的文件, 默认YES
anon_umask=0333 ##指定匿名上传文件的umask,默认077,注意:0333中的0不能省略
anon_other_write_enable=YES ##可删除和修改上传的文件,默认NO
7、匿名用户 下载、删除文件
在 vsftpd 软件中 只可以 下载有 读权限的文件, 没有读权限的文件时不可以直接下载的需要修改下面的选项
anon_world_readable_only=NO ##只能下载全部读的文件, 默认YES
anon_umask=0333 ##指定匿名上传文件的umask,默认077,注意:0333中的0不能省略
anon_other_write_enable=YES ##可删除和修改上传的文件,默认NO
举例:
1.可以下载上传上去的文件
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf ##修改配置文件anon_world_readable_only=NO
anon_umask=0333
2.可以删除文件
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf ##修改配置文件anon_other_write_enable=YESftp> cd pub. ftp> lsftp> delete abc.txt ftp> ls227 Entering Passive Mode (192,168,91,101,112,18).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 1073741824 Aug 04 08:02 bigfile
-rw------- 1 14 50 471 Aug 04 09:20 dm.sh
226 Directory send OK.
8、指定匿名用户的上传文件的默认的所有者和权限
匿名用户上传文件默认的所有者是ftp 用户 是可以修改的
chown_uploads=YES #默认NO
chown_username=zhangsan
chown_upload_mode=0644
9、Linux系统用户
local_enable=YES ##是否允许linux用户登录
write_enable=YES ##允许linux用户上传文件
local_umask=022 ##指定系统用户上传文件的默认权限对应umask
例子: 系统用户登录:使用普通用户登录默认是在 系统用户的 家目录
[root@localhost ~]#ftp 20.0.0.100
Connected to 20.0.0.100 (20.0.0.100).
220 (vsFTPd 3.0.2)
Name (20.0.0.100:root): zhangsan
331 Please specify the password.
Password:
ftp> pwd
257 "/home/zhangsan"
举例:控制系统用户等信息
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf #最后加入 复制注意空格
guest_enable=YES
guest_username=ftp
#local_root=/ftproot 可以注释此行,默认所有用户都在 ftp用户的家目录
10、将所有系统用户映射为指定的guest用户
guest_enable=YES ##所有系统用户都映射成guest用户
guest_username=ftp ##配合上面选项才生效,指定guest用户
local_root=/ftproot ##指定guest用户登录所在目录,但不影响匿名用户的登录目录
user_config_dir=/etc/vsftpd/conf.d/ ##每个用户独立的配置文件目录
11、禁锢系统用户
1.禁锢所有系统用户在家目录中
chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢
2.禁锢用户开启白名单和黑名单
chroot_list_enable=YES #默认是NO
chroot_list_file=/etc/vsftpd/chroot_list #默认值当chroot_local_user=YES和chroot_list_enable=YES时,则chroot_list中用户不禁锢,即白名单,在文件里的不禁锢
当chroot_local_user=NO和chroot_list_enable=YES时, 则chroot_list中用户禁锢,即黑名单,在文件里的 禁锢
12、日志
ftp 默认启动日志
#wu-ftp 日志:默认启用
xferlog_enable=YES #启用记录上传下载日志,此为默认值
xferlog_std_format=YES #使用wu-ftp日志格式,此为默认值
xferlog_file=/var/log/xferlog #可自动生成, 此为默认值#vsftpd日志:默认不启用
dual_log_enable=YES 使用vsftpd日志格式,默认不启用
vsftpd_log_file=/var/log/vsftpd.log 可自动生成, 此为默认值
13、提示信息
ftpd_banner="welcome to kgc ftp server"
banner_file=/etc/vsftpd/ftpbanner.txt
14、pam模块实现用户访问
pam_service_name=vsftpd
#pam配置文件:/etc/pam.d/vsftpd/etc/vsftpd/ftpusers ###默认文件中用户拒绝登录,默认是黑名单,但也可以是白名单##由于ftp是明文传输, 抓取是可可以获取密码的 默认是不让使用root 用户登录的
15、传输速率,单位:字节/秒
anon_max_rate=0 ##匿名用户的最大传输速率,以字节为单位,比如:1024000表示1MB/s
local_max_rate=0 ##本地用户的最大传输速率#限速
[root@centos8 ~]#vim /etc/vsftpd/vsftpd.conf
anon_max_rate=1024000
local_max_rate=102400
六、建立内网的yum仓库
1、通过ftp服务搭建内网yum仓库服务器
1.先关闭服务端和客户端的防火墙和核心防护
1.服务端:
2.安装vsftp服务
3.挂载磁盘
4.客户端:
5.关闭防火墙和核心防护,安装ftp服务并检查
6.搭建ftp仓库
lisi用户的根
7.测试安装
2、通过http服务搭建内网yum仓库服务器
1.先关闭服务端和客户端的防火墙和核心防护
1.服务端
2.安装httpd并开启
浏览器输入服务端地址可以查看,20.0.0.100
3.挂载磁盘
4.客户端
5.关闭防火墙和核心防护,安装服务并检查
6.搭建http仓库
7.测试安装
相关文章:

Linux网络 ----- 网络文件共享服务之FTP服务
引言 FTP服务是Internet上最早应用于主机之间进行数据传输的基本服务之一。是目前Internet上使用最广泛的文件传送协议 一、FTP概述 FTP(File TransferProtocol,文件传输协议)是典型的C/S架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实…...

如何避免知识付费小程序平台的陷阱?搭建平台的最佳实践
随着知识经济的兴起,知识付费已经成为一种趋势。越来越多的人开始将自己的知识和技能进行变现,而知识付费小程序平台则成为了一个重要的渠道。然而,市面上的知识付费小程序平台琳琅满目,其中不乏一些不良平台,让老实人…...
第89讲:MySQL数据库迁移方面需要考虑的因素以及XBK企业级备份参数
文章目录 MySQL数据库迁移方面需要考虑的因素1.MySQL数据库迁移方面要考虑的因素2.MySQL5.6升级到5.7版本的方法3.MySQL迁移到其他数据库的方法4.为什么要从XBK备份中还原某张表的数据5.从XBK备份中还原某张表的数据6.XtrBackup企业级备份参数 MySQL数据库迁移方面需要考虑的因…...

Python爬虫经典实战项目——电商数据爬取!
电商数据采集爬虫背景 在如今这个网购风云从不间歇的时代,购物狂欢持续不断,一年一度的“6.18年中大促”、“11.11购物节”等等成为了网购电商平台的盛宴。在买买买的同时,“如何省钱?”成为了大家最关心的问题。 比价、返利、优…...

Qt 快捷键设置
以 “在编辑时自动补齐”快捷键 为例: 位置:红色 搜索快捷键:蓝色 修改方式:绿色 快捷键:黄色...
【C++】取整函数ceil(),floor(),round()
使用 //引入头文件 #include <cmath> //函数使用 double around(double x) double afloor(double x) double aceil(double x) 结果取值 floor(x) 返回是小于或等于x的最大整数,如floor(-9.9)-10,floor(9.9)9;若为整数,最后的结果等于本…...
GoLang刷题之leetcode
题目42:接雨水 题目描述: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水 题解: 对于每一个横坐标能接到的雨水量max(左侧最大纵坐标,右侧最大…...
uniapp如何分包加载
在uni-app中,可以通过配置manifest.json文件来实现分包加载。以下是具体操作步骤: 在项目根目录下找到并打开manifest.json文件。在"uni-app"节点中,找到并修改"subPackages"节点,添加需要分包的页面路径。 …...

019、错误处理:不可恢复错误与panic!
鉴于上一篇文章过长,不方便大家阅读和理解,因此关于Rust中的错误处理, 我将分以下3篇来讲。 另外,随着我们学习的不断深入,难度也会越来越大,但不用担心。接下来只需要让自己的脚步慢一些,认真搞…...

jar包部署到linux虚拟机的docker中之后连不上mysql
前言: 跟着黑马学习docker的时候,将java项目部署到了docker中,运行访问报错,反馈连不上mysql。 错误描述: 方法解决: 概述:在虚拟中中,我进入项目容器的内部,尝试ping…...

如何筛选小红书护肤达人,笔记类型怎么选?
网络时代,借助KOL来放大产品的声量和产量,是品牌的常见策略,但是,不同的产品对应不同的KOL,价值是完全不一样。如何筛选达人,已经成为了品牌方的必修课!今天我们和大家分享下如何筛选小红书护肤达人&#x…...

红黑树(RBTree)
目录 一、红黑树简介 二、红黑树的来源 三、什么是红黑树 四、红黑树的性质 五、红黑树的节点定义 六、红黑树的操作 6.1、红黑树的查找 6.2、红黑树的插入 七、红黑树的验证 八、红黑树和AVL树的比较 一、红黑树简介 红黑树是一种自平衡的二叉查找树…...

训练YOLOS-S
文章目录 1 数据处理2 配置训练参数3 可能会遇到的报错 1 数据处理 修改类别数:在models/detector.py中定位到def build(args):,将num_classes进行修改,改为最大的类别id1。我有4个类别,类别id是从0~3,因此max_id3&am…...
集成SpringCloudAlibaba短信服务 短信验证码
1.1 SpringCloudAlibaba短信服务简介 短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力。 产品优势:覆盖全面、高并发处理、消息堆积处理、开发管理简单、智能监控调度 产品功能:短信通知、短信验证码、…...

存储卷(数据卷)—主要是nfs方式挂载
1、定义 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的,一旦容器被删除,数据会丢失。k8s基于控制器创建的pod,delete相当于重启,容器的状态会恢复到原始状态。一旦回到原始状态,后天编辑的文件…...

城市酷选模式开发(门店免单排队返利系统)
城市酷选模式开发(门店免单排队返利系统)【阿巴】城市酷选商城开发免单排队返利小程序搭建、城市酷选模式开发、城市酷选系统商城开发、城市酷选APP系统开发、城市酷选 每经AI快讯,有投资者在投资者互动平台提问:“以塑代钢”已成…...

JNPF低代码引擎到底是什么?
最近听说一款可以免费部署本地进行试用的低代码引擎,源码上支持100%源码,提供的功能和技术支持比较完善。借助这篇篇幅我们了解下JNPF到底是什么? JNPF开发平台是一款PaaS服务为核心的零代码开发平台,平台提供了多租户账号管理、主…...
#基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
我们在使用jupyter 写代码后,经常遇到一些写完想把文件转成markdown格式的场景,这里就教你怎么处理相关的问题 使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件 pip install nbconvert pip install pandoc jupyter nbconvert --to markdown 文…...

工信部颁发的人工智能证书《自然语言与语音处理设计开发工程师》证书到手啦!
工信部颁发的人工智能证书《自然语言与语音处理设计开发工程师》证书拿到手啦! 近期正在报考的工信部颁发的人工智能证书还有: 《计算机视觉处理设计开发工程师》中级 2024年1月24日至28日-北京 《自然语言与语音处理设计开发工程师》中级 第二期 20…...

canvasdrawer 微信原生小程序生成海报图片
在小程序中生成海报是一种非常有效的推广方式 用户可以使用小程序的过程中生成小程序海报并分享给他人 通过海报的形式,用户可以直观地了解产品或服务的特点和优势 常见绘制海报方式 目前,小程序海报有两种常见的实现方式: canvas 绘制…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...

AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...

Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...