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

Ceph集群故障处理 - PG不一致修复

Ceph集群故障处理 - PG不一致修复

    • 目录
    • 故障现象
    • 故障分析
    • 故障定位
    • 修复过程
    • 磁盘状态检查
    • OSD存储结构检查
    • 修复分析
    • 故障总结
      • 问题原因
      • 修复方法
      • 后续建议
      • 经验教训
      • 最佳实践
    • 参考资料

# ceph -v
ceph version 14.2.22

目录

  • 故障现象
  • 故障分析
  • 故障定位
  • 修复过程
  • 磁盘状态检查
  • OSD存储结构检查
  • 修复分析
  • 故障总结
  • 参考资料

故障现象

通过ceph -s命令发现集群处于HEALTH_ERR状态,显示存在scrub错误和数据不一致问题:

# ceph -scluster:id:     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxhealth: HEALTH_ERR1 scrub errorsPossible data damage: 1 pg inconsistent

从输出可以看出:

  • 集群有1个scrub错误
  • 有可能的数据损坏:1个PG处于不一致状态
  • 另有1个PG正在进行深度清洗(deep scrubbing)

故障分析

使用ceph health detail命令获取更详细的错误信息:

# ceph health detail
HEALTH_ERR 1 scrub errors; Possible data damage: 1 pg inconsistent
OSD_SCRUB_ERRORS 1 scrub errors
PG_DAMAGED Possible data damage: 1 pg inconsistentpg 2.8d8 is active+clean+inconsistent, acting [159,79,609,286,11,431,355,398,490,210]

从上述输出可以看出:

  • 有1个PG处于不一致状态:2.8d8
  • 该PG上的acting OSD列表包括10个OSD:[159,79,609,286,11,431,355,398,490,210]
  • 虽然PG状态为active+clean+inconsistent,表示它可以提供读写服务,但存在数据一致性问题

注意inconsistent标志意味着在scrub或deep-scrub过程中,Ceph发现了数据不一致的问题。这可能是由于磁盘故障、I/O错误或其他硬件问题导致的。

故障定位

找到主OSD(159)的位置信息:

# ceph osd find 159
{"osd": 159,"addrs": {"addrvec": [{"type": "v2","addr": "10.x.x.x:6950","nonce": xxxxx},{"type": "v1","addr": "10.x.x.x:6951","nonce": xxxxx}]},"osd_fsid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","host": "osd-host03","crush_location": {"host": "osd-host03","root": "default"}
}

OSD.159位于主机osd-host03上,这是PG 2.8d8的主OSD。在Ceph的PG架构中,主OSD负责协调该PG上的所有操作,包括读取、写入和scrub操作。

修复过程

确认问题后,执行PG修复命令:

# ceph pg repair 2.8d8
instructing pg 2.8d8s0 on osd.159 to repair

ceph pg repair命令会指示主OSD尝试修复PG中的数据不一致问题。修复过程中,Ceph会从健康的副本中恢复数据。

查看OSD日志以确认修复进展:

# tail -n 50 /var/log/ceph/ceph-osd.159.log2025-05-10 21:33:43.258 xxxxxxxxx  0 log_channel(cluster) log [DBG] : 2.8d8 repair starts
2025-05-10 21:35:03.066 xxxxxxxxx -1 log_channel(cluster) log [ERR] : 2.8d8 shard 398(7) soid 2:xxxxxxxx:::xxxxxxxxxx.xxxxxxxx:head : candidate had a read error
2025-05-10 21:35:43.607 xxxxxxxxx -1 log_channel(cluster) log [ERR] : 2.8d8s0 repair 0 missing, 1 inconsistent objects
2025-05-10 21:35:43.608 xxxxxxxxx -1 log_channel(cluster) log [ERR] : 2.8d8 repair 1 errors, 1 fixed

从日志可以清楚地看到:

  • 修复从21:33:43开始
  • 在21:35:03,发现了问题所在:OSD.398(acting列表中的第7个OSD,即shard 398(7))上的对象出现读取错误
  • 在21:35:43,修复完成,报告修复了1个不一致对象

磁盘状态检查

通过日志发现分片398(7)上存在读取错误,需要进一步检查OSD.398使用的磁盘:

# smartctl -a /dev/sdah
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.119.1.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org=== START OF INFORMATION SECTION ===
Device Model:     WUH721816ALE6L4
Serial Number:    XXXXXXXXX
LU WWN Device Id: 5 000cca XXXXXXXXX
Add. Product Id:  XXXXXX
Firmware Version: PCGAW270
User Capacity:    16,000,900,661,248 bytes [16.0 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Form Factor:      3.5 inches
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-4 (unknown minor revision code: 0x009c)
SATA Version is:  SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Sat May 10 22:19:33 2025 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSEDGeneral SMART Values:
Offline data collection status:  (0x82) Offline data collection activitywas completed without error.Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completedwithout error or no self-test has ever been run.
Total time to complete Offline 
data collection:                (  101) seconds.SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE1 Raw_Read_Error_Rate     0x000b   100   100   001    Pre-fail  Always       -       02 Throughput_Performance  0x0005   136   136   054    Pre-fail  Offline      -       963 Spin_Up_Time            0x0007   083   083   001    Pre-fail  Always       -       336 (Average 339)4 Start_Stop_Count        0x0012   100   100   000    Old_age   Always       -       365 Reallocated_Sector_Ct   0x0033   100   100   001    Pre-fail  Always       -       07 Seek_Error_Rate         0x000b   100   100   001    Pre-fail  Always       -       08 Seek_Time_Performance   0x0005   140   140   020    Pre-fail  Offline      -       159 Power_On_Hours          0x0012   096   096   000    Old_age   Always       -       3406910 Spin_Retry_Count        0x0013   100   100   001    Pre-fail  Always       -       012 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       3622 Unknown_Attribute       0x0023   100   100   025    Pre-fail  Always       -       100
184 End-to-End_Error        0x0033   100   100   097    Pre-fail  Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       65536
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       1455
193 Load_Cycle_Count        0x0012   100   100   000    Old_age   Always       -       1455
194 Temperature_Celsius     0x0002   063   063   000    Old_age   Always       -       32 (Min/Max 17/49)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       16
198 Offline_Uncorrectable   0x0008   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x000a   100   100   000    Old_age   Always       -       0
241 Total_LBAs_Written      0x0012   100   100   000    Old_age   Always       -       68388904427
242 Total_LBAs_Read         0x0012   100   100   000    Old_age   Always       -       4664543043SMART Error Log Version: 1
ATA Error Count: 2Error 2 occurred at disk power-on lifetime: 34068 hours (1419 days + 12 hours)When the command that caused the error occurred, the device was active or idle.After command completion occurred, registers were:ER ST SC SN CL CH DH-- -- -- -- -- -- --40 43 00 00 00 00 00  Error: UNC at LBA = 0x00000000 = 0Commands leading to the command that caused the error were:CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name-- -- -- -- -- -- -- --  ----------------  --------------------60 00 00 80 3f 91 40 00   2d+01:31:42.070  READ FPDMA QUEUED61 00 08 80 34 70 40 00   2d+01:31:39.514  WRITE FPDMA QUEUED60 00 00 80 36 97 40 00   2d+01:31:39.463  READ FPDMA QUEUED60 00 00 00 8a f9 40 00   2d+01:31:39.455  READ FPDMA QUEUED60 00 00 80 c7 41 40 00   2d+01:31:39.450  READ FPDMA QUEUEDError 1 occurred at disk power-on lifetime: 34068 hours (1419 days + 12 hours)When the command that caused the error occurred, the device was active or idle.

磁盘检查结果分析:

关键指标解释
整体健康评估PASSED磁盘自我评估仍为通过状态
Current_Pending_Sector16有16个扇区存在读取问题
UNC错误2个不可纠正的读取错误
Power_On_Hours34069运行时间约3.9年
Command_Timeout65536出现过命令超时情况

虽然磁盘整体评估为PASSED,但出现的Current_Pending_SectorUNC错误是严重的预警信号,表明该磁盘已经开始出现物理故障,应当计划更换。

OSD存储结构检查

使用ceph-volume lvm list命令检查OSD.398的存储配置:

===== osd.398 ======[block]       /dev/ceph-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/osd-block-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxblock device              /dev/ceph-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/osd-block-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxblock uuid                XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXcephx lockbox secret      cluster fsid              xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxcluster name              cephcrush device class        Nonedb device                 /dev/vg_nvme1n1/lv_sdahdb uuid                   XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXencrypted                 0osd fsid                  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxosd id                    398osdspec affinity          type                      blockvdo                       0devices                   /dev/sdah[db]          /dev/vg_nvme1n1/lv_sdahblock device              /dev/ceph-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/osd-block-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxblock uuid                XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXcephx lockbox secret      cluster fsid              xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxcluster name              cephcrush device class        Nonedb device                 /dev/vg_nvme1n1/lv_sdahdb uuid                   XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXencrypted                 0osd fsid                  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxosd id                    398osdspec affinity          type                      dbvdo                       0devices                   /dev/nvme1n1

存储配置分析:

  1. OSD.398使用/dev/sdah作为存储设备
  2. 使用NVMe设备(/dev/nvme1n1)上的卷组作为DB设备
  3. 采用了BlueStore存储引擎
  4. 该OSD的数据位于LVM逻辑卷上

修复分析

通过日志分析修复过程:

  1. 2025-05-10 21:33:43 - 修复操作启动(PG 2.8d8)
  2. 2025-05-10 21:35:03 - 发现分片398(7)上的对象出现读取错误
  3. 2025-05-10 21:35:43 - 修复结果统计:0个缺失对象,1个不一致对象
  4. 2025-05-10 21:35:43 - 修复完成:发现1个错误,修复了1个错误

修复是成功的,Ceph能够自动从正常的副本恢复数据。这体现了Ceph的自愈能力,当检测到数据不一致问题时,可以通过repair操作从健康副本恢复数据。

故障总结

问题原因

  • 磁盘故障:PG 2.8d8中存在一个不一致的对象,具体在OSD.398(acting列表中的第7个OSD)上发生了读取错误
  • 磁盘健康状况:SMART检查显示/dev/sdah磁盘存在16个待处理扇区和UNC读取错误
  • 磁盘年龄:磁盘已运行约3.9年,开始出现读取错误
  • 故障模式:这是典型的磁盘扇区读取错误导致的数据不一致问题

修复方法

  • 使用Ceph自愈功能:通过ceph pg repair 2.8d8命令成功修复了不一致的对象
  • 数据恢复:Ceph自动从其他健康副本恢复了正确的数据
  • 修复过程:由主OSD.159协调,确认并修复了OSD.398上的问题对象

后续建议

  1. 磁盘监控

    • 密切监控OSD.398所在磁盘(/dev/sdah)的健康状态
    • 每周运行一次smartctl检查
    • 配置监控系统报警Current_Pending_Sector值变化
  2. 磁盘更换计划

    • 考虑尽快更换该磁盘,因为存在扇区错误可能会导致更多数据问题
    • 准备好替换磁盘,并安排合适的维护窗口进行更换
  3. 验证步骤

    • 运行完整的SMART自检: smartctl -t long /dev/sdah
    • 再次执行deep-scrub验证PG健康: ceph pg deep-scrub 2.8d8
    • 验证集群状态: ceph -s

经验教训

  • 主动监测的重要性:定期执行deep scrub可以及时发现数据不一致问题
  • 修复流程:对于不一致的PG,使用ceph pg repair命令可以高效修复
  • 后续验证:修复后应检查集群状态确认问题已解决
  • 硬件监控:磁盘的Current_Pending_Sector和SMART错误日志是预测硬盘故障的重要指标
  • 冗余设计的价值:正是因为Ceph的多副本设计,才能在单个OSD出现问题时保证数据的完整性

最佳实践

  1. 清洗策略优化

    • 设置适当的scrub和deep scrub策略
    • 建议工作时间轻负载执行scrub,周末执行deep-scrub
    • 对于大型集群,错开不同OSD的scrub时间
  2. 数据保护

    • 对于重要数据,考虑增加副本数量或使用纠删码
    • 定期验证备份策略和灾难恢复流程
  3. 硬件管理

    • 保持硬件设备健康,避免磁盘读写错误
    • 建立硬盘SMART监控系统,及时发现潜在问题
    • 对运行3年以上的硬盘进行更严格的监控
    • 实施预防性替换策略,而不是等到磁盘完全故障
  4. 监控系统增强

    • 配置自动化监控工具监控SMART属性
    • 设置关键指标的阈值报警
    • 建立磁盘健康评分系统,综合评估磁盘状况

参考资料

  • Ceph PG 状态说明
  • Ceph 数据一致性
  • Ceph 故障排除
  • SMART属性解读
  • Ceph数据修复命令
  • 存储硬盘预测性故障分析

相关文章:

Ceph集群故障处理 - PG不一致修复

Ceph集群故障处理 - PG不一致修复 目录故障现象故障分析故障定位修复过程磁盘状态检查OSD存储结构检查修复分析故障总结问题原因修复方法后续建议经验教训最佳实践 参考资料 # ceph -v ceph version 14.2.22目录 故障现象故障分析故障定位修复过程磁盘状态检查OSD存储结构检查…...

【前端】每日一道面试题3:如何实现一个基于CSS Grid的12列自适应布局?

要实现一个基于CSS Grid的12列自适应布局,关键在于利用网格系统的灵活性和响应式设计能力。以下是具体实现步骤及核心代码示例: 一、基础网格容器定义 创建网格容器 使用display: grid将父元素定义为网格容器: .container {display: grid;gr…...

leetcode 349. Intersection of Two Arrays

题目描述 题目限制0 < nums1[i], nums2[i] < 1000&#xff0c;所以可以开辟一个1001个元素的数组来做哈希表。 class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {vector<int> table(1001,0…...

机器学习 day01

文章目录 前言一、机器学习的基本概念二、数据集的加载1.玩具数据集2.联网数据集3.本地数据集 三、数据集的划分四、特征提取1.稀疏矩阵与稠密矩阵2.字典列表特征提取3.文本特征提取 前言 目前我开始学习机器学习部分的相关知识&#xff0c;通过今天的学习&#xff0c;我掌握了…...

C++STL——priority_queue

优先队列 前言优先队列仿函数头文件 前言 本篇主要讲解优先队列及其底层实现。 优先队列 优先队列的本质就是个堆&#xff0c;其与queue一样&#xff0c;都是容器适配器&#xff0c;不过优先队列是默认为vector实现的。priority_queue的接口优先队列默认为大根堆。 仿函数 …...

DS18B20温度传感器

1.基本信息 测温范围为一55&#xff5e; 125℃&#xff1b;3.3/5V的供电电压&#xff1b;-10~85内精度较高&#xff1b; 典型的温度转换时间为 750ms&#xff08;12 位分辨率&#xff09;&#xff1b; 输出最小分辨率&#xff1a;0.0625&#xff1b; 采用单总线数据格式&am…...

《Python星球日记》 第50天:深度学习概述与环境搭建

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、什么是深度学习&#xff1f;它与传统机器学习的区别1. 深度学习的定义2. 深…...

BUUCTF——Cookie is so stable

BUUCTF——Cookie is so stable 进入靶场 页面有点熟悉 跟之前做过的靶场有点像 先简单看一看靶场信息 有几个功能点 flag.php 随便输了个admin 根据题目提示 应该与cookie有关 抓包看看 构造payload Cookie: PHPSESSIDef0623af2c1a6d2012d57f3529427d52; user{{7*7}}有…...

Java 基础面试题

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

bcm5482 phy 场景总结

1,BCM5482是一款双端口10/100/1000BASE-T以太网PHY芯片,支持多种速率和双工模式。其配置主要通过MDIO(Management Data Input/Output)接口进行,MDIO接口用于访问PHY芯片内部的寄存器,从而配置网络速率、双工模式以及其他相关参数。 a,具体以下面两种场景举例 2. 寄存器和…...

小程序多线程实战

在小程序开发中&#xff0c;由于微信小程序的运行环境限制&#xff0c;原生并不支持传统意义上的多线程编程&#xff0c;但可以通过以下两种核心方案实现类似多线程的并发处理效果&#xff0c;尤其在处理复杂计算、避免主线程阻塞时非常关键&#xff1a; 一、官方方案&#xff…...

PPT图表怎么制作?说5款自己使用过的PPT图表制作工具

PPT图表怎么制作&#xff1f;准备一份吸引人的PPT演示文稿时&#xff0c;图表往往能起到画龙点睛的作用。但是&#xff0c;对于很多人来说&#xff0c;制作既美观又专业的图表却不是一件容易的事情。今天&#xff0c;我们就来聊聊如何利用一些优秀的工具制作PPT图表。 1、亿图图…...

渠道销售简历模板范文

模板信息 简历范文名称&#xff1a;渠道销售简历模板范文&#xff0c;所属行业&#xff1a;其他 | 职位&#xff0c;模板编号&#xff1a;KRZ3J3 专业的个人简历模板&#xff0c;逻辑清晰&#xff0c;排版简洁美观&#xff0c;让你的个人简历显得更专业&#xff0c;找到好工作…...

数据库实验10

设计性实验 1&#xff0e;实验要求 1.编写函数FsumXXX&#xff0c;1~n&#xff08;参数&#xff09;求和&#xff1b; GO CREATE FUNCTION Fsum065 (n INT) RETURNS INT AS BEGIN DECLARE sum INT 0 WHILE n > 0 BEGIN SET sum sum n SET n n - 1 END RETURN sum END …...

C#异步Task,await,async和Unity同步协程

标题 TaskawaitasyncUnity协程 Task Task是声明异步任务的必要关键字&#xff0c;也可以使用Task<>泛型来定义Task的返回值。 await await是用于等待一个Task结束&#xff0c;否则让出该线程控制权&#xff0c;让步给其他线程&#xff0c;直到该Task结束才往下运行。 …...

【ML-Agents】ML-Agents示例项目导入unity报错解决

最近在跑ML-Agents的示例代码&#xff0c;无奈往unity中导入项目后&#xff0c;就出现报错。本文简要描述了各个报错的解决方法。 文章目录 一、error CS0234: The type or namespace name InputSystem does not exist in the namespace UnityEngine (are you missing an assem…...

【Web前端开发】HTML基础

Web前端开发是用来直接给用户呈现一个一个的网页&#xff0c;主要包含实现用户的结构&#xff08;HTML&#xff09;、样式&#xff08;CSS&#xff09;、交互&#xff08;JavaScript&#xff09;。然而一个软件通常是由后端和前端完成的。可以查阅文档&#xff1a;HTML 教程 (w…...

spark-哈希join介绍

目录 1. Shuffle Join 和 Hash Join 的复杂度1.1 Shuffle Join1.2 Hash Join 2. 哈希算法的原理2.1 什么是哈希算法&#xff1f;2.2 哈希算法的工作原理2.3 常见哈希函数 3. 哈希算法的弊端3.1 哈希碰撞3.2 哈希分布不均匀3.3 哈希值不可逆 4. 哈希碰撞的处理方法4.1 链地址法4…...

计算机网络与多线程同步机制详解

一、IP地址与子网划分 在互联网世界中&#xff0c;IP地址就像是每个设备的"门牌号"&#xff0c;它使得数据包能够准确送达目的地。IP地址的划分与管理就像城市的规划&#xff0c;通过合理的子网划分&#xff0c;能够高效地管理网络资源。 子网掩码的工作原理 子网…...

栈溢出攻击最基本原理

函数在调用的过程中&#xff0c;函数在调用之前呢&#xff0c;会将调用完这个函数之后的下一条命令的地址保存到LR中。 void func() {int a[4];a[6] 100; } 这个函数在用gcc编译的时候是不会报错的&#xff0c;所以我们可以在尝试之后&#xff0c;修改LR的值&#xff0c;让代…...

ChemDraw、InDraw、KingDraw有什么差别?

在化学相关的科研与教学领域&#xff0c;一款好用的结构式编辑器至关重要&#xff0c;ChemDraw因此闻名&#xff1b;但近年来&#xff0c;ChemDraw代理商频繁发送律师函&#xff0c;给学校和企业带来诸多困扰&#xff0c;促使大家纷纷寻找替代软件。InDraw和KingDraw这两款软件…...

NVMe控制器IP设计之接口模块

这是NVMe控制器IP设计系列博客之一&#xff0c;其他的见本博客或csdn搜用户名&#xff1a;tiantianuser。相关视频见B站用户名&#xff1a;专注与守望。 接口转换模块负责完成AXI4接口与控制器内部的自定义接口之间的转换工作。接口转换模块的框图如图1所示。 图1 接口转换示…...

从0开始学linux韦东山教程第三章问题小结(2)

本人从0开始学习linux&#xff0c;使用的是韦东山的教程&#xff0c;在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。 摘要关键词&#xff1a;PC远程访问ubuntu配置&#xff0c;ubuntu配置uboot环境&#xff0c;串口控制开发板 本文详细介绍以下问题&…...

JS正则表达式介绍(JavaScript正则表达式)

文章目录 JavaScript正则表达式完全指南正则表达式基础元字符与特殊字符基本元字符. - 点号\d - 数字\D - 非数字\w - 单词字符\W - 非单词字符\s - 空白字符\S - 非空白字符 正则表达式标志常用标志详解g - 全局匹配i - 忽略大小写m - 多行匹配s - 点号匹配所有字符u - Unicod…...

(51单片机)LCD显示红外遥控相关数字(Delay延时函数)(LCD1602教程)(Int0和Timer0外部中断教程)(IR红外遥控模块教程)

前言&#xff1a; 本次Timer0模块改装了一下&#xff0c;注意&#xff01;&#xff01;&#xff01;今天只是简单的实现一下&#xff0c;明天用次功能显示遥控密码锁 演示视频&#xff1a; 在审核 源代码&#xff1a; 如上图将9个文放在Keli5 中即可&#xff0c;然后烧录在…...

关于单片机的基础知识(一)

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于单片机基础知识的相关内容&#xf…...

操作系统学习笔记第2章 (竟成)

第 2 章 进程管理 【考纲内容】 1.进程与线程&#xff1a; (1) 进程 / 线程的基本概念&#xff1b; (2) 进程 / 线程的状态与转换&#xff1b; (3) 线程的实现&#xff1a;内核支持的线程&#xff1b;线程库支持的线程&#xff1b; (4) 进程与线程的组织与控制&#xff1b; (5)…...

《从零开始:构建你的第一个区块链应用》

一、引言 区块链技术&#xff0c;这个曾经只在金融领域被广泛讨论的技术&#xff0c;如今已经渗透到各个行业。从供应链管理到智能合约&#xff0c;区块链的应用场景越来越丰富。对于开发者来说&#xff0c;理解区块链的基本原理并构建一个简单的区块链应用&#xff0c;是进入这…...

[思维模式-24]:《本质思考力》-5- 马克思主义毛泽东思想揭示了了人类社会运作的普遍规律有哪些?

目录 一、马克思主义毛泽东思想揭示了了人类社会运作的普遍规律有哪些&#xff1f; 1、生产力与生产关系的辩证运动规律 2、阶级斗争与社会革命规律 3、社会形态演变规律 4、人民群众是历史创造者的规律 5、社会基本矛盾运动规律 6、认识与实践的辩证关系规律 二、马克…...

CentOS7.9部署FunASR实时语音识别接口 | 部署商用级别实时语音识别接口FunASR

0. 环境说明 本次在云服务器中部署一套实时语音识别接口&#xff0c;基于阿里开源的FunASR。 云服务器使用莱卡云&#xff0c;4核心4GB内存50GB存储空间&#xff0c;带宽10Mbps。 操作系统使用CentOS7.9 视频演示可以看 云服务器中部署实时语音识别接口 | FunASR在云服务器…...

炫酷粒子系统动画实战:Matplotlib实现银河漩涡效果

炫酷粒子系统动画实战&#xff1a;Matplotlib实现银河漩涡效果 效果演示&#xff1a;银河粒子漩涡核心代码分析1. 粒子系统初始化2. 动画更新函数3. 渲染优化技巧 完整实现代码Matplotlib的动画模块介绍​核心类对比核心功能分点注意事项 效果演示&#xff1a;银河粒子漩涡 动…...

MAD-TD: MODEL-AUGMENTED DATA STABILIZES HIGH UPDATE RATIO RL

ICLR 2025 spotlight paper 构建能够在少量样本下学习出优良策略的深度强化学习&#xff08;RL&#xff09;智能体一直是一个极具挑战性的任务。为了提高样本效率&#xff0c;近期的研究尝试在每获取一个新样本后执行大量的梯度更新。尽管这种高更新-数据比&#xff08;UTD&am…...

机器学习第四讲:无监督学习 → 给无标签积木自由组合,发现隐藏规律

机器学习第四讲&#xff1a;无监督学习 → 给无标签积木自由组合&#xff0c;发现隐藏规律 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1a;超详细…...

Vue 两种导航方式

目录 一、声明式导航 二、编程式导航 三、两句话总结 一、声明式导航 1. 传参跳转&#xff1a; <router-link :to"/user?nameCHEEMS&id114514">Query传参 </router-link><router-link :to"/user?参数名1参数值1&参数名2参数值2&a…...

HTTP 的发展史:从前端视角看网络协议的演进

别再让才华被埋没&#xff0c;别再让github 项目蒙尘&#xff01;github star 请点击 GitHub 在线专业服务直通车GitHub赋能精灵 - 艾米莉&#xff0c;立即加入这场席卷全球开发者的星光革命&#xff01;若你有快速提升github Star github 加星数的需求&#xff0c;访问taimili…...

Spring 必会之微服务篇(2)

经过上一篇文章的介绍,应该对微服务有了基本的认识,以及为什么要用微服务和微服务要面临的挑战和对应的解决问题,这一期继续聊聊关于微服务的相关知识。 服务拆分 为什么拆 对于大多数的小型项目来说,一般是先采用单体架构,但是随着后面的用户规模变大,业务越来越复杂…...

21.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--身份认证服务拆分规划

从这篇文章开始我们将开始一步一步的拆分现有的单体应用孢子记账项目。按照上一篇文章中的介绍&#xff0c;我们首先把身份认证服务拆分出来。 一、功能分析 在当前的单体应用中&#xff0c;身份认证服务主要负责用户认证、授权以及角色权限管理等核心功能。 在拆分之前&…...

人工智能100问☞第19问:什么是专家系统?

目录 一、通俗解释 二、专业解析 ​三、权威参考 专家系统是基于​​知识库​​(存储专家经验与规则)和​​推理机​​(模拟专家逻辑判断)的人工智能程序,能在特定领域(如医疗诊断、工业控制)高效解决复杂问题。 一、通俗解释 ​​专家系统​​就像个“智能版老师傅…...

AutoGen+Deepseek+chainlit的简单使用

AutoGen 的应用场景 AutoGen 作为一个强大的多智能体协作框架&#xff0c;可用于多种复杂任务&#xff1a; 自动化工作流&#xff1a;构建由多个智能体组成的流水线&#xff0c;例如数据收集、分析、报告生成复杂问题分解&#xff1a;将难题拆解为子任务&#xff0c;分配给不…...

贪心算法专题(Part1)

目录 1. 贪心算法简介 2. 柠檬水找零 3. 将数组和减半的最少操作次数 4. 递增的三元子序列 5. K次取反后最大化的数组和 6. 增减字符串匹配 7. 分发饼干 8. 整数替换 1. 贪心算法简介 2. 柠檬水找零 题目链接&#xff1a;860. 柠檬水找零 - 力扣&#xff08;LeetCode…...

PyTorch API 4 - 分布式通信、分布式张量

文章目录 分布式通信包 - torch.distributed后端支持PyTorch 内置的后端选择哪个后端&#xff1f;常见环境变量选择使用的网络接口其他NCCL环境变量 基础概念初始化返回类型&#xff1a;boolTCP初始化共享文件系统初始化环境变量初始化方法 初始化后操作关闭处理重新初始化 组D…...

《类和对象(中)》

引言&#xff1a; 上次我们主要学习了类的相关知识&#xff0c;今天我们就来学习类和对象(中)&#xff0c;今天也会用到之前学习过的东西&#xff0c;可以说是前面知识的结合&#xff0c;较前面会难一点&#xff08;打个预防针&#xff09;。 一&#xff1a;类的默认成员函数…...

SSH终端登录与网络共享

SSH 是较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性的协议 注意 SSH终端登录的前提是&#xff1a;电脑和板卡都能够通过网络相连接及通信 与连接互联网不一样&#xff0c;SSH可以不用互联网&#xff0c;只要电脑和板卡组成一个小型网络即可 网络方案 如果您…...

n8n系列(5):LangChain与大语言模型应用

引言 n8n作为一个强大的工作流自动化平台,可以通过集成LangChain框架,为用户提供了便捷地利用OpenAI、Azure OpenAI等大语言模型的能力。 本文将深入探讨n8n中的AI集成功能,特别是LangChain节点的使用,以及如何构建智能化的工作流程来解决实际业务问题。 1. n8n的AI集成概…...

springboot3+vue3融合项目实战-大事件文章管理系统-更新用户信息

在一下三个代码处进行修改 在UserController里面增加uadate方法 PutMapping ("/update")public Result update(RequestBody Validated User user){userService.update(user);return Result.success();}在userservice中增加update方法 void update(User user); 然…...

20250510-查看 Anaconda 配置的镜像源

打开 Anaconda Prompt 查看 Anaconda 当前配置的镜像源&#xff0c;使用命令 conda config --show channels这将显示当前配置的通道&#xff08;channels&#xff09;&#xff0c;即镜像源列表。 此外&#xff0c;还可以使用 conda config --show命令来显示conda的配置信息&…...

CDGP数据治理主观题评分标准与得分策略

1.数据模型题目评分标准 1)准确理解题目中所描述的业务逻辑和需求得[1分] 2)正确使用模型设计方法,使用信息工程、信息建模集成定义、巴克符号、陈氏符号等其中一种得[1分] 3)正确设计实体和属性,题目中涉及的实体数量为25-30个,10个以内得[2分],10-20个得[3分],25个…...

[学习]RTKLib详解:sbas.c与rtcm.c

RTKLib详解&#xff1a;sbas.c与rtcm.c 本文是 RTKLlib详解 系列文章的一篇&#xff0c;目前该系列文章还在持续总结写作中&#xff0c;以发表的如下&#xff0c;有兴趣的可以翻阅。 [学习] RTKlib详解&#xff1a;功能、工具与源码结构解析 [学习]RTKLib详解&#xff1a;pntp…...

【基础IO下】磁盘/软硬链接/动静态库

前言&#xff1a; 文件分为内存文件和磁盘文件。磁盘文件是一个特殊的存在&#xff0c;因为磁盘文件不属于冯诺依曼体系&#xff0c;而是位于专门的存储设备中。因此&#xff0c;磁盘文件存在的意义是将文件更好的存储起来&#xff0c;一边后续对文件进行访问。在高效存储磁盘…...

JAVA练习题(1) 卖飞机票

import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scnew Scanner(System.in);System.out.println("请输入飞机的票价&#xff1a;");int pricesc.nextInt();System.out.println("请输入月份&#xff1a;");…...