ARTS 第 1 周

 ARTS

  1. Algorithm 每周至少做一个 Leetcode 的算法题。主要是为了编程训练和学习。
  2. Review 每周阅读并点评至少一篇英文技术文章。主要是为了学习英文。
  3. Tip 每周学习至少一个技术技巧。主要是为了总结和归纳你在日常工作中所遇到的知识点。
  4. Share 每周分享一篇有观点和思考的技术文章。主要是为了建立你的影响力,能够输出价值观。

1 Algorithm


 问题:22 括号生成 【中等】

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

例如,给出 = 3,生成结果为:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

代码:

public class 括号生成_22 {

    public List<String> generateParenthesis(int n) {
        List<String> list = new ArrayList<>();
        String result = "";
        int left = 0;
        int right = 0;
        generateOneByOne(list, result, n, left, right);
        return list;
    }

    /**
     * @param list   存储所有正确的结果
     * @param result 用于表示一个正确的结果
     * @param n      n 对括号
     * @param left   已使用的左括号数
     * @param right  已使用的右括号数
     */
    private void generateOneByOne(List<String> list, String result, int n, int left, int right) {
        // 左右括号都用完了
        if (left == n && right == n) {
            list.add(result);
            return;
        }
        // 只要左括号还没有用完, 它是什么时候都可以添加的, 这是合法的
        if (left < n) {
            generateOneByOne(list, result + "(", n, left + 1, right);
        }
        // 只有左括号比右括号多的时候,往后面添加右括号才算合法的
        if (left > right) {
            generateOneByOne(list, result + ")", n, left, right + 1);
        }
    }
}

2 Review 


原文:What I learned from doing 1000 code reviews

点评:

本文作者根据他在领英做的大量代码审查工作的基础之上,给出了一些关于代码审查的建议:

1 Throw an exception when things go wrong

错误的案例如下:

List<String> getSearchResults(...) {
  try {
    List<String> results = // make REST call to search service
    return results;
  } catch (RemoteInvocationException e) {
    return Collections.emptyList();
  }
}

上面的例子,捕获了异常并返回了一个空的结果, 这样会使得外部调用者以为程序正确执行了,且其结果就应该是空的。但这可能使得我们掩盖了程序的一个 bug,且难以察觉。

所以,当程序执行过程中出现错误时,应该尽可能地抛出异常,以使得我们能够尽早地发现并修复它。

Use the most specific type possible

void doOperation(String opType, Data data); 
// where opType is "insert", "append", or "delete", this should have clearly been an enum

应该尽可能地指明类型。比如方法的参数可能包含多种类型或含义,那么我们可以使用枚举来替换 String。

Use Optionals instead of nulls

public Coffee badGet() {
   // ...
}
    
public Optional<Coffee> goodGet() {
   // ...  
}

第一个方法可能返回一个 null, 这很容易使得调用者抛出空指针异常。但我们使用 Optional 作为返回值,我们就可以直接去使用 Optional 的方法去检查是否包含值。

3 Tip 


使用 AOP 来统计方法的执行时间。

 4 Share 


分享一篇 Docker 入门的文章 

内容概要:《中文大模型基准测评2025年上半年报告》由SuperCLUE团队发布,详细评估了2025年上半年中文大模型的发展状况。报告涵盖了大模型的关键进展、国内外大模型全景图及差距、专项测评基准介绍等。通过SuperCLUE基准,对45个国内外代表性大模型进行了六大任务(数学推理、科学推理、代码生成、智能体Agent、精确指令遵循、幻觉控制)的综合测评。结果显示,海外模型如o3、o4-mini(high)在推理任务上表现突出,而国内模型如Doubao-Seed-1.6-thinking-250715在智能体Agent和幻觉控制任务上表现出色。此外,报告还分析了模型性价比、效能区间分布,并对代表性模型如Doubao-Seed-1.6-thinking-250715、DeepSeek-R1-0528、GLM-4.5等进行了详细介绍。整体来看,国内大模型在特定任务上已接近国际顶尖水平,但在综合推理能力上仍有提升空间。 适用人群:对大模型技术感兴趣的科研人员、工程师、产品经理及投资者。 使用场景及目标:①了解2025年上半年中文大模型的发展现状与趋势;②评估国内外大模型在不同任务上的表现差异;③为技术选型和性能优化提供参考依据。 其他说明:报告提供了详细的测评方法、评分标准及结果分析,确保评估的科学性和公正性。此外,SuperCLUE团队还发布了多个专项测评基准,涵盖多模态、文本、推理等多个领域,为业界提供全面的测评服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值