ARTS 1018: 字符计数判断异位词、局部做对仍会增加维护负担与用 AI 也要理解自己在做什么

简介: 每周完成一个 ARTS: 至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tips、Share 简称 ARTS)## AlgorithmLeetCode https://leetcode.cn/problems/valid-anagram/description/?en

每周完成一个 ARTS: 至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tips、Share 简称 ARTS)

Algorithm

LeetCode https://leetcode.cn/problems/valid-anagram/description/?envType=study-plan-v2&envId=selected-coding-interview

image-20261018160438176

这道题目相对简单一些:

1、可以通过转化成 map,对应的 map 对应的 char 出现了几次。这样方便比较某一个字母出现的次数

2、在设置值的时候可以用 Map 的 merge 方法,这个第三个参数 (t,u) ,这个 t 是 map 里面原来的值,这个 u 是 merge 方法后第二个参数的值。

class Solution {
   
    public boolean isAnagram(String s, String t) {
   
        HashMap<Character, Integer> sMap = toMap(s);
        HashMap<Character, Integer> tMap = toMap(t);
        if (sMap.size() != tMap.size()) {
   
            return false;
        }
        for (Map.Entry<Character, Integer> entry : sMap.entrySet()) {
   
            Character key = entry.getKey();
            if (!Objects.equals(tMap.get(key), entry.getValue())) {
   
                return false;
            }
        }
        return true;
    }

    private HashMap<Character, Integer> toMap(String s) {
   
        HashMap<Character, Integer> map = new HashMap<>();
        for (Character c : s.toCharArray()) {
   
          map.merge(c, 1, (t, u) -> t + 1);
        }
        return map;
    }
}

Review

文章:How the Claude Code team does code review

Anthropic 分享了 Claude Code 团队的代码审查流程。随着 AI 生成的代码越来越多,人工逐行审查开始跟不上。他们把更多常规检查交给 AI,同时关注回滚和事故有没有增加:如果省下来的审查时间,最后都花在了修 Bug 上,那就没有真正提高效率。

结合网友的评论,分享一下:

1、提交 PR 前,先让 Agent 跑测试、构建或检查页面,拿出实际结果,再用全新上下文的 Agent 检查 diff。项目约定放在 CLAUDE.md,审查重点放在 REVIEW.md,发现问题要指出文件和行号。

不过,把更多代码交给 AI 审查之后,人通过什么方式了解代码,也需要考虑。评论里有人担心团队越来越依赖 AI 的解释,也有人认为,大型项目本来就没人掌握所有细节,按需生成模块说明和图示很有用。我感觉,可以让 AI 帮忙梳理,但涉及自己负责的改动,还是要沿着具体输入和执行路径走一遍,知道测试覆盖了什么、还漏了什么。

2、人工审查按风险分配。符合条件的可信作者提交低风险改动,可以在自动检查通过后合并;风险更高的改动需要一到两人批准,AI 的批准不能代替这里要求的人类批准。发起改动的人仍然要对结果负责。

这里有条评论很值得留意:AI 可能不断新增实现,却没有复用已有逻辑。每个 PR 单独看都能工作,等公共需求变化时,才发现多个地方都要修改。我觉得这也是人需要参与判断的地方。比如新增缓存,除了看读写是否正确,还要看看项目里有没有类似机制,是否值得再维护一套。局部功能做对了,仍然可能给整个项目增加维护负担。

3、审查的轮数也要控制。他们遇到过 Agent 一夜互相审查、修改超过 50 轮的情况,后来增加轮数限制,几轮之后只看新增 diff,并且不重复报告已经提出的问题。

这也对应了评论里对成本的提醒:有读者把这类经验比作 Google 的基础设施文章,模型公司的资源条件和普通团队不同,多 Agent、多轮审查不能直接照搬。对自己的项目来说,我会更关心每轮究竟发现了什么,以及这些问题是否值得再改一遍。反复修改却没有明确收益,就应该停下来重新看方案。

4、审查工具本身也需要验证。他们把历史事故和回滚整理成评测集,检查 reviewer 能否发现已知问题,同时用没有已知问题的 PR 检查误报,上线后还有灰度和快速回滚。

Tips

1、一个任务重复了几次之后,可以有意思的让 AI 帮忙整合成 skills。

2、代码中的一些 AI 看来「不合理」的架构或者其他问题,如果不想修改的话尽量自己单独写一下,防止 AI 每一次都想「反向优化」。

Share

原文:https://lore.kernel.org/lkml/CAHk-=whTs09_ozN+e09GU68N1wPP56MUzDjrg9rnKxQUa0A_4Q@mail.gmail.com/?utm_source=chatgpt.com

Linus 反对用「某件事不准使用 AI」来规定开发方式,同时强调:贡献者要尽力做好工作,并且理解自己在做什么。

他的反问很有意思:如果一定要靠不用工具证明能力,那是不是也该禁止编译器,要求大家手写汇编?是不是连编辑器也不能用,免得退格键掩盖了打字错误?他借这个类比说明,使用什么工具,并不能直接说明一个人是否理解自己的工作。

我的理解是,这个观点落到 vibe coding 上,关键就在「理解」两个字。让 AI 帮忙实现一个想法之后,自己还得知道它为什么这样实现、在哪些条件下成立,以及哪里可能出问题。仅凭「页面能打开」「测试全绿」,还不足以回答这些问题。

比如让 AI 写一个文件清理脚本,最容易验证的是它能不能删掉目标文件。但我还会关心:路径为空怎么办,匹配范围会不会扩大,遇到符号链接怎么处理?这些问题如果自己都没想过,就很难判断 AI 给出的实现是否符合真正的需求。

放到前面的 code review 话题里也是一样。AI 可以帮忙解释陌生模块、寻找问题、补充验证,但我需要知道这些检查覆盖到了哪里。尤其是自己不熟悉的代码,应该把改动拆小,沿着输入到输出的过程看明白,再决定是否接受。

可以把更多编写工作交给 AI,理解和判断仍然需要自己参与。 这样节省下来的时间,才有机会用来想清楚需求和实现,而不是等出问题之后再从头认识自己的代码。

目录
相关文章
|
20小时前
|
人工智能
Codex 新增2个非常好用的命令,真香
Codex CLI 新增 `/copy`(一键复制AI完整回复,告别鼠标拖选)和 `/clear`(双模清屏:保留上下文或开启新对话),解决终端复制易断、清屏丢历史等高频痛点,打磨交互细节,让AI编程更顺滑。
|
1天前
|
人工智能 运维 监控
勒索组织冒充服务台社工攻击的入侵机理与防御研究
本文剖析勒索组织冒充IT服务台的新型社工攻击:利用语音钓鱼、外部Teams仿冒及设备代码钓鱼,诱骗员工授权认证,绕过多因素认证建立持久后门。攻击隐蔽性强、检测难度大,需构建流程规范、身份策略、行为审计与人员培训四层防御体系。(239字)
30 1
|
1天前
|
存储 安全 算法
端到端加密通信应用的社会工程学攻击研究 —— 基于 Signal 定向钓鱼事件分析
本文分析捷克NÚKIB披露的针对Signal用户的定向钓鱼攻击,揭示攻击者未破解端到端加密,而是利用社会工程学诱导用户主动绑定恶意设备、泄露PIN码,实现账号劫持。文章剖析“密码学安全”与“用户行为安全”的割裂,提出用户防护、产品优化、情报协同、能力建设四维防御路径。(239字)
24 0
|
1天前
|
前端开发 Java BI
开源推荐:jquick-pdf——零学习成本的 Java PDF 生成开源库
jquick-pdf 是面向 Java 后端的轻量级 PDF 生成库,采用类 HTML 模板 + 数据绑定模式,零配置起步,仅需一个依赖即可导出结构化文档(如报表、订单、合同)。模板负责样式与结构,Java 负责数据,内置中文字体与分页支持,模块按需引入,兼顾简洁性与可维护性。
|
19小时前
|
弹性计算 运维 测试技术
容器化改造实践:千里达票务系统在阿里云 ACK 上的部署与弹性伸缩
随着景区数量增加,千里达票务系统模块越来越多,传统一台ECS装全套的方式迭代慢、扩容笨重。团队将核心服务迁移到阿里云ACK容器服务,代码→Docker镜像(ACR)→Deployment→HPA弹性(2~20副本)→Ingress接入。附Deployment与HPA YAML示例,踩坑复盘(优雅停机、资源配额、镜像拉取慢、有状态服务误容器化)。应用层实现秒级扩容、分钟级发布,为多云部署与灰度发布打下基础。
37 0
|
1天前
|
API 开发工具 索引
Elasticsearch集群异常状态(RED、YELLOW)原因分析
Elasticsearch集群异常状态(RED、YELLOW)原因分析
33 1
Elasticsearch集群异常状态(RED、YELLOW)原因分析
|
1天前
|
SQL 人工智能 安全
当Agent开始“干活”,数据流通的规则必须重写
2026年,企业级AI核心突破在于Agent真正“干活”:自主调用系统、执行任务。其能力瓶颈不在模型,而在实时、精准、可信的数据供给。阿里云联合国家新材料大数据中心推出Multi-Agent可信数据空间,实现秒级找数(准确率超90%)、安全用数、AI定价;同步推进Agentic Cloud与数据产权登记,构建AI原生数据流通基础设施。
|
1天前
|
人工智能 小程序 测试技术
让 AI 当测试员:对着正式环境把两个端点了一遍,修了 15 个问题
本文介绍作者如何用Claude Code替代人工,完成拾阶App与小程序的全功能端到端测试:通过模拟器+自动化工具逐页点击、截图比对、跨端校验,在正式环境发现15个“代码正确但组合出错”的真实问题,如界面截断、数据分页缺失、消息对象错配等,并总结AI测试的边界与人机协作最佳实践。(239字)
|
1天前
|
人工智能 Kubernetes Serverless
API 网关:把一堆微服务收口成一个入口,收的到底是什么
拆微服务很痛快,拆完才发现麻烦在后头
|
1天前
|
机器学习/深度学习 人工智能 安全
字节 TRAE 不再只赌一个补丁:AI写代码的下一场竞争,可能是会不会选答案
TRAE Agent创新在于“多候选补丁+选择机制”,而非单次生成。测试团队需聚焦选择器的稳定性、多样性、过滤可信度与独立验证能力,将业务不变量设为一票否决红线。质量保障重心正从“验答案”转向“管选择”。