- 博客(98)
- 收藏
- 关注
原创 IEC 61850 报告系列(二):Report 报文逐字段剖析——Wireshark 实战
本文摘要: 本文深入解析MMS informationReport报文在IEC 61850中的编码实现,重点阐述: ACSI Report到MMS层的服务映射关系,揭示Server主动发起ConfirmedRequestPDU的特殊性 详细拆解报文从以太网帧到MMS PDU的七层封装结构,通过ASN.1 BER编码展示关键字段 对比Report与Read/Write报文的异同,突出其单向推送特性 提供真实报文十六进制标注实例,将RCB属性与字节序列精确对应 强调通过Wireshark分析报文定位故障的实用技
2026-06-19 10:42:06
232
原创 IEC 61850 报告系列(一):报告控制块标准原理——从轮询到推送的演进
Bit字段含义报文体积影响0sqNum序列号+1~2 字节1timeStamp报告时间戳+8 字节(UTCTime)2每个成员的触发原因+N 字节(N=成员数)3数据集名称+10~30 字节4dataRef每个成员的对象引用+N×20 字节5缓冲区溢出标志+1 字节6entryID缓冲区条目标识+8 字节7confRev配置版本号+4 字节。
2026-06-19 10:37:21
367
原创 Pre-commit 多语言代码检查完全指南:Python 与 C++ 工程实践
本文介绍了pre-commit框架及其在现代软件开发中的核心价值。pre-commit是一个多语言Git Hook管理工具,提供完整的生命周期管理,包括安装、版本控制、环境隔离和缓存机制。相比手动Git Hook脚本,pre-commit具有跨平台兼容性、团队协作便利性等优势。 文章详细讲解了pre-commit的安装方法(pip/pipx/brew)和基础配置,通过YAML文件定义检查规则。针对Python项目,推荐了现代化工具链组合:通用文件检查+Ruff(替代Flake8/Black)+MyPy类型检
2026-06-10 08:13:03
353
原创 Pencil 完全指南:AI 原生 IDE 设计画布——从设计到代码零距离
文章摘要: Pencil是一款AI原生的IDE设计画布工具,颠覆传统Figma与IDE割裂的工作流,通过MCP协议实现"描述即设计、设计即代码"的新范式。核心优势包括:内嵌无限矢量画布、AI驱动高质量代码生成、Git版本控制设计文件、分钟级设计转代码能力。安装方式支持VS Code插件或CLI,设计文件为纯文本.pen格式,支持自然语言交互(Vibe Design)实时修改。架构上通过MCP协议连接AI Agent(如Claude、Cursor等)与代码生成,兼容Figma导入及自动化测试。适用于熟悉现代I
2026-06-07 12:02:16
403
原创 Ruff 完全指南:下一代 Python Linter 与 Formatter
文章摘要:Ruff 是一个基于 Rust 的极速 Python 代码检查与格式化工具,整合了 Flake8、isort 等数十种工具的功能。其核心优势在于超高性能(比传统工具快 100-600 倍)和一体化设计,支持 700+ 规则分类管理(F/E/I/D/UP 等前缀体系)和安全自动修复。通过简单的 pip 安装即可使用,支持 --fix 自动修复常见问题,配置文件统一通过 pyproject.toml 管理。典型应用场景包括:保存文件时实时检查、CI/CD 快速集成、大型代码库高效扫描等
2026-06-02 08:14:21
220
原创 C++17 多线程系列(十):多线程性能优化——从测量到调优
本文探讨了多线程应用性能优化的理论基础和实用工具。主要内容包括: 两大并行计算定律: Amdahl定律:揭示串行部分对加速比的限制,即使无限核心,90%并行度的加速上限为10倍 Gustafson定律:当问题规模随核心数增长时,可能实现线性加速 性能测量方法: 通过测量不同线程数下的加速比和效率,识别性能拐点 示例显示8核时效率83%,16核时降至42.7%(过度订阅) 锁性能分析工具
2026-06-02 08:08:44
364
原创 C++17 多线程系列(九):多线程调试与排障——TSAN / Helgrind / GDB
本文介绍了多线程Bug检测工具Thread Sanitizer(TSAN)和Helgrind的使用方法。主要内容包括: TSAN的编译选项(-fsanitize=thread)和使用方式,能够高效检测数据竞争问题,报告包含冲突类型、代码位置、变量信息和线程创建栈等关键信息。 TSAN的工作原理:通过插入影子内存检查记录内存访问情况,使用向量时钟追踪happens-before关系,但会带来5-15倍的性能开销。 Helgrind作为Valgrind工具的一部分,提供更全面的同步检查,包括数据竞争和死锁检测,
2026-06-02 07:32:51
212
原创 C++17 多线程系列(八):并发模式——Producer-Consumer / Readers-Writer / 并行 Pipeline
本文介绍了经典并发设计模式中的生产者-消费者模式,提供了一个生产级的BoundedQueue<T>实现。该队列支持阻塞/非阻塞操作、超时控制和优雅关闭,包含多种生产者接口(push/try_push/push_for)和消费者接口(pop/try_pop)。通过一个多生产者-多消费者的完整示例,展示了如何在实际场景中使用该模式,包括3个生产者线程生成随机数,2个消费者线程处理数据,并统计生产消费总数。实现中使用了互斥锁、条件变量和原子操作来保证线程安全,并支持队列关闭机制来优雅终止消费者线程。
2026-06-01 08:11:47
233
原创 C++17 多线程系列(七):线程池——从零设计到优雅关闭
本文介绍了构建生产级C++17线程池的核心概念与实现要点。主要内容包括:线程池的必要性(避免线程创建/销毁开销和线程爆炸问题)、核心架构设计(任务队列+Worker线程池+同步机制)、任务队列的类型擦除技术、有界/无界队列选择策略,以及线程数量配置建议。文章最后给出了一个最小可用线程池的实现示例,包含任务提交、线程管理和优雅关闭机制。该线程池能显著提升并发任务调度效率,适用于CPU密集型和IO密集型场景。
2026-06-01 08:09:18
232
原创 C++17 多线程系列(六):高级同步——shared_mutex / scoped_lock / call_once
掌握 C++17 新增的同步原语,理解读者-写者锁的性能优势,能根据场景选择正确的同步工具,写出正确且高效的多线程同步代码。前置知识:Part 2 的mutexlock_guard基础。
2026-06-01 08:07:46
218
原创 C++17 多线程系列(五):C++17 并行算法——从串行到并行的零成本迁移
摘要:C++17 引入了并行算法执行策略,通过 <execution> 头文件提供三种策略:串行(seq)、并行(par)和并行+向量化(par_unseq)。只需在现有 STL 算法(如 sort、for_each、transform)中添加执行策略参数即可实现并行化,典型加速比可达核心数倍。特别推荐用 std::reduce 替代 std::accumulate 进行并行归约,但需注意操作必须满足交换律和结合律。并行算法适用于数据量大、计算密集的场景,但对字符串拼接等非交换操作不适用。
2026-05-28 08:05:52
342
原创 C++17 多线程系列(四):异步编程——future / promise / async / packaged_task
本文介绍了C++异步编程的四大核心组件:std::async、std::future、std::promise和std::packaged_task。主要内容包括:1)同步与异步编程模型的对比;2)C++异步体系架构,包括生产者、共享状态和消费者的交互机制;3)std::future的基本用法和核心API;4)std::promise的手动传值机制和异常处理;5)std::async的三种启动策略(异步、延迟和默认)。
2026-05-28 08:01:07
231
原创 C++17 多线程系列(三):原子操作与内存模型——从 volatile 到 memory_order
C++原子操作与内存模型摘要 本文系统讲解了C++原子操作的核心概念与应用场景。主要内容包括: 原子操作必要性:澄清volatile与原子操作的区别,分析i++非原子性的底层原因(加载-修改-存储三步操作) std::atomic基础: 支持bool、整数、指针等类型 提供load/store/exchange/fetch_add等原子操作 重点讲解CAS(compare_exchange)原理与实现模式 内存序模型:简要提及编译器和CPU可能进行的指令重排对多线程的影响
2026-05-28 07:59:35
342
原创 C++17 多线程系列(二):共享数据与同步——mutex 与 condition_variable
本文深入探讨C++多线程编程中的核心同步机制。首先分析数据竞争的本质及其导致的未定义行为,通过汇编视角解释非原子操作的并发风险。重点介绍三种互斥锁工具:std::mutex基础用法、std::lock_guard的RAII自动管理特性,以及std::unique_lock的灵活性优势(支持延迟加锁、尝试加锁等)。最后展示C++17引入的std::scoped_lock如何简化多锁操作并预防死锁。全文通过代码示例和流程图对比不同锁的应用场景,为构建线程安全程序提供实用指导。
2026-05-27 23:20:19
372
原创 C++17 多线程系列(一):线程基础——std::thread 完全指南
本文介绍了C++11中std::thread的基本用法,包括线程创建、生命周期管理和线程标识。主要内容包括:1)通过5种方式创建线程(函数指针、函数对象、lambda表达式、成员函数和多参数);2)线程状态管理和join/detach操作的选择;3)使用RAII技术确保线程安全;4)获取线程标识的方法。文章强调必须在销毁线程对象前调用join或detach,并提供了异常安全的thread_guard实现方案。
2026-05-27 23:12:54
339
原创 火焰图基本使用指南
火焰图是一种可视化性能分析工具,用于快速定位C++服务中的CPU热点函数。它通过采样调用栈数据,将函数调用关系从下到上排列,宽度表示CPU占用比例。核心原理是基于低开销的采样分析(如Linux的perf工具),相比插桩方法更适合生产环境。使用流程包括:安装perf和FlameGraph脚本、编译时保留调试信息、采样CPU数据、生成交互式SVG火焰图。通过分析火焰图的宽度和层级,可以直观发现性能瓶颈所在。
2026-05-27 22:32:16
454
原创 Perf 火焰图深度实战:CPU 性能分析与异常排查完全指南
本文介绍使用Linux perf工具链和火焰图分析C/C++程序CPU性能的方法论。主要内容包括: 性能分析思维框架:基于USE方法论(Utilization/Saturation/Errors)从宏观到微观排查CPU问题,识别三种典型异常模型(单点热点/分散热点/伪热点)。 工具链使用:详解perf stat、perf record、火焰图等工具的组合应用,提供标准六步工作流和采样参数调优指南。 实战案例:通过字符串操作、锁争用、算法复杂度等典型问题案例,演示如何定位和优化热点代码。
2026-05-27 22:20:26
799
原创 Google Test 单元测试指南
本文介绍了Google Test(gtest)框架的核心功能与使用方法。主要内容包括: gtest的优势:工业级成熟度、xUnit架构、与gmock深度集成、丰富的断言体系、跨平台支持等。 安装配置:推荐使用CMake FetchContent集成,也支持vcpkg和系统包管理器安装方式。 测试用例编写:通过简单示例展示TEST宏的基本用法,包括测试套件命名、测试分组和断言检查。 工程实践:提供标准的项目目录结构建议,以及如何将测试集成到CMake构建系统中。 gtest作为C++生态中最广泛使用的单元测试
2026-05-27 07:51:06
639
原创 IEC 104 系列(六):工程实战——部署、冗余与排障
本文摘要:文章详细介绍了电力自动化系统从设计到投运的完整流程,包括需求分析、点表设计、网络规划、设备接入、通信配置、协议开发、联调测试等关键阶段。重点阐述了IEC 104协议中IOA地址的分区规划方案,提供了遥信、遥测、遥控等数据点的Excel模板,并展示了如何通过Python脚本自动生成C语言点表代码。文中还包含各阶段必备交付物清单和系统集成流程图,为工程实施提供了完整的参考框架。
2026-05-26 07:39:16
196
原创 IEC 104 系列(五):开发实现——基于 lib60870 的代码实战
本文介绍了基于lib60870开源库开发IEC 104协议Server和Client的核心要点。首先对比了主流开源方案,推荐嵌入式开发首选lib60870(C),原型验证可选py60870,Java后端可选j60870。重点展示了lib60870的项目结构,并详细说明了Server开发流程:包括环境搭建(支持Linux和ARM交叉编译)、最小Server示例实现,涵盖时钟同步和总召唤回调处理。示例代码演示了如何响应主站请求,上送遥信和遥测数据,体现了IEC 104协议的核心功能实现。
2026-05-25 08:13:08
425
原创 IEC 104 系列(四):数据类型与信息对象——完备速查
IEC 104协议类型标识(TI)速查摘要 IEC 104协议的类型标识(TI)体系分为监视方向(1-99)、控制方向(100-199)和保留/扩展(200-255)三大类。TI采用三字母+后缀的命名规则,如M_SP_NA_1表示监视方向的单点遥信无时标格式。 关键遥信类型: M_SP_NA_1(TI=1):单点遥信基础格式 M_DP_NA_1(TI=3):双点遥信基础格式 M_SP_TB_1(TI=30):带长时标的SOE标准格式 遥测主要类型: M_ME_NC_1(TI=13):
2026-05-25 08:08:45
400
原创 IEC 104 系列(三):通信机制——连接管理与数据交互
本文摘要: IEC 104协议通信机制详解,涵盖TCP连接管理(两阶段建链:TCP层建链+应用层STARTDT激活)、端口角色(主站主动/从站监听2404端口)、关键参数配置(k/w窗口大小及t1/t2/t3超时设置)。重点分析I帧滑动窗口确认机制(N(S)/N(R)维护规则)和S帧定时确认(t2机制),并给出双网冗余连接方案(热备/温备模式对比)。通过时序图展示完整交互流程,为工业通信系统提供可靠性设计指导。
2026-05-25 08:06:05
523
原创 IEC 104 系列(二):报文结构——APCI/ASDU/APDU 深度解析
本文详细解析了IEC 104协议的报文帧结构。主要内容包括:1)APDU由APCI和ASDU组成,分为I/S/U三种帧类型,其中I帧承载数据,S帧用于确认,U帧用于链路控制;2)APCI固定6字节,包含起始符、长度和控制域,控制域格式区分帧类型;3)ASDU包含类型标识、可变结构限定词、传输原因等7层结构,不同类型数据通过TI值区分。文章通过流程图和示例详细说明了各类帧的字节结构和应用场景,为理解IEC 104协议提供了清晰的框架。
2026-05-20 08:03:45
503
原创 IEC 104 系列(一):标准全景——从远动通信到网络化调度
摘要(149字) IEC 60870-5-104标准是电力远动通信网络化的关键协议,解决了传统串口协议(如IEC 101)的碎片化问题。其核心价值在于: 标准化:统一了电力调度主站与厂站(RTU/变电站)间的通信规范,终结了私有协议林立导致的互操作难题; 网络化:基于TCP/IP实现可靠传输,支持平衡式通信(双向主动传输)和毫秒级响应; 互补定位:与IEC 61850分工协作,前者负责调度广域通信,后者专注站内设备交互。
2026-05-20 08:00:51
282
原创 Catch2 单元测试指南
本文介绍了C++单元测试框架Catch2的核心概念和使用方法。主要内容包括: Catch2框架概述:对比其他测试框架的优势,如零配置、现代C++风格、自描述断言等特性。 安装与配置:提供多种集成方式,包括头文件方式、CMake FetchContent和vcpkg包管理。 测试编写基础:从最小测试程序入手,介绍断言宏体系和SECTION场景划分功能。 高级特性:涵盖BDD风格测试、匹配器(Matchers)、测试夹具(Fixtures)等核心功能。 工程实践:包括CMake集成、测试组织分层、命令行控制
2026-05-18 22:24:48
580
原创 vcpkg 使用指南 —— C/C++ 跨平台包管理最佳实践
vcpkg是微软开源的C/C++跨平台包管理器,支持Linux、Windows和macOS三大平台。它采用"源码构建+本地缓存"的设计理念,提供2500+开源库支持,可无缝集成CMake、MSBuild等构建系统。vcpkg简化了第三方库的获取与构建过程,通过一行命令即可自动下载、编译和安装依赖库,并自动处理依赖关系。相比手动管理,vcpkg能精确控制版本,通过vcpkg.json声明依赖实现团队协作环境一键还原。安装只需克隆仓库并执行引导脚本,支持x86/x64/arm多架构,提供静态/动态链接等多种编译
2026-05-17 12:43:47
571
原创 IEC 61850 系列(六):工程实战——部署、测试与故障排查
IEC 61850工程实战摘要 本文系统介绍了IEC 61850工程项目的全流程实施要点,包含六个核心阶段:从ICD文件收集、SCD系统配置、CID下发调试到最终投运运维。重点阐述了系统集成工具链(如DIGSI 5、IED Scout)、SCD版本管理规范以及分层测试策略(模型/服务/性能/场景四层验证)。特别强调互操作性测试与一致性测试的区别,提供Mermaid流程图展示测试层级递进关系,并给出配置冻结管理的最佳实践。文中还包含开源工具链使用示例和典型问题排查表,为工程实施提供完整技术路线。
2026-05-17 06:28:47
476
原创 IEC 61850 系列(五):开发实现——基于 pyiec61850-ng 的代码实战
本文介绍了基于pyiec61850-ng Python库开发IEC 61850 Server/Client的实现方案。首先对比了多种开源库,选择pyiec61850-ng因其Python生态、完整功能支持(MMS+GOOSE+SV)和封装良好的API。详细说明了该库的架构分层(Python应用层、封装层、SWIG绑定层和C底层库)及安装注意事项。随后展示了如何通过SCL配置文件定义IED模型,包括LNodeType、DOType等关键元素的XML配置示例,为搭建IEC 61850 Server奠定基础。
2026-05-09 08:16:03
456
原创 IEC 61850 系列(四):SCL 配置——工程化的核心语言
在 IEC 61850 之前,变电站工程中存在一个令人头疼的问题:每个厂商有自己的配置工具、自己的配置格式、自己的编译流程。系统集成商需要在多个工具之间来回切换,手动同步配置信息。一个典型的场景是:SCL(Substation Configuration Language,变电站配置描述语言)正是为解决这个问题而生的。它基于 XML Schema(XSD) 定义,标准编号 IEC 61850-6。SCL 的核心设计目标:SCL 基于 XML 1.0 标准,但增加了严格的 Schema 约束。
2026-05-07 22:59:33
408
原创 IEC 61850 系列(三):通信协议栈——MMS、GOOSE、SV 三驾马车
IEC 61850通信机制解析摘要 IEC 61850标准定义了三种核心通信机制:MMS(制造报文规范)、GOOSE(面向通用对象的变电站事件)和SV(采样值)。 MMS基于TCP/IP,采用客户端-服务器模式,用于监控数据采集和设备控制,延迟在100ms~1s,支持ACSI抽象服务映射。其协议栈包含多层ISO标准,使用ASN.1 BER编码,通过$符号转换对象引用路径。 GOOSE工作在数据链路层,采用发布/订阅模式,实现毫秒级(<4ms)事件传输,如保护跳闸信号。
2026-05-07 07:54:35
629
原创 IEC 61850 系列(二):信息模型——从物理设备到数据树
IEC 61850信息模型采用四层树状结构:Server→Logical Device→Logical Node→Data Object→Data Attribute。逻辑节点(LN)分为14个功能组,如保护(P)、控制(C)、开关设备(X)等。关键LN包括LLN0(管理核心)、XCBR(断路器)、GGIO(通用I/O)。对象引用遵循"LD/LN.DO.DA"命名规则,如"PROT/PDIS1.Z.mag.f"。该模型通过分层结构实现设备功能的标准化描述
2026-05-06 23:05:35
521
原创 IEC 61850 系列(一):标准全景——从电力自动化到统一通信
IEC 61850标准系列文章摘要 本文深入解析了IEC 61850标准体系,该标准从根本上改变了电力自动化通信方式。文章首先分析了传统变电站面临的协议碎片化、点表依赖等痛点,指出IEC 60870-5系列协议虽实现了通信标准化但仍存在局限。随后重点阐述了IEC 61850的核心设计哲学:通过面向对象建模、通信与模型解耦、配置驱动工程化三大原则,实现真正的信息模型标准化。 文章系统介绍了IEC 61850标准家族的核心分册及其相互关系,并详细解读了变电站三层两网模型(站控层-间隔层-过程层)的架构设计。
2026-05-06 08:03:49
542
原创 Ubuntu24.04 x86 借助 QEMU 运行 ARM64 Docker 镜像全流程
本教程将带你完成以下任务:1. 在一台 x86_64 架构的 Ubuntu 24.04 主机上安装 Docker。2. 配置 QEMU 仿真支持,使 Docker 能够运行 ARM 架构的容器。3. 拉取并运行官方 Ubuntu 24.04 ARM 镜像。4. 验证容器架构,并像操作原生 ARM 环境一样使用它。整个过程模拟了真实的 ARM 硬件环境,非常适合没有树莓派等 ARM 物理设备的开发者进行交叉编译和测试。
2026-05-05 08:03:17
554
原创 Linux 动态库 .so 找不到符号表排查指南
Linux动态库符号表问题排查指南摘要 当遇到Linux动态库(.so)符号表问题时,本文提供系统化的排查思路和工具链。
2026-04-24 08:07:47
557
原创 Modbus Poll 使用文档
Modbus Poll使用指南摘要 Modbus Poll是一款专业的Modbus协议测试工具,用于调试Modbus设备通信。本文详细介绍了软件安装配置、基本操作和高级功能使用。主要内容包括:1)连接设置与通信参数配置;2)数据读写、从机扫描和地址扫描操作;3)点表拆分保存与拖放功能;4)数据监控与报文查看;5)故障排除方法。通过本指南,用户可以掌握Modbus Poll的核心功能,包括多窗口监控、数据导出等高级应用,有效提升Modbus设备调试效率。文档配有详细操作图示,适合工程技术人员快速上手使用。
2026-04-18 19:38:28
699
原创 Wireshark 使用指南:Linux 下用 tcpdump 抓包并分析 Modbus 报文
Wireshark抓包分析Modbus报文指南 本文档提供Linux环境下使用tcpdump抓取Modbus TCP报文并通过Wireshark进行分析的完整流程。主要内容包括: 环境准备:安装tcpdump和Wireshark工具 抓包方法:使用tcpdump命令捕获502端口的Modbus通信数据 分析步骤:通过Wireshark过滤和解析Modbus报文 实用技巧:如何识别常见通信问题和异常情况
2026-04-17 07:53:19
661
原创 libmodbuspp 使用指南
libmodbuspp 是一个基于 libmodbus 的 C++ 封装库,提供简洁的 Modbus 通信接口。支持 RTU(串口)和 TCP(网口)两种通信模式,可作为 Master 客户端或 Server 服务端使用。主要特性包括:支持多从机通信(地址1-247)、丰富的数据类型转换(int/float/double等)、灵活的字节序配置、JSON 配置文件支持。库中定义了四种 Modbus 数据对象(线圈、离散输入、保持寄存器和输入寄存器),并提供 Master/Slave/Server 等核心类实现
2026-04-07 10:26:04
242
原创 C++中使用Redis指南:基于redis-plus-plus库
本文介绍了在C++中使用redis-plus-plus库操作Redis的指南。主要内容包括:1) 环境准备,包括Redis服务器和redis-plus-plus库的安装;2) 基础连接配置,包括单连接和连接池的创建方法;3) 字符串数据类型的基本操作,如SET/GET等常用命令。文章提供了详细的代码示例和配置选项说明,帮助开发者快速上手在C++项目中集成Redis功能。redis-plus-plus库提供了完整的Redis命令支持、线程安全、连接池管理等特性,是C++开发中连接Redis的高效选择。
2026-04-02 16:32:42
467
原创 部署 Sphinx 文档到 GitHub Pages 详细指南
本指南详细介绍了将 Sphinx 文档部署到 GitHub Pages 的两种方法:手动部署和通过 GitHub Actions 自动部署。内容包括项目结构准备、Sphinx 配置检查、HTML 文档生成,以及具体的部署步骤。手动部署部分讲解了如何推送 HTML 文件到 gh-pages 分支并配置 GitHub Pages 设置。自动部署部分则详细说明了如何创建 GitHub Actions 工作流、编写配置文件、设置权限以及测试自动部署流程。指南还包含高级配置选项如自定义域名设置,并配有操作截图辅助说明
2026-01-08 23:04:29
1138
原创 使用 Sphinx 构建高质量 Python 文档
本文介绍了使用Sphinx构建Python项目文档的完整流程。首先概述了Sphinx的特点,包括支持多种输出格式、代码高亮和自动文档提取功能。接着详细讲解了安装配置步骤,包括初始化项目、修改配置文件以及安装常用扩展模块。文章还介绍了reStructuredText基础语法,包括标题、段落、列表和代码块等格式,并展示了如何编写主文档和子文档。最后说明了如何通过规范的文档字符串自动生成API文档,推荐使用Google风格文档字符串格式。Sphinx能够帮助开发者创建专业、美观且易于维护的项目文档
2026-01-07 22:05:17
1198
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅