Elasticsearch 快照和恢复

文章目录

  • 简介
  • 快照存储库
    • 说明
    • 创建或更新存储库
      • 接口说明
      • 路径参数
      • 查询参数
      • 请求正文
    • 使用 fs 方式创建存储库
    • 验证储存库
    • 获取存储库信息
    • 删除存储库
    • 清理储存库
  • 快照
    • 创建快照
      • 路径参数
      • 查询参数
      • 请求正文
      • 示例
    • 获取快照
      • 查询参数
      • 示例
    • 克隆快照
      • 查询参数
      • 示例
    • 获取快照状态
      • 示例
    • 恢复快照
      • 查询参数
      • 请求正文
      • 示例
    • 删除快照

简介

快照是正在运行的Elasticsearch集群的备份。可以使用快照来:

  • 定期备份群集,无需停机
  • 删除或硬件故障后恢复数据
  • 在群集之间传输数据等

默认情况下,集群的快照包含集群状态、所有常规数据流和所有常规索引

快照必须存储在存储库中,存储库的内容不能修改,否则会造成快照损坏或导致数据不一致等一系列问题。所以在创建快照之前,需要先创建存储库

快照存储库

说明

  • 存储库需要集群中的节点可以共享访问(共享文件系统、云存储等)
  • 多个集群之间不要使用同一个储存库。避免多个集群修改同样的存储库,造成不必要的问题。
  • 存储库的内容不要修改,避免操作数据损坏等问题

创建或更新存储库

PUT /_snapshot/my_repository
{"type": "url","settings": {"url": "https://pan.baidu.com/disk/main#/transfer/send?surl=ABkAAAAddddAABEHbw"}
}

type 表示存储库的类型,存储库支持多种类型,我们示例是使用的 url 类型。

接口说明

PUT /_snapshot/<repository>POST /_snapshot/<repository>

路径参数

repository:存储库的名称。

查询参数

  • master_timeout
    (可选,时间单位)指定等待连接到主节点的时间段。如果超时之前未收到响应,则请求失败并返回错误。默认为30s.
  • timeout
    (可选,时间单位)指定等待响应的时间段。如果超时之前未收到响应,则请求失败并返回错误。默认为30s.
  • verify
    (可选,布尔值)如果true,则请求验证存储库在集群中的所有主节点和数据节点上是否正常运行。如果false,则跳过此验证。默认为 true.

请求正文

  • type 存储库类型
    • azure Azure 存储库(微软)
    • gcs 谷歌云存储库
    • s3 S3存储库(MinIO对此进行了适配,所以也可以使用S3方式配置MinIO)
    • fs 共享文件系统存储库(如NFS等)
    • url 只读 URL 存储库(支持 file、ftp、http、https、jar 协议),只读存储库不能创建快照
    • hdfs Hadoop 分布式文件系统 (HDFS) 存储库(需安装 ES 官方插件)
  • settings 对应类型的配置(注意:每种类型不一样,本文只介绍url方式,其余方式请参考 官方文档:创建储存库 API )

注意:除了 file 协议,其他协议需要 elasticsearch.yml 配置 repositories.url.allowed_urls,此设置为数组。

repositories.url.allowed_urls: ["https://pan.baidu.com/disk/main#/transfer/send?surl=ABkAAAAddddAABEHbw"]

url 方式的 file 协议,以及 fs 方式,需要配置地址的父级目录到 elasticsearch.yml 的 path.repo 。

使用 fs 方式创建存储库

PUT /_snapshot/my_fs_repo
{"type": "fs","settings": {"location": "/DATA/soft/bak/my_test_bak"}
}

结果

{"acknowledged": true
}

请先配置 elasticsearch.yml 的 path.repo: [“/DATA/soft/bak”]

本示例以及本文下面的示例都需要关闭其他节点,只启动一个节点来使用,配置的文件地址也是启动的节点的文件路径。这样做是为了简化讲解、简化示例,存储库在集群下的 fs 路径需要共享文件系统挂载到每个主节点和数据节点的同样的路径下且每个节点都能访问的。要在集群环境使用本示例,请至少使用 NFS 等共享文件系统。

验证储存库

# /_snapshot/<repository>/_verify
POST /_snapshot/my_fs_repo/_verify

结果:

{"nodes": {"AST-4rnFRdagsd0juerSaw": {"name": "myNode2"},"oj5FEiVMRpuWV386zdwy3w": {"name": "myNode1"}}
}

我们的示例是单节点的,所以结果应该只有一个节点。

获取存储库信息

# /_snapshot/<repository>
GET /_snapshot/my_fs_repo
{"my_fs_repo": {"type": "fs","settings": {"location": "/DATA/soft/bak/my_test_bak"}}
}

删除存储库

# DELETE /_snapshot/<repository>
DELETE /_snapshot/my_fs_repo

清理储存库

# POST /_snapshot/<repository>/_cleanup
POST /_snapshot/my_fs_repo/_cleanup

快照

创建快照

PUT /_snapshot/<repository>/<snapshot>POST /_snapshot/<repository>/<snapshot>

路径参数

  • repository:储存库名
  • snapshot:快照名

查询参数

  • master_timeout
    (可选,时间单位)等待连接到主节点的时间。如果在超时到期之前没有收到响应,则请求将失败并返回错误。默认为30s .
  • wait_for_completion
    (可选,布尔)true:快照完成后,请求将返回响应。false:当快照初始化时,请求返回响应。默认为false

请求正文

  • expand_wildcards
    (可选,字符串)确定通配符模式在indices参数匹配数据流和索引。支持逗号分隔的值,例如open,closed。默认为all
    • all
      匹配任何数据流或索引,包括隐藏个
    • open
      匹配开放索引和数据流。
    • closed
      匹配关闭的索引和数据流。
    • hidden
      匹配隐藏的数据流和索引。必须与结合open ,关闭或两者兼而有之
    • none
      不要展开通配符模式
  • include_global_state
    (可选,布尔)true,在快照中包含群集状态。默认为 true。
  • indices
    (可选,字符串或字符串数组)要包含在快照中的数据流和索引的逗号分隔列表。默认为空数组 []。
  • feature_states
    (可选,字符串数组)哪些功能状态包含在快照中,与 include_global_state 配置共同作用,include_global_state 为true时才生效。默认为空数组[],表示所有。[“none”]表示不包含任何功能状态。
  • metadata
    (可选,对象)将任意元数据附加到快照,例如快照的拍摄者、拍摄原因或任何其他有用数据的记录。元数据必须小于1024字节。可使用来对快照进行相关描述。
  • partial
    (可选,布尔)false,如果快照中包含的一个或多个索引没有所有主分片可用,则整个快照将失败。默认为false。true,允许对具有不可用分片的索引进行部分快照。

示例

PUT /_snapshot/my_fs_repo/snapshot_test1
{"indices":"*","include_global_state": false,"metadata": {"message": "测试快照"}
}

结果

{"accepted": true
}

获取快照

GET /_snapshot/<repository>/<snapshot>

查询参数

  • master_timeout
    (可选,时间单位)等待连接到主节点的时间。如果在超时到期之前没有收到响应,则请求将失败并返回错误。默认为30s .
  • ignore_unavailable
    (可选,布尔)
    • false,对于任何不可用的快照,请求都会返回错误。默认为false .
    • true,请求将忽略不可用的快照,例如损坏或暂时无法返回的快照。
  • verbose
    (可选,布尔)true,返回有关每个快照的附加信息,例如拍摄快照的Elasticsearch版本、快照的开始和结束时间以及快照的分片数。默认为true。false,省略附加信息
  • index_names
    (可选,布尔)true,返回响应中每个快照中包含的索引名称列表。默认为true .
  • index_details
    (可选,布尔)true返回快照中每个索引的附加信息,包括索引中的分片数、索引的总大小(以字节为单位)以及索引中每个分片的最大段数。默认为false,表示此信息被省略
  • include_repository
    (可选,布尔)true,返回响应中每个快照的存储库名称。默认为true.
  • sort
    (可选,字符串)允许设置结果的排序顺序。默认为start_time,即按快照开始时间戳排序。
    • start_time
      按开始时间戳对快照进行排序。
    • duration
      按持续时间对快照进行排序。
    • name
      按名称对快照进行排序。
    • repository
      按存储库名称对快照进行排序。
    • index_count
      按快照包含的索引数对快照进行排序。
    • shard_count
      按快照包含的分片数对快照进行排序。
    • failed_shard_count
      按快照失败的分片数对快照进行排序。
  • size
    (可选,整数)要返回的最大快照数。默认为0表示无限制地返回所有与请求匹配的内容。
  • order
    (可选,字符串)排序顺序。默认为asc,表示升序。desc 降序
  • from_sort_value
    (可选,字符串)要开始检索的当前排序列的值。在按快照或存储库名称排序时,可以是字符串快照,也可以是存储库名称,在按索引或分片计数排序时,则可以是毫秒时间值或数字。
  • after
    (可选,字符串)从返回的偏移量标识符开始分页next响应正文中的字段。
  • offset
    (可选,整数)基于匹配此请求的快照开始分页的数值偏移量。为该参数使用非零值与after参数对应。默认为 zero .
  • slm_policy_filter
    (可选,字符串)通过快照所属的SLM策略名称的逗号分隔列表筛选快照。还接受通配符(*)和通配符组合

示例

GET /_snapshot/my_fs_repo/snapshot_test1?index_details=true

结果

{"snapshots": [ // 快照列表{"snapshot": "snapshot_test1", // 快照名称"uuid": "vn2YN19iRr6aG8YJ97paTw", // 快照统一标识符"repository": "my_fs_repo", // 存储库名称"version_id": 8060299, // 用于创建快照的 es 版本id"version": "8.6.2", // 用于创建快照的 es 版本号"indices": [ // 快照包含的索引列表".ds-.logs-deprecation.elasticsearch-default-2023.07.19-000002","users","person",".ds-ilm-history-5-2023.07.19-000002","students",".ds-ilm-history-5-2023.06.19-000001",".ds-.logs-deprecation.elasticsearch-default-2023.06.19-000001","person1"],"index_details": { // 快照中索引的信息(分片数、索引总大小等)".ds-.logs-deprecation.elasticsearch-default-2023.06.19-000001": {"shard_count": 1, // 分片数"size_in_bytes": 10572, // 索引索引分配的总大小(单位字节)"max_segments_per_shard": 1 // 每个分片的最大段数},"students": {"shard_count": 2,"size_in_bytes": 450,"max_segments_per_shard": 0},".ds-ilm-history-5-2023.06.19-000001": {"shard_count": 1,"size_in_bytes": 19887,"max_segments_per_shard": 2},".ds-.logs-deprecation.elasticsearch-default-2023.07.19-000002": {"shard_count": 1,"size_in_bytes": 225,"max_segments_per_shard": 0},".ds-ilm-history-5-2023.07.19-000002": {"shard_count": 1,"size_in_bytes": 23206,"max_segments_per_shard": 2},"person1": {"shard_count": 1,"size_in_bytes": 5667,"max_segments_per_shard": 1},"users": {"shard_count": 1,"size_in_bytes": 6123,"max_segments_per_shard": 1},"person": {"shard_count": 1,"size_in_bytes": 62979852,"max_segments_per_shard": 3}},"data_streams": [ // 快照中的数据流"ilm-history-5",".logs-deprecation.elasticsearch-default"],"include_global_state": false, // 是否包含集群状态"metadata": { // 创建快照时设置的信息"message": "测试快照"},"state": "SUCCESS", // 快照状态(IN_PROGRESS 快照当前正在运行)// SUCCESS 快照已完成,所有分片已成功存储。// FAILED 快照完成时出错,无法存储任何数据。// PARTIAL 已存储全局群集状态,但至少一个分片的数据未成功存储"start_time": "2023-08-02T06:11:55.210Z",// 快照创建的开始时间(时间戳)"start_time_in_millis": 1690956715210,// 快照创建的开始时间(毫秒)"end_time": "2023-08-02T06:11:58.212Z",// 快照创建的结束时间(时间戳)"end_time_in_millis": 1690956718212,// 快照创建的结束时间(毫秒)"duration_in_millis": 3002,// 快照创建所用时间(毫秒)"failures": [],// 创建时的故障"shards": { // 快照中的分片数"total": 9, // 总分片数"failed": 0, // 快照中未包含的分片数"successful": 9 // 快照中包含的分片数},"feature_states": [] // 功能状态,需要快照包含功能状态时才有值}],"total": 1, "remaining": 0
}

克隆快照

PUT /_snapshot/<repository>/<source_snapshot>/_clone/<target_snapshot>

查询参数

  • master_timeout
    (可选,时间单位)指定等待连接到主节点的时间段。如果在超时之前没有收到响应,则请求将失败并返回错误。默认为30s .
  • timeout
    (可选,时间单位)指定等待响应的时间段。如果在超时到期之前没有收到响应,则请求失败并返回错误。默认为30s .
  • indices
    (必需,字符串)要包含在快照中的以逗号分隔的索引列表。

示例

PUT /_snapshot/my_fs_repo/snapshot_test1/_clone/snapshot_test2

获取快照状态

GET _snapshot/_statusGET _snapshot/<repository>/_statusGET _snapshot/<repository>/<snapshot>/_status

示例

GET /_snapshot/my_fs_repo/snapshot_test1/_status

结果

{"snapshots": [ // 快照列表{"snapshot": "snapshot_test1", // 快照名"repository": "my_fs_repo", // 存储库名"uuid": "vn2YN19iRr6aG8YJ97paTw", // 快照统一标识符"state": "SUCCESS", // 当前状态"include_global_state": false, //是否包含集群状态"shards_stats": { // 分片状态"initializing": 0, // 正在初始化的分片数"started": 0, // 启动但尚未完成的分片数"finalizing": 0, // 正在完成但尚未完成的分片数"done": 9, // 成功初始化、启动和完成的分片数"failed": 0,// 快照中未包含的分片数"total": 9// 快照中包含的分片总数},"stats": {"incremental": { // "file_count": 39,"size_in_bytes": 63045982},"total": { // 快照引用的总大小"file_count": 39,"size_in_bytes": 63045982},"start_time_in_millis": 1690956715210, // 快照创建的初始时间"time_in_millis": 3002 // 快照创建总时间},"indices": {// 快照中包含的索引信息".ds-ilm-history-5-2023.06.19-000001": {"shards_stats": {"initializing": 0,"started": 0,"finalizing": 0,"done": 1,"failed": 0,"total": 1},"stats": {"incremental": {"file_count": 7,"size_in_bytes": 19887},"total": {"file_count": 7,"size_in_bytes": 19887},"start_time_in_millis": 1690956715410,"time_in_millis": 401},"shards": {"0": {"stage": "DONE","stats": {"incremental": {"file_count": 7,"size_in_bytes": 19887},"total": {"file_count": 7,"size_in_bytes": 19887},"start_time_in_millis": 1690956715410,"time_in_millis": 401}}}},"person1": {"shards_stats": {"initializing": 0,"started": 0,"finalizing": 0,"done": 1,"failed": 0,"total": 1},"stats": {"incremental": {"file_count": 4,"size_in_bytes": 5667},"total": {"file_count": 4,"size_in_bytes": 5667},"start_time_in_millis": 1690956715410,"time_in_millis": 401},"shards": {"0": {"stage": "DONE","stats": {"incremental": {"file_count": 4,"size_in_bytes": 5667},"total": {"file_count": 4,"size_in_bytes": 5667},"start_time_in_millis": 1690956715410,"time_in_millis": 401}}}},".ds-ilm-history-5-2023.07.19-000002": {"shards_stats": {"initializing": 0,"started": 0,"finalizing": 0,"done": 1,"failed": 0,"total": 1},"stats": {"incremental": {"file_count": 7,"size_in_bytes": 23206},"total": {"file_count": 7,"size_in_bytes": 23206},"start_time_in_millis": 1690956715410,"time_in_millis": 401},"shards": {"0": {"stage": "DONE","stats": {"incremental": {"file_count": 7,"size_in_bytes": 23206},"total": {"file_count": 7,"size_in_bytes": 23206},"start_time_in_millis": 1690956715410,"time_in_millis": 401}}}},"person": {"shards_stats": {"initializing": 0,"started": 0,"finalizing": 0,"done": 1,"failed": 0,"total": 1},"stats": {"incremental": {"file_count": 10,"size_in_bytes": 62979852},"total": {"file_count": 10,"size_in_bytes": 62979852},"start_time_in_millis": 1690956715410,"time_in_millis": 2802},"shards": {"0": {"stage": "DONE","stats": {"incremental": {"file_count": 10,"size_in_bytes": 62979852},"total": {"file_count": 10,"size_in_bytes": 62979852},"start_time_in_millis": 1690956715410,"time_in_millis": 2802}}}},"students": {"shards_stats": {"initializing": 0,"started": 0,"finalizing": 0,"done": 2,"failed": 0,"total": 2},"stats": {"incremental": {"file_count": 2,"size_in_bytes": 450},"total": {"file_count": 2,"size_in_bytes": 450},"start_time_in_millis": 1690956715410,"time_in_millis": 201},"shards": {"0": {"stage": "DONE","stats": {"incremental": {"file_count": 1,"size_in_bytes": 225},"total": {"file_count": 1,"size_in_bytes": 225},"start_time_in_millis": 1690956715410,"time_in_millis": 201}},"1": {"stage": "DONE","stats": {"incremental": {"file_count": 1,"size_in_bytes": 225},"total": {"file_count": 1,"size_in_bytes": 225},"start_time_in_millis": 1690956715410,"time_in_millis": 201}}}},".ds-.logs-deprecation.elasticsearch-default-2023.07.19-000002": {"shards_stats": {"initializing": 0,"started": 0,"finalizing": 0,"done": 1,"failed": 0,"total": 1},"stats": {"incremental": {"file_count": 1,"size_in_bytes": 225},"total": {"file_count": 1,"size_in_bytes": 225},"start_time_in_millis": 1690956715410,"time_in_millis": 0},"shards": {"0": {"stage": "DONE","stats": {"incremental": {"file_count": 1,"size_in_bytes": 225},"total": {"file_count": 1,"size_in_bytes": 225},"start_time_in_millis": 1690956715410,"time_in_millis": 0}}}},".ds-.logs-deprecation.elasticsearch-default-2023.06.19-000001": {"shards_stats": {"initializing": 0,"started": 0,"finalizing": 0,"done": 1,"failed": 0,"total": 1},"stats": {"incremental": {"file_count": 4,"size_in_bytes": 10572},"total": {"file_count": 4,"size_in_bytes": 10572},"start_time_in_millis": 1690956715410,"time_in_millis": 601},"shards": {"0": {"stage": "DONE","stats": {"incremental": {"file_count": 4,"size_in_bytes": 10572},"total": {"file_count": 4,"size_in_bytes": 10572},"start_time_in_millis": 1690956715410,"time_in_millis": 601}}}},"users": {"shards_stats": {"initializing": 0,"started": 0,"finalizing": 0,"done": 1,"failed": 0,"total": 1},"stats": {"incremental": {"file_count": 4,"size_in_bytes": 6123},"total": {"file_count": 4,"size_in_bytes": 6123},"start_time_in_millis": 1690956715410,"time_in_millis": 601},"shards": {"0": {"stage": "DONE","stats": {"incremental": {"file_count": 4,"size_in_bytes": 6123},"total": {"file_count": 4,"size_in_bytes": 6123},"start_time_in_millis": 1690956715410,"time_in_millis": 601}}}}}}]
}

恢复快照

POST /_snapshot/<repository>/<snapshot>/_restore

查询参数

  • master_timeout
    (可选,时间单位)等待连接到主节点的时间。如果在超时到期之前没有收到响应,则请求将失败并返回错误。默认为30s .
  • wait_for_completion
    (可选,布尔)true,当恢复操作完成时,请求返回响应。完成所有尝试后,即使一次或多次恢复失败。false,当restore操作初始化时,请求返回响应。默认为 false .

请求正文

  • ignore_unavailable
    (可选,布尔)true,请求将忽略中的任何索引或数据流指数那是快照中缺少的。false,请求将为任何缺少的索引或数据流返回错误。默认为 false .
  • ignore_index_settings
    (可选,字符串或字符串数组)不从快照恢复的索引设置。
  • include_aliases
    (可选,布尔)true,该请求将恢复所有已恢复数据流和磁盘的别名。false,请求不会恢复别名。默认为true .
  • include_global_state
    (可选,布尔)如果true,恢复群集状态。默认为false
  • feature_states
    (可选,字符串数组)要恢复的功能状态列表
  • index_settings
    (可选,对象)索引设置,用于添加或更改恢复的索引,包括支持索引。此设置不能更改 index.number_of_shards 设置
  • indices
    (可选,字符串或字符串数组)要恢复的索引和数据流的逗号分隔列表。默认为快照中的所有常规索引和常规数据流。
  • partial
    (可选,布尔)false,如果快照中包含的一个或多个索引没有主分片可用,则整个恢复操作将失败。默认为 false.
    true,允许还原包含不可用分片的索引的部分快照。只有成功包含在快照中的分片才会被恢复。所有丢失的分片都将重新创建为空。
  • rename_pattern
    (可选,字符串)定义要应用于恢复的数据流和索引的重命名模式
  • rename_replacement
    (可选,字符串)定义重命名替换字符串。

示例

POST /_snapshot/my_fs_repo/snapshot_test1/_restore?wait_for_completion=true{"indices":"person,person1"
}

示例为恢复索引 person 和 person1

注意:在恢复索引之前 person 和 person1 必须关闭或者删除,否则将提示已经存在索引,无法执行恢复操作。关闭和删除的索引在恢复后会自动打开。

结果

{"snapshot": {"snapshot": "snapshot_test1","indices": ["person1","person"],"shards": {"total": 2,"failed": 0,"successful": 2}}
}

删除快照

DELETE /_snapshot/<repository>/<snapshot>

示例

DELETE /_snapshot/my_fs_repo/snapshot_2,snapshot_3

多个快照用逗号隔开

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

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

相关文章

为什么升级JDK 11后堆外内存使用增长了?

文章首发地址 JDK 11堆外使用增长的原因 JDK 11堆外使用增长的原因可能有以下几个&#xff1a; G1垃圾回收器的默认设置更改&#xff1a; JDK 11中的G1垃圾回收器默认开启了堆外内存分配&#xff0c;以减少Full GC时的STW时间。因此&#xff0c;如果应用程序使用了G1垃圾回收…

单例模式:保证一个类只有一个实例

单例模式&#xff1a;保证一个类只有一个实例 什么是单例模式&#xff1f; 在软件开发中&#xff0c;有些类只需要一个实例&#xff0c;比如数据库连接池、线程池等。单例模式就是一种设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 实…

Android中的RecyclerView 优化

Android中的RecyclerView 优化 在Android开发中&#xff0c;RecyclerView是一种用于展示大量数据列表的高效、灵活的控件。由于RecyclerView常用于展示复杂的数据集&#xff0c;特别是在数据项很多的情况下&#xff0c;对其进行优化非常重要&#xff0c;以提高性能和用户体验。…

使用Go语言生成Excel任务表依赖图(Markdown文件mermaid图)

一、前言 在游戏中&#xff0c;任务是非常常见的玩法&#xff0c;可能会有主线任务&#xff0c;支线任务以及其它一些类型的任务&#xff0c;各任务可能还会有前置任务&#xff0c;即需要完成某个任务之后&#xff0c;才能做当前任务。在游戏开发中&#xff0c;配置表可以使用…

CentOS 搭建 Harbor 镜像仓库(图文详解)

本文目录 1. 下载 Harbor 安装包2. 解压3. 修改配置文件4. 安装 Harbor5. 修改 docker 配置6. docker 登录方式7. 访问 Harbor Web 界面8. 创建证书9. 生成证书10. 更新配置11. 网页登录 说明&#xff1a;在搭建 Harbor 镜像仓库之前&#xff0c;虚拟机要先安装 docker 和 dock…

k8s部署nginx访问Tomcat

1.nginx打包镜像 #1、编写DockerFilemkdir /opt/my_nginx_dockerfilecd /opt/my_nginx_dockerfile cat >default.conf<<EOF server {listen 80;listen [::]:80;server_name localhost;#access_log /var/log/nginx/host.access.log main;location / {root …

数据安全治理5大关键技术实践分享

近年来&#xff0c;国内外对数据安全的重视程度持续提升&#xff0c;数据安全技术领域发展备受关注。从2017-2021年Gartner发布的“数据安全技术成熟度曲线”研究报告来看&#xff0c; 新兴数据安全技术呈逐年递增趋势&#xff0c;其中安全多方计算、同态加密、差分隐私等隐私增…

增强型Web安全网关在银行的应用

销售&#xff0c;绝不是降低身份去取悦客户&#xff0c;而是像朋友一样给予合理的建议。你刚好需要&#xff0c;我刚好专业&#xff01;仅此而已&#xff01; 乔.吉拉德 健康的安全体系&#xff0c;还可以更完善 浙江某商业银行股份有限公司是一家成立多年的商业银行&#xf…

linux 系统初始化基本yum命令

安装可能用到的系统工具 yum -y install vim telnet wget net-tools lrzsz unzip zip 安装常用工具和开发包 yum install -y which openssh-clients openssh-server less iproute bzip2 cmake gcc gcc-c gdb git libtool make man net-tools sysstat sudo psmisc nc net-t…

vue中transition动画的使用

1.vue文件 说明&#xff1a;加name属性 <transition name"sort"><div class"sort" v-show"show"><div class"all-sort-list2" click"goSearch"><div class"item bo" v-for"(item1, in…

windows系统的IP、路由、网关、内外网同时访问路由以及修改系统文件hosts的配置

当我们刚刚入职一家公司的时候、一般公司会给我下发一个ip地址和mac地址、还有访问一些公司的平台需要修改hosts之后的路由配置、以及第一次配置内网、如何内外网同时上网。 目录 一、ip的配置 1.1、IP的配置 1.2、mac地址的配置 1.3、内外网路由的配置&#xff08;w11系统需…

掌握Python的X篇_21_局部变量与全局变量

文章目录 1. python中的局部变量2. python中的全局变量3. 显式声明全局变量 1. python中的局部变量 函数内部定义的变量&#xff0c;是局部变量。局部变量只在当前函数中有效。 各个函数之间的局部变量是互相独立&#xff0c;互不影响的。 首先看一段代码&#xff1a; def f…

java基础复习(第五日)

java基础复习(五) 1.如何在Map中遍历删除指定的 key? 如何在List 中遍历删除指定的元素? 两个方法都使用iterator解决 过程&#xff1a; 获取 map/list的iterator whlie&#xff08;iterator.hasNext&#xff09;{ //获取下一个元素 entry iterator.next(); if(entr…

小程序学习(五):WXSS模板语法

1.什么是WXSS WXSS是一套样式语言,用于美化WXML的组件样式,类似于网页开发中的CSS 2.WXSS和CSS的关系 WXSS模板样式-rpx 3.什么是rpx尺寸单位 4.rpx的实现原理 5.rpx与px之间的单位换算* WXSS模板样式-样式导入 6.什么是样式导入 使用WXSS提供的import语法,可以导入外联的样式…

前端js--剪刀石头布

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><linkrel"stylesheet"href"ht…

微服务——操作索引库+文档操作+RestClient操作索引库和文档(java程序)

索引库操作 mapping属性 mapping是对文档的约束&#xff0c;常见约束属性包括: 创建索引库 #创建索引库 PUT /heima {"mappings": {"properties": {"info":{"type": "text","analyzer": "ik_smart"},…

带头循环双向链表详解

目录 一、什么是带头循环双向链表&#xff1f; 1.特点&#xff1a; 2.优点&#xff1a; 二、实现接口 1.前置准备 1.1需要的三个文件 1.2结构体的创建和头文件的引用 2.接口实现 2.1函数创建新节点 2.2打印链表内容 2.3尾插新节点 2.4头插新节点 2.5头删节点 2.6尾删…

软件测试新人入职新公司第一次分享

新公司每周都有分享会&#xff0c;本周轮到我&#xff0c;工作很多年&#xff0c;仍然处于社会主义中级阶段&#xff0c;上升高阶有待提升&#xff0c;如果想在测试的道路上继续走下去&#xff0c;还需要多多深入了解&#xff0c;多多加油将我分享的内容&#xff0c;想在这里标…

Vue实现 水果购物车业务(内包含技术要点、代码详细解释)

水果购物车业务 需求说明 渲染功能删除功能修改功能全选反选功能统计 选中的 总价 和 总数量持久化到本地 业务技术点总结&#xff1a; 渲染功能&#xff1a; v-if/v-else v-for :class删除功能&#xff1a; 点击传参 filter过滤覆盖原数组修改个数&#xff1a; 点击传参 find找…

【CSS】倾斜按钮

效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"/><meta http-equiv"X-UA-Compatible" content"IEedge"/><meta name"viewport" content"widthdevice-…