云快充充电桩通信协议1.6详解:帧结构、报文解析与联调避坑指南
简介云快充平台与设备通信协议1.6是江苏云快充新能源科技有限公司发布的充电桩与云平台交互规范面向充电桩厂商、运营商及后端开发人员用于解决设备接入、数据上报、远程控制等场景下的通信兼容与稳定问题。协议基于TCP/IP五层模型详细定义了应用层报文帧格式、数据结构、帧类型及注册心跳、登录认证、交易记录、双枪并充等关键流程并给出了版本变更说明与具体报文示例便于开发者按章节对照实现。整个资源包只有1个PDF文件体积约1.39MB内容涵盖总则、通信协议结构、帧类型定义一缆表及上电/App充电/刷卡充电/离线充电等完整流程结构紧凑适合在开发、测试和联调时作为官方协议手册随时查阅。文档发布后已有6158人浏览学习实用性广。读者阅读后可快速掌握协议字段含义、报文组织方式与排障思路对充电桩接入云快充平台、开发调试工具或分析通信异常具有直接参考价值。1. 云快充平台与设备通信协议1.6充电桩接入运营平台的那张“合同”做充电桩对接的人大概率都有过这种经历桩端上报的SOC和平台展示的SOC差了10%或者充电结束了好几分钟平台订单还停在“充电中”。两边都觉得自己没问题查了一圈发现是通信协议理解的版本不一样。云快充平台与设备通信协议1.6就是用来解决这一类问题的——它定义了充电桩和运营平台之间从登录、心跳、实时数据上报到订单结算的一整套报文交互规则。读懂这套协议你就能完成设备接入、联调排错和协议升级适合做充电桩嵌入式开发、平台对接、运维交付的工程师。协议这东西平时像个黑匣子出问题时才想起来翻但真正吃透它联调效率能翻一倍。2. 读懂1.6协议报文帧结构、字段拆解与一次抓包实例2.1 帧结构起始符、命令字、数据域与校验怎么拼不管是哪家平台的充电桩通信协议底层报文组织方式基本一致都是在一个TCP长连接里传递“帧”。云快充平台与设备通信协议1.6的帧结构一般包含起始符、版本号、命令字、流水号、数据长度、数据域和校验码这几个部分。理解帧结构相当于拿到了阅读所有报文的基础字典。帧是通信的最小单位设备端和平台端约定好每一段字节的语义才能互相解析。常见做法是把帧头固定为若干字节中间用长度字段告诉对端“后面还有多少数据”帧尾加一个校验值防止数据在传输中被改坏。协议1.6里的字段顺序和长度在不同厂商的设备实现上略有差异但核心逻辑一致先找帧头再看长度然后校验最后解析业务数据。字段常见字节数作用说明起始符2标识帧开始常见为固定值如0x6868用于对端快速定位帧头版本号1协议版本对应1.6表示按该版本解析后续字段命令字2业务类型标识区分登录、心跳、充电启动、数据上报等流水号2每帧唯一编号用于请求应答配对和丢包排查数据长度2数据域字节数解析时用来切分完整帧防止粘包数据域不定具体业务内容按命令字对应的数据结构二次解析校验码2数据校验常见为CRC16从版本号算到数据域结束协议1.6和早期版本最大的差异点在于数据域字段的扩展和计量信息的补充。早期版本只有电压、电流、SOC等基础数据1.6版本增加了分时计费、尖峰平谷电价标识、电表总电量、枪口温度等字段这让订单结算和费用计算有了更细的依据同时也带来了字段长度和字节序的兼容问题。2.2 一条真实报文逐字节拆开看纸上谈兵没用直接看一条实际传输的报文。下面这条十六进制报文的场景是“平台下发充电启动指令”我按常见帧格式把它拼出来逐字段拆给你看68 68 01 06 02 01 00 01 00 0C 00 01 60 01 00 00 00 00 00 00 00 00 00 00 01 23 45 67这条报文逐个字段拆开读68 68起始符看到这两个字节就知道一帧开始了。01协议版本对应1.6版本。06 02命令字。0x0602代表“充电启动”是一个下行控制指令。这里需要说明不同命令字的取值定义在协议文档里都有对照表对接时别凭记忆猜猜错的代价是设备完全不响应且没有任何错误码。01 00流水号。本次启动指令的编号是1设备应答时会回同样的流水号方便你判断应答对应的是哪一次请求。00 0C数据长度。0x000C等于12字节说明数据域一共12个字节。00 01 60 01 00 00 00 00 00 00 00 00数据域。具体含义解析后是充电枪号1、充电模式0x60直流快充、启动金额0元、启动SOC为0。不同模式下数据域的结构不一样所以解析数据域前必须知道当前命令字对应哪种消息结构。01 23 45 67校验码。如果接收方用同样的算法算出来对不上这一整帧会被丢弃。拆完这条报文你会发现协议本身不复杂难点在于不按帧格式解析时数据全是无意义的字节流。我一般会建议团队把每条报文的十六进制串和解析结果贴在联调文档里不要只贴解析结果否则排查问题时还要重新抓包。2.3 命令字对照表下行控制与上行上报的分类逻辑协议1.6的命令字数量不少但分类逻辑很清晰。理解这个分类比背命令字本身更重要。我把它分成上行和下行两类来记上行是设备主动上报给平台的包括登录请求、心跳、实时数据、告警信息、订单结算下行是平台下发给设备的包括登录应答、远程启动/停止充电、对时、费率下发。按方向分类有个实际好处排查问题时可以快速判断问题出在谁身上。平台没收到数据先看设备有没有发上行帧设备没执行动作先看平台有没有收到下行帧的应答。我整理了一份常见命令字的分类表命令字方向命令字名称典型取值触发时机上行设备→平台设备登录0x0101TCP连接建立后设备主动发起上行心跳0x0103按配置间隔定时上报上行实时数据上报0x0201充电过程中周期性上报电压电流SOC上行充电订单上报0x0301充电结束后上传结算数据上行告警上报0x0401设备检测到异常时触发下行平台→设备登录应答0x8101平台收到登录后回复下行远程启动充电0x0602用户在小程序或App点击启动下行远程停止充电0x0603用户点击停止或余额不足触发下行对时0x0901平台主动校准设备时间实际联调时不要死记这些取值每个平台的协议文档里都有完整表你把文档用到的命令字先在代码里做成一个字典解析时按命令字查字典出问题时打印的命令字一目了然。这里有一个容易被忽略的细节同一命令字在1.6版本里的数据域结构和1.5版本可能不同所以对接前先确认设备固件和平台都按协议1.6来解析否则会出现命令字、帧格式都对但业务数据完全对不上的情况。3. 核心交互时序登录握手、心跳保活与充电启动的完整闭环3.1 设备登录与注册第一次握手的四个关键字段设备上电联网后的第一件事不是上报数据而是先和平台完成登录握手。协议1.6里的登录流程并不复杂但这一步的失败率最高。设备接入平台时会先建立TCP连接然后发送登录请求帧平台校验通过后返回登录应答设备收到应答后才进入正常工作状态。登录请求数据域里一般会包含设备编号、设备类型、软件版本号、当前时间这四个关键字段。设备编号用来标识桩的唯一身份平台侧需要在后台提前录入否则校验不通过设备类型用来区分直流桩和交流桩不同桩型的后面报文交互逻辑差异很大软件版本号用于平台判断是否需要远程升级当前时间用于平台和设备的时间校正。一个常见的登录失败场景是TCP连接已经建立了但登录应答一直没有返回。拿到这个现象后我一般不会先看平台日志而是先在设备端抓包看登录请求帧到底有没有发出去。如果是局域网部署还要检查设备有没有配置正确的平台服务器IP和端口——这个错位问题在项目交付现场特别常见。登录握手成功后设备会收到平台下发的参数配置信息包括心跳间隔、上报频率、费率版本等。这里特别提醒登录应答里如果带了参数后续设备上报数据时务必按新参数执行不要继续沿用出厂默认值否则平台按新周期等数据设备按旧周期发数据两边永远对不上。3.2 心跳与对时让平台认为你“在线”的最低成本心跳是设备告诉平台“我还活着”的最小成本机制。协议1.6中设备在空闲状态下会按固定间隔发送心跳帧平台收到后更新设备在线状态。心跳间隔的配置一般有默认值但现场调试时常常需要调整。间隔太短会浪费流量和加重服务端压力间隔太长平台可能误判设备离线进而影响远程控制指令的下发。心跳帧的数据域很短一般只带一个设备状态字用来表示当前桩是空闲、充电中还是故障。平台收到心跳后除了确认在线还会判断设备当前是否空闲如果空闲且平台有远程启动命令待下发就会立即下发给设备。心跳还有一个隐藏用途时间同步。很多协议在心跳应答里会带上平台时间设备收到后可以校准自身时钟。订单结算时平台按平台时间计算充电费用设备按本地时间生成订单两边时钟差异超过一定阈值就会出现订单时间错位。所以务必把心跳里的对时字段利用起来否则充电订单的起止时间可能和平台记录的相差好几分钟。3.3 充电启动到结算从BMS唤醒到订单上传的状态流转充电启动是整个协议里状态流转最复杂的业务。以直流快充桩为例平台下发启动指令后桩需要先完成BMS握手、继电器吸合、输出功率再开始实时上报数据结束充电后生成订单并上传。每一步都有对应的状态码和超时处理任何一个环节卡住用户端的体验就是“启动失败”或“没有反应”。充电启动的简化流程是平台下发启动指令桩收到后回复应答然后桩开始和车辆BMS交互。BMS握手成功后桩进入充电状态开始周期性上报实时数据电压、电流、SOC、剩余时间。用户点击停止或达到结束条件后桩断电、结束报文生成订单上报平台平台返回确认流程结束。这里面最容易出问题的是启动应答和实际启动之间的时间差。平台以为已经启动了但桩还在和BMS握手用户看App已经显示“充电中”实际功率还是0。协议1.6里严格要求桩在收到启动指令后先回一个“收到”应答再异步执行启动流程完成后上报状态变为“充电中”。如果你对接的平台是依据“收到”应答就展示充电中而你的桩是完成后才上报状态用户就会看到一段时间的假充电状态这类体验问题在联调阶段就要提前对齐。4. 封包与解包实操用Python在设备端/网关侧把报文跑通4.1 封包函数把控制字段塞进协议模板理解了帧结构之后动手写代码就顺理成章了。我一般建议先写一个封包函数把所有下行指令的组帧逻辑收拢到一个地方避免到处散落重复代码。下面的Python封包函数展示了如何按协议1.6的帧格式生成一条“平台下发启动充电”的报文import struct def build_frame(cmd_id, device_id, payload): version 0x01 # 协议1.6 seq next_seq() # 自增流水号每发一帧加1 data_field device_id payload # 数据域设备编号 业务数据 # 帧格式起始符(2) 版本(1) 命令字(2) 流水号(2) 长度(2) 数据域 校验(2) header struct.pack(HBBHHH, 0x6868, version, cmd_id, seq, len(data_field)) # CRC16计算范围版本号到数据域结束 crc calc_crc16(struct.pack(BHH, version, cmd_id, len(data_field)) data_field) return header data_field struct.pack(H, crc)封包时需要注意字节序问题。上面代码用的是大端序但实际项目中很多设备端的帧结构是小端序尤其是UART传输场景。字节序不一致时平台解析出来的命令字和数据长度全是反的表现为“平台完全收不到有效帧”。我现在的习惯是写一个字节序常量统一控制而不是在每一处封包代码里硬编码。流水号的管理也值得认真处理。建议用线程安全的自增计数不要把流水号写死在某个固定值否则平台无法区分连续的两条相同命令应答配对时全乱。重发机制也要复用同一个流水号方便识别哪条命令触发了哪次应答。4.2 解包与校验处理粘包、半包和校验失败的三种情况解包比封包更容易翻车因为设备侧送过来的数据不是一个完整帧而是持续的字节流。不做处理的话很可能一次读取只收到半个帧或者一个包里有好几个帧粘在一起。正确的解包策略是维护一个接收缓冲区先把数据追加进去再尝试从中解析出完整帧。def parse_frame(buffer): while len(buffer) 10: # 至少能读到长度字段 # 找起始符 if buffer[0:2] ! b\x68\x68: buffer.pop(0) # 丢弃一个字节继续找 continue # 解析长度字段起始符2 版本1 命令字2 流水号2 长度2 9字节偏移 data_len struct.unpack(H, buffer[7:9])[0] frame_len 9 data_len 2 # 头9字节 数据域 校验2 if len(buffer) frame_len: break # 半包等待更多数据 frame buffer[:frame_len] buffer buffer[frame_len:] # 移除已解析的帧 if verify_crc16(frame): yield parse_payload(frame) # 完整帧交给业务层 else: log_error(CRC校验失败丢弃帧)解包最关键的逻辑在帧头查找。不要把索引写死为0因为缓冲区里可能有以前遗留的脏字节开头不一定是帧头。按字节滚动的查找方式虽然效率一般但在嵌入式或网关这种数据量下完全够用而且可靠性最高。校验失败是解包时常遇到的问题现象是平台侧日志里大片的CRC错误。大多数人第一反应是怀疑校验函数写错了但真实原因往往是封包端对CRC的计算范围和理解不一致。协议1.6里CRC的计算范围是从版本号开始到数据域结束不包括起始符。不同厂商设备对CRC范围的理解各不相同这是联调阶段最耗费时间的坑之一。遇到大量CRC错误时先用固定报文的十六进制值和文档里的参考值对比确认计算范围和多项式。4.3 日志与错误码联调时先看这几个字段联调时遇到问题最怕的就是“不知道从哪里看起”。我的习惯是先把日志体系搭好把协议层的收发原始报文和解析结果都打出来。不要只打印解析后的业务字段原始十六进制串一定要保留否则排查问题时没有抓手。协议1.6的应答帧里一般包含错误码字段取值范围0-255。常见的错误码分类有0代表成功非0代表失败。失败码又按功能模块划分比如设备拒绝执行、参数非法、设备忙等。联调时一定要把错误码解析成文字不要直接打印“错误码3”没人记得3是什么意思。一个值得借鉴的做法是在协议解析层加一个标志开关本地开发默认打开详细日志上线后关闭。这样既能保留联调时的排错能力又不会在生产环境刷爆日志。协议联调本质上是两个黑盒子互相猜心思日志就是打开黑盒子的钥匙缺失原始报文日志的项目基本等于盲调。5. 避坑指南协议1.6联调中反复出现的五个实战问题5.1 时间戳字段单位不统一对账时订单时长差出一小时现象平台账单显示的充电时长比用户实际充电时长多了一个小时但设备端日志里的开始时间和结束时间看起来都对。原因设备上报的开始时间用了Unix秒级时间戳而平台按毫秒级解析导致实际时长计算出现偏差。还有一些设备上报时间用的是BCD码解析成字符串时没有做转换直接按十六进制显示。解决在对接初期就确认好时间戳的单位和精度。建议在协议文档的基础上加一个字段说明表明确标注每个时间字段是秒还是毫秒。联调测试时专门构造一个跨小时的时间点比如23:50开始充电00:30结束用超过1小时的订单验证时间解析结果。5.2 电表读数精度丢失整数/小数位的约定不一致现象平台展示的充电电量和现场电表的实际计量差异较大比如电表显示10.5度平台显示10.0度或10.05度。原因设备上报电表总电量时把小数位数固定在某个值上但平台用不同的精度去解析。协议1.6里对计量数据的精度有推荐值但设备端经常因为采集芯片的原始精度不同而自行调整。解决上报数据里增加一个“精度字段”或按协议约定固定小数位。我见过的可靠做法是报文里传整数用“值/精度系数”还原真实电量。平台解析时先统一按协议1.6默认精度解析如果对不上再跟设备端核对采集芯片的分辨率。联调前先约定一组测试数据电表走字到10.5度时验证平台展示是否一致。5.3 心跳间隔与超时阈值不匹配设备被平台误判离线现象设备正常在线工作但平台界面显示桩离线远程启动指令下发不成功。原因设备的心跳发送间隔比平台的服务端超时阈值更长。比如设备每60秒发一次心跳平台设置45秒收不到心跳就判定离线。解决对接时同时确认两个参数设备心跳间隔和服务端超时阈值保证服务端阈值是设备间隔的2倍以上。更稳妥的方案是让设备把心跳间隔做成可配置参数由平台在下发配置时统一设置。现场网络不稳定时还要考虑增加心跳重发机制即心跳发送后在规定时间内没收到应答就重发一次而不是静默等下个周期。5.4 充电桩重启后重复上报历史订单平台出现重复结算现象用户已经在平台完成订单支付但第二天发现同样的充电订单又出现了一条金额相同。原因设备保存了订单记录重启后重新连接平台把未确认的订单重新上报。平台侧没有做订单去重处理或者设备侧没有在收到确认应答后清除本地订单。解决在协议1.6基础上做两级保护。设备侧在收到平台确认应答前把订单标记为“待确认”确认成功后才能覆盖。平台侧按“设备编号 订单流水号 充电开始时间”做唯一性校验重复上报的订单直接丢弃并返回重复确认应答。联调时专门测试“上报订单后断电重启”的用例确保设备重启后不会重复上报同一笔订单。5.5 报文加密与校验算法的“两套实现”问题现象设备端和平台端都用各自的代码实现了协议1.6的加密校验但两边算出来的结果不一样。客户现场桩无法完成登录或登录后所有控制指令都被拒绝。原因协议文档里只描述了加密算法流程但不同语言实现时存在细节差异。比如CRC16有初值、多项式、输入反转、输出反转等参数四个参数只要有一个不一样结果就不同。这类问题排查起来极其耗时因为两边都坚信自己实现是对的。解决联调第一步就做一个固定向量的校验测试。协议文档里通常有一段示例报文和对应的校验值两边先用这段报文验证自己的实现再联调。如果文档里没有示例值自己构造一个“全0数据域”的帧约定一个参考值。切记不要跳过这个步骤否则后面排查问题时所有报文的校验失败会让你怀疑人生。6. 进阶技巧用模拟桩脚本把整套协议跑一遍再上真机6.1 模拟桩的最小实现真机联调受限于硬件环境充电桩可能只有几台联调排队排到崩溃。我现在的习惯是先用Python写一个模拟桩脚本把协议1.6的核心交互流程完整跑通再上真机验证。模拟桩本质上就是一个TCP客户端按照协议的帧格式向平台发报文同时解析平台下发的指令。模拟桩要覆盖的最小功能点登录握手、心跳上报、模拟充电过程电压电流SOC变化、订单结算上报。下面是一个模拟桩的核心代码框架import socket, time, threading class SimCharger: def __init__(self, server_host, server_port, device_id): self.server_addr (server_host, server_port) self.device_id device_id self.sock socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.running False def login(self): # 按协议1.6组装登录帧并发送等待登录应答 frame build_frame(0x0101, self.device_id, self.device_id b\x01\x00) self.sock.sendall(frame) resp self.recv_frame() return resp is not None def start_charge(self): # 模拟充电过程中实时数据上报每5秒上报一次电压电流SOC voltage, current, soc 500.0, 0.0, 20.0 while soc 100: voltage 500.0 random.uniform(-5, 5) current random.uniform(80, 120) soc random.uniform(0.5, 1.5) payload struct.pack(H, soc) struct.pack(H, int(voltage*10)) struct.pack(H, int(current*10)) self.sock.sendall(build_frame(0x0201, self.device_id, payload)) time.sleep(5)用模拟桩联调有一个额外收益你可以把平台的边界情况都测一遍。比如连续掉线重连、再比如用错误的校验值测试平台的丢弃逻辑、还有心跳断掉后能否被平台正确识别。这些测试在真机上做需要反复断电断网成本太高而且容易损坏桩的固件状态。6.2 验证清单模拟桩跑通后建议按下面的清单逐项勾选后再去碰真机登录请求发出后能收到登录应答且应答里的参数能被正确解析。心跳周期和平台展示的在线状态一致断掉心跳后平台在预期时间内显示离线。模拟一个完整的充电流程平台订单的电量、时长、金额与桩侧数据一致。充电过程中手动触发一个异常如拔枪平台能收到告警且订单状态对应变更。重启模拟桩确认不会重复上报已经结算过的订单。这个习惯帮我省掉了大量真机联调时间。协议联调这东西一次两次靠运气稳定复现靠脚本。把模拟桩脚本留到项目交付后继续用后续平台升级或者设备固件升级时回归测试直接跑脚本不用再把现场桩翻出来重新联调一遍。协议1.6这套东西不难但细节密度高希望这篇笔记能帮你在对接时少走几段弯路。本文还有配套的精品资源点击获取

相关新闻

AC822B蓝牙音频SoC规格书解读:从音频链路到硬件设计

AC822B蓝牙音频SoC规格书解读:从音频链路到硬件设计

简介:杰理AC822B规格书是面向嵌入式硬件工程师与芯片应用开发者的技术文档,系统说明这款芯片的功能架构与硬件设计要点。包体为单份PDF,压缩包约1.05MB,共1个文件;内容覆盖文档修订历史、AC822B特性、内部模块框图、引…

2026/10/15 19:19:14 阅读更多 →
Power BI度量值组实战:从重复DAX到高效计算组

Power BI度量值组实战:从重复DAX到高效计算组

1. 度量值组到底解决了什么痛点如果你用 Power BI Desktop 做过三个以上的中型模型,大概率经历过这种场景:打开一张报表,右侧字段列表里密密麻麻躺着七八十个度量值,销售额、利润额、同比、环比、YTD、MTD、QTD、滚动12个月……找…

2026/10/15 19:19:14 阅读更多 →
superpowers:给AI编码助手上规矩的技能库实战指南

superpowers:给AI编码助手上规矩的技能库实战指南

第一次在 GitHub 趋势榜上刷到“superpowers”这个名字,我以为是哪个中二程序员给项目起的网红名。直到我把它装进 Claude Code,让 AI 带着整套 TDD 流程、系统性调试步骤和代码审查清单去独立完成一个 Java 重构任务,才发现这个名字背后是实…

2026/10/15 19:19:14 阅读更多 →

最新新闻

Apollo 11.0:面向车规级量产的自动驾驶仿真与通信架构解析

Apollo 11.0:面向车规级量产的自动驾驶仿真与通信架构解析

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

2026/10/15 20:05:29 阅读更多 →
Spring Boot JPA动态SQL五大方案实战对比

Spring Boot JPA动态SQL五大方案实战对比

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

2026/10/15 20:05:29 阅读更多 →
前端逻辑漏洞解析:从CTF抽奖题看客户端信任边界

前端逻辑漏洞解析:从CTF抽奖题看客户端信任边界

1. 这道题不是考运气,是考你有没有真正“看懂”前端逻辑“GWCTF 2019 WEB-枯燥的抽奖”——光看标题,很多人第一反应是:又一个靠爆破、猜接口、扫目录的CTF Web题?点开题目页面,一个极简界面:一个按钮写着“…

2026/10/15 20:05:29 阅读更多 →
Docker+Nginx+Gunicorn部署Python Web应用:从零到生产环境完整指南

Docker+Nginx+Gunicorn部署Python Web应用:从零到生产环境完整指南

把 Python Web 应用部署到服务器,几乎是每个写后端的人绕不开的一步。本地 debug 模式跑得风生水起,一旦要挂到公网上,各种问题就冒出来了:依赖装不上、进程没人管、端口冲突、静态文件 404……我自己第一次部署一个后台管理面板 …

2026/10/15 20:05:29 阅读更多 →
Unity场景OBJ导出方案:支持Terrain与FBX的标准化几何导出

Unity场景OBJ导出方案:支持Terrain与FBX的标准化几何导出

简介:这是一款面向Unity开发者(尤其是中高级用户)的场景导出工具插件,解决在Unity中将复杂场景(含GameObject与Terrain)或FBX模型高效转换为通用.obj格式的需求,广泛适用于Unity与外部建模/导航…

2026/10/15 20:05:29 阅读更多 →
基于geopandas的公交站点覆盖率分析方法与Python实现

基于geopandas的公交站点覆盖率分析方法与Python实现

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

2026/10/15 20:04:27 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →