基于SDN的DDoS检测与防御实战:OpenFlow与REST API攻防框架
简介一份基于SDN架构的DDoS攻击检测与防御系统完整源码包面向计算机、信息安全、大数据、人工智能等专业的学生与开发人员适用于课程大作业、期末项目、毕业设计及初期科研立项演示。项目代码已完成功能验证包含控制器模块、检测策略与防御联动逻辑并预留充足的二次开发空间适合入门进阶或项目扩展。压缩包共88个文件以71个Java源码为主辅以11个XML配置、2个YAML配置、1个Shell脚本及说明文档整体仅62KB结构紧凑清晰内含标准工程配置与测试代码便于直接导入开发环境查看运行流程。该套资源目前已获得751人关注学习口碑良好获取后可作为SDN安全方向课程设计的完整参考也可基于现有框架快速搭建攻击检测与流量清洗演示环境有效缩短项目搭建与排错时间是一份高性价比的实训资料。1. 基于SDN的DDoS检测与防御课程大作业一套开箱即用的攻防实验框架做毕设或课程设计最怕的不是没想法而是想法做完才发现跑不通。这份“基于SDN的DDoS攻击检测与防御系统”是一套完整可运行的Java工程从控制器侧的数据采集、流量特征提取到DDoS攻击判定和防御策略下发一条链路都给你接通了。它不是单纯讲SDN原理的PPT而是一个可以启动、打流量、看告警、阻断攻击的实战项目适合信息安全、计算机科学与技术、物联网工程等方向的学生拿来做毕业设计、课程报告或大作业演示。我拆完这套代码后最直接的感受是它把OpenFlow协议里的流量统计字段和REST API的调用流程做成了课堂之外最容易上手的形态只要你会Spring Boot的基础用法就能快速把整套防线跑起来。接下来说清楚它的架构设计、本地复现步骤和几个我踩过的坑。2. 控制系统架构REST API与OpenFlow的联动逻辑2.1 SDN控制平面与数据平面的解耦设计这份项目的核心思路是把DDoS检测从传统交换机搬到了SDN控制器上。传统网络设备里交换机和路由器的控制功能与转发功能耦合在同一个固件里想加一种新攻击检测逻辑往往要升级硬件或者等厂商固件更新。而SDN把控制平面集中到控制器上数据平面的交换机只负责按照流表项转发这种架构天然适合做DDoS检测——你只需要在控制器上写一个模块就能掌握全网所有交换机的实时流量.工程里的控制器部分基于Java的Spring Boot框架通过REST API对外提供接口。这个选型很务实Spring Boot的自带嵌入式Web服务器让控制器模块可以像普通后端服务一样启动不需要额外部署Tomcat。检测模块通过调用交换机的统计接口拿到端口流量计数和流表匹配计数然后做阈值判断。这里用到的是OpenFlow协议里的OFPortStatsRequest和OFAggregateStatsRequest两类消息前者拿每个端口的字节数和包数后者拿整个交换机所有流表项的匹配次数这两个数据是后续一切判断的基础。2.2 核心模块拆解从流量采集到攻击判定工程里最核心的代码集中在src/main/java下的控制器模块和检测模块我把它分成四层来看。第一层是南向接口适配层负责与OpenFlow交换机通信。常见的做法是控制器内置一个OpenFlow插件工程里通过监听OFEvent事件接收交换机的状态变化包括端口状态和流表消息。第二层是流量采集层控制器每隔固定时间主动向交换机发送统计请求拿到原始计数器数据后封装成内部的流量快照对象。这一层里有个值得注意的参数采样间隔。默认5秒一次间隔短反应快但控制器CPU开销大间隔长误报率会变高后面的调优章节我会专门讲。第三层是检测层核心是特征提取和阈值判断。DDoS攻击的特征在SDN环境下主要体现在三个指标上每秒新增流表项数量、特定端口收到的包速率、源IP的熵值。代码里典型的判断逻辑是当某个端口的包速率超过预设阈值的2倍同时流表项新增速率超过另一个阈值时标记为可疑攻击连续两个采样周期都是可疑状态就正式判定为DDoS攻击。这里注意它用的是“连续周期判定”而不是单次触发能有效减少突发流量带来的误报但代价是攻击发生后的头几秒处于无防御状态。第四层是防御策略层检测到攻击后控制器向交换机下发新的流表项来实现封禁或限速。工程里提供的两种防御策略是丢弃攻击流量和把攻击流量重定向到清洗实例用特定端口实现。下发方式都是调用OpenFlow的OFFlowMod消息其中OFPFlowModCommand.ADD表示新增流表项OFPFlowModCommand.DELETE表示踢掉对流表项。2.3 服务层代码走读工程里pom.xml和service包的定位如果你打开工程目录会发现根目录有pom.xml和service目录。pom.xml是这个项目的Maven构建描述文件里面定义了Spring Boot父依赖、OpenFlow协议支持库和JSON解析库。特别提醒那个service目录在工程根目录下和src目录平级说明开发者把服务层单独拆成了独立模块在你导入IDE时要注意把它也标记为Maven模块否则会出现Cannot resolve symbol这类编译错误。src/test/main目录下应该有最基本的单元测试类用来验证统计请求的解析是否正常和防御下发消息的格式是否正确。测试这块不要忽略如果你的课程答辩要求演示测试覆盖这个就是现成的证据。另外工程根目录的README.txt或说明文档里一般写了启动方式和默认端口号默认控制器服务的Web端口是80808081通常留给管理接口别在没看配置的情况下盲目改端口。3. 让系统在本地跑起来环境搭建与自动化部署脚本3.1 环境清单与版本选型先给出一份我实际验证过的环境组合新手照着一字不改装就行。组件版本建议用途说明JDK1.8及以上Spring Boot运行前提不要用Java 11以下的老版本Maven3.6.x构建和依赖管理控制器该项目内置的Spring Boot应用即为源码本身无需额外安装交换机仿真器配套脚本中的Mininet引导文件模拟SDN交换机和主机拓扑流量工具hping3 / Scapy用来模拟DDoS攻击流量有人说直接装一个ONOS或OpenDaylight不是更标准吗但这是个课程作业项目代码是围绕Spring Boot控制器来写的Mininet负责模拟交换机行为让控制器可以通过REST API与仿真交换机交互就够了。引入重型的开源控制器反而会增加调试复杂度我一般不建议在高年级毕设里给自己找这个麻烦。3.2 构建工程并启动控制器服务拿到源码后第一步是构建在项目根目录执行mvn clean package -DskipTests这里用-DskipTests跳过测试代码是为了加快构建因为单元测试类通常不依赖外部仿真环境但它们会拖慢打包时间。执行成功后target/目录下会生成可执行的JAR包接着用Java直接启动java -jar target/sdn-ddos-defense-1.0.jar --server.port8080启动日志里如果出现了Started Application in xx seconds说明控制器已经跑起来了。这时用浏览器访问http://localhost:8080/api/v1/health如果返回类似{status:UP}的JSON说明REST服务可用。等一下再进下一步——先把控制器服务和Mininet的联通性测通不然后面所有攻击模拟都是白跑。3.3 用Mininet搭建仿真拓扑并接入控制器Mininet是这套系统的“左膀右臂”它可以在一台Linux主机上创建出虚拟的SDN交换机和虚拟主机。下面的脚本创建了一个简单的树形拓扑包含交换机switch1和主机h1到h4交换机的控制通道地址指向本地控制器的OpenFlow端口。sudo mn --topo single,4 --mac --switch ovsk --controller remote,ip127.0.0.1,port6653参数解释--topo single,4创建1台交换机和4台主机的星形拓扑--mac让每台虚拟主机的MAC地址固定且可读--controller remote表示控制器不在Mininet内启动而是连接到你已经在运行的Spring Boot控制器上。启动时如果看到了*** Adding controller以及*** Starting controller的字样再观察控制器端日志看有没有新的交换机连接事件打印。如果控制器终端没反应就检查交换机的监听端口是否是6653。不少开源控制器默认用6633旧版OpenFlow或6653新版工程里大部分时候默认监听6653。如果连不上换成--port6633换端口试试这是SDN课程作业里最容易翻车的第一个点。3.4 模拟DDoS攻击和控制器的报警输出拓扑起来后我们用h2向h3发起洪泛式攻击。hping3能高强度地发送TCP SYN包模拟攻击源IP被随机伪造的SYN Floodsudo hping3 -S -p 80 --flood --rand-source 10.0.0.3参数含义-S发SYN包-p 80目标端口为80--flood表示尽最大速率发包--rand-source随机伪造源IP这会让交换机看到瞬间涌现海量“不同源IP”的新流DDoS特征非常明显。正常运行时控制器会周期性统计端口信息一旦包速率超过阈值控制台会短时间内持续打印告警日志类似“Attack detected: port 2, pkt_rate 8500”这样的输出。这个时刻是整个项目答辩时的“高光点”——一边是Mininet里丢包率上升一边是控制器界面输出攻击告警直观展示了SDN控制平面和数据平面分离后在安全检测上的优势。从流表项数量的角度看攻击开始时一条流都还没有攻击出现后每秒可能增加上万条流表如果你从控制台看流表项新增速率数值曲线基本都是垂直拉升的。4. 检测与防御参数调优阈值、采样周期和防御策略的实战验证4.1 阈值参数在哪里改改多少合适工程里的检测阈值集中放在一个名为config.properties或application.yml的配置文件中关键参数有三个。参数名默认值说明ddos.pkt_rate_threshold5000单位时间内端口包数量阈值超过即可疑ddos.flow_rate_threshold3000单位时间内新增流表项数阈值ddos.detect_window_ms5000一次统计窗口的毫秒数ddos.defense.actionblock可选block丢弃或redirect重定向我给一个实用建议如果是在课程答辩演示环境里把包速率阈值调到2000左右攻击一启动控制器反应会明显快很多。因为演示环境的机器性能有限真实Flood的包速率可能达不到默认阈值的统计精度阈值太高等半天告警不出会非常尴尬。但别为了追求灵敏调得太低正常的基础流量比如h1 ping h2也可能触发误报剧烈演示时调低日常实验时恢复默认值这个习惯后面对你排查问题很关键。4.2 检测窗口与误报率的权衡ddos.detect_window_ms这个参数是检测精度的关键。工程默认5秒采样一次如果你的课程设计要求“快速发现攻击”可以把采样窗口缩到2秒但代价是控制器的CPU使用率会上升。我在模拟环境里做过对比测试采样间隔从5秒改到2秒后检测延时可从约6秒降到了3秒内但控制器进程CPU占用率从30%升到60%以上。为什么采样周期变短会导致CPU飙升因为每一次采样都需要控制器向所有交换机发送统计请求并且要对返回的结果做解析和聚合。多台交换机同时返回大量OFPortStatsReply消息时控制器的事件处理线程会被快速占满。建议实验用的仿真拓扑不超过10台交换机因为更大的网络规模下统计风暴本身就像一次DDoS肉眼看着都能明显感觉到控制器卡顿。4.3 防御策略的两种实现路径检测部分跑通后来看防御部分。工程中提供了两种动作第一种是直接对恶意流量做丢弃处理控制器下发如下OpenFlow消息curl -X POST http://localhost:8080/api/v1/defense/drop \ -H Content-Type: application/json \ -d {src_ip:10.0.0.2,dst_ip:10.0.0.3,action:drop,priority:100}第二种是限速策略把攻击流量重定向到一个限速端口模拟流量清洗。对应的接口请求curl -X POST http://localhost:8080/api/v1/defense/redirect \ -H Content-Type: application/json \ -d {src_ip:10.0.0.0/24,dst_ip:10.0.0.3,action:redirect,port:4}可以看到工程里的防御接口被设计成了REST API这意味着你可以在外部脚本里动态调用也可以和前端面板联动。如果在Mininet里抓包验证会发现封禁后h2发往h3的包在交换机处被丢弃h3上的流量曲线迅速掉到接近0。如果选择的是redirect模式在h4上通过tcpdump异步监听可以看到攻击流量被转向到了h4而不是被清空sudo tcpdump -i h4-eth0 tcp port 804.4 触发恢复防误封和自愈逻辑防御不是把攻击者IP封死就完了很多课程作业止步于此但稍微进阶一点的做法是加一个恢复机制。工程里有一个可选的“可信IP白名单”功能被拉黑的IP经过一段冷却时间后自动恢复防止正常主机被误伤后一直无法通信。检测模块内部保存了一张blocked_ip_map表格记录了被封禁IP和解封时间戳每个采样周期都会检查有没有IP到期。我在做模拟实验时验证过这个特性h2的源IP被封锁后停止hping3攻击并等待恢复窗口结束h2重新可以ping通h3。恢复逻辑很适合写进课程报告的“功能改进”部分这能明显体现出你考虑问题的完整性而不仅仅停留在“能检能堵”的层面。这个恢复周期同样可以通过配置文件调节我一般习惯设成30秒既能自愈又不至于让攻击持续太久。5. 基于SDN的DDoS检测避坑笔记五个容易翻车的故障现场5.1 Mininet连不上控制器端口不匹配与监听地址问题现象Mininet启动后显示交换机已创建但控制器的日志里始终看不到任何交换机接入的消息。原因最常见的是OpenFlow端口不一致。Mininet默认连接6653如果你代码里监听的是6633双向怎么都配不上。还有一种原因是控制器启动时的监听IP绑定了127.0.0.1而Mininet内部的虚拟网络试图通过其他IP地址访问控制器。解决先查控制器配置里server.port和OpenFlow监听端口分别是什么数值再用sudo mn --controller remote,ip127.0.0.1,port6653把Mininet的端口参数改到与控制器的真实监听端口一致。如果监听IP绑错把controller地址改成0.0.0.0再重启服务。5.2 检测模块不报攻击阈值设置过高的隐蔽陷阱现象hping3攻击数据一直打控制台的告警日志却半天不出来像黑匣子一样不知道是统计没跑还是阈值没超。原因很多同学直接把攻击工具装在某台虚拟机上虚拟机CPU和内存被限制得很厉害实际产出的攻击速率可能连5000包/s都达不到于是检测阈值永远够不到触发线。解决先在Mininet里确认攻击流量确实在往目标端口走把包速率阈值临时降到2000同时把采样窗口缩到2秒。等告警正常输出了再逐档往回调阈值找到一个“不误报又不漏报”的甜点。今后凡是在仿真环境里做攻防复现我都建议第一次先按“低阈值、快刷新”跑通流程再动精细参数。5.3 流表项堆积导致控制器卡死溢出后性能断崖现象攻击模拟时间一长控制器响应变慢restful接口的返回时间越来越久最后直接超时。原因DDoS攻击会让交换机的流表表项数量飞速膨胀每一次新源IP的SYN包都会触发交换机向控制器请求新流规则控制器既要把流表项写入交换机自己的内存表也在同步膨胀。当表项数量到达交换机硬件或虚拟交换机内存上限时性能会断崖式下跌。解决防御策略不仅要封IP更要会清理无效流表。攻击期间调用一下删除接口把命中攻击特征的流表删掉比如用curl -X DELETE .../api/v1/flows/blocked清理全部“嫌疑流表项”。调优经验是把ddos.flow_rate_threshold作为触发条件联动流表回收逻辑即超过新增速率就启动“检查并丢弃异常流表”循环。从那以后我每次测试这类系统都会先把“流表清理”和“IP封禁”绑定起来不然演示还没结束系统就先罢工了。5.4 多个交换机拓扑下误判检测需要按交换机维度拆分现象用了多交换机拓扑后合法的大流量下载也被判定成DDoS防御模块把正常主机的流量一并丢掉了。原因检测模块默认用全局端口统计的聚合值去做判断但当网络里有4台交换机时全局聚合后的包速率会显著放大单台交换机上只是正常文件传输的流量在全局视角里看起来就是攻击。这属于典型的检测粒度问题。解决把攻击检测算法改成“按交换机ID分组、再对每个端口单独计算”的维度去判断只在某个交换机端口对应的包速率和流表新增速率同时超过阈值时才报警。后续再碰到类似场景我会直接把检测模块的统计查询按dpid和端口号做二级分组防止把多个端口的正常流量加出一个“假攻击”来。5.5 重启后恢复出厂防策略下发成功但交换机不生效现象控制器已经输出了“流表下发成功”的日志但实际流量一点没被丢弃防御像是在“演示用白板”上执行的。原因OpenFlow交换机收到防御流表项后可能因为流表优先级设置低于原有流量转发规则而匹配不到也可能因为交换机本身处于“安全模式”拒绝外部流表写入。解决检查下发的流表项里priority字段是否够高把优先级提到300以上覆盖默认转发的priority100调用一次“查询流表项”的接口确认交换机中是否真的存在预期的防御规则。如果是“安全模式”问题把交换机重启重连或重建Mininet拓扑再试一次即可不能让演示卡在“下发成功但无效”这种假成功状态。6. 从课程作业到毕业设计三个追加进阶方向源码跑通并验证防御有效后你的课程大作业已经具备完整闭环能力。但如果想拿它冲更高分或者扩展成毕业设计那有三个方向可以复制我这套思路来做。第一方向是特征工程升级。现有的检测算法基于包速率和流表项新增速率做阈值判断特征维度比较有限。你可以加入源IP熵值的计算——DDoS攻击里源IP分布非常分散熵值会明显高于正常阶段。在检测模块里加一个定时任务周期计算当前时间窗口内不同源IP的数量和占比一旦熵值超过预设上限就触发检测联动。第二方向是可视化检测面板。目前系统的检测结果输出在控制台或REST接口中给人的观感不够直观。可以用Spring Boot自带的WebSocket或前端模板技术做一个实时仪表盘在浏览器页面上以图表方式展示流表项增长率、包速率曲线、防御动作记录。答辩演示时这一块有很高的视觉冲击力也方便评审老师直观理解你的整个系统联动过程。第三方向是自动化响应编排。当前防御模块需要人工点击或调用REST接口干预。你可以设计一个自动响应编排流程——检测阶段标记攻击后自动提取攻击源特征防阶段自动下发封禁规则恢复阶段自动探测攻击流量是否停止并触发解封逻辑。这三个阶段可以在检测线程里串成一条状态机形成从发现、阻断到恢复的自愈闭环。我开始做这套系统时判断攻击是否有效只看控制器日志是否输出告警后来真正做了模拟压测才开始在意采样间隔对CPU的消耗、阈值与误报率的取舍、流表溢出对整机稳定性的影响。这些在课程报告里写不出来的细节恰恰是答辩现场最容易被问到的。从那以后我每次调试SDN安全项目都会强制走一遍完整流程——先低阈值启动验证环路通断再调参数做精细校准最后加一个自动恢复机制做闭环收尾这个习惯替我规避过不少当场翻车的风险。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

十月AI前端面试:告别老实打法,掌握流式交互与状态管理

十月AI前端面试:告别老实打法,掌握流式交互与状态管理

1. 十月求职季的AI前端面试现状拆解十月这个时间节点,在招聘市场里向来是个微妙的存在。一边是秋招进入中后段,补录和急招的岗位开始释放;另一边是不少团队在年中调整后重新梳理HC,赶在年底前把人头落定。AI前端这个方向&#xff…

2026/10/18 22:48:55 阅读更多 →
OpenSpec:可执行API契约协议与CI/CD分层验证实践

OpenSpec:可执行API契约协议与CI/CD分层验证实践

1. OpenSpec不是另一个CLI工具,而是Spec驱动开发的底层协议层OpenSpec这个词最近在前端工程、AI编程助手和CI/CD自动化圈子里突然密集出现,但很多人点开GitHub仓库或npm页面后第一反应是:“这到底是个库?框架?还是规范…

2026/10/18 22:48:55 阅读更多 →
Claude Code插件开发实战:knowledge-work-plugins从入门到精通

Claude Code插件开发实战:knowledge-work-plugins从入门到精通

1. 从零认识 knowledge-work-plugins:它到底解决什么问题第一次看到knowledge-work-plugins这个仓库名,很多人会以为是某个知识管理软件的插件合集,或者是一个笔记工具的扩展包。实际上,它是 Anthropic 官方在 Claude Cowork 生态…

2026/10/18 22:48:55 阅读更多 →

最新新闻

三则AI新闻揭示应用临界点:轻量模型、免费旗舰与团队回迁

三则AI新闻揭示应用临界点:轻量模型、免费旗舰与团队回迁

10月8日早上,我的朋友圈和几个技术群几乎同时被三则AI新闻刷屏:一家主流模型厂商发布了新的轻量快速模型H 5.5,另一家巨头把第六代旗舰模型向普通用户免费开放,还有一个此前把部分团队搬到外地的智能体产品团队,宣布要…

2026/10/18 23:39:35 阅读更多 →
语言模型中的语法伪相关:模型为何学错教训?

语言模型中的语法伪相关:模型为何学错教训?

看到标题里的“Syntactic-Domain Spurious Correlations”,我第一反应是想起自己踩过的一个坑:训练文本蕴含模型时,验证集上“矛盾”标签的准确率一路飙升到95%以上,当时我还以为模型真的学会了推理。结果我把一个用规则改写出来的…

2026/10/18 23:39:35 阅读更多 →
恒星级AI时代:AI短剧生产管线与数字分身序章

恒星级AI时代:AI短剧生产管线与数字分身序章

1. 从“恒星级AI”说起:这个标题到底在讲什么“恒星级AI时代降临”这个说法,第一次看到的时候我愣了一下。恒星级的能量量级是什么概念?太阳每秒释放的能量大约是3.8乘以10的26次方瓦,人类目前全球总发电功率大概在3乘10的12次方瓦…

2026/10/18 23:39:35 阅读更多 →
OpenSpec:规范优先开发的工程实践与CI/npm落地指南

OpenSpec:规范优先开发的工程实践与CI/npm落地指南

1. OpenSpec 是什么:一个被低估的规范优先开发实践工具链OpenSpec 不是一个 npm 包名,也不是某个具体开源项目的代号——它是一套正在快速成型的、以机器可读规范(Spec)为唯一事实源(Single Source of Truth&#xff0…

2026/10/18 23:38:35 阅读更多 →
空间复用与数据对齐实战:内存池、缓存行与SIMD优化指南

空间复用与数据对齐实战:内存池、缓存行与SIMD优化指南

空间复用和数据对齐这两件事,很多人是在踩了坑之后才回头补课的。我刚开始接触算法实现时,习惯把所有临时数据都放在堆上现申请现释放,结构体字段怎么顺手怎么排,跑起来也没觉得有什么问题——直到有一次把数据规模抬到千万级&…

2026/10/18 23:38:35 阅读更多 →
Sakurairo WordPress 主题指南:从零到一搭出你的多彩博客

Sakurairo WordPress 主题指南:从零到一搭出你的多彩博客

Sakurairo WordPress 主题指南:从零到一搭出你的多彩博客 【免费下载链接】Sakurairo A WordPress theme that is built with AI-assisted reading features, colorful, user-friendly, well-rounded, and rich in functionalities. Support Chinese, English, Japa…

2026/10/18 23:38:35 阅读更多 →

日新闻

基于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 阅读更多 →