【实战ES】实战 Elasticsearch:快速上手与深度实践-8.2.2成本优化与冷热数据分离
👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路
文章大纲
- 8.2.2AWS OpenSearch Serverless 成本优化与冷热数据分离深度实践
- 1. 成本构成分析与优化机会识别
- 1.1 Serverless模式成本分布
- 1.2 冷热数据特征分析
- 数据特征矩阵
- 2. 冷热数据分离技术实现
- 2.1 生命周期管理策略
- 策略效果验证
- 2.2 索引分片优化方案
- 3. 成本优化策略矩阵
- 3.1 存储成本优化
- 3.2 计算成本优化
- 3.3 综合优化效果预测
- 4. 企业级优化案例
- 4.1 电商日志分析场景
- 4.2 物联网时序数据场景
- 5. 自动化成本管控
- 5.1 基于`AI`的成本预测
- 5.2 预算告警与自动治理
- 自动治理策略
- 6. 工具链与监控体系
- 6.1 AWS原生工具栈
- 6.2 自定义监控看板
- 7. 未来演进方向
- 7.1 `智能分层技术`
- 7.2 边缘计算协同
8.2.2AWS OpenSearch Serverless 成本优化与冷热数据分离深度实践
-
流程图说明:
- 数据摄入层
- 使用 Kinesis Firehose 实时采集日志 / 指标数据
通过 Lambda 进行数据清洗、格式转换和冷热标签标注
- 冷热分层策略
基于时间戳(如 7 天内为热数据)或访问频率(如近 30 天查询量)打标签- 利用 OpenSearch 索引生命周期管理(ILM)自动执行冷热迁移
- 存储优化层
- 热数据存储于 OpenSearch Serverless SSD
- 冷数据通过 S3 集成或直接迁移至 Glacier
- 按业务维度创建独立的 Serverless Collection
- 查询路由层
热数据查询直接命中内存缓存- 冷数据通过 SQL 接口或 REST API 访问 S3 归档
- 生命周期管理
自动滚动索引(如每天创建新索引)- 冷数据归档后定期删除原始数据
- 监控与成本优化
监控 OCU 使用量和存储成本- 通过预留 OCU 和按需计费组合降低成本
- 分析历史成本趋势优化策略
- 数据摄入层
-
Cost Explorer深度解析与实战指南- 核心功能与架构
-
冷热分离场景操作指南-
关键分析维度- 冷热数据成本构成
热数据成本 = OCU费用(实时计算) + SSD存储费用冷数据成本 = S3标准存储(30天内) + S3 Glacier(长期归档) - 查询路由成本追踪

监控仪表盘建议
指标阈值范围监控频率 OCU利用率>80% 5分钟冷数据查询延迟>500ms 1小时存储成本环比增长>15% 每日预留实例覆盖率<70% 每周 - 冷热数据成本构成
1. 成本构成分析与优化机会识别
1.1 Serverless模式成本分布
| 成本类型 | 占比 | 计费模型 | 优化潜力点 |
|---|---|---|---|
| 计算资源 | 65% | $0.48/OCU小时 | 自动缩容/查询优化 |
| 热数据存储 | 22% | $0.023/GB/月 | 冷热分层/压缩算法 |
| 冷数据存储 | 8% | $0.012/GB/月 | 生命周期管理 |
| 数据传输 | 5% | $0.01/GB(跨AZ) | 流量调度优化 |
行业数据:合理实施冷热分层可降低存储成本58%,整体成本节省27%-35%
1.2 冷热数据特征分析
数据特征矩阵
维度 | 热数据 | 温数据 | 冷数据 |
|---|---|---|---|
访问频率 | >100次/天 | 1-10次/天 | <1次/周 |
延迟敏感度 | <100ms | <500ms | <2s |
存储成本 | $0.023/GB | $0.015/GB | $0.012/GB |
典型场景 | 实时监控/搜索 | 周报生成/审计 | 合规归档/历史分析 |
2. 冷热数据分离技术实现
2.1 生命周期管理策略
# 定义一个 AWS OpenSearch Serverless 的生命周期策略资源,名称为 hot_cold
resource "aws_opensearchserverless_lifecycle_policy" "hot_cold" {# 生命周期策略的名称,这里设置为 hot-warm-cold-policyname = "hot-warm-cold-policy"# 对该生命周期策略的描述,说明这是一个用于冷热数据分层的策略description = "冷热数据分层策略"# 定义生命周期策略的具体内容,使用 jsonencode 函数将 JSON 格式的策略转换为字符串policy = jsonencode({# 策略中包含多个规则,使用 Rules 数组来定义"Rules" : [{# 规则的名称,用于标识该规则,这里表示将热数据转换为温数据的规则"Name" : "HotToWarm",# 规则触发的条件"Conditions" : {# 数据的年龄条件,当数据的年龄达到 7 天,单位为天"Age" : { "Value" : 7, "Unit" : "DAYS" },# 文档数量条件,当索引中的文档数量达到 1000000 个"DocCount" : { "Value" : 1000000 }},# 当满足上述条件时要执行的操作"Actions" : {# 操作类型为 TRANSITION,表示数据层的转换"Type" : "TRANSITION",# 转换的目标层为 WARM,即将数据从热数据层转换到温数据层"Target" : "WARM"}},{# 规则的名称,用于标识该规则,这里表示将温数据转换为冷数据的规则"Name" : "WarmToCold",# 规则触发的条件"Conditions" : {# 数据的年龄条件,当数据的年龄达到 30 天,单位为天"Age" : { "Value" : 30, "Unit" : "DAYS" }},# 当满足上述条件时要执行的操作"Actions" : {# 操作类型为 TRANSITION,表示数据层的转换"Type" : "TRANSITION",# 转换的目标层为 COLD,即将数据从温数据层转换到冷数据层"Target" : "COLD"}},{# 规则的名称,用于标识该规则,这里表示删除冷数据的规则"Name" : "DeleteCold",# 规则触发的条件"Conditions" : {# 数据的年龄条件,当数据的年龄达到 365 天,单位为天"Age" : { "Value" : 365, "Unit" : "DAYS" }},# 当满足上述条件时要执行的操作"Actions" : {# 操作类型为 DELETE,表示删除数据"Type" : "DELETE"}}]})
}
策略效果验证
策略阶段 | 数据量 | 存储成本/月 | 查询延迟 | 存储压缩率 |
|---|---|---|---|---|
热数据(7天) | 500GB | $11.5 | 85ms | 1.5:1 |
温数据(30天) | 2TB | $30 | 220ms | 3:1 |
冷数据(1年) | 10TB | $120 | 650ms | 5:1 |
2.2 索引分片优化方案
// 向 _serverless/settings 端点发送 PUT 请求,用于配置 OpenSearch Serverless 的索引设置
PUT _serverless/settings
{"index": {// 配置不同数据层(热、温、冷)的索引分片数量"number_of_shards": {// 热数据层的索引分片数量设置为 6// 热数据通常是频繁访问的数据,较多的分片可以提高读写性能,因为可以并行处理更多的请求"hot": 6,// 温数据层的索引分片数量设置为 3// 温数据的访问频率相对热数据较低,所以可以适当减少分片数量以节省资源"warm": 3,// 冷数据层的索引分片数量设置为 1// 冷数据很少被访问,使用较少的分片可以降低存储和管理成本"cold": 1},// 配置不同数据层(热、温、冷)的索引压缩编解码器"codec": {// 热数据层使用 ZSTD 编解码器// ZSTD 编解码器在压缩比和压缩/解压缩速度之间取得了较好的平衡,适合热数据频繁读写的场景"hot": "ZSTD",// 温数据层同样使用 ZSTD 编解码器// 考虑到温数据的读写频率和存储需求,ZSTD 仍然是一个合适的选择"warm": "ZSTD",// 冷数据层使用 BEST_COMPRESSION 编解码器// 冷数据很少被访问,更注重压缩比以节省存储空间,BEST_COMPRESSION 可以提供更高的压缩率"cold": "BEST_COMPRESSION"},// 配置索引的路由分配规则"routing": {"allocation": {"include": {// 要求索引的数据必须分配到具有 "hot_content" 数据层属性的节点上// 这有助于将索引数据集中在特定类型的节点上,以满足不同数据层的性能和存储要求"data_tier": "hot_content"}}}}
}
- 分片配置黄金法则:
| 数据温度 | 分片大小 | 副本数 | 段合并策略 | 刷新间隔 |
|---|---|---|---|---|
| 热数据 | 30-50GB | 2 | tiered(分层) | 1s |
| 温数据 | 50-100GB | 1 | log_byte_size | 30s |
| 冷数据 | 100-200GB | 0 | log_doc | 关闭 |
3. 成本优化策略矩阵
3.1 存储成本优化
| 策略 | 实施方式 | 成本节省 | 影响范围 |
|---|---|---|---|
| 数据压缩 | ZSTD/BEST_COMPRESSION编解码器 | 35%-60% | 存储成本 |
| 冷热分层 | 生命周期自动迁移 | 40%-55% | 存储成本 |
| 副本数调整 | 热数据2副本→冷数据0副本 | 30% | 存储/计算成本 |
| 索引滚动 | 按时间/大小滚动创建新索引 | 25% | 管理成本 |
3.2 计算成本优化
| 策略 | 实施方式 | 成本节省 | 性能影响 |
|---|---|---|---|
| 查询优化 | 避免全扫描/使用过滤条件 | 15%-40% | 延迟降低 |
| 自动缩容 | 基于负载动态调整OCU数量 | 20%-35% | 扩展延迟 |
| 缓存利用 | 结果缓存+分片请求缓存 | 30% | 查询速度提升 |
定时降级 | 夜间降低副本数/合并分片 | 25% | 查询性能波动 |
3.3 综合优化效果预测
| 优化组合 | 成本节省 | 实施复杂度 | 适合场景 |
|---|---|---|---|
| 基础策略 | 25%-30% | ★★ | 中小规模业务 |
| 高级策略 | 35%-45% | ★★★ | 大型企业 |
激进策略 | 50%+ | ★★★★ | 成本敏感型业务 |
4. 企业级优化案例
4.1 电商日志分析场景
-
原始成本结构:
- 日均数据量:50TB
- 存储成本:$3,450/月
- 计算成本:$8,200/月
-
优化措施:
-
- 热数据保留3天 → 存储节省40%
-
启用ZSTD压缩 → 存储节省35%
-
夜间自动降级副本 → 计算节省25%
-
- 查询结果缓存 → 计算节省30%
-
-
实施效果:
指标 | 优化前 | 优化后 | 节省比例 |
|---|---|---|---|
| 存储成本 | $3,450 | $1,850 | 46.4% |
| 计算成本 | $8,200 | $5,300 | 35.4% |
| P99查询延迟 | 620ms | 480ms | -22.6% |
4.2 物联网时序数据场景
// 向 _serverless/_index_template/iot_metrics 端点发送 PUT 请求
// 此请求用于创建或更新名为 iot_metrics 的索引模板
PUT _serverless/_index_template/iot_metrics
{// 指定该索引模板所适用的索引名称模式// 这里设置为 ["iot-*"],意味着所有以 "iot-" 开头的索引都会应用此模板"index_patterns": ["iot-*"],// 定义具体的模板内容,当创建符合上述模式的索引时,会应用这些设置"template": {"settings": {// 指定索引生命周期管理策略的名称// 这里设置为 "iot-lifecycle",意味着以 "iot-" 开头的索引将遵循此生命周期策略// 生命周期策略可用于管理索引的各个阶段,如热数据、温数据、冷数据阶段,以及数据的删除等操作"index.lifecycle.name": "iot-lifecycle",// 指定索引使用的压缩编解码器为 ZSTD// ZSTD 编解码器在压缩比和压缩/解压缩速度之间取得了较好的平衡// 可以减少索引数据的存储空间,同时保持相对较快的读写性能"index.codec": "ZSTD",// 配置索引的路由分配规则// 要求索引的数据必须分配到具有 "hot_content" 数据层属性的节点上// 这有助于将索引数据集中在特定类型的节点上,以满足不同数据层的性能和存储要求"index.routing.allocation.include.data_tier": "hot_content"},"mappings": {// 定义索引中文档的字段映射关系"properties": {// 定义 @timestamp 字段的类型为日期类型// 通常用于存储文档的时间戳信息,方便进行时间范围的查询和分析"@timestamp": { "type": "date" },// 定义 value 字段的类型为浮点型// 适用于存储数值类型的数据,如传感器的测量值等"value": { "type": "float" },// 定义 device_id 字段的类型为关键字类型// 关键字类型用于精确匹配,通常用于存储设备 ID 等唯一标识信息"device_id": { "type": "keyword" }}}}
}
- 优化效果:
| 指标 | 优化前 | 优化后 | 提升幅度 |
|---|---|---|---|
存储成本/TB | $23 | $9.2 | -60% |
| 写入吞吐量 | 50,000 docs/s | 75,000 docs/s | +50% |
长期存储保留 | 1年 | 3年 | +200% |
5. 自动化成本管控
5.1 基于AI的成本预测
# 定义一个名为 predict_cost 的函数,用于根据历史数据进行成本预测
# 参数 historical_data 是一个包含历史成本数据的序列,例如列表或数组
def predict_cost(historical_data):# 从 statsmodels 库的 tsa.arima.model 模块中导入 ARIMA 类# ARIMA(Autoregressive Integrated Moving Average)是一种常用的时间序列预测模型from statsmodels.tsa.arima.model import ARIMA# 创建一个 ARIMA 模型实例# order=(5,1,0) 是 ARIMA 模型的参数设置# 第一个参数 5 表示自回归阶数(p),即使用过去 5 个时间步的数据进行自回归计算# 第二个参数 1 表示差分阶数(d),对数据进行一阶差分以使其平稳# 第三个参数 0 表示移动平均阶数(q),这里不使用移动平均项model = ARIMA(historical_data, order=(5,1,0))# 对 ARIMA 模型进行拟合# 拟合过程是根据历史数据来估计模型的参数,使得模型能够尽可能准确地描述历史数据的特征model_fit = model.fit()# 使用拟合好的模型进行未来 30 个时间步的成本预测# steps=30 表示预测未来 30 个时间步的成本值forecast = model_fit.forecast(steps=30)# 返回预测结果return forecast
- 预测准确率:
| 时间范围 | MAE(美元) | RMSE(美元) | R²得分 |
|---|---|---|---|
7天预测 | 120 | 150 | 0.92 |
30天预测 | 450 | 580 | 0.87 |
季度预测 | 2200 | 2800 | 0.78 |
5.2 预算告警与自动治理
# 使用 Terraform 定义一个 AWS Budgets 预算资源,名称为 opensearch
resource "aws_budgets_budget" "opensearch" {# 预算的名称,这里设置为 monthly-opensearch-budget# 方便在 AWS 控制台或其他管理界面中识别该预算name = "monthly-opensearch-budget"# 预算的类型,设置为 COST 表示这是一个基于成本的预算# 用于控制 AWS 服务的使用成本budget_type = "COST"# 预算的限额金额,这里设置为 5000# 意味着在该预算周期内,AWS OpenSearch 服务的成本不能超过 5000limit_amount = "5000"# 预算限额的货币单位,设置为 USD 表示以美元为单位limit_unit = "USD"# 预算的时间周期单位,设置为 MONTHLY 表示按每月进行预算控制# 即每个月的成本不能超过 5000 美元time_unit = "MONTHLY"# 配置预算的通知规则notification {# 比较运算符,设置为 GREATER_THAN 表示当实际成本超过某个阈值时触发通知comparison_operator = "GREATER_THAN"# 阈值,设置为 90 表示当实际成本达到预算限额的 90%(即 4500 美元)时触发通知threshold = 90# 通知类型,设置为 ACTUAL 表示基于实际发生的成本进行通知# 还有一种类型是 FORECASTED 表示基于预测成本进行通知notification_type = "ACTUAL"# 订阅通知的电子邮件地址列表# 当触发通知时,会向 finops@example.com 发送邮件提醒subscriber_email_addresses = ["finops@example.com"]}# 配置预算的自动调整规则auto_adjust {# 自动调整类型,设置为 FORECAST 表示根据成本预测自动调整预算限额# 例如,如果预测下个月的成本会增加,预算限额会相应地自动提高auto_adjust_type = "FORECAST"}
}
自动治理策略
触发条件 | 动作 | 冷却时间 | 效果验证 |
|---|---|---|---|
成本超预算80% | 自动切换冷数据副本为0 | 1小时 | 成本降低15% |
连续3天低负载 | 缩减50%计算单元 | 6小时 | 成本降低22% |
存储增长>10%/天 | 触发归档审查流程 | 立即 | 存储节省30%+ |
6. 工具链与监控体系
6.1 AWS原生工具栈
| 工具名称 | 功能定位 | 关键指标 | 集成方式 |
|---|---|---|---|
| Cost Explorer | 成本分析与预测 | 每日成本/预测偏差 | API/SDK |
| CloudWatch | 性能监控与告警 | OCU利用率/查询延迟 | 自动集成 |
| Trusted Advisor | 优化建议生成 | 潜在节省金额/优化项 | 控制台 |
| Lambda | 自动执行治理任务 | 治理动作触发次数 | EventBridge调度 |
EventBridge- 核心功能架构
- 关键参数说明
| 参数 | 描述 |
|---|---|
schedule_expression | Cron表达式,支持UTC时区,例如:rate(5 minutes) 或 cron(0 3 * * ? *) |
input | 传递给目标的JSON格式参数,支持动态变量引用 |
dead_letter_config | 失败任务的死信队列配置,支持SQS或SNS |
retry_policy | 任务失败重试策略,默认最多重试185次 |
- 典型应用场景
- 数据生命周期管理
- 成本自动化报告
- 总结
- EventBridge 调度是实现 AWS 资源自动化的核心工具,通过结合 Lambda、Step Functions 等服务,
可实现数据生命周期管理、成本优化、故障自愈等复杂场景。 合理配置 Cron 表达式、监控指标和报警规则,可确保调度任务的可靠性和成本效率。
- EventBridge 调度是实现 AWS 资源自动化的核心工具,通过结合 Lambda、Step Functions 等服务,
6.2 自定义监控看板
{"widgets": [{"type": "metric","properties": {// 定义要显示的指标列表"metrics": [// 第一个指标:OpenSearch集群的可搜索文档数量["AWS/OpenSearch", "SearchableDocuments", "CollectionName", "prod-logs"],// 第二个指标:使用相对路径简化重复维度,等价于:// ["AWS/OpenSearch", "FreeStorageSpace", "CollectionName", "prod-logs"][".", "FreeStorageSpace", ".", "."]],// 数据聚合周期:5分钟(300秒)"period": 300,// 统计方法:平均值"stat": "Average",// 监控的AWS区域"region": "us-west-2",// 图表标题"title": "存储容量监控"}},{"type": "text","properties": {// 使用Markdown格式显示文本"markdown": "## 实时成本\n当前月份支出:${{cost.current}} \n预测月底:${{cost.forecast}}"}}]
}
- 关键监控指标:
| 指标名称 | 阈值 | 告警级别 | 响应动作 |
|---|---|---|---|
| 小时成本增长率 | >10% | P1 | 触发自动缩容 |
| 热数据存储占比 | >70% | P2 | 审查生命周期策略 |
冷数据查询量突增 | >500次/分钟 | P1 | 临时提升冷数据副本 |
压缩率下降 | <基准值20% | P3 | 检查压缩算法配置 |
7. 未来演进方向
7.1 智能分层技术
- 预测模型效果:
模型类型 | 预测准确率 | 存储节省 | 实施复杂度 |
|---|---|---|---|
基于规则 | 65% | 25% | ★★ |
时间序列预测 | 78% | 35% | ★★★ |
深度学习模型 | 92% | 48% | ★★★★ |
7.2 边缘计算协同
| 方案 | 延迟 | 带宽消耗 | 成本效益 | 适用场景 |
|---|---|---|---|---|
| 全云端处理 | 100-200ms | 高 | 低 | 集中式业务 |
边缘预处理 | 20-50ms | 中 | 中 | 分布式IoT |
| 混合分层处理 | 50-80ms | 低 | 高 | 实时分析场景 |
- 实施路线图建议:
-
- 第一阶段:基础生命周期策略+压缩优化(1-2周)
-
- 第二阶段:引入自动扩缩容+缓存机制(3-4周)
-
- 第三阶段:
部署AI预测模型+智能分层(5-8周)
- 第三阶段:
-
- 持续优化:建立FinOps团队进行成本治理
-
“真正的成本优化不是一次性的项目,而是需要融入持续运营的体系” —— AWS Well-Architected Framework*
该方案通过以下技术创新实现成本优化目标:
- 动态生命周期策略:
基于访问模式自动迁移数据- 智能压缩算法:ZSTD与BEST_COMPRESSION混合使用
- 预测式扩缩容:结合时间序列预测提前调整容量
- 分层存储架构:
热/温/冷/归档四级数据管理体系- FinOps自动化:成本治理策略代码化
-
FinOps
FinOps(Financial Operations)是一种通过云成本治理、资源优化和自动化策略,实现技术与财务团队协同的运营模式。其核心目标是:- 成本透明化:实时跟踪云资源使用与支出。
- 资源高效化:消除浪费,提升 ROI。
- 决策数据化:基于成本分析优化架构设计。
FinOps 核心组件
-
实施时建议优先进行成本审计(
Cost Audit),识别主要开支来源,再分阶段推进优化措施。建议每季度进行一次成本健康检查,确保持续获得最优TCO。
相关文章:
【实战ES】实战 Elasticsearch:快速上手与深度实践-8.2.2成本优化与冷热数据分离
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 8.2.2AWS OpenSearch Serverless 成本优化与冷热数据分离深度实践1. 成本构成分析与优化机会识别1.1 Serverless模式成本分布1.2 冷热数据特征分析数据特征矩阵 2. 冷热数据…...
MTK Android12 安装app添加密码锁限制
提示:通过安装前输入密码的需求,来熟悉了解PMS 基本的安装流程 文章目录 一、需求实现需求原因提醒 二、UML图-类图三、参考资料四、实现效果五、需求修改点修改文件及路径具体修改内容 六、源码流程分析PMS的复杂性代码量实现aidl 接口PackageManagerSe…...
Redis 集合(Set)
Redis 集合(Set) Redis 是一款高性能的键值数据库,以其高性能、易用性以及丰富的数据结构而广受欢迎。在 Redis 中,集合(Set)是一种重要的数据结构,它支持多种操作,如添加、删除、查找元素,以及集合间的运算。本文将详细介绍 Redis 集合的特点、操作和应用场景。 Redi…...
[数据结构]堆详解
目录 一、堆的概念及结构 二、堆的实现 1.堆的定义 2堆的初始化 3堆的插入 编辑 4.堆的删除 5堆的其他操作 6代码合集 三、堆的应用 (一)堆排序(重点) (二)TOP-K问题 一、堆的概念及结构 堆的…...
基于Python+Vue开发的旅游景区管理系统源码+运行步骤
项目简介 该项目是基于PythonVue开发的旅游景区管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的旅游景…...
SpringBoot使用Logback日志框架与综合实例
日志框架的使用,系列文章: 《SpringBoot使用Logback日志框架与综合实例》 《SpringBoot使用@Slf4j注解实现日志输出》 《Log4j2日志记录框架的使用教程与简单实例》 《SpringBoot使用AspectJ实现AOP记录接口:请求日志、响应日志、异常日志》 《SpringBoot使用AspectJ的@Arou…...
LInux中常用的网络命令
配置 IP 地址 1.1 配置 IP 地址 IP 地址是计算机在互联网中唯一的地址编码。每台计算机如果需要接入网络和其他计算机进行数据通信,就必须配置唯一的公网 IP 地址。 配置 IP 地址有两种方法: 1)setup 工具 2)vi /etc/sysconf…...
怎么实现: 大语言模型微调案例
怎么实现: 大语言模型微调案例 目录 怎么实现: 大语言模型微调案例输入一个反常识的问题:首都在北京天安门之后对输出模型进行测试:首都在北京天安门微调代码:测试微调模型代码:微调输出模型结构输出模型参数大小对比Qwen 2.5_0.5:53MB输出模型:951MB 是一样的,没有进行…...
快速学习Bootstrap前端框架
什么是 Bootstrap? Bootstrap 是一个开源的前端框架,用于快速开发响应式(Responsive)和美观的网页。它包含: ✅ HTML 组件(导航栏、按钮、表单等) ✅ CSS 样式(网格系统、排版、颜色等) ✅ JavaScript 交互(模态框、轮播图、工具提示等) 官网:Bootstrap The mo…...
KICK第四讲Linux 系统下安装 GCC 编译器全指南
Linux 系统下安装 GCC 编译器全指南 GCC(GNU Compiler Collection)是 Linux 系统下最常用的编译器之一,支持 C/C、Java 等多种编程语言。本文将介绍不同 Linux 发行版下的安装方法,帮助开发者快速配置开发环境。 一、使用包管理…...
深入理解 MySQL 锁:基于 InnoDB 的并发控制解析
在数据库并发访问管理中,MySQL 提供了强大的锁机制来保证数据的一致性和完整性。作为默认存储引擎的 InnoDB,为 MySQL 带来了细粒度的锁控制,使其成为高并发应用的理想选择。本文将深入探讨 MySQL 的锁类型、分类、应用场景及其对性能的影响&…...
Linux Nginx安装部署、注册服务
1、下载:https://nginx.org/en/download.html 下载nginx-1.27.4.tar.gz,上传到服务器 /opt/目录 在开始安装Nginx之前,首先需要安装一些依赖项,以确保Nginx编译和运行正常。打开终端并执行以下命令: yum install -y …...
安全的实现数据备份和恢复
📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、…...
PGSQL基本使用
PGSQL基本使用 文章目录 PGSQL基本使用日期转换长度不够补数获取上下行取连续的开始和结束的值 日期转换 格式说明YYYY年MM月DD日hh2424小时制mi分钟ss秒 -- 日期字符串转指定日期字符串 -- 20250101123000 转为 2025-01-01 12:30:00 select to_char(to_timestamp(2025010112…...
excel中两个表格的合并
使用函数: VLOOKUP函数 如果涉及在excel中两个工作表之间进行配对合并,则: VLOOKUP(C1,工作表名字!A:B,2,0) 参考: excel表格中vlookup函数的使用方法步骤https://haokan.baidu.com/v?pdwisenatural&vid132733503560775…...
在 Windows 上快速部署 OpenManus:从安装到运行
在当今快速发展的 AI 领域,OpenManus 作为一个强大的开源工具,为开发者提供了便捷的 AI 应用开发体验。本文将详细介绍如何在 Windows 系统上安装并运行 OpenManus,帮助你快速搭建一个本地的 AI 开发环境。 一、安装 Anaconda Anaconda 是一…...
NLP常见任务专题介绍(4)-ConditionalGeneration和CasualLM区别
在 transformers 库中,ConditionalGeneration 和 CausalLM 是两种不同类型的语言模型,各自适用于不同的任务: 类别Conditional Generation (条件生成)CausalLM (因果语言模型)核心区别依赖输入 条件 生成文本只能 自回归 生成文本训练方式Encoder-Decoder(编码-解码) 结构…...
uniapp实现 uview1 u-button的水波纹效果
说明: 由于uview2已经移除水波纹效果,这边又觉得那个效果好看,所以开发这个功能(原谅我不会录动图) 效果: 具体代码: <view class"ripple-container" touchstart"handleTouchStart" touchend&…...
RabbitMQ报错:Shutdown Signal channel error; protocol method
报错信息: Shutdown Signal: channel error; protocol method: #method<channel.close>(reply-code406, reply-textPRECONDITION_FAILED - unknown delivery tag 1, class-id60, method-id80) 原因 默认情况下 RabbitMQ 是自动ACK(确认签收&…...
modbusrtu.h:5:10: error: ‘QSerialPort‘ file not found
解决 QSerialPort 头文件未找到的问题: 1. 确保已安装 Qt Serial Port 模块 QSerialPort 属于 Qt Serial Port 模块,需先确认已安装该模块。 安装步骤: 打开 Qt Maintenance Tool: 在开始菜单搜索并打开 Qt Maintenance Tool 选择当前安装的 Qt 版本,点击 “添加或移除…...
【后端】【django】导出 API 文档的几种方法
在 Django 项目里,导出 API 文档是很常见的需求,一般可以借助第三方库来实现。 使用 drf-yasg 导出 Swagger/OpenAPI 格式文档 drf-yasg 是一个用于 Django REST framework 的工具,能够自动生成 Swagger 和 OpenAPI 格式的 API 文档。 步骤…...
【Rust基础】Rust后端开发常用库
使用Rust有一段时间了,期间尝试过使用Rust做后端开发、命令行工具开发,以及做端侧模型部署,也尝试过交叉编译、FFI调用等,也算是基本入门了。在用Rust做后端接口开发时,常常会找不到一些合适库,而这些库在J…...
如何使用Cursor的claude-3.7模型来开发高保真的原型设计图,学会写好的提示词人人都是设计师
1、想要开发出高保真的设计图原型,需要给出cursor具体的提示词:比如我想开发一款IT面试题小程序,给出的提示词是这样的 我想开发一个 {IT面试题库小程序},现在需要输出高保真的原型图,请通过以下方式帮我完成所有界面…...
AGI大模型(5):提示词工程
1 什么是提示词工程(Prompt) 所谓的提示词其实指的就是提供给模型的⼀个⽂本⽚段,⽤于指导模型⽣成特定的输出或回答。提示词的⽬的是为模型提供⼀个任务的上下⽂,以便模型能够更准确地理解⽤户的意图,并⽣成相关的回…...
Redis Sentinel (哨兵模式)深度解析:构建高可用分布式缓存系统的核心机制
一、传统主从复制的痛点 在分布式系统架构中,Redis 作为高性能缓存和数据存储解决方案,其可用性直接关系到整个系统的稳定性。传统的主从复制架构虽然实现了数据冗余,但在面临节点故障时仍存在明显缺陷: 手动故障转移…...
微信小程序-实现锚点跳转,页面加载后自动跳转、点击跳转到指定位置
一、页面加载后滚动到指定位置,onLoad或onReady里执行。 scrollAfterLoading() {const query wx.createSelectorQuery()query.select(#cont1).boundingClientRect()query.selectViewport().scrollOffset()query.exec(function (res) {wx.pageScrollTo({scrollTop:…...
[LeetCode热门100题]|137,260,268,面试17.19
1、137 只出现一次数字|| 1、题目描述 137 只出现一次数字||https://leetcode.cn/problems/single-number-ii/description/ 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你…...
Android子线程更新View的方法原理
对于所有的Android开发者来说,“View的更新必须在UI线程中进行”是一项最基本常识。 如果不在UI线程中更新View,系统会抛出CalledFromWrongThreadException异常。那么有没有什么办法可以不在UI线程中更新View?答案当然是有的! 一…...
Kafka常用指令(详细)
Kafka常用指令(详细) 启停命令 前台启动 前台启动命令 ./bin/kafka-server-start.sh config/server.properties 后台启动方式1 后台启动命令加上参数-daemon,窗口关闭之后kafka后台程序继续运行 ./bin/kafka-server-start.sh -daemon co…...
Golang Channel 使用详解、注意事项与死锁分析
#作者:西门吹雪 文章目录 一、引言:Channel 在 Go 并发编程中的关键地位二、Channel 基础概念深度剖析2.1 独特特性2.2 类型与分类细解 三、Channel 基本使用实操指南3.1 声明与初始化3.3 单向 Channel 的运用 四、Channel 典型使用场景实战案例4.1 协程…...
