文章

刚刚 Java 25 炸裂发布!让 Java 再次伟大
掘金本周最热
09-17
6661 字 (约 27 分钟)
AI 评分: 91
⭐⭐⭐⭐⭐

文章详细介绍了 Java 25 LTS 版本发布的新特性。正式特性包括:Scoped Values,解决了 ThreadLocal 的痛点,提供更安全高效的线程数据共享;模块导入声明,简化了包导入;紧凑源文件和实例主方法,极大地简化了 Hello World 写法,降低了 Java 入门门槛;灵活的构造函数体,打破了 super()或 this()必须在首行的限制;以及密钥派生函数 API、紧凑对象头和 Shenandoah 分代收集等性能和安全优化。此外,文章还介绍了结构化并发、基本类型模式匹配和 Stable Values 等预览特性。作者对每个特性都提供了详细解释和代码示例,并给出了实用性评价,旨在帮助开发者快速了解和掌握 Java 25 的新功能。作者建议新项目可继续使用 Java 21,老项目可停留在 Java 8,但仍鼓励开发者了解 Java 25 的新特性以拓宽知识面。

软件编程中文Java 25LTS新特性软件编程并发编程
都 2025 年了,我们还有必要为了兼容性,去写那么多 polyfill 吗?最近在 Code Review 里,我看到一个新同学在 - 掘金
掘金本周最热
09-18
2264 字 (约 10 分钟)
AI 评分: 90
⭐⭐⭐⭐⭐

本文深入剖析了在当前前端开发环境下,过度追求浏览器兼容性,尤其是不加区分地引入全量 polyfill 所带来的负面影响。作者通过实际案例和数据分析,指出这种“加上总比不加好”的思维模式已成为技术债,导致打包体积显著增大(如 core-js 可增加数百 KB),并增加运行时解析和执行开销,从而损害了绝大多数现代浏览器用户的加载速度和首次可交互时间。文章强调,随着 IE 的淘汰和主流浏览器的常青更新,前端兼容的重点应转向那些无法更新操作系统的旧设备浏览器,并通过项目数据来决策。最后,作者提出了一系列智能的 polyfill 使用策略,包括明确浏览器支持基线、放弃全量引入转为按需分析(如 Babel 的`useBuiltIns: 'usage'`)、考虑使用 Polyfill 后端服务,以及拥抱渐进增强/优雅降级,旨在帮助开发者在性能与兼容性之间取得更合理的平衡。

软件编程中文前端开发兼容性Polyfill性能优化构建工具
「幽灵调用」背后的真相:一个隐藏多年的 Android 原生 Bug
掘金本周最热
09-18
6833 字 (约 28 分钟)
AI 评分: 89
⭐⭐⭐⭐

本文详细揭示了一个隐藏多年的 Android 原生 Bug,即“幽灵调用”的根源与解决方案。该问题表现为 App 进程发生 SIGSEGV 内存错误,通过对崩溃栈、汇编代码及 ART 虚拟机内部机制的深入分析,作者定位到问题是由于 Java 堆内存踩踏导致的对象 Class 指针异常。进一步追溯发现,这是因为 R8 的代码去重(code deduplication)机制与 ART 解释器的线程本地缓存(interpreter thread-local cache)机制冲突所致。具体而言,当两个不同继承链但具有相同`invoke-super`字节码的方法被 R8 去重后,ART 解释器在执行时会因缓存机制导致“张冠李戴”,使得一个类的`onDetachedFromWindow`方法意外调用到另一个不相关父类的方法,从而引发越界写和内存踩踏。作者与谷歌工程师沟通后,谷歌承认此为原生 Bug,并采纳建议,通过修改 R8,禁止对包含`invoke-super`指令的字节码进行去重,从根本上解决了这一问题。

软件编程中文Android BugART虚拟机R8内存踩踏字节码优化
干翻 Docker?WebAssembly 3.0 的野心,远不止浏览器,来一起看看吧
掘金本周最热
09-18
2522 字 (约 11 分钟)
AI 评分: 89
⭐⭐⭐⭐

本文以 WebAssembly (Wasm) 3.0 的发布为契机,深入探讨了 Wasm 从最初的浏览器性能优化工具,如何发展成为一个具有“语言无关、平台无关、高性能、高安全性”野心的二进制格式。作者首先指出 Wasm 的核心价值在于实现跨平台、跨语言的统一运行环境。接着,文章详细介绍了 Wasm 3.0 带来的几项重大突破:首先是**64 位寻址和多内存支持**,这使得 Wasm 能够处理更大规模的数据和更复杂的系统,彻底摆脱了“玩具”的印象,具备了在服务器端运行大型应用的能力。其次,也是最关键的创新是**原生垃圾回收 (GC)** 机制,这极大地降低了 Go、Java、Kotlin、C#等自带 GC 的高级语言编译到 Wasm 的难度,预示着这些语言在 Wasm 生态中的广泛应用前景。 文章随后对 Wasm 是否能“干翻 Docker”进行了客观辩证的分析。作者认为 Wasm 凭借其毫秒级启动、MB 级文件大小和天然沙箱安全模型,在**Serverless、边缘计算、插件系统和 IoT 设备**等对启动速度、资源占用和安全性要求极高的场景下具有显著优势。然而,Docker 和 Kubernetes 已形成成熟的工业生态,Wasm 在工具链、调试、日志和监控等方面仍需发展。因此,作者的结论是 Wasm 与 Docker 更多是**互补而非取代**的关系,Wasm 将“侵蚀”云原生版图中的一部分,尤其是在新场景中扮演关键角色。文章最后鼓励工程师关注并开始尝试 Wasm,为未来的技术栈做好准备。

软件编程中文WebAssemblyWasm 3.0云原生Serverless边缘计算
优雅永不过时!你试过这样的函数重载吗?
掘金本周最热
昨天
2888 字 (约 12 分钟)
AI 评分: 89
⭐⭐⭐⭐

文章深入探讨了 TypeScript 原生函数重载在多参数、多类型场景下,签名复杂、实现代码冗长(如大量 `if else`)以及类型推导受限等痛点,导致代码难以维护且不符合开闭原则。为此,作者推出了一个名为 `overload-func` 的库,旨在提供一种更优雅的解决方案。该库通过 `createOverloadedFunction` 定义函数签名,并使用 `addImple` 方法独立添加各个重载的实现,实现了运行时函数匹配,同时在开发过程中保留了完整的 TypeScript 类型检查和代码提示。文章详细介绍了库的安装、基本使用、内置类型匹配规则、对结构化类型的处理,以及支持为单一重载添加多个实现、拓展自定义类型和在类中正确处理 `this` 指向等高级功能。最终,该方案显著提升了开发体验和代码可维护性,是 TypeScript 高级应用的一个优秀实践。

软件编程中文TypeScript函数重载类型体操开发工具代码优化
🙋‍♀️Transformer 训练与推理全流程:从输入处理到输出生成在人工智能领域,Transformer 架构无疑是大 - 掘金
掘金本周最热
09-17
5174 字 (约 21 分钟)
AI 评分: 88
⭐⭐⭐⭐

文章从整体架构设计出发,详细阐述了 Transformer 模型的编码器和解码器部分。深入分析了位置编码机制的重要性及其正弦余弦函数的数学原理,并通过残差连接解决了位置信息在深层网络中可能丢失的问题。接着,文章结合 PyTorch v2.5.1 源码,特别是围绕 `torch.nn.Transformer` 模块的实现,逐一剖析了 Transformer 顶层类、编码器层(`TransformerEncoderLayer`)、解码器层(`TransformerDecoderLayer`)及注意力机制的核心实现细节,包括 d_model、nhead、dim_feedforward 等关键参数的含义和作用。文章还详细解释了多头注意力、前馈神经网络、层归一化和 Dropout 在编码器和解码器中的具体调用流程,并区分了自注意力与交叉注意力中 QKV 的来源和计算方式。整体内容对理解 Transformer 的底层工作原理和 PyTorch 实现具有极高的指导价值。

软件编程中文TransformerPyTorch大语言模型深度学习注意力机制
别 npm i!20 亿包刚被投毒!速查!20 亿次周下载量、18 个“基建级”包、一场持续 2 小时的**“核弹级”**
掘金本周最热
昨天
1990 字 (约 8 分钟)
AI 评分: 88
⭐⭐⭐⭐

文章深入分析了近期 npm 生态发生的一起严重供应链攻击事件。攻击者通过伪造 npm 官方 2FA 过期提醒的钓鱼邮件,成功窃取了多个“基建级”开源包(如 chalk、debug)维护者的 npm 账户权限。随后,攻击者向这些周下载量超 20 亿的核心包推送了带有恶意代码的补丁版本。恶意代码专门针对浏览器环境,通过监听 Web3 钱包的`sendAsync`调用,利用 Levenshtein 算法计算相似度并替换目标地址,实现加密货币隐形劫持。文章详细描述了攻击的扩散速度,仅 127 分钟便污染了大量云函数实例,并列出了 18 个受影响的核心包。最后,文章提供了开发者自救手册,包括检查、锁定干净版本、清空缓存重装的命令,以及 Web3 用户的额外安全建议,并介绍了 npm 官方后续强制 2FA、可验证构建和供应链实时雷达等防御措施。

软件编程中文供应链安全网络安全钓鱼攻击安全漏洞多因素认证
⭐超越 CNN 与 RNN:为什么 Transformer 是 AI 发展的必然选择?
掘金本周最热
09-19
2952 字 (约 12 分钟)
AI 评分: 88
⭐⭐⭐⭐

本文详尽介绍了 Transformer 架构的核心原理及其在人工智能领域的多模态应用。文章首先通过生动的比喻阐释了自注意力机制、多头注意力机制、位置编码策略和前馈神经网络这四大核心创新,揭示了 Transformer 如何实现对序列中所有信息的并行化、全局性处理。接着,文章深入探讨了 Vision Transformer(ViT)如何将图像分解为视觉块并利用 Transformer 进行全局感知,从而在计算机视觉任务中超越传统 CNN。最后,文章介绍了 Diffusion Transformer(DiT)作为生成式 AI 的新范式,阐明了其在扩散模型中作为智能去噪器的架构和多条件融合机制,实现高质量图像生成。文章强调 Transformer 正从特定架构演变为 AI 的通用语言,预示着统一建模成为人工智能发展的重要趋势。

软件编程中文Transformer自注意力机制多头注意力位置编码ViT
🎉7.6 倍训练加速与 24 倍吞吐提升:两项核心技术背后的大模型推理优化全景图
掘金本周最热
09-18
3896 字 (约 16 分钟)
AI 评分: 87
⭐⭐⭐⭐

本文全面深入地探讨了大语言模型(LLM)推理过程中 Attention 机制的性能瓶颈,并详细介绍了 FlashAttention 和 PagedAttention 两项革命性优化技术。FlashAttention 通过 I/O 感知的精确注意力算法,采用分块计算和重计算策略,大幅减少高带宽内存(HBM)访问,最大限度利用片上 SRAM,显著提升了 Attention 计算效率,并介绍了 FlashAttention-2 和 FlashAttention-3 在不同 GPU 架构上的迭代优化及性能突破。PagedAttention 则借鉴操作系统虚拟内存思想,通过将 KV Cache 分块管理、引入页表映射和写时复制(CoW)机制,有效解决了 KV Cache 的内存碎片化和浪费问题,大幅提升了高并发推理的吞吐量和内存利用率。文章最后总结指出,FlashAttention 侧重计算优化,PagedAttention 侧重内存管理,二者结合是当前 LLM 推理性能大幅提升的关键。

软件编程中文大模型推理FlashAttentionPagedAttentionKV CacheAttention机制
为什么 “大前端” 需要 “微前端”?
掘金本周最热
09-19
8181 字 (约 33 分钟)
AI 评分: 87
⭐⭐⭐⭐

文章从“大前端”的定义和背景出发,分析了单应用和多应用架构在业务复杂化、团队协作、公共依赖管理和用户体验等方面面临的挑战,特别是跨应用上下文断裂和公共库升级维护的痛点。作者提出基座式微前端架构是解决这些问题的有效方案,详细阐述了其在职责分离、版本共存、多环境管理、用户体验提升、性能优化和全局会话管理等方面的显著优势。文章还介绍了 single-spa、qiankun、Module Federation 等主流微前端框架,并客观指出了客户端集成微前端的缺点。最后,作者创新性地提出了“更好的微前端”设想,即结合构建时沙箱和流式 SSR,以期实现更高效、更安全的微前端解决方案,并总结了微前端对于构建可插拔、可演进前端开发平台的价值。

软件编程中文微前端大前端前端架构架构设计分布式系统