存储分布式文件系统对象存储后端高可用【免费下载链接】cephCeph is a distributed object, block, and file storage platform项目地址https://gitcode.com/gh_mirrors/ce/ceph点击查看免费下载本文以 Ceph 官方 OSD 配置参考doc/rados/configuration/osd-config-ref.rst为骨架系统讲解 OSD 守护进程的配置方式、通用设置、文件系统与日志Journal设置、数据一致性校验Scrubbing、操作队列与基于 mClock 的 QoS、Backfill、Recovery 等核心参数并对照仓库中的参数定义文件src/common/options/osd.yaml.in 与 src/common/options/global.yaml.in给出每个参数的默认值与取值范围帮助读者在ceph.conf或集中配置存储中做出准确、可落地的调优决策。OSD 的基本配置方式与命名规则Ceph OSDObject Storage Daemon负责在本地磁盘上存储对象数据并在集群层面参与副本复制、恢复与数据一致性校验。你可以在ceph.conf配置文件或新版本中的集中配置存储中配置 Ceph OSD Daemon但绝大多数场景下OSD 只需要一个非常精简的配置即可运行——最小化配置只需设置host其余几乎全部使用默认值。OSD 的编号约定Ceph OSD Daemon 以osd.{id}的形式进行数字编号编号从0开始递增osd.0 osd.1 osd.2在配置文件中指定 OSD 设置若要为集群中所有OSD Daemon 应用设置把配置项写在配置文件的[osd]段中若要为某个特定OSD Daemon例如其host单独设置则写入 OSD 专属段[osd.N]。示例节选自 doc/rados/configuration/demo-ceph.conf 的扩展用法[osd] osd_journal_size 5120 [osd.0] host osd-host-a [osd.1] host osd-host-b部署提示新版本 Ceph 还支持通过ceph config set osd key value在运行时修改 OSD 配置部分参数需要重启生效详见下文各参数说明。所有 OSD 参数的权威默认值都定义在 src/common/options/osd.yaml.in 中本文给出的默认值均来自该文件。通用设置General Settings以下设置用于标识 OSD 的 ID、决定数据与日志journal的路径。Ceph 部署脚本通常会自动生成 UUID。参数默认值说明osd_uuid由部署工具生成OSD 的全局唯一标识符UUID仅作用于单个 OSD集群级标识符是fsidosd_data/var/lib/ceph/osd/$cluster-$idOSD 数据的存储路径部署 Ceph 时需提前创建该目录并为该挂载点挂载一块数据盘osd_max_write_size90MiB单次 RADOS 写入的最大大小单位为 MiB若客户端写入超过该值会收到错误osd_max_object_size128_MMiB单个 RADOS 对象的最大字节数osd_client_message_size_cap500_MMiB客户端在途请求消息占用的最大内存当在途总量超过该值时OSD 会停止从网络读取新的客户端数据直到内存被释放osd_class_dir$libdir/rados-classesRADOS 对象类object class插件的存放目录对应的底层定义可在 src/common/options/osd.yaml.inosd_class_dir、osd_uuid、osd_data、osd_journal、osd_journal_size、osd_max_write_size、osd_client_message_size_cap以及 src/common/options/global.yaml.inosd_max_object_size中查看其中osd_data带有no_mon_update标志即该路径不允许通过 monitor 侧配置更新osd_uuid与osd_journal_size带有create标志表示它们在 OSD 创建mkfs时使用在 src/common/options/osd.yaml.in 中还可以看到osd_class_load_list/osd_class_default_list用于控制允许加载的对象类白名单默认包含cephfs hello journal lock log numops otp rbd refcount rgw rgw_gc timeindex user version cas cmpomap queue 2pc_queue fifo sem_set。⚠️不要修改data 与 journal 的默认路径否则会给后续的 Ceph 排障带来更多麻烦。关于 Filestore 的特别提醒当使用 Filestore 时journal 大小至少应为“预期磁盘速度 ×filestore_max_sync_interval”乘积的两倍最常见的做法是把 journal 所在盘通常是 SSD划分为独立分区并挂载使 Ceph 将整个分区用作 journal。注意Filestore 已被废弃多个版本遗留的 Filestore OSD 应尽快迁移到 BlueStore新部署默认即 BlueStore。文件系统设置File System SettingsCeph 会为 OSD 创建并挂载所使用的文件系统。以下两个参数按{fs-type}后缀区分不同文件系统类型osd_mkfs_options {fs-type}描述创建某个文件系统类型的 Filestore OSD 时使用的 mkfs 选项。类型Stringxfs 默认值-f -i 2048其他文件系统默认值空字符串示例osd_mkfs_options_xfs -f -d agcount24osd_mount_options {fs-type}描述挂载某个文件系统类型的 Filestore OSD 时使用的挂载选项。类型Stringxfs 默认值rw,noatime,inode64其他文件系统默认值rw, noatime示例osd_mount_options_xfs rw, noatime, inode64, logbufs8Journal 设置Journal Settings本节仅适用于较老的 Filestore 后端。自 Luminous 版本起BlueStore 已成为默认且首选的后端。默认情况下Ceph 期望将 OSD 的 journal 放在如下路径该路径通常是到某个设备或分区的符号链接/var/lib/ceph/osd/$cluster-$id/journal单一设备类型例如全部为机械盘时journal 应与 data 逻辑卷或分区同盘共置colocate混合设备SSD/NVMe 与机械盘混用时把 journal 放在更快的设备上让机械盘全部用于data。osd_journal_size的默认值是 5120即 5 GB也可以设得更大此时需要在ceph.conf中显式配置实践中常见配置为 10 GBosd_journal_size 10240底层定义见 src/common/options/osd.yaml.inosd_journal默认路径为/var/lib/ceph/osd/$cluster-$id/journal可以是一个文件路径或块设备路径如 SSD 分区若为文件路径需要预先创建好包含它的目录当osd_data所在盘为 HDD 时官方建议把 journal 放到独立的快速设备上。osd_journal_size的类型为size默认值5_K单位 MiB。更多细节参见 Journal 配置参考。Monitor 与 OSD 的交互Ceph OSD Daemon 之间通过心跳heartbeat互相检查状态并周期性向 Monitor 汇报。多数情况下默认值即可满足需求但如果网络存在延迟问题可能需要采用更长的间隔。心跳相关的详细讨论见 配置 Monitor/OSD 交互。数据放置Data Placement数据放置由 CRUSH 算法与池Pool、放置组PG配置共同决定详见 Pool 与 PG 配置参考。Scrubbing数据完整性校验Ceph 保障数据完整性的重要手段之一是对放置组执行“scrub”。Ceph 的 scrub 相当于对象存储层的fsckCeph 为每个放置组生成所有对象的目录清单并将每个主对象与其副本逐一对账确保没有对象丢失或失配。Light scrub浅校验检查对象的大小与属性通常每天执行一次Deep scrub深度校验读取数据并使用校验和确认数据完整性通常每周执行一次。两种校验的频率完全由集群配置决定你可以按本节参数自由调整。注意 scrub 对集群性能有一定影响以下参数用于调节 scrub 的频率、深度与并发度。这些参数的默认值与取值范围均取自 src/common/options/osd.yaml.in 与 src/common/options/global.yaml.in。并发与时机控制参数默认值说明osd_max_scrubs3单个 OSD 上同时进行的 scrub 操作最大数osd_scrub_begin_hour0允许发起 scrub 的最早小时0-23配合osd_scrub_end_hour定义每日时间窗口两者都为 0 表示全天允许osd_scrub_end_hour0允许发起 scrub 的最晚小时0-23osd_scrub_begin_week_day0允许发起 scrub 的最早星期几0周日1周一……6周六osd_scrub_end_week_day0允许发起 scrub 的最晚星期几两者都为 0 表示整周允许osd_scrub_during_recoveryfalse是否允许在 PG 处于恢复recovery期间调度新的 scrub设为false可降低繁忙集群的负载已在进行的 scrub 会继续完成osd_scrub_load_threshold10.0归一化负载上限当系统负载getloadavg() / 在线 CPU 数高于该值时不发起周期性 scrub周期与随机化参数默认值说明osd_scrub_min_interval1_day期望的同一 PG 两次 scrub 的最小间隔秒必须在global作用域或同时为mgr与osd设置osd_scrub_max_interval7_day每个 PG 的最长 scrub 间隔秒即“至少多久必须 scrub 一次”osd_scrub_interval_randomize_ratio0.5调度下一轮 scrub 时加入的随机延迟比例延迟为小于osd_scrub_min_interval × 该比例的随机值默认下下一次 scrub 落在[1, 1.5] × osd_scrub_min_interval窗口内用于打散 scrub 风暴osd_deep_scrub_interval7_day每个 PG 深度 scrub校验数据校验和的最小间隔osd_deep_scrub_stride4_M深度 scrub 时单次读取对象的字节数读取粒度分块chunk粒度scrub 采用分块方式执行块大小直接影响对客户端操作的干扰程度参数默认值说明osd_scrub_chunk_min5单次深度 scrub 的最小对象数也是 scrub 被客户端操作抢占、有效块大小减半后的最小块osd_scrub_chunk_max15单次深度 scrub 的最大对象数值越大 scrub 越快但可能增大客户端延迟osd_shallow_scrub_chunk_min50单次浅校验非深度的最小对象数osd_shallow_scrub_chunk_max100单次浅校验非深度的最大对象数osd_scrub_sleep0每个 chunk 之间注入的延迟秒增大可降低 scrub 对客户端的影响使用 mClock 调度器时该设置被忽略runtime标志可在线调整自动修复参数默认值说明osd_scrub_auto_repairfalse设为true时scrub/deep-scrub 发现错误后自动执行 PG 修复但损坏对象数超过osd_scrub_auto_repair_num_errors时不执行修复osd_scrub_auto_repair_num_errors5允许自动修复的损坏对象数量上限scrub 的完整可调参数还可参考osd_scrub_queued_snaptrims_limit默认 500排队 snap-trim 超过该值时暂停调度周期性 scrub与osd_scrub_max_preemptions默认 5深度 scrub 被客户端操作抢占的次数上限等扩展项。操作Operations相关设置操作队列与线程模型直接决定 OSD 对客户端 I/O、恢复、scrub、快照裁剪等各类请求的处理能力。分片Sharding与线程OSD 的请求按放置组标识进行分片每个分片拥有独立的处理队列与工作线程参数默认值说明osd_op_num_shards0OSD 分配的分片数0 表示按设备类型使用下述_hdd/_ssd值PG 均匀分布在各分片非 0 时覆盖_hdd/_ssd启动时生效osd_op_num_shards_hdd1旋转介质机械盘OSD 的分片数osd_op_num_shards_ssd8固态介质SSDOSD 的分片数osd_op_num_threads_per_shard0每个分片的工作线程数非 0 覆盖_hdd/_ssd启动时生效osd_op_num_threads_per_shard_hdd5机械盘 OSD 每分片的工作线程数osd_op_num_threads_per_shard_ssd2SSD OSD 每分片的工作线程数操作队列算法参数默认值说明osd_op_queuemclock_scheduler操作优先级队列算法wpq加权优先级队列按优先级出队防止饥饿、mclock_scheduler基于 mClock/dmClock 算法按操作类别调度即默认、debug_random两者等概率随机仅调试用需要重启生效osd_op_queue_cut_offhigh进入严格优先级子队列的阈值low将复制类及更高优先级操作放入严格队列high仅将复制确认类及更高优先级操作放入严格队列在少数 OSD 过载尤其配合wpq时可防止复制流量饿死主 OSD 的客户端流量需要重启生效从 src/common/options/osd.yaml.in 的注释可以看到两种队列都带有一个先于普通队列出队的严格子队列区别在于普通队列wpq依据操作优先级出队以避免任何队列饿死mclock_scheduler依据操作所属类别recovery、scrub、snaptrim、client op、osd subop调度。优先级Priority优先级参数在wpq模式下决定各类型操作之间的相对优先关系默认值见 src/common/options/global.yaml.in参数默认值说明osd_client_op_priority63客户端操作的优先级默认远高于恢复操作强烈偏向客户端osd_recovery_op_priority3恢复操作优先级池未指定recovery_op_priority时使用降低该值更偏向客户端、升高则更快恢复osd_scrub_priority5计划 scrub 在工作队列中的优先级池未指定时当 scrub 阻塞客户端操作时可提升至osd_client_op_priorityosd_requested_scrub_priority5已废弃改用osd_scrub_priorityosd_snap_trim_priority5快照裁剪工作队列的优先级osd_recovery_priority5恢复在工作队列中的默认优先级与池的recovery_priority无关超时、告警与操作历史参数默认值说明osd_op_thread_timeout15秒OSD 操作线程超时osd_op_thread_suicide_timeout150秒OSD 操作线程“自杀”超时若线程被卡住超过该值OSD 会主动终止自身以避免集群长期悬挂更详细的背景可参考社区关于 OSD 超时的讨论其结论最终仍指向本文档osd_op_complaint_time30秒操作耗时超过该秒数即被视为“值得投诉”的慢操作进入告警日志osd_op_history_size20最多追踪的已完成操作数osd_op_history_duration600秒追踪的已完成操作的最早时间范围osd_op_log_threshold5一次性展示的操作日志条数基于 mClock 的 QoSCeph 的 QoS 支持基于 dmClock 算法的排队调度器实现该算法按权重分配集群 I/O 资源并强制“最小预留reservation”与“最大限制limitation”约束使各类服务能公平竞争资源。当osd_op_queue mclock_scheduler时操作队列将涉及 I/O 资源的服务划分为以下桶bucketclient op客户端发起的 I/Oosd subop主 OSD 发起的子操作snap trim快照裁剪相关请求pg recovery恢复相关请求pg scrubscrub 相关请求。每类服务由三组标签控制其资源份额reservation预留为该服务分配的最小 IOPSlimitation限制为该服务分配的最大 IOPSweight权重系统有空闲容量或过载时按比例分享的份额。在 Ceph 中操作以“成本cost”计服务获得的资源被这些成本消耗。例如有两类服务recovery 与 client opsrecovery(r:1, l:5, w:1)client ops(r:2, l:0, w:9)该配置保证即使没有其他服务竞争recovery 每秒最多也只能获得 5 个请求的处理见下方“当前实现说明”而当客户端发起大量 I/O 时也不会耗尽全部资源——只要有 recovery 请求每秒都会为其保留 1 个请求因此高负载集群中恢复任务不会被饿死。同时 client ops 因权重为 9竞争者为 1可以享受更大的 I/O 份额client ops 没有限制钳制因此在没有恢复任务时可使用全部资源。当前实现说明当前实现会强制 limit 值即某类服务一旦越过强制限制操作会留在操作队列中直到限制恢复为止。mClock 的微妙之处reservation 与 limit 的单位是“每秒请求数”weight 没有单位只在彼此之间相对比较。若一类请求权重为 1、另一类为 9则后者应以前者的 9:1 比例被调度——但这只在预留全部满足后才发生且该比例已包含预留阶段执行的操作。权重取值不可过大算法按1/W为请求打权重标签新标签 1/W 前一个标签或当前时间取较大者。若 W 足够大1/W足够小计算出的标签可能永远不会被赋上会取到当前时间等于失去了权重意义。经验法则weight 应小于期望每秒被服务的请求数。mClock 的生效边界Caveats有若干因素会削弱 mClock 队列在 Ceph 内的作用效果分片隔离发往 OSD 的请求按放置组标识分片每个分片拥有独立的 mClock 队列队列之间不交互、不共享信息。分片数由osd_op_num_shards/osd_op_num_shards_hdd/osd_op_num_shards_ssd控制——分片越少 mClock 效果越强但若分片工作线程不足可能带来其他负面效应线程数由osd_op_num_threads_per_shard系列控制。操作序列器operation sequencer请求从操作队列转移到操作序列器执行。mClock 位于操作队列中决定下一个传给序列器的操作序列器中允许的操作数是复杂问题——太少会导致等待磁盘/网络时无活可干太多则 mClock 一旦移交便失去控制削弱其调度效果。影响序列器中操作数的参数包括bluestore_throttle_bytes、bluestore_throttle_deferred_bytes、bluestore_throttle_cost_per_io、bluestore_throttle_cost_per_io_hdd、bluestore_throttle_cost_per_io_ssd。分布式特性请求会发往多个 OSD每个 OSD 又可有多个分片而当前使用的 mClock 本身并非分布式算法dmClock 才是其分布式版本因此在跨节点场景下调度粒度有限。社区正在基于本代码库的 mClock 实现开展实验欢迎在ceph-devel邮件列表中分享 mClock/dmClock 的实验经验。mClock 调度参数以下参数仅当osd_op_queue mclock_scheduler且osd_mclock_profile custom时生效定义见 src/common/options/osd.yaml.in参数默认值说明osd_mclock_scheduler_client_res0每个客户端预留的最小 I/O 比例0-1.0相对 OSD 最大 IOPS 容量osd_mclock_scheduler_client_wgt1客户端在预留之上的 I/O 份额无单位权重osd_mclock_scheduler_client_lim0客户端在预留之上的 I/O 上限0 表示不设限osd_mclock_scheduler_background_recovery_res/_wgt/_lim0/1/0后台恢复的预留 / 权重 / 上限osd_mclock_scheduler_background_best_effort_res/_wgt/_lim0/1/0后台尽力而为类操作scrub、snap trim 等的预留 / 权重 / 上限mClock 的完整使用步骤与预设 profile 见 mClock 配置参考。其调度器实现位于 src/osd/scheduler/mClockScheduler.cc相关接口定义见 src/osd/scheduler/OpScheduler.h。Backfill回填当向集群新增或移除 OSD 时CRUSH 会迁移放置组以恢复均衡的容量利用率。该迁移过程会显著影响集群运行性能因此 Ceph 通过backfill执行迁移并允许将 backfill 操作设为低于数据读写请求的优先级。参数默认值说明osd_max_backfills见 osd.yaml.in单个 OSD 上允许并发执行的最大 backfill 数osd_backfill_scan_min64每次 backfill 扫描的最小对象数osd_backfill_scan_max512每次 backfill 扫描的最大对象数osd_backfill_retry_interval见 osd.yaml.inbackfill 重试间隔注意启用 mClock 调度器时其中部分设置会被自动重置参见 mClock 的恢复/回填选项。OSD MapOSD map 反映集群中运行的 OSD Daemon。随着时间推移 map 的 epoch 数量不断增长Ceph 提供如下设置保证 OSD map 变大时集群仍能良好运转参数默认值说明osd_map_deduptrue是否在 OSD map 中启用去重减少内存占用osd_map_cache_size50缓存的 OSD map 数量osd_map_message_max40单个 MOSDMap 消息中最多包含的 map 条目数以上定义分别见 src/common/options/global.yaml.in 与 src/common/options/osd.yaml.in。与之配套的osd_pg_epoch_max_lag_factor默认 2用于限制 PG 落后 map 缓存的最大倍数超过后节流 map 摄入。Recovery恢复集群启动或某个 OSD 崩溃后重启时OSD 会先与其他 OSD 完成peering对等协商之后才能接受写入——peering 的详细过程见 监控 OSD 与 PG。若某个 OSD 崩溃后重新上线它通常与其他持有更新版本对象的 OSD 失去同步。此时该 OSD 进入恢复模式努力获取最新数据副本并更新自己的 map。取决于宕机时长OSD 的对象与放置组可能严重过期若整个故障域例如一个机架同时宕机多个 OSD 可能同时恢复恢复过程会非常耗时且消耗大量资源。为维持运行性能Ceph 对恢复的请求数、线程数和对象块大小进行限制使集群在降级状态下依然表现良好参数默认值说明osd_recovery_delay_start0秒peering 完成后延迟指定秒数再开始恢复对象osd_recovery_max_active0每个 OSD 同时进行的恢复请求数非 0 时覆盖_hdd/_ssd0 表示按设备类型使用下述值mClock 调度器启用时自动重置osd_recovery_max_active_hdd3主设备为旋转介质时的并发恢复请求数osd_recovery_max_active_ssd10主设备为固态介质时的并发恢复请求数osd_recovery_max_chunk8_M单个恢复操作可携带的数据块最大总大小osd_recovery_max_single_start1OSD 恢复时每个 OSD 新启动的最大恢复操作数osd_recover_clone_overlaptrue恢复/迁移期间是否保留 clone overlap应始终为trueosd_recovery_sleep及_hdd/_ssd/_hybrid0及对应设备默认每次恢复操作之间的睡眠秒数限速手段osd_recovery_sleep_degraded及_hdd/_ssd/_hybrid见 osd.yaml.in集群处于降级状态时恢复操作的节流睡眠osd_recovery_priority5恢复在工作队列中的默认优先级osd_push_per_object_cost1000处理一个 push 操作的额外开销成本osd_async_recovery_min_cost见 osd.yaml.in异步恢复的最小成本阈值恢复相关的底层定义位于 src/common/options/osd.yaml.in。同样地启用 mClock 调度器时其中部分设置会被自动重置参见 mClock 的恢复/回填选项。Tiering分层存储分层存储代理tiering agent的参数如下参数默认值说明osd_agent_max_ops4高速模式下每个 tiering agent 同时进行的刷新flush操作最大数osd_agent_max_low_ops2低速模式下每个 tiering agent 同时进行的刷新操作最大数底层定义见 src/common/options/osd.yaml.in。关于 tiering agent 在高速模式下何时刷新脏对象参见缓存目标脏比例相关说明。其他杂项设置Miscellaneous参数默认值说明osd_default_notify_timeout30秒客户端未指定时通知传播notify propagation的默认超时秒数osd_check_for_log_corruptionfalse是否检查日志文件损坏计算开销较大osd_delete_sleep及_hdd/_ssd/_hybrid0/5/1/ 见定义下一条删除事务前的睡眠秒数用于节流 PG 删除过程mClock 调度器启用时忽略osd_command_max_records256返回丢失对象数量的上限osd_fast_fail_on_connection_refusedtrue启用后崩溃的 OSD 会被连接的 peer 与 MON 立即标记为 down前提是崩溃 OSD 所在主机存活禁用可恢复旧行为但 OSD 在 I/O 中途崩溃时可能导致较长的 I/O 停顿上述定义分别见 src/common/options/global.yaml.inosd_check_for_log_corruption、osd_default_notify_timeout、osd_op_complaint_time、osd_command_max_records、osd_op_log_threshold、osd_op_history_size、osd_op_history_duration、osd_fast_fail_on_connection_refused与 src/common/options/osd.yaml.inosd_delete_sleep系列。参考与延伸阅读OSD 配置参考本文档源mClock 配置参考Journal 配置参考配置 Monitor/OSD 交互Pool 与 PG 配置参考BlueStore 配置参考Filestore 配置参考OSD 参数定义权威默认值OSD 全局参数定义部分 OSD 参数位于 global 作用域mClock 调度器实现赞分享存储分布式文件系统对象存储后端高可用【免费下载链接】cephCeph is a distributed object, block, and file storage platform项目地址https://gitcode.com/gh_mirrors/ce/ceph点击查看免费下载相关推荐Ceph mClock 配置参考基于 dmClock 的 QoS 调度器与 Profile 实战指南Ceph mClock 配置参考基于 dmClock 的 QoS 调度器与 Profile 实战指南 mClock 是 Ceph 中基于 dmClock 排队存储分布式文件系统对象存储后端高可用Ceph MDS 配置参考从元数据缓存、平衡器到 dmClock QoS 的完整参数指南Ceph MDS 配置参考从元数据缓存、平衡器到 dmClock QoS 的完整参数指南 MDSMetadata Server是 CephFS 的元数据守存储分布式文件系统对象存储后端高可用SQLPad配置参数详解从基础设置到高级优化的完整参考SQLPad配置参数详解从基础设置到高级优化的完整参考 SQLPad作为一款强大的Web based SQL编辑器其配置参数的合理设置对于提升使用体验和系统后端数据可视化数据库数据分析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
5分钟吃透冰点文库下载器源码:从入门到精通实战指南 5分钟吃透冰点文库下载器源码:从入门到精通实战指南 官方文档往往冗长枯燥,让你抓不住重点?想搞懂【冰点文库下载器】这类工具背后的逻辑,却总被复杂的代码劝退?别急,今天咱们不背概念,直接拆解核心源码。通过这篇【入门到精通】的实战指南,你将像老… · 2026/9/23 15:45:03
3天搞定shao项目,吃透高频面试题与职业发展 3天搞定shao项目,吃透高频面试题与职业发展 官方文档翻了三遍还是云里雾里?这种挫败感太真实了。很多兄弟在准备 高频面试题 时,发现资料零散,实战经验更是稀缺。 别急,今天咱们不整虚的。直接上代码,从零搭建一个基于 shao… · 2026/9/23 15:45:03
YOLOv11实时人体行为识别与异常事件预警:安防监控新范式 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 7:32:22
ESP32-S3-BOX-3实战:智能语音与物联网联动开发指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 7:31:33
电脑故障处理打印版:一张纸搞定蓝屏、C盘满、重装排查 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 7:31:27
松下A5/A6伺服X4接口位置模式接线指南:7个关键引脚与PLC匹配接法 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 7:31:08
1850元X99平台实战:E5-2696V3编译Android 12源码全记录 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 7:30:56
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44