Linux系统管理与编程12: FTP服务配置
(本实验在CentOS7/8上完成,OpenEuler上暂时未实现)
兰生幽谷,不为莫服而不芳;
君子行义,不为莫知而止休。
1 实验目标
1)理解FTP服务器原理
2) 掌握FTP服务器的配置文件
3)具备安装部署VSFTP的能力
4) 具备FTP的故障排除能力
2 实验拓扑
图2- 1
实验先决条件:每台主机内网192.168.100.0/24相通,且满足下列条件之一
(1)通过NAT与真实外网相连;
(2)搭建本地yum源。
3实训原理/流程
3.1 FTP原理
FTP是文件传输协议(FileTransferProtocol)属于TCP/IP协议簇的一部分,工作于OSI七层模型的应用层、表示层和会话层,控制端口号为21,数据通信端口号为20。使用FTP服务需要拥有该FTP服务器授权的用户标识和口令进行登录,在远程主机上获得相应的权限后,才可以使用FTP服务器提供的服务。
在互联网中有一部分FTP服务属于“匿名(anonymous)”的,即匿名FTP服务器。匿名FTP服务器的目的是为公众提供文件下载服务,不要求用户必须是该FTP服务器的登记注册用户。
匿名FTP服务器访问时也是有用户名的。用户名是特殊用户名:anonymous。
FTP用于控制文件的双向传输,是Internet文件传送的基础,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。FTP支持跨路由的通信,能够在全互联网上提供服务。
FTP支持多种文件传输方式,这些格式通常由FTP系统决定。文本方式:在文本传输模式中,其传输方式会进行调整,主要体现为对不同操作系统的回车、换行、结束符等进行转译,将其自动文件转译成目的主机的文件格式。
二进制方式:在二进制传输中,保存文件的位序,以便原始和拷贝是逐位对应的,该传输方式不对文件做任何的修改。
FTP的工作模式分为两种:模式1:Standard(也为PORT,主动模式)FTP的客户端发送PORT命令到FTP服务器进行端口确认。
图2- 2
模式2:Passive(也为PASV,被动模式)FTP的客户端发送PASV命令到FTP服务器进行端口确认。
图2- 3
FTP:Standard模式与Passive模式的区别主动模式和被动模式的区别可概述为两个方面:主动模式传输数据是服务器连接到客户端的端口,被动模式传输数据是客户端连接到服务器的端口。
主动模式需要客户端必须开放端口给服务器,被动模式只需要服务器端开放端口给客户端连接即可。注意:很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。
根据使用者的登录情况,FTP服务器的账号可分为实体用户、访客、匿名用户三种。实体用户(RealUser)FTP服务器默认允许实体用户(即系统用户)的登录。
以实体用户做为FTP服务器的身份登录时,系统默认不对实体用户进行任何限制,该用户可以针对整个文件系统进行自身权限的工作,即FTP服务器的管理员权限。
访客身份(Guest)在使用FTP服务器时,往往会给不同的部门或者某个特定的用户设置一个专属的帐户,创建一个访客身份就可满足。
匿名身份(Anonymous)匿名用户即不需通过账户密码就可登录访问FTP服务器资源的用户,这类用户在FTP服务器中没有确切的指定账户,但可以访问FTP服务器中开放的文件资源。
需要FTP服务器端允许匿名用户访问。
vsftpd(verysecureFTPdaemon,非常安全的FTP守护进程)是Linux系统下最为常用的FTP服务器软件,具有高安全性、带宽限制、良好的伸缩性、小巧轻快的特性。
vsftpd在安全性、高性能及稳定性三个方面都具有较好表现。vsftpd提供的主要功能虚拟IP设置、虚拟用户、Standalone、inetd操作模式强大的单用户设置能力及带宽限流等。
在安全方面vsftpd从原理上修补了Wu-FTP、ProFTP、BSD-FTP等大多数FTP服务器的安全缺陷,使用安全编码技术解决了缓冲溢出问题,并能有效避免通配符类型的拒绝服务攻击。
使用vsftpd作为官方网站FTP服务器的公司和团队有RedHat、SuSE、Debian、GNU、GNOME、KDE、Gimp、OpenBSD等。
FTP服务器的账号可分为实体用户、访客、匿名用户三种。配置不同虚拟用户访问权限不同。
3.2 实验步骤
3.2.1项目背景
ftp虚拟用户适用于企业内部文件传输、多用户协作场景,需通过独立账户控制权限(如部门间数据隔离)。创建一个系统用户virtual,该用户和虚拟用户建立映射,该用户映射的虚拟用户配置不同访问权限(ftp最安全的模式):在ftp目录下gavin(只能下载)/jimson(允许建立、修改、不得删除)/admin(全部权限)
3.2.2 步骤
1)创建虚拟机并完成网络连接配置。(略)
规划表
主 机 名 称 | 操作系统 | IP地址 |
FTP | CentOS7.9 | 192.168.学号.23(自定vmnet) |
DNS | OpenEuler22 | 192.168.学号.200(自定)(前面实验已经部署了) |
Client1 | OpenEuler22 | 192.168.学号.222(自定) |
Client2 | Win server 2012 | 192.168.学号.221(自定) |
2)建立本地虚拟用户
[root@ftp ~]# useradd -d /home/ftp virtual |
3)建立虚拟用户数据库
[root@ftp ~]# mkdir /etc/vsftpd [root@ftp ~]# vi /etc/vsftpd/logins.txt
|
我们看看db文件是什么样的:vi vsftpd_login.db
图2-4
4) 建立基于vsftpd_login的PAM授权文件
//查看版本号,以确定pam文件的位置 [root@ftp ~]# uname -m x86_64 所以pam文件: [root@ftp ~]# cat /etc/pam.d/vsftpd.vu auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login |
5)设置用户权限
建立用来存放用户权限设置文件的目录并进入
[root@ftp ~]# mkdir /etc/vsftpd/virtual && cd /etc/vsftpd/virtual |
并在该文件夹下依次建立与logins.txt对应的帐号名称相同的文件
[root@ftp virtual]# vi gavin anon_world_readable_only=NO local_root=/home/ftp [root@ftp virtual]# vi jimson anon_world_readable_only=NO write_enable=YES anon_mkdir_write_enable=YES anon_upload_enable=YES local_root=/home/ftp [root@ftp virtual]#vi admin anon_world_readable_only=NO write_enable=YES anon_mkdir_write_enable=YES anon_upload_enable=YES anon_other_write_enable=YES local_root=/home/ftp |
write_enable=YES # 允许写入
anon_upload_enable=YES # 允许虚拟用户上传文件
anon_mkdir_write_enable=YES # 允许虚拟用户创建目录
anon_other_write_enable=YES # 允许虚拟用户执行其他操作(如改名、删除)
anon_umask=022 # 上传文件的掩码,如022时,上传目录权限为755,文件权限为644
local_root=/var/ftp/virftp/ # 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录
创建:gavin(只能下载)/jimson(允许建立、修改、不得删除)/admin(全部权限
)5、设置vsftpd.conf
//找不到配置文件在哪里吗? [root@localhost virtual]# find / -name vsftpd.conf /etc/vsftpd/vsftpd.conf //找到了,那就动手吧 [root@localhost virtual]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES ftpd_banner=Welcome to virtual FTP service. chroot_local_user=YES allow_writeable_chroot=YES listen=YES listen_ipv6=NO guest_enable=YES guest_username=virtual pam_service_name=vsftpd.vu user_config_dir=/etc/vsftpd/virtual |
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_enable=YES #允许本地用户登录,
guest_enable=YES #启用虚拟账户
guest_username=virftp #把虚拟账户映射到系统账户virftp
chroot_local_user=YES #锁定账户的根目录
allow_writeable_chroot=YES #启用chroot时,虚拟用户根目录允许写入
pam_service_name=vsftpd #使用虚拟用户验证(PAM验证)
user_config_dir=/etc/vsftpd/vsftpd_viruser #设置存放各虚拟用户配置文件的目录6、重新启动vsftpd
service vsftpd restart |
3.3验证
客户端安装ftp
以gavin身份登录,可以查看,但无法创建和删除
[root@squid ~]# ftp 192.168.100.68 Connected to 192.168.100.68 (192.168.100.68). 220 Welcome to virtual FTP service. Name (192.168.100.68:root): gavin 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> dir 227 Entering Passive Mode (192,168,100,68,36,13). 150 Here comes the directory listing. drwx------ 2 1007 1007 45 Nov 27 09:21 wuzz drwx------ 2 1007 1007 6 Nov 27 08:54 wuzz1 226 Directory send OK. ftp> cd /wuzz 250 Directory successfully changed. ftp> dir 227 Entering Passive Mode (192,168,100,68,112,187). 150 Here comes the directory listing. -rw-r--r-- 1 0 0 166 Nov 27 09:21 服务器期末考试题目.txt 226 Directory send OK. ftp> rmdir wuzz 550 Permission denied. |
以jimson身份登录,可以查看,创建,但不能删除
[root@squid ~]# ftp 192.168.100.68 Connected to 192.168.100.68 (192.168.100.68). 220 Welcome to virtual FTP service. Name (192.168.100.68:root): jimson 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> mkdir wuzz2 257 "/wuzz2" created ftp> rmdir wuzz2 550 Permission denied. |
以admin身份登录,具有完全权限
[root@squid ~]# ftp 192.168.100.23 Connected to 192.168.100.68 (192.168.100.68). 220 Welcome to virtual FTP service. Name (192.168.100.68:root): admin 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> rmdir wuzz1 250 Remove directory operation successful. ftp> rmdir wuzz2 250 Remove directory operation successful. ftp> mkdir wuzz3 257 "/wuzz3" created ftp> dir 227 Entering Passive Mode (192,168,100,68,104,64). 150 Here comes the directory listing. drwx------ 2 1007 1007 45 Nov 27 09:21 wuzz drwx------ 2 1007 1007 6 Nov 27 10:36 wuzz3 226 Directory send OK. |
4.思考题
在一个部署完整ftp的Linux服务器上,如何彻底删除ftp服务及其用户、数据目录?
相关文章:
Linux系统管理与编程12: FTP服务配置
(本实验在CentOS7/8上完成,OpenEuler上暂时未实现) 兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 1 实验目标 1)理解FTP服务器原理 2) 掌握FTP服务器的配置文件 3)具备安装部署VSFTP的能力 4) 具备FTP的故障排除能…...
乐观锁与悲观锁的使用场景
悲观锁的应用场景 悲观锁的基本思想是假设并发冲突会发生,因此在操作数据时会先锁定数据,直到完成操作并提交事务后才释放锁。这种方式适用于写操作较多、并发冲突可能性较高的场景。 高写入比例的数据库操作:如果系统中有很多写操作&#x…...
金融级隐私安全之DeepSeek R1 模型去中心化存储和推理实现方案
目录 DeepSeek R1 进入去中心化存储网络意味着什么? 它是如何工作的? Atoma、Walrus和 Sui Atoma Network 已成功将 DeepSeek R1 670B 参数推理模型上传到 Walrus 去中心化存储网络。这标志着这种规模的模型首次在去中心化存储层上可用,确保无需依赖中心化基础设施即可实…...
基于django大数据平台的交通数据可视化设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,基于大数据平台的交通数据可视化系统当然不能排除在外。基于大数据平台的交通数据可视化系统是在实际应用和软件工程的开发原理之上&#…...
STM32 vs ESP32:如何选择最适合你的单片机?
引言 在嵌入式开发中,STM32 和 ESP32 是两种最热门的微控制器方案。但许多开发者面对项目选型时仍会感到困惑:到底是选择功能强大的 STM32,还是集成无线的 ESP32? 本文将通过 硬件资源、开发场景、成本分析 等多维度对比…...
柳宗元经典的10首唐诗
1、最孤独的诗:《江雪》 江雪 千山鸟飞绝,万径人踪灭。 孤舟蓑笠翁,独钓寒江雪。 这首诗被誉为“唐诗五绝最佳”之作。 富于理想的“永贞革新”失败后,柳宗元被贬永州,母亲也在半年后离世。年届三十,政…...
Windows11介绍(中英文版)
一、Windows 11 的发布背景与发展历程 Windows 11 是微软公司推出的一款重要的操作系统,它是 Windows 操作系统系列的最新版本之一。微软在操作系统领域拥有悠久的历史和丰富的经验,从早期的 Windows 95 开启了图形化操作系统的新时代,到 Wi…...
使用 VSCode 本地历史记录恢复误删除文件
vsCode未知操作意外删除项目根目录入口代码文件 使用vsCode多年, 第一次遇见这种情况, 只是下载了几个插件, 可能打开的窗口太多, 有几个代码版本比对的页面, 在没有察觉的时候, 意外删除了项目根目…...
前端面试宝典---数据类型
基本数据类型 对于基本类型在创建时无需使用 new 关键字 Bigint在实际开发不常用,如果对于精度要求高可以使用第三方库,如decimal.js 基本数据类型介绍 undefined:当变量被声明但未赋值,或者函数没有返回值时,就会呈现…...
Dinky 和 Flink CDC 在实时整库同步的探索之路
摘要:本文整理自 Dinky 社区负责人,Apache Flink CDC contributor 亓文凯老师在 Flink Forward Asia 2024 数据集成(二)专场中的分享。主要讲述 Dinky 的整库同步技术方案演变至 Flink CDC Yaml 作业的探索历程,并深入…...
【Proteus仿真】【32单片机-A008】MPX4115压力检测系统设计
目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 联系作者 一、主要功能 1、压力检测与LCD显示 2、超过上限,降压模块启动 3、压力检测范围15kpa-115kpa 4、压力阈值设置 5、超限报警 二、使用步骤 系统运行后,LCD160…...
银河麒麟系统虚拟机网络ping不通的解决方法
问题描述:使用NAT模式搭建了银河麒麟系统虚拟主机,虚拟机内部可以联网,可以查询到具体的ip地址,同时也可以在虚拟机内部ping同宿主机ip,但使用宿主机却无法ping同银河麒麟虚拟机ip,使用ssh、ftp、sftp等工具…...
spark数据清洗案例:流量统计
一、项目背景 在互联网时代,流量数据是反映用户行为和业务状况的重要指标。通过对流量数据进行准确统计和分析,企业可以了解用户的访问习惯、业务的热门程度等,从而为决策提供有力支持。然而,原始的流量数据往往存在格式不规范、…...
关于AIGC stable diffusion 在图像超分上的算法整理
参考文档: c论文阅读基于Stable Diffusion的图像超分 - 知乎 十分钟读懂Stable Diffusion运行原理 - 知乎 1.difussion model 扩散模型的基本原理 diffusion model 扩散模型是一类生成模型的统称,基于扩散过程生成数据。这类模型的核心是通过逐步加噪…...
Stable Diffusion ComfyUI 基础教程(一) ComfyUI安装与常用插件
前言: 相信大家玩 Stable Diffusion(以下简称SD)都是用的 web UI 操作界面吧,不知道有没有小伙伴听说过 ComfyUI。ComfyUI 是 一个基于节点流程的 Stable Diffusion 操作界面,可以通过流程,实现了更加精准…...
[leetcode]差分算法
一.差分算法性质 1.1计算差分数组: b[i] a[i] - a[i - 1] 1.2差分数组的性质 1.2.1对差分数组的每一项作前缀和,可以得到原来的数组 ai a1∑j1i−1dj 1.2.2将差分数组的某一项加i,那么其后面的所有项都会相对于原数组加i 让2~4项加3 这个第三…...
大数据技术之SPARK
Spark Core 什么是 RDD 代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合 弹性 存储的弹性:内存与磁盘的自动切换; 容错的弹性:数据丢失可以自动恢复; 计算的弹性:…...
S32K144的m_data_2地址不够存,重新在LD文件中配置地址区域
在开发平台软件的时候代码中超出了64K的内存,单纯在ld文件中,增加m_data_2的存储长度,原先是0x00007000,我将长度修改为0x00008000,起始地址还是0x20000000,软件编译没有报错堆栈超出,但是软件下载到单片机中之后,144不…...
Spyder、PyCharm、VS Code 和 Jupyter Notebook 对比分析
在进行 Python 编程时,Spyder、PyCharm、VS Code 和 Jupyter Notebook 是最常用的几款开发工具(IDE/编辑器)。以下是它们在不同维度下的对比分析 🔧 一、基础介绍 软件类型主要特点Spyder科学计算IDE类似 MATLAB,集成…...
vue3腾讯云直播 前端拉流(前端页面展示直播)
1、引入文件,在index.html <link href"https://tcsdk.com/player/tcplayer/release/v5.3.2/tcplayer.min.css" rel"stylesheet" /><!--播放器脚本文件--><script src"https://tcsdk.com/player/tcplayer/release/v5.3.2/t…...
应急物资仓库管理系统|基于GAV仓库管理的应用
基于AGV应用的应急物资管理系统(智物资DW-S300)建设的目标是实现应急物资管理的信息化、智能化、规范化,保证应急物资的安全性和使用时的高效性,做到应急物资可追踪、可溯源。 构建一个应急物资仓储管理系统实现包括系统基本信息管理、入库管理、出库管理、筹措管理…...
ArkTS语言入门之接口、泛型、空安全、特殊运算符等
前言 臭宝们,今天我们来学习ArkTS中最后的一些内容。 实现接口 包含implements子句的类必须实现列出的接口中定义的所有方法,但使用默认实现定义的方法除外。 interface DateInterface {now(): string; } class MyDate implements DateInterface {no…...
蓝桥杯c++每日刷题(洛谷)
目录 P10385 [蓝桥杯 2024 省 A] 艺术与篮球 - 洛谷 (luogu.com.cn) P8706 [蓝桥杯 2020 省 AB1] 解码 - 洛谷 (luogu.com.cn) P8711 [蓝桥杯 2020 省 B1] 整除序列 - 洛谷 (luogu.com.cn) P8722 [蓝桥杯 2020 省 AB3] 日期识别 - 洛谷 (luogu.com.cn) P10385 [蓝桥杯 2024…...
Python+Requests 企业级接口测试入门(1~3天)
PythonRequests 企业级接口测试入门 1、GET接口简单案例 我的答案: import time import requestsdef get_all_users():try:response requests.get(urlhttps://reqres.in/api/users, #接口地址timeout10 #超时时间)respons…...
【android bluetooth 框架分析 01】【关键线程 3】【bt_jni_thread 线程介绍】
1. bt_jni_thread 职责介绍 bt_jni_thread 这个线程的作用是专门负责处理蓝牙 JNI 层的消息循环,也可以说是 C 层和 Java 层交互的桥梁线程。 1.1 什么是 JNI 层?为什么需要这个线程? JNI(Java Native Interface)是 …...
CCF - GESP Python三级考试题目示例
CCF - GESP Python三级考试题目示例,你可以根据实际需求进行调整。 一、单选题(每题2分,共30分) 以下关于Python中函数的说法,错误的是( ) A. 函数定义使用def关键字 B. 函数必须有返回值 C.…...
Windows10系统更改盘符
Windows10系统更改盘符 导航 文章目录 Windows10系统更改盘符导航更改盘符 更改盘符 按下wini,再按k进入磁盘管理器 右击你想更改的磁盘,选择“更改驱动器号”和路径,选择好驱动器号后确定即可...
软件功能性测试有多重要?功能性测试工具有哪些?
软件功能性测试是指对软件应用程序进行的测试,旨在验证软件的每一个功能是否按预定要求正常运作。功能性测试通常基于软件的需求文档,从用户的角度出发,确保所有功能都能够满足用户的需求。 软件功能性测试在软件开发生命周期中扮演着至关重…...
未来生态映像:杭州的科技自然协奏曲
故事背景 故事发生在2050年的中国杭州,这座千年古城已蜕变为科技与自然完美交融的未来生态之城。从晨曦微露的西湖到暮色中的良渚文化村,每个角落都上演着人类智慧与自然韵律的动人对话。 故事摘要 当第一缕阳光亲吻西湖的生态浮岛,无人机携带…...
电商核心指标解析与行业趋势:数据驱动的增长策略【大模型总结】
电商核心指标解析与行业趋势:数据驱动的增长策略 在电商领域,数据是决策的核心。从流量监测到用户行为分析,从价格策略到技术赋能,每一个环节的优化都离不开对核心指标的深度理解。本文结合行业最新趋势与头部平台实践࿰…...
ubuntu自动更新--unattended-upgrades
ubuntu自动更新--unattended-upgrades 1 介绍2 发展历程3 配置与使用4 disable Auto update服务命令 参考 1 介绍 Unattended-Upgrades 是一个用于自动更新 Debian 及其衍生系统(如 Ubuntu)的工具。它的主要功能是自动检查、下载并安装系统更新…...
在Ubuntu 22.04上配置【C/C++编译环境】
在Ubuntu 22.04上配置C/C编译环境 如果你想在Ubuntu 22.04上编译和运行C或C程序,首先需要安装一个合适的编译器和相关工具。本文将为你提供详细的安装建议和操作步骤,帮助你快速搭建开发环境。 准备工作 在开始之前,确保你的系统可以通过终…...
费马小定理
快速幂 理论 a n a a ⋯ a a^n a a \cdots a anaa⋯a,暴力的计算需要 O(n) 的时间。 快速幂使用二进制拆分和倍增思想,仅需要 O(logn) 的时间。 对 n 做二进制拆分,例如, 3 13 3 ( 1101 ) 2 3 8 ⋅ 3 4 ⋅ 3 1 3^{13}…...
什么是音频预加重与去加重,预加重与去加重的原理是什么,在什么条件下会使用预加重与去加重?
音频预加重与去加重是音频处理中的两个重要概念,以下是对其原理及应用条件的详细介绍: 1、音频预加重与去加重的定义 预加重:在音频信号的发送端,对音频信号的高频部分进行提升,增加高频信号的幅度,使其在…...
程序代码篇---时间复杂度空间复杂度
文章目录 前言一、时间复杂度(Time Complexity)定义1. 常见时间复杂度类型2. 计算规则忽略常数项保留最高阶项循环嵌套递归算法 3. 代码示例(1)𝑂(1):常数时间(2)𝑂(&…...
化工企业数字化转型:从数据贯通到生态重构的实践路径
一、战略定位:破解行业核心痛点 化工行业面临生产安全风险高(全国危化品企业事故率年增5%)、能耗与排放压力大(占工业总能耗12%)、供应链协同低效(库存周转率低于制造业均值30%)三大挑战。《石…...
Mysql备忘记录
1、简介 Mysql操作经常忘记命令,本文将持续记录Mysql一些常用操作。 2、常见问题 2.1、忘记密码 # 1、首先停止Mysql服务 systemctl stop mysqld # windows 从任务管理器里面停 # 2、更改配置文件 my.cnf (windows是 ini文件) vim /etc/my.cnf 在[mysqld]下面添…...
Python 爬取 1688.item_get_factory 接口:获取工厂档案信息实战指南
在电商采购和供应链管理中,了解供应商的工厂信息是至关重要的一步。1688 作为国内领先的 B2B 平台,提供了丰富的供应商和工厂档案信息。通过 item_get_factory API 接口,开发者可以获取工厂的详细信息,包括工厂名称、地址、联系方…...
【Proteus仿真】【32单片机-A009】矩阵按键系统设计
目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 联系作者 一、主要功能 1、按键值与LCD显示 2、矩阵按键 二、使用步骤 系统运行后,LCD1602显示当前的按键值; 当按下不同按键后显示屏更新对应的按键值。 三、硬件资…...
【11408学习记录】英语语法精析:主从复合句之定语从句完全指南——从规则到实战例句一网打尽
定语从句 英语语法总结——主从复合句定语从句定语从句的写法先行词的作用分类定语从句的使用补充 每日一句词汇第一步:找谓语第二步:断开第三步:简化第一句第二句第三句第四句 英语 语法总结——主从复合句 定语从句 定语从句就是一个句子…...
go游戏后端开发31:麻将游戏的碰牌与胡牌逻辑
以下是润色后的版本: 1. 碰牌逻辑 1.1 触发碰牌 当一个玩家弃牌后,其他玩家可以选择碰牌。如果当前玩家决定碰牌,系统需要通知所有玩家这一操作。碰牌操作完成后,当前玩家需要出一张牌,系统同样需要通知所有玩家。 …...
vLLM实战:多机多卡大模型分布式推理部署全流程指南
1. 环境准备与基础配置 1.1 系统要求 依赖组件: # 基础工具安装 sudo apt-get install -y lsof git-lfs nvidia-cuda-toolkit1.2 虚拟环境配置 使用conda创建隔离环境,避免依赖冲突: conda create -n vllm python3.10 -y conda activate…...
RAI Toolbox详解
RAI Toolbox详解 摘要 RAI Toolbox是一个综合性的工具集,旨在帮助开发者和AI系统利益相关者更负责任地开发和监控AI系统,并做出更好的数据驱动决策。本文将详细介绍RAI Toolbox的功能、使用场景以及与类似AI项目的对比,帮助读者全面了解RAI…...
Python高级爬虫之js逆向+安卓逆向1.3节:Python数据类型
目录 引言: 1.3.1 两大数据类型 1.3.2 不可变数据类型 1.3.3 可变数据类型 1.3.4 再不跳槽就老了 引言: 大神薯条老师的高级爬虫安卓逆向教程: 这套爬虫教程会系统讲解爬虫的初级,中级,高级知识,涵盖…...
The 2024 CCPC National Invitational Contest (Changchun),第17届吉林省赛 C
补题链接 题解是什么意思呢,首先我们需要知道的是,斐波那契数列可以用矩阵快速幂和矩阵乘法求解 ( F ( n 1 ) F ( n ) ) ( 1 1 1 0 ) ( F ( n ) F ( n − 1 ) ) M ( F ( n ) F ( n − 1 ) ) \begin{pmatrix}F(n1) \\ F(n)\end{pmatrix} \begin{pma…...
GPT-4o-image模型:开启AI图片编辑新时代
在生成式AI技术爆发式迭代的今天,智创聚合API率先突破多模态创作边界,正式发布集成GPT-4o-image模型的创作平台,以“文生图-图生图-循环编辑”三位一体的技术矩阵,重新定义数字内容生产流程。生成图像效率较传统工具提升300%&…...
Java流程控制【if分支三种形式】
if分支三种形式 ①if(条件表达式) 代码; }②if(条件表达式){ 代码1; }else{ 代码2; }③if(条件表达式1){ 代码1; }else if(条件表达式2){ 代码2; }else if(条件表达式3){ 代码3;...... }else{ 代码n&#…...
2025 年陕西消防设施操作员考试攻略:历史文化名城的消防传承与创新
陕西拥有丰富的历史文化遗产,众多古建筑分布其中,同时也在不断推进现代化建设,消防工作面临传承与创新的双重任务,这在考试中也有所体现。 考点融合与特色:一方面,古建筑的消防保护是重点,包…...
关于node.js 隐式修改数组长度的问题
// 删除手牌 proto.remove function (handCards, _cards) { let saveHandCards this.deepCloneTL(handCards);//保存原先的牌 console.warn("删除手牌000:",JSON.stringify(handCards)); console.warn("删除手牌111:",JSON.stringify(_card…...
探索文件与流的世界:File、InputStream 和 OutputStream 的奇妙之旅
目录 一、File 类——文件管理的小能手 1. 创建和删除文件 2. 检查文件属性 3. 路径操作 二、InputStream——读取数据的管道 1. 读取单个字节 2. 批量读取字节 3. 关闭流 三、OutputStream——写入数据的通道 1. 写入单个字节 2. 批量写入字节 3. 刷新和…...