从零编译部署ONOS 2.5.0:SDN控制器实战指南与避坑详解
1. 项目概述与核心价值最近在折腾软件定义网络SDN控制器ONOSOpen Network Operating System是绕不开的一个重量级选手。作为一个面向运营商级网络的开源SDN操作系统ONOS 2.5.0虽然已经不是最新版本但它是一个相当稳定且功能完备的里程碑式发布。很多企业内部的定制化开发、学术研究或者只是想深入理解SDN控制器架构的朋友可能都需要从源码开始构建一个属于自己的ONOS环境。网上的教程要么年代久远要么步骤缺失踩坑无数后我决定把从零开始编译安装ONOS 2.5.0的完整过程连同那些官方文档不会告诉你的“坑”和技巧系统地梳理出来。这篇教程的目标是让你能在一台干净的Linux机器上以Ubuntu 20.04 LTS为例成功完成ONOS 2.5.0源码的下载、依赖安装、编译、打包最终运行起一个可用的ONOS实例。它不仅是一份操作手册更会解释每个步骤背后的原因比如为什么需要特定版本的Java和Maven如何解决令人头疼的依赖下载失败问题以及编译完成后如何验证和初步使用。无论你是SDN的初学者还是有一定经验但被ONOS编译环境困扰的开发者这份基于实战的指南都应该能帮你节省大量时间。2. 环境准备构建稳固的基石编译ONOS这类大型Java项目环境配置是第一步也是最容易出错的一步。版本不匹配是绝大多数编译失败的根源。2.1 操作系统与基础工具ONOS官方推荐在Ubuntu或CentOS等Linux发行版上进行开发构建。这里我们选择Ubuntu 20.04 LTS作为标准环境因为它有长期的官方支持软件源丰富且稳定。首先确保系统是最新的sudo apt update sudo apt upgrade -y接下来安装一些必要的编译工具和库文件sudo apt install -y git curl wget tar zip unzip build-essential \ libssl-dev libffi-dev python3-dev python3-pip注意build-essential包包含了GCC、G、make等核心编译工具链是后续编译原生依赖如果存在的基础。即使ONOS主体是Java其底层或某些组件如协议库的本地绑定可能需要这些工具。2.2 Java开发环境配置ONOS 2.5.0对Java版本有严格要求它需要Java 8。更高版本的Java如Java 11可能会导致不兼容的编译或运行时错误。我们选择Oracle JDK 8或者OpenJDK 8。这里以安装OpenJDK 8为例因为它更容易获取且开源sudo apt install -y openjdk-8-jdk安装完成后验证版本至关重要java -version # 预期输出应包含 “openjdk version “1.8.0_xxx” javac -version # 预期输出应包含 “javac 1.8.0_xxx”接下来需要正确设置JAVA_HOME环境变量。这是Maven和许多构建工具定位Java编译器的关键。# 查找JDK的安装路径通常类似 /usr/lib/jvm/java-8-openjdk-amd64 sudo update-alternatives --config java # 记下路径然后编辑 ~/.bashrc 或 ~/.profile 文件 echo ‘export JAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64‘ ~/.bashrc echo ‘export PATH$JAVA_HOME/bin:$PATH‘ ~/.bashrc source ~/.bashrc验证JAVA_HOMEecho $JAVA_HOME2.3 Apache Maven安装与配置ONOS使用Maven作为项目构建和依赖管理工具。ONOS 2.5.0需要Maven 3.3.x 或 3.5.x版本。不推荐使用过新或过旧的Maven版本。我们从Apache官网直接下载并安装Maven 3.5.4这是一个经过验证的稳定版本。# 下载Maven wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz # 解压到 /opt 目录通常用于存放第三方应用程序 sudo tar -xzf apache-maven-3.5.4-bin.tar.gz -C /opt # 创建软链接以便于管理版本 sudo ln -s /opt/apache-maven-3.5.4 /opt/maven接下来配置Maven环境变量echo ‘export MAVEN_HOME/opt/maven‘ ~/.bashrc echo ‘export PATH$MAVEN_HOME/bin:$PATH‘ ~/.bashrc source ~/.bashrc验证安装mvn -v # 输出应显示 Apache Maven 3.5.4以及我们刚才设置的 Java 1.8 信息。实操心得Maven仓库镜像配置默认的Maven中央仓库在国外下载依赖速度极慢且容易失败。为了加速构建过程必须配置国内镜像。编辑Maven的配置文件~/.m2/settings.xml如果不存在则创建settings mirrors mirror idaliyunmaven/id mirrorOf*/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url /mirror /mirrors /settings这个配置将所有的仓库请求重定向到阿里云的Maven镜像能极大提升依赖下载成功率与速度。2.4 获取ONOS 2.5.0源码ONOS的源代码托管在Gerrit上但我们可以通过其GitHub镜像仓库来克隆这样更方便。我们克隆特定版本tag的代码。# 创建一个工作目录并进入 mkdir -p ~/onos_workspace cd ~/onos_workspace # 克隆ONOS仓库这会下载整个仓库历史较大 git clone https://github.com/opennetworkinglab/onos.git cd onos # 切换到 2.5.0 版本标签 git checkout 2.5.0注意直接克隆主分支再切换标签可以确保获取到完整的项目历史和所有标签信息。如果你只想要2.5.0版本的代码以节省空间可以使用git clone --branch 2.5.0 --depth 1 https://github.com/opennetworkinglab/onos.git进行浅克隆。3. 编译过程详解与核心问题攻克环境就绪源码在手现在进入最核心的编译阶段。ONOS的编译不是简单的mvn compile它涉及到一个复杂的多模块构建和最终的打包。3.1 首次编译依赖解析与下载进入ONOS源码根目录我们首先进行清理并尝试编译整个项目。使用-DskipTests跳过测试可以显著加快首次编译速度。cd ~/onos_workspace/onos mvn clean compile -DskipTests这个命令会触发以下关键过程清理删除之前构建生成的target目录。依赖下载Maven根据pom.xml文件解析项目所有模块超过300个的依赖关系并从配置的仓库我们已设置为阿里云镜像下载所需的Jar包到本地仓库~/.m2/repository。这是最耗时的一步取决于网络状况可能需要30分钟到数小时。编译将项目的Java源代码编译成.class字节码文件。常见问题与排查技巧实录问题1依赖下载失败报Could not transfer artifact ...错误。原因网络连接超时或镜像仓库暂时缺少某个特定构件。解决检查settings.xml配置是否正确。尝试多次运行mvn compile命令Maven有重试机制。如果某个依赖始终失败可以尝试在浏览器中手动访问阿里云镜像的对应URL看是否能下载。有时需要等待镜像同步。终极方案暂时注释掉settings.xml中的镜像使用默认中央仓库速度慢但最全下载缺失的依赖下载成功后再启用镜像。问题2编译错误提示javac: invalid target release: 1.8或类似。原因JAVA_HOME设置错误或者系统中存在多个Java版本Maven使用了错误的Java编译器。解决再次确认java -version和mvn -v的输出是否一致指向Java 8。可以使用update-alternatives --config java和update-alternatives --config javac来切换系统默认的Java版本。3.2 构建ONOS安装包Karaf Distribution编译成功后我们需要将ONOS及其所有依赖、配置打包成一个可运行的发行版。ONOS使用Apache Karaf作为其OSGi运行时容器。打包命令如下mvn clean install -DskipTests -Dcheckstyle.skiptrue这个mvn install命令比compile更进一步重新清理和编译确保从干净状态开始。运行单元测试我们通过-DskipTests跳过了以加速构建。在生产或严格环境下建议移除此参数。跳过代码风格检查-Dcheckstyle.skiptrue跳过了Checkstyle检查这也是为了加快构建。ONOS有严格的代码规范但对于仅构建发行版来说可以跳过。打包这是关键步骤。它会创建一个完整的Karaf发行版包含ONOS的所有功能模块.kar文件、配置文件、启动脚本等。最终产物位于~/onos_workspace/onos/target/目录下文件名为onos-2.5.0.tar.gz。注意事项这个打包过程非常消耗内存和CPU。建议在性能较好的机器上操作并确保有至少8GB 的可用内存否则Maven进程可能会在编译过程中因内存不足OOM而被系统终止。你可以通过设置Maven内存选项来缓解export MAVEN_OPTS“-Xmx4g -XX:MaxPermSize512m”。但更根本的是增加物理内存或交换空间。整个过程可能需要1到3个小时取决于机器性能。耐心等待观察控制台输出只要没有红色的[ERROR]提示通常就是在正常进行中。3.3 验证构建产物打包完成后进入目标目录查看产物cd ~/onos_workspace/onos/target ls -lh onos-2.5.0.tar.gz你应该能看到一个大小约为200MB 到 300MB的tar.gz压缩包。这个文件就是完整的ONOS 2.5.0发行版。你可以将其复制到任何其他兼容的Linux服务器上解压运行。4. 安装、启动与基础配置编译打包出的tar.gz文件就是我们的“安装包”。接下来我们将其“安装”到本地并启动。4.1 解压与目录结构选择一个安装目录例如/optsudo tar -xzf ~/onos_workspace/onos/target/onos-2.5.0.tar.gz -C /opt cd /opt sudo ln -s onos-2.5.0 onos # 创建一个方便的软链接现在查看/opt/onos目录结构了解关键组成部分bin/: 包含启动脚本onos-service、onos命令行客户端脚本等。apache-karaf-version/: ONOS运行所基于的Karaf容器核心。config/: 配置文件目录如网络配置、组件属性等。system/,data/,deploy/: Karaf和ONOS运行时使用的系统目录、数据目录和热部署目录。logs/: 日志文件目录排查问题时首先查看这里。4.2 启动ONOS服务ONOS提供了服务脚本来管理其生命周期。我们以后台服务形式启动它cd /opt/onos sudo ./bin/onos-service start启动过程需要一些时间来初始化Karaf容器、加载所有OSGi bundle即ONOS的功能模块。你可以通过以下命令查看启动日志和状态# 跟踪日志输出类似 tail -f sudo ./bin/onos-service log # 或者直接查看日志文件 tail -f /opt/onos/logs/karaf.log在日志中你最终应该看到类似下面的关键信息表明ONOS已成功启动并进入就绪状态... INFO [Apache Karaf] Started ONOS successfully in XX seconds. ... INFO [TopologyManager] Network topology service started. ... INFO [ClusterManager] Node [127.0.0.1] ready for cluster operations.实操心得启动问题排查端口冲突ONOS默认使用8181Karaf控制台、8101Karaf SSH、9876ONOS集群通信等端口。确保这些端口没有被其他程序占用。可使用netstat -tlnp | grep 端口号检查。Java内存不足如果启动失败查看karaf.log开头部分是否有OutOfMemoryError。可以编辑/opt/onos/bin/onos-service脚本找到JAVA_OPTS设置行增加堆内存例如-Xmx4g。权限问题确保/opt/onos目录及其下的data/,logs/等目录对运行ONOS的用户可能是当前用户或root有读写权限。4.3 访问ONOS Web UI与命令行ONOS启动成功后可以通过两种主要方式与其交互Web图形界面GUI 默认情况下ONOS的Web UI运行在8181端口。在浏览器中访问http://你的服务器IP:8181/onos/ui。默认用户名和密码是onos/rocks。登录后你可以看到网络拓扑、设备、流表等可视化信息。命令行界面CLI ONOS提供了一个强大的命令行客户端它通过SSH连接到Karaf容器。首先确保ONOS的Karaf SSH服务已启动默认端口8101。然后使用自带的onos客户端脚本cd /opt/onos ./bin/onos 你的服务器IP # 首次连接会提示接受主机密钥输入密码 rocks连接成功后你会看到onos提示符。在这里可以执行各种管理命令例如apps -a -s列出所有已安装和激活的应用程序。devices列出已发现的网络设备。flows列出已安装的流表项。logout退出CLI。4.4 基础功能验证加载示例应用为了验证ONOS基本功能正常我们可以激活一个内置的示例应用比如fwd二层转发应用。在ONOS CLI中执行onos app activate org.onosproject.fwd激活后你可以通过Web UI或在CLI中使用flows命令查看当有主机比如连接了Mininet模拟的网络发送ARP请求或数据包时ONOS应该会自动安装相应的转发流表。5. 高级主题开发环境搭建与源码调试如果你不仅仅是想运行ONOS还希望对其进行二次开发或阅读调试源码那么需要搭建一个开发环境。5.1 使用IDE导入项目推荐使用IntelliJ IDEA社区版或旗舰版作为ONOS的Java开发IDE它对Maven和OSGi的支持非常好。打开项目在IntelliJ IDEA中选择 “Open”然后导航到~/onos_workspace/onos目录选择顶层的pom.xml文件以Maven项目形式打开。等待索引IDEA会自动开始下载依赖、建立索引。这个过程同样耗时请耐心等待。确保IDEA使用的Maven配置File - Settings - Build, Execution, Deployment - Build Tools - Maven指向我们之前配置好的Maven/opt/maven和使用了镜像的settings.xml。启用注解处理ONOS大量使用Google的AutoValue等注解处理器。需要在IDEA设置中启用注解处理Settings - Build, Execution, Deployment - Compiler - Annotation Processors勾选 “Enable annotation processing”。5.2 在IDE中运行与调试ONOS在开发模式下我们通常不打包整个发行版而是直接在IDE中运行Karaf并部署我们的模块。找到主类ONOS提供了一个用于开发的Main类。在IDEA的项目视图中导航到tools/dev/目录下找到org.onosproject.onos包里的Main类。创建运行配置右键点击Main类选择 “Run ‘Main.main()‘” 或 “Debug ‘Main.main()‘”。在运行配置中你可能需要设置工作目录为ONOS源码根目录~/onos_workspace/onos。还可以在 “VM options” 中添加调试参数例如-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendn,address5005以便进行远程调试。运行启动这个配置你会在IDEA的Run/Debug控制台中看到类似终端启动ONOS的日志输出。此时一个开发版的ONOS实例就在运行了。部署模块如果你修改了某个模块例如apps/fwd的代码可以在该模块的目录下执行mvn clean install然后将生成的.kar文件在模块的target/目录下复制到运行中ONOS实例的deploy/目录对于开发模式路径可能在~/onos_workspace/onos/apache-karaf-version/deployKaraf会自动热部署该模块。5.3 连接ONOS CLI到开发实例开发实例的Karaf SSH端口可能不是默认的8101。查看启动日志找到类似SSH server listening on 127.0.0.1:port的行。然后使用客户端连接cd ~/onos_workspace/onos ./bin/onos localhost -p 日志中看到的端口号6. 生产环境部署考量与优化建议将编译好的ONOS用于实验和生产需要考虑更多因素。6.1 系统服务化与管理使用onos-service脚本是基础但在生产环境中我们通常将其注册为系统的守护进程如systemd服务以便实现开机自启、故障重启、日志轮转等。创建一个systemd服务文件/etc/systemd/system/onos.service[Unit] DescriptionONOS SDN Controller Afternetwork.target [Service] Typeforking Useronos # 建议创建一个专门的‘onos‘用户来运行 Grouponos Environment“JAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64” Environment“KARAF_HOME/opt/onos/apache-karaf-version” ExecStart/opt/onos/bin/onos-service start ExecStop/opt/onos/bin/onos-service stop Restarton-failure RestartSec10 LimitNOFILE65536 [Install] WantedBymulti-user.target然后启用并启动服务sudo systemctl daemon-reload sudo systemctl enable onos sudo systemctl start onos sudo systemctl status onos6.2 性能调优与监控JVM参数根据服务器内存大小调整ONOS的JVM堆内存。编辑/opt/onos/bin/onos-service中的JAVA_OPTS例如-Xms4g -Xmx8g设置初始堆和最大堆。集群部署生产环境通常需要部署ONOS集群以实现高可用。这涉及修改/opt/onos/config/cluster.json文件配置节点IP、端口等过程较为复杂需要仔细阅读官方集群文档。日志管理默认日志可能增长很快。可以配置Karaf的日志框架etc/org.ops4j.pax.logging.cfg来按大小或时间滚动日志文件。监控ONOS提供了REST API和JMX接口可以集成到Prometheus、Grafana等监控系统中监控控制器性能、集群状态、设备连接数等关键指标。6.3 安全加固修改默认密码首要任务是修改Web UI和CLI的默认密码rocks。可以通过Karaf控制台命令完成ssh -p 8101 onoslocalhost # 使用默认密码登录 onos security:usermgt --changePassword onos # 根据提示输入新密码网络隔离将ONOS的控制平面南向接口如6633、6653端口与管理平面Web UI的8181CLI的8101部署在不同的网络分区或使用防火墙严格限制访问来源。定期更新关注ONOS社区的安全公告及时将自定义开发合并到最新的稳定分支以修复潜在的安全漏洞。编译和安装ONOS 2.5.0的过程就像搭建一个精密仪器的生产线。从准备符合规格的零件Java, Maven到按照图纸源码进行组装编译再到最终调试运行每一步的严谨性都决定了最终产品的稳定性。这份教程涵盖了从零开始到生产级部署的主要环节其中关于环境配置、依赖下载、内存设置和权限管理的那些“坑”都是我在多次实践中总结出来的。希望它能帮助你顺利搭建起自己的SDN控制平台并以此为起点深入探索软件定义网络的广阔世界。如果在实践中遇到新的问题多查看logs/karaf.log善用ONOS活跃的社区邮件列表和文档大部分难题都能找到解决方案。

相关新闻

Windows启动修复失败后的深度诊断与修复指南

Windows启动修复失败后的深度诊断与修复指南

1. 项目概述:当“启动修复”也束手无策时 “启动修复无法修复你的电脑”——这行冰冷的红字,大概是每个Windows用户在系统崩溃边缘最不愿看到的判决书。它就像一个医生告诉你“我们尽力了”,却没说接下来该怎么办。这个项目,或者说…

2026/8/4 3:25:13 阅读更多 →
CSMA协议深度解析:1-坚持、非坚持与p-坚持策略对比与应用

CSMA协议深度解析:1-坚持、非坚持与p-坚持策略对比与应用

1. 项目概述:从“抢麦”到“有序发言”——理解CSMA协议的核心价值在局域网,尤其是早期的以太网世界里,想象一下一个没有主持人的大型会议现场。每个人都想发言,但只有一个话筒。如果两个人同时拿起话筒说话,声音就会混…

2026/8/4 3:25:13 阅读更多 →
小红书AI文案转化率暴跌47%?真实AB测试数据揭示:标题前12字决定点击生死

小红书AI文案转化率暴跌47%?真实AB测试数据揭示:标题前12字决定点击生死

更多请点击: https://intelliparadigm.com 第一章:小红书AI文案转化率暴跌47%?真实AB测试数据揭示:标题前12字决定点击生死 在2024年Q2的小红书商业化团队AB测试中,我们对127组AI生成文案进行了严格分流验证&#xff…

2026/8/4 3:25:13 阅读更多 →

最新新闻

Cocos Creator内存泄漏排查实战:从工具使用到典型场景解析

Cocos Creator内存泄漏排查实战:从工具使用到典型场景解析

1. 项目概述:为什么Cocos内存泄漏是开发者的“心腹大患”?干了这么多年游戏开发,尤其是用Cocos Creator,最让人头疼的往往不是炫酷的特效做不出来,而是游戏跑着跑着就卡了、闪退了,或者玩家手机发烫、电量狂…

2026/8/4 4:39:51 阅读更多 →
上海APP与小程序开发公司推荐参考

上海APP与小程序开发公司推荐参考

最近一段时间,我在前期沟通里反复遇到同一个问题:企业已经确定要做系统,却不知道应该先找报价,还是先把需求梳理清楚。在上海做本地化交付,沟通效率很重要,但真正决定项目结果的,仍然是需求判断…

2026/8/4 4:39:51 阅读更多 →
二阶扩展卡尔曼滤波在机械系统状态估计中的应用与实现

二阶扩展卡尔曼滤波在机械系统状态估计中的应用与实现

1. 项目概述:二阶扩展卡尔曼滤波在机械系统状态估计中的应用质量-弹簧-阻尼(Mass-Spring-Damper, MSD)系统作为经典机械振动模型,在车辆悬架、建筑抗震、精密仪器等领域具有广泛应用。传统的一阶扩展卡尔曼滤波(EKF&am…

2026/8/4 4:39:51 阅读更多 →
5.24华为OD机试真题 新系统 - 最小请求间隔限流策略  (JavaPyCC++JsGo)

5.24华为OD机试真题 新系统 - 最小请求间隔限流策略 (JavaPyCC++JsGo)

最小请求间隔限流策略 2026 华为OD机试真题 5月24日华为OD上机新系统考试真题 100 分题型 点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 双机位C卷 真题题库目录|全覆盖题库 逐点算法考点详解 题目描述 在微服务网关中,…

2026/8/4 4:39:51 阅读更多 →
Linux系统root密码重置全攻略:GRUB单用户、Live CD与救援模式详解

Linux系统root密码重置全攻略:GRUB单用户、Live CD与救援模式详解

1. 引言:当“钥匙”丢失时,我们如何重获系统控制权?在Linux系统管理的日常工作中,最令人头疼的突发状况之一,莫过于忘记了root用户的密码。这就像把自家保险柜的钥匙弄丢了,虽然保险柜(系统&…

2026/8/4 4:39:51 阅读更多 →
受约束多目标优化:从NSGA-II到前沿算法,构建你的高效研究知识地图

受约束多目标优化:从NSGA-II到前沿算法,构建你的高效研究知识地图

1. 项目概述:为什么我们需要一个“受约束的多目标优化”论文目录?如果你正在读这篇内容,大概率和我一样,是个在科研或工程领域里摸爬滚打的同行。我们可能都经历过这样的时刻:面对一个复杂的优化问题,目标不…

2026/8/4 4:38:51 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 4:36:35 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →