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
不要展开通配符模式
- all
- 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
按快照失败的分片数对快照进行排序。
- start_time
- 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中,几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是"任何有值的东西"。 最基本的表达式形式是常量和变量。当键入"$a 5",即将值"5"分配给变量 $a。&quo…...
亚马逊云科技七项生成式AI新产品生成式AI,为用户解决数据滞后等难题
7月27日,亚马逊云科技在纽约峰会上一连发布了七项生成式AI创新,涵盖了从底层硬件到工具、软件、再到生态的全方位更新,成为它在该领域迄今最全面的一次升级展示,同时也进一步降低了生成式AI的使用门槛。 亚马逊云科技凭借自身端到…...
图片等比例显示全部,兼容不同宽高比例图片
功能描述:预览瀑布流图片 点击预览不同的尺寸图片 <!-- 预览页面 --><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问题
文章目录 一:安装calico:1.1:weget安装Colico网络通信插件:1.2:修改calico.yaml网卡相关配置:1.2.1:查看本机ip 网卡相关信息:1.2.2:修改calico.yaml网卡interface相关信…...
泊松损坏图像的快速尺度间小波去噪研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&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权限的服务器代码调试,另一种选择 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关于内核空间与内核态:1.2关于用户态与内核态的表征: 2.信号捕捉过程 信号捕捉 1.用户态与内核态 用户态:执行用户代码时,进程的状态 内核态:执行OS代码时,进程的状态 …...
超详情的开源知识库管理系统- mm-wiki的安装和使用
背景:最近公司需要一款可以记录公司内部文档信息,一些只是累计等,通过之前的经验积累,立马想到了 mm-wiki,然后就给公司搭建了一套,分享一下安装和使用说明: 当前市场上众多的优秀的文档系统百…...
安卓:UDP通信
目录 一、介绍 网络通信的三要素: (1)、IP地址: IPv4: IPv6: IP地址形式: IP常用命令: IP地址操作类: (2)、端口: (3)、协议: 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开空间时是如何开的呢?现在就来看一下。先写…...
python进阶编程
lambda匿名函数 python使用lambda表达式来创建匿名函数 语法 // lambda 参数们:对参数的处理 lambda x : 2 * x // x 是参数, 2*x 是返回值 //使用lambda实现求和 sum lambda arg1, arg2 : agr1 arg2 print(sum(10,20)) // 将匿名函数封装在一…...
算法练习--leetcode 链表
文章目录 合并两个有序链表删除排序链表中的重复元素 1删除排序链表中的重复元素 2环形链表1环形链表2相交链表反转链表 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入&…...
Android性能优化—Apk瘦身优化
随着业务迭代,apk体积逐渐变大。项目中积累的无用资源,未压缩的图片资源等,都为apk带来了不必要的体积 增加。而APK 的大小会影响应用加载速度、使用的内存量以及消耗的电量。在讨论如何缩减应用的大小之前,有必要了解下应用 APK …...
前端主题切换方案——CSS变量
前言 主题切换是前端开发中老生常谈的问题,本文将介绍主流的前端主题切换实现方案——CSS变量 CSS变量 简介 编写CSS样式时,为了避免代码冗余,降低维护成本,一些CSS预编译工具(Sass/Less/Stylus)等都支…...
Java8 list多属性去重
大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。 在 Java 开发中,我们经常会面临对 List 中的对象属性去重的需求。然而,当需要根据多个属性来进行去重时,情况会稍微复杂一些。本篇…...
kafka-保证数据不重复-生产者开启幂等性和事务的作用?
1. 生产者开启幂等性为什么能去重? 1.1 场景 适用于消息在写入到服务器日志后,由于网络故障,生产者没有及时收到服务端的ACK消息,生产者误以为消息没有持久化到服务端,导致生产者重复发送该消息,造成了消…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
