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

DeepSeek总结的Postgres 性能衰退

来源https://mydbanotebook.org/posts/postgres-performance-regression-are-we-there-yet/Postgres 性能衰退我们到了吗2026年4月15日 · 2402 词 · 预计阅读 12 分钟每年PostgreSQL 都在变得更快。研究人员对从 8 版到 16 版的优化器进行基准测试发现每个主要版本平均有 15% 的性能提升。这是十年来持续、可衡量的进步。该项目自 1996 年以来一直在这样做。因此当有头条新闻声称 Linux 7.0 刚刚将 PostgreSQL 的吞吐量减半时DBA、系统管理员和 DevOps 开始恐慌尤其是那些使用计划尽快搭载 Linux 7.0 内核的 Ubuntu 26.04 LTS 的人。在按下恐慌按钮之前值得先深吸一口气。实际情况更加微妙。让我带你了解一下实际发生了什么这对你的部署意味着什么以及你应该真正担心什么。首先一点内核理论请耐心听我说。我保证这是必要的。你的操作系统内核负责决定哪个程序在何时运行在 CPU 上。这被称为调度。当一个程序在执行过程中被中断以让另一个程序运行时这被称为抢占。如果你在服务器上运行 PostgreSQL 已有一段时间你会知道标准的建议PostgreSQL 应该拥有这台机器。它应该是这台主机上唯一重要的东西。我们通常会禁用 OOM killer这样内核就不会在内存压力下决定牺牲 PostgreSQL 的后台进程。我们调整vm.swappiness以将 PostgreSQL 的数据保留在内存中。整个理念是阻止操作系统对数据库进行“二次猜测”。抢占模式符合相同的理念。把它想象成一位正在进行精细手术的外科医生。你不希望有人在手术中途拍拍他们的肩膀说“你能快点看看别的东西吗”当 PostgreSQL 深入到一个关键部分时我们同样不希望内核打断它。不同的抢占模式代表了不同的权衡。PREEMPT_NONE(旧的服务器默认值): 内核几乎从不中断正在运行的程序。程序一直运行直到它自愿放弃 CPU或者直到它进行系统调用。更少的上下文切换更多的时间做实际工作。PREEMPT_NONE无中断线程运行直到自愿让出PREEMPT_FULL: 内核几乎可以在任何点中断任何正在运行的程序。这对响应能力和实时应用程序很有好处。但对服务器工作负载的吞吐量不利。PREEMPT_FULL中断可能发生在任何地方、任何时间点PREEMPT_LAZY(Linux 7.0 新增): 一个折衷方案。内核会抢占线程但是是“懒惰”地等待一个自然的机会而不是立即强制中断。旨在降低PREEMPT_FULL的开销同时保持内核调度模型的简洁。PREEMPT_LAZY仅在自然调度边界中断在过去的 20 多年里服务器内核都搭载了PREEMPT_NONE。PostgreSQL 就是考虑到这个现实而构建的。Linux 7.0 改变了这一点。Peter Zijlstra 的提交7dadeaa6e851在现代架构上移除了PREEMPT_NONEarm64、x86、powerpc、riscv、s390、loongarch。所有架构都是。内核现在只提供PREEMPT_FULL和PREEMPT_LAZY。为什么这会影响 PostgreSQL 的性能PostgreSQL 在多个地方使用自旋锁尤其是在其缓冲区管理器中。自旋锁是一种锁机制线程在等待锁可用时不会进入睡眠状态而是会在一个紧密循环中不断检查。想想《怪物史莱克》中坐在后座被绑住的驴子“我们到了吗我们到了吗我们到了吗”这听起来很浪费但对于非常短期的锁PostgreSQL 的缓冲区管理器使用的那种这实际上比让线程休眠再唤醒的开销要快。自旋锁背后的关键假设是持有锁的线程将很快释放它。没有人会在一个 20 纳秒的关键部分中间抢占该线程。在PREEMPT_NONE下这个假设成立。锁持有者一直运行直到完成。其他自旋等待的线程不会等太久。在PREEMPT_LAZY下内核可以决定抢占一个持有自旋锁的线程。该线程被暂停。等待该锁的所有其他线程继续自旋燃烧 CPU 周期直到调度器决定恢复原始线程。下面是几个线程下的情况PREEMPT_LAZY下的自旋锁竞争线程 1 在持有锁时被抢占所有其他线程无用地自旋直到它被恢复理论上这是一个真正的问题。在实践中实际发生的事情更有趣。基准测试实际显示了什么AWS 的 Salvatore Dipietro 在一个 96 个 vCPU 的 Graviton4 实例上运行了pgbench1024 个客户端96 个线程使用超过 100GB 的共享缓冲区池。与 Linux 6.x 相比他得到了 0.51 倍的吞吐量并向内核邮件列表报告了这一点。基准测试脚本明确设置了huge_pagesoff。这一个细节关系重大。Andres Freund 深入研究了邮件列表线程发现了真正的罪魁祸首不是自旋锁机制本身而是在持有自旋锁时发生的TLB 未命中和轻微缺页错误。以下是实际发生的情况。没有大页PostgreSQL 的共享内存使用标准的 4KB 页面映射。在超过 100GB 的缓冲区池上对每个页面的第一次访问都会导致一次轻微缺页错误。当这个轻微缺页错误发生在持有自旋锁时该线程会停滞。等待该锁的所有其他线程继续自旋。PREEMPT_LAZY然后偶尔会调度出停滞的锁持有者使情况变得更糟但根本问题已经是缺页错误而不是抢占模式。Andres 证实了这一点当他启用大页时他无法重现性能衰退。当他禁用大页时竞争出现了。Salvatore 也证实了这一点。他重新运行了基准测试这次在系统上启用了透明大页 (THP)他发现 THP 修复了之前的行为在 Linux 6.x 和 Linux 7.0 上吞吐量都恢复到了大约 185k tps。大页和 THP 通过不同的机制工作但都消除了导致竞争的 4KB 缺页错误问题。还有第二个值得注意的细节。基准测试中处于竞争状态的自旋锁是StrategyGetBuffer()它仅在缓冲区池预热期间触发即 PostgreSQL 首次将页面加载到共享内存时。一旦缓冲区池达到稳定状态并且空闲列表清空该路径就不会再被命中。该基准测试测量的是一个瞬态的预热阶段并将其呈现为稳态性能。PostgreSQL 中至少还有一个自旋锁可能在新抢占模型下发生竞争但其并发获取的上限要低得多。Andres 直言不讳地说一个 100GB 的冷缓冲区池没有大页运行着比 CPU 核心数多 10 倍的活动连接并且仅在预热期间这不是一个现实的生产场景。那么你应该害怕吗对于在裸机或专用虚拟机上配置良好的部署可能不会。如果你已经在主机上启用了大页或 THP并且你的工作负载不是一个具有巨大缓冲区池的极端冷启动场景那么 Linux 7.0 的更改不太可能在稳态下影响你。在做出任何决定之前请使用你实际的工作负载和实际配置进行基准测试。在两种情况下情况更加微妙。第一如果你在没有大页或 THP 的情况下在高度并行的机器上运行大型共享缓冲区。在这种情况下PREEMPT_LAZY确实会加剧预热期间的自旋锁竞争。在这种配置下PREEMPT_NONE下也存在竞争PREEMPT_LAZY只是让它变得更糟。解决方法是启用大页或 THP而不是固定你的内核版本。第二如果你在容器中运行 PostgreSQL。这是值得花时间关注的担忧因为它没有得到足够的重视。真正的问题大页、THP 和容器大页和 THP 都能缓解性能衰退。在裸机上启用其中任何一种都很简单。在容器化环境中这从困难到不可能这是一个早在 Linux 7.0 之前就存在的普遍 PostgreSQL 性能问题。THP 由/sys/kernel/mm/transparent_hugepage/enabled控制这是一个主机级别的 sysfs 路径。Sysfs 在 Linux 中没有命名空间隔离这意味着容器无法修改它。主机配置了什么该主机上的每个容器就继承什么无法从内部覆盖。显式大页也有同样的限制。主机内核在容器启动前通过vm.nr_hugepages预留一个池。如果主机配置了容器可以从该池中消费但它不能创建或调整池的大小。Incus一个完全开源的系统容器管理器确实允许limits.hugepages通过 hugetlb cgroup 限制给定容器可以消费多少个大页但主机池必须首先存在。在 Incus 中运行 PostgreSQL 的一位读者正好报告了这个问题你必须在主机级别预先分配池的大小。太小PostgreSQL 无法使用它。太大你就浪费了其他容器无法触及的物理内存。这个池是静态的更改它意味着停止容器调整主机配置然后重新启动。在 Docker 中你需要在容器启动之前在主机上设置vm.nr_hugepages这需要对主机的 root 访问权限。在 Docker Desktop 上情况更糟因为你根本无法控制底层的 Linux 虚拟机。在 Kubernetes 中节点必须在 kubelet 能够将大页宣传为可调度资源之前预先分配大页。你在 Pod 规范中声明hugepages-2Mi或hugepages-1Gi但节点必须首先准备好池。在托管节点池上EKS、GKE、AKS你通常根本无法控制节点级别的内核配置。从 Pod 内部更改 THP 设置需要将主机的/sys挂载为卷或者部署一个特权的 DaemonSet这两种方法大多数集群管理员都不会批准。这一点的重要性超出了 Linux 7.0 的故事。使用大缓冲区池和 4KB 页面运行 PostgreSQL 一直是一个性能问题。Linux 7.0 事件只是以一种戏剧性的方式使其变得可见。如果你的 PostgreSQL 在容器中运行并且你无法在主机级别控制 THP 或大页那么你已经在损失性能了。行业已经严重倾向于容器化部署但尚未完全解决这个问题。Linux 社区的解决方案rseq几十年来PREEMPT_NONE充当了 PostgreSQL 的“请勿打扰”标志确保一个线程可以完成其工作而不被打断。Linux 7.0 移除了这个标志。虽然新的“懒惰”模式试图保持礼貌但如果线程在错误的时刻被暂停它会引入一定程度的不确定性可能将一个 20 纳秒的锁变成一个毫秒级的瓶颈。可重启序列 (rseq)是一种 Linux 内核机制允许用户空间代码向内核发出信号表明它正处于关键部分因此内核会延迟抢占直到锁被释放带 rseq 前后对比没有 rseq内核盲目抢占有了 rseq它能识别关键部分标志并等待问题不在于前进的方向。问题在于移除PREEMPT_NONE和引入rseq发生在同一个版本中两者之间没有过渡期。淘汰某样东西的正常方式是让新方法 alongside 旧方法一起发布弃用旧方法给人们时间迁移然后移除它。这一步被跳过了。内核团队提出的官方解决方案是采用可重启序列 (rseq) 来缓解这些性能衰退。然而有一个问题必要的切片扩展在 Linux 7.0 中默认未启用。它需要一个使用CONFIG_RSEQ_SLICE_EXTENSION和EXPERT1标志编译的内核。对于使用标准发行版的绝大多数 DBA 和 DevOps 工程师来说这使得“正确”的修复实际上无法实现。正如俗话所说这就像被告知在有人拿走梯子时紧紧抓住你的刷子。你实际上应该怎么做在采取任何行动之前使用你自己的工作负载和你自己的配置进行基准测试。在 96 核 ARM 机器上故意禁用大页的合成pgbench结果不能代表你的生产系统。如果你控制你的主机并且已经启用了大页或 THP升级到 Linux 7.0 并进行测量。你可能根本看不到任何性能衰退。如果你的主机上既没有启用大页也没有启用 THP在考虑内核升级之前先启用其中一个。对于显式大页在主机上设置vm.nr_hugepages并在postgresql.conf中设置huge_pages try。对于 THP在主机上设置transparent_hugepagealways。这两种方法都解决了底层的缺页错误问题。无论 Linux 7.0 如何这都是很好的建议。如果你在容器中运行 PostgreSQL并且无法在主机级别控制 THP 或大页请注意这对于大缓冲区池来说是一个普遍的性能问题。值得向管理你基础设施的人提出这个问题并且值得在你的部署架构选择中考虑进去。如果你使用的是搭载 Linux 7.0 的 Ubuntu 26.04 LTS不要恐慌。测试你实际的工作负载。如果你看到性能衰退首先检查你的大页配置。来源:Salvatore Dipietro 在 Linux 内核邮件列表上的讨论Hacker News 讨论TLB (Translation Lookaside Buffer)是 CPU 的一个缓存用于存储最近的虚拟内存到物理内存地址的转换。当 CPU 需要访问内存时它首先检查 TLB。如果转换不在那里“TLB 未命中”它必须遍历页表来找到物理地址这明显更慢。使用 4KB 页面和一个非常大的缓冲区池TLB 很快就会填满未命中变得频繁。更大的页面减少了 TLB 中需要的条目数量从而显著降低了未命中率。[↩︎]大页 (Huge Pages)也称为 HugeTLB 页面是一种 Linux 机制用于预先分配大的内存页面通常是 2MB 或 1GB而不是默认的 4KB。它们必须在使用前显式预留内核在启动时或通过vm.nr_hugepages预留一个池应用程序显式请求它们。PostgreSQL 通过postgresql.conf中的huge_pages try|on|off默认是try支持这一点。由于池是预先分配并锁定在内存中的大页不能被换出并且在初始分配后不会发生缺页错误。[↩︎]透明大页 (THP)是一种不同的机制。它不需要显式预分配内核会在后台自动将一组 4KB 页面提升为更大的页面对应用程序透明。不需要更改postgresql.conf。权衡之处在于可预测性较低内核后台对页面的提升和降级有时可能会导致延迟峰值。THP 通过/sys/kernel/mm/transparent_hugepage/enabled进行系统范围的控制这是一个对主机全局的 sysfs 路径不属于任何 Linux 命名空间。[↩︎]Incus 暴露了limits.hugepages.[size]以通过 hugetlb cgroup 限制容器的大页使用量但这需要主机上提供 hugetlb cgroup并且主机大页池必须首先预先分配。请参阅 Incus 实例选项文档。[↩︎]这来自一个法国笑话一个疯子正在重新粉刷他的天花板就在他到达梯子顶端时他的同伙说“紧紧抓住你的刷子我要把梯子拿走了。” [↩︎]PostgreSQL Linux 性能管理

相关文章:

DeepSeek总结的Postgres 性能衰退

来源:https://mydbanotebook.org/posts/postgres-performance-regression-are-we-there-yet/ Postgres 性能衰退:我们到了吗? 2026年4月15日 2402 词 预计阅读 12 分钟 每年,PostgreSQL 都在变得更快。研究人员对从 8 版到 1…...

当AI学会害怕和好奇——V4认知与情绪

「当AI学会发脾气」—— 一个类脑认知系统的诞生记 7个版本迭代Python脚本,教会AI像人一样焦虑、兴奋、犯错和成长 📚 全系列文章: 如果把你扔进一个迷宫,你的大脑在干什么?150行代码,AI迈出了第一步聪明反…...

深度学习模型可视化:除了TensorBoard,用pydot+graphviz画模型结构图也很香(Python 3.11实测)

深度学习模型可视化:pydotgraphviz的轻量级解决方案 在深度学习项目开发中,模型结构的可视化是理解网络架构、调试参数和分享研究成果的关键环节。虽然TensorBoard等工具提供了强大的交互式可视化功能,但对于需要生成高质量静态图片、快速查看…...

从图像修复到风格迁移:深入浅出聊聊TV Loss(总变分损失)的前世今生与调参技巧

从图像修复到风格迁移:深入浅出聊聊TV Loss的前世今生与调参技巧 想象一下你正在修复一张老照片——那些斑驳的噪点和缺失的像素,就像时间在画布上留下的裂痕。而TV Loss(总变分损失)就像一位经验丰富的修复师,它不追求…...

指纹识别新思路:用FingerNet卷积网络解决低质量图像特征提取难题

指纹识别新思路:用FingerNet卷积网络解决低质量图像特征提取难题 在安防、考勤等实际应用场景中,指纹识别系统常常面临低质量指纹图像的挑战。模糊、残缺、噪声干扰等问题严重影响了传统算法的识别准确率。FingerNet作为一种创新的深度学习解决方案&…...

复杂项目管理进入大模型时代:利用知识图谱构建智能治理新体系

复杂项目管理的难点,从来不只是信息量大,而是信息分散、关系复杂、状态变化快、管理动作难闭环。立项书、实施方案、周报、日报、会议纪要、邮件、风险清单、变更记录和任务台账分别承载了项目的不同侧面,但这些信息往往分布在不同系统和不同…...

别再瞎采了!FOC下桥臂电流采样,你的ADC转换时间算对了吗?

FOC下桥臂电流采样:ADC转换时间的精确计算与验证实战 电机控制工程师们经常遇到一个令人头疼的问题——明明电路设计没问题,代码逻辑也正确,但电流采样值就是不稳定。这很可能是因为你忽略了ADC转换时间窗口的精确计算。本文将带你深入理解下…...

C语言printf函数format参数输出格式及type、flags规定详解

format 参数输出的格式,定义格式为:% type规定数据输出方式,具体如下:1.type 含义如下:d 有符号10进制整数i 有符号10进制整数o 有符号8进制整数u 无符号10进制整数x 无符号的16进制数字,并以小写abcdef表示…...

RNA-seq新手必看:raw_count、tpm、fpkm、rpkm到底怎么选?附实战代码示例

RNA-seq数据标准化方法全解析:从理论到实战的精准选择指南 刚接触RNA-seq分析的生物信息学研究者,往往会被各种标准化方法搞得晕头转向。实验室前辈可能随口甩出一句"用TPM就行",而文献中又频繁出现raw count结合DESeq2的分析流程。…...

Transformer位置编码的另一种思路:手把手教你实现Relative Position Representations

Transformer位置编码新实践:Relative Position Representations技术解析与实现 在自然语言处理领域,Transformer架构彻底改变了序列建模的范式。但当我们深入其核心机制时,一个关键问题浮现:如何让模型理解词语之间的相对位置关系…...

Matplotlib图表想用思源黑体或霞鹜文楷?手把手教你添加自定义字体并应用到Jupyter Notebook

在Matplotlib中优雅使用思源黑体与霞鹜文楷的完整指南 每次看到学术论文或技术博客中那些千篇一律的默认字体图表,总感觉缺少了些许个性与专业感。作为数据可视化的重要工具,Matplotlib默认的字体配置往往无法满足对美学有更高要求的用户。本文将带你从零…...

一文讲清,精益生产与管理是什么意思?精益生产与管理核心解读

精益生产与管理是现代制造业实现卓越运营的核心路径,很多企业都在探索精益生产与管理的落地模式。精益生产与管理并非简单的工具堆砌,而是一种以客户价值为导向、以消除浪费为核心、以持续改善为动力的系统性管理哲学。理解精益生产与管理,关…...

HarmonyOS6 半年磨一剑 —— RcSearch 三方库插件样式系统与形状尺寸配置深度剖析

文章目录前言一、形状系统:round 与 square1.1 两种基础形状1.2 圆角的精细控制二、尺寸系统2.1 高度与字号的协同配置2.2 内边距的灵活配置三、颜色体系3.1 六维颜色配置3.2 品牌色定制示例四、边框系统4.1 边框颜色与透明效果五、输入对齐方式5.1 三种对齐模式总结…...

2026 - 解决Typora文档内快捷键失效(与其他软件快捷键冲突)

前言突然有一个我的Typora快捷键失效了,比如我想快速设置一个段落对应的快捷键都存在,但是我怎么按都无效,接下来开始慢慢排查。解决方法一、修改配置文件文件->偏好设置-> 最底下有个高级设置,选择 打开高级设置 &#xff…...

国泰君安国际荣获2025年度离岸中资基金大奖“货币市场基金 - 港币(1年)”冠军

近日,香港中资基金业协会(HKCAMA)与彭博联合宣布2025年度“离岸中资基金大奖”获奖名单。国泰海通集团下属公司国泰君安国际控股有限公司(“国泰君安国际”或“公司”,股份代号:1788.HK)旗下国泰…...

SITS2026正式发布:2024年唯一经Gartner交叉验证的生成式AI应用成熟度评估框架

第一章:SITS2026正式发布:生成式AI应用图谱 2026奇点智能技术大会(https://ml-summit.org) SITS2026(Semantic Intelligence & Trustworthy Systems 2026)正式发布,标志着生成式AI正从单点模型能力跃迁至系统化、…...

生成式AI模型即代码(MaaC)实践白皮书:将LLM微调、评估、安全扫描、合规审查全部纳入GitOps驱动的CI/CD流水线

第一章:生成式AI应用CI/CD流水线 2026奇点智能技术大会(https://ml-summit.org) 生成式AI应用的持续集成与持续交付(CI/CD)面临模型版本不可控、推理环境不一致、评估指标难量化等独特挑战。传统软件流水线需扩展以支持大语言模型权重、提示…...

雨云(Rainyun)优惠全攻略:新用户 5 折、优惠券领取与使用指南

雨云(rainyun)是 2018 年成立的云计算服务平台,主营云服务器、游戏云服务器、裸金属物理机、对象存储、域名注册、SSL 证书等业务,面向个人开发者、中小企业与游戏玩家提供稳定实惠的云服务。平台针对新用户推出专属优惠&#xff…...

【2026内容生产力分水岭】:为什么92%的AI写作工具失败了?SITS2026揭示故事生成的3个隐藏阈值

第一章:SITS2026演讲:AI故事创作应用 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026主会场,来自Narrative Labs的研究团队现场演示了StoryWeaver——一款面向专业作家与教育工作者的开源AI故事创作框架。该系统不依赖封闭大模型…...

基于COZE平台GLM5.1开发简易3D导演台布局,10分钟速成傻瓜式教学(小白也能搭建)

基于COZE平台GLM5.1开发简易3D导演台布局,10分钟速成傻瓜式教学(小白也能搭建) 前言 这次想分享一个很有意思的实战项目:复刻一个网页版 3D 导演台。 先说结论: 我以前并没有开发过 3D 导演台,甚至很多底…...

生成式AI用户反馈闭环设计:从单向上报到因果推演——基于127个真实场景的反馈归因模型(附可运行Python SDK)

第一章:生成式AI用户反馈闭环设计 2026奇点智能技术大会(https://ml-summit.org) 用户反馈闭环是生成式AI系统持续演进的核心机制,它将真实使用场景中的行为信号、显式评价与隐式偏好转化为可训练的监督信号,驱动模型迭代优化。一个健壮的闭…...

三菱FX5U控制三轴伺服定位:(BOM表、CAD电气图纸、PLC程序、人机界面)

三菱fx5U控制三轴伺服定位。 (BOM表,CAD电气图纸,plc程序,人机界面) 在工业自动化现场折腾过的小伙伴都知道,三轴伺服定位系统就像车间里的平衡术——轴与轴之间的配合但凡有点差错,整台设备就…...

MinerU 系列教程 第三课:多场景使用指南 -- CLI 参数详解与批量处理

MinerU 系列教程 第三篇 本篇教程作为 模块一:基础入门与架构概览 的第三课,全面剖析 mineru CLI 的完整参数体系。上一课我们完成了安装并成功运行了第一次解析,本课将深入每个参数的含义与使用场景,掌握批量处理、分页解析、语言…...

别再抄作业了!2026奇点大会首次公开AI学习助手的“动态知识图谱构建协议”——支持实时跨域推理的底层逻辑

第一章:2026奇点智能技术大会:AI学习助手 2026奇点智能技术大会(https://ml-summit.org) 核心定位与能力演进 AI学习助手是本届大会首次发布的开源智能体框架,聚焦教育场景中的个性化知识建模与实时认知反馈。它不再仅依赖预训练语言模型的…...

碳交易机制下需求响应的综合能源系统优化运行策略探索:实现双碳目标的路径与策略分析

碳交易机制下考虑需求响应的综合能源系统优化运行 综合能源系统是实现“双碳”目标的有效途径,为进一步挖掘其需求侧可调节潜力对碳减排的作用,提出了一种碳交易机制下考虑需求响应的综合能源系统优化运行模型。 首先,根据负荷响应特性将需求…...

基于SpringBoot+Vue小区报修系统的设计与实现(源码+论文+部署)

一. 系统介绍 本文以Spring Boot和Vue为技术基础,建立小区报修管理系统,实现系统管理、用户管理、维修类型管理、维修工具管理、报修管理、维修记录、评价反馈管理等功能模块。 代码实现下载地址:https://download.csdn.net/download/lv_so…...

面试官:LRU算法听过吗?如何改进?

上周群里看到有位小伙伴面试时,被问到这两个问题:咋一看,以为是在问操作系统的问题,其实这两个题目都是在问如何改进 LRU 算法。因为传统的 LRU 算法存在这两个问题:「预读失效」导致缓存命中率下降(对应第…...

浏览器首页永远乱七八糟?用 Fenrus 搭一个干净、高颜值、能自定义的导航页

前言 每天打开浏览器,默认主页要不是浏览器原生的壳,要不就是套了层广告的导航站,书签栏塞了几十条,找个常用网站要扫半天。有段时间试过好几个导航页工具,要么界面花里胡哨太碍眼,要么加载慢得要命点个链…...

猫抓插件:三步搞定网页视频音频下载的终极解决方案

猫抓插件:三步搞定网页视频音频下载的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常遇到这样的情况&#xff…...

新加坡榜鹅:从蛮荒之地到AI创新热土,自动驾驶与智慧小镇共筑科技新篇

【导语:新加坡东北部的榜鹅,曾是一片蛮荒之地,如今成为科技创新聚集地。4月初,文远知行与Grab在此启动自动驾驶出行服务公开运营,同时榜鹅数码园区也在积极建设,新加坡发展人工智能决心可见一斑。】榜鹅&am…...