🌟 AI 相关
⭐️ Go & 云原生 & Rust 相关
轻松提升Golang日志性能:无需修改代码的异步写入解决方案
Go 1.22 RC1 发布新特性:for range, math/rand/v2
Kubernetes Informer 设计与实现 (下篇)
当 OpenTelemetry 遇上阿里云 Prometheus
Kubernetes Informer 设计与实现 (上篇)
为大模型工程提效,基于阿里云 ACK 的云原生 AI 工程化实践
📒 后端相关
每天精心Coding 8小时,3个月后你将得到一座……“屎山”
主从复制(Primary/Backup Replication)
8000字+22张图探秘SpringCloud配置中心的核心原理
📒 前端相关
How React 18 Improves Application Performance
《A 1-hour introduction to Next.js and React》。 本教程是一份关于如何使用 Next.js 14、React、Prisma、Tailwind 以及 MySQL 搭建 Twitch 克隆应用的全套课程,是 2023 年最新版本的第一部分。在课程中,学员将了解到如何使用 JavaScript 和 SQL 语言以及其他现代编程技术和工具,步步为营地创建出一个功能完整,外观现代的线上视频游戏直播平台。该实战课程为初级到中级开发者设计,旨在提升学员记录写代码、解决问题和探索新技术的能力,最后成功搭建出 Twitch 样式的应用。
《React Suspense 和 use Hook 使用指南》。 React 的 Suspense 在 React 18 的版本中得到了重要的升级,包括对服务端渲染流和局部 hydration 的支持,并且最近在新版的 React 文档中记录了一个名为 use 的新钩子,这能大大简化 Suspense 在数据获取环节的使用。然而,Suspense 在数据获取环节上的功能并未被 React 团队认为是足够成熟且适合在生产中使用的,因此并未推荐在生产环境中使用。此外,尽管进行了新增并进行了升级,但是 use 钩子并没有被作为 React 稳定版本的一部分对外发布,要想尝试使用它,您需要使用 canary 或 experimental 的 React 渠道。Suspense 目前的使用场景包括错误隔离与数据获取等。而有趣的是,use 钩子可以在条件和循环等特殊场景下使用,扩大了 Suspense 的实际使用场景。
《开始使用 Axum - Rust 最受欢迎的 Web 框架》。 本文详细介绍了 Rust 后端框架 Axum 的使用方法,包括路由设置、连接数据库、实现 App 状态、使用 Extractors 等。Axum 对 REST 风格的 API 和 Express 风格的 API 都有很好的支持,可以通过 handler 函数轻松设置路由。在数据库设置中,可以通过 Shuttle 来进行简化操作。对于 App 状态的设置,通常是使用 struct,并需要实现 Clone。对于 HTML 识别,我们可以使用 axum::Json 来将 HTTP 请求转为 json 格式。并且,axum 与 tower 有很好的兼容性,可以直接使用 tower 中的 middleware。还介绍了如何通过 Axum 来服务静态文件,如何部署 Axum 等问题。总的来说,Axum 是一个有强大团队支持且与 Rust Web 生态系统高度兼容的框架,现在是开始编写 Rust Rest API 的好时机。
《常见的 Rust 生命周期误解》。 在 Rust 中,泛型 T 包括所有可能的类型,包括 &T 和 &mut T,且不能直接指定某种数据类型。另外,生命周期'static 指的不是变量数据所存在的全部时间,它包括所有 &'static T 以及所有拥有类型,比如 String,Vec 等。同时要清楚,几乎所有的 Rust 代码都是泛型代码。此外,生命周期不能在运行时变化,生命周期都是在编译时静态验证的,生命周期不能在运行时增长或缩小或以任何方式改变。Rust 的生命周期推断规则并不总是正确的,Rust 并不比你更了解你程序的语义。由于 Rust 可以隐式地重新借用 mut ref,所以你可能在意识到这个问题之前很容易碰到这个问题。这些都是对于 Rust 中的生命周期的误解。
《用 Rust 编写操作系统》。 这份博客系列从零开始用 Rust 编程语言写一个操作系统,由浅入深地演示和讲解了用 Rust 编写操作系统的全部过程。包括最基础的内核构建、异常处理、硬件中断、内存管理以及异步等关键部分,以及操作系统设计的各种常见问题和解决办法,不仅提供了完整的教程,同时也在 Github 上公开了所有相关的源代码。
《从零开始用 Rust 编写文件系统》。 本文详细阐述了文件系统 (File System) 的工作原理和各部分组成,包括数据在硬盘或 SSD 上的结构、超级块和位图、i 节点、索引节点、数据块及其用途,以及多层次索引等概念。文章也解释了如何通过文件系统构建和管理磁盘的不同部分,以及文件和目录在文件系统中是如何表示的。最后,作者通过一个名为 GotenksFS 的项目,展示了如何用 Rust 语言编写自己的文件系统,并在其中实现了一些 ext4 的技术。
《Non-lexical lifetimes: introduction》。 这篇文章探讨的是 Rust 的借用检查器和对生命周期的理论,在 Rust 中,借用检查器确保在值被借用期间,不能对其进行移动或修改。这是通过为每次创建的借用分配生命周期去实现的。文章分别详述了生命周期和范围的概念,并通过实例阐释了它们之间的关系。接着给出了几个在实际编程中遇到的问题案例,再就这几个案例,作者展示了如何通过调整代码结构的方式绕过 Rust 现有的编译检查。作者表示这样的做法并不理想,并提出了通过改进编译器来解决这个问题的计划。
《2024 年的 React 状态管理》。 本文作者从三个角度对 React 状态管理库进行了分类:基于 reducer 的,如 Redux 和 Zustand;基于 atom 的,如 Recoil 和 Jotai;基于 mutable 的,如 MobX 和 Valtio。每种方法都有其优势和劣势。Reducer 的优势在于其强大的状态机和时间机制,对于开发者工具的支持最好,但是需要编写大量的模板代码,学习曲线陡峭。Atom 的优势在于对 React 特性的充分利用,具有简单和可扩展性,但对开发者工具的支持较弱,不能在组件外使用状态。Mutable 往往提供最简单的 API,并具有高度的灵活性和反应性,但 “自动反应” 也可能带来问题,可能导致数据竞争和异步更新问题。作者个人更偏向于使用 Jotai,因为它没有键的要求,更加高效。
《介绍 Waku》。 Waku 是一款 React 的微型框架,它支持探究 React 服务器组件(RSC)的核心功能,并独立于传统的静态站点生成(SSG)和服务器端渲染(SSR)策略来发现 RSC 最佳实践。Waku 基于 Vite,并尽可能依赖其 API 和生态系统。其服务器入口 API 使用名为 entries.tsx 的文件,该文件位于 src 文件夹的根目录,并返回一个包含 JSX 元素的对象。客户端会向服务器发送初始请求,得到服务器的响应并通过 Slot 组件进行渲染。为了使 Waku 支持在 Vercel 上部署,利用了其构建输出 API,通过自定义 “content-type” 头部并以函数方式定义 Waku 服务器,实现了客户端发送请求到服务器并返回 RSC 负载的功能。