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,理解和判断仍然需要自己参与。 这样节省下来的时间,才有机会用来想清楚需求和实现,而不是等出问题之后再从头认识自己的代码。

目录
相关文章
|
26天前
|
缓存 边缘计算 监控
阿里云 CDN 内容分发网络服务租用价格表(一年 / 按月 / 按小时报价明细)
阿里云CDN通过就近分发缩短内容传输距离,显著改善访问速度。计费上以按量后付费为弹性补充、资源包预付费为长期优惠,流量与带宽两种计费模式按业务特征选择。HTTPS请求数、动态请求数等增值资源按需选购。做预算测算时,将流量/带宽费用与HTTPS、动态请求费用一并计入,监控用量、优化缓存命中率,在保障访问体验的同时有效控制CDN成本。
258 1
|
26天前
|
弹性计算 运维 安全
阿里云数字证书管理服务(原SSL证书)租用价格表(一年 / 按月 / 按小时报价明细)
阿里云数字证书管理服务,覆盖从个人站点到大型企业的HTTPS加密需求,证书主体以1/2/3年预付费订阅为主,托管、域名风险巡检增值服务支持按月订阅。选型核心是根据业务场景选择DV/OV/EV证书,区分单域名、通配符、多域名。预算核算时,除证书本身订阅费用,还要评估是否需要托管、风险巡检、部署次数包等增值服务。借助CAS CLI可以实现证书批量管理、自动化巡检,提前预警到期证书,保障网站HTTPS长期稳定安全。
174 0
|
25天前
|
Rust IDE 开发工具
Zed 新特性:这次抄了IDEA,抄的很好
Zed新版本上线「选中即搜索」功能:终端或编辑器中选中文件名/路径,按快捷键唤起文件查找,搜索框自动填充选中文本,一键跳转,告别复制粘贴。对标JetBrains体验,细节处见真章。(238字)
122 0
|
25天前
|
人工智能
Codex 新增2个非常好用的命令,真香
Codex CLI 新增 `/copy`(一键复制AI完整回复,告别鼠标拖选)和 `/clear`(双模清屏:保留上下文或开启新对话),解决终端复制易断、清屏丢历史等高频痛点,打磨交互细节,让AI编程更顺滑。
137 0
|
26天前
|
人工智能 算法 程序员
以前创业的壁垒是你会不会做,2026年的壁垒是有没有人用你——2个大学生把训练视频做成App,半年赚50万
本文是「OPC一人公司通关手册」第37篇,拆解两个不会写代码的大学生如何用AI无代码工具,2周打造田径跑姿分析App:上传视频→AI逐帧诊断→给出改进建议。凭15万田径圈粉丝“预销售”,上线首月入7万,半年总收入约50万元,4万用户,4.7分好评。核心启示:受众先于产品、内容即冷启动、定价即产品、长尾SEO胜爆款词。(239字)
|
26天前
|
监控 IDE 安全
阿里云 Qoder CN 服务订阅租用价格表(一年/按月/按小时报价明细)
个人日常开发优先Pro套餐;经常做大型工程重构、代码批量迁移,选择Pro+。长期持续开发直接选择年付订阅,拿到折扣降低年均成本。团队根据实际开发人数采购席位,不要过量采购。企业私有化部署场景,提前评估50席位的最低采购门槛,合理规划预算。日常开发定期查看Credits消耗,监控编码智能体任务资源使用,及时采购资源包,避免任务中途中断。
227 0
|
26天前
|
弹性计算 运维 小程序
阿里云轻量应用云服务器租用价格表(一年/按月/按小时报价明细)
阿里云轻量应用服务器 适合个人建站、测试项目、小程序后端和中小型业务,价格最低、运维最省心;如果业务需要稳定独享带宽或高并发承载,建议升级到ECS标准实例。省钱的核心不是单纯比价,而是让配置与业务负载匹配,再叠加新用户权益、优惠券、大促节点和年付折扣。
301 0
|
26天前
|
运维 Java 编译器
【保姆级】JDK下载+安装+环境变量配置教程(所有版本汇总,2026最新版)
本文详解JDK安装与配置,以最新LTS版JDK 25为例,涵盖版本选择(优先LTS)、官网下载、图文安装步骤、环境变量配置(Path添加bin路径)及基础编译运行验证,新手可快速上手。
1291 1
|
26天前
|
SQL 人工智能 安全
当Agent开始“干活”,数据流通的规则必须重写
2026年,企业级AI核心突破在于Agent真正“干活”:自主调用系统、执行任务。其能力瓶颈不在模型,而在实时、精准、可信的数据供给。阿里云联合国家新材料大数据中心推出Multi-Agent可信数据空间,实现秒级找数(准确率超90%)、安全用数、AI定价;同步推进Agentic Cloud与数据产权登记,构建AI原生数据流通基础设施。
|
25天前
|
人工智能 开发工具 git
Claude Code这三个高频快捷键,让你少走很多弯路
Claude Code快捷键避坑指南:Ctrl+S暂存提示词(如git stash),Ctrl+Y恢复误删内容,Ctrl+_撤销输入框编辑。三招解决暂存、误删、改乱等高频卡点,提升AI编程效率。(238字)
105 1