最全对象存储(云盘)挂载本地主机或服务器
1.对象存储介绍
1.1 分类
分布式存储的应用场景相对于其存储接口,现在流行分为三种:
块存储: 这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,块存储一般体现形式是卷或者硬盘(比如windows里面看到的c盘),数据是按字节来访问的,对于块存储而言,对里面存的数据内容和格式是完全一无所知的。可以简单的理解为玉米粒。
文件存储: 通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。可以简单的理解为数据像玉米粒一样组成玉米棒子,再对应到不同的玉米杆上,要找到某个玉米粒,先找到玉米杆,再找到玉米棒子,然后根据玉米粒在玉米棒子上的位置找到它。
对象存储: 也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL和其他扩展,如七牛、腾讯cos、阿里oss、亚马逊S3。可以简单的理解为数据的玉米粒被做成了玉米罐头,每个玉米罐头都有一个唯一出厂号,但是买卖罐头,都一次是一盒为单位。
1.2 挂载协议
本章重点介绍基于S3FS协议的云存储挂载。
S3FS是Google开发的一款支持将对象存储中的bucket以文件形式导出的文件系统接口,兼容POSIX语法
S3FS基于FUSE开发的文件系统,允许Linux和MacOS以及windows挂载S3的存储桶到本地文件系统,并保持对象原来格式。
只要支持S3存储协议的都支持挂载,比如minio、华为云OBS、阿里云OSS等,特殊一点的腾讯cos自己整了个cosfs,类似于S3FS。
2.华为云OBS、亚马逊云S3等挂载Linux系统
2.1 安装s3fs
#centos 安装
yum -y install s3fs-fuse
#ubantu 安装
apt install s3fs
2.2 挂载明亮介绍
S3FS参数说明
命令: s3fs BUCKET:[/PATH] MOUNTPOINT [OPTION]…
OPTIONS:
- passwd_file: 指定要使用的s3fs密码文件
- url: 设置用于访问对象存储的 url
- endpoint: 存储端点,默认值为us-east-1
- umask: 为装载目录设置umask
- no_check_certificate: 不检查认证
- use_path_request_style: 使用路径请求样式(使用传统API调用),兼容支持与不支持S3的类似api的虚拟主机请求
nonempty: 允许挂载点为非空目录 - default_acl: 默认private,取值有private,public-read
- ensure_diskfree: 设置磁盘可用空间。如果磁盘空闲空间小于此值,s3fs不适用磁盘空间
- allow_other: 允许所有用户访问挂载点目录,可将该挂载点用于创建NFS共享
- use_cache: 指定本地文件夹用作本地文件缓存。默认为空
- del_cache: 在S3FS启动和退出时删除本地缓存
- enable_noobj_cache: 减少s3fs发送的列举桶的请求,从而提升性能
- dbglevel: 设置消息级别,默认关键(critical), 可以使用 info 进行调试输出
- multireq_max: 列出对象的并行请求的最大数据
- parallel_count: 上传大对象的并行请求数
- retries: 默认值为5,传输失败重试次数
- storage_class: 存储类(默认为标准) ,值有 standard,standard_ia , onezone_ia , reduced_redundancy
- connect_timeout: 连接超时时间,默认为300秒
- readwrite_timeout: 读写超时,默认值为60秒
- max_stat_cache_size: 最大静态缓存大小,默认值为100000个条目(约40MB)
- stat_cache_expire: 为stat缓存中条目指定过期时间(秒)。此过期时间表示自stat缓存后时间
- -f : 前台输出执行信息
- -d: 将dubug消息输出到 syslog中
2.3 创建访问密钥文件
#命令格式:echo [IAM用户访问密钥ID]:[ IAM用户访问密钥] >[密钥文件名] ( $ACCESS_KEY_ID:SECRET_ACCESS_KEY)
echo "username:password" > /data/s3fs/.passwd-s3fs
# 设置密钥智能被当前用户访问
chmod 600 /data/s3fs/.passwd-s3fs
2.4 运行挂载命令
亚马逊云s3官网参考:https://aws.amazon.com/cn/blogs/china/s3fs-amazon-ec2-linux/
华为云官网OBS官网参考:https://support.huaweicloud.com/fstg-obs/obs_12_0008.html
#挂载 S3存储
# 命令格式:s3fs [S3存储桶名] [本地目录名] -o passwd_file=[密钥文件名] -o endpoint=[区域名]
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://s3.cn-north-1.amazonaws.com.cn -o endpoint=cn-north-1
#挂载华为云OBS
# 命令格式:s3fs [S3存储桶名] [本地目录名] -o passwd_file=[密钥文件名] -o endpoint=[区域名]
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://obs.cn-north-4.myhuaweicloud.com
#挂载minio存储
# 需要加上 use_path_request_style进行兼容
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://www.mydomain.com:9001 -o use_path_request_style
# 可以使用 -o dbglevel=info -f 进行输出调试信息
s3fs prodfile-bucket /data/s3fs/s3mnt -o passwd_file=/data/s3fs/.passwd-s3fs -o url=http://www.mydomain.com:9001 -o use_path_request_style -o dbglevel=info -f
2.5 开机自动挂载
写入到 /etc/fstab
# 命令格式:s3fs#[S3存储桶名] [本地目录名] fuse _netdev,[options1],[optins2]... 0 0
s3fs prodfile-bucket /data/s3fs/s3mnt fuse _netdev,passwd_file=/data/s3fs/.passwd-s3fs,url=http://obs.cn-north-4.myhuaweicloud.com 0 0
3.阿里云oss等挂载MacOS系统
步骤基本上于Linux系统相同,命令略有差别
阿里云oss挂载官网参考:https://www.alibabacloud.com/help/zh/oss/developer-reference/mount-oss-buckets-to-local-file-systems-by-using-amazon-s3-protocols
3.1 装s3fs的命令
brew install --cask macfuse
brew install gromgit/fuse/s3fs-mac
3.2 配置账号访问信息
#将具有Bucket访问权限的AccessKey ID和AccessKey Secret信息存放在.passwd-s3fs文件中。
echo $ACCESS_KEY_ID:SECRET_ACCESS_KEY > ${HOME}/.passwd-s3fs
#将.passwd-s3fs文件的权限设置为600。
chmod 600 ${HOME}/.passwd-s3fs
3.3 挂载存储空间
#创建挂载点
mkdir /tmp/oss-bucket
#将华东1(杭州)地域的examplebucket挂载至/tmp/oss-bucket。
s3fs examplebucket /tmp/oss-bucket -o passwd_file=$HOME/.passwd-s3fs -ourl=http://oss-cn-hangzhou.aliyuncs.com
#如果是与OSS同地域的ECS访问,您可以使用oss-cn-hangzhou-internal.aliyuncs.com的内网endpoint。
3.4 设置开机自动启动
- 创建开机自启动脚本
#vim oss-start.sh
#初始化需要先解绑定,否则会有意外的错误发生
umount -f /tmp/oss-bucket
nohup s3fs -f examplebucket /tmp/oss-bucket -o passwd_file=$HOME/.passwd-s3fs -ourl=http://oss-cn-hangzhou.aliyuncs.com >/dev/null 2>&1 &
#增加可执行权限
#chmod +x oss-start.sh
- 将启动脚本增加到启动项中
4.阿里云oss、腾讯云cos等挂载windos系统
阿里云oss挂载官网参考:https://www.alibabacloud.com/help/zh/oss/developer-reference/mount-oss-buckets-to-local-file-systems-by-using-amazon-s3-protocols
腾讯云cos挂载官网参考:https://cloud.tencent.com/document/product/436/55241
windos系统挂载云盘需要借助Rclone,Rclone是一个命令行程序,用于管理云存储中的数据,支持在50多种云存储产品间同步数据。相对于s3fs和goofys,Rclone还支持将存储空间挂载到Windows系统上,作为本地磁盘共享数据。
4.1 Rclone特点
- Rclone支持文件同步、文件传输、加密、挂载等。
- Rclone支持多种系统,能让您将存储空间挂载到本地文件系统中,并通过多种协议提供服务
关于Rclone的介绍,请参见Rclone。
4.2 安装Winfsp
以下载winfsp-1.12.22339版本为例。下载地址,请参见Winfsp
4.3 下载Rclone工具
以下载rclone-v1.60.1-windows-amd64版本为例。下载地址,请参见Rclone。Rclone是一个命令行程序,下载后,只需解压到本地任意目录即可,此处以解压到D:\Rclone目录为例。
4.4 配置Rclone。
- 将D:\Rclone添加到环境变量。
小提示:环境变量设置,在“我的电脑”->“属性”->“高级”->“环境变量”中增加或修改环境变量后,一般需重启系统才能使之生效
-
打开命令行窗口,输入rclone --version,然后按下Enter。返回rclone v1.60.1,表明Rclone已成功安装。
-
输入rclone config命令,然后按下Enter。
-
输入n,按下Enter,然后新建new remote。
-
以new remote命名为test-remote为例。
-
输入磁盘名称,例如oss-disk,然后按下Enter。
-
选择包含Amazon S3 Compliant Storage的选项,即输入5,然后按下Enter。
-
选择包含Alibaba Cloud Object Storage System (OSS)的选项,即输入2,然后按下Enter。
-
执行到env_auth>,按下Enter。
-
执行到access_key_id>,输入OSS的访问密钥AccessKey ID,然后按下Enter。
-
执行到 secret_access_key> ,输入OSS的访问密钥AccessKey Secret,然后按下Enter。
-
执行到endpoint>,输入访问OSS的endpoint,然后按下Enter。
-
以访问华东1(杭州)外网为例,endpoint填写为oss-cn-hangzhou.aliyuncs.com。如果是ECS上的Windows环境,您可以使用oss-cn-hangzhou-internal.aliyuncs.com的内网endpoint。
-
执行到acl>,选择Object读写权限。该选项仅对新上传的Object有效。您可以根据实际需求选择合适的读写权限。此处以选择default(私有权限)为例,即输入1,然后按下Enter。
-
执行到storage_class>,选择Object的存储类型。 此处以选择default(继承Bucket存储类型)为例,即输入1,然后按下Enter。
-
执行到Edit advanced config? (y/n) ,输入n,然后按下Enter。
-
输入q,完成所有配置。
4.5 挂载存储空间
以将examplebucket挂载到E:盘,并以D:\disk-cache路径作为缓存目录为例。
rclone mount oss-disk:/examplebucket E: --cache-dir D:\disk-cache --vfs-cache-mode writes
返回The service rclone has been started信息,表示挂载成功。此时,您还可以查看到examplebucket(E:)的磁盘。
4.6 设置开机启动
- 创建oss挂载启动脚本
#在E:\oss-cache\start-shell目录创建oss-start.bat,内容如下:
rclone mount oss-disk:/examplebucket E: --cache-dir D:\disk-cache --vfs-cache-mode writes
- 创建windows程序开机启动脚本
#创建start-oss-shell.bat文件
powershell.exe -command "& {Start-Process -WindowStyle hidden -FilePath 'E:\oss-cache\start-shell\oss-start.bat'}"
- 将开机启动脚本移动至powershell开机启动项下
win+R输入 shell:startup,随后将start-oss-shell.bat文件放在该文件下
关机重启即可测试
5.特殊项腾讯云cos挂载Linux系统
腾讯云cos挂载windows和oss、s3等基本类似,均是需要借助上述Rclone工具
但是cos挂载到linux系统时,与其他云盘就不一样了,很是特殊,使用s3fs挂载之后打不开cos,需要借助其特有的挂载工具cosfs才可以,真是格色…。
腾讯云cosfs官网参考:https://cloud.tencent.com/document/product/436/30743
5.1 cosfs安装
官网教程:https://cloud.tencent.com/document/product/436/6883
工具下载地址:https://github.com/tencentyun/cosfs/releases
下载与系统相匹配的rpm文件后安装
#CentOS7.0
sudo wget https://github.com/tencentyun/cosfs/releases/download/v1.0.21/cosfs-1.0.21-centos7.0.x86_64.rpm
sudo rpm -ivh cosfs-1.0.21-centos7.0.x86_64.rpm
#注意: 如果安装时报错,提示 conflicts with file from package fuse-libs-*,则加 --force 参数再次安装。
#查看是否安装完成
cosfs --help
5.2 配置账号访问信息
#将具有Bucket访问权限的AccessKey ID和AccessKey Secret信息存放在.passwd-s3fs文件中。
echo $ACCESS_KEY_ID:SECRET_ACCESS_KEY > /tmp/passwd-sts
#将.passwd-s3fs文件的权限设置为600。
chmod 600 /tmp/passwd-sts
5.3 执行挂载命令
#使用命令选项 -ocam_role=[role] 指定角色为 sts、-opasswd_file=[path] 指定密钥文件路径,示例如下:
cosfs examplebucket-1250000000 /mnt/cosfs -ourl=http://cos.ap-guangzhou.myqcloud.com -odbglevel=info -oallow_other -ocam_role=sts -opasswd_file=/tmp/passwd-stscosfs bucketName mount_address -ourl=http://cos.ap-beijing.myqcloud.com -odbglevel=info -opasswd_file=/tmp/passwd-sts
#如何挂载 Bucket 下的一个目录
cosfs examplebucket-1250000000:/my-dir /mnt/cosfs -ourl=http://cos.ap-guangzhou.myqcloud.com -odbglevel=info
#注意:my-dir 必须以 / 开头。
5.4 设定 COSFS 开机自动挂载?
#安装 fuse 包:
#CentOS系统
sudo yum install -y fuse
#Ubuntu系统
sudo apt-get install fuse#在 /etc/fstab 文件中添加如下的内容,其中,_netdev 选项使得网络准备好后再执行当前命令:
cosfs#examplebucket-1250000000 /mnt/cosfs fuse _netdev,allow_other,url=http://cos.ap-guangzhou.myqcloud.com,dbglevel=info
相关文章:

最全对象存储(云盘)挂载本地主机或服务器
1.对象存储介绍 1.1 分类 分布式存储的应用场景相对于其存储接口,现在流行分为三种: 块存储: 这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,块存储一般…...
24校招,江淮汽车软件测试工程师技术面+HR面
前言 记录一下楼主的面试经历,希望对后来者有用 时间:15min 平台:腾讯会议 过程 技术面试 自我介绍 为啥不考研 实习收获 你有做过软件开发的工作吗? 除了Java和Python,还会其他的语言吗? 学过C吗…...

从零开始学习Zeppelin:大数据可视化分析的交互式开发系统!
介绍:Apache Zeppelin是一个基于Web的交互式开发系统,主要用于进行大数据可视化分析。其核心概念是notebook,所有的操作都可以在notebook中完成。Zeppelin提供了一套非常全面的数据分析解决方案,支持数据采集、数据发现、数据分析…...
VCG 曲面重建之滚球算法
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 滚球算法(BPA)是一种与alpha形状相关的曲面重建方法。直观地想象一个具有给定半径的3D球,我们把它扔在点云上。如果它击中任何3个点(并且它没有穿过这3个点),它就创造了一个三角形。然后,算法从现有三角形的边缘…...

为什么使用双token实现无感刷新用户认证?
单token机制 认证机制:对与单token的认证机制在我们项目中仅使用一个Access Token的访问令牌进行用户身份认证和授权的方案处理。 不足之处: 安全性较低(因为只有一个token在客户端和服务器端之间进行传递,一目Acess Token被截获或者被泄露…...

论文阅读 Self-Supervised Burst Super-Resolution
这是一篇 ICCV 2023 的文章,主要介绍的是用自监督的方式进行多帧超分的学习 Abstract 这篇文章介绍了一种基于自监督的学习方式来进行多帧超分的任务,这种方法只需要原始的带噪的低分辨率的图。它不需要利用模拟退化的方法来构造数据,而且模…...

Spring+SpringMVC+Mybatis进行项目的整合
Spring SpringMVCM Mybatis 整合 一、 通过idea创建maven工程 二、 引入依赖项以及导入mybatis逆向工程的插件 将如下的文件替换所在工程的pom文件 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4…...

vue3 实现简单计数器示例——一个html文件展示vue3的效果
目的:作为一个新手开发,我想使用 Vue 3 将代码封装在 HTML 文件中时,进行界面打开展示。 一、vue计数示例 学了一个简单计数器界面展示,代码如下: <!DOCTYPE html> <html lang"en"><head&…...
面试经典150题(88-89)
leetcode 150道题 计划花两个月时候刷完,今天(第四十四天)完成了2道(88-89)150: 88.(22. 括号生成) 题目描述: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效…...

【设计模式-3.3】结构型——享元模式
说明:说明:本文介绍设计模式中结构型设计模式中的,享元模式; 游戏地图 在一些闯关类的游戏,如超级玛丽、坦克大战里面,游戏的背景每一个关卡都不相同,但仔细观察可以发现,其都是用…...

【征服redis6】Redis的内存淘汰详解
目录 1.redis的基本策略 2.Redis中的缓存淘汰策略 3.Redis内存不足的情况 4.几种淘汰策略的实现原理 5.项目实践与优化策略 5.1 配置案例 5.2 项目优化策略参考 数据库存储会将数据保存到磁盘中,而Redis的核心数据是在内存中的,而Redis本身主要用来…...

多文件转二维码的两种方式,有兴趣的了解一下
多个文件能一键生成二维码吗?二维码是现在很多人用来展示文件内容的一种手段,在制作二维码图片之后,其他人扫码就可以查看文件或者下载文件,有效的提升文件获取的效率。一般情况下,文件二维码分为多个文件生成一个二维…...

uniapp APP接入Paypal
1. 登录paypal开发者中心, 2. 选择 Apps & Credentials 点击 Create App创建应用,创建后点击编辑按钮,如图: 3. 进入应用详情,勾选Log in with PayPal点击 Advanced Settings 添加return URL等信息并保存。如图&a…...

QT-贪吃小游戏
QT-贪吃小游戏 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include "Snake.h" #include "Food.h" #include "Stone.h" #include "Mushroom.h" #include "Ai.h" #include "Game.h" #inclu…...

HubSpot:如何设计和执行客户旅程?
在当今数字化时代,企业成功的关键之一是建立并优化客户旅程。HubSpot作为一体化市场营销平台,通过巧妙设计和执行客户旅程,实现了个性化决策,关键节点的精准引导,为企业带来了数字化转型的引领力。 一、HubSpot是如何设…...

【Go学习】macOS+IDEA运行golang项目,报command-line-arguments,undefined
写在前面的话:idea如何配置golang,自行百度 问题1:通过idea的terminal执行go test报错 ✘ xxxxxmacdeMacBook-Pro-3 /Volumes/mac/.../LearnGoWithTests/hello go test go: go.mod file not found in current directory or any parent …...
优先看我的博客:工控机 Ubuntu系统 输入密码登录界面后界面模糊卡死,键盘鼠标失效(不同于其他博主的问题解决方案,优先看我的博客。)
工控机Ubuntu 输入密码登录界面后界面模糊卡死,键盘鼠标失效 (不同于其他博主的问题解决方案,工控机Ubuntu的系统 优先看我的博客。) 系统版本:ubuntu18.04 主机:工控机 应用场景:电力系统巡…...

SAP 中的外部接口:预扣税
文章目录 1 Introduction2 implementation3 Summary 1 Introduction We use BP create WTAX_TYPE ,I don’t find a bapi. We will update for it . We will impement WTax type , WTax code ,Subject in the ‘BP’. 2 implementation UPDATE lfbw SET witht gs_alv-wit…...
代码随想录算法训练营第二十三天| 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
669. 修剪二叉搜索树 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 解题思路:如果当前结点小于所给区间,那该节点及其左子树肯定不符合条件,返回其右子树作为上一结点子树;反之…...
设计模式——解释器模式
解释器模式(Interpreter Pattern)是一种行为型设计模式,它提供了一个框架,用于定义语言的语法规则,并通过这些规则来解析和解释特定语法结构表示的句子。这种模式主要应用于需要对简单语言进行解释或编译的小型系统中。…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...