基于Mininet与POX的SDN实验指南:从拓扑到防火墙的实践解析
简介软件定义网络实验课程设计文档面向高校研究生及网络相关专业学习者针对实验科目匮乏、硬件交换设备昂贵、实验环境灵活性不足、学生上手难度大等问题提供了基于Mininet模拟环境搭建教学实验的完整方案。文档按照体现最新研究进展、增强差异对比实验、设计模块化实验科目三种建设思路介绍POX、Kinetic、Pyretic等控制器的使用并梳理出基础型、验证型、综合型三大类共十一个实验科目涵盖Mininet环境搭建、特定网络拓扑绘制、网络分割、防火墙编写等典型场景还说明了模块化组织方式、学时分配与教学效果能够满足不同层次学生的个性化培养需求。资源为1个PDF文件大小约174KB内容精炼、层次分明既包含问题分析与设计思路也提供了可落地的实验科目体系适合作为软件定义网络课程设计或教学改革参考。已有104人学习下载推荐给高校教师、研究生以及对相关实验教学感兴趣的网络技术人员。1. 基于 Mininet 的软件定义网络实验省下硬件经费的六个实验科目做 SDN 课程设计最尴尬的不是不懂 OpenFlow而是懂逻辑却没环境。买一台支持 OpenFlow 1.3 的硬件交换机预算基本五位数起步而且半年更新一版协议学生连上手试错的机会都没有。这篇实验课程设计文档把整套 SDN 实验搬进了 Mininet 模拟环境用 Linux Container 的进程虚拟化替代真实硬件配 POX 控制器完成拓扑绘制、网络分割、防火墙编写等 11 个实验科目。对网络方向的研究生和正在找思路的工程师来说这份文档的价值不在于理论篇幅而在于它把实验科目按基础型、验证型、综合型分层让不同基础的人都能找到可复现的切入点。互联网行业的网络岗转 SDN 也适用你可以先在笔记本上把逻辑跑通再谈硬件迁移。2. 从零踩通 Mininet POX仿真原理、环境参数与连通性验证2.1 Mininet 不是虚拟机而是进程虚拟化Mininet 的底层是基于 Linux Container 的进程虚拟化每个 host 节点共享同一个内核只是通过网络命名空间隔离了协议栈、路由表和 ARP 缓存。这是它和 VMware 虚拟机的本质区别——你不需要给每台“主机”分配独立操作系统启动一个拓扑就像启动一组进程秒级完成内存占用按 KB 算。它模拟出的数据路径走的是真实内核网络协议栈包的处理行为和物理环境一致只是“转发面”的速率受宿主 CPU 调度影响。理解这个原理很关键它直接决定了实验设计边界。因为共享内核Mininet 里跑不了对内核版本有特殊要求的网络中间件但因为共享内核OVS 网桥、网卡队列、TC 限速等内核模块能直接复用这也是论文里敢写“代码几乎无缝迁移到真实硬件环境”的依据。后面做带宽限制、VLAN 分割实验时你会发现底层调度的就是宿主机的 tc 和 ovs-vsctl和物理交换机上的操作粒度一致。2.2 最小可运行环境命令参数逐项拆解先装环境。常见做法是直接用 Mininet 官方提供的 Ubuntu 镜像版本选 20.04 或 22.04 对应镜像省去依赖编译的麻烦。如果你是在已有系统上装用apt-get install mininet会装到较旧版本建议从 GitHub 拉源码安装 2.3.0 以上版本。装完后先跑通一个最简拓扑sudo mn --controllerremote,ip127.0.0.1,port6653 --topotree,2 --switchovsk,protocolsOpenFlow13这条命令拆开看--controllerremote指定外部控制器地址POX 默认监听 6653新版本或 6633旧版本端口错了就会黑匣子一样连不上--topotree,2表示生成一个深度为 2 的树形拓扑默认扇出是 2展开后是 1 台核心交换机带 2 台边缘交换机每台边缘交换机下挂 2 台主机--switchovsk选择 Open vSwitch 作为交换机实现而不是内核自带的ovsk或用户态userprotocolsOpenFlow13锁死南向协议版本这个是后面最容易翻车的点硬件交换机默认支持 OF1.0而 POX 默认走 OF1.0两边对不上就会出现交换机显示 “OFPT_ERROR” 但 ping 全通或全断的玄学问题。启动后 Mininet 会打印出拓扑摘要和 CLI 提示符先别急着玩命令把控制器启动起来再测试连通性。另开一个终端进入 POX 目录启动基础学习交换机模块cd pox ./pox.py forwarding.l2_learning看到POX 0.5.3 (garlic) going up...即启动成功。然后回到 Mininet CLI执行mininet pingall预期结果是0% dropped。如果部分不通第一步排查控制器日志里有没有OFPT_PACKET_IN和OFPT_FLOW_MOD没有就说明交换机没有把 PacketIn 发过来很可能是协议版本没对上。2.3 从流表角度验证“学习交换机”生效普通学生做到 pingall 通了就收手但实际上这一步只验证了链路连通没验证 SDN 控制器真的在下发流表。我用ovs-ofctl直接看交换机状态ovs-ofctl -O OpenFlow13 dump-flows s1正常情况下你能看到类似table0, n_packetsN, n_bytesB, priority1,ip,in_port1 actionsoutput:2的转发条目。特别是 l2_learning 模块下的流表会依据收到的 PacketIn 学习 MAC 地址然后逐条下发精确转发流表。这一步建议作为实验的一部分写进报告因为它证明 了“控制面与转发面分离”不是概念而是看得见的表象——控制器把规则下发到交换机流表后续匹配的流量直接按actions处理不再上报控制器。这里有个值得试的参数把--topotree,2换成--topotree,3然后重复上面的流程。树深度加一层后包在核心交换机上会经历一次额外的查表控制器日志里会多出不少PacketIn事件。不用加任何代码就能感受 SDN 数据面转发和控制面事件之间的对应关系。2.4 一个额外值得记录的细节控制器端口有个隐藏坑POX 0.5.3 默认监听端口是 6633但 Open vSwitch 2.5 之后默认主动连接 6653。如果你的mn命令里没有显式指定端口控制器可能显示Connection to 127.0.0.1:6653 failed。解决方式是给 POX 传参openflow.port6653或者在mn里写成--controllerremote,ip127.0.0.1,port6633。两种都行但要在实验报告里写清楚避免下次换端口后整个拓扑静默断开。3. 把特定拓扑绘制落到脚本上自定义拓扑、网络分割与防火墙编写实参3.1 拓扑类型选型什么时候用 tree什么时候用 linear文档里提到的验证型实验包含“SDN 网络特定拓扑绘制”很多人理解为在 Mininet CLI 里敲一条--topotree,2就完事其实课程设计真正的意图是让你自己写 Python 脚本构建任意拓扑。先分类看拓扑类型命令/API适用场景局限树形 tree--topotree,depth2,fanout3模拟接入层-汇聚层-核心层三层组网叶节点数按扇出指数增长fanout 过大容易压垮控制器线性 linear--topolinear,4链式组网观察多跳转发故障域简单看不到汇聚路由自定义拓扑Mininet(U)addSwitch/addHost/addLink环形、部分 mesh、非规则拓扑需要自己维护链路参数单节点 single--toposingle,5测试单台交换机的转发表无法验证跨网段路由注意tree,2这种简写等价于depth2,fanout2结构是 1 台根交换机 2 台叶子交换机 4 台主机。而tree,3展开后是 1 台根交换机 2 台二层交换机 4 台边缘交换机 8 台主机节点数成倍跳控制器日志会突然变得刷屏正常。3.2 自定义拓扑脚本网络分割实验的地基网络分割实验如果在 CLI 里做只能通过link h1 h2之类的手动连线实现既难复现也不利于评分。正确姿势是写在 Python 脚本里作为课程设计的可选模块交付。下面是一个满足三种分割需求的脚本骨架#!/usr/bin/python from mininet.topo import Topo from mininet.net import Mininet from mininet.node import OVSSwitch, RemoteController from mininet.cli import CLI from mininet.link import TCLink class SegTopo(Topo): def build(self): # 创建三台交换机s1 作为核心s2/s3 作为业务子网 s1 self.addSwitch(s1) s2 self.addSwitch(s2) s3 self.addSwitch(s3) # 子网A主机两个普通业务主机一个数据库服务器 h1 self.addHost(h1, ip10.0.1.10/24) h2 self.addHost(h2, ip10.0.1.11/24) db self.addHost(db, ip10.0.1.12/24) # 子网B主机互联网区域 web1 self.addHost(web1, ip10.0.2.10/24) web2 self.addHost(web2, ip10.0.2.11/24) # 级联链路 self.addLink(s1, s2, bw100, delay5ms, loss0) self.addLink(s1, s3, bw1000, delay1ms) # 接入链路 self.addLink(s2, h1, bw10) self.addLink(s2, h2, bw10) self.addLink(s2, db, bw100) self.addLink(s3, web1, bw100) self.addLink(s3, web2, bw100) def createNet(): topo SegTopo() net Mininet(topotopo, controllerlambda name: RemoteController( name, ip127.0.0.1, port6653), switchOVSSwitch, linkTCLink, autoSetMacsTrue) net.start() CLI(net) net.stop() if __name__ __main__: createNet()这个脚本的注释写清楚了每个方法调用的意图可以参考。参数上TCLink最核心没有它bw和delay都不生效autoSetMacsTrue是为后面调试 ARP 时方便识别主机。带宽单位是Mbpsdelay是ms这些直接传给底层tc命令写错单位不会报错只是实验数据会出现小数点漂移。这条命令是开启 POX 控制器后在该脚本目录下运行sudo python seg_topo.py会弹回熟悉的mininet提示符。3.3 网络分割实验用流表级别隔离区域网络分割的核心是让不同子网之间默认不通除非你显式放行。用这个拓扑实践的思路是利用 s1 作为核心交换机通过 POX 控制器下发规则让 s2 下挂的10.0.1.0/24区域和 s3 下挂的10.0.2.0/24区域隔离。可以考虑在 POX 里写一个acl_mod.py模块# pox/pox/forwarding/acl_mod.py from pox.core import core import pox.openflow.libopenflow_01 as of from pox.lib.addresses import EthAddr log core.getLogger() class ACLSwitch(object): def __init__(self, connection): self.connection connection connection.addListeners(self) # 阻塞 h1 (10.0.1.10) 到 db (10.0.1.12) 的所有流量 block of.ofp_flow_mod() block.match.dl_type 0x800 # IPv4 block.match.nw_src 10.0.1.10 block.match.nw_dst 10.0.1.12 block.idle_timeout 0 connection.send(block) def launch(): def start_event(event): ACLSwitch(event.connection) core.openflow.addListenerByName(ConnectionUp, start_event)这个模块粗暴但有效交换机开启时主动下发一条DROP没有 actions 就是丢弃规则。然后跑pingall你会看到h1 - db是X而h1 - h2正常。说明隔离已经生效。注意 DROP 规则的优先级是最低如果前面有更高级别的转发规则这条就不起作用所以实验时要从默认 DPID 的空表开始测。3.4 防火墙编写从“丢包”到“限流”的进阶版本论文第三个墙头是防火墙编写同样可以模块化。上面的 ACL 是静态丢包实作里更常见的是状态化检测——监听 LLDP 或 ICMP 包动态去抖。下面给一个按 IP 禁用的标准写法可以直接在 POX 目录下加fw.py# pox/pox/forwarding/fw.py from pox.core import core import pox.openflow.libopenflow_01 as of from pox.lib.addresses import IPAddr log core.getLogger() class AppFirewall(object): def __init__(self, connection): self.connection connection connection.addListeners(self) def _handle_PacketIn(self, event): packet event.parsed if packet.tcp and packet.tcp.dstport 8080: 屏蔽发往 8080 端口的 TCP 流量模拟 Web 服务端口封禁 msg of.ofp_flow_mod() msg.match.dl_type 0x800 msg.match.nw_proto 6 # TCP msg.match.tp_dst 8080 self.connection.send(msg) log.info(Blocked 8080 port from %s, packet.src) def launch(): def start_event(event): AppFirewall(event.connection) core.openflow.addListenerByName(ConnectionUp, start_event)这版防火墙不依赖nw_src是全局屏蔽目标端口。nw_proto6表示 TCP如果想匹配 UDP 改成17。核心逻辑在_handle_PacketIn——只有交换机没匹配到流表的包才会触发 PacketIn一旦该端口流量第一条触发了下发流表后续包直接在交换机转发面被丢控制器不再参与。这是 SDN 防火墙和传统 iptables 最大的区别服务端是一等公民但应用规则的方式是下发流表而不是改本机 netfilter hook。贴代码后需要说明以上两个模块要先手动放置在pox/pox/forwarding/目录然后各自起一个 POX 进程./pox.py forwarding.fw否则launch()中的模块名无法被动态加载。课程设计报告里把 Ping 结果和ovs-ofctl dump-flows的n_packets变化截个图这部分分数就到手了。4. 挖出对比实验的价值传统网络泛洪 vs SDN 精确转发的三次验证4.1 为什么要设计“差异对比”实验文档第 2 节提了一个很容易被忽略的点增加与传统网络运行方式的差异对比实验。一般实验课程设计都是从 0 搭拓扑从 1 配 IP然后测试连通防火前。对比实验是为了解决“学了 SDN 还是不知道 SDN 强在哪”的问题。这里极为推荐一个三阶段推进的验证流程每个阶段都有可量化的结论。4.2 第一阶段传统交换机的“盲发”现象在 Mininet 里先不启动任何控制器让网桥模拟传统二层交换机。做法是用--switchovsk但不指定 controller然后用net.work手动启动网桥。你可以新起一个脚本不连控制器直接sudo mn --toposingle,3 --switchovsk --mac --no-vswitch等方式实际更好的是再写个一页脚本用OVSSwitch的start不用controller确保交换机没有连接任何 controller。这样交换机启动后处于 standalone 模式行为等同于普通傻瓜交换机。对 h1 ping h2 一次然后立刻在 h3 用 tcpdump 抓包mininet h3 tcpdump -n -i h3-eth0 mininet h1 ping -c3 h2你会看到 h3 上也能抓到大量 ICMP 请求和回复。因为传统交换机在没学到目标 MAC 的转发表前会对所有端口泛洪。这就是最关键的现象记录——传统转发是“不会就乱发”SDN 转发是“不会就问控制器”。4.3 第二阶段POX 学习交换机的“先问后发”把 POX 的 l2_learning 模块用上重新走一遍 h1 ping h2同时 h3 抓包。这次现象倒转过来第一条 ICMP 包到达时控制器会下一条精确规则交换机随后只向 h2 发送后续的包h3 上抓到的包只出现在前 1 帧后面就静默了。做完这个实验拿ovs-ofctl dump-flows s1导出流表在高亮的n_packets列你能看到第一条规则的n_packets快速增长而第二条通则保持不变。这个差异相当直观地解释了为什么 SDN 在 2012 年后被看作二次革命——数据面不再是“尽力而为”的硬件逻辑而是完全受控的软件定义规则。4.4 第三阶段用 iperf 把“查表”变成“吞吐差异”ping 是单包验证吞吐差异更震撼。开两个 POX 换同一下h1作为服务端h2作为客户端mininet h1 iperf -s -p 8888 mininet h2 iperf -c 10.0.0.1 -p 8888 -t 10在传统盲发模式下h3 持续收到无关流量h1/h2 之间的单向 TCP 吞吐量会因网络内杂散帧冲突即便在模拟环境里也有调度开销掉到 700Mbps 上下在 l2_learning 模式下第三方端口完全空闲吞吐量原生负载测试能到 940Mbps。这里不建议硬记绝对数值因为不同宿主机的 tc 带宽限制不同但“转发精度提升带来带宽收益”这个相对结论是稳定的。对比实验做完记得在报告里附上抓包截图和流表截图。这个验证提示了流表深度的重要性转发路径上每多一次 “PacketIn FlowMod” 往返首包时延就会多一个 RTT 的量级但后续包的查表完全是线速水平。如果没有对比实验学生就会把控制器当作“交换机的大脑”而验证型实验其实是在证明“大脑只需要在开学典礼上说话平时根本不需要在场”。5. 避坑指南OpenFlow 版本、Pyretic 依赖与仿真边界的五个记录5.1 控制器连接闪断交换机显示 “OFPT_ERROR”现象Mininet 启动后 pingall 全断控制器窗口没有日志输出。执行ovs-ofctl show s1能看到 rules 为 0controller的 is_connected 偶尔 false。原因协议版本协商失败。OVS 默认用 OpenFlow13POX 0.5.3 只实现了 OpenFlow 1.0两端口协议不一致导致交换机认为连接是错误类型。解决在mn命令里显式指定protocolsOpenFlow10或者给 POX 传入openflow.port6633并保持 Mininet 用默认--controllerremote。二选一混用就会“连上了但报文全错”的玄学现象。属于最容易节约排查时间的一个坑。5.2 论文里提到的 Pyretic 模块运行报错ImportError: No module named pyretic现象按论文集成 Pyretic 跑网络分割实验POX 启动时直接抛pyretic模块不存在的异常。原因Pyretic 是独立的控制器抽象层不是 POX 内置模块。它依赖z3约束求解器和pyretic的父目录加载路径单独放在 pox 目录下不会自动生效。解决如果只是复现实验效果直接用forwarding.l2_learning配合上面的自定义acl_mod.py就能实现网络分割不需要装 Pyretic。非要跑论文原版记着pip install z3-solver pyretic并在 POX 启动参数里加--no-openflow避免双控制器抢端口。5.3 带宽限制测不出来iperf 吞吐率依然是线速现象给链路设了bw10结果 iperf 显示 900Mbps。原因创建链路时没用TCLink或没有sudo权限启动 Mininet。Mininet 的带宽限速依赖 Linux 流量控制tc每一个 host 网卡队列需要 root 权限挂 tf 规则非 root 启动时静默降级为无限制。解决在自定义拓扑脚本里显式from mininet.link import TCLink并在Mininet(... linkTCLink)注入启动命令不能用python而要用sudo python。验证限速是否开启tc qdisc show dev s2-eth1能看到tbf队列说明生效否则说明参数没有传递成功。5.4 “防火墙”把 ARP 包也丢了导致 ping 不了了之现象在 POX 下发丢包规则后pingall从“不通”变成“每对主机前两条包丢后面正常”。原因TCP/IP 协议栈先发 ARP 解析 MAC防火墙只匹配了nw_src/nw_dst的 IPv4 字节而 ARP 包是 L2 以太网帧没有 IP 头部字段。交换机把 ARP 包也泛洪到控制器控制器 Match IP 时失败直接丢弃或走流表外的默认动作。解决ACL 匹配时扩充dl_type0x806的 ARP 放行规则或者更常见的是在 POX 里先执行event.connection.send(of.ofp_flow_mod(matchof.ofp_match(dl_type0x806), idle_timeout30))让 ARP 包直接泛洪。课程设计时把这个坑写进“思考题”能体现出你是踩过坑的人不是抄文档。5.5 硬件交换机上跑同一套代码表现完全不可复现现象实验报告用 Mininet 验证了 SDN 防火墙但换真实物理交换机后在控制器里完全找不到nw_src匹配。原因绝大多数硬件交换机只实现了 OpenFlow 1.0 的一个子集功能特别是不支持 1.x 的meter限速、group table组表、单流表多匹配等特性。Mininet 里 ovs-vswitchd 是完整的用户态实现而硬件交换机 ASIC 把很多规则编译成硬件 lookup key不代表它支持注入任意规则。解决迁移前先跑一遍ovs-ofctl -O OpenFlow10 dump-features s1读出交换机支持字段然后按这个能力集重新精简防火墙规则。这不是 “Mininet 不能信”而是任何仿真环境都存在的“软硬差异”边界。把它当成实验设计的一部分用第 3 章的脚本在迁移前先强制适配 OpenFlow10 跑一遍相当于给自己的代码打了一层“后悔药”。6. 迁移真实网络的“后悔药”流表快照对比与迁移前自查清单从 Mininet 迁移到硬件交换机的流程里我最先做的是流表快照。Mininet 里ovs-ofctl dump-flows s1能导出一份table_id, match, actions的完整记录物理设备上同样用ovs-ofctl dump-flows br0导出。把两份放一起 diff前三次迁移必现的差异基本集中在三项controller id 不同导致priority不一致、match 里缺少物理端口号、actions 里带GOTO_TABLE而硬件芯片不支持后跳。常用的迁移自查清单只有三件事。第一记录你下发到交换机的流表条数和n_packets 增量如果同一份流量下 Mininet 里和物理设备上条数相差超过 10%大概率是硬件网关缓存了流而不是控制器现场下发第二跑一遍“断控制器”场景——物理交换机上拔掉控制器网线观察已下发流表是否保持线速转发Mininet 里杀掉 POX 进程看同样行为两边表现一致才说明数据面可靠第三对拓扑里的每一跳确认链路号in_port与actions里 output 是同一物理链路因为 Mininet 的端口编号和物理设备端口编号没有映射关系规则必须单独做一次标签转发实验让每个交换机把特定 VLAN tagged 包发到统一端口来验证物理接线。从那以后我每次做迁移实验前都强制走一遍 “dump-flows 到 diff、断控制器再重连、打标签验证口子” 这三步这一套下来基本过滤掉了 80% 的 “我的 SDN 代码到真实网络就废了” 的问题。这套经验写在实验报告最后一段比任何“通过本课程我学到了……”的套话都得分。希望你也能用这套方法把在 Mininet 上跑通的逻辑平移到你的真实网络里希望帮到你。本文还有配套的精品资源点击获取

相关新闻

ParaStor云存储部署与运维调优实战:架构、条带、NFS故障排查

ParaStor云存储部署与运维调优实战:架构、条带、NFS故障排查

简介:文档以曙光ParaStor云存储系统为主题,定位为面向海量非结构化数据的分布式文件系统解决方案。它系统梳理了存储市场从传统阵列向Scale-out NAS迁移的趋势,结合2015年中国区NAS排名数据说明ParaStor的市场地位,并重点解析其分…

2026/10/5 2:34:40 阅读更多 →
BP神经网络在桥梁爆破方案评估中的模型构建与调参指南

BP神经网络在桥梁爆破方案评估中的模型构建与调参指南

简介:《基于BP神经网络的工程兵桥梁爆破方案评估模型》是一篇面向军事工程与人工智能交叉领域的技术论文,为工程兵部队及相关研究人员提供桥梁爆破方案量化评估的建模思路与实现方法。论文针对爆破方案选择高度依赖经验、传统专家系统和统计方法存在局限…

2026/10/5 2:34:40 阅读更多 →
Win10开机Recovery蓝屏修复:从bootrec到bcdboot的引导重建实战

Win10开机Recovery蓝屏修复:从bootrec到bcdboot的引导重建实战

简介:这是一份针对Win10系统开机时出现恢复蓝屏(提示“你的电脑或设备需要修复”)的故障处理指南,面向遇到启动失败、无法进入桌面的普通用户、运维人员及电脑维修初学者。内容围绕系统无法正常启动的常见原因展开,从开…

2026/10/5 2:34:40 阅读更多 →

最新新闻

Path环境变量配置避坑指南:从npm报错到BCD引导路径一次讲透

Path环境变量配置避坑指南:从npm报错到BCD引导路径一次讲透

"3.4 Path"——如果只看编号,你会以为这是某本教材里平平无奇的一小节,讲的无非是"环境变量Path怎么配"。但实际上,从业到现在,我经历的每一次Path相关问题,几乎都是半夜爬起来看日志才解决的。热…

2026/10/5 3:10:51 阅读更多 →
单细胞转录组热图改造:从基因筛选到聚类排序的完整可视化方案

单细胞转录组热图改造:从基因筛选到聚类排序的完整可视化方案

做单细胞转录组分析的人,每天打交道最多的图大概就是UMAP和热图。UMAP负责给你“讲故事”的轮廓,而热图则负责把“基因表达差异”这件事摊开了给人看。但这个热图,在单细胞数据面前往往非常“水土不服”——动不动就是上万个基因、几万个细胞…

2026/10/5 3:10:51 阅读更多 →
文献综述写到怀疑人生?AI 教育专业可以这样搭一条“免费工具流水线” [特殊字符]

文献综述写到怀疑人生?AI 教育专业可以这样搭一条“免费工具流水线” [特殊字符]

如果你读的是人工智能教育,大概率会遇到一种很特殊的崩溃:题目看起来很热,真要写综述时却发现自己同时在三个领域里“找东西”——教育学、人工智能、认知与学习科学。 比如毕业论文选题是: 生成式 AI 智能体对初中生计算思维学习…

2026/10/5 3:10:51 阅读更多 →
Linux 0.11内核初始化流程详解:从引导到首个用户进程

Linux 0.11内核初始化流程详解:从引导到首个用户进程

1. 上电后先过三关:boot.s、setup.s、head.s 各干了什么先把内核初始化的起点摆清楚。linux0.11 的初始化不是从main()开始的,而是从机器加电那一刻就开始了。上一章已经聊过 boot 过程,这里直接进入正题:在 C 代码接管之前&#…

2026/10/5 3:10:51 阅读更多 →
代码热更新实战:从Nacos配置到JVM热替换与客户端热更

代码热更新实战:从Nacos配置到JVM热替换与客户端热更

做后端和客户端开发的这些年,我越来越觉得“停机维护”这四个字是很多线上事故的起点。有一次周五晚上十点多,线上某个开关配置出了个问题,按传统流程走就是改代码、走发布、重启验证,一套下来至少半小时,用户那边的报…

2026/10/5 3:10:51 阅读更多 →
数据湖选型:S3与MinIO怎么选?从协议兼容到运维成本全解析

数据湖选型:S3与MinIO怎么选?从协议兼容到运维成本全解析

做数据湖选型的时候,“Amazon S3 和 MinIO怎么选”这组问题,我在不同客户那边被问过很多次。有次对方直接把两个方案拍在桌上,说“你给个结论就行”。我说结论给不了,因为我不知道你的数据量级、网络边界、还有下个季度你的运维班…

2026/10/5 3:09:51 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

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

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

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

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 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/4 11:40:45 阅读更多 →
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/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练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/4 20:14:29 阅读更多 →