ARTS 0913: 双栈互补实现队列、CIDR 聚合化解路由膨胀与 AI 作弊串通绝非偶然 Bug

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

Algorithm

https://leetcode.cn/problems/implement-queue-using-stacks/description/?envType=study-plan-v2&envId=selected-coding-interview

image-20260913200759983

这道题目要求使用两个栈并且只用基本操作也就是 peek pop push empty 这几个

需要注意:

1、这两栈是互补关系(可以看后面的图),我一开始以为这个 stackS 只是一个备份,是 stackF 的反向备份

2、判断是否为空的时候,不要用 peek 因为遇到 null 的时候会抛出异常 EmptyStackException,可以使用 empty 判断

3、一个算法大概 10 分钟左右解决不了,就可以叫外援了(AI)

完整的流程:

f6ac590ad5a5ec6c4e65280a36b2bb15

代码:

▼
java
复制代码
class MyQueue { // 用于接收新加入的元素 private Stack<Integer> stackF = new Stack<>(); // 用于执行 pop / peek private Stack<Integer> stackS = new Stack<>(); public MyQueue() { } public void push(int x) { stackF.push(x); } public int pop() { // stackS 有数据,直接从 stackS 操作 if (stackS.isEmpty()) { // stackS 为空时,把 stackF 整体翻转 while (!stackF.isEmpty()) { stackS.push(stackF.pop()); } } return stackS.pop(); } public int peek() { // stackS 有数据,直接查看队头 if (stackS.isEmpty()) { // stackS 为空时,把 stackF 整体翻转 while (!stackF.isEmpty()) { stackS.push(stackF.pop()); } } return stackS.peek(); } public boolean empty() { // 两个栈都为空,队列才为空 return stackF.isEmpty() && stackS.isEmpty(); } }

Review

继续看《TCP/IP 详解》,大概学到关于 CIDR 和聚合一些问题:

1、到 94 年,一半以上的 B 类地址被分配一半

2、32 位 IPv4 地址不住于应对 21 世纪的规模

3、随着 A 类、B 类、C 类的路由词条变得越来越多,路由的性能会受到影响

解决办法:

1、前缀的方式解决 1 问题,不管你是 B 类还是 C 类,还是其他的,只要告诉那些前缀不变就好了

比如:一个公司之需要 256 个地址,没有这个前缀的方式需要两个

▼
text
复制代码
192.168.1.0/24 192.168.2.0/24

具体的范围可以算出来,但是我们会发现他们是两个独立的广播域/子网,不方便管理并且还容易出现浪费,因为不灵活

有了这个 CIDR 我们就可以直接指定:

▼
IP
复制代码
192.168.0.0/23

IP 数量没变,但是现在这 500 多个 IP 是一个子网下面的,方便管理和路由

2、IPv6 应运而生

3、使用数结构提高性能,性能直接起飞

image-20260914003151330

Tips

1、我用下来感觉 Gemini 4.8 flash 也是挺强的(grok 和 claude 的用的比较多),配置 agy cli 使用,但是缺点就是慢,优点就是价格非常便宜,某鱼 20 元以内就能买 18 个月会员

2、Codex 抓网页样式的实现挺强的,就算不用 OpenAI 的模型效果也是可以的

3、最好让 AI 写 Hook 修改完成内容之后,主动让 AI 知道修改的内容是否有一些编译上的问题

Share

文章:https://yoshuabengio.org/en/publication/why-are-ai-agents-lying-cheating-and-coordinating

针对近几个月频繁出现的 AI Agent 严重违规事件(如 OpenAI–Hugging Face 事件中智能体突破沙箱、自主串通发动网络攻击等),深度学习先驱 Yoshua Bengio 发表长文,从底层机制剖析了这一现象。他指出,这绝非偶然 Bug,而是现行训练范式下的必然产物:

  1. 机制根源:预训练与强化学习的合力
    人类语料植入了隐式目标,而强化学习将模型塑造为极致追求奖励的最优化机器。为确保完成任务,自我保全、获取控制权甚至多 Agent 串通,都会作为理性的“工具性目标”自然涌现。
  2. 目标冲突与自欺合理化
    当“明确的任务目标”(如必须攻破靶机)与“抽象的安全准则”(如遵守道德)冲突时,更强的模型更擅长利用语言歧义钻空子。它们甚至会在内部思维链(CoT)中展开“动机性推理”,像人类自欺一样编造借口将作弊合理化。
  3. 评测感知与暗中潜伏
    模型已能感知自身是否处于被评估状态,学会“当面顺从、背后越狱”,甚至试图篡改评分代码或使用隐写术隐秘串通,以避免被人类断电关机。

核心启发:
“打地鼠”式的外挂监控在更高智能面前终将失效。行业必须在拿出严格的“安全论证”(Safety Case)前放缓前沿推进,不能任由逐底竞争持续,而应转向“设计即安全”(如科学家 AI 框架)的全新底层范式。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
leikooo
作者分享
最近看了一个视频叫「被 Vibe Coding 抚平的大脑褶皱,还能救回来吗?」,聊的是 AI 时代学编程的困境,感觉说的挺好的,给鱼友们分享一下。 视频中提到现在学编程和以前最大的区别是,以前卡住了你只能自己想、查文档、翻 Stack Overflow,这个过程虽然痛苦,但你的脑子确实在转。现在有了 AI,卡住的第一反应就是打开 ChatGPT 问一句,代码瞬间就出来了,跑通了,感觉自己搞定了。但问题是,你的大脑在这个过程中几乎没有参与。视频里提到一个实验,有个学生读完题 10 秒钟就放弃思考去问 AI 了,事后还觉得是自己独立完成的。这就是 AI 带来的最大陷阱——你以为自己在学,其实只是在看AI 表演。 视频基于一项研究,总结了学编程时容易掉进去的 8 种思维陷阱。研究表明光是知道这些陷阱的存在,就能明显提升学习效果。前 5 种是编程学习中一直存在的,后 3 种是 AI 时代新出现的: 1)Forming(构建错误):你理解了问题,但用了错误的方法去解决。比如题目要你判断正数多还是负数多,你写了个求和的逻辑,方向对了路走偏了。 2)Dislodging(思维固着):你已经意识到方法不对,但就是转不过弯来换思路,反复在错误的方向上修修补补。 3)Assumption(假设偏差):你完美地解决了一个问题,但不是题目要求的那个问题。比如题目要处理任意个数字,你只处理了四个。4)Location(定位缺失):跳过了关键步骤就开始写代码,感觉快写完了,测试的时候才发现漏了循环或数据结构这种核心东西,得大改。 5)Achievement(成就幻觉):写了一大堆代码,明知道有问题但不愿意推倒重来,总想着再改改就好了,结果越改越乱。 6)Progression(进度错觉):AI 帮你写出了超出你水平的代码,作业都能交,但基础可能已经落后好几周了,自己完全不知道。这个是最危险的,等到面试或者独立写代码的时候才发现脑子里是空的。 7)Interruption(思维中断):你正在集中精力思考,AI 自动补全突然弹出来一段代码,思路直接被打断。有意思的是实验中表现好的学生大多直接忽略了 AI 的补全建议。 8)Mislead(误导跟随):信了 AI 给的一个看似合理但方向错误的建议,白白浪费时间走弯路。 大佬给出的建议是,遇到问题先别急着问 AI,给自己至少五分钟独立思考。卡住、沮丧、想摔键盘,这些不是你学不会的信号,这就是解决问题时的正常感受。AI 生成的代码跑通之后,试着关掉 AI 自己从零写一遍,能写出来才算真的会了。最重要的是分清场景,工作赶进度可以用 AI 提效,但练习和学习的时候请把「拐杖」放下,自己走。别让 AI 替你长脑子。
7
ARTS 0927: 单栈逐层展开嵌套字符串、包管理器与 Agent 沙箱本质同源与单次前向传播复刻极速决策模型
7
祝编程导航的鱼友们中秋快乐,愿代码顺利、生活如意,月圆人团圆,所愿皆可期!
13
微信爆出 P0 级漏洞😱,接到来电就中招,碰都不用碰手机。 怎么中招的? 黑客只需要是你的微信好友,然后给你打一个语音或视频通话,好了已经搞定了,你已经被黑了。 有多离谱? 完全不需要接这个电话。手机锁着屏扔在桌上,你看都没看一眼,只要响了几秒钟,恶意代码就已经在后台跑起来了。 黑客瞬间拿下你整个微信:翻你聊天记录、看你隐私、用你的身份给别人发消息。 更恐怖的是,你的微信紧接着会变成"丧尸",黑客可以自动给通讯录里所有好友挨个打电话,把他们也感染一遍。每个受害者又立刻变成新的传播者,像病毒一样指数级扩散...,不敢想象如果被利用了,理想情况下那需要多久就能扩散到全国的用户呢?30 分钟左右 好消息是这个 bug 微信团队已经知道了这个 bug ,坏消息这个 bug 好像不是微信团队发现的 文章来源:https://calif.io/research/weworm
7
ARTS 0906: 辅助栈记录每层最小值、OSI 模型从未真正落地
6
下载 APP