V2EX 热门帖子
1. sublimetext 开发 GO 使用体验怎么样
一直使用 vs code 开发 go,主要搞 web ,最近体验了一下 sublime-text ,发现这个曾经流行的开发工具对 GO 的支持很一般,插件还是很多年前的,是不是我不会配置,有没大神使用 ST 开发?
作者: siesta | 发布时间: 2025-12-26 15:49
2. 有必要把内网服务开放到公网吗?
我现有方案是开放到公网,在纠结要不要切换会内网,通过 Tailscale 访问。
作者: mssi | 发布时间: 2025-12-26 01:18
3. 学习能力不是很强 现在需要学 py 有什么好的推荐吗?
fastapi 框架。 很明确了就是要学这个。
原来是 phper ,后来一直搞数据库 服务器了…
py 需要从哪里入手,就是希望找一些获得比较实用的学习资料的捷径 推荐一下书籍 博主之类的。
要带娃 实在是没有太多的时间 感激不尽!!!
作者: gyinbj | 发布时间: 2025-12-26 16:55
4. 吐槽一下最近找工作的经历
南京,五年 Java 后端,9 月底拿了大礼包,玩了一段时间,十二月初开始找,投来投去有两家面试,南瑞和荣耀的外包,首先南瑞一面过了,然后机试竟然还有 jQuery 相关的题目哭笑不得,还有保密相关的多选没接触过,然后就是编程题不给切屏用 IDE ,手写,而且网页的 IDE 明明导了包还是报错真的蠢,最终机试挂了,然后是荣耀外包面试机试都过了,定薪只给 13.2k ,要 15k ,hr 说最多只能给 14.2k ,而且还要求 9 工时,然后决定去的时候 HR 那边又突然说公司看这么多人还在投决定只能给 13.4k ,拒绝了,只能继续再投了。
作者: Vesc | 发布时间: 2025-12-26 09:04
5. immich 有备份还是炸了
1 系统备份 pg 到文件,默认只保留最近 15 次备份文件
- 2 数据备份用的 sync ,会同步删除( DB 备份被删除,无法恢复)
作者: mintongcn | 发布时间: 2025-12-26 12:13
6. 「全职远程工作」诚聘服务端开发者(3~ 7 年工作经验, Python + AI + Rancher/K8S)
写在招聘信息之前的话
我们是一支国内为数不多的不依赖融资,完全靠自身独立发展的远程产品创新团队。我们立足于为人们提供优秀的软件产品,提升人们生活和工作的创造力,已经历史 12 年,旗下有三款享誉国内外的 App:Zine ,Varlens ,Lattics ,官网:auramarker.com ,可以深入了解
我们倡导 Enjoy Work ,Enjoy Life ,并在实践中践行之:
- 成员分布在多个城市,通过互联网紧密地协同工作,不打卡不坐班,以任务目标驱动;
- 倡导 Better ,Faster ,Smarter 的工作风格,不安排节假日加班,更倡导周末多陪伴家人和充电学习;
- 注重深思熟虑,提前计划,高效率高质量的一次性把工作做好,减少无谓的试错和可避免的弯路;
- 持续学习与持续创新,保持独立见解,了解行业与技术发展,但不盲从,持续改进自己的工作方法,不断提升工作效率与质量,追求零缺陷;
- 将良好的设计品味、先进的技术,以及具有乐趣的使用体验,三者融合在一起的产品理念,创作真正能够给人们的生活带来便利,激发人们的创造力和生活品质的产品,并由此获得可持续发展的收入。
由于我们奉行远程工作,而每个人的工作经验和生活城市不同,因此没有列出薪酬水平,会以各自的实际期望评估,达成一致。我们期望寻找长期的合作伙伴,寻找外包和短期工作的也请勿扰,谢谢。
-—— 职位说明 ———
服务端高级开发者:1 位
岗位职责:
- 参与团队 AI 功能和技术的研究与开发;
- 参与团队产品的后端能力开发,与前端和客户端团队紧密协作;
- 参与服务器的日常维护,解决可能突发的网络故障;
岗位要求:
- 本科及以上学历(不限专业),工作 3 ~ 7 年,参与过至少三个后端项目,其中一个有两年以上的实际运营发展;
- 对服务端技术有良好的品味与热情,熟知服务端技术好和架构的新进展,愿意专注服务端技术的钻研;
- 对 AI 模型的部署和算法调优有兴趣,愿意深入研究和优化 AI 多模型的算法性能和质量,有过 AI 模型部署和实际开发经验更佳;
- 精通 Python ,熟练使用 Django ,用 Django 完成过线上项目;
- 了解业界服务端架构设计的最佳实践,参与过分布式系统的设计与开发,并熟知整个构架;
- 熟悉 Rancher ,Kubernetes 原理、有较复杂网络服务维护和调优经验;
- 对高并发编程有较丰富的经验,能结合业务特点,基于数据统计,分析系统的性能瓶颈,并能依据 ROI 进行评估和优化;
- 熟悉 PostgreSQL/MySQL 的性能问题追踪、调优;有零缺陷的质量理念,了解常见的服务端程序安全隐患和防治方法,有过故障自动化告警与定位经验更佳;认同 TDD (测试驱动开发),并坚持实践 TDD;熟悉 Linux 环境,可快速定位生产环境问题的能力;
- 理解并熟练应用敏捷开发,DevOps ,CICD 等开发过程;能够远程工作,团队协作,自我管理优秀,沟通问题条理清晰;
- 英文能力好,至少能流畅阅读英文资料,并与国外开发者交流问题;
- 熟悉 Go 语言的加分;
- 熟悉前端开发的加分;
- 了解网络安全的基本原理,能够制定网络安全防范措施的加分;
以上职位可以享受的福利:
- 远程工作,与家人在一起,并且不将自己限定在某个城市和空间,可以自由旅行;
- 目标管理而非时间管理,可以自己更好的平衡工作和生活;
- 可以挑战一切认为不合理或者可以做的更好的地方,拥有很大发言权,团队会倾听你的高见;
- 工作出色会有激励股权,享受团队一起长期携手努力和成长的红利;
可能遇到的挑战:
- 长期远程工作对自身的沟通能力、理解能力、以及学习能力都是巨大的挑战,因为很多事情需要主动的沟通和交流,以及主动的学习,并非很多人适合;
- 长期的远程工作会带来孤独感,因此更适合已经组建了家庭,并且有着自己广泛兴趣爱好和成熟的社交圈子的人士。
如果对以上职位感兴趣的,欢迎联系我们,请将你的简历发至我们的招聘邮箱: hr#auramarker.com
作者: Zine | 发布时间: 2025-12-26 16:41
7. claude 圣诞使用量翻倍活动。
大家别浪费了。
Holiday 2025 Usage Promotion
在活动期间,Claude 的使用限额将临时提升至 2 倍:
5 小时使用限额:提升至原来的 2 倍。
每周使用上限:提升至原来的 2 倍。
重置机制:在活动开始时( 12 月 25 日),所有用户的每周使用上限都会被重置。
适用范围:适用于 claude.ai 网页版、Claude Code 以及 Claude 的 Chrome 扩展。
- 活动时间 开始时间:2025 年 12 月 25 日 00:00 (UTC)
结束时间:2025 年 12 月 31 日 23:59 (UTC)
活动结束后,使用限额将恢复到你订阅计划的标准水平。
- 适用人群 符合条件的订阅者:拥有活跃的 Pro 、Max 5x 或 Max 20x 计划的个人订阅用户。
新旧用户均可:现有订阅者或在活动期间新加入的订阅者都符合条件。
不适用范围:Team (团队) 和 Enterprise (企业) 计划不参与此活动。
作者: snitfk | 发布时间: 2025-12-26 07:43
8. Vibe Coding 了一个天气时钟看板
旧平板可以用起来
支持 Home assistant 控制
作者: Cheesen | 发布时间: 2025-12-26 09:26
9. 前端样式请教
有大佬知道 https://antfu.me/posts blogs 的这种花纹是怎么做的吗?
作者: karashoukpan | 发布时间: 2025-12-26 15:22
10. AWS 的控制台打开巨慢,有没有大佬知道什么原因?
Chrome 浏览器每次想登录 AWS 控制台都巨慢,一直转圈圈,转几分钟才能加载出来,尝试过换网络,VPN 开全局,换浏览器,都无解。
作者: notejava | 发布时间: 2025-12-26 13:01
11. 有什么办法彻底把视频号从微信禁用了,发现页关闭了,公众号信息流还能刷到,总是忍不住刷 app 还没发卸载
作者: CathayChen | 发布时间: 2025-12-26 06:05
12. IDEA 2025.3 版本开始全部免费了?
以下是官网的说明,可以免费用于商业和非商业项目 。
https://www.jetbrains.com/zh-cn/idea/whatsnew/
统一发行版
从 2025.3 版本开始,IntelliJ IDEA Ultimate 和 Community Edition 将变成一款统一产品 – 共用一个安装程序和一个更新通道。
在这种新设置下,Ultimate 订阅可以解锁您熟悉的所有高级专业功能。
即使没有 Ultimate 订阅,该 IDE 也具有完备的功能,可以免费用于商业和非商业项目。 它不仅包含 Community Edition 的全部功能,还提供数据库集成、Spring 项目创建向导,以及针对框架特定代码的基本高亮显示,并且所有功能均免费提供。 基于这一点,统一发行版让探索 IntelliJ IDEA 对专业开发的强大支持变得前所未有的简单。 您可以一键激活 Ultimate 试用,立即开始体验它提供的所有功能。
无论您使用的是 Ultimate 还是 Community Edition ,您的 IDE 都将通过常规补丁更新流程自动更新为统一发行版。 即便进行了统一,我们仍成功将发行包大小较原先的 IntelliJ IDEA Ultimate 缩小 30%,这意味着您无需担心这项变动会导致 IDE 运行缓慢。
我们对开源的承诺始终如一,将确保 GitHub 上 IntelliJ IDEA 代码库中的开源部分得到及时更新并向所有人开放。
您可以点击此处详细了解这项变动的相关信息。
作者: magese | 发布时间: 2025-12-26 02:45
13. [万字长文] 效率就是一切:并行计算如何重塑 AI 训练与现代应用
这三个看似无关的问题,背后藏着同一条主线:无状态 → 并行计算 。
本文分三部分:
- 并行已经重塑了什么 ——云计算和 AI 训练的成熟实践
- 推理为什么还是串行的 ——自回归生成和思维链到底是怎么回事
- 推理并行化的探索方向 ——从学术思路到前沿框架
…
从云计算到 AI 推理,一文看懂并行计算的底层逻辑
从云计算到 AI 训练,从游戏架构到智能工作流,**”解耦”与”并行”的思维模式**正在改变整个技术世界。
这不仅是 AI 时代的效率密码,更是构建一切可扩展系统的底层逻辑。
在微信支付的复盘中,一个影响开发效率十分高频的词就是**”等待”**。
想想你手头最慢的那段流程——不管是写代码、写文档、做运营,还是其他什么——慢在”计算”,还是慢在”等待别人/等待上一步”?你能把哪一段改成自包含?
并行的本质不是”同时做很多事”,而是”让每件事都不需要等别人”。
无状态不是没有状态,而是把状态交给别人保管,自己轻装上阵。
自包含是解耦的终极形态:我只需要知道”做什么”,不需要知道”来龙去脉”。
作者: xiaoshu | 发布时间: 2025-12-26 03:24
14. 猫猫自托管方案分享
底层基建
我目前使用Dokploy作为底层应用。所有容器都部署在这个上面,此前用的是 EasyPanel 一款闭源的产品。替换他的目的就是因为他很多功能都是需要付费的,而且由于不开源,也不能贡献什么。
用这些的目的呢,其实也很简单,就是懒,上面有很多现成的模板和做好的备份方案,相比于自己管理日志简单的多。
Dokploy 是一个开源的轻量级 PaaS 平台,定位上可以视作 Vercel / Netlify 的自托管替代方案。
主要特性:
- 支持 Docker / Docker Compose
- Git 自动部署
- 自动 HTTPS / SSL
- 内置备份与回滚机制
- 资源占用低,部署简单
相关文章:写过一些教程,可以看看
CDN
我使用的是 Cloudflare CDN + Zero Trust
统一接入 Cloudflare CDN , 部分私有访问的借用 Cloudflare Zero Trust 实现:
- 内网服务安全暴露
- 服务隐藏与访问控制
备份
这里我使用 HostBrr 的 7 美元一年 500G 的存储盒(通过 SFTP/rsync 定时同步)和 Cloudflare R2 结合备份。
邮局
NameCrane
NameCrane 提供域名邮箱服务,20 刀 3 年 的套餐性价比很高,支持自定义域名收发邮件。
相当的经济实惠,还支持每小时 300 封的邮件投递,投递速度比较慢。
短链接
S.EE
S.EE 兽兽短链接服务,终身 55 刀 买断。自己搭短链接服务太麻烦,这个价格买个省心。
应用
这里有很多,这里就不在这里一个个展示了。
有兴趣可以去我博客看看。
作者: sayyiku | 发布时间: 2025-12-26 01:22
15. 我用 NestJS 结合 YJS 实现了一个工作流协同编辑的 Demo,方便想学习 YJS 协同的朋友
这两天使用 NestJs 结合 YJS 实现了一个工作流协同的 DEMO ,前后端协同方法都是使用 y-protocol 的方法自定义实现的,对于想学习 YJS 有很大的帮助,感兴趣可以对源码进行学习。
源码地址:FlowSync
本项目是 DocFlow 项目协同编辑功能的基础实现示例。如果你想学习更完整的协同编辑解决方案(包括富文本编辑、权限管理、AI 集成等企业级功能),请访问 DocFlow 项目。
💬 联系作者: 如有问题或想深入交流,欢迎添加作者微信
yunmz777
作者: moment082 | 发布时间: 2025-12-26 08:29
16. gmail 支持修改邮箱用户名,大概什么时候会全面开放?
https://support.google.com/accounts/answer/19870
想要新用户名,但又不想注册新账号,因为新账号可能风控更高。
如果全面开放的话就可以解决这个问题了,目前还没有全面开放,不知道还要等多久。
作者: zictos | 发布时间: 2025-12-25 16:08
17. gemini 一个对话窗口用久了 胡说八道?
我在一个新的对话窗口 投喂了一些相关资料,主要是关于股票类方面的。 一开始用着挺好不过用了两三天,开始出现幻觉 驴唇不对马嘴 对牛弹琴似的。 大家有这种情况么? 目前是 pro 版本
作者: crownz | 发布时间: 2025-12-24 23:30
18. 请教个 vercel 自动部署的问题
各位大佬好,我现在用 vercel 做了一个纯前端的项目,通过 github 更新,但是我每次更新到 github ,vercel 都不会自动部署。现在我每次部署,都要删了原来的旧项目,在重新从 GitHub 拉过来,再设置域名。请问 vercel 的自动部署,是需要啥特殊设置吗?
作者: bingkunzhao | 发布时间: 2025-12-26 04:35
19. Google geimini pro+youtube 开通
google geimini pro+youtube 会员想开个美区的。有教程吗。现在最低能做到多少
1. 好像先锁区?然后 apple 土区内购?
具体流程忘记了
作者: orluna | 发布时间: 2025-12-26 05:04
20. [开源] 将 react 的 hooks 和 组件化思路带入 go 的 TUI 开发。
最近想搞一搞 agent cli 开发。UI 层面,node 有比较成熟的 ink 方案。
但是看了下 go TUI 相关的解决方案,描述 UI 的方式有点别扭。当然可能是我没找到更好的实现思路。
所以实现了 rego ,取 react + go 的意思。
话不多说,先上代码。
package main import ( "fmt" "github.com/erweixin/rego" ) func App(c rego.C) rego.Node { count := rego.Use(c, "count", 0) rego.UseKey(c, func(key rego.Key, r rune) { switch r { case '+': count.Set(count.Val + 1) case '-': count.Set(count.Val - 1) case 'q': c.Quit() } }) return rego.VStack( rego.Text("Rego Counter").Bold(), rego.Text(fmt.Sprintf("Count: %d", count.Val)), rego.Spacer(), rego.Text("[+] 增加 [-] 减少 [q] 退出").Dim(), ) } func main() { rego.Run(App) }运行效果:
Rego Counter Count: 0 [+] 增加 [-] 减少 [q] 退出仓库: https://github.com/erweixin/rego
对于多组件的使用可以参考: https://github.com/erweixin/rego/tree/main/examples/gallery
再贴一个 stream 组件的 demo 吧。
https://github.com/erweixin/rego/blob/main/examples/stream/stream_demo.gif
欢迎各位大佬试用、提 Issue 或 PR 。如果你也喜欢这种“在终端写 React”的思路,欢迎给个 Star 支持一下!👏
作者: weixind | 发布时间: 2025-12-26 03:34
21. 有没有研究中兴 NUBIA M153 豆包 AI 手机的老铁
最近搞了一台豆包 AI 手机,想用 ADB 看看系统里跑了些啥,进开发者选项开了 USB 调试都不行,有没有老铁研究过的可以一起交流一下
作者: FranzKafka95 | 发布时间: 2025-12-26 03:22
22. “快手直播事件”引发的技术思考
先来看下,近几年大厂发生的几个影响较大的运营事故:
这几起事件的共同点:影响范围广、故障时间长、造成非常负面的舆论影响;
这次快手的事情,还是远远超出了我的想象,服务故障只会影响正常使用,但是被攻击进而导致了大面积非法活动 ;对于监管来说,没有比这更严重的事情,属于妥妥的红线 。
为什么会发生
黑客、灰产,从互联网诞生之初,就一直存在,今天我们不去讨论黑客如何操作大规模账号、如何进行的实名认证,我们从开发这个角度去考虑,怎样去避免事件的发生?
直播和视频播放不一样,它的内容属于实时产生,平台没有办法提前审核;因此直播平台建设怎样的审核机制,就关系平台能否控制用户的直播内容。
大部分直播审核机制我们可以简化为上图:截取画面、音频等,通过模型自动化判定,然后再人工复审,最后处罚封禁。
瓶颈节点
在开发中,我们经常会提一个瓶颈节点的概念,意味着它决定着整个链路的承载量,如果它停止工作,则整个链路瘫痪。
而在上面的审核链路中,可以认为人工复审是一个瓶颈节点,因为人力是有限的;也许平时只需要 1000 个审核员既可以应对,但是当极端情况出现,同时涌现出上万个甚至更多非法直播时,这套机制自然就被攻破了。
我们可以猜测,黑客操作大量账号,同时开启非法直播,当部分账号被封禁后,又不停的新增非法账号直播,人工复审节点一直处于过载状态,没办法处理全部的审核。
可能的解决方式
假设我们按照上图的审核机制,怎样优化可以解决同时出现大量非法直播的问题呢?
自动判定节点
根据模型分析结果,辅助额外账号信息,自动判定是否需要“二次人工复审”,对于不需要的案例,直接处罚。当然自动判定存在误判的风险,而快手这次事件,可以看到大部分直播是常规的淫秽视频,通过模型辅助账号信息是可以精确判定的。
为了让自动判定足够精确,我们需要做些什么?
- 模型不断训练更加精准
- 收集更多维度信息,账号活跃度、登录 ip 、设备等等风控数据
目的
减轻“人工复审”节点的压力,使它不再是瓶颈节点,是我们的最终目的,毕竟其他节点都可以通过扩容的方式解决。也许自动判定可能会存在误判的情形,但是我们可以不断优化,不断减少误判的概率。
思考
小概率事件
对快手而言,“同时出现大规模非法直播”是一个小概率事件,在它们设计审核机制时,可能也有考虑到过?但是可能认为“几万人同时直播黄片”是几乎不可能出现的事情 ,因此并没有做预案。
在互联网领域,尤其是后端模块,海量用户+长时间运行,任何小概率 bug 都演变成必然触发 ;如果没有完美解决方案,则往往可以采取有损的妥协折中方案。
欢迎快手同学现身说法!
最后宣传下自己的技术公众号:欢迎关注,讨论交流
![]()
作者: youngxxx | 发布时间: 2025-12-25 07:07
23. Nature vs Golang: 性能基准测试
nature 是一款较新的编程语言,其轻量简单,易于学习。在设计理念和运行时架构上参考了 golang ,同时有着更丰富的语法特性,更适用于业务开发,并在持续探索更广泛的应用领域。
性能是衡量编程语言核心竞争力的关键指标,接下来我们将从 IO 并发、CPU 计算、C 语言 FFI 、协程性能四个维度,并以 golang 作为基准对 nature 编程语言进行性能测试。
测试环境
配置项 详情 宿主机 Apple Mac mini M4 ,16GB 内存 测试环境 Linux 虚拟机( Ubuntu 6.17.8 ,aarch64 架构) 编译器 / 运行时版本 Nature:v0.7.0 ( release build 2025-12-15 ) Golang:go1.23.4 linux/arm64 Rust:cargo 1.85.0 Node.js:v20.16.0 所有测试均采用相同的代码逻辑实现,文中代码示例均以 nature 编程语言为例。
IO 并发
IO 并发是网络服务的核心能力,本测试通过 HTTP 服务端压力测试,综合考察语言的 IO 调度、CPU 利用率与 GC 稳定性。
nature 代码示例
import http fn main() { var app = http.server() app.get('/', fn( http.request_t req, ptr<http.response_t> res):void! { res.send('hello nature') }) app.listen(8888) }ab 工具测试命令
ab -n 100000 -c 1000 http://127.0.0.1:8888/
- -n 100000: 总请求数 10 万次
- -c 1000: 并发数 1000
测试结果
可以看到 nature 在 HTTP 并发性能上超越了 golang ,这对于早期版本的编程语言来说可以说是不错的成绩。
由于 nature 和 node.js 均使用 libuv 作为 IO 后端,所以 node.js 也参与到基准测试中(libuv 线程不安全,node.js 和 nature 的事件循环均在单线程中运行),但 nature 作为编译型语言其并发处理能力远胜过 node.js 。
CPU 计算
使用经典的递归斐波那契数列计算
fib(45)来测试语言的 CPU 计算与高频函数调用开销。nature 代码示例
fn fib(int n):int { if (n <= 1) { return n } return fib(n - 1) + fib(n - 2) }测试方法
time ./main 1134903170./main 2.50s user 0.01s system 101% cpu 2.473 total测试结果:
nature 和 golang 均采用自研的编译器后端,性能上也相差无几。而耗时高于 rust 的主要原因之一是两者在函数运行前进行了额外处理。
golang 采用了抢占式调度,不需要关注 GC safepoint ,但仍需要关注协程栈是否需要扩容,也就是下面的汇编指令
# more stack f9400b90 ldr x16, [x28, #16] eb3063ff cmp sp, x16 540002a9 b.ls 7869c <main.Fib+0x5c> // b.plasnature 采用了协作式调度,所以需要处理 GC safepoint 。但 nature 采用共享栈协程,所以不需要关心栈扩容问题。
# safepoint adrp x16, 0xa9d000 add x16, x16, #0xeb0 ldr x16, [x16] cmp x16, #0x0 b.ne 0x614198 <main.fib.preempt>nature 的 safepoint 实现仍有优化空间,若后续采用 SIGSEGV 的触发模式,函数调用性能将会得到进一步提升。
nature 和 golang 采用了截然不同的调度策略和协程设计方案,这会带来哪些不同呢?不妨看看后续的测试 👇
C 语言 FFI
通过调用 1 亿次 C 标准库中的 sqrt 函数,测试与 C 语言的协作效率。
nature 代码示例
import libc fn main() { for int i = 0; i < 100000000; i+=1 { var r = libc.sqrt(4) } }测试结果
可以看到在 C FFI 方面,nature 相较于 golang 有着非常大的优势,这是因为 golang 的 CGO 模块有着非常高的性能成本,独立栈协程和抢占式调度设计与 C 语言难以兼容,需要经过复杂的处理。
而 nature 的共享栈和协作式调度设计与 C 语言更兼容,不仅仅是 C 语言,只要符合 ABI 规范的二进制库,nature 都能直接进行调用。
在高性能计算、底层硬件操作等场景中,nature 可无缝集成 C / 汇编编写的核心模块,弥补 GC 语言在极致性能场景下的不足,兼顾开发效率与底层性能。
协程
协程是现代并发编程的核心组件,本测试通过 “百万协程创建 + 切换 + 简单计算” 场景,评估 Nature 与 Golang 的协程调度效率、内存占用与响应速度。
nature 代码示例
import time import co var count = 0 fn sum_co() { count += 1 co.sleep(10000) // ms, Remove this line if no sleep } fn main() { var start = time.now().ms_timestamp() for int i = 0; i < 1000000; i+=1 { go sum_co() } println(time.now().ms_timestamp() - start) // create time int prev_count = 0 for prev_count != count { println(time.now().ms_timestamp() - start, count) prev_count = count co.sleep(10) } println(time.now().ms_timestamp() - 10 - start) // calc time co.sleep(3000) // ms }测试结果
语言 创建耗时(ms) 计算耗时(ms) 无 sleep 计算耗时(ms) 占用内存 Nature 540 564 170 900+M Golang 1000 1015 140 2500+M nature 的协程在综合性能上非常优秀,内存占用更是远低于 golang 。而这是建立在 nature 的协程调度器未进行优化的前提下,预计在后续的版本中 nature 的协程调度器会进一步优化,届时将会有更加亮眼的表现。
总结
这是一次非专业的性能测试,但在粗略的测试中,nature 编程语言展现出了超越预期的能力与潜力。作为早期的编程语言,其运行时和编译器还有着非常大的优化空间,在正式版本发布时性能将进一步提升。
以现在的性能表现来看,nature 无疑是值得关注和尝试的编程语言,尤其是在云原生、网络服务、API 开发等服务端开发领域。
这是 nature 编程语言的官网 https://nature-lang.cn/ 如果你感兴趣的话也可以加入讨论组,v ➡️
nature-lang
作者: weiwenhao | 发布时间: 2025-12-22 02:01
24. Win11 25H2 Jet OLEDB 4.0 无密码 MDB 报密码错误,微软改了验证逻辑?
最近维护一批依赖 Microsoft.Jet.OLEDB.4.0 + 无密码 MDB 的 90 年代/2000 年初老软件,在 Win11 25H2 遇到诡异问题,请教各位:
核心现象
- 未打某次 Windows 更新前,老软件(如 MDBPlus.exe )能正常连接无密码 MDB ;
- 更新后,所有依赖 Jet OLEDB 4.0 的老软件均报
Not a valid password,但 32 位 PowerShell 手动加Jet OLEDB:Database Password=;声明空密码,能正常访问 MDB ;- 回滚更新后恢复,重新更新问题复现。
已尝试的修复(对老软件无效)
- 重新注册 SysWOW64 下 Jet 相关 DLL ( msjet40.dll/msjetoledb40.dll 等);
- 补全 Wow6432Node 下 Jet 的 CLSID/ProgID 注册表项,权限配置正常;
- 修改 Jet 4.0 引擎注册表,禁用加密验证( Encryption=0 );
- 老软件以 Win7 兼容模式+管理员权限运行。
关键疑问
- 微软在 Win11 25H2 更新中,是否故意调整了 Jet OLEDB 4.0 的密码验证逻辑 (比如强制显式声明空密码)?
- 这种调整是推动迁移 ACE 驱动,还是兼容性疏漏?有无官方说明?
- 对无法改连接字符串的老软件,除回滚更新外,还有底层修复方案吗?
Jet OLEDB 4.0 已是 20 多年老组件,实在费解微软为何改动验证逻辑,求大佬解惑!
作者: 1564307973 | 发布时间: 2025-12-25 17:14
25. firefox 上使用网页版 gemini 经常性导致整个 windows 桌面都严重变顿
这种顿不是卡,就像你在电脑上占用全部 cpu 线程编译一个源码或跑一个程序一样,按个右键菜单都延迟半天才弹出来这种。各位是这样吗?
作者: jiaoyidongxi | 发布时间: 2025-12-25 12:55
26. google 账号地区显示日本 可以调用 aistudio 的 flash 接口 也可以用网页版 但是没法升级 pro
提示 此账号无法订阅 Google AI 方案 Google AI 方案在部分国家/地区无法使用,也不适用于未达到特定年龄的用户 怎么解 十几年的老帐号了 不太想换
作者: xwjlucky | 发布时间: 2025-12-25 01:55
27. AI 是不是基本杀死了 blog
特别是技术型博客,类似 CSDN ,基本上在 AI 面前一文不值。 其他的博客,也好不到哪里去。
作者: 8675bc86 | 发布时间: 2025-12-23 08:18
28. 苹果企业开发者境外收款问题咨询
自己注册了个人公司开发 app ,苹果开发者收款最终通过苹果的境外公司汇入,因为未了节省成本,办理的是小银行平安银行,银行说境外汇款需要审核资料,搞了好几周都没搞定。有没有大佬搞过,其他银行需要审核吗。
作者: devcai | 发布时间: 2025-12-25 09:08
29. 我的 app 被人干了,颠覆了我的认知!
上周我 app 用户群来了一位不速之客,发了一张图片
我一看,我艹,这不被破解了嘛。 随即我踢了他,然后当天下午加了他 wx ,他同意了。 整个聊天过程没有急眼,他还表明破解的这个包没有流传出去。 因为那个人只愿出几十块钱,他肯定不会成交的,纯试试水,就破了。
从聊天记录我总结出以下几点:
1:他不懂安卓代码,纯靠几个工具 [其中有 MT 管理器[狗东西,开发者天敌]] 就能快速重签打包,我在 Java 和 cpp 中有几个签名验证的埋点,他依然能打包,并正常运行。
2:我的 app 核心功能要用到安装包中的本地带密 zip ,解压密码由后台配置信息接口返回,每个版本的安装包中的 zip 解压密码都不一致,所以我故意改了后台配置信息接口中的密码,他破解的老包功能依然正常使用,我轻描淡写问了他,他说就一个工具就能搞定。
3:他还能破包后加卡密弹窗,说这是基操。视频链接: https://m.okjike.com/originalPosts/69493b881cc9bc8e54a2608d?s=eyJ1IjoiNjM1Nzg4ZjM0N2RkNjRhN2Y3Y2RiMTk0In0%3D
经过几天的 v 站查帖和看 B 站视频,我知道业务逻辑在本地是无法完全防破解的,只是有几点疑问。
1:加卡密弹窗的云注入平台为爱发电?就没人投诉吗?
2:他破解的包为什么不受后端动态解压密码控制?如果绕过校检本地如何解压成功呢?
作者: 92Developer | 发布时间: 2025-12-22 12:50
30. 这样的网上存储服务有吗?(小文件存储获取)
国内使用场景;
小文件,若干个(10 来 20 个),全部不会超过 30M;
月下载量不会超过 1GB;
可以 https://:1234/xxx.dwg,xxx.pdf,获取到这些文件(必须绝对路径);
可以用 curl -X -f https://,POST 的参数增删文件(或者其它 API 接口方式也行);如果搞个 VPS 自己手搓,也不是不行,要费时间费神维护,国内 VPS IP 要搞域名….(估计事情挺多的);
倒不如瞧瞧有没有付费(小成本)运营的服务算了…
作者: qazwsxkevin | 发布时间: 2025-12-24 09:42
31. antigravity 报错, 是否应该开启新会话
用这个都碰到过, 肯定不是网络问题
我的疑惑是, 这时候是不是要开启新会话呢, 会不会是因为会话长度到了限度
Agent terminated due to error
You can prompt the model to try again or start a new conversation if the error persists.
See our troubleshooting guide for more help.
作者: iorilu | 发布时间: 2025-12-25 07:16
32. 大家平时是怎么配置开发机的?
在拿到新电脑的时候,往往需要配置 zsh + vim 安装一些软件,等等。
例如 mac 或者公司 linux 开发机。换来换去的是怎么配置的?
我的解决方案是写了一个 go 脚本,来自动配置 zsh 和 vim + git 还有一些 mac 常用的软件。没有多华丽,但是够用 👀
作者: karashoukpan | 发布时间: 2025-12-24 14:05
33. 用 socks5 代理无法返回正常网页内容
`import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) # 禁用警告proxies = { 'http': 'socks5://43.x.x.x:7002', 'https': 'socks5://43.x.x.x:7002' } try: response = requests.get('https://www.icloud.com', proxies=proxies, verify=False, # 禁用 SSL 验证 timeout=10) print("状态码:", response.status_code) print("响应内容:", response.text) except Exception as e: print(f"请求失败: {e}")`上面代码获取的结果是:
状态码: 200 响应内容: REMOTE_ADDR = 43.x.x.x REMOTE_PORT = 62927 REQUEST_METHOD = GET REQUEST_URI = / REQUEST_TIME_FLOAT = 1766626171.5559506 REQUEST_TIME = 1766626171 HTTP_HOST = www.icloud.com HTTP_USER-AGENT = python-requests/2.31.0 HTTP_ACCEPT-ENCODING = gzip, deflate HTTP_ACCEPT = */* HTTP_CONNECTION = keep-alive有个疑问的点,为什么获取的不是网页内容,去掉代理获取的就是正常网页内容,这种代理是不是不能用? 找了好多 socks5 的都是这种,很疑惑。
作者: biuyixia | 发布时间: 2025-12-25 01:37
34. 小米 mino v2 flash 套壳谷歌模型
https://i.imgur.com/F4y0Bsk.png
所以应该是套壳吧,提示词都没写好
作者: coconutwater | 发布时间: 2025-12-25 01:24
35. 有没有使用对象存储(cos,s3 API)作为主要存储的,基本上的持久化数据都存储在对象存储上?
例如使用 risingwave,automq,greptime 这样的存储系统,将系统中的大部分数据都存储在对象存储上 优势: 充分利用对象存储弹性,计量收费,应用无状态做起来相对简单 劣势: 延迟可能会很高
作者: tanxnative | 发布时间: 2025-12-25 04:21
36. 我宣布 ide 之战, 谷歌赢了
反正折腾一通, 也是嫖上了谷歌免费套餐了
能用一年了
昨天把其他 ide 全卸载了, 打算只专注用 antigravity 了
初步测试, 效果还是很满意得
小型项目, 打开自动执行, 基本不折腾
作者: iorilu | 发布时间: 2025-12-23 02:25
37. [C++] 生产环境进程不带符号表,用 perf 等最终生成的火焰图无法分析,怎么解呢?
背景
刚转到 C++,之前仅用 C++写过算法题,c++工程这块知之甚少。现在想分析进程的 cpu 消耗情况,于是准备采火焰图
问题
生产环境进程不带符号表,用 perf 采出来都是地址,火焰图上全是进程名字,看不到具体方法名怎么解呢?
当前临时的做法是重新编译了一个带符号表的版本,想知道生产环境采火焰图的最佳实践是啥呢?以及有没有大佬推荐一些性能分析的博客呢
作者: Charlie17Li | 发布时间: 2025-12-24 14:14
38. GLM-4.7 上线并开源:更强的编码
GLM-4.7 上线并开源。 新版本面向 Coding 场景强化了编码能力、长程任务规划与工具协同,并在多项主流公开基准测试中取得开源模型中的领先表现。
目前,GLM-4.7 已通过 BigModel.cn 提供 API ,并在 z.ai 全栈开发模式中上线 Skills 模块,支持多模态任务的统一规划与协作。
Coding 能力再提升
GLM-4.7 在编程、推理与智能体三个维度实现突破:
- 更强的编程能力 :显著提升了模型在多语言编码和在终端智能体中的效果; GLM-4.7 现在可以在 Claude Code 、TRAE 、Kilo Code 、Cline 和 Roo Code 等编程框架中实现“先思考、再行动”的机制,在复杂任务上有更稳定的表现。
- 前端审美提升 :GLM-4.7 在前端生成质量方面明显进步,能够生成观感更佳的网页、PPT 、海报。
- 更强的工具调用能力 :GLM-4.7 提升了工具调用能力,在 BrowseComp 网页任务评测中获得 67.5 分;在 τ²-Bench 交互式工具调用评测中实现 87.4 分的开源 SOTA ,超过 Claude Sonnet 4.5 。
- 推理能力提升 :显著提升了数学和推理能力,在 HLE (“人类最后的考试”)基准测试中获得 42.8% 的成绩,较 GLM-4.6 提升 41%,超过 GPT-5.1 。
- 通用能力增强 :GLM-4.7 对话更简洁智能且富有人情味,写作与角色扮演更具文采与沉浸感。
Code Arena:全球百万用户参与盲测的专业编码评估系统,GLM-4.7 位列开源第一、国产第一,超过 GPT-5.2 。
在主流基准测试表现中,GLM-4.7 的代码能力对齐 Claude Sonnet 4.5: 在 SWE-bench-Verified 获得 73.8% 的开源 SOTA 分数; 在 LiveCodeBench V6 达到 84.9% 的开源 SOTA 分数,超过 Claude Sonnet 4.5 ; SWE-bench Multilingual 达到 66.7%(提升 12.9%); Terminal Bench 2.0 达到 41%(提升 16.5%)。
真实编程场景下的体感提升
在 Claude Code 环境中,我们对 100 个真实编程任务进行了测试,覆盖前端、后端与指令遵循等核心能力。结果显示,GLM-4.7 相较 GLM-4.6 在稳定性与可交付性上均有明显提升。
GLM Coding Plan
- Claude Code 全面支持思考模式,复杂任务连续推理与执行更稳定
- 针对编程工具里的 Skills / Subagent / Claude.md 等关键能力定向优化,工具调用成功率高、链路可靠
- Claude Code 中视觉理解能力开箱即用;内置搜索与网页读取,信息获取到代码落地一站闭环
- 架构设计与指令遵循更强,明显降低长上下文下的“幻觉式完成 / 跑偏”,交付质量更可控
作为本次升级的首个体验权益,所有购买套餐的用户将获得「体验卡」礼包,可邀请 3–7 位新用户免费体验 7 天套餐权益。
领取链接:[https://zhipuaishengchan.datasink.sensorsdata.cn/t/kc]
作者: Zhipuai | 发布时间: 2025-12-23 07:17
39. 大模型厂商给模型试用有多好,大模型降智的时候就有多火大.
我是白嫖怪,我没钱,试用的时候很爽,降智的时候就觉得太过弱智.让你没法忍受.厂商手段高明,拿捏人性弱点.
作者: vhjihuang66 | 发布时间: 2025-12-25 02:49
40. Background-Cover 扩展支持视频壁纸背景喽
前言
身为一个后端开发者,从 18 年开始维护这个插件,最近终于借着 AI 的帮助,帮我将 Background-Cover 完善了一直想要的功能,欢迎大家体验。。🌟 功能特性
- 图片/视频背景 :支持本地图片、网络图片、本地视频、在线视频。
- 热更新 :切换背景即刻生效,无需重启 VS Code 。
- 自动轮播 :多张图片/视频可定时自动切换。
- 粒子动画 :集成鼠标跟随粒子特效,酷炫体验。
- 可视化配置 :左侧面板一键设置,支持中英双语。
- 透明度/模糊/填充模式 :自定义背景透明度、模糊度、填充方式。
- 高级解析 :支持 JSON API 、静态 HTML 、图库帖子等多种图片源。
- 在线图库 :内置社区壁纸浏览、上传与一键应用。
- 跨平台支持 :兼容 Windows 、MacOS 、Linux 及 Code-Server 。
- 自动权限处理 :Windows 下自动获取写入权限,无需手动操作。
扩展市场下载地址: https://marketplace.visualstudio.com/items?itemName=manasxx.background-cover
作者: manasxx | 发布时间: 2025-12-25 07:30
41. 我实际体验了下 glm4.7,比 Claude Sonnet 4.5 要差 10%的样子
1.前端水平还行,一次 ok 率,没有 Claude Sonnet 4.5 发挥稳定。
2.有时候报错了,得自己修改多次,没有 gpt5 排错精准,但做出来的预期效果差不多有 95%符合。
3.后端水平还没测,但估计大差不差
4.唯一优势是便宜,但不确定后期会不会降智。
作者: 2828kakafa | 发布时间: 2025-12-25 06:41
42. 只有我一个人觉得 LangGraph 的理念和思维很奇怪么?
最近要做一个复杂的 Agent ,输入数据和提供 MCPTools ,让 AI 自主决策路径,循环调用工具,再根据工具结果继续决策,直到使用工具无法获得更多有价值的信息,在整合现有收集到的信息给出结论。 可以理解为一个破案过程。整过过程流程不固定、无法用 Dify 、n8n 这样的工作流预设好。
最初的原型 Demo 我是基于 OpenManus 开发的。MCPTools 使用 FastMCP 自写的 MCP Sever ,提供 SSE 供 OpenManus 调用。目前感觉 OpenManus 效果勉强令人满意,感觉还有提升空间,优化提示词、优化 MCPTools 之后获得了一点点提升。现在就寻思会不会是 OpenManus 不够优秀,或者说有更好的框架适合我们的场景。
于是开始了信的调研。
我从很多渠道调研,都说 LangGraph 是最好的选择,包括 AI 也这么说。
但是详细去了解、学习 LangGraph 。发现 LangGraph 的思维很奇怪,自己也是老 IT 人了,各种开发语言也写了几十个中小小项目了,第一次遇到一个东西研究了好几天,连理念都无法理解…..
作者: chman | 发布时间: 2025-12-24 08:26
43. Linux 漫谈(二)
文章第一部分在 https://v2ex.com/t/1180785
0x20 性能是永恒的追求
尽管所有人都知道“过早优化是万恶之源”,但是对于性能的追求、尽可能发挥硬件的潜能,到今天仍然是软件行业最核心的竞争指标。
什么叫“过早”优化?从纯技术的观点出发,针对瓶颈点的改善措施才有意义,不是关键障碍的部分做改良就算是“过早”了。相对来说,技术上的误区还是比较容易规避的。我举个比较正面的例子,Donald Knuth 写的《计算机程序设计艺术》也就是常说的
TAOCP,书中涉及的算法都有数学上的复杂度上下限,这样的信息就非常适合指导优化方案。实践当中,用技术手段获得数据支撑,确认瓶颈点往往是比优化本身更重要的工作。对于开发者来说,更可怕的“过早”优化是思维逻辑上的。比如很多人会希望自己的程序代码能像云服务一样动态扩展,支撑得起 0
1/1100 这样的业务增长,于是在开发初期就用上了复杂的细分技术。再比如出于“我可以不用,但你不能不给”的想法,为极少用到的功能提供支持。这样的想法本身没有错,只是多数情况下没有与之匹配的开发资源做支撑,设计层面的优化就变成工程层面的累赘。事实上没有人经得起性能优化的诱惑,毕竟在软件开发领域,性能往往就是商业的命门。
0x21 Red Hat 转型
要论谁最懂性能的价值,我觉得 Red Hat 说第一没什么悬念。
2003 年之前的 Red Hat ,主营业务一方面是卖 Linux 发行版光盘和出版各种技术书籍,另一方面是靠 1999 年收购 Cygnus Solutions 的团队,为企业提供 gcc/gdb 开发维护服务。此时红帽的年营收还不到一亿美元,而且并不稳定。
Cygnus 这个名字是不是有些眼熟?没错,它就是 Cygwin 的开发者。Cygnus 的主要业务是将 gcc/gdb 这样的工具移植到各种 CPU 架构上。在 2000 年前后随着 Windows 的普及,Cygnus 选择将 Unix 底层的 API 转换为 Windows API ,这样不需要修改 gcc 源码即可运行在 Windows 上,于是就有了 Cygwin 。
这次收购对于 Red Hat 来说最大的价值是获得了一个核心开发团队,专门负责用户空间工具链的开发,加上 Red Hat 的原班人马组建的内核团队,将 2003 年的 Linux 2.6 内核打造成了可用于廉价 x86 硬件的服务器操作系统。
这个 Linux 2.6 的影响力有多夸张呢?它使得云业务成为可能,Red Hat 的营收在五年内翻了五倍,同时因为蚕食了竞争对手的市场空间,直接导致了 Sun(Solaris) 被 Oracle 收购。
我认为甚至不需要列数字,只需要看文字说明就能想象到 2.6 内核带来的性能提升:
实现了 O(1) 的进程调度。这样 Linux 具备了运行大型应用(大量进程)的可能。
实现了细粒度的内核锁。原本内核只有一个锁,现在细分为了上千个独立的功能锁,使得内核可以支持 SMP 多核心处理器。
支持了抢占式( preemptive )。这使得系统响应时间可控,内核最大延迟降低到毫秒级。
支持了 NPTL(Native POSIX Thread Library) 原生线程模型。原本 Linux 是没有线程概念的,NPTL 配合 futex 可以为 Java/MySQL 这种重度依赖线程的应用提供高性能的线程创建销毁支持。
网络栈实现了 epoll 模型。这一改动使得 Linux 可以支持单机 C10K 连接,后续 Nginx 就是得益于此。
内核调度器的负责人是 Ingo Molnar ,网络栈部分是 David Miller 。这些内核特性想要发挥出来,离不开 Cygnus 团队的贡献。关键人物 Ulrich Drepper 是 glibc 的维护者,基于新内核特性重写了 glibc 的线程库。基本上 Linux 2.6 之后,内核就重度依赖 gcc 编译器了。
毫不夸张地说,Red Hat 就是赢在了性能上。它们对于性能的优化,使得 Linux 可以在廉价的 x86 设备上,以不到十分之一的成本实现了传统 Unix 服务器的效能,直接影响了整个云计算的时代。
我不好评说到底是 Red Hat 的超前眼光,还是机缘巧合运气爆棚,从这段历史可以看出来两件事:一是开源世界的主要贡献都来自于商业公司,包括 Linus Torvalds 本人当时也是从众多企业公共资助的 OSDL 组织拿工资;二是技术想要落地、生态迁移是个漫长的过程,如果不是 Cygnus/glibc 团队也在红帽,谁也说不清用上新内核特性要花多久。
0x22 疯狂的 NT
如果看一下 2003 年以后服务器市场份额,就会发现一个很有意思的事情,Linux 抢夺的是 Unix 服务器的市场,而 Windows 服务器却没有受太大影响。除开商业推广的因素,很大的原因还是 Windows 服务器在当时是真的快。
实际上在 2000 前后,IIS 5.0 甚至打不过 Linux+Apache 的组合,尽管当时 Linux 还没有 2.6 的内核优化,也没有 epoll 模型。所以在 Windows Server 2003 中,NT 内核加入了 HTTP 驱动模块,静态内容不经用户空间的 IIS 就在内核直接处理了。这直接使得 Windows 保住了服务器市场的份额。
我之前将 NT 比作激进派,就是因为它会将商业需求作为首要目标,即使付出一定的代价。
在 1993 年 NT 设计之初,3.1 版本基本上是纯粹的微内核设计,此时的图形子系统是运行在用户态的 CSRSS(Client/Server Runtime Subsystem),结果就是简单的绘图操作都很慢,当时的 CPU 难以支持。
于是之后的 NT 4.0 版本直接将 GDI 和显卡驱动一起移动到了内核中,减少了上下文切换和内存拷贝之后,图形性能获得了质的飞跃。直到今天 Windows 11 中 WinForms(Win32 API) 依然是最快的 UI 框架。在很长一段时间里,Windows 的图形系统性能相对 Linux/macOS 一直有着碾压性的优势。
但通过这样极端的方式获得性能优势的同时,也带来了严重的稳定性问题,因为显示驱动造成的蓝屏死机占了总数的 20% 以上。所以从 Vista 版本之后,NT 内核又尝试改变驱动模型( WDDM )从而将容易崩溃的代码移出内核。
再回到设计理念的问题上,无论 Dave Cutler 再怎么推崇微内核,在性能这个第一优先指标面前,他还是要选择最务实甚至最激进的做法。所以我一直讲,评价设计的好坏要结合具体的需求背景以及设计诉求来看。既满足了性能指标,又获得了商业成功,尽管付出了未来十几年的兼容性包袱代价,我仍旧认为这都是好的设计。
实际上前面只是为了性能这个话题特地找的两个例子,NT 内核虽然激进但它也有很多经得起时间考验的优秀设计。
比如 NT 内核中有个名为 IOCP(Input/Output Completion Port) 的机制,在 NT 内核设计之初就存在了。不同于 epoll 模型的内核唤醒进程然后进程读取数据,它直接由内核将数据写入进程缓冲然后再唤醒。这个设计使得 SQL Server 一度是最快的数据库软件。
0x23 关于 XNU 的强行找补
因为这一章的主题是性能,而 XNU 是最不关注性能的那个,或者换个说法,由于 XNU 是 Mach+BSD 的设计,本身 Mach 部分涉及性能优化的也很有限。
某种程度上说,XNU 的性能优化都转向了软硬件结合了,特别是到 x86 和 Apple Silicon 的两次转型。举个最直观的例子,异构(大小核)调度是个很困难的问题,苹果在芯片中就加入了一个硬件控制器,这样软件传递 QoS 优先级标签就可以了。
这个做法就让人很难评价……因为它本质上是个手动指派优先级,和软件算法逻辑毫无关系。但它的效果确实不错,至于不错的原因更多是苹果基本不维护旧代码,把兼容任务扔给开发者,开发者要自己声明某个任务是前台还是后台。
在 M1 的时候,普通版本是四个能效核,Pro 版本去掉了两个能效核换成了性能核。按照苹果的设计,所有后台任务都要运行在能效核上,这就导致 Pro 版本在商店应用安装或者后台索引任务上性能甚至远远落后于普通版本。你猜苹果是如何解决这个问题的?没错,过两年就不用解决了。
记得我在前言中提到的“为什么开发者应该学习 Linux”吗?很重要的一点是 Linux 的代码库是开源的。从我上面对内核性能特性的简单举例就能看出,现在的 Linux 在大部分功能上都是 State of the Art (最优)版的实现,或者说最佳实践,覆盖了绝大多数开发需求的场景,本身就是极好的学习对象。
更重要的一点是,LKML ( Linux 内核邮件列表)中的讨论也是非常有价值的,能够从中了解到代码是如何写的,想要解决什么问题这样更重要的信息。尽管 XNU 某种意义上也是源码可见,但学习的价值就非常有限。我选择将文章发在这里,其实也是看中了这里的讨论氛围,交流可以让文章产生更大的价值。
0x24 内核的性能核心
在上一章中提到,操作系统最重要的功能是通过分时方式切换不同的应用程序运行。由于物理上内存是共享的,那么就需要隔离机制,将内核独立出来一方面可以方便管理虚拟内存,另一方面也可以利用硬件机制获得更好的安全性。
要理解内核对于性能的需求,就要理解 CPU 的工作原理。CPU 本身并没有任何多任务的概念,而且在某一个时刻,CPU 只有当前运行状态的少数信息,这其中就包括 PC 也就是之后要执行什么指令。如果我们能将 CPU 某个时刻的状态进行保存和还原,就能从逻辑上执行任意数量的应用程序。这个过程就叫做 Context Switch 上下文切换。
这里所谓 CPU 的状态,在内核中就是简单的数据结构,其中包括了寄存器、栈指针等信息。之后在需要切换进程的时候,通过中断介入然后执行这个状态保存和恢复过程,就可以完成进程的切换。但此时还有个问题要解决,不同进程在内存中的位置是不同的,CPU 需要知道物理地址才能加载对应内存中的代码。
现代内核的虚拟内存实现基本都是将物理内存按照页( Pages )划分,在应用程序自身看来,总是在一个私有的线性地址空间中,而在内核看来,只需要维护一个指向特定页的指针,就可以完成物理地址和虚拟地址之间的转换。在 CPU 中这个页面指针存储在 CR3 寄存器中。(这里描述的是一个极度简化的模型)
现在还剩最后一个问题,由于应用程序本身是按照私有的虚拟地址空间加载的,此时所有的诸如跳转等指令,目标也是虚拟地址。当 CPU 执行这个指令的时候,就需要做虚拟地址到物理地址的转换。这是一个极高频率的操作,所以 CPU 设计了 TLB(Translation Lookaside Buffer) 的缓冲区用来存储地址转换的结果。
到现在整个过程就比较清楚了,每次上下文切换都会伴随着 CPU 状态的重置,以及 TLB 的更新( flush )。理解了这一点,也就理解了内核性能的核心瓶颈之一:上下文切换。受到计算机硬件本身的限制,存储一定是个多级缓存的结构,上下文切换会使得 CPU 不得不等待数据和指令从更慢的缓存逐级加载,从而产生性能瓶颈。(为了改善上下文切换的效率,现代 CPU 在硬件层面有了很多对 TLB 的优化。但即便 TLB 本身性能有所改善,随之而来的缓存更新也不可避免。这里为了表述方便也对模型做了简化。)
之前提到 Linux/NT 各种性能优化时,总是讲到某某功能的内核实现。因为本质上内核也是独立的进程,进程和内核之间也会发生上下文切换(准确地说是模式切换,取决于虚拟内存的实现),那么将特定功能移入内核,就可以减少上下文切换带来的性能开销。
内核性能的另一个瓶颈来源是 IPC ,它不仅受制于上下文切换的效率,还常常伴随着大量数据交换。具体内容会在之后的章节中讨论。
整篇文章的写作风格还是偏漫谈,所以部分技术表达可能不是很准确,行文也比较简略,如果有兴趣的话可以尝试让 AI 对细节进行解释。
作者: kuanat | 发布时间: 2025-12-24 23:32
44. 你们的 ChatGPT 年度报告拿到的 archetype 是什么?
作者: sxhJoker | 发布时间: 2025-12-24 08:49
45. Let’s Encrypt 支持 IP 证书后,在没有备案的情况下,使用 443 端口 + IP + HTTPS 访问是否可行?
作者: jja | 发布时间: 2025-12-24 10:15
46. 谷歌搞了个 code wiki
介绍页:https://developers.googleblog.com/introducing-code-wiki-accelerating-your-code-understanding/
作者: Msxx | 发布时间: 2025-12-25 03:36
47. 三星手机和一加手机哪个更推荐?续航都怎么样?(不买旗舰)
作者: Zarhani | 发布时间: 2025-12-23 04:27
48. 有人测试过 google ai pro 在 gemini-cli 每天可以多少次请求吗
想开 pro ,但是怕 gemini-cli 配额太少了
作者: zgqjava | 发布时间: 2025-12-25 06:42
49. 按使用量付费的 ai coding.有推荐吗?
月包的太贵了。有没有那种预付费充话费的?用多少算多少那种。cursor 公司版用的挺爽的。回家想找个替代方案
作者: wnpllrzodiac | 发布时间: 2025-12-24 13:55
50. 想 hook 微信最简单的收发消息选择 macOS 还是 Windows?
之前基于开源的一个微信 hook 工具拦截微信消息,包括信用卡公众号的交易提醒,做了一个简单的自动记账工具跑了几年挺方便的,但是 hook 工具这两年不维护了,就想自己研究下 hook 。
家里一直有一台 macmini M1 在跑,之前为了跑微信 hook 工具专门弄了台 win 小主机,所以想问一下如果要研究下微信最简单的收发消息的话,mac 和 win 下面哪个好入手一些?不需要除了收发消息外其它功能。
要是 mac 下也好搞的话,就可以省掉那台 win 小主机了。
作者: f1ynnv2 | 发布时间: 2025-12-24 03:27















