当前位置: 首页 > news >正文

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

多个快照用逗号隔开

相关文章:

Elasticsearch 快照和恢复

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

Packet Tracer - 检验 IPv4 和 IPv6 编址

Packet Tracer - 检验 IPv4 和 IPv6 编址 地址分配表 设备 接口 IPv4 地址 子网掩码 默认网关 IPv6 地址/前缀 R1 G0/0 10.10.1.97 255.255.255.224 N/A 2001:DB8:1:1::1/64 N/A S0/0/1 10.10.1.6 255.255.255.252 N/A 2001:DB8:1:2::2/64 N/A 本地链路 F…...

PHP8的表达式-PHP8知识详解

表达式是 PHP 最重要的基石。在 PHP8中&#xff0c;几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是"任何有值的东西"。 最基本的表达式形式是常量和变量。当键入"$a 5"&#xff0c;即将值"5"分配给变量 $a。&quo…...

亚马逊云科技七项生成式AI新产品生成式AI,为用户解决数据滞后等难题

7月27日&#xff0c;亚马逊云科技在纽约峰会上一连发布了七项生成式AI创新&#xff0c;涵盖了从底层硬件到工具、软件、再到生态的全方位更新&#xff0c;成为它在该领域迄今最全面的一次升级展示&#xff0c;同时也进一步降低了生成式AI的使用门槛。 亚马逊云科技凭借自身端到…...

图片等比例显示全部,兼容不同宽高比例图片

功能描述&#xff1a;预览瀑布流图片 点击预览不同的尺寸图片 <!-- 预览页面 --><div class"sea"><img :src"seaobj.url" alt""></div> .sea {z-index: 100;position: fixed;top: 0;text-align: center;background-colo…...

·[K8S:使用calico网络插件]:解决集群节点NotReady问题

文章目录 一&#xff1a;安装calico&#xff1a;1.1&#xff1a;weget安装Colico网络通信插件&#xff1a;1.2&#xff1a;修改calico.yaml网卡相关配置&#xff1a;1.2.1&#xff1a;查看本机ip 网卡相关信息&#xff1a;1.2.2&#xff1a;修改calico.yaml网卡interface相关信…...

泊松损坏图像的快速尺度间小波去噪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

服务器端开发-golang dlv 远程调试

1。需要root权限的服务器代码调试 sudo ./appps to get piddlv attach pid --headless --listen:40000 --api-version2 --accept-multiclientattach the golang IDE or other IDE 2。不需要root权限的服务器代码调试&#xff0c;另一种选择 dlv --listen:40000 --headlesstr…...

STM32F103——时钟配置

目录 1、认识时钟树 1.1 什么是时钟树 1.2 时钟系统解析 1.2.1 时钟源 1.2.2 锁相环PLL 1.2.3 系统时钟SYSCLK 1.2.4 时钟信号输出MCO 2、如何修改主频 2.1 STM32F1时钟系统配置 2.2 STM32F1 时钟使能和配置 下列进行举例的开发板是原子哥的战舰开发板STM32F103ZET…...

【Linux】信号捕捉

目录 信号捕捉1.用户态与内核态1.1关于内核空间与内核态&#xff1a;1.2关于用户态与内核态的表征&#xff1a; 2.信号捕捉过程 信号捕捉 1.用户态与内核态 用户态&#xff1a;执行用户代码时&#xff0c;进程的状态 内核态&#xff1a;执行OS代码时&#xff0c;进程的状态 …...

超详情的开源知识库管理系统- mm-wiki的安装和使用

背景&#xff1a;最近公司需要一款可以记录公司内部文档信息&#xff0c;一些只是累计等&#xff0c;通过之前的经验积累&#xff0c;立马想到了 mm-wiki&#xff0c;然后就给公司搭建了一套&#xff0c;分享一下安装和使用说明&#xff1a; 当前市场上众多的优秀的文档系统百…...

安卓:UDP通信

目录 一、介绍 网络通信的三要素&#xff1a; &#xff08;1&#xff09;、IP地址&#xff1a; IPv4: IPv6: IP地址形式&#xff1a; IP常用命令&#xff1a; IP地址操作类: &#xff08;2&#xff09;、端口&#xff1a; &#xff08;3&#xff09;、协议: UDP协…...

clickhouse安装

clickhouse安装 在线安装和离线安装 一、环境准备: 1.检查系统是否支持clickhouse安装 (向量化支持) grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported.” 2.下载对应的clickhouse包 复制运行之后,就会将对应的包加入…...

Cpp学习——string(2)

目录 ​编辑 容器string中的一些函数 1.capacity() 2.reserve() 3.resize() 4.push_back()与append() 5.find系列函数 容器string中的一些函数 1.capacity() capacity是string当中表示容量大小的函数。但是string开空间时是如何开的呢&#xff1f;现在就来看一下。先写…...

python进阶编程

lambda匿名函数 python使用lambda表达式来创建匿名函数 语法 // lambda 参数们&#xff1a;对参数的处理 lambda x : 2 * x // x 是参数&#xff0c; 2*x 是返回值 ​ //使用lambda实现求和 sum lambda arg1, arg2 : agr1 arg2 print(sum(10,20)) ​ // 将匿名函数封装在一…...

算法练习--leetcode 链表

文章目录 合并两个有序链表删除排序链表中的重复元素 1删除排序链表中的重复元素 2环形链表1环形链表2相交链表反转链表 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&…...

Android性能优化—Apk瘦身优化

随着业务迭代&#xff0c;apk体积逐渐变大。项目中积累的无用资源&#xff0c;未压缩的图片资源等&#xff0c;都为apk带来了不必要的体积 增加。而APK 的大小会影响应用加载速度、使用的内存量以及消耗的电量。在讨论如何缩减应用的大小之前&#xff0c;有必要了解下应用 APK …...

前端主题切换方案——CSS变量

前言 主题切换是前端开发中老生常谈的问题&#xff0c;本文将介绍主流的前端主题切换实现方案——CSS变量 CSS变量 简介 编写CSS样式时&#xff0c;为了避免代码冗余&#xff0c;降低维护成本&#xff0c;一些CSS预编译工具&#xff08;Sass/Less/Stylus&#xff09;等都支…...

Java8 list多属性去重

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 在 Java 开发中&#xff0c;我们经常会面临对 List 中的对象属性去重的需求。然而&#xff0c;当需要根据多个属性来进行去重时&#xff0c;情况会稍微复杂一些。本篇…...

kafka-保证数据不重复-生产者开启幂等性和事务的作用?

1. 生产者开启幂等性为什么能去重&#xff1f; 1.1 场景 适用于消息在写入到服务器日志后&#xff0c;由于网络故障&#xff0c;生产者没有及时收到服务端的ACK消息&#xff0c;生产者误以为消息没有持久化到服务端&#xff0c;导致生产者重复发送该消息&#xff0c;造成了消…...

[AI in security]-214 网络安全威胁情报的建设

文章目录 1.什么是威胁情报2. 威胁情报3. 智能威胁情报3.1 智能威胁情报的组成3.2 整合威胁情报3.3 最佳实践4. 威胁情报的作用5.威胁情报模型6.反杀链模型7.基于TI的局部优势模型参考文献相关的研究1.什么是威胁情报 威胁情报是循证知识,包括环境、机制、指标、意义和可行性…...

Javaweb学习(2)

Javaweb学习 一、Maven1.1 Maven概述1.2 Maven简介1.3、Maven基本使用1.4、IDEA配置Maven1.6、依赖管理&依赖范围 二、MyBatis2.1 MyBatis简介2.2 Mybatis快速入门2.3、解决SQL映射文件的警告提示2.4、Mapper代理开发 三、MyBaits核心配置文件四、 配置文件的增删改查4.1 M…...

leetcode410. 分割数组的最大值 动态规划

hard:https://leetcode.cn/problems/split-array-largest-sum/ 给定一个非负整数数组 nums 和一个整数 m &#xff0c;你需要将这个数组分成 m 个非空的连续子数组。 设计一个算法使得这 m 个子数组各自和的最大值最小。 示例 1&#xff1a;输入&#xff1a;nums [7,2,5,1…...

C函数指针与类型定义

#include <stdio.h> #define PI 3.14 typedef int uint32_t; /* pfun is a pointer and its type is void (*)(void) */ void (*pfun)(void); /* afer typedef like this we can use “pfun1” as a data type to a function that has form like&#xff1a; / -------…...

最新2024届【海康威视】内推码【GTK3B6】

最新2024届【海康威视】内推码【GTK3B6】 【内推码使用方法】 1.请学弟学妹们登录校招官网&#xff0c;选择岗位投递简历&#xff1b; 2.投递过程中填写内推码完成内推步骤&#xff0c;即可获得内推特权。 内推码&#xff1a;GTK3B6 内推码&#xff1a;GTK3B6 内推码&…...

边写代码边学习之LSTM

1. 什么是LSTM 长短期记忆网络 LSTM&#xff08;long short-term memory&#xff09;是 RNN 的一种变体&#xff0c;其核心概念在于细胞状态以及“门”结构。细胞状态相当于信息传输的路径&#xff0c;让信息能在序列连中传递下去。你可以将其看作网络的“记忆”。理论上讲&a…...

Elasticsearch8.8.0 SpringBoot实战操作各种案例(索引操作、聚合、复杂查询、嵌套等)

Elasticsearch8.8.0 全网最新版教程 从入门到精通 通俗易懂 配置项目 引入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency><dependency>&l…...

《MySQL高级篇》十五、其他数据库日志

文章目录 1. MySQL支持的日志1.1 日志类型1.2 日志的弊端 2. 慢查询日志(slow query log)3. 通用查询日志3.1 问题场景3.2 查看当前状态3.3 启动日志3.4 查看日志3.5 停止日志3.6 删除\刷新日志 4. 错误日志(error log)4.1 启动日志4.2 查看日志4.3 删除\刷新日志4.4 MySQL8.0新…...

【Linux】【预】配置虚拟机的桥接网卡+nfs

【Linux】【预】配置虚拟机的桥接网卡 1. 配置VM虚拟机的桥接网络2 配置Win10中的设置3.配置Linux中的IP4. 串口连接开发板&#xff0c;配置nfs5 修改网络文件6 验证nfs 是否成功总结 1. 配置VM虚拟机的桥接网络 右击设置&#xff0c;选择添加网络&#xff0c;按照如下顺序操作…...

【Android】Retrofit2和RxJava2新手快速上手

写这篇博客的目的 网上关于Retrofit2和RxJava2的博客特别多&#xff0c;但是内容特别复杂&#xff0c;一上来就讲解很高级的用法 其实我们没必要像高考做题家一样&#xff0c;把每个API都背的滚瓜烂熟 熟悉基本用法&#xff0c;高阶用法需要的时候再逐个了解就行了 因为博客…...