当前位置: 首页 > news >正文

为什么Claude Code放弃代码索引,使用50年前的grep技术

为什么Claude Code放弃代码索引,使用50年前的grep技术? https://mp.weixin.qq.com/s/Fa15GoM3_2CUnjdHQ3I7Nw

为什么Claude Code放弃代码索引,使用50年前的grep技术?

原创 余志臻 腾讯云开发者
 
图片
图片

 

👉目录
引言:一个看似倒退的选择
理解状态的本质无状态思想的历史脉络无状态设计的优势现实的权衡AI时代的新思考

当AI编程助手都在比拼谁的索引更智能时,Claude Code选择了每次都实时搜索、不保留任何状态。这个反直觉的设计背后,是对Unix哲学的现代传承,也是对“什么才是好工具的重新定义。
关注腾讯云开发者,一手技术干货提前解锁👇
腾讯云开发者
腾讯云官方社区公众号,汇聚技术开发者群体,分享技术干货,打造技术影响力交流社区。
1011篇原创内容

7小时不间断直播,看腾讯最新黑科技,赢百份周边好礼!
腾讯云开发者
将在09月18日 10:30 直播
腾讯云开发者嘉年华
腾讯云开发者
将在09月24日 19:30 直播
手把手教你构建高效智能体





01



引言:一个看似倒退的选择

 

最近,Claude Code的技术选择引发了不少讨论。

 

有观点认为,Claude Code与Gemini放弃代码索引是“一步烂棋。Milvus的技术博客更是直言不讳:“Claude Code的grep-only方式会烧掉太多tokens。在HackerNews的讨论中,有开发者质疑:“Claude用grep,Cursor用向量搜索——我们是在技术倒退吗?

 

图片

 

当主流AI编程助手纷纷采用向量索引实现语义搜索时,Claude Code却选择了grep——这个诞生于1973年的命令行工具。它不建立持久的代码索引,不预测编码意图,每次搜索都是实时执行。

 

根据Anthropic团队在5月份的博客访谈《Claude Code: Anthropic's Agent in Your Terminal》,他们测试了RAG(向量索引)等多种方案后,最终选择了"agentic search"——就是使用glob、grep这些常规的代码搜索。令人意外的是,这种方式“在性能上大幅超越了所有其他方案

 

这种取舍并非一时兴起,而是一条贯穿计算机科学 50 年的设计哲学,从Unix管道到REST API,从MapReduce到Serverless, 无状态(Stateless)设计在计算机历史上一次次证明了它的价值:通过放弃复杂的状态管理,系统获得了更好的可组合性、可靠性和可扩展性。

 

本文将探讨“无状态这个设计理念——它不是简单的“不保存数据,而是关于如何明智地选择在哪里、以什么方式管理必要的状态。理解了这个设计哲学,你就会明白Claude Code的选择背后的深层逻辑。

 

每个计算时代都在重新发现同一个道理:有时候,遗忘比记忆更强大。

 



02



理解状态的本质

 

   2.1 什么是状态?

 

让我们从最简单的例子开始理解状态的本质。

 

想象两种不同的计算方式:

 

有状态的计数器:就像一个记账本,每次调用都会在之前的基础上累加。第一次调用返回1,第二次返回2,第三次返回3……它“记住了之前发生的一切,每次的输出都依赖于历史。

 

无状态的加法器:就像一个计算器的加法功能,给它输入2和3,无论何时、无论调用多少次,结果永远是5。它不知道也不关心之前发生了什么,每次都是全新的计算。

 

这个区别看似简单,却是理解整个系统设计的关键。用数学语言表达:

 

  • 无状态:Output = f(Input)

  • 有状态:Output = f(Input, History)

 

   2.2 生活中的状态

 

为了更好理解,看看生活中的例子:

 

银行账户是有状态的。你的余额是所有历史交易的累积结果。银行必须记住每一笔存取款,否则你的钱就消失了。

 

汇率转换是无状态的。100美元换人民币,只需要知道当前汇率,不需要知道你上次换了多少。

 

对话是有状态的。当朋友说“还记得昨天那件事吗?,需要共同的记忆才能继续。

 

翻译是无状态的。把"Hello"翻译成“你好,不需要知道之前翻译过什么。

 

这个区别看似简单,却深刻影响着系统设计的方方面面。

 



03



无状态思想的历史脉络

 

   3.1 数学起源:纯函数的优雅(17世纪)

 

无状态的思想并非始于计算机。17世纪,莱布尼茨和牛顿发展微积分时,数学函数就是无状态的。f(x) = x²,无论何时计算f(3),结果都是9。

 

这种确定性和可预测性,成为后来所有无状态设计的理论基础。

 

图片

 

   3.2 Unix革命:管道的哲学(1973)

 

真正将无状态思想带入实践的,是Unix的创造者们。

 

1973年,Doug McIlroy在贝尔实验室提出了管道(pipe)概念。他用了一个绝妙的比喻:“我们需要某种方式把程序连接起来,就像花园里的水管——当需要以另一种方式处理数据时,只需拧上另一段管子。

 

图片

 

Unix管道的优雅体现在它的组合方式上。想象一个处理日志文件的场景:你需要找出所有错误信息,统计每种错误出现的次数,并显示最常见的10种错误。

 

在Unix中,这个复杂任务可以通过管道符号(|)将五个简单工具串联完成: bash。

 

# Unix管道的优雅cat file.txt | grep "error" | sort | uniq -c | head -10

 

每个工具都是无状态的:筛选工具不知道数据来自文件读取,排序工具不关心会被统计工具处理。每个工具只做一件事,并把这件事做到极致。

 

这种设计带来了意想不到的威力——5个简单工具理论上可以产生120种不同的组合方式。如果这些工具是有状态的、相互依赖的,大部分组合都会失效。这就是无状态设计的魔力:通过放弃记忆,获得了无限的组合可能。

 

   3.3 函数式编程的批判(1977)

 

1977年,John Backus在图灵奖演讲中投下一枚炸弹:《编程能否从冯·诺依曼风格中解放出来?》

 

python

 

# 冯·诺依曼风格(有状态)sum = 0for i in array:    sum = sum + i  # 不断修改状态
# 函数式风格(无状态)sum = reduce(add, array)  # 纯函数组合

 

他批判了主流的命令式编程方式。传统的求和方式就像记账:创建一个“总和变量,初始值为0,然后逐个遍历数组,每次都修改这个变量,把新的数字加到已有的和上。这个过程充满了状态变化——变量在不断被修改,每一步都依赖前一步的结果。

 

而函数式的方式完全不同:它把求和看作一个纯粹的数学运算,通过组合“加法这个基本操作来处理整个数组。没有变量被修改,没有状态在变化,只有数据在函数间流动。

 

图片

 

Backus认为,状态修改是程序复杂性的根源。当程序中充满了不断变化的状态时,理解和调试都会变得困难。这个观点深刻影响了整整一代语言设计。

 

   3.4 分布式时代的必然选择(2000年)

 

2000年,Roy Fielding在博士论文《Architectural Styles andthe Design of Network-based Software Architectures》 中提出REST架构,将无状态作为核心约束。他的理由很简单:在分布式系统中,状态是扩展性的敌人。

 

对比两种设计:

  • 有状态:服务器记住用户会话,但请求被分配到其他服务器时就失效了。需要在所有服务器间同步会话,复杂且昂贵。

  • 无状态:每个请求携带JWT令牌,包含所有必要信息。任何服务器都能处理,可随意增减服务器。

 

图片

 

这就是为什么 REST 能支撑互联网规模的应用——以无状态为前提的设计降低了横向扩容的复杂度,成为互联网级系统的基础实践之一。

 

   3.5 分布式时代的必然选择(2000年)

 

2014年,Lambda带来了一个激进的承诺:“假装每次函数调用都在全新的机器上运行

 

图片

 

这个设计哲学很纯粹:开发者写函数时必须假设什么都不会被保留——没有全局变量、没有临时文件、没有数据库连接。但实际执行时,Lambda会悄悄复用容器来提升性能。这是个聪明的把戏:强制无状态的编程模型,但在实现层做优化。

 

为什么这么设计?看看传统服务器的痛点:

  • 负载突增时手忙脚乱地加机器

  • 闲置时还在烧钱

  • 一台服务器挂了,上面的状态也没了

 

Lambda的无状态让这些问题消失了。黑五促销?函数自动扩展到上万个实例。凌晨三点没人访问?成本归零。某个实例崩溃?下一个请求在新实例上执行,用户无感知。

 

但“纯粹无状态在现实中总要妥协。Lambda允许512MB的/tmp空间,容器复用时全局变量会保留。Cloudflare Workers走得更极端——完全没有文件系统,10毫秒CPU限制,换来的是全球任意节点执行。Azure Functions则务实地提供了Durable Functions,承认某些工作流确实需要状态编排。

 

Serverless的“无状态不是技术洁癖,而是一种交易——用编程模型的约束,换取运维的简单和成本的弹性。你失去了对执行环境的控制,但获得了不用管理服务器的自由。

 



04



无状态设计的优势

 

   4.1 可组合性:乐高积木vs精密手表

 

图片图片

 

无状态组件就像乐高积木,可以自由组合来解决不同问题:

 

bash

 

# 今天的需求:找出错误日志中的IP地址cat app.log | grep ERROR | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u
# 明天的需求:统计每个IP的错误次数cat app.log | grep ERROR | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort | uniq -c
# 后天的需求:找出错误最多的前10个IPcat app.log | grep ERROR | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort | uniq -c | sort -rn | head -10

 

注意到了吗?每个新需求都是在已有组合上的微调。我们不需要重写整个程序,只需要像玩乐高一样,替换或添加几个模块。每个工具都不知道会被如何组合,所以能被任意组合。

 

相比之下,有状态系统像精密手表——每个齿轮都精确咬合,牵一发而动全身。想要改变功能?对不起,你需要重新设计整个机芯。

 

这就是为什么Unix哲学历经50年依然生命力旺盛——通过保持每个组件的独立性,获得了应对未知需求的灵活性。

 

   4.2 并行的自然性:无冲突的世界

 

这是我最喜欢展示的例子,想象你需要在一个大型代码库中搜索需要的文件:

 

传统串行方式:就像一个人拿着手电筒,逐个房间地搜索。搜索第一个文件,完成后搜索第二个,然后第三个……在我的测试中,搜索整个项目耗时42秒。

 

并行方式:就像派出16个人,每人负责一部分房间,同时搜索。结果呢?同样的任务只需要3.8秒。

 

10倍的性能提升! 这不是什么高深的优化技巧,仅仅是因为搜索工具是无状态的:

 

图片

 

  • 搜索文件A不会影响搜索文件B

  • 没有共享变量需要加锁保护

  • 没有竞争条件需要小心处理

  • 16个CPU核心可以真正独立工作,互不干扰

 

如果搜索工具需要维护全局状态——比如记录搜索历史、更新进度条、或者保持结果的顺序——并行化会变得复杂且低效。你需要处理线程同步、锁竞争、死锁风险……最后可能发现,并行版本甚至比串行更慢。

 

无状态设计让并行变得自然而然。这就是为什么现代的大数据处理框架(MapReduce、Spark)都采用无状态的计算模型——不是因为他们不想要状态,而是因为只有这样才能真正发挥成千上万个核心的计算能力。

 

   4.3 简单性:没有生命周期管理

 

看看有状态服务需要背负的沉重包袱:

 

启动时的仪式:

  • 初始化连接池,确保有足够的数据库连接

  • 加载配置文件,恢复上次的运行状态

  • 检查未完成的任务,重建内存缓存

  • 启动后台线程,开始心跳检测

 

关闭时的清理:

  • 保存当前状态,以便下次恢复

  • 等待所有请求处理完成,不能丢失用户数据

  • 优雅地关闭所有连接,释放所有资源

  • 通知其他服务自己要下线了

 

崩溃后的恢复:

  • 检查数据一致性,是否有损坏?

  • 恢复中断的事务,用户的钱有没有丢?

  • 重建索引和缓存,性能能否恢复?

 

这就像经营一家24小时营业的便利店——开店要准备货架、收银系统、监控设备;关店要盘点库存、结算账目、清理卫生;如果突然停电,还要检查冷藏柜、恢复收银数据、安抚排队的顾客。

 

而无状态服务就像计算器——插电就能用,断电就停止,重启立即恢复。没有状态恢复流程,没有繁琐的清理工作,崩溃了重启就行。

 

这种简单性不仅降低了开发复杂度,更重要的是提高了系统的可靠性。复杂的生命周期管理往往是bug的温床——忘记释放资源导致内存泄漏,清理顺序错误导致死锁,恢复逻辑有漏洞导致数据不一致……

 

   4.4 可测试性:确定性的力量

 

测试无状态函数就像测试数学公式——2+3永远等于5。不需要准备环境,不需要清理状态,不需要模拟依赖。

 

测试有状态系统则像做化学实验,处处是坑:

  • 环境污染:其他测试留下的全局状态、数据库遗留数据

  • 依赖地狱:模拟数据库、消息队列、外部API

  • 时序问题:测试顺序依赖、并发干扰、异步等待

 

而无状态则带来确定性——相同输入永远产生相同输出。测试失败时,你知道是逻辑错误,而不是环境问题。

 



05



现实的权衡

 

   5.1 什么时候需要状态

 

有些场景,状态不是可选项,而是必需品:

 

图片

 

游戏世界需要持续性。玩家辛苦打下的装备、升级的等级、探索的地图,这些都是游戏体验的核心。没有人愿意玩一个每次登录都要重新开始的RPG游戏。

 

用户界面需要响应性。购物车里的商品、表单填写的内容、页面滚动的位置——这些临时状态虽然不需要永久保存,但在用户会话期间必须保持,否则每次操作都要重新来过。

 

资源管理需要经济性。数据库连接、网络套接字、线程池——这些都是昂贵的资源。每次请求都创建新连接不仅慢,还可能耗尽系统资源。连接池通过复用连接,用少量的状态换取了巨大的性能提升。

 

   5.2 如何选择?一个简单的判断标准

 

我最喜欢用这个问题来判断:

 

“如果系统崩溃重启,用户能接受从零开始吗?”

 

  • 编译器崩溃了?重新编译就行 → 无状态

  • 游戏崩溃了?存档丢失不可接受 → 有状态

  • 搜索崩溃了?重新搜索就行 → 无状态

  • 购物车崩溃了?商品丢失很恼人 → 有状态

 

这个简单的问题能帮你快速定位系统的本质需求。

 

   5.3 混合策略:现实世界的智慧

 

无状态和有状态,看上去是布尔变量true/false般的两个完全对立的值。但这其实是中文语境里的一个误解——英文的 stateless/stateful 并非“无/有状态”的二元开关,更像 -less/-ful 的“程度词”:强调依赖的轻重与记录方式的取舍,而非是否“完全没有/完全存在”。

 

真实系统也很少是纯无状态或纯有状态,而是智慧地混合使用。

 

图片

 

最常见的模式:无状态计算 + 有状态存储

 

这就像餐厅的运营模式:服务员(无状态)可以随时换班,任何服务员都能为任何桌子服务;但收银系统(有状态)必须准确记录每一笔账单。应用服务器是无状态的,可以随意扩展;数据库是有状态的,负责持久化。

 

现代云架构几乎都采用这种模式:

  • 无状态的API服务器 → 有状态的数据库

  • 无状态的Lambda函数 → 有状态的DynamoDB

  • 无状态的容器 → 有状态的Redis缓存

 

Event Sourcing:用无状态事件构建有状态系统

 

不直接存储状态,而是存储所有导致状态变化的事件。账户余额不是一个数字,而是所有存取款事件的累加结果。就像银行的流水账——每笔交易都是独立的、不可变的,但累加起来就是你的账户余额。这种方式既保留了完整的历史,又能灵活地重建任意时刻的状态。

 

   5.4 核心洞察

 

选择无状态还是有状态,不是技术信仰的问题,而是工程权衡的艺术。无状态不是目的,而是手段——它帮助我们构建更简单、更可靠、更可扩展的系统。

 

状态并不是坏的,无管理的状态才是问题的根源。最好的设计不是完全无状态,而是在正确的地方、以正确的方式管理必要的状态。就像生活中的断舍离——不是要扔掉所有东西,而是只保留真正重要的,并且妥善管理它们。

 



06



AI时代的新思考

 

   6.1 Claude Code的选择:具体的技术对比

 

回到开头的质疑,让我们用事实说话。

 

根据Anthropic团队在5月份的博客访谈《Claude Code: Anthropic's Agent in Your Terminal》,他们测试了RAG(向量索引)等多种方案后,最终选择了"agentic search"——就是使用glob、grep这些常规的代码搜索。令人意外的是,这种方式“在性能上大幅超越了所有其他方案

 

图片

 

当前主流的AI编程助手采用了三种截然不同的技术路线:

 

  • Cursor的向量索引方案: 采用AI原生设计,使用Merkle树快速索引代码库,将代码智能分块后生成向量嵌入,存储在远程向量数据库Turbopuffer中。优势是语义理解——搜索“用户认证”能找到login、authenticate、verifyUser等相关函数,即使没有准确关键词。

  • JetBrains的传统索引方案: 经过20年打磨的索引系统,通过深度解析创建PSI树和stub索引。支持强大的代码导航、重构和智能提示,是企业级IDE的黄金标准。

  • Claude Code的无索引方案: Claude Code选择了最简单直接的方案——每次搜索都是实时执行,不依赖任何预构建的索引。根据逆向工程分析,它内部包含GrepTool(支持完整正则表达式的内容搜索)、GlobTool(文件模式匹配)等经典Unix工具(当然随着架构迭代现在可能有一定优化)。就像直接在终端输入grep命令一样简单纯粹。

 

   6.2 为什么“健忘反而更好?

 

这个反直觉的选择,背后有四个关键优势:

 

1. 零配置的自由 大型项目中,Cursor需要上传生成嵌入,IntelliJ需要构建索引——往往耗时几分钟。Claude Code?立即可用。更重要的是无状态命令带来的组合能力:

 

bash

 

tail -f app.log | claude -p "如果看到异常就通过Slack通知我"

 

这种管道组合的优雅,是索引系统永远无法提供的。

 

2. 确定性的价值 向量搜索失败时,调试是噩梦——是嵌入质量?语义偏差?索引过期?grep的行为完全可预测:搜索"processPayment"就是精确匹配,失败原因只有一个——关键词不匹配。这种确定性在调试复杂问题时无比宝贵。

3. 隐私的根本保障 Cursor需要上传代码生成嵌入向量。虽然声称“不存储,但学术研究已证明可从嵌入反推原始内容。Claude Code的grep完全本地执行,从架构上杜绝了泄露可能——不是通过加密,而是让泄露变得不可能。

4. 维护的零成本 没有“索引卡住,没有“缓存损坏,没有后台进程偷偷吃CPU。每次搜索都是全新开始,每次结果都是最新真相。

 

   6.3 不同场景,不同选择

 

这不是技术优劣的绝对判断,而是设计哲学的不同选择。每种方案都有其最适合的场景:

 

Cursor的向量索引适合创意编程场景——当你大概知道要什么但不确定具体名称时,语义搜索能帮你探索代码库。它特别适合学习新项目或寻找灵感。

 

JetBrains的传统索引是企业级开发的黄金标准——当你需要可靠的重构、精确的类型检查、复杂的代码导航时,经过20年打磨的索引系统无可替代。

 

Claude Code的grep方案则是Unix哲学的现代传承——当你重视简单、可控、可组合时,当你需要绝对的确定性和隐私保护时,这种“原始的方案反而是最先进的选择。

 

正如Boris所说:

 

“Claude Code不是一个产品,而是一个Unix工具。”

 

   6.4 无状态之美:在AI时代的新意义

 

Claude Code的选择,让我们重新思考什么是“智能。 在一个AI无处不在的时代,真正稀缺的不是智能,而是可预测性;不是功能的丰富,而是行为的确定;不是记住一切,而是知道何时遗忘

 

这就是为什么grep在2025年依然重要,为什么Unix哲学历经50年依然闪光,为什么Claude Code的“倒退其实是一种清醒。

 

简单的工具活得最久,“健忘”的设计最自由。

 

图片

 

致谢:

特别感谢我的Mentor浩哲在本文撰写过程中提供的宝贵启发与建议。

 

 

-End-原创作者|余志臻

 

感谢你读到这里不如关注一下?👇
腾讯云开发者
腾讯云官方社区公众号,汇聚技术开发者群体,分享技术干货,打造技术影响力交流社区。
1011篇原创内容




 

你平时在IDE里用“全局搜索多还是“语义搜索多?欢迎评论留言分享。我们将选取1则优质的评论,送出腾讯云定制文件袋套装1个(见下图)。9月23日中午12点开奖。

 

 

 

 

 

 

相关文章:

为什么Claude Code放弃代码索引,使用50年前的grep技术

为什么Claude Code放弃代码索引,使用50年前的grep技术? https://mp.weixin.qq.com/s/Fa15GoM3_2CUnjdHQ3I7Nw 为什么Claude Code放弃代码索引,使用50年前的grep技术? 原创 余志臻 腾讯云开发者2025年09月16日 08:45 北京 👉目录1 引言:一个看似倒退的选择2 理解状态的本…...

【QT】使用QT编写一款自己的串口助手

步骤一:ui界面设计 控件 接收框控件: (需要将接收框设置为只读 read only) 属性选择控件: 发送框控件: 按钮控件: 外框控件: 文本控件: 界面设计 最终设计结果布局解析程序设计 第一步 在.pro文件中修改增加: QT += core gui serialport // 增加 serialp…...

一句话让AI帮你搞营销?火山引擎Data Agent说:这事儿可以的~

本文为火山引擎数据产品总监刘峰的演讲分享,介绍了在过去的半年中,火山引擎Data Agent在智能营销Agent领域的一些新思考、新能力以及落地实践。 各位线上的朋友,大家好!今天主要跟大家聊聊四个关键主题: 首先,面对用户和业务增长挑战,结合大模型我们有哪些新解法? 其次…...

debian11 使用 podman 部署 n8n

拉取镜像podman pull docker.n8n.io/n8nio/n8n:latest创建目录和启动脚本mkdir -p /root/n8n/ touch run.shrun.sh #!/bin/bash name=n8n data_dir=/root/n8n/data ssl_dir=/root/n8n/ssl cart_file=$ssl_dir/cert.pem key_file=$ssl_dir/key.pemif [ ! -d $data_dir ]; thenmk…...

网络安全反模式:无效工作生成器的根源与解决方案

本文深入探讨网络安全中常见的“无效工作生成器”反模式,通过真实案例解析其成因,并提出基于根本原因分析的解决方案,包括优先级策略、机制构建及实际应用案例,帮助团队避免资源浪费并提升安全效能。网络安全反模式:无效工作生成器 2025年4月19日 3025字 15分钟阅读 本文…...

Excel处理控件Aspose.Cells教程:如何将Excel区域转换为Python列表

在 Python 中处理 Excel 数据通常需要将特定的行和列提取为列表格式。在本教程中,我们将逐步学习如何借助Aspose.Cells在 Python 中将定义的 Excel 范围转换为列表。在 Python 中处理 Excel 数据通常需要将特定的行和列提取为列表格式。将 Excel 范围转换为 Python 列表对于以…...

alpine安装docker以及docker-compose

alpine安装docker以及docker-compose1. 开启community仓库,vim /etc/apk/repositories 2. apk add docker docker compose 3. docker 添加到自启动 rc-update add docker boot 4. 启动docker:service docker start...

运筹学

运筹学绪论 运筹学主要分支划分方法:一般数学规划模型/特定问题的数学模型。前者划分出线性规划/整数规划/非线性规划/DP/网络流/...,后者划分出网络计划/排队论/存储论/决策论/对策论/... 人工智能的许多问题均与运筹学密不可分 核心:建模与求解 e.g.线性规划:给定基函数和…...

[CF848D] Shake It!

\(f(i, j)\):\(S \to T\) 除去 \(S, T\) 有 \(i\) 个点,最大流为 \(j\) 的方案数。 \(g(i, j)\):\(S \to U \to T\) 除去 \(S, T\) 有 \(i\) 个点,最大流为 \(j\) 的方案数。 \(f\) 向 \(g\) 转移:\(f(a, b) \times f(c, d) \to g(a + c + 1, \min(b, d))\)。 当前 \(a + …...

国产化Excel开发组件Spire.XLS教程:使用 Python 设置 Excel 格式,从基础到专业应用

与在 Excel 中手动调整样式相比,使用 Python 进行 Excel 格式设置 并自动化操作,能够帮助我们节省宝贵的时间。本文将演示如何借助 Spire.XLS for Python 通过 Python 设置 Excel 样式。 在处理电子表格时,数据本身固然重要,但可读性同样关键。一个拥有优秀格式设置的 Exc…...

计算机辅助筛选抗菌/抗病毒肽:以SARS-CoV-2为例,解析靶标突破与筛选策略

抗菌药物耐药性(AMR)已成为全球公共卫生的重大威胁 —— 抗生素在农牧业的滥用、临床不合理使用,导致手术、移植等领域的感染治疗难度陡增;而病毒(如 SARS-CoV-2)的变异与耐药风险,进一步加剧了疾病防控压力。在此背景下,抗菌 / 抗病毒肽(AMPs)凭借 “多作用机制(膜…...

c++国外学习视频心得4-opengl

向量有方向,没有位置,有大小,比如力的大小,速度在大小等。归一化:(x/向量长度, y/向量长度, z/向量长度)。纯粹的方向计算就是只有方向上的影响,大小是1所以不影响大小。 向量长度向量点乘向量叉乘...

LOJ #3835. 「IOI2022」千岛 题解

Description 千岛是爪哇海里一组美丽的岛屿,其中有 \(N\) 个岛屿,编号为从 \(0\) 到 \(N - 1\)。 有 \(M\) 艘独木舟在岛屿之间航行,编号为从 \(0\) 到 \(M - 1\)。对于满足 \(0 \le i \le M - 1\) 的所有 \(i\),独木舟 \(i\) 可以停靠在岛屿 \(U_i\) 或 \(V_i\),并且在岛…...

(附源码)高校拼车管理系统的设计与实现 - 实践

(附源码)高校拼车管理系统的设计与实现 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace …...

Ubuntu取消vim自动对齐

方法一:在 Vim 中临时关闭自动对齐 在 Vim 编辑文件时,进入命令模式(按 Esc),然后输入以下命令: :set paste这会进入“粘贴模式”,关闭所有自动缩进和格式化功能,适合粘贴代码或手动编辑。 要重新开启自动功能,输入: :set nopaste方法二:修改或创建用户配置文件 vim…...

AI产品测试学习路径全解析:从业务场景到代码实践

深入AI测试领域,掌握核心技能与学习路线 在AI技术日益普及的今天,AI产品的质量保障成为关键环节。如何系统学习AI测试并掌握其核心技能?本文基于一线专家的实战经验,为你梳理出一条清晰的学习路径,涵盖业务理解、指标计算与性能测试三大阶段。 一、先理解业务场景,再制定…...

代码随想录算法训练营第一天 | leetcode 704 27 977

第一题二分查找 简答回答:经典的二分查找,采用的是左闭右闭区间,主要需要注意的就是右区间的下标 代码如下:class Solution { public int search(int[] nums, int target) { int left = 0;//左下标 int right = nums.length-1;//右下标 //循环条件 …...

中文医学基准测试题库数据集:28万条标准化JSON格式医师考试题目与临床案例分析,覆盖28个医学专业领域,用于医学AI模型训练、临床决策支持系统开发、医学知识问答系统构建、医学教育辅助工具优化

获取更多高质量数据可以访问典枢平台 https://dianshudata.com 引言与背景 在人工智能技术快速发展的今天,医疗健康领域正迎来前所未有的变革机遇。医学人工智能系统的研发与应用已成为推动医疗服务质量提升、降低医疗成本、提高诊疗效率的重要途径。然而,构建高质量的医学AI…...

GNSS终端授时方式

GNSS终端授时方式介绍了为什么GNSS接收机能够授时 为什么需要四颗星才能够定位?应该还有很多朋友不太了解 GNSS卫星定位的基本原理。 第二是我最近构思了后续文章的主题,后续文章需要用到GNSS定位的基本原理,所以今天提前介绍一下,算是给后续文章做一个铺垫。 理想情况下两…...

SpringAI接入DeepSeek大模型实现流式对话

SpringAl接入DeepSeek大模型,可实现对话模型(deepseek-chat)和推理模型(deepseek-reasoner)的交互。 ChatClienti适用于复杂功能开发,而ChatModel更适合简单场景。一、 环境配置 Spring AI 支持 Spring Boot 3.4.x,JDK支持需要17以上 添加快照存储库 <repositories><…...

函数计算的云上计费演进:从请求驱动到价值驱动,助力企业走向 AI 时代

函数计算的演进史,其实也是一部计费方式的演化史。透过计费这一窗口,我们可以一管窥全豹,清晰地看到背后产品形态在技术与体验上的深刻变化,以及技术架构随应用场景不断演化的能力。作者:砥行 在云计算的发展过程中,计费方式往往是开发者最直观的感知。最初,用户需要直接…...

【SPIE出版】第五届计算机图形学、人工智能与数据处理国际学术会议

第五届计算机图形学、人工智能与数据处理国际学术会议 2025 5th International Conference on Computer Graphics, Artificial Intelligence and Data Processing (ICCAID 2025) 在这里看会议官网详情 大会时间:2025年10月31-11月2日 大会地点:中国-南昌-南昌航空大学 截稿时…...

通知语音播报功能,解锁全新体验

在触达用户的多种途径中,推送通知消息凭借其高效性和便捷性,成为一种高性价比的营销手段。然而由于各应用推送频率过高,导致重要通知消息常被淹没在海量信息中,难以及时触达用户。比如商家的新订单提醒或者是收款到账通知等重要提醒,往往会因为消息过多而被用户忽视。 为解…...

使用AI容器镜像部署Qwen大语言模型

场景简介 在本实验场景中,将使用Alibaba Cloud AI Containers(AC2)容器镜像服务,通过Docker容器镜像部署Qwen系列大语言模型。本实验场景基于第八代Intel实例,使用Alibaba Cloud Linux 3作为实验系统,使能Intel最新的 AI 加速指令集,提供完整的容器生态支持。 本实验场景…...

【IEEE冠名,香港中文大学(深圳)主办)第五届IEEE能源工程与电力系统国际学术会议(IEEE-EEPS 2025)

第五届IEEE能源工程与电力系统国际学术会议(IEEE-EEPS 2025) 2025 5th IEEE International Conference on Energy Engineering and Power Systems 在这里看会议官网详情 2025年10月31-11月2日 中国深圳 截稿日期:看官网 提交检索:提交至 IEEE Xplore、EI Compendex、Scop…...

C#实现Access表格自增ID的重置

方法一 SQL语句修改: ALTER TABLE 表名 ALTER COLUMN [ID列名] COUNTER(1,1) 原理: 直接修改自增列的属性,强制其下一个生成的值从1开始(COUNTER(起始值, 步长)) 适用条件: 表必须完全为空(DELETE 操作已清空所有数据); 必须在全新的数据库连接中执行(不能与删除数据…...

sumifs根据条件求和

=SUMIFS(分数!$G$5:$G$72,姓名!$C$5:$C$72,A1) 即统计求和所有名字为A1单元格内数据的学生分数 分数!$G$5:$G$72 需要统计的数值所在行姓名!$C$5:$C$72 需要匹配的条件所在行A1/"=100" 匹配条件单元格内的数据/匹配条件...

ubuntu服务器docker安装部署ngix

1、docker pull nginx 2、DockerfileFROM nginx:alpine# 维护者信息 LABEL maintainer="Your Name <your@email.com>"# 将构建好的前端文件复制到Nginx的默认静态文件目录 COPY dist/ /usr/share/nginx/html/# 将自定义的Nginx配置文件复制到Nginx的配置目录 C…...

c++右值引用和移动语义

1. 什么是右值?左值:有名字,可以找到它放在哪(能取地址的)。 比如:int a = 10; // a 是左值右值:临时的、没名字的,用完就没了的东西。 比如:int b = a + 5; // a+5 是个临时值,就是右值 int c = 100; // 100 这个字面量也是右值你可以理解为: 左值像“家里…...

彩笔运维勇闯机器学习--梯度下降法

前言 彩笔运维勇闯机器学习,今天我们来讨论一下梯度下降法 梯度 首先要搞明白什么是梯度,那就要先从导数说起 导数 函数\(y=f(x)\)的自变量\(x\)在一点\(x_0\)上产生一个增量\(\Delta x\)时,函数输出值的增量\(\Delta y=f(x_0 + \Delta x)-f(x_0)\)与自变量增量\(\Delta x\)…...

作业03

问题一 static修饰的方法有: 工具类方法、工厂方法(用于创建对象) 不用static修饰方法的特性:实例方法依赖类的对象,直接在方法内部访问 getName方法依赖于Student的对象,不应该用static修饰 问题二 在购物车场景里,分别讨论参与的实体、实体的行为和实体的状态,如购物…...

项目管理软件产业革命:从工具升级到生产力范式转移

项目管理软件产业革命:从工具升级到生产力范式转移 当微软Teams项目管理模块的日活用户突破3000万大关时,这个数字背后折射出的不仅是单一产品的成功,更预示着全球企业协作方式正在经历一场深刻的范式转移。Gartner最新预测显示,到2025年全球项目管理软件市场规模将突破280…...

vs code运行Java遇到的输入问题

关于在vs code中运行Java无法输入鸣谢我的室友徐同学和亲爱的元宝同学还有ChatGPT老师为什么 code runner内置的编译逻辑是直接运行你的代码,但是java的独特输入方式正好与其不同,导致直接默认输入为空 public class Sqrt{public static void main(String[] args) {double EP…...

关于数据跨境,你应该了解的合规难题有哪些?

数据跨境合规难破?匿名化就丢数据价值?本文详解如何攻克隐私保护与算法研发的矛盾,从精准模糊到生成式AI匿名化技术,助你合规传输高价值数据,释放全球研发潜能!当下正是一个由数据驱动的伟大变革时代。从ADAS到AD,每一次技术的跃迁都离不开海量道路数据的采集、标注与分…...

国内开发者如何选择代码管理平台?三大主流工具深度对比

国内开发者如何选择代码管理平台?三大主流工具深度对比 在数字化转型浪潮席卷全球的当下,代码管理平台已成为开发者日常工作中不可或缺的基础设施。面对Gitee、GitHub与Bitbucket这三大主流平台,国内开发者该如何做出最适合自己的选择?本文将从本土化支持、功能特性、企业适…...

doubletrouble wp复盘

因为这台机子形式比较特殊,所以做个wp nmap ┌──(kali㉿kali)-[~/replay/doubletr] └─$ nmap -sT -p- 192.168.48.67 Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-10 23:17 EDT Nmap scan report for 192.168.48.67 Host is up (0.0058s latency). Not shown: 6…...

VAR算法

向量自回归模型,简称VAR模型,是AR 模型的推广,是一种常用的计量经济模型。在一定的条件下,多元MA和ARMA模型也可转化成VAR模型。 单变量的时间序列的分析模式可以推广到多变量时间序列,建立向量自回归模型。向量自回归模型通常用于描述多变量时间序列之间的变动关系。多变…...

mysql 万能恢复主从Slave_SQL_Running 是No

STOP SLAVE;SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; # 这个值可改大START SLAVE;SHOW SLAVE STATUS\G;无聊我就学英语...

刚刚 Java 25 炸裂发布!让 Java 再次伟大

刚刚,Java 25 正式发布! Java 25 都发布了哪些新特性?有没有必要升级?一篇文章,带你速通 Java 新特性。大家好,我是程序员鱼皮。 刚刚,Java 25 正式发布!这是继 Java 21 之后,又一个 LTS 长期支持版本,也是 Java 开发者们最期待的版本之一。其中有个特性可以说是颠覆…...

go 语言结构和基础语法

结构和语法基础包声明 package main引入包函数init函数 22 会先执行init函数在执行main 函数 -------init------ hello world ------main--------变量标识符行分隔符语句&表达式注释公有成员和私有成员关键词、保留字和预定义标志引用类型切片 map channel interface func关…...

详细介绍:Linux--初识网络

详细介绍:Linux--初识网络pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-siz…...

lua程序调试方法

使用腾讯luahelper插件(lua全家桶,其中调试部分应用了LuaPanda实现) 主要有两个功能,一个是附加到已经运行的lua程序上,另一个是用debug方式运行lua程序文件,安装后默认没有配置文件,先add config就好。纯属记录程序人生,如有差错,欢迎指正,轻喷...

维保信息查询

超聚变查看维保信息: https://www.xfusion.com/support/#/zh/maintenance-information...

人工智能学习路线学习资料整理

人工智能学习资料(个人整理) 先导 开始之前,让我们先看几个demo和视频 【纪录片】阿尔法狗【双语特效字幕】 https://www.bilibili.com/video/BV1pE411y7Pu/?spm_id_from=333.337.search-card.all.click&vd_source=d5f2b87dc23c8806dfc6d9550f24aaf2路线 书籍资源—理论…...

软件设计师知识点总结(2023)上

第1题: 第2题: 第3题: 第4题: 第5题: 第6题:第7题:第8题: 第9题: 先来先服务:最短寻道时间:电梯调度: 单向扫描: 第10题: 第11题: 第12题: 第13题: 第14题: 第15题: 第16题: 第17题: 第18题: 第19题:...

【运维自动化-标准运维】各类全局变量使用说明(中)

一、集群资源筛选 此变量用于按照资源筛选方案创建新的集群。 创建 输入名称和KEY值 引用 ${KEY}引用${KEY},返回的是创建集群成功的信息Allocate {set_number} sets with names: 引用${KEY._module},返回的是集群下的模块信息,类型为字典,键为模块名,值为模块下的主机列表…...

提示词工程(Prompt Engineering)是不是“新时代的编程”?

一、引子:为什么大家开始重视 Prompt?从 ChatGPT、Claude 到文生图工具(Stable Diffusion、MidJourney),AI 输出的质量高度依赖输入的提示词。不同的人输入同样的问题,得到的答案可能天差地别。出现了一个新角色:提示词工程师(Prompt Engineer),甚至有公司开出年薪几…...

python日志记录之logging模块

logging模块是python中用于提供格式化输出的模块。...

O - Color a Tree

题意:任务是在一棵树状结构中以最小的成本完成所有节点的染色,如果要染一个节点那么他的父节点必须已经染过色。染色成本取决于节点的染色成本因子与染色时间。通过分析得出正确的染色策略,并给出了一种有效的算法实现。 错误的贪心策略:对于一个节点的子节点 染过这个结点…...

电脑时间改了,软件不能用了

软件突然不能用了,检查没什么问题,重装也查不出来毛病,想再卸载的时候,发现日期改成了几年前。 日期改正软件就好了。。。...