news 2026/9/10 1:27:01

AI编程时代,程序员如何从编码者进化为价值定义者?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI编程时代,程序员如何从编码者进化为价值定义者?

这两年,每隔一段时间就会有人把“AI编程会不会替代程序员”这个话题顶上热门。我也被问过很多次,问的人里有刚入行的新人、工作五六年的老同事,还有准备让孩子学编程的家长。说实话,我对“会不会被替代”这件事的焦虑已经过去了,现在反而更关心另一个问题——如果AI真的接管了大部分编码工作,程序员应该把自己摆在哪,应该提前练什么手艺,才能在这一轮变化里活得比现在更好。我自己的答案可能和很多人想的不一样:与其纠结机器的上限,不如先把手头的工作方式改掉。改完之后你会发现,“替代”这个词其实站不住脚,真正的答案是你愿不愿意换一种姿势继续干活。

1. 先别急着恐慌:AI编程工具到底做到了什么程度?

1.1 从自动补全到自动驾驶:编辑器里的变化

过去两年,AI编程工具的发展速度比我预想的快得多。最早我在编辑器里用的是智能补全,那会儿的体验就是“少打几个字”,代码提示虽然有点用,但本质上还是一个更聪明的词典。后来GitHub Copilot横空出世,它已经不是补全了,而是你写一个函数名,它能直接帮你写出一整个函数体;你写一行注释,它能给你补出十行实现。我刚开始用的时候,第一反应不是“好厉害”,而是“它怎么知道我想写这个?”,紧接着才是“那我写代码还有什么意义”。

再后来,Cursor这类AI原生IDE出现了,体验又上了一个台阶。Cursor不只是给你补代码,它把“整个代码库”作为上下文,你可以直接问它“这个模块里的订单状态流转是什么逻辑”“帮我找一下支付回调里的异常分支在哪里”,它能跨文件搜索、解释、甚至自动改代码。这已经不是“补全”了,更像旁边坐了一个读过你全部项目的结对程序员。

到了AI Agent阶段,工具的目标变成了“端到端完成一个小任务”。比如你给它一个issue描述,它能自己尝试改代码、跑测试、生成PR草稿。我试用过一些这类能力,虽然离完全靠谱还远,但在特定场景下,它确实已经能把“从需求描述到代码变更”的链路压缩到十分钟以内。

1.2 AI Agent正在吃掉“中间环节”

如果只看补全工具,你可能会觉得AI只是辅助,真正的逻辑还是人来搭。但AI Agent的概念不一样,它试图把“理解需求—翻代码—改逻辑—跑测试—出变更”这些中间过程也接管过去。

我印象很深的一次是给一个内部管理后台加筛选功能。传统流程下,我需要先找到列表页的前端文件,确认接口参数格式,再写查询条件、处理默认值、边缘情况,最后还要自测几种组合。用AI Agent做的时候,它直接帮我把前后端改动点都列了出来,还给了一个初步的diff。虽然最终我没直接合入,而是基于它给的diff做了调整,但原来自认为“很费时间”的地毯式搜索工作,确实被它大幅压缩了。

这带来的直接后果是:过去很多程序员的价值就在于“熟悉代码库”,两个人写同样的功能,老手因为知道去哪改、怎么改,所以快很多。现在AI也学会了“翻代码库”,而且它翻得比你快得多,只是不一定翻得比你准。“找代码”的壁垒正在被摊平。

1.3 哪些工作其实已经悄悄被替代了

我身边有一些公司,已经在用AI处理非常具体的编码任务,而且不再需要程序员逐行review。比如:

  • 接口文档生成、DTO转换、简单的CRUD代码,这类“模板性编码”基本不需要人自己写了。
  • 单元测试的补全,AI能根据函数签名和注释生成及格线以上的测试用例。
  • 老项目从Spring Boot 2升到3,很多结构性的重构,AI给出迁移建议的成功率已经很高。
  • 前端页面根据设计稿生成基础结构,虽然细节还要调,但骨架已经不需要人搭了。

我不太认同“AI只能写Hello World”这种说法,那多半是没认真用过近一年的工具。它的能力边界在快速拓展,再嘴硬也没意义。与其争论它能不能替代程序员,不如先承认一件事:很多以前必须由人花时间完成的“翻译型编码”,现在AI已经干得不错了。承认这个事实,我们才可能认真思考接下来自己该干什么。

2. 一个更冷静的判断:程序员被替代不是“会不会”,而是“哪部分被替代”

2.1 最容易受到冲击的工作清单

我自己梳理过一份“AI冲击清单”,基于我对大量一线程序员工作的观察。最容易受冲击的并不是所谓“低端程序员”,而是那些工作内容高度重复、输出物非常标准化的工作,具体来说:

第一类是“伪需求实现型”的编码。产品经理给了一个页面原型和几个接口字段,程序员照着写个表单页面、调一下接口、处理一下校验。这类工作价值核心是“把别人已经定义好的东西翻译成代码”,AI最容易替代。第二类是跨语言搬运和代码转换。把C#改写成Java,把旧接口换成新接口,把异步回调改成CompletableFuture的链式调用,这种活儿AI做得又快又好。第三类是基础bug定位,比如栈溢出、空指针、字段对不上,这类问题在代码库中反复出现,AI能够通过学习模式快速指出嫌疑代码。第四类是文档和重复性沟通。写接口文档、生成CRUD测试数据、把代码逻辑整理成周报,AI已经全包了。

如果你现在的日常工作里,超过50%的精力花在以上几件事上,那你真的应该警觉。不是明天就被裁,而是你会发现自己越来越难在团队里展现出“非你不可”的价值。

2.2 真正难替代的四种能力

反过来看,哪些能力是AI很难替代的?我理解下来至少有四种。

一是定义问题的能力。需求方往往说不清楚自己要什么。“做一个报表”和“做一个能让我在早会上快速判断哪些订单异常、需要跟进催付的报表”,这是两种完全不同的任务。前一种语言模型也能理解,但把模糊诉求转化成清晰、可验证、有优先级的问题定义,需要人对业务和用户行为的理解,这不是靠“上下文长度”就能弥补的。

二是架构取舍的能力。同样的功能,有十种实现方案。高并发下选消息队列还是本地表加定时任务?分布式事务最终一致性和强一致怎么取舍?多活架构里缓存要不要强一致?这些问题没有标准答案,需要结合团队规模、运维能力、成本预算、故障容忍度来做trade-off。AI能告诉你每种方案的优缺点,但决定在某个具体业务里用哪种方案的那个人,必须承担结果。

三是复杂系统的调试能力。代码报错只是表象,背后可能是数据不一致、并发冲突、上游抖动、甚至网络分区。AI可以基于局部信息提出假设,但排查生产事故时,需要你把它当“有经验的实习生”,不断给它喂全局信息、验证它的方向,必要时推翻它。这种跨层级的推理和决策,目前还是人类工程师的主场。

四是协作与影响力。任何项目都不是一个人写完代码就结束的,你要跟产品聊需求边界,跟测试对齐质量标准,跟运维确认上线方案,还要跟其他开发同步接口变更。这种“人的对齐”过程,AI短时间内很难替代。它更多是帮你准备材料,但沟通本身你躲不掉。

2.3 为什么初级程序员反而最危险?老程序员也别高兴太早

很多人觉得初级程序员便宜、有活力、好培养,不会被AI替代。我的观察相反:刚入行的程序员,日常任务恰恰是AI最容易覆盖的那类——给老系统加个小功能、修不太复杂的bug、按要求写一堆CRUD。而且初级程序员对代码库的理解不深,AI给出的答案在他们看来甚至比自己的更“完美”,于是很容易全盘接受。这种情况下,初级程序员不是在“驾驭AI”,而是被AI牵着走,产出和AI直接完成几乎没区别,竞争力自然会被压缩。

老程序员也一样有隐患,尤其是一直守着一门旧技术栈、长期只维护一个遗留系统、抗拒新工具的群体。他们引以为豪的“我熟悉这个老系统的每一个坑”,在AI面前其实是被逐渐摊薄的信息差。更麻烦的是,老程序员如果习惯了稳定环境,改造成本更高,一旦组织决定用AI重构,他们反而最难适应。所以这件事没有“安全区”,只分“进化中的程序员”和“原地等待的程序员”。

3. 我更关心的“如何应对”:先改变工作方式,再改变能力结构

3.1 把AI当成结对程序员,而不是搜索引擎

我发现很多人使用AI编程工具的方式有问题。最常见的错误是把它当“搜索引擎Plus”:遇到问题就Ctrl+C复制报错信息,AI给了一段代码,就粘进去跑一下,跑不通就再粘一遍报错,循环往复。这本质上还是“面向搜索编程”,只不过搜索框换成了对话框。

我自己的习惯是,把AI当作一个“读过代码库、但不懂业务取舍的结对程序员”。我不会一上来就让它写代码,而是先让它描述它对任务的理解。比如我会说“我需要给订单模块增加一个导出功能,这是现有OrderService和OrderMapper的结构,你先给我看一下你理解的改动范围”。等它给出理解后,我会补充业务约束:“导出量可能到十万级,不能用内存一次性处理;权限上只有运营角色可以点这个按钮”。这样一来,AI输出的代码在起点上就更接近我的真实意图。

这个习惯改变了我的工作模式。以前是“我写好思路,然后敲代码”,现在是“我先给AI定边界,它写初稿,我做裁缝”。看起来AI做了一半,但真正决定质量的是我给的边界和约束。这也是为什么我强调:AI编程工具越强,你定义需求的能力越值钱。

3.2 写AI编程提示词的本质是“把需求说清楚”

说到提示词,很多人觉得这不过是怎么“命令”AI。我觉得没那么玄。好的AI编程提示词,本质上是“结构化表达需求”。

我常用的结构是:背景、目标、约束、验收标准、输出格式。背景告诉AI这属于哪个项目、哪个模块、现有技术栈是什么;目标是一句话说明你要实现什么;约束是最关键的部分,包括性能要求、安全要求、兼容性、不能用什么方案;验收标准给出可验证的条件;输出格式可以要求它先给出方案、再贴代码、最后附上测试场景建议。

比如我写一个需求时,会这么组织:

  • 背景:订单系统使用Spring Boot 3,现有OrderMapper支持分页查询。
  • 目标:新增一个批量导出今日订单的CSV文件接口。
  • 约束:导出记录数可能超过5万,要求采用流式写入,不能一次性加载到内存;文件需上传到OSS并返回下载链接;接口鉴权需要Admin角色。
  • 验收标准:调用后返回文件URL,OSS中能下载到包含全部字段的CSV,内存峰值不超过200MB。
  • 输出格式:先给出实现方案概述,再给核心代码,最后列出潜在的边界情况。

你可能会说,这不就是以前写需求文档的能力吗?对,正因为以前的需求文档经常写得稀烂,程序员才会靠自己的经验补全细节。现在你把补全细节的工作提前做,AI就能准确执行。程序员的新基本功,不是“背更多API”,而是“把自己的意图整理成AI能够执行的规格”。

3.3 从“我会写代码”到“我能定义问题和验收结果”

我越来越觉得,程序员的身份正在从“代码生产者”变成“价值定义者”。同一个功能,写出来只是起点,质量由谁来定义?边界由谁来划?出了问题谁来负责?这些都需要人来回答。

所以我在实际工作中,会刻意练习三件事。第一,写“用户故事+验收标准”而不是直接写函数。我会在动手前花10分钟把异常路径列清楚:参数非法怎么办、远程调用超时怎么办、数据不存在怎么办、权限不足怎么办、并发冲突怎么办。这些内容我会喂给AI,让它生成的代码天然覆盖这些分支。第二,先写测试,再写实现。你不一定用TDD那种严格模式,但至少要让自己先想清楚“什么叫做完了”。我把这个标准告诉AI,让它生成测试代码,效果比让它直接写实现要好得多。第三,审查AI代码时,带着“验收思维”而不是“阅读思维”。不要一行行看它怎么写的,而是问“这个函数的输入输出是否满足约束”“有没有引入未经授权的副作用”“有没有把不该暴露的数据打印到日志里”。

当你能把问题定义得很清楚,代码本身反而变成次要的了。AI可以帮你写一万行代码,但这一万行代码是否解决对问题,才是你的核心价值所在。

3.4 建立自己的AI辅助工作流:模型选型、上下文管理、代码审查

应对AI编程时代,不能今天用这个工具、明天用那个工具,你需要一个稳定的工作流。我自己的流程大概是这样:

模型选型上,我会分场景。日常快速问答和写小工具,用一个响应快的通用模型;涉及复杂架构设计,用一个擅长推理的大模型;在IDE里集成编程助手时,优先选能读懂项目索引的工具。每个模型的强项不同,工具没有绝对的好坏,关键是匹配任务。

上下文管理是我觉得最容易被忽略的。AI的记忆很有限,你需要在对话里持续喂养必要的上下文:项目目录结构、关键配置、依赖版本、现有代码片段。我会维护一个“项目背景.md”文件,专门记录技术栈、模块职责、异常规范、部署方式。每次让AI干活之前,把相关段落复制给它,这样它的回答就不会跑偏。如果你用的是Cursor这类支持代码库索引的工具,还要学会用@引用精确文件,而不是把整个项目丢给它。

代码审查是最后一道闸门。无论AI生成多完美的代码,我坚持一条原则:不审不合。而且审查不是看它是否编译通过,而是看它是否满足业务约束。AI经常出现“看起来合理但语义不对”的代码,比如把等于写成不等于、把缓存刷新时机搞错。这些坑只有人能发现,因为它们藏在“业务预期”里,不在“语法正确”里。

4. 一次AI辅助开发的完整案例:从需求到上线我的真实工作流

4.1 需求拆解:我用AI做了哪些事

光讲理论容易飘,我拿一个最近真实做过的需求当例子。需求背景是:运营同学每天要处理一批订单,想一键导出当天所有异常状态的订单明细,并发送邮件归档。

第一版需求描述就一句话:“加一个导出异常订单的功能。”如果直接把这句话丢给AI,它多半会生成一个最简单的列表导出接口,完全没有考虑“当天”“异常状态有哪些”“邮件怎么发”“单量大了怎么办”。

所以我的处理方式是,先用对话把需求补完整。我会问AI:“如果你是运营,你需要从这些字段里看出什么信息?异常订单一般包括哪些状态?导出文件的字段有哪些?”它会给出一批候选字段和状态枚举,我再结合业务知识筛选、补充。这一步让我在原来自认为是“直接写代码”的地方,多花了20分钟,但后续编码时间至少省了两小时。

然后我会让AI基于完整需求列一个任务拆解清单:写VO、写查询条件、写导出工具类、写邮件服务、写Controller、写定时任务还是手动触发。它列出来的步骤,我自己也可以列,但它漏掉什么的时候,我能更快发现。同时我把性能约束写进去:“导出数据量可能超过10万,必须用流式查询,不能用List一次性接收。”

4.2 编码阶段:哪些代码AI写,哪些必须自己写

需求清晰之后,AI生成的代码质量会高很多。比如核心导出逻辑,我让AI生成的版本大概是这样的:

public void exportAbnormalOrders(LocalDate date, OutputStream outputStream) { try (CsvWriter writer = new CsvWriter(outputStream, Charset.forName("UTF-8"))) { writer.writeRecord(new String[]{"订单号", "状态", "金额", "异常原因", "更新时间"}); orderMapper.scanAbnormalOrders(date.toInstant(), resultContext -> { AbnormalOrder order = resultContext.getResultObject(); writer.writeRecord(new String[]{ order.getOrderNo(), order.getStatus().name(), order.getAmount().toString(), order.getAbnormalReason(), order.getUpdatedAt().toString() }); }); } }

这段代码用了MyBatis的流式游标查询,避免十万条数据直接进内存。AI能写出这个,得益于我在提示词里明确写了“流式查询、不能一次性加载到内存”。

但有一些东西我坚持自己写。比如文件上传OSS的代码,虽然AI也能生成,但密钥管理、bucket隔离、内网endpoint配置这些涉及安全的基础设施,我会自己确认过每一行,不放心直接拿AI的版本。再比如权限校验逻辑,我会自己设计一个统一的注解和拦截器,不会让AI在不同接口里各写各的。还有邮件内容和附件的拼接,涉及业务展示格式,必须由我来确定模板。

我的原则是:让AI写“实现细节”,自己掌握“关键决策”。尤其是涉及钱、权限、用户隐私和安全边界的地方,必须由人来锁死。

4.3 测试、审查与部署:AI没帮你处理的部分

代码写完之后,AI帮我生成了一版单元测试,覆盖了正常导出、空数据、字段超长、日期为空等场景。但我发现它漏掉了两个关键场景:一个是并发调用时导出是否会生成重复文件,另一个是OSS上传失败后邮件是否还会发送。这两个是我在业务中踩过坑才记得的边界,AI很难凭空想到。我补充了这两个测试,让AI修正代码:上传失败时直接抛出业务异常,不触发邮件发送。

审查阶段,我重点看了AI生成的SQL和流式查询代码。scanAbnormalOrders这个SQL是我自己写的,没有直接用AI版本。因为流式查询必须确保ResultHandler里没有执行其他SQL操作,否则会“连接耗尽”,这是老手都知道的坑,AI不一定在第一次就考虑到。

部署上线后,我又把真实的导出数据量和线上索引结构拿来做了一次验证。结果发现查询走了全表扫描,因为索引字段是order_status + created_time,但AI生成的where条件里多了一个updated_time范围过滤,导致索引失效。这个优化完全依赖人对执行计划和索引的了解。AI能写功能,但调优它帮不了你全部,至少现在还不行。

5. 不同阶段程序员该怎么应对:方向、路径和避坑

5.1 初级程序员:抓紧学会“带AI干活”,而不是和AI比体力

初级阶段的焦虑是最真实的,因为编码经验不足,很容易产生“AI比我强”的绝望感。但换个角度想,AI恰恰是初级程序员弯道超车的工具。

你要做的第一件事,是把AI当成“免费的技术教练”。以前遇到不懂的代码,你可能要翻半天博客、问人还得看脸色;现在你可以让AI逐行解释老旧代码,并让你向它追问“为什么这样写”“如果改成另一种写法会怎样”。它虽然偶尔会错,但大多时候能给你一个不错的起点。

第二件事,就是刻意练习“带AI干活”的流程。接到一个任务时,不要急着让AI给代码。先自己尝试描述需求,列出输入、输出、异常场景,然后用提示词结构去和AI协作。最开始你会觉得比自己写还慢,但练上一个月,你会发现自己的需求分析能力、代码审查能力都涨了,而这些是传统路径下要两三年才能积累的。

千万不要做的是,把AI生成的代码直接提交,然后什么都不懂。如果哪天AI出错,你连问题在哪都找不到,这个风险比“被替代”更可怕。

5.2 中级程序员:往系统设计和业务深水区走

对工作三到五年的中级程序员来说,你最大的优势是既能写代码,又了解业务。你需要做的不是和初级卷“手写速度”,而是把竞争力上移到“系统设计”和“业务理解”两层。

在系统设计上,你可以让AI做你的“设计评审官”。我常用的一种方式是:把我画好的架构图用文字描述出来,然后要求AI扮演一个苛刻的资深架构师,挑出单点、性能、一致性问题。它提出的一些问题可能你早就想到了,但偶尔也会给出你没考虑过的角度,比如缓存穿透、数据歪斜、回滚策略。真正拍板的人仍然是你,但AI帮你扩宽了穷举范围。

在业务深水区,你要比别人更清楚“这个系统为什么长成这样”。哪些历史包袱是欠债,哪些设计是无心插柳,哪些利益相关者在不同阶段影响了需求优先级。AI知道最佳实践,但它不知道你们公司的政治和业务演进逻辑。你能把这些讲明白,就是不可替代的。

还有一点:试着训练自己用AI做“技术方案文档”。以前写技术方案很耗时,现在你可以口述思路,让AI帮你整理成结构化文档,然后你逐段修正。这会让你更愿意把方案写下来,也更容易得到团队认可。

5.3 资深程序员/架构师:AI是你的杠杆,不是威胁

资深程序员和架构师最不该恐慌,但最容易自满。你们的经验确实稀缺,但如果拒绝使用AI,效率上可能被年轻同事拉开差距,这种“隐性替代”才更普遍。

我的建议是,把AI当成你的“实习生扩张器”。以前你有很多想法但没时间落地,现在可以让AI先写出初稿,你来判断和打磨。这相当于用一个极低成本的劳动力,把你的想法快速变成可讨论的产物。架构师画分布图、做技术选型时,AI也能帮你搜集对比资料,甚至生成方案初稿。需要注意的是,架构决策必须保持人的ownership。AI可以提供证据链,但最终要承担线上故障责任的是人,不是模型。

资深程序员还有一个重要任务:制定团队的AI编程规范。我自己就在团队里推动过“AI生成代码的review清单”和“AI提示词材料库”。这些规范的价值会随着AI能力增强越来越大。因为当每个人都在用AI,团队之间的差异不再是“手速”,而是“怎么用好AI”的组织能力。

5.4 最常见的四个认知误区,我踩过的坑

第一,以为AI给出的代码一定正确。我踩过最大的坑就是让AI写一段日期处理逻辑,它用了LocalDate.parse,但我真实环境里接收的是带时区的字符串,结果线上直接解析异常。从那以后,凡涉及日期、时区、金额、编码的代码,我都会手工检查。

第二,上下文喂得不够就怪AI笨。很多时候不是AI不行,是你没说清楚。我会花时间维护项目背景文档,效果立竿见影。AI不像人,不会追问你“这里到底要不要考虑并发”,你漏了它就不会覆盖。

第三,过度依赖AI,丧失手写能力。这不是情怀问题,而是当AI服务不稳定或者模型升级导致行为变化时,你需要有完全不依赖AI也能把核心逻辑写出来的能力。它是安全网,不是安全带。我每周都会手写一些核心算法或数据结构,保持“手艺”。

第四,把AI工具当成固定不变的。这个领域变化太快,上个月很火的工具可能下个月就被迭代了。我的经验是:定期用半天时间试用新工具,但不要每换一个就重构工作流。一个稳定的核心流程加一个灵活的尝试节奏,才能让你持续受益。

6. 我心里那杆秤:什么交给AI,什么必须自己来

讲了这么多应对方法,最后说几个我自己一直在用的判断标准,也是我给自己的边界。简单清晰,不一定适合所有人,但可以参考。

第一,凡是能“描述清楚结果”的事情,优先交给AI。不管是写一个工具函数、生成测试数据,还是整理文档,只要我能用一句话说清目标,它大概率能做得不错。第二,凡是“一旦错了代价很大”的事情,必须自己审。支付、权限、数据删除、隐私合规、核心链路迁移,这些地方我会花双倍时间做人工审查,AI只负责出初稿。第三,凡是“需要持续判断和取舍”的事情,自己来。架构选型、团队分工、优先级排序,这些不是靠提示词能解决的,需要一个人拍板。

每年我还会做一次“自我盘点”:如果明天AI把我的工作库一键接管,我最想留下的能力是什么?答案是:理解真实问题的能力,和把问题转化成方案并落地直到别人能用的能力。这两点,恰恰是AI时代最值钱的东西。你可以不认同AI很强,但你最好承认它在变强;你也可以不用AI,但你最好有一个不用它也能活下去的理由。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 1:26:59

xhEditor集成PDF导入:高亮与注释还原完整方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 1:26:50

AI论文工具实测:7款软件全流程跑分与写作闭环选型指南

1. 毕业季实测:为什么我把市面上叫得上号的 AI 论文工具全跑了一遍 上个月学弟来找我时,我正在帮另一位朋友改硕士论文的致谢段落,改到第三版还是被答辩秘书挑毛病。他苦笑着说,现在连致谢这种固定套路的文字都写不顺,…

作者头像 李华
网站建设 2026/9/10 1:26:43

libcurl 自定义 DNS 服务器:CURLOPT_DNS_SERVERS 完整指南

libcurl 自定义 DNS 服务器:CURLOPT_DNS_SERVERS 完整指南 【免费下载链接】curl A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQ…

作者头像 李华
网站建设 2026/9/10 1:25:12

前端框架为何弃用Class?函数组件与Hooks的底层逻辑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 1:25:07

AQ1100高通量靶标定量系统:从样品到结果的自动化流水线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华