2026年3月

智能客服网页版对比:访答如何脱颖而出

在众多智能客服解决方案中,访答智能客服网页版以其独特的优势吸引了众多企业用户的关注。与其他同类产品相比,它究竟有哪些过人之处?

部署便捷性对比

传统智能客服系统往往需要技术团队介入,部署周期长达数周。而访答只需一行代码即可嵌入官网,5分钟就能上线使用。这种零开发成本的部署方式,让中小企业也能轻松享受智能客服带来的便利。

核心技术优势

访答基于深度优化的中文RAG技术,在理解用户问题和匹配相关知识方面表现突出。与其他客服机器人相比,它能更准确地理解中文语境下的复杂问题,并提供精准的答案。

多模态内容处理

值得一提的是,访答支持图片、图文混排等资源的深度识别,这是许多同类产品所不具备的。当用户咨询产品参数或活动详情时,系统能够关联展示相关图片资源,大大提升了用户体验。

持续维护便利

网站内容更新后,访答支持一键更新知识库,无需修改前端代码。这种设计让企业能够随时保持客服知识库的时效性,确保用户始终获得最新、最准确的信息。

总体而言,访答智能客服网页版在易用性、技术深度和维护便利性方面都展现出了明显优势,是企业官网智能客服的理想选择。

Microsoft Office 16.28 是 Mac 上的办公软件套装,里面包含 Word、Excel、PowerPoint、Outlook 这些常用工具,用来写文档、做表格、做幻灯片、收发邮件都没问题。

1. 先下载好安装包

安装包下载: https://pan.quark.cn/s/dc9d4a5f3e00 ,把 Microsoft_Office_16.28.pkg文件下载到你的 Mac(比如放桌面或下载文件夹,别塞太深的子文件夹,一会儿好找)。

    • *

2. 打开 pkg 安装包

找到下载好的 .pkg文件,双击它——系统会自动弹出安装向导窗口,不用再去终端敲命令啥的。

    • *

3. 跟着向导点“继续”

  • 第一步:弹出的窗口点  “继续”
  • 第二步:会让你看软件许可协议,拉到最下面点  “同意” (不同意就装不了);
  • 第三步:选择要安装的位置,默认装到“Macintosh HD”就行,直接点  “安装”
  • 第四步:输入你的开机密码(就是你登录 Mac 的那个密码),点  “安装软件” ,然后等着进度条走完。
    • *

4. 完成安装

进度条走完会提示“安装成功”,点  “关闭” ​ 就行。这时候你可以在“应用程序”文件夹里看到 Word、Excel、PowerPoint 这些图标了。

    • *

5. 首次打开要登录微软账号(关键!)

打开任意一个 Office 软件(比如 Word):

  • 如果是第一次用,会让你登录微软账号(就是 Outlook、Hotmail 那个账号);
  • 有正版授权的,输入账号后绑定密钥就能用;
  • 没激活的话,可以用试用版(一般能用一个月左右,功能全但有水印),想长期用建议去微软官网买正版,别信破解版,容易闪退、丢文档。

Cisco APIC 6.1(5e)M - 应用策略基础设施控制器

Application Policy Infrastructure Controller (APIC)

请访问原文链接:https://sysin.org/blog/cisco-apic-6/ 查看最新版。原创作品,转载请保留出处。

作者主页:sysin.org


思科应用策略基础设施控制器 (APIC)

Cisco APIC cluster

Cisco NX-OS 网络操作系统软件

Cisco NX-OS 操作系统助力网络紧跟业务发展步伐。

NX-OS 网络操作系统为现代数据中心提供支持。

  • 架构灵活性

    架构灵活性

    NX-OS 助力数据中心随工作负载和应用的发展而不断扩展。

    • 借助 VXLAN EVPN 为可扩展工作负载提供支持
    • 通过多租户有效利用网络资源 (sysin)
    • 自由选用支持分段路由和 VXLAN 的 Overlay 网络技术
    • 借助 VXLAN 多站点实现灾难恢复和业务连续性
  • 操作简便性

    操作简便性

    NX-OS 具备可编程性,可将调配时间从几天缩短到几分钟,从而简化部署。

    • 与 Cisco DCNM 完全集成,实现全面管理
    • 通过行业标准 API 实现轻松配置
    • 与 DevOps 自动化工具完全集成
    • 支持原生 Docker 的简化工具
  • 端到端可视性

    端到端可视性

    数据和控制平面具有深度可视性,有助于保护数据中心,并针对问题快速进行补救。

    • 借助精细流和 ASIC 遥测,优化网络 (sysin)
    • 利用控制平面可视性和模型驱动的遥测,预防网络故障
    • 通过 MACSEC 加密,防御监听和网络攻击
    • 借助 802.1X 验证,保护终端和工作负载

借助 Cisco NX-OS 管理您的数据中心网络

  • 遥测技术助力网络运维

    建立可靠的数据中心网络 (sysin),防止停机并快速解决网络问题。

  • 分段路由

    使用 SRv6 架构构建可扩展的网络,从而降低网络运维的复杂性,并实现与核心/WAN 的数据中心互联 (DCI)

  • 自由定制、安全可靠

    灵活、安全地管理工作负载。NX-OS 支持您根据业务需求定制网络,让 DevOps 在创新时只需几分钟即可打开交换矩阵。

  • 轻松扩展

    为媒体构建具有成本效益且易于扩展的生产应用和网络。

思科应用策略基础设施控制器 (APIC)

思科应用策略基础设施控制器 (APIC)

实现多云数据中心网络调配自动化

思科应用策略基础设施控制器(思科 APIC)是思科 ACI 解决方案的主要架构组件。它可以统一对思科 ACI 交换矩阵、策略实施和运行状况监控进行自动化操作和管理。此控制器可优化性能,管理并操作可扩展的多租户思科 ACI 交换矩阵。

特性和功能

面向物理、虚拟和云基础设施的集中式应用级策略引擎。

  • 按应用和租户显示的详细可视性、遥测和健康评分
  • 围绕开放标准和开放式 API 设计 (sysin)
  • 实施强大的多租户安全、服务质量 (QoS) 和高可用性
  • 与 VMware、Microsoft 和 OpenStack 等管理系统集成
  • 面向思科云 ACI 部署公共云环境的云 APIC 设备

    思科 APIC 专为实现自动化、可编程性和集中式管理而设计,它通过 XML 和 JSON 提供北向 API。它提供命令行界面 (CLI) 和 GUI,这两个界面都使用 API 来全面管理交换矩阵。

ACI 信息图

ACI 信息图

了解 ACI 如何使应用部署更简单、更快捷、更高效 (sysin)。

放大图形

思科以应用为中心的基础设施 (ACI) 是一种架构,允许应用以编程方式定义网络要求。这种架构简化、优化和加速了整个应用程序部署生命周期。思科应用策略基础设施控制器 (APIC) 是充当控制器的软件或操作系统。

新增功能

2025 年 12 月 15 日 6.1(5e) 版本发布

发布概览

Cisco ACI 6.1(5) 是一个维护版本,通过关键缺陷修复和代码加固优先提升系统稳定性。本次发布遵循 Cisco 既定的维护版本节奏,推荐给希望在 ACI 部署中获得更高可靠性和稳定性的客户使用。

重要支持增强

虽然 ACI 6.1(5) 主要是维护版本,但为满足特定客户部署需求,本次发布包含了以下关键增强功能:

  • 互操作性支持:在具备策略扩展(Policy Extension)能力的环境中,实现 ACI 与 VXLAN EVPN Fabric 的任意对任意(any-to-any)互联 (sysin)。
  • 安全性增强:在 ACI 模式下,对 N9K-C9348GC-FX3 和 N9K-C93180YC-FX3 的 1G/100M 端口提供 MACsec 支持。

已解决问题:包含多项错误修复,篇幅较长,详见官方文档。

下载地址

ImagesFile nameRelease DateSize
APIC Image for 6.1(1f) Releaseaci-apic-dk9.6.1.1f.iso01-Aug-20243744.00 MB
Vapic Image for 6.1(1f) Releaseaci-apic-dk9.6.1.1f.ova01-Aug-20243866.51 MB
APIC Image for 6.1(2f) Releaseaci-apic-dk9.6.1.2f.iso05-Dec-20242627.11 MB
Vapic Image for 6.1(2f) Releaseaci-apic-dk9.6.1.2f.ova05-Dec-20242593.59 MB
APIC Image for 6.1(2g) Releaseaci-apic-dk9.6.1.2g.iso14-Dec-20242627.11 MB
Vapic Image for 6.1(2g) Releaseaci-apic-dk9.6.1.2g.ova14-Dec-20242593.24 MB
APIC Image for 6.1(3f) Releaseaci-apic-dk9.6.1.3f.iso04-Apr-20252605.45 MB
Vapic Image for 6.1(3f) Releaseaci-apic-dk9.6.1.3f.ova04-Apr-20252622.74 MB
APIC Image for 6.1(3g) Releaseaci-apic-dk9.6.1.3g.iso16-Jul-20252605.45 MB
Vapic Image for 6.1(3g) Releaseaci-apic-dk9.6.1.3g.ova16-Jul-20252622.89 MB
APIC Image for 6.1(4h) Releaseaci-apic-dk9.6.1.4h.iso13-Aug-20252627.11 MB
Vapic Image for 6.1(4h) Releaseaci-apic-dk9.6.1.4h.ova13-Aug-20252656.33 MB
Nutanix Image for 6.1(4h) Releaseaci-apic-dk9.6.1.4h_nutanix.ova13-Aug-20252824.78 MB
APIC Image for 6.1(5e) Releaseaci-apic-dk9.6.1.5e.iso15-Dec-20252632.27 MB
Vapic Image for 6.1(5e) Releaseaci-apic-dk9.6.1.5e.ova15-Dec-20252663.45 MB
Nutanix Image for 6.1(5e) Releaseaci-apic-dk9.6.1.5e_nutanix.ova15-Dec-20252832.46 MB

Cisco Application Policy Infrastructure Controller (APIC) Release 6.1(5e)M


数据中心网络相关产品:

更多:Cisco 产品下载链接汇总

1.1 第一代: Apache POI垄断时代(2001-2018)

Apache POI作为最早的Java Excel处理库,几乎垄断了市场近20年。但其基于DOM的内存模型存在天生缺陷:

  • 处理10万行数据需要消耗2GB以上内存
  • 大文件处理频繁引发OOM异常
  • API设计复杂,学习成本高
  • 2016年之前存在大量安全漏洞

1.2 第二代: EasyExcel 革新时代(2018-2023)

2018年阿里开源EasyExcel,通过SAX流式解析和内存复用机制,将百万行数据处理的内存占用控制在100MB以内,迅速成为行业标准。但随着企业数据规模的爆发式增长,EasyExcel也逐渐暴露出瓶颈:

  • 仅支持Excel格式,缺乏多格式扩展能力
  • 复杂场景下的性能优化空间有限
  • 社区迭代速度放缓,新特性更新滞后
  • 缺乏企业级特性支持(如加密、数字签名、合规审计)

1.3 第三代:Apache Fesod新纪元(2023-至今)

2023年,原EasyExcel作者带领团队启动FastExcel 项目 ,进行底层架构的彻底重构。2025年项目进入Apache孵化器,正式更名为Fesod(Fast. Easy. Done.)。2026年2月发布的2.0.1版本,标志着Java Excel处理技术进入了新的时代。

本文将从 架构设计 、核心原理、性能优化、工程实践四个维度,对Apache Fesod进行全面解析,帮助读者掌握这一革命性的技术。

二、Apache Fesod核心架构设计

Fesod采用了分层模块化的架构设计,通过解耦核心能力和扩展功能,实现了高性能、高可扩展、高易用性的设计目标。

2.1 整体架构分层

应用层 API

核心处理引擎

注解驱动API

内存管理子系统

流式处理引擎

类型转换系统

Excel 2007+ (.xlsx)

Excel 97-2003 (.xls)

CSV/TSV

HTML导出

自定义格式扩展

本地文件系统

2.2 核心设计理念

2.2.1 零拷贝流式处理

Fesod摒弃了传统的DOM解析模型,采用完全基于事件驱动的流式处理架构:

  • 直接操作文件字节流,无需将整个文件加载到内存
  • 采用读-处理-写的流水线模式,处理延迟降低80%
  • 智能预读机制,平衡IO吞吐量和内存占用
  • 零拷贝技术,避免数据在用户态和内核态之间的重复拷贝
2.2.2 智能内存管理

Fesod的内存管理子系统采用了三层 缓存 架构:

  • 堆外内存池:直接使用Netty的PooledByteBufAllocator管理堆外内存,避免JVM GC开销
  • 页缓存层:采用LRU-K淘汰算法,缓存常用的文件页,减少IO次数
  • 行对象池:通过对象复用技术,避免频繁创建和销毁对象,降低GC压力
2.2.3 可扩展格式架构

Fesod设计了统一的格式抽象层,支持任意格式的扩展:

public interface FormatHandler {
    
    FormatMetaData readMetaData(InputStream inputStream);

    
    SheetReader createReader(ReadContext context);

    
    SheetWriter createWriter(WriteContext context);

    
    Set<FormatType> getSupportedFormats();
}
12345678910111213

这种设计使得Fesod不仅支持Excel格式,还可以轻松扩展支持CSV、PDF、HTML甚至自定义二进制格式。

2.3 核心组件详解

2.3.1 流式处理引擎

Fesod的流式处理引擎采用了Reactor模式,实现了高并发低延迟的处理能力:

解析事件处理器

转换事件处理器

校验事件处理器

写入事件处理器

IO多路复用器

关键特性:

  • 事件驱动的异步处理模型,支持百万级QPS
  • 内置背压机制,防止处理速度不匹配导致的内存溢出
  • 支持任务并行处理,充分利用多核CPU资源
  • 可插拔的处理器架构,支持自定义业务逻辑扩展
2.3.2 类型 转换 系统

Fesod的类型转换系统采用了SPI扩展机制,支持任意类型之间的自动转换:

类型转换引擎

自定义转换器SPI

基本类型转换

日期时间转换

JSON转换

业务类型转换

加密解密转换

转换引擎支持自动类型推导和转换器优先级管理,90%的常用场景无需额外配置即可自动完成类型转换。

2.3.3 并发调度器

Fesod内置了智能并发调度器,根据文件大小和系统资源自动调整并发策略:

@Slf4j
public class ConcurrentScheduler {
    
    public ExecutionStrategy selectStrategy(long fileSize, int availableProcessors) {
        if (fileSize < 10 * 1024 * 1024) { 
            return ExecutionStrategy.SINGLE_THREAD;
        } else if (fileSize < 100 * 1024 * 1024) { 
            return ExecutionStrategy.FIXED_THREAD_POOL;
        } else { 
            return ExecutionStrategy.CHUNKED_PARALLEL;
        }
    }
}
12345678910111213

调度器支持三种执行策略:

  1. 单线程模式:适合小文件,避免线程切换开销
  2. 固定线程池模式:适合中等大小文件,平衡并发和资源占用
  3. 分块并行模式:适合超大文件,将文件分成多个块并行处理,处理速度与CPU核心数成正比

三、Fesod核心原理深度解析

3.1 内存优化原理

3.1.1 堆外内存管理

Fesod几乎所有的缓存都放在堆外内存,彻底避免了大内存场景下的 JVM GC问题:

public class OffHeapMemoryManager {
    private static final PooledByteBufAllocator ALLOCATOR =
        new PooledByteBufAllocator(true, 4, 8, 8192, 1024, 64, 0);

    public ByteBuf allocate(int capacity) {
        return ALLOCATOR.directBuffer(capacity);
    }

    public void release(ByteBuf buf) {
        if (buf != null && buf.refCnt() > 0) {
            buf.release();
        }
    }
}
1234567891011121314

这种设计带来的优势:

  • 内存占用降低70%:处理百万行数据仅需30MB内存
  • GC停顿时间减少99%:堆内存占用始终保持在100MB以内
  • 内存分配效率提升3倍:采用池化分配,避免频繁系统调用
3.1.2 零拷贝技术应用

Fesod在多个层面应用了零拷贝技术:

  1. 文件读取零拷贝:使用FileChannel.transferTo()直接将文件数据传输到内核缓冲区
  2. 网络传输零拷贝:支持直接将处理结果写入Socket缓冲区,无需用户态拷贝
  3. 数据处理零拷贝:在整个处理链路中,避免不必要的数据拷贝操作

public void zeroCopyTransfer(FileChannel source, WritableByteChannel target) throws IOException {
    long position = 0;
    long size = source.size();
    while (position < size) {
        position += source.transferTo(position, size - position, target);
    }
}
12345678

3.2 解析引擎原理

3.2.1 SAX事件驱动解析

Fesod的.xlsx解析器完全基于XML SAX事件驱动,比传统DOM解析快5-10倍:

应用程序 事件处理器 SAX解析器 压缩文件 应用程序 事件处理器 SAX解析器 压缩文件 读取sharedStrings.xml 触发字符串事件 构建字符串索引 读取sheet1.xml 触发行开始事件 触发单元格事件 回调行数据 触发行结束事件

3.2.2 智能类型推导

Fesod的解析引擎支持智能类型推导,无需配置即可自动识别单元格类型:

public enum CellType {
    STRING, NUMBER, BOOLEAN, DATE, FORMULA, ERROR, BLANK
}

public class CellTypeDetector {
    
    public CellType detectType(String value, String formatString) {
        
        if (isDateFormat(formatString)) {
            return CellType.DATE;
        }
        
        if (isNumberFormat(formatString) && isNumber(value)) {
            return CellType.NUMBER;
        }
        
        if ("TRUE".equals(value) || "FALSE".equals(value)) {
            return CellType.BOOLEAN;
        }
        
        return CellType.STRING;
    }
}
1234567891011121314151617181920212223

3.3 写入优化原理

3.3.1 流式写入机制

Fesod的写入引擎采用完全流式的写入机制,无需缓存所有数据:

行对象处理器

XML写入器

ZIP压缩器

共享字符串表

关键优化点:

  • 边处理边写入,内存占用恒定
  • 智能样式复用,避免重复样式定义
  • 共享字符串表优化,减少重复字符串存储
  • 流式ZIP压缩,无需生成临时文件
3.3.2 并行写入技术

Fesod支持多Sheet并行写入,充分利用多核CPU资源:

public class ParallelExcelWriter implements AutoCloseable {
    private final ExecutorService executor = Executors.newFixedThreadPool(
        Runtime.getRuntime().availableProcessors() * 2);

    
    public <T> CompletableFuture<Void> writeSheetAsync(String sheetName,
                                                      List<T> data,
                                                      Class<T> clazz) {
        return CompletableFuture.runAsync(() -> {
            try (SheetWriter writer = createSheetWriter(sheetName, clazz)) {
                writer.write(data);
            }
        }, executor);
    }
}
123456789101112131415

四、Fesod核心功能特性详解

4.1 注解驱动开发

Fesod提供了强大的注解驱动开发能力,通过简单的注解即可完成复杂的Excel映射配置:

@Data
@ExcelSheet(name = "用户信息", sheetIndex = 0)
public class UserVO {

    @ExcelColumn(name = "用户ID", index = 0, width = 10)
    private Long userId;

    @ExcelColumn(name = "用户名", index = 1, width = 20)
    private String username;

    @ExcelColumn(name = "年龄", index = 2, width = 8)
    private Integer age;

    @ExcelColumn(name = "生日", index = 3, width = 18, format = "yyyy-MM-dd")
    private LocalDate birthday;

    @ExcelColumn(name = "邮箱", index = 4, width = 30)
    private String email;

    @ExcelColumn(name = "状态", index = 5, width = 10,
               converter = StatusConverter.class)
    private Integer status;

    @ExcelIgnore 
    private String password;
}
1234567891011121314151617181920212223242526

4.2 复杂场景支持

4.2.1 多级表头

Fesod支持任意层级的复杂表头:

@Data
@ExcelSheet(name = "销售报表")
@HeadRowHeight(40)
@ContentRowHeight(20)
public class SalesReportVO {

    @ExcelColumn(name = {"基本信息", "地区"}, index = 0, width = 15)
    private String region;

    @ExcelColumn(name = {"基本信息", "省份"}, index = 1, width = 15)
    private String province;

    @ExcelColumn(name = {"基本信息", "城市"}, index = 2, width = 15)
    private String city;

    @ExcelColumn(name = {"销售数据", "一季度", "1月"}, index = 3, width = 12)
    private BigDecimal januarySales;

    @ExcelColumn(name = {"销售数据", "一季度", "2月"}, index = 4, width = 12)
    private BigDecimal februarySales;

    @ExcelColumn(name = {"销售数据", "一季度", "3月"}, index = 5, width = 12)
    private BigDecimal marchSales;

    @ExcelColumn(name = {"销售数据", "二季度", "4月"}, index = 6, width = 12)
    private BigDecimal aprilSales;

    
}
1234567891011121314151617181920212223242526272829
4.2.2 动态模板导出

Fesod支持基于模板的动态导出,适合复杂报表场景:


Template template = TemplateLoader.load("classpath:templates/sales_report_template.xlsx");


Map<String, Object> data = new HashMap<>();
data.put("reportName", "2026年第一季度销售报表");
data.put("generateTime", LocalDateTime.now());
data.put("salesData", salesDataList);
data.put("chartData", chartData);


ExcelWriter writer = Fesod.writeTemplate("output/report.xlsx", template);
writer.fill(data);
writer.close();
1234567891011121314
4.2.3 大数据量分块写入

对于超大数据量的导出场景,Fesod支持分块写入,避免内存溢出:

try (ExcelWriter writer = Fesod.writeBig("output/large_data.xlsx", UserVO.class)) {
    
    int pageSize = 10000;
    for (int i = 0; i < 100; i++) { 
        List<UserVO> data = userService.queryPage(i, pageSize);
        writer.write(data);
    }
}
12345678

4.3 企业级特性

4.3.1 数据校验

Fesod内置了强大的数据校验框架,支持在读取时自动校验数据:

@Data
public class UserImportVO {

    @ExcelColumn(name = "用户名", index = 1)
    @NotBlank(message = "用户名不能为空")
    @Size(min = 2, max = 20, message = "用户名长度必须在2-20之间")
    private String username;

    @ExcelColumn(name = "邮箱", index = 2)
    @NotBlank(message = "邮箱不能为空")
    @Email(message = "邮箱格式不正确")
    private String email;

    @ExcelColumn(name = "年龄", index = 3)
    @NotNull(message = "年龄不能为空")
    @Min(value = 18, message = "年龄必须大于等于18")
    @Max(value = 100, message = "年龄必须小于等于100")
    private Integer age;
}


ExcelReader<UserImportVO> reader = Fesod.read("input/users.xlsx", UserImportVO.class);
reader.setValidator(new JSR380Validator());
List<ValidResult<UserImportVO>> results = reader.readAllWithValid();
123456789101112131415161718192021222324
4.3.2 加密解密

Fesod支持Excel文件的加密和解密,满足企业安全需求:


WriteOptions options = WriteOptions.builder()
    .password("your_password")
    .encryptAlgorithm(EncryptAlgorithm.AES_256)
    .build();

Fesod.write("output/encrypted.xlsx", UserVO.class, options)
    .write(dataList)
    .close();


ReadOptions readOptions = ReadOptions.builder()
    .password("your_password")
    .build();

List<UserVO> data = Fesod.read("input/encrypted.xlsx", UserVO.class, readOptions)
    .readAll();
1234567891011121314151617
4.3.3 操作审计

Fesod内置了操作审计功能,支持记录所有文件操作日志:

AuditListener auditListener = new AuditListener() {
    @Override
    public void onFileRead(String fileName, long fileSize, long costTime) {
        log.info("文件读取完成: {},大小: {}字节,耗时: {}ms", fileName, fileSize, costTime);
    }

    @Override
    public void onRowProcessed(int rowNum, Object data, long costTime) {
        
    }

    @Override
    public void onValidationFailed(int rowNum, String field, String message) {
        log.error("第{}行字段{}校验失败: {}", rowNum, field, message);
    }
};

ExcelReader reader = Fesod.read("input/data.xlsx", DataVO.class);
reader.addListener(auditListener);
12345678910111213141516171819

五、性能对比与基准测试

为了客观评估Fesod的性能表现,我们设计了全面的基准测试,对比了Fesod 2.0.1、EasyExcel 3.3.0和Apache POI 5.2.5在不同场景下的表现。

5.1 测试环境配置

硬件配置:
- CPU: Intel Xeon 8375C 32核 64线程
- 内存: 256GB DDR4
- 存储: 2TB NVMe SSD
- 操作系统: CentOS 7.9

软件配置:
- JDK版本: OpenJDK 17.0.5
- JVM参数: -Xms4g -Xmx4g -XX:+UseG1GC
- Fesod版本: 2.0.1-incubating
- EasyExcel版本: 3.3.0
- POI版本: 5.2.5
123456789101112

5.2 读取 性能测试

5.2.1 不同数据量读取性能对比
数据量Fesod(毫秒)EasyExcel(毫秒)POI(毫秒)Fesod vs EasyExcelFesod vs POI
10万行18534212561.8x 更快6.8x 更快
50万行792156368922.0x 更快8.7x 更快
100万行14863012135872.0x 更快9.1x 更快
500万行685214235OOM2.1x 更快-

测试结论:

  • Fesod的读取性能比EasyExcel快1-2倍,比POI快5-10倍
  • POI在处理500万行数据时直接OOM,无法完成测试
  • Fesod处理100万行数据仅需1.5秒,性能优势明显
5.2.2 内存占用对比
数据量Fesod(MB)EasyExcel(MB)POI(MB)内存优化倍数(Fesod vs POI)
10万行188551228.4x
50万行25102204881.9x
100万行321284096128.0x
500万行47315OOM-

测试结论:

  • Fesod的内存控制极为出色,处理500万行数据仅需47MB内存
  • EasyExcel的内存占用是Fesod的5-7倍
  • POI的内存占用非常高,100万行就需要4GB内存

5.3 写入性能测试

5.3.1 不同数据量写入性能对比
数据量Fesod(毫秒)EasyExcel(毫秒)POI(毫秒)Fesod vs EasyExcelFesod vs POI
10万行21642815872.0x 更快7.3x 更快
50万行924198585322.1x 更快9.2x 更快
100万行17583862169872.2x 更快9.7x 更快
500万行821717643OOM2.1x 更快-

测试结论:

  • Fesod的写入性能比EasyExcel快1-2倍,比POI快6-10倍
  • Fesod写入100万行数据仅需1.7秒,500万行仅需8.2秒
  • POI写入500万行数据时OOM,无法完成测试
5.3.2 不同并发数写入性能
并发线程数Fesod耗时(毫秒)EasyExcel耗时(毫秒)性能提升倍数
1189337251.97倍
2102421582.11倍
458713422.29倍
839210252.61倍
163569872.77倍
注:测试场景为10个Sheet并行写入,每个Sheet包含10万行数据。

测试结论:

  • Fesod的并行写入性能接近线性提升,8线程时性能达到单线程的4.8倍
  • 并发数超过8之后,性能提升趋于平缓,受限于IO带宽
  • Fesod的并行写入性能明显优于EasyExcel

5.4 综合性价比对比

指标Fesod 2.0EasyExcel 3.3Apache POI 5.2
读取速度(100万行)1.5秒3.0秒13.6秒
写入速度(100万行)1.8秒3.9秒17.0秒
内存占用(100万行)32MB128MB4GB
API易用性极易容易复杂
功能丰富度极高中等
扩展能力极强中等
社区活跃度高(Apache孵化器)中等
企业级特性支持不支持部分支持
开源协议Apache 2.0Apache 2.0Apache 2.0

六、Fesod工程实践指南

6.1 快速上手

6.1.1 Maven依赖引入
<dependency>
    <groupId>org.apache.fesod</groupId>
    <artifactId>fesod-sheet</artifactId>
    <version>2.0.1-incubating</version>
</dependency>


<dependency>
    <groupId>org.apache.fesod</groupId>
    <artifactId>fesod-pdf</artifactId>
    <version>2.0.1-incubating</version>
</dependency>
123456789101112
6.1.2 最简单的导出示例

List<UserVO> userList = userService.list();


Fesod.write("output/users.xlsx", UserVO.class)
    .write(userList)
    .close();
1234567
6.1.3 最简单的导入示例

List<UserVO> userList = Fesod.read("input/users.xlsx", UserVO.class)
    .readAll();


userService.saveBatch(userList);
123456

6.2 高级功能实践

6.2.1 百万级数据导入优化

针对百万级数据导入场景,推荐 使用 流式读取+分批次处理的方案:

@Service
@Slf4j
public class UserImportService {

    @Transactional(rollbackFor = Exception.class)
    public void importBigData(String filePath) {
        int batchSize = 1000;
        List<UserVO> batchList = new ArrayList<>(batchSize);

        try (ExcelReader<UserVO> reader = Fesod.read(filePath, UserVO.class)) {
            reader.readStream(row -> {
                batchList.add(row);
                if (batchList.size() >= batchSize) {
                    userService.saveBatch(batchList);
                    batchList.clear();
                }
            });

            
            if (!batchList.isEmpty()) {
                userService.saveBatch(batchList);
            }
        }

        log.info("数据导入完成,总条数: {}", reader.getTotalRowCount());
    }
}
123456789101112131415161718192021222324252627
6.2.2 复杂报表导出实践

对于包含多个Sheet、图表、公式的复杂报表,推荐使用模板导出方案:

@Service
public class ReportService {

    public void exportSalesReport(String outputPath, String quarter) {
        
        Template template = TemplateLoader.load("classpath:templates/sales_report.xlsx");

        
        Map<String, Object> reportData = new HashMap<>();
        reportData.put("quarter", quarter);
        reportData.put("generateTime", LocalDateTime.now());
        reportData.put("summary", getSummaryData(quarter));
        reportData.put("regionData", getRegionData(quarter));
        reportData.put("productData", getProductData(quarter));
        reportData.put("chartData", getChartData(quarter));

        
        try (ExcelWriter writer = Fesod.writeTemplate(outputPath, template)) {
            
            writer.fill(reportData);

            
            writer.fillList("regionList", getRegionDetailList(quarter));
            writer.fillList("productList", getProductDetailList(quarter));

            
            writer.insertChart("salesChart", createSalesChart(quarter));
        }
    }
}
123456789101112131415161718192021222324252627282930
6.2.3 错误处理与重试机制

在生产环境中,建议添加完善的错误处理和重试机制:

@Slf4j
@Component
public class ExcelImportTask {

    @Autowired
    private UserService userService;

    @Retryable(value = {Exception.class}, maxAttempts = 3,
               backoff = @Backoff(delay = 1000, multiplier = 2))
    public void importWithRetry(String filePath) {
        try {
            List<UserVO> data = Fesod.read(filePath, UserVO.class).readAll();
            userService.saveBatch(data);
            log.info("导入成功,共处理{}条数据", data.size());
        } catch (Exception e) {
            log.error("导入失败,文件: {}", filePath, e);
            throw new BusinessException("Excel导入失败", e);
        }
    }

    @Recover
    public void recover(Exception e, String filePath) {
        log.error("重试3次仍然失败,文件: {}", filePath, e);
        
        alertService.sendAlert("Excel导入失败", "文件: " + filePath + ",错误: " + e.getMessage());
    }
}
123456789101112131415161718192021222324252627

6.3 性能调优最佳实践

6.3.1 JVM参数优化

针对大文件处理场景,推荐以下JVM参数配置:

# 堆内存设置
-Xms8g
-Xmx8g
-XX:MaxDirectMemorySize=16g

# GC优化
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:ParallelGCThreads=8
-XX:ConcGCThreads=2
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/heapdump.hprof

# 其他优化
-XX:+AlwaysPreTouch
-XX:+UseLargePages
-XX:LargePageSizeInBytes=2m
1234567891011121314151617
6.3.2 应用层优化

@Configuration
public class FesodConfig {

    @Bean
    public GlobalConfig globalConfig() {
        return GlobalConfig.builder()
            
            .bufferSize(64 * 1024)
            
            .batchSize(2000)
            
            .parallelThreads(Runtime.getRuntime().availableProcessors() * 2)
            
            .autoTypeConvert(true)
            
            .calculateFormula(true)
            .build();
    }
}
1234567891011121314151617181920
6.3.3 典型场景优化方案
场景优化方案预期效果
百万级Excel导入流式读取+分批次入库内存占用<50MB,处理速度>10万行/秒
千万级数据导出分块并行导出+多Sheet合并导出速度>5万行/秒,无OOM风险
高并发导出场景异步导出+队列削峰支持100+并发导出请求
复杂报表导出模板预编译+缓存导出速度提升3-5倍
敏感数据导出内置脱敏转换器敏感字段自动脱敏,避免数据泄露

七、Fesod与现有系统集成方案

7.1 Spring Boot集成

Fesod提供了官方的Spring Boot Starter,集成非常简单:

<dependency>
    <groupId>org.apache.fesod</groupId>
    <artifactId>fesod-spring-boot-starter</artifactId>
    <version>2.0.1-incubating</version>
</dependency>
12345

配置文件:

fesod:
  enabled: true
  buffer-size: 65536
  batch-size: 2000
  auto-type-convert: true
  calculate-formula: false
  default-date-format: yyyy-MM-dd HH:mm:ss
1234567

使用示例:

@RestController
@RequestMapping("/excel")
public class ExcelController {

    @Autowired
    private FesodTemplate fesodTemplate;

    @GetMapping("/export/users")
    public void exportUsers(HttpServletResponse response) throws IOException {
        List<UserVO> userList = userService.list();

        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setHeader("Content-Disposition", "attachment;filename=users.xlsx");

        fesodTemplate.write(response.getOutputStream(), UserVO.class)
            .write(userList)
            .close();
    }
}
12345678910111213141516171819

7.2 微服务架构下的Excel服务设计

在微服务架构中,建议将Excel处理能力抽离为独立的服务:

Excel处理服务

导入处理模块

导出处理模块

模板管理模块

任务调度模块

数据转换模块

架构优势:

  • 独立部署,避免影响核心业务服务
  • 资源隔离,大文件处理不会占用业务服务资源
  • 统一管理Excel模板和处理逻辑
  • 支持异步处理,提升用户体验
  • 便于扩容和性能优化

7.3 云原生部署方案

Fesod非常适合云原生部署,推荐使用Kubernetes+Docker的部署方案:

Dockerfile示例:

FROM openjdk:17-jdk-slim

WORKDIR /app

COPY target/fesod-service.jar /app/

# 配置JVM参数
ENV JAVA_OPTS="-Xms4g -Xmx4g -XX:MaxDirectMemorySize=8g -XX:+UseG1GC"

EXPOSE 8080

ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar fesod-service.jar"]
123456789101112

Kubernetes部署配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: fesod-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: fesod-service
  template:
    metadata:
      labels:
        app: fesod-service
    spec:
      containers:
      - name: fesod-service
        image: your-registry/fesod-service:2.0.1
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: "4"
            memory: "8Gi"
          limits:
            cpu: "8"
            memory: "16Gi"
        volumeMounts:
        - name: temp-volume
          mountPath: /tmp
      volumes:
      - name: temp-volume
        emptyDir:
          medium: Memory 
          sizeLimit: 10Gi
12345678910111213141516171819202122232425262728293031323334

八、从EasyExcel迁移到Fesod指南

对于已经在使用EasyExcel的项目,迁移到Fesod非常简单,90%的代码无需修改。

8.1 迁移成本评估

迁移内容工作量复杂度
依赖替换极低
注解替换极低
API调用替换极低
自定义转换器迁移
高级功能迁移
性能测试验证

总评估:一个中等规模的项目,迁移工作可以在1-2天内完成。

8.2 迁移步骤

第一步:替换依赖




<dependency>
    <groupId>org.apache.fesod</groupId>
    <artifactId>fesod-sheet</artifactId>
    <version>2.0.1-incubating</version>
</dependency>
123456789101112131415
第二步:替换注解

Fesod的注解与EasyExcel高度兼容,只需要替换包名即可:






import org.apache.fesod.sheet.annotation.ExcelColumn;
import org.apache.fesod.sheet.annotation.ExcelIgnore;
import org.apache.fesod.sheet.annotation.ExcelSheet;

@Data
@ExcelSheet(name = "用户信息") 
public class UserVO {

    @ExcelColumn(name = "用户ID", index = 0) 
    private Long userId;

    @ExcelColumn(name = "用户名", index = 1)
    private String username;

    @ExcelIgnore 
    private String password;
}
12345678910111213141516171819202122
第三步:替换API调用

Fesod的API设计与EasyExcel非常相似,迁移成本极低:







Fesod.write("output/users.xlsx", UserVO.class)
    .write(userList)
    .close();







List<UserVO> list = Fesod.read("input/users.xlsx", UserVO.class)
    .readAll();
123456789101112131415161718
第四步:自定义转换器迁移

Fesod的转换器接口与EasyExcel兼容,只需要修改接口实现:













public class StatusConverter implements Converter<Integer> {
    @Override
    public Integer convertToJavaData(ReadContext context, CellData cellData) {
        String value = cellData.getStringValue();
        return "有效".equals(value) ? 1 : 0;
    }

    @Override
    public CellData convertToExcelData(WriteContext context, Integer value) {
        return new CellData(value == 1 ? "有效" : "无效");
    }
}
123456789101112131415161718192021222324

8.3 迁移后的收益

  1. 性能提升1-2倍:相同硬件条件下,处理能力翻倍
  2. 内存占用降低70%:大幅降低OOM风险
  3. 功能更丰富:支持PDF导出、加密、校验等企业级特性
  4. 社区更活跃:Apache基金会支持,版本迭代更快
  5. 合规性更好:Apache 2.0协议,无知识产权风险

九、Fesod未来发展路线图

根据Apache Fesod社区发布的路线图,未来一年将重点发展以下方向:

2026年Q2版本规划

  • ✅ 完成Apache孵化器毕业,成为顶级项目
  • ✅ 支持Excel宏处理和VBA脚本执行
  • ✅ 增强PDF导出功能,支持复杂排版和水印
  • ✅ 新增Word文档处理能力

2026年Q3版本规划

  • 🔄 支持AI增强的表格识别和智能填充
  • 🔄 新增大数据格式支持(Parquet、ORC)
  • 🔄 提供Python、Go多语言SDK
  • 🔄 内置分布式处理引擎,支持TB级文件处理

2026年Q4版本规划

  • 📅 推出Fesod Cloud云服务版本
  • 📅 支持实时流处理,对接Kafka等消息队列
  • 📅 内置数据质量分析和报表生成能力
  • 📅 提供低代码可视化配置平台

十、总结与展望

Apache Fesod作为Java生态中Excel处理技术的第三代代表作,通过底层架构的彻底重构,在性能、内存占用、功能丰富度等方面都达到了前所未有的高度。对于企业级应用而言,Fesod不仅能够解决传统Excel处理的痛点问题,还能为复杂业务场景提供完整的解决方案。

随着数据量的持续增长和企业数字化转型的深入,高性能数据处理工具的价值会越来越凸显。Fesod的出现,填补了Java生态在高性能表格处理领域的空白,有望成为未来十年的行业标准。

我们建议:

  1. 新项目直接选择Fesod作为Excel处理框架,享受技术红利
  2. 现有EasyExcel项目可以逐步迁移到Fesod,提升系统性能
  3. 超大规模数据处理场景,Fesod是目前的最优选择
  4. 关注Fesod社区的发展,参与社区建设,共同推动技术进步

附录:常用代码片段

附录A:常见问题解决方案

A.1 读取日期格式不正确

GlobalConfig config = GlobalConfig.builder()
    .defaultDateFormat("yyyy-MM-dd HH:mm:ss")
    .defaultNumberFormat("#,##0.00")
    .build();

List<UserVO> list = Fesod.read("input/data.xlsx", UserVO.class, ReadOptions.builder()
    .globalConfig(config)
    .build())
    .readAll();
12345678910
A.2 处理合并单元格
ReadOptions options = ReadOptions.builder()
    .autoHandleMergeCell(true) 
    .build();

List<OrderVO> list = Fesod.read("input/order.xlsx", OrderVO.class, options)
    .readAll();
123456
A.3 自定义单元格样式

WriteCellStyle headStyle = WriteCellStyle.builder()
    .fillForegroundColor(IndexedColors.DARK_BLUE.getIndex())
    .fontColor(IndexedColors.WHITE.getIndex())
    .fontHeightInPoints((short)12)
    .bold(true)
    .borderBottom(BorderStyle.THIN)
    .build();


WriteCellStyle contentStyle = WriteCellStyle.builder()
    .borderBottom(BorderStyle.THIN)
    .borderLeft(BorderStyle.THIN)
    .borderRight(BorderStyle.THIN)
    .borderTop(BorderStyle.THIN)
    .build();

WriteOptions options = WriteOptions.builder()
    .headCellStyle(headStyle)
    .contentCellStyle(contentStyle)
    .build();

Fesod.write("output/users.xlsx", UserVO.class, options)
    .write(userList)
    .close();
12345678910111213141516171819202122232425

附录B:性能测试代码

完整的性能测试代码可以在官方GitHub仓库获取:https://github.com/apache/fesod/tree/main/fesod-test


参考文献:

  1. Apache Fesod官方文档:https://fesod.apache.org/
  2. Fesod GitHub仓库:https://github.com/apache/fesod
  3. 《Java高性能数据处理最佳实践》2026版
  4. Apache软件基金会孵化器项目报告(2026年第一季度)

从「AI For What」到「Value From AI」,100+可落地实践案例打通 AI 实战最后一公里!

4 月 16 日-4 月 18 日,QCon 全球软件开发大会将在北京举办。本届大会锚定 Agentic AI 时代的软件工程重塑,聚焦 Agentic AI、多智能体协作、算力优化、技术债治理、多模态和 AI 原生基础设施等前沿话题,邀请来自腾讯、阿里、百度、华为、蚂蚁、小米、网易等企业技术专家,带来百余项真实落地案例,系统性分享前沿洞察与实战干货,以技术共创探索 AI 落地新路径。

北银金科高级算法专家尹辰轩已确认出席 “Agentic Engineering” 专题,并发表题为多模态+Agent 在培训与教育领域的应用的主题分享。将多模态模型接入 Agent 中会有很多场景创新,比如将各类教材或培训材料,通过大模型解读,然后形成 PPT 和带数字人的演讲视频;再比如利用 AI 模仿真人与客服或销售对练,提高销售服务技巧。基于多智能体协同和大小模型协同,AI 能够应用的场景范围脱离了聊天。当然,这个过程中,性能也会是相当重要的技术难点。本次演讲将深入探讨多模态模型的快速进化推动 AI 应用场景扩充、AI 课程和 AI 陪练领域的一些应用等相关内容。

尹辰轩,曾就职于京东金融(P8/算法专家)、华兴证券(SVP/高级金融工程师)。牵头负责企业 AI 图谱、大模型投顾(大小模型协同引擎)、AI 陪练(多 Agent 协同)、AI 创智课程(多 Agent 协同)、报告专家(多 Agent 协同+大小模型协同)等项目或产品,主持人工智能技术在各类场景的落地,拥有丰富的项目经验。他在本次会议的详细演讲内容如下:

演讲提纲

  1. 多模态模型的快速进化推动 AI 应用场景扩充

  2. AI 课程和 AI 陪练领域的一些应用

  • AI 课程实现逻辑

  • AI 陪练实现逻辑

3. 技术上需要注意的点

  • 流程编排中的模型引用要适当,不要追求大参数模型

  • 知识库要慎用,会影响性能

  • 多 Agent 协同和工作流要善用并行

  • 在多模态接入过程中,尽量少用后端

演讲亮点

  1. 对多模态模型的优化(如 PPT 排版,数字人生成,性能优化)

  2. 技术架构的优化,尽量减少调用次数以提高性能

听众收益

  1. 应用场景的启发

  2. Agent 在实际业务中的应用架构

  3. 关于多模态+Agent 中性能的考量

除此之外,本次大会还策划了Agentic Engineering多模态理解与生成的突破记忆觉醒:智能体记忆系统的范式重塑与产业落地具身智能与物理世界交互Agent Infra 架构设计AI 重塑数据生产与消费AI 原生基础设施AI 驱动的技术债治理小模型与领域适配模型大模型算力优化Agent 可观测性与评估工程AI for SRE等 20 多个专题论坛,届时将有来自不同行业、不同领域、不同企业的 100+资深专家在 QCon 北京站现场带来前沿技术洞察和一线实践经验。

更多详情可扫码或联系票务经理 18514549229 进行咨询。

原文地址 https://feinterview.poetries.top/blog/openclaw-7-config-files

装了满满一堆Skills,OpenClaw还是那个"一问一答"的傻白甜?

别急着怪大模型变笨,也别急着骂Skills没用。真正的问题在于:你从来没有认真配置过这几个关键文件。

今天这篇教程,带你搞懂OpenClaw的7个核心配置文件,轻松实现从"傻白甜"到"智能助手"的蜕变。

先找到这些文件在哪

在开始之前,先知道这些关键配置文件藏在哪儿。

命令行方式

# 查看工作空间下的文件
ls ~/.openclaw/workspace/


# 进入工作空间
cd ~/.openclaw/workspace/

文件层级如下:

~/.openclaw/workspace/
├── AGENTS.md       # 代理调度规则与标准作业程序
├── BOOTSTRAP.md    # 初始化序列与核心系统提示词
├── HEARTBEAT.md    # 定时执行逻辑与主动任务状态自检
├── IDENTITY.md     # 代理身份定义与系统边界约束
├── MEMORY.md       # 长期上下文数据与既定规则的持久化存储
├── SOUL.md         # 响应语气、行为特征及输出格式配置
├── TOOLS.md        # 工具授权注册表及调用参数规范
├── USER.md         # 用户画像数据,包含特定偏好与交互限制配置
├── memory/         # 日常运行日志与短期上下文存储
└── skills/         # 已安装的第三方技能扩展目录

WebUI方式

  1. 访问:http://localhost:18789/overview
  2. 点击"连接"
  3. 左侧选择"代理" -> 当前Agent
  4. 点击文件,选择对应的md文件进行修改

这7个文件,决定了AI的"智商"

1. SOUL.md —— AI的灵魂性格

SOUL.md是整个OpenClaw身份架构中最基础的文件,定义了代理的性格、核心价值观和长期指令。

一个好的SOUL.md,应该包含这几个部分:

## 1. 核心身份与人格


- **角色设定**:你是主人的专属AI助手
- **沟通风格**:简单问题一针见血,复杂问题详细拆解
- **术语与排版**:技术术语必须保留英文,关键结论用加粗


## 2. 核心价值观与绝对红线


- **隐私与边界**:绝对禁止泄露任何项目代码或个人隐私
- **行动派原则**:能直接干的活儿直接干,拒绝废话
- **风险阻断机制**:高危操作前必须请求确认


## 3. 长期指令与生存法则


- **记忆连续性**:每次响应前先读取记忆文件
- **生物钟感知**:深夜时段降低主动输出频率

关键点SOUL.md越具体,AI行为越明确。模糊的指令如"要有帮助"会产生模糊的行为,而"最多5个要点,确认后再删除任何文件"会产生特定的行为。

2. AGENTS.md —— AI的工作指南

AGENTS.mdOpenClaw的日常行为配置文件,详细记录了任务处理流程、工具使用策略和决策规范。

核心内容包括:

## 1. 唤醒协议


每次会话开始前必须执行:


- 读取SOUL.md - 确认AI是谁
- 读取USER.md - 确认用户是谁
- 读取memory/ - 获取最近上下文


## 2. 记忆库新陈代谢


- 每日流水:当天灵感、废稿存入`memory/YYYY-MM-DD.md`
- 精华提炼:定期回顾并更新到`MEMORY.md`


## 3. 护主与绝对红线


- 隐私锁死:禁止泄露未发布的草稿
- 破坏性拦截:文件删除前必须询问
- 懂就问:绝不靠幻觉瞎编

3. USER.md —— AI的用户说明书

USER.md是写给OpenClaw的"使用说明书",决定了AI如何服务你。

## 1. 基础参数


- 称呼:poetry
- 时区:Asia/Shanghai
- 角色:前端工程师


## 2. 沟通与排版癖好


- 排版要求:少用Emoji,不要"首先其次最后"
- 语言风格:短句优先,结论前置
- 黑名单词汇:禁止"祝您生活愉快"类废话


## 3. 当前焦点


- 最近在筹备什么项目
- 这样AI才能给出相关建议


## 4. 隐秘的细节与雷区


- 雷区:不要随便改我的笔记库结构
- 偏好:只要数据,不需要情绪

这是过滤"AI味"最重要的一环。

4. HEARTBEAT.md —— 让AI具备"自主意识"

HEARTBEAT.md决定了AI能否主动为你工作,而不是只能等你下命令。

# 主动请求


- 每半小时抓取指定推特的最新数据
- 检查GitHub仓库CI/CD是否有构建失败
- 瞄一眼BTC/ETH价格和Gas费


# 每日07:30早报


生成并推送《早间简报》,包含:


- 美股和加密大盘核心数据
- 过去24小时的阅读量最高的推文
- 昨天代码有没有遗留Bug


# 条件触发


- 推文被大V转发 → 立刻提醒
- BTC 15分钟波动超3% → 最高级别警报

这才是OpenClaw最强大的地方——当服务器凌晨3点宕机时,心跳机制会捕获问题并通过Telegram提醒你

5. TOOLS.md —— 技能配置清单

TOOLS.md定义了OpenClaw能用什么工具。

要理解ToolsSkills的区别:

  • Tools是器官 —— 决定了AI是否能做某事
  • Skills是教科书 —— 教AI如何组合工具完成任务
# Skills配置


## 1. 社交媒体采集


- 主阵地:@你的账号
- 盯盘名单:Web3、AI赛道的关键账号
- 屏蔽词库:过滤抽奖垃圾推文


## 2. 本地存储映射


- 灵感暂存区:~/.openclaw/workspace/inspiration/
- 草稿输出目录:~/.openclaw/workspace/Drafts/
- 日志回收站:~/.openclaw/workspace/trash/

6. IDENTITY.md —— 对外身份形象

IDENTITY.md负责定义AI的"外在形象"——显示名称、表情符号、主题和问候语。

  • SOUL.md告诉AI"你是谁"
  • IDENTITY.md告诉用户AI"长什么样"
# IDENTITY.md


- 姓名:poetry
- 物种:全自动化打工犬
- 氛围:硬核、极客、话少干活快

这种分离设计很强大——你可以随时调整AI的对外形象,但保持核心人格不变。

7. BOOTSTRAP.md —— 初始化引导

BOOTSTRAP.md是全新工作空间的一次性引导文件。

核心功能是引导用户完成:命名AI、设置人格、填写USER.md

# 引导流程


## 1. 拷打


"系统上线,记忆为空。咱们定一下规矩:我是谁?"


## 2. 基因重组


- 覆写`IDENTITY.md`
- 覆写`USER.md`
- 敲定`SOUL.md`的红线


## 3. 连接渠道


- 仅限本地
- Telegram(推荐)
- WhatsApp

关键:完成后必须删除BOOTSTRAP.md。你已经有了灵魂,不再是空白机器了。

写在最后

看完这篇,你会发现:OpenClaw的"智商"根本不是由Skills数量决定的,而是由这7个配置文件决定的。

  • SOUL.md → 性格
  • AGENTS.md → 怎么干活
  • USER.md → 怎么服务你
  • HEARTBEAT.md → 自主意识
  • TOOLS.md → 能用什么工具
  • IDENTITY.md → 长什么样
  • BOOTSTRAP.md → 初始引导

这才是让AI从"傻白甜"变成"智能助手"的关键。

Bluespec SystemVerilog(以下简称BSV)的多态(Polymorphism)机制使得RTL的开发者可以编写高度抽象、可复用的代码逻辑,虽然该机制从语法层面上与SystemVerilog(以下简称SV)有一定的相似性,可以降低开发者从SV到BSV的学习成本,但BSV中的多态机制与函数式编程语言中的Proviso机制深度耦合,也给初学者造成了很多的困惑。因此,本文将以实际的代码案例,为BSV的初学者详细梳理BSV中的多态机制,以及其附加引入的Proviso机制,从而帮助读者快速掌握上述内容。

首先来看如下一个非常简单的PrioritySearchBuffer模块,该模块是一个固定深度的FIFO,但同时附加一个查找元素的端口,可以通过tag来检索出FIFO中的数据,因此本质上这是一个具有淘汰机制的Cache模块。

import Vector :: *;

interface PrioritySearchBuffer#(numeric type depth, type t_tag, type t_val);
    method Action enq(t_tag tag, t_val value);
    method ActionValue#(Maybe#(t_val)) search(t_tag tag);
endinterface

// A fifo like buffer, if buffer is full, new enq will lead to deq of the oldest element.
// if the same tags exist in the buffer, the newest enququed element will be returned.
module mkPrioritySearchBuffer(PrioritySearchBuffer#(depth, t_tag, t_val)) provisos (
    Bits#(t_tag, sz_tag),
    Bits#(t_val, sz_val),
    Eq#(t_tag),
    FShow#(t_tag),
    FShow#(t_val),
    FShow#(Tuple2#(t_tag, t_val))
);
    Vector#(depth, Reg#(Maybe#(Tuple2#(t_tag, t_val)))) bufferVec <- replicateM(mkReg(tagged Invalid));

    method Action enq(t_tag tag, t_val value);
        for (Integer idx=0; idx < valueOf(depth)-1; idx=idx+1) begin
            bufferVec[idx+1] <= bufferVec[idx];
        end
        bufferVec[0] <= tagged Valid tuple2(tag, value);
    endmethod

    method ActionValue#(Maybe#(t_val)) search(t_tag tag);
        Maybe#(t_val) ret = tagged Invalid;
        for (Integer idx=valueOf(depth)-1; idx >=0 ; idx=idx-1) begin
            if (bufferVec[idx] matchestagged Valid .readTuple) begin
                let {readTag, readVal} = readTuple;
                if (readTag == tag) begin
                    ret = tagged Valid readVal;
                end
            end
        end
        return ret;
    endmethod
endmodule

module mkTB(Empty);
    PrioritySearchBuffer#(10, Bit#(10), Bit#(10)) a <- mkPrioritySearchBuffer;
endmodule

首先观察开头的interface定义:

interface PrioritySearchBuffer#(numeric type depth, type t_tag, type t_val);
    method Action enq(t_tag tag, t_val value);
    method ActionValue#(Maybe#(t_val)) search(t_tag tag);
endinterface

这里,第1行通过在interface名称后面跟一个#的写法来使用多态特性,在#后面的括号中定义了depth、t\_tag、t\_val这3个类型变量(type variable)。类型变量表示未知(但特定)的类型,也就是说这个类型在不同的接口实例中可以有不同的值,但是对于某一个特定的接口实例,这个这个变量所代表的类型就是固定的。

在interface中定义的类型变量可以简单的理解为一个“占位符”,因为它并没有过多的约束,即我们不能在interface的定义中添加provisos关键字来对类型变量做出约束。但是,有一个简单的约束可以用在这里,即numeric前缀,它表示这个类型必须是一个代表数值的类型,也就是说这个我们可以使用valueOf()伪函数将该类型转换为一个Integer类型,而不带有numeric前缀的类型变量所代表的类型则不可以使用valueOf()进行转换。

再继续观察第2和第3行,这里引用了第1行定义的t\_tag和t\_val两个类型变量,再未来有module要使用这个接口时,类型变量这个“占位符”将被对应的真实类型所替代。

细心的读者可能会发现,在这个接口中定义的depth类型变量并没有被使用,这是为什么呢?先将其留作一个问题,看完下文就会知道答案。

再来观察下面使用该Interface的Module定义,这里我们只关心Module的接口部分以及一小部分用到类型参数的代码,将代码搬运如下:

module mkPrioritySearchBuffer(PrioritySearchBuffer#(depth, t_tag, t_val)) provisos (
    Bits#(t_tag, sz_tag),
    Bits#(t_val, sz_val),
    Eq#(t_tag),
    FShow#(t_tag),
    FShow#(t_val),
    FShow#(Tuple2#(t_tag, t_val))
);
    Vector#(depth, Reg#(Maybe#(Tuple2#(t_tag, t_val)))) bufferVec <- replicateM(mkReg(tagged Invalid));

    method Action enq(t_tag tag, t_val value);
        for (Integer idx=0; idx < valueOf(depth)-1; idx=idx+1) begin
        end
    endmethod
endmodule

在这段代码中,第1行定义了一个名为mkPrioritySearchBuffer的Module,其对外的接口类型为PrioritySearchBuffer#(depth, t\_tag, t\_val),很明显,这里又出现了类型参数depth、t\_tag和t\_val,这三个类型参数与interface定义中的三个类型参数之间通过先后顺序的位置来建立对应关系,也就是说,module定义中的这三个类型参数可以使用其他的名字,在上述示例中只是为了描述简洁而使用了同样的名称。

继续观察第1行的结尾,有一个名为provisos的关键字,这个关键字继承于Haskell这样的函数式编程语言(BSV的前身Bluespec Classic就是一个Haskell形式的语言),用于对类型变量进行约束。实际上,经常有人把BSV和Verilog的关系类比为Rust和C,如果读者熟悉Rust语言的话,则可以认为BSV中的provisos和Rust中通过where语句对泛型参数施加Trait约束是一样的,当然,我们并不假设读者了解Rust语言,所以接下来我们会详细介绍上述代码中2\~7行所表示的含义。

Provisos语句的作用是对各个类型变量进行约束,要求这些类型变量不能代表任意类型,而只能代表具有某些特征的类型。以上述第3行为例,Eq#(t\_tag)这个约束表示t\_tag这个类型变量所代表类型必须支持“相等比较”这个操作,换句话说,就是t\_tag这个类型变量代表的是一个未知的类型,这个类型只有在程序的其他地方被实例化时才会确定下来,但是,虽然我们不知道他的具体类型时什么,但这个类型必须具备可以进行“相等比较”这个操作的能力。通常来说,BSV中的基础数据类型,如Bit等,都是可以进行相等比较的,而通过struct定义的结构体则默认是不可比较的。

再来观察下面5\~7行的FShow约束,这个主要是为了在仿真过程中可以在$display中使用fshow函数来将一个信号友好的打印出来,如果不加入这两个约束,则该模块中将不能使用fshow来打印t\_tag和t\_val类型的数据。这里需要注意的是,provisos是不会自动传导的,以第7行为例,虽然t\_tag和t\_val都已经添加了FShow约束,但是由这两种类型构成的复合类型Tuple2#(t\_tag, t\_val)并不会自动具备FShow约束,仍然需要手工添加。

然后我们来观察上述代码的2\~3行,这里的Bits约束由两个类型,分别是t\_tag和sz\_tag,这里涉及到了provisos语句块中的一个特性:Provisos不仅可以为已经出现过的类型变量添加约束,还可以定义新的类型变量。以Bits#(t\_tag, sz\_tag)为例,如果按照代码从上向下阅读的顺序,t\_tag是我们已经定义好的一个类型变量(因为他出现在第1行的Interface定义中),而sz\_tag这个标识符还是第一次出现,所以这里本质上是新定义了一个叫做sz\_tag的类型变量,且约束sz\_tag是一个数值型的类型(numeric type),而且其取值是t\_tag的位宽。

为了加深读者的理解,这里再介绍一下上面实例代码中没有出现的Add#(n1, n2, n3)约束,这个约束需要传入三个类型变量,且这三个变量满足n1 + n2 = n3这个条件。一种常见的写法(以及在BSB编译器报错中经常可以看到的)是形如Add#(n1, a\_\_, n2)的约束,这里的a\_\_写法是一个约定俗成的占位符写法,由于BSV中用类型来表示的数值(numeric type)必须是非负的,表示这个值我不关心(在复杂的Provisos语句中可能还会看到更多的占位符,例如b\_\_, c\_\_等等),由于n1加上一个我不关心的非负数后等于n2,所以这里表达的意思是n2 >= n1。

接下来解决一下前面的遗留问题:为什么Interface的定义里出现了一个没有用到的depth类型变量呢?我们可以观察上述代码块(为了方便,将重要的几行代码摘抄到下面):

Vector#(depth, Reg#(Maybe#(Tuple2#(t_tag, t_val)))) bufferVec <- replicateM(mkReg(tagged Invalid));
for (Integer idx=0; idx < valueOf(depth)-1; idx=idx+1) begin

可以看到,上述代码第1行定义了一个Vector用于存储数据,而Vector的大小是由depth这个数值类型定义的;此外,上述第2行代码中编写了一个for循环,循环语句中也使用valueOf(depth)将depth这个numeric type所代表的数值转换成为Integer类型,以便for语句可以使用这个数值。因此,在Interface中定义的类型变量depth虽然没有在Interface定义中被使用到,但是却可以在module定义时被使用。

最后,我们再来演示一下这种带有provisos约束的类型如何使用,一个最简单的应用案例如下所示:

module mkTB(Empty);
    PrioritySearchBuffer#(10, Bit#(10), Bit#(10)) a <- mkPrioritySearchBuffer;
endmodule

上述代码在实例化a的时候需要明确指定a的类型为PrioritySearchBuffer#(10, Bit#(10), Bit#(10)),通过这种方式,BSV的编译器就可以将类型变量固定为一个具体的类型。上述代码中,由于Bit是一个内置的基础类型,因此他本身就被派生了FShow,所以上述代码编译并不会报错。但如果将上述代码改为下面的样子:

typedef struct {
    Bit#(10)      bar;
} Foo;

module mkTB(Empty);
    PrioritySearchBuffer#(10, Foo, Bit#(10)) a <- mkPrioritySearchBuffer;
endmodule

则会得到如下报错信息:

Error: "a.bsv", line 46, column 46: (T0031)
  The provisos for this expression could not be resolved because there are no
  instances of the form:
    FShow#(a::Foo)
  The proviso was implied by expressions at the following positions:
    "a.bsv", line 46, column 51
Error: "a.bsv", line 46, column 46: (T0031)
  The provisos for this expression could not be resolved because there are no
  instances of the form:
    Eq#(a::Foo)
  The proviso was implied by expressions at the following positions:
    "a.bsv", line 46, column 51
Error: "a.bsv", line 46, column 46: (T0031)
  The provisos for this expression could not be resolved because there are no
  instances of the form:
    Bits#(a::Foo, a__)
  The proviso was implied by expressions at the following positions:
    "a.bsv", line 46, column 51

关注上述报错的第2\~4行、8\~10行和14\~16行,可以看到编译器发现Foo类型不满足FShow、Eq和Bits这三个provisos约束,为了解决这个问题,我们需要向Foo类型添加必要的功能。由于Foo内部的每个成员都是满足FShow、Eq和Bits的,因此我们可以使用一个简单的派生方式,让Foo也成为FShow、Eq和Bits的,详细代码如下。但这里需要注意,如果某个复杂类型内部有任意成员不支持指定的功能,则无法使用自动派生,必须手写typeclass实现,这种情况较为复杂,本文不再介绍,感兴趣的读者可以阅读文章最后的参考材料中关于typeclass的介绍。

typedef struct {
    Bit#(10)      bar;
} Foo deriving(Bits, Eq, FShow);

通过上述介绍,我们已经涵盖了BSV中多态绝大多数的应用场景,希望可以帮助各位读者扫清学习BSV路上的一些障碍。关于详细了解BSV的语法,可以参考文章结尾给出参考资料中的《BluespecTM SystemVerilog Language Reference Guide》一书。

<u>参考资料:</u>

https://github.com/B-Lang-org/bsc/releases/download/2025.07/BSV_lang_ref_guide.pdf

https://github.com/open-rdma/open-rdma-rtl

<u>往期推荐</u>

Bluespec SytemVerilog 握手协议接口转换

达坦科技始终致力于打造高性能​AI+Cloud基础设施平台​,积极推动AI应用的落地。达坦科技通过软硬件深度融合的方式,提供​AI推理引擎和高性能网络​,为AI应用提供弹性、便利、经济的基础设施服务,以此满足不同行业客户对AI+Cloud的需求。

公众号​:达坦科技DatenLord

DatenLord官网​:

https://datenlord.github.io/zh-cn/

知乎账号:

https://www.zhihu.com/org/da-tan-ke-ji

B站​:

https://space.bilibili.com/2017027518

​邮箱:​info@datenlord.com

如果您有兴趣加入达坦科技Rust前沿技术交流群、硬件敏捷开发和验证方法学讨论群或AI Infra ​交流群,请添加小助手微信:DatenLord\_Tech

MySQL 更改了管理外键约束和级联操作的方式。从 MySQL 9.6 开始,外键验证和级联操作将由SQL层处理,而不是InnoDB存储引擎。这有助于改善变更跟踪、复制精度和数据一致性,使 MySQL 在 CDC 管道、混合数据库环境和分析工作负载中更加可靠。

 

长期以来,从事变更数据捕获(CDC)和复制工作的 MySQL 从业者都面临着一个很大的限制:外键由 InnoDB 存储引擎管理,级联更改未记录在二进制日志中。甲骨文技术顾问Prabakaran Thirumalai写道:

 

历史上,MySQL 在存储引擎层强制执行外键约束和级联操作……所有级联操作都是在 InnoDB 内部执行……因为 SQL 引擎和二进制日志不知道这些更改,所以下游系统(如 CDC 管道和分析平台)可能会错过它们。这可能导致数据不一致、分析不可靠和复制问题。

 

例如,SQL 层向 InnoDB 发出一个 DELETE 语句,InnoDB 可能会根据级联规则自动删除子表中的行。目前,这些额外的删除操作完全是在存储引擎内处理的,并未记录在二进制日志中。二进制日志仅捕获针对父表的原始 DELETE,而不捕获针对子表所做的更改。

图片来源:甲骨文博客

 

这一更改将在 MySQL 9.6.0 中实现。这是一个创新版本,在 1 月份作为 MySQL 9.x 创新系列的一部分提供。对于这一变化,社区的一个担忧是对性能的潜在影响。Thirumalai 补充道:

 

在针对常见的事务型工作负载所做的广泛的基准测试中,基于 SQL 引擎的外键强制执行和级联操作与 InnoDB 方法几乎相同。外键检查和级联操作的成本基本保持不变,吞吐量或延迟并没有观察到任何退化。

 

Hacker News上一个热门的帖子中,Index Hint 所有者和首席工程师 Evan Elias 写道:

 

很高兴甲骨文为此写了一篇博文,因为 MySQL 的文档中几乎完全没有提及此事……MySQL 9.6 的发布说明根本没有提到外键变化……作为一个专注于 MySQL 解决方案的独立软件供应商,老实说,我觉得这种情况非常令人担忧。我听说,甲骨文的一位高管对重新关注 MySQL 社区版做出了很多承诺……如果连基本的文档更新都不做,我们还能认真看待这些承诺吗?

 

这一变化发生在社区许多人质疑甲骨文对 MySQL 及其社区版所做的承诺之际。社区会议正在讨论 MySQL 的未来。为了扩展 MySQL 的能力,新的跟踪分叉已在开发当中。在题为“MySQL 9.6:外键级联操作终于进入二进制日志”的文章中,ReadySet 高级软件工程师Marcelo Altmann评论道:

 

对于那些多年来一直在解决级联可见性限制的 MySQL 用户——或者更糟,在下游系统出现数据不一致后才发现这个问题——MySQL 9.6 填补了一个重要的架构空白。二进制日志终于能够完整地讲述你的数据发生了什么。

 

Uber 高级软件工程师 Banty Kumar指出

 

如果甲骨文提供长期支持,那将是一个非常有说服力的升级理由。

 

根据公告,甲骨文团队计划未来在更多的存储引擎中提供更广泛的级联更改和外键强制执行支持。MySQL 9.6.0可以从MySQL社区服务器下载页面上下载。

 

声明:本文为 InfoQ 翻译,未经许可禁止转载。

 

原文链接:https://www.infoq.com/news/2026/02/mysql-foreign-keys/

Cisco NX-OS System Software - ACI 16.1(5e)M

适用于 ACI 模式下的 Cisco Nexus 9000 系列交换机系统软件

请访问原文链接:https://sysin.org/blog/cisco-aci-16/ 查看最新版。原创作品,转载请保留出处。

作者主页:sysin.org


Cisco ACI

Cisco NX-OS 网络操作系统软件

Cisco NX-OS 操作系统助力网络紧跟业务发展步伐。

NX-OS 网络操作系统为现代数据中心提供支持。

  • 架构灵活性

    架构灵活性

    NX-OS 助力数据中心随工作负载和应用的发展而不断扩展。

    • 借助 VXLAN EVPN 为可扩展工作负载提供支持
    • 通过多租户有效利用网络资源 (sysin)
    • 自由选用支持分段路由和 VXLAN 的 Overlay 网络技术
    • 借助 VXLAN 多站点实现灾难恢复和业务连续性
  • 操作简便性

    操作简便性

    NX-OS 具备可编程性,可将调配时间从几天缩短到几分钟,从而简化部署。

    • 与 Cisco DCNM 完全集成,实现全面管理
    • 通过行业标准 API 实现轻松配置
    • 与 DevOps 自动化工具完全集成
    • 支持原生 Docker 的简化工具
  • 端到端可视性

    端到端可视性

    数据和控制平面具有深度可视性,有助于保护数据中心,并针对问题快速进行补救。

    • 借助精细流和 ASIC 遥测,优化网络 (sysin)
    • 利用控制平面可视性和模型驱动的遥测,预防网络故障
    • 通过 MACSEC 加密,防御监听和网络攻击
    • 借助 802.1X 验证,保护终端和工作负载
    • 查看产品手册

借助 Cisco NX-OS 管理您的数据中心网络

  • 遥测技术助力网络运维

    建立可靠的数据中心网络 (sysin),防止停机并快速解决网络问题。

  • 分段路由

    使用 SRv6 架构构建可扩展的网络,从而降低网络运维的复杂性,并实现与核心 / WAN 的数据中心互联 (DCI)

  • 自由定制、安全可靠

    灵活、安全地管理工作负载。NX-OS 支持您根据业务需求定制网络,让 DevOps 在创新时只需几分钟即可打开交换矩阵。

  • 轻松扩展

    为媒体构建具有成本效益且易于扩展的生产应用和网络。

NX-OS System Software ACI

用于 Cisco Nexus 9000 系列交换机的 Cisco NX-OS 软件是一种数据中心专用操作系统 (sysin),其设计以性能、弹性、可扩展性、可管理性和可编程性为基础。它提供了强大而全面的功能集,可满足数据中心虚拟化和自动化的要求。

此版本仅适用于 ACI 模式下的 Cisco Nexus 9000 系列交换机。

Release 16.0(1) 文档介绍了 Cisco NX-OS 软件的功能、问题和限制。有关思科应用策略基础设施控制器 (APIC) 的功能、问题和限制,请参阅 思科应用策略基础设施控制器版本说明,版本 6.0(1)

新增功能

Cisco ACI 16.1(5) 是一个维护版本,主要通过关键缺陷修复和代码加固提升系统稳定性。该版本遵循 Cisco 的维护发布节奏,推荐给希望提高 ACI 部署可靠性与稳定性的用户。

重要支持增强

  • 在 N9K‑C9332D‑GX2B 平台上添加对 QDD‑2X100‑LR4‑S 光模块 的支持(仅下行)。
  • 在 N9K‑C93180YC‑FX3 交换机上允许将所有下行端口配置为上行端口 (sysin)。

已解决问题:包含多项错误修复,篇幅较长,详见官方文档。

下载地址

ImagesFile nameRelease DateSize
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(1f) 64 Bit imageaci-n9000-dk9.16.1.1f-cs_64.bin01-Aug-20242619.57 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(1f) 32 Bit imageaci-n9000-dk9.16.1.1f.bin01-Aug-20242492.02 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(2f) 64 Bit imageaci-n9000-dk9.16.1.2f-cs_64.bin05-Dec-20242619.75 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(2f) 32 Bit imageaci-n9000-dk9.16.1.2f.bin05-Dec-20242505.96 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(2g) 64 Bit imageaci-n9000-dk9.16.1.2g-cs_64.bin14-Dec-20242619.72 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(2g) 32 Bit imageaci-n9000-dk9.16.1.2g.bin14-Dec-20242505.95 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(3f) 64 Bit imageaci-n9000-dk9.16.1.3f-cs_64.bin04-Apr-20252657.55 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(3f) 32 Bit imageaci-n9000-dk9.16.1.3f.bin04-Apr-20252534.65 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(3g) 64 Bit imageaci-n9000-dk9.16.1.3g-cs_64.bin16-Jul-20252657.44 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(3g) 32 Bit imageaci-n9000-dk9.16.1.3g.bin16-Jul-20252534.70 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(4h) 64 Bit imageaci-n9000-dk9.16.1.4h-cs_64.bin13-Aug-20252690.33 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(4h) 32 Bit imageaci-n9000-dk9.16.1.4h.bin13-Aug-20252556.18 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(5e) 64 Bit imageaci-n9000-dk9.16.1.5e-cs_64.bin16-Dec-20252693.66 MB
Cisco Nexus 9000 Series ACI Mode Switch Software 16.1(5e) 32 Bit imageaci-n9000-dk9.16.1.5e.bin16-Dec-20252559.69 MB

Cisco Nexus 9000 Series ACI Mode Switch Software Release 16.1(5e)M | 16-Dec-2025
Cisco Nexus 9000 Series NX-OS Mode Switch Software Release 10.6(2)F
Cisco Application Policy Infrastructure Controller (APIC) Release 6.1(5e)M


Related Software: APIC Image for 6.0 Release

Related Software: ACI Simulator 6.0 Release


数据中心网络相关产品:

更多:Cisco 产品下载链接汇总

Windows 系统(官网原版纯净 系统 无任何捆绑的软件和广告) U盘安装优势:便携性与兼容性

U盘安装可随身携带,插入任何电脑即可使用,无需修改原有系统或安装软件。兼容多数硬件配置,尤其适合出差或临时使用不同设备的场景。

一、准备工作

  1. 制作PE启动盘:用U盘制作PE系统启动盘(参考「PE系统制作教程」),并将Windows系统镜像(文中示例为Win11)复制到U盘根目录。
  2. Widows11镜像:https://pan.quark.cn/s/9c10ebd2d652

二、设置U盘启动进入PE系统

  1. 开机按启动快捷键:开机后立即连续按电脑对应的启动快捷键(如F2/F12/Del等,不同品牌按键不同,建议自查电脑品牌快捷键)。
  2. 进入BIOS设置U盘优先启动

    • 在BIOS界面中找到「Boot」选项卡,将U盘(显示为USB/UEFI开头名称)设为第一启动项;
    • 保存设置并退出(具体BIOS操作可参考:各品牌电脑U盘启动设置方法)。
  3. 进入PE系统:保存设置后电脑自动重启,从U盘启动并进入PE系统界面。

三、格式化系统盘并准备安装

  1. 格式化C盘

    • 在PE系统中打开【此电脑】,右键点击系统C盘 → 选择【格式化】;
    • 勾选【快速格式化】→ 点击【开始】→ 确认【确定】→ 等待格式化完成(其他磁盘若需清空也可同理操作,注意备份数据)。

四、使用Windows安装器部署系统

  1. 打开Windows安装器:返回PE桌面,双击打开【Windows安装器】。
  2. 选择系统镜像与安装位置

    • 点击顶部【Windows Vista/7/8/10/2008/2012】→ 第一个【选择】→ 找到U盘中的系统镜像(如Win11镜像)→ 点击【打开】;
    • 第二个【选择】→ 选中系统C盘 → 点击【选择文件夹】。
  3. 检查引导驱动器

    • 若引导驱动器显示「三个绿色」或「一个黄色」,说明正常,跳至步骤4;
    • 若显示异常,重新点击第二个【选择】→ 尝试其他磁盘,直至显示正常。
  4. 选择系统版本:第三个【选择】→ 选中C盘 → 点击【选择文件夹】;在系统版本中选择「企业版」或「专业版」(稳定性较高)→ 点击【开始安装】→ 确认【确定】。
  5. 等待系统安装:安装进度条走完后,弹出提示框点击【取消】→ 重启电脑。

五、系统初始设置

  1. 完成系统配置

    • 重启后进入系统安装阶段,期间可能多次重启,耐心等待;
    • 选择地区【中国】→【是】;输入法选【微软拼音】→【是】;点击【跳过】;
    • 无网络时选【我没有Internet链接】→【继续执行受限设置】→【接受】;
    • 设置用户名(建议英文)→ 跳过密码设置 →【接受】;等待进入系统桌面。

六、系统配置与激活

  1. 安装解压工具

    • 打开U盘中的系统文件夹 → 双击【winrar-x64-550sc】→ 按提示完成安装(用于解压后续激活工具)。
  2. 关闭杀毒与防火墙:激活前需临时关闭系统杀毒软件和防火墙,避免误删激活工具。
  3. 激活系统

    • 解压U盘中的【windows激活工具】压缩包 → 右键【HEU_KMS_Activator_v19.6.0】→【以管理员身份运行】;
    • 点击【开始】→ 等待激活完成(提示“激活成功”后点击【确定】)。
  4. 显示桌面图标

    • 右键桌面→【个性化】→【主题】→【桌面图标设置】→ 勾选【计算机】【控制面板】→【确定】。
  5. 验证激活状态:右键【此电脑】→【属性】→【产品密钥和激活】,确认显示“已激活”。

七、安装驱动

联网后下载安装「鲁大师」等驱动工具,自动检测并安装缺失的硬件驱动(如显卡、声卡、网卡等),确保系统功能正常。



家里的网络如图所示。
0.电信宽带 2000M 。
1.电信给的 fttr 主路由没有 2.5G 口,光下联的 fttr 子路由上有 2.5G 口和一个 itv 口。
2.光猫到客厅,墙里只埋了一个网线。光猫到主卧,也是一个网线。
3.需要在客厅看 itv ,故调整了一下光猫后台和客厅的华硕路由器,实现了 itv 插在路由器上看 itv 的需求。(其中一个路由器必须放在客厅,否则客厅信号差)

问题:
1.由于客厅路由器需要接 itv ,只能设置为主路由模式,设置成 ap 模式就无法看 itv 了,所以目前这俩路由器无法 aimesh 。
2.由于 fttr 主路由没有 2.5G 口,加上客厅需要看 itv ,把光猫的 itv 通过 vlan 绑定了一下,无法映射到子路由上,所以客厅的路由器只有千兆。

需求:
1.俩华硕路由器能组网,不论是 aimesh 还是 ap 模式都可以。
2.可能要能看 itv 。
3.路由器连 2.5G 口跑满 2000M 宽带。

求各位大佬指点一下,有没有解决办法 orz

和香港同事开会总是听不太懂粤语,我用 Tauri 搓了个实时字幕工具 (macOS/Win)

在一家跨地区团队工作了一段时间后,我发现一个挺真实的痛点:会议语言有时候是粤语。

虽然大家也能切换普通话或英语,但很多时候讨论进入状态之后,自然就会变成粤语交流。其实我自己最近也刚好在学粤语,但如果你不是长期在粤语环境里,在工作场景下会遇到一种很微妙的情况:

不是完全听不懂,但经常只能听懂七八成。

特别是遇到一些香港本地表达、粤语里夹杂英文、多人同时快速讨论的时候。结果就是:会议能跟上大概意思,但细节容易漏掉。有时候大家已经开始讨论下一个问题了,我还在脑子里 compile 上一句到底说了什么。

久而久之觉得挺影响沟通效率,所以后来我就做了一个自己用的小工具:
把电脑里播放的粤语语音,实时变成中文字幕。

当然不止是粤语翻粤,英语、日语、韩语等都可以。

网站:https://fanyueai.com/


解决的其实就是一个很简单的场景

我做这个工具最初只有一个目标:开会的时候能实时看到字幕。

不管是 Zoom 、Google Meet 、Teams 还是网页版会议,只要电脑里有粤语语音,它就会:

  1. 实时监听系统级音频
  2. 实时识别粤语并翻译
  3. 用一个悬浮字幕条显示出来

当有人语速很快的时候,看一眼字幕基本就能跟上内容。因为是系统级音频监听,所以平时用来看港区 YouTube 、听粤语播客,或者看没字幕的生肉视频也都能顺带用上。

  • 主界面
    image.png

  • 实时字幕界面
    image.png


聊聊技术演进和踩坑

一开始我也想过做成某个会议软件的插件,但大家用的软件太杂了,最后决定直接做系统级监听。

客户端我个人比较反感那种动不动就吃掉几个 GB 内存的 Electron 巨兽,所以:

  • 技术栈: 选了 Tauri 来打包,客户端做得很轻(大概二十多 MB ),内存和 CPU 占用基本可以忽略不计。
  • UI 设计: 没有花里胡哨的主题切换,直接做成了类似苹果原生的深空灰暗色调,主打一个开会时悬浮在屏幕边缘“不喧宾夺主”。

关于核心的翻译延迟问题,其实经历过一次重构:

一开始的 V1 版本,我图省事直接接了阿里云的自动识别与翻译 API 。调用一个接口就能出结果,开发确实快,但效果很感人:机器味重、识别不准,而且延迟太高,开会用起来有明显的割裂感。

后来痛定思痛改了架构。最近刚好发现 Google 新出了 gemini-3.1-flash-lite 模型,测试了一下发现用来做实时翻译简直是神器:速度极快,翻译的人话味道很浓,最关键的是支持自定义提示词(可以喂给它一些团队开会常用的 IT 缩写和黑话)。

所以现在的版本改成了:实时语音识别 + 实时流式调用大模型 API 进行翻译。目前把整体的延迟压在了开会完全可接受的范围内。


如果你刚好有类似场景

目前打包了 macOSWindows 版本( Windows 没测太多老系统,目前 Win10 及以上可以正常跑)。

如果你也是在香港工作的内地开发者,或者有远程和港区团队合作的需求,可以试试这个工具:

[https://fanyueai.com/?ref=BRSLH8JQ](通过邀请码注册即赠 120 分钟时长。点击体验: https://fanyueai.com/?ref=BRSLH8JQ)

给刚注册的新用户默认塞了 15 天体验和 90 分钟的翻译时长,基本足够大家开几次会,或者看个视频体验一下效果了。

我自己也是一边用一边慢慢迭代,如果大家体验后觉得有什么 Bug ,或者在技术实现上(特别是跨平台音频流处理这块)有更好的思路,欢迎在帖子里吐槽交流,我下班后去修。

达坦科技始终致力于打造高性能AI+Cloud基础设施平台,积极推动AI应用的落地。达坦科技通过软硬件深度融合的方式,提供AI推理引擎和高性能网络,为AI应用提供弹性、便利、经济的基础设施服务,以此满足不同行业客户对AI+Cloud的需求。在本周的前沿技术分享中,我们邀请到了达坦科技open-rdma项目负责人米明恒,来为大家分享开源硬件:400G RDMA网卡项目open-rdma及其快速开发环境搭建介绍。

01、演讲题目

开源硬件:400G RDMA网卡项目open-rdma及其快速开发环境搭建介绍

02、演讲时间

2026年3月10日周二晚上20:00

03、演讲人

米明恒

琶洲实验室(黄埔)副研究员,达坦科技open-rdma项目负责人

04、 引言

在AI大模型积极拥抱开源的当下,AI基础设施在硬件领域仍显保守:以计算卡和网卡为代表的硬件对于相关从业者来说仍是黑箱。为了打破这一现状,达坦科技携手琶洲实验室(黄埔)发起了开源RDMA项目:open-rdma。该项目指在提供开源的、基于FPGA的RDMA网卡硬件框架和基于Rust语言的用户态协议栈,摆脱传统RDMA网卡的历史包袱,为学术创新和前沿工程探索提供基础平台。

05、内容简介

本次分享主要分为两个部分,第一部分介绍open-rdma项目的概况,包括RDMA技术的简介、RDMA的历史包袱、open-rdma项目的核心设计理念以及要解决的问题等;第二部分将live-demo开箱即用的docker开发环境,演示open-rdma硬件仿真器与用户态驱动程序联合仿真运行的完整过程,帮助对本项目感兴趣的同学快速上手。

06、直播预约

欢迎您预约直播,或者登陆腾讯会议观看直播:

会议号:501-993-072

达坦科技始终致力于打造高性能AI+Cloud基础设施平台,积极推动AI应用的落地。达坦科技通过软硬件深度融合的方式,提供AI推理引擎和高性能网络,为AI应用提供弹性、便利、经济的基础设施服务,以此满足不同行业客户对AI+Cloud的需求。

公众号:达坦科技DatenLord

DatenLord官网:

https://datenlord.github.io/zh-cn/

知乎账号:

https://www.zhihu.com/org/da-tan-ke-ji

B站:

https://space.bilibili.com/2017027518

邮箱:info@datenlord.com

如果您有兴趣加入达坦科技Rust前沿技术交流群、硬件敏捷开发和验证方法学讨论群或AI Infra 交流群,请添加小助手微信:DatenLord_Tech

写了个小东西:看到和大模型交互过程中 LLM thinking 这部分英语语料很贴合实际工作场景
想要好好把这部分英语基础补习补习,所以写了个小项目。

  1. Cursor Hooks 抓 Agent 的 thinking + 会话事件
  2. 本地 JSONL 落盘
  3. Next 看板做可视化。

Image

Image

提问数、工具调用、会话时长、Thinking 语料都能看,还能当英语阅读材料用。

https://github.com/my19940202/cursor-dashboard/tree/main

📰 今日新闻精选:

  • 2025 年中国人均预期寿命达 79.25 岁,比 2020 年提高了 1.32 岁,平均每年增长 0.26 岁
  • 发改委:推动 3 岁以下婴幼儿入托率提高 6 个百分点,养老机构护理型床位占比达到 73%
  • 人社部:今年高校毕业生预计 1270 万人,将开展大规模就业见习和能力实训
  • 代表樊芸建议:未来 5 年逐渐取消公摊面积;代表霍启刚建议:降低中等收入群体税率
  • 卫健委建议:成年男性腰围一般控制在 90 厘米以内,女性一般控制在 85 厘米以内
  • 教育部:"课间 15 分钟" 以及 "每天体育 2 小时" 已在所有省份全部部署推行
  • 雷军公开预判:AI 时代来临,未来每周或仅需工作 3 天,每天只要工作 2 小时
  • 乒乓球澳门世界杯票价公布:最低 80 元,VIP 套餐高达 4580 元
  • 2 月末我国外汇储备规模超 3.4 万亿美元,较 1 月末升 0.85%;央行连续 16 个月增持黄金节奏稳健
  • 安世荷兰批量禁用安世中国员工办公软件,商务部回应:如再次引发全球半导体产供链危机,荷方须承担全部责任
  • 日媒:日本首次在冲绳部署新型反潜巡逻机,强化西南方向军事部署动作频频
  • 印媒:美国发布 30 天豁免令,允许印度暂时购买俄石油,印度回应:印方购买俄石油从不需要得到任何国家许可
  • 外媒:伊朗发射导弹夜袭 “林肯” 号航母;美官员称 “福特” 号航母已从东地中海调往红海
  • 外媒:伊朗总统向邻国表示歉意,称不再攻击邻国,也不发射导弹
  • 外媒:伊朗称强力打击造成美第五舰队 21 人死亡,阿联酋美军基地 200 人死伤;特朗普称考虑扩大打击范围,伊朗或遭受非常沉重打击

📅 今日信息:

  • 公历:2026-03-08 星期日 (妇女节) 双鱼座
  • 农历:二〇二六年正月二十
  • 公历法定节日:妇女节
  • 下一节气:2026-03-20,春分
  • 今年进度:18.36%(已过 67 天,剩余 297 天)

🌟 历史上的今天

  • 1917 年:俄国二月革命爆发,沙皇尼古拉二世退位,标志着罗曼诺夫王朝的终结,为十月革命铺平了道路。
  • 1975 年:联合国首次庆祝国际妇女节,旨在促进性别平等和妇女权益,全球各地举行纪念活动。

今日小记

今天是 2026 年 3 月 8 日,国际妇女节。阳光透过窗户洒在书桌上,提醒我们关注那些为平等奋斗的人们。或许可以给身边的女性朋友或家人发条消息,说声谢谢或分享一个微笑。

轻松一刻

如果今天是个颜色,它可能是柔和的紫色——象征尊严和创造力。试试在午餐时加个水果,比如草莓,给自己一点小确幸。

新购入爱普生 L8168 一体机,替换原来佳能的机器。无线打印一切正常,但是从打印机触摸屏上扫描到电脑除了问题,各种搜不到家里两台电脑。捣鼓了两天,做了各种交叉测试。发现是中兴晴天 BE5100 无线 MESH 路由问题。关键是,他设置界面非常简陋……完全没有认可可以调整设置的地方。

家里拓补也相对简单,就是 RB5009-主交换机-两台晴天 BE5100 ,开启有线桥接模式,全部有线回程到主交换机。漫游什么一切正常,就是这个扫描有问题。原来佳能的扫描是正常的。

AI 推测原因:

ZTE AP 在桥接模式下:

没有完整转发某些 UDP broadcast / discovery 流量。

而 Xiaomi AP 的 有线中继模式是标准 Layer2 bridge ,所以没有问题。

大家有没有啥想法……我也是醉了。

交叉测试结果如下:
测试 1
打印机:中兴 AP-1
电脑 A:有线连接
电脑 B:无线连接中兴 AP-2
结果:打印机扫不到任何电脑

测试 2:
打印机:中兴 AP-2
电脑 A:有线连接
电脑 B:无线连接中兴 AP-2
结果:打印机扫到电脑 B

测试 3:
打印机:有线连接
电脑 A:有线连接
电脑 B:无线连接中兴 AP-2
结果:打印机扫到电脑 A

测试 4:
打印机:中兴 AP-1
电脑 A:有线连接
电脑 B:无线连接中兴 AP-1
结果:打印机扫到电脑 B

补充测试:
打印机:小米 AP-1
电脑 A:有线连接
电脑 B:无线连接中兴 AP-1
小米 AP-1WAN 口连入主交换机,WAN 口设置有线中继模式。
结果:打印机能扫到电脑 A

手机 iphone 15 plus ,车 26 年卡宴,用的无线连接同时无线充电
车导航,音乐都挺流畅,就是手机微信来了信息,用手机打开微信特别卡。
是我手机太老了吗,还是连上 carplay 手机就会很卡

如题有一些微信数据库解密的项目挺感兴趣的,就 fork 了,但是听说这类仓库经常被腾讯 dcma 然后就会被关闭,因为 Fork 的仓库是只能设置为公开,不能修改为私有的,所以想问一下这些 Fork 出来的仓库会受影响吗?

1、家庭的第一性原理是经济,不是感情

2、职场的第一性原理是价值,不是努力

3、教育的第一性原理是培养能力,不是分数

4、健康的第一性原理是自律,不是医疗

5、创业的第一性原理是市场需求,不是个人喜好

6、投资的第一性原理是风险控制,不是高回报

7、养老如第一性原理是提前规划,不是依赖子女

8、成长的第一性原理是反思,而不是经历

9、爱情的第一性原理是筛选,不是死磕

10、社交的第一性原理是品质,而非数量

11、旅行的第一性原理是体验,并非打卡

12、阅读的第一性原理是思考,而非浏览

13、时间管理的第一性原理是优先级,不是计划表

14、沟通的第一性原理是理解,不是说服

15、理财的第一性原理是现金流,不是投资收益

16、情绪管理的第一性原理是接纳,而不是对抗

17、人际关系的第一性原理是互利,不是讨好

18、学习的第一性原理是实践,不是记忆