通信系统误码率公式实战指南:从信道容量到基带与带通传输
1. 这份公式整理到底在解决什么问题“信道容量、数字基带与带通传输系统误码率公式整理”——光看标题你可能觉得这是一份教科书附录式的罗列清单翻两页就放回书架。但我在某高校通信实验室带学生做课程设计时发现真正卡住大家的从来不是记不住公式本身而是不知道哪个公式该用在哪个场景、为什么这个参数要这么取、仿真结果和理论值差10倍时该怀疑哪一环。这份整理本质上是一张“通信链路诊断地图”它把散落在《信息论》《数字通信原理》《现代通信技术》三门课里的关键公式按真实工程逻辑重新串起来从信源能塞多少信息进信道信道容量到信号在基带怎么铺排基带传输再到怎么搬上高频载波发出去带通传输最后落到最直观的指标——误码率BER上。它不教你推导但告诉你每个符号背后的物理意义比如Q函数里的那个$\frac{E_b}{N_0}$不是抽象比值而是接收端每比特能量和噪声功率谱密度的实测比值比如奈奎斯特第一准则里的“无码间干扰”在示波器上就是眼图张开度必须大于0.3UI。我试过让两个学生分别用同一套MATLAB代码跑BPSK和QPSK的BER曲线一个直接套用$Q\left(\sqrt{2E_b/N_0}\right)$另一个先确认自己仿真中$E_b$是按实际发送功率除以比特率算的、$N_0$是按AWGN信道参数设的结果前者在$E_b/N_010$dB时误差达40%后者和理论曲线几乎重合。差距就在对公式的“场景化理解”上。所以这份整理面向的不是准备期末考试的学生而是正在调试FPGA基带模块的工程师、写无线协议栈的嵌入式开发者、或者需要给客户解释“为什么5G速率比4G高3倍”的售前工程师——它帮你把纸面公式变成手边可调、可测、可验证的工具。2. 公式体系的底层逻辑为什么必须分三层组织2.1 信道容量是“天花板”不是“地板”很多人一上来就背香农公式$C B \log_2\left(1 \frac{S}{N}\right)$却忽略它根本不是设计指南而是理论极限。我参与过某物联网终端的低功耗通信模块选型初期方案想用窄带LoRa在125kHz带宽上传1kbps数据按香农公式算$S/N$只要1.5dB就能满足看起来很轻松。但实测中即使信噪比做到20dB误码率还是飘在$10^{-2}$。问题出在哪香农公式隐含了三个严苛前提无限长编码、最大似然译码、高斯白噪声信道。而LoRa实际用的是短码长的卷积码非理想解调信道还有多径衰落——这些现实损耗被统称为“香农间隙”Shannon Gap。后来我们改用更保守的$C 0.7B \log_2\left(1 \frac{S}{N}\right)$作为设计基准留足30%余量再结合具体调制方式的编码增益查表才把误码率压到$10^{-5}$以下。所以信道容量公式在这里的角色是告诉你“理论上最多能跑多快”而不是“现在就能跑多快”。它像建筑的地基承重极限设计师必须在此基础上打安全系数否则楼盖得再漂亮也会塌。2.2 基带传输是“地基”决定信号能否无失真铺开数字基带部分的核心矛盾是带宽效率 vs 抗干扰能力。奈奎斯特第一准则给出的最小带宽$B_{\min} R_s/2$$R_s$为符号率常被误解为“只要带宽够大就行”。我在调试某工业PLC的RS-485总线时吃过亏客户要求1Mbps速率我按升余弦滚降滤波器设计滚降因子$\alpha0.25$理论带宽需625kHz但现场布线只有500kHz模拟带宽。强行上电后眼图闭合严重误码率飙升。后来发现问题不在滤波器参数而在发送端驱动能力不足——当信号上升沿变缓高频分量衰减实际等效于增大了滚降因子。解决方案不是换更高带宽线缆而是把发送端预加重电路打开补偿高频衰减。这说明基带公式中的“无码间干扰”条件必须和硬件特性联动验证。升余弦滤波器的冲激响应$h(t) \frac{\sin(\pi t/T_s)\cos(\alpha \pi t/T_s)}{(1-4\alpha^2 t^2/T_s^2)\pi t/T_s}$里$T_s$是符号周期但实际电路中$T_s$受PCB走线电容影响会漂移必须用网络分析仪实测通道S21参数反推有效$T_s$。基带公式不是静态表格而是动态校准的起点。2.3 带通传输是“搬运工”解决频谱适配与能量聚焦从基带到带通本质是把低频数字信号“搬”到指定射频频段。这里最容易被忽略的是功率归一化陷阱。BPSK的误码率公式$P_b Q\left(\sqrt{2E_b/N_0}\right)$中$E_b$是每比特能量但实际发射机输出的是总功率$P_t$。若调制方式从BPSK换成QPSK同样$P_t$下$E_b$会减半因为1个符号传2比特但很多工程师直接套用BPSK公式导致误码率预测偏乐观。我帮某无人机图传团队优化2.4GHz链路时他们原方案用QPSK误码率实测比理论值高一个数量级。排查发现I/Q调制器本振泄漏导致直流偏移使QPSK星座点向原点收缩等效$E_b$下降3dB。修正方法不是改公式而是加DC校准环路。带通公式的价值在于暴露这种“理论假设”和“硬件现实”的鸿沟。比如MSK的连续相位特性理论上有更好带外衰减但实际中若VCO相位噪声过大连续相位优势就被淹没。所以带通公式必须和射频器件参数相位噪声、本振泄漏、PA非线性绑定使用。3. 三大类误码率公式的实操解析与参数校准3.1 基带系统误码率从理论到示波器的映射基带误码率的核心是判决门限与噪声统计的匹配。以单极性NRZ信号为例理论公式$P_e Q\left(\frac{A}{2\sigma_n}\right)$中$A$是信号幅度$\sigma_n$是噪声标准差。但实测中$A$怎么测用示波器测峰峰值再除2错。NRZ信号在示波器上显示的是电压波形而判决门限通常设在$A/2$但实际接收端ADC采样点可能因时钟抖动偏移最佳采样时刻。我建议用眼图测量法在示波器上开启眼图模式测“眼高”Eye Height作为有效$A$“眼宽”Eye Width反映定时抖动而噪声$\sigma_n$则从眼图水平方向的模糊度Eye Closure提取。某次调试千兆以太网PHY芯片理论$P_e$应为$10^{-12}$但实测$10^{-9}$。眼图显示眼高正常但水平模糊度达0.15UI远超芯片手册要求的0.05UI。最终定位到PCB上参考时钟晶振的相位噪声超标更换低噪声晶振后问题解决。这说明基带误码率公式中的参数必须用对应仪器的实测值填充而非标称值。3.2 带通系统误码率星座图才是你的新示波器带通系统的误码率公式如BPSK的$P_b Q\left(\sqrt{2E_b/N_0}\right)$、QPSK的$P_b Q\left(\sqrt{E_b/N_0}\right)$其物理基础是星座点间的欧氏距离。BPSK两星座点距离为$2\sqrt{E_s}$$E_s$为符号能量QPSK为$2\sqrt{E_s}$但因$E_s 2E_b$故QPSK的$P_b$公式中根号内是$E_b/N_0$。这个推导过程在纸上很美但实测中你要用矢量网络分析仪VNA或信号分析仪看星座图。例如某Wi-Fi 6模块在2.4GHz频段理论QPSK $E_b/N_012$dB时$P_b$应为$10^{-5}$但实测$10^{-3}$。调出星座图发现所有点都向原点收缩且呈圆形扩散——这是典型的功率放大器PA压缩效应大信号时PA增益下降导致星座点幅度减小。此时公式中的$E_b$已失效必须引入AM-AM失真模型修正。实操步骤是用信号源发单音信号扫频测PA增益压缩点P1dB再用矢量信号分析仪测EVM误差矢量幅度将EVM3%的区域标记为非线性区在此区域内降低发射功率。这才是带通误码率公式的正确打开方式它不是终点而是故障定位的起点。3.3 信道容量公式的工程化改造从香农极限到链路预算香农公式$C B \log_2\left(1 \frac{S}{N}\right)$在工程中必须拆解为链路预算方程$$ \text{接收信噪比} P_t G_t - L_{\text{path}} G_r - kTB - NF $$其中$kTB$是热噪声$NF$是接收机噪声系数。这里的关键是路径损耗$L_{\text{path}}$的建模精度。自由空间公式$L 20\log_{10}(d) 20\log_{10}(f) 32.44$$d$单位km$f$单位MHz只适用于视距LOS场景。某智能电表项目在居民楼部署实测路径损耗比自由空间高25dB。后来用ITU-R P.1238模型考虑墙体穿透损耗混凝土墙约15dB、楼层衰减每层8dB再叠加阴影衰落对数正态分布标准差8dB计算结果与实测仅差2dB。这说明香农公式在工程中不是直接代入而是通过链路预算反推先确定业务需求$C$如NB-IoT要求100bps再根据可用带宽$B$180kHz算出所需最小$S/N$再倒推发射功率、天线增益等参数。某次为降低电表功耗我们把$P_t$从23dBm降到17dBm按自由空间模型预测$S/N$下降6dB仍满足要求。但实测中因多径导致深衰落$S/N$瞬时跌至-5dB触发重传。最终方案是增加分集接收用香农公式重新计算分集增益后的等效$S/N$才稳定达标。信道容量公式在这里是系统级权衡的决策依据。4. 实操避坑指南那些教科书不会写的血泪教训4.1 “$E_b/N_0$”不是万能钥匙小心单位陷阱$E_b/N_0$是通信界的“通用货币”但单位混乱是误码率仿真的头号杀手。常见错误有三类能量单位混淆$E_b$单位是焦耳Joule但仿真中常以“瓦特·秒”表示而$N_0$单位是W/Hz。若$N_0$用dBm/Hz输入如-174dBm/Hz必须先转成线性值$10^{-174/10} \times 10^{-3} 4 \times 10^{-21}$ W/Hz再乘以带宽得总噪声功率。我见过最离谱的案例某团队用$N_0 -174$忘记dBm转W导致仿真噪声功率比实际小$10^{17.4}$倍BER曲线完全漂移。比特率定义歧义$E_b E_s / k$$k$为每符号比特数但$E_s$是符号能量而实际发射机控制的是平均功率$P_t$。若调制方式为16-QAM$k4$但若采用格雷码映射误比特率与误符号率关系为$P_b \approx P_s / 4$此时$E_b$的有效值需按格雷码邻近错误概率修正。采样率误导在MATLAB中用awgn()函数加噪声参数snr默认是“信号功率/噪声功率”比而非$E_b/N_0$。若信号采样率是符号率的4倍直接填$E_b/N_0$值会导致噪声过强。正确做法是先算$E_s/N_0 k \cdot E_b/N_0$再按采样率折算SNR$\text{SNR} E_s/N_0 - 10\log_{10}(f_s/R_s)$$f_s$为采样率。某次我帮学生调通QPSK仿真卡在$E_b/N_010$dB时BER0.5查了三天才发现awgn()的SNR参数没按采样率折算。4.2 眼图与星座图的“假象”识别术眼图和星座图是误码率分析的黄金工具但它们会说谎。眼图闭合≠一定误码某高速SerDes链路眼图张开度仅0.2UI但误码率测试BERT显示$10^{-12}$。原因在于接收端有自适应均衡器眼图是均衡前的而实际判决在均衡后。正确做法是用BERT的“均衡后眼图”功能或在接收端FPGA中抓取均衡器输出信号再画眼图。星座图干净≠无误码某5G毫米波模块星座图完美但吞吐量只有理论值的60%。用频谱仪发现存在强带外杂散干扰了相邻信道导致基站调度失败。此时误码率公式中的$N_0$应包含带外干扰功率即$N_0^{\text{eff}} N_0 I_{\text{out-of-band}}$。最危险的假象是“看起来还行”某LoRa网关在空旷地测试BER0但城市环境骤升至$10^{-2}$。眼图显示无明显闭合但用时频分析发现存在周期性脉冲干扰来自电梯电机其持续时间短于符号周期眼图无法捕捉。解决方案是用实时频谱仪开启DPX模式捕获瞬态干扰再在误码率公式中加入脉冲干扰项$P_{\text{impulse}}$。教科书从不提这些但现场工程师每天都在和它们搏斗。4.3 仿真与实测的“鸿沟”填平术仿真结果和实测误差超过3dB是常态根源在于模型简化。我的填平四步法校准噪声底在无信号输入时用频谱仪测接收机输出噪声功率反推实测$N_0$替换仿真中-174dBm/Hz的理论值。某次实测$N_0 -168$dBm/Hz仅此一项就修正2dB误差。注入硬件损伤在仿真中加入I/Q不平衡幅度误差±0.5dB相位误差±2°、本地振荡器相位噪声-100dBc/Hz10kHz偏移、PA非线性AM-AM/AM-PM模型这些参数可从芯片手册或VNA实测获得。信道实测建模不用理想瑞利衰落而用信道探测仪如Keysight N9020B扫频测S21生成实测冲激响应导入仿真作为信道模型。判决器建模仿真中常用理想阈值判决但实际ADC有量化噪声、时钟抖动1ps RMS、输入失调电压1mV。在MATLAB中用quantizer()函数模拟ADC量化用jitter()函数加时钟抖动误差立刻显现。某次这样做后仿真BER在$E_b/N_08$dB时从$10^{-6}$升至$10^{-4}$与实测完全吻合。这证明不是仿真不准是你没把硬件缺陷“编译”进去。5. 公式之外的实战延伸如何让这份整理真正活起来5.1 构建个人“误码率速查卡”我把核心公式做成一张A4纸大小的速查卡但不是简单罗列而是按故障场景组织场景1实测BER比仿真高→ 检查$E_b/N_0$单位、硬件损伤建模、噪声底校准见4.1场景2眼图闭合但BER正常→ 检查均衡器状态、时钟恢复环路见4.2场景3多径环境下BER突变→ 启用RAKE接收或OFDM子载波分集公式中$E_b/N_0$需按分集增益修正见3.3这张卡放在实验室工位最显眼处新人入职第一周必须能独立使用它定位3个典型问题。它把抽象公式转化成动作指令这才是工程价值。5.2 用Python自动化公式验证手动算Q函数太慢我写了个轻量脚本输入$E_b/N_0$值自动输出理论BER调用scipy.special.erfc对应的$Q\left(\sqrt{x}\right)$值x为输入1000次蒙特卡洛仿真BER含置信区间与实测数据的残差分析关键代码片段import numpy as np from scipy.special import erfc def ber_qpsk(ebno_db): ebno 10**(ebno_db/10) return 0.5 * erfc(np.sqrt(ebno/2)) # QPSK理论BER def monte_carlo_ber(mod_type, ebno_db, n_bits100000): # 生成随机比特流、调制、加AWGN、解调、统计误码 pass # 实际代码略运行后生成PDF报告含理论/仿真/实测三线对比图。某次发现理论与仿真在$E_b/N_05$dB时偏差0.5dB追查发现是awgn()函数在低SNR下未启用精确算法改用自定义噪声生成后问题解决。自动化不是偷懒而是把重复劳动变成发现新问题的探针。5.3 在FPGA上实时验证公式最硬核的验证是在硬件上跑。我在Xilinx Zynq上实现了一个实时BER测试仪PL端用AXI Stream生成PRBS7序列经DAC输出模拟信号PS端用ARM核运行Linux通过ADC采集信号用NumPy实时计算$E_b/N_0$和BER关键创新用PL端FIR滤波器动态调整滚降因子$\alpha$PS端同步更新理论BER公式中的$\alpha$参数实测眼图张开度与理论预测误差0.02UI。这证明公式不是纸上谈兵而是可编程的物理定律。当FPGA上跑出的BER曲线和MATLAB里画的一模一样时那种确信感是任何考试高分都给不了的。最后再分享一个小技巧每次调试前先问自己三个问题——我用的公式它的假设条件在现场是否成立如高斯噪声无多径公式里的每个参数我有没有用对应仪器实测还是直接抄手册标称值如果结果不对是公式错了还是我把公式用错了场景通信系统没有银弹但有一把万能钥匙把每个符号都当成一个待验证的物理量。

相关新闻

GraphRAG落地路径:从向量检索起步,按需添加图能力

GraphRAG落地路径:从向量检索起步,按需添加图能力

GraphRAG这个关键词,前两年就已经在技术社区里火得不行。我经常被同事和朋友问:既然大家都在说GraphRAG好,那我是不是应该直接上一套图谱存储到生成链路里?每次我的回答都是:先别急,把向量存储的RAG链路先跑…

2026/10/18 10:50:06 阅读更多 →
Qt SQLCipher集成:SQLite数据库加密与驱动改造实践

Qt SQLCipher集成:SQLite数据库加密与驱动改造实践

先从一个让人心疼的场景说起:项目里一套内部工具,后台用的是 SQLite 存数据,跑得好好的,结果有台测试机整目录被拷贝出去,别人拿文本编辑器直接打开.db文件,用户操作记录、配置信息、甚至本地缓存里的敏感字…

2026/10/18 10:00:17 阅读更多 →
PowerCenter ETL开发入门:从映射到工作流的完整实践指南

PowerCenter ETL开发入门:从映射到工作流的完整实践指南

1. 老牌ETL工具的定位:PowerCenter解决的是数据搬运的"脏活"1.1 先想清楚:你为什么要用ETL工具第一次接触Informatica ETL开发的人,多半是被项目上那句"所有数据都从这边走"推到这个工具面前的。PowerCenter在数据仓库里…

2026/10/18 10:00:01 阅读更多 →

最新新闻

GESP五级筛法精讲:埃氏筛与线性筛的原理、选择与考场模板

GESP五级筛法精讲:埃氏筛与线性筛的原理、选择与考场模板

GESP C五级的知识点里,埃氏筛和线性筛是公认的“第一次让你真正感受到算法效率”的内容。很多同学刚学到这里都会有个共同的困惑:代码看起来差不多,名字又很像,到底学哪个?考试默写哪个?为什么明明暴力也能…

2026/10/18 12:41:33 阅读更多 →
句子嵌入模型解析:paraphrase-multilingual-MiniLM-L12-v2 语义相似度实战

句子嵌入模型解析:paraphrase-multilingual-MiniLM-L12-v2 语义相似度实战

简介:本资源为 sentence-transformers 库下的 paraphrase-multilingual-MiniLM-L12-v2 多语言句向量模型本地包,面向从事自然语言处理、语义检索、问答系统与文本蕴含等任务的开发者及研究者。模型基于轻量级 MiniLM 架构,含 12 层 Transform…

2026/10/18 12:41:33 阅读更多 →
日文说明书图片翻译实测:客服如何用OCR与多模态大模型提升效率

日文说明书图片翻译实测:客服如何用OCR与多模态大模型提升效率

白天最容易让我上头的瞬间,不是什么难缠的差评,而是买家突然甩来一张图,图上是一大段密密麻麻的日文说明书,然后问一句“亲,这个是什么意思?”做客服久了你就知道,英语多少还能靠单词蒙一蒙&…

2026/10/18 12:41:33 阅读更多 →
C# Word文档处理实战:基于Spire.Doc的创建、替换、转换与表格操作

C# Word文档处理实战:基于Spire.Doc的创建、替换、转换与表格操作

简介:这份资源面向使用 C# 与 .NET 进行 Word 文档自动化处理的开发者,重点解决在无 Microsoft Word 环境下创建、修改和操作文档的需求。包内提供 Spire.Doc 的附加使用 Demo,并附带 Spire.License.dll 授权文件,可激活无限制使用…

2026/10/18 12:41:33 阅读更多 →
Excel批量生成SQL脚本工具:POI+JDBC实现数据迁移提效

Excel批量生成SQL脚本工具:POI+JDBC实现数据迁移提效

简介:这是一份面向Java开发者与数据库运维人员的数据处理工具源码包,用于将Excel表格数据自动解析并生成可执行的SQL脚本,再通过JDBC连接写入目标数据库,适用于数据迁移、批量导入与数据分析等场景。压缩包共56个文件,…

2026/10/18 12:41:33 阅读更多 →
汽车制造数据孤岛怎么破?多智能体协同架构实战解析

汽车制造数据孤岛怎么破?多智能体协同架构实战解析

做汽车制造数字化转型这几年,最让我头疼的不是算法精度不够,也不是算力不够,而是数据孤岛。设计部门用一套PLM,工艺部门用一套CAPP,车间MES是另一套,质量系统QMS又自己一套,采购和物流走的ERP/S…

2026/10/18 12:40:33 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →