技术知识
更多技术实战教程请看:编程导航知识碎片
后端技术知识
- 什么是缓存?
- 什么是数据库?
- 什么是工作流技术?
- 什么是反向压力?
- 什么是热数据探测?
- 数据库也能版本控制?
- 搜索引擎是怎么工作的?
- 我们学并发时,到底在学什么?
- 除了 MySQL,这些数据库你都认识么?
- 容器分析: Runc、Containerd 和 Docker
- 内存为什么要分段?
- 什么是插件式架构?插件式架构的关键是什么?
- 什么是一致性哈希
- 浅谈进程线程和协程
- 深入物理内存管理和虚存分配
- 浅谈linux内存管理
- Linux 环境分析进程的 6 种常用系统工具
- JVM 中 Java 对象是如何被创建的?
通用技术知识
- 什么是前后端分离?
- 什么是大数据?
- 什么是区块链?
- 什么是全栈工程师?
- 什么是重定向?
- 什么是单例模式?
- 什么是魔法值?
- 什么是负载均衡?
- 什么是多环境?
- 什么是魔数?
- 什么是 Linux?
- 什么是云开发?
- Hello World 是如何被打印的?
- 云开发需要学习哪些技术?
技术问题
前端技术问题
- 自动分批的网络请求
- 自动合并的网络请求
- 注册机模式
- H5 如何突破 12px 限制?
- 关于 URL 短链这类问题的思考
- 为什么 Node 要用 Winston 打印日志?
- React 弹窗组件用的 CreatePortal 是怎么实现的?
- React 组件库都是怎么打包的?
- JSDoc 真能取代 TypeScript?
- Node 如何通过 gRPC 调用 Java 微服务?
- Nest 实现扫码登录
- 推送数据?也许你不需要 WebSocket
- 基于 Axios 封装一个完美的双 token 无感刷新
- 图解串一串 webpack 的历史和核心功能
- 图解 history api 和 React Router 实现原理
- 用 Node 写一个批量删除 node_modules 的工具
- 理解了 HSL 颜色表示法,就能实现 ColorPicker 组件
- React 组件和 hook 如何写单元测试?
- 用React实现一个简单的日历组件
- 通过调试技术,我理清了 b 站视频播放很快的原理
- 作为 Node 程序员,如何收发邮件更显专业?
- 让你 React 组件水平暴增的 5 个技巧
- 5 个提升你 Dockerfile 水平的技巧
- 用 git bisect 快速定位你想找的 commit
- 快速掌握最流行的原子化 CSS 框架 —— Tailwind
- 如何用 Chrome DevTools 的 Performance 工具做网页性能分析
- 邮件模版兼容性适配问题
- 如何限制用户重复点击的点赞功能?(Mongodb+Node.js+React)
- Vue 主要采用 CLI 和 CDN 两种方式引入,他们各自的优缺点是什么呢?
- 如何解决表格查询、编辑功能和默认头像问题?
- 如何实现像GitHub登录界面中的URL跳转?
- 实现 JS 控制的 SVG 渐变图标
- Webpack-stats-viewer 分析 React-virtualized 摇树优化失效问题
- 学习 Nuxt.JS ,如何优化 SSR 提高搜索引擎可访问性?
后端技术问题
- 用了socket就一定要走网络协议栈吗?
- Java 里面的继承关系有什么意义呢,为什么不自己创建方法来实现?
- FFmpeg:解决一切音视频问题的利器
- 如何优化处理大文件的操作需求,不扩展服务器资源?
- 如何提高单体并发量?
- String字符串为什么不可变?
- 高并发项目涉及的知识点有哪些?
- 如何解决并发场景下的数据安全问题?
- 如何构建设备数据中间件,技术和步骤?
- 如何优化千万级或亿级数据库的查询性能?
- 如何高效地处理多表查询数据?
- 通过案例学习:Golang Net/Http
- SpringBoot,防止爬虫爬取接口数据的方法有哪些?
- 开发了图片存储网站,但图片加载速度很慢,该如何优化?
- 学习控制台与界面结合,提高问题解决效率
- 如何高效处理一个200GB的CSV文件,分组合并数据的方案建议
- 如何统计商品曝光和访问量,推荐的解决方案是什么?
- 如何将多层嵌套的 JSON 数据存储到 MySQL 数据库中?
- 如何处理用户权限信息过大导致Redis缓存报错的问题?
- Python代码Demo:解析分析Json的key,Value并写入csv表格文件
- 刚毕业,如何解决业务中的慢 SQL 问题?
- 学习 MySQL 的不可重复读和幻读应注意哪些细节?
- 编程中的操作流程和配置文件记不住,怎么办?
其他技术问题
系统设计
什么是架构设计?怎么做好架构设计?
如何开发一个优秀的 SDK 或 API 接口?
如何设计出更稳定的程序系统?
如何根据前端用户的查询条件,在后端导出特定的数据?
如何收集项目日志?如何设计一个日志收集系统?
如何设计文件上传功能?
如何设计实现全文搜索功能?
如何设计一个实时排行榜系统?
如何设计较好扩展性的权限系统?
如何设计通用的产品付费机制?
如何设计一个 OJ 在线判题系统?
- OJ 系统的 5 种实现方案
- 项目实战: OJ 判题系统(已完结)
如何设计 YY 类软件?
如何在项目中使用 Redis 缓存?如何通过缓存提高项目性能?
- 项目实战: 伙伴匹配系统
如何在项目中使用消息队列?如何实现应用异步化和解耦?
- 项目实战: 智能 BI 平台
如何设计一个微服务系统?如何把单体项目改造为微服务?
- 项目实战: OJ 判题系统(已完结)
如何保证 API 接口调用的安全性?什么是 API 签名认证?
- 项目实战: API 开放平台
如何在项目中使用设计模式?如何提高系统的可扩展性?
- 项目实战: 聚合搜索平台
- 项目实战: OJ 判题系统(已完结)
如何实现不同数据库(或 ES)之间的数据同步?
- 项目实战: 聚合搜索平台
如何提高表格数据的导入效率?
- 项目实战: 伙伴匹配系统
如何设计数据库表?
如何设计一个爬虫系统?
如何设计一个服务监控系统?
什么数据结构能够提高存储、查询的优化效果?
实战教程
如何快速搭建自己的个人网站?如何部署开源项目?
- 如何搭建自己的个人博客?
- 如何搭建自己的文档网站? (VuePress 保姆级教程)
- 搭建自己的云笔记网站
- 【视频】搭建自己的数据可视化大屏
- 【视频】搭建自己的知识库网站
- 一些帮助你快速建站的工具
后端实战
- 一周上线百万级高并发系统
- 如何使用 Elasticsearch 来优化搜索体验?
- 实战开发类库,手写 Spring Boot Starter
- 精品 IDEA 开发插件大汇总
- 还能这么做需求?产品经理都吓到了
- 如何预防 rm -rf 命令?
- 如何去除字符串中的 "\n" ?
- 如何避免配置文件中的密码被泄露?
- 如何使用 Java 来处理表格? (Easy Excel 实战)
- 如何使用 Java 实现爬虫? (jsoup)
- 如何自动生成接口文档和在线调试? (Swagger 实战)
- 非常实用的 Java 工具库 (Hutool)
- 40 条 Redis 实战教学
Bug 复盘
- 域名过期之后,应该如何处理?
- 大量线上数据被污染,如何恢复数据?
- 写了7年代码,第一次见这么狗血的小Bug!
- 气炸!又一次被编辑器坑了!
- 记一次前端长整数精度丢失问题
- 越自信,Bug 越多
- 编程导航,凉凉!
- 万万没想到,这都能发现 Bug?!
- 这个 Bug,给我整得一愣一愣!
- 我竟被这个 Bug 坑了一周!
- 扒个知名项目的 Bug!
- 写了个百万级的生产 bug !
- B 站崩盘事故分析
- 被攻击了!事后分析
- 语雀 P0 事故中的一些思考:可监控、可灰度、可回滚
- 生产紧急情况怎么处理?
- Bug的生命周期:从发现到解决的全过程
- Bug组成要素和管理工具
其他教程
编程工具箱
热门文章
1
🎁 9 月& 10 月求职面经活动,来啦!
阅读 2.6k
·点赞 9
2
AI 时代下初级程序员还有未来吗?
结合鱼友们的文章以及自己工作经历(练习一坤年)有感而发(声明:个人观点,仅供参考)。
大家已经多久没有正经写过代码了呢?不是指给 AI 描述需求,让 AI 帮你生成代码,而是所谓的“古法编程”——打开编辑器,自己敲代码、查文档、调 Bug,一点一点把东西做出来。现在回头想想,大多数时候我们可能已经习惯了描述需求,而不是亲自动手实现需求。AI 编程正在成为越来越主流的开发方式,甚至可以说,大家已经习惯了“懒”:能让 AI 写的,就绝不自己写;能让 AI 查的,就懒得自己翻文档。问题来了:在 AI 已经如此强大的今天,还有必要学这些计算机基础知识吗?初级程序员还有存在的必要吗?
说实话,我自己现在也已经很少手写代码了。大多数时候就是把需求描述清楚,让 AI 去实现,然后自己再负责确认、测试和修改。因为大部分时候,就算我自己亲自动手写,也未必能比 AI 写得更好。更关键的是,AI 写代码实在太省事了。需求描述清楚,确认一下结果,剩下的时间完全可以去干别的事情。更有意思的是,人一旦习惯了“懒”,真的很难再回到以前那种勤快的状态。以前公司断网的时候,我虽然查不了文档,但至少还能先自己写,等网络恢复以后再补一下不确定的地方;现在断网了,我第一反应往往是等网络恢复。以前觉得这是工作效率,现在回头看,其实也是能力和习惯正在悄悄发生变化。
在 AI 编程的背景下,基础到底重不重要?如果只看“写代码”,你可能认为基础没那么重要了,因为你自己根本不动手写,又何谈基础?现在很多项目,架构可能是你参与设计的,需求是你负责沟通的,代码则交给 AI 实现,测试让 AI 帮你补,文档让 AI 帮你写,甚至连重构都可以继续交给 AI。说得难听一点,有些时候程序员更像需求的沟通器、AI 的翻译机。以前是人把需求翻译成代码,现在越来越像是人把需求翻译成 AI 能理解的机器语言描述。
但如果因此觉得“基础不重要”,那就真的大错特错了,基础是很重要的,只不过它的重要性已经发生了变化。以前基础决定了你能不能把代码写出来,现在基础更多决定了你能不能判断 AI 写出来的东西到底对不对。
AI 最让人难受的地方,并不是它不会写代码,而是它经常能够在大部分时间里表现得非常正确,然后突然在一个极不起眼的地方埋下一根针。99.99% 的代码看起来都没问题,剩下的 0.01% 却可能刚好是线上最要命的那个边界条件。等这根针真正扎出来的时候,可能炸掉的不只是一个方法,而是一大片业务,然后你再花几倍甚至几十倍的时间和 token 去让 AI 修这个问题,修完以后又可能在另一个地方埋下一根新的针。
我自己遇到过很多类似的情况:出了 Bug,让 AI 修改,它给你 A 方案;测试以后告诉它不对,它再给你 B 方案;B 还是不对,它继续给你 C 方案。到了这个时候,AI 要么开始在几个方案之间来回循环,要么开始一本正经地胡说八道,陷入一个怪圈(至今没找到好的解决方案)。更糟糕的是,AI 每次说得都特别像那么回事。如果你没有基础,根本不知道它说的是不是对的,只能继续相信它,然后不断试错。可如果你有基本的编程基础,至少可以把它生成的代码看懂,可以沿着调用链、数据流和业务逻辑一点一点分析,最终找到真正的问题在哪里。
基础的价值,从“我能不能写出来”,逐渐变成了“我有没有能力判断它写得对不对”。AI 是一把非常好用的剑,但剑再锋利,也要看执剑的人是谁。你至少得知道这把剑砍下去会发生什么,否则你不是在使用 AI,而是在把决策权交给 AI。
尤其是现在很多项目都在用所谓的 Vibe Coding,最大的风险并不是代码跑不起来,而是代码跑起来以后,写代码的人自己都不知道它为什么能跑。能运行和能上线,完全是两回事;能上线和能长期维护,又是另外一回事。一个程序能不能称得上“好”,绝不是看它能不能把功能跑通,还要看它的可维护性、稳定性、性能、安全性、异常处理、日志、边界条件,以及未来出了问题以后有没有人能接得住。你觉得 AI 写得“挺好”,不代表它真的好,因为你自己的判断标准可能已经被“能跑”这件事情降低了。
AI 不是黑魔法,它的输出质量很大程度上取决于输入、上下文、约束和验证。你给它一个模糊的需求,它当然可能给你一个看起来很完整、实际上漏洞百出的答案。更麻烦的是,AI 会非常自信地犯错,会把错误信息、错误逻辑甚至不存在的东西包装成一个完整答案。以前我们查资料,会下意识地交叉验证,会去看官方文档,会确认不同来源是不是一致;现在很多人因为 AI 太方便了,慢慢把这个习惯丢掉了。AI 说什么就是什么,最后出了问题,人反而成了 AI 错误的背锅侠。
这也是为什么我越来越觉得,AI 时代真正稀缺的可能不是“会不会写代码”,而是判断力。尤其是在 Coding 领域,这件事情会被无限放大。因为 AI 可以极大降低写代码的门槛,却不能自动替你建立一套可靠的审美和判断标准。没有判断力的人,AI 给他的是生产力;有判断力的人,AI 给他的是生产力放大器。两个人都在用 AI,但最终做出来的东西可能完全不是一个水平。
甚至从长期来看,过度依赖 AI 还可能带来另一个问题:独立思考和逻辑构建能力退化。以前我们写一个功能,需要自己拆需求、设计数据结构、推演流程、处理异常、不断试错,这些过程本身就是思考和学习。现在 AI 可以直接把一条完整的逻辑链摆到你面前,人很容易跳过中间那些最费脑子的推敲过程。短期来看,这当然非常高效;但如果一个人长期只负责提出问题和验收答案,而很少亲自经历问题拆解和解决过程,那么他的能力到底是在增长,还是只是在越来越熟练地使用工具,这其实值得我们认真想一想。
还有一个很现实的问题:AI 现在生成代码的速度已经远远超过人类,但它在工程化上仍然存在不少问题。主链路往往没什么问题,真正麻烦的反而是那些边缘情况。它特别喜欢在一些小方法里直接吞掉异常,又经常不愿意打足够的日志;注释可能写得很多,但真正出问题的时候,你会发现线上没有足够的信息帮助你定位。边界条件更是一个高频问题,同样的提示词、同样的逻辑,有时候它会考虑某个特殊条件,有时候又直接跳过去。AI 还很容易过度设计,尤其是在库表结构、抽象层和工程架构上,经常会把一个本来很简单的问题搞得异常复杂。
更痛苦的是,AI Agent 正在从“帮你写代码”走向“直接替你操作环境”。这意味着它的能力越强,错误的代价也越高。过去一个人想做大规模破坏性的操作,往往需要大量时间和步骤;现在一个 Agent 如果拥有足够权限,可能几条指令就能完成一个人类几乎不可能在短时间内完成的操作。所以未来真正需要解决的,不只是“AI 能不能把代码写出来”,而是权限、审计、回滚、测试、隔离和责任边界这些工程问题。AI 能力越强,兜底机制反而越重要。
这也解释了为什么高级程序员依然有价值。绝大多数 AI 生成的代码,本质上是在寻找从 A 到 B 最快、最直接的路径。但最快的路并不一定是最好的路。真实的生产环境从来不是一个理想环境:网络可能很差,设备可能很旧,数据可能异常,流量可能突然暴涨,数据库可能抖一下,甚至还可能遇到那些你以为已经不存在的 IE。真正复杂的工程问题,往往不是“正常情况下怎么跑”,而是“所有不正常的情况下怎么办”。调优、极端情况、系统稳定性、故障恢复、安全性以及长期维护,这些东西目前仍然需要大量工程经验。
而且没有哪个高级程序员是凭空出现的。所有所谓的高级,都是从基础、中级一点一点成长起来的。如果行业因为 AI 强大,就认为初级程序员已经没有培养的价值,那么短期看,企业确实省下了培养成本;但几年以后,当这一代高级工程师逐渐离开一线,又从哪里补充新的人才呢?没有人愿意培养初级工程师,人才断层迟早是会出现的。AI 可以帮助一个初级程序员快速获得接近中级程序员的生产力,却不能凭空替他积累十年的工程经验。
初级程序员还会不会存在?我认为会,但数量一定会缩水,而且岗位要求会越来越高。以前一个企业愿意招一个刚毕业的人,从基础工作开始慢慢培养;现在相当一部分基础工作已经可以由“中级程序员 + AI”完成了。高级程序员更多去解决项目中的复杂问题,中级程序员借助 AI 承担大量开发工作,而原本属于初级程序员的那些简单、重复性的工作,正在被一点一点压缩。岗位少了,要求自然就高了,甚至可能出现一种很现实的情况:一个刚毕业的学生,企业嘴上招的是初级,实际上要求的已经接近过去中级程序员的能力。学历、项目经历、实习经历、基础能力,能对上就来,对不上就算了。因为企业是挣钱的地方,不是职业培训机构,不会迁就一个完全没有生产力的人。
所以现在的初级程序员,处境确实尴尬了很多。干吧,要忍受各种不合理;不干吧,也未必有更好的去处。尤其对于普通专科、二本毕业生来说,这个变化可能会更加明显(为了生活的苟且,为了碎银几两,接收社畜、压榨)。以前你还有机会靠时间慢慢熬出经验,现在这个过程正在被 AI 压缩。你不能再把“我会写代码”当成核心竞争力,因为 AI 写得不仅比你快、比你多,还比你写的更好;你真正需要建立的是理解代码、判断代码、设计系统、具备审美、解决问题和承担结果的能力。
说到底,AI 并没有让程序员变得没有价值,它只是把程序员的价值从“生产代码”逐渐往“判断、设计、验证和兜底”上推。以前一个程序员一天写几万行代码可能是值得骄傲的事,现在 AI 一分钟就能给你生成几十万行代码,代码本身已经越来越不值钱了,真正值钱的是,你能不能知道哪些代码根本不应该写,能不能判断 AI 的方案是不是靠谱,能不能在它陷入死循环的时候找到真正的问题,能不能在系统出事故的时候把它救回来。
未来的程序员可能越来越像一个工程师、架构师、AI 协作者和一个具备审美能力的人的结合体,而不再只是一个“写代码的人”。AI 在不断变强,甚至AI 现在的架构已经开始走向预测编码的方向了。但只要 AI 还会犯错,只要现实世界还存在复杂的边界条件,只要项目还需要对业务、用户和生产环境负责,那么“判断力”就不会过时。
基础到底要不要学?我的答案是:要学,而且基础还很重要,不是因为你以后还要每天手写几千行代码,而是因为你总得知道 AI 给你的东西到底是什么,你可以不用像以前那样知之甚深,但至少要能看懂简单的代码知道一些原理,否则没有一点基础终究是空中楼阁。能力不是权限,AI 能做到什么,不代表它可以做什么,把“能做到”误当成“可以做”迟早会出大问题的,你可以不再亲自挥剑,但至少得有能力判断这一剑应该往哪里挥。
AI 时代,未来是超级个体和领域专家的世界,真正危险的从来不是不会写代码的人,而是一个人拥有了极强的代码生成能力,却失去了判断这些代码对不对的能力。剑越来越锋利了,真正需要担心的,是执剑人的手,我们要成为执棋者,不是棋子,AI 是我们的工具,而不是 AI 的工具。
阅读 1.5k
·点赞 18
3
我终于能用 GPT-6 了!实测一波,Codex 要杀疯了?
阅读 1.9k
·点赞 6
4
MOSAEL,一个开源的AI原生视频工作站。智能体、工作流、无限画布,你想要的TA都有!
阅读 1.2k
·点赞 8
5
刚刚 DeepSeek V4.1 Flash 正式发布,竟然干掉了自家的 Pro 模型?!梁圣回归
阅读 1.3k
·点赞 7




