Skip to main content

12月3日内容汇总

· 12 min read
加菲猫

🌟 AI 相关

TensorFlow.js,让你的应用更加高级,更具逼格

为什么你应该把 Google / StackOverflow / 文档搜索都扔掉,改用 devv.ai

本地运行“李开复”的零一万物 34B 大模型

⭐️ Golang 相关

亲测体验Go语言PGO

降本增笑的P0事故背后,是开猿节流引发的代码异常吗

通过实例理解API网关的主要功能特性

编码相关的软技能,我看了这些书

1.5万字 + 25张图盘点RocketMQ 11种消息类型,你知道几种

为什么要建立研发数据指标

分享几个美团的秋招面试题

[go 面试] 为并发加锁:保障数据一致性(分布式锁)

使用Go Validator在Go应用中有效验证数据

Rust的Vec优化

如何在Go中进行内存优化和垃圾收集器管理(GC)

[go 面试] 并发与数据一致性:事务的保障

利用 Golang 中的 Recover 处理错误

向上管理:让你主动汇报就这么难

刷新了对GODEBUG的认知

[go 面试] 深入理解进程、线程和协程的概念及区别

如何成为优秀工程师之软技能篇

新晋总监生存指南

从单体到微服务,腾讯文档微服务网关工程化的演进实践

颠覆认知——Redis会遇到的15个「坑」,你踩过几个

正式开源!高性能轻量级跨平台QUIC协议库TQUIC来啦!

如何基于PrometheusAlert扩展告警值班功能

一线Leader怎么做?经理的速成宝典

Rust内存布局

使用 sync.Cond 来协调并发 goroutine 的访问共享资源

降本增效 - 应用优化 (三) 日志成本降低 100 倍

干掉复杂代码 — Spring Boot 与 CQRS 才是黄金组合!

go 1.22优化了string转byte切片的实现

分布式锁的各种实现,看完这篇你就懂了!

结合图文一起搞懂MySQL事务、MVCC、ReadView!

如何使用Redis数据类型进行亿级别统计数据

「有问必答」秒杀系统 Go并发编程实践!

当「华为还是备选,迪爹还是迪子」时宇宙厂一面原题

Prometheus 的查询语言 PromQL 详解

数据库死锁排查思路分享(纠正篇)

学习gorm系列八:探秘gorm.Save函数

一文搞懂Go gRPC服务Handler单元测试

第三个五年,独立思考、承受风雨

第二个五年,找到擅长的事

4 种消息队列,如何选型

Go语言中常见100问题-#91 Not understanding CPU caches

Go HTTP GET 请求可以发送 body 吗

📒 前端相关

【第3130期】Taro高性能小程序的最佳实践

Solid 作者从 React 中学到最重要的是什么

8个问题带你进阶 React

Next.js 超实用进阶技巧【持续更新】

嘿,vue中keep-alive有个「大坑」你可能还不知道

两行CSS让长列表性能渲染提升7倍!

《Why Rust in Production》。 近年来,Rust 的热度已经飙升,微软、谷歌、亚马逊等科技巨头正积极把 Rust 的优势应用于关键系统。然而,关于 Rust 的讨论仍然大多来自那些没有在大规模生产中使用 Rust,或者仅在非关键系统中使用过 Rust 的人。这导致对 Rust 在生产环境中应用的理解存在偏差,尤其对于中小企业来说更是如此。作为 Rust 顾问,从我与众多大小公司接触中发现,公司更看重效率、稳定性和长期可维护性,而不只是性能。然而,Rust 也有其缺点,如尚处在成熟中的生态系统,硬寻找拥有专业 Rust 经验的开发人员,编译时间较长等。尽管如此,这些挑战并不是难以克服的,只是需要对 Rust 承诺,并愿意投资于培训和工具。考虑到 Rust 所能带来的长期成功,专门的指导和支持是至关重要的。

《Building a Web App in Rust》。 这篇文章分享了作者使用 Rust 编程语言构建网络应用程序 JustFax Online 的经验。作者热爱 Rust 的理由包括其低内存使用、出色的安全性、异步开发、真正的类型安全性等优点。然而,作者也谈到了 Rust 的一些困难之处,例如借用检查器的复杂性、对于初学者的启动难度、相对较长的编译时间以及与 NodeJS 或 Python 相比较小的生态系统。尽管如此,作者仍表示非常享受使用 Rust 构建项目,并认为他能有效运行许多项目而无需花费大量资金。

《Rust without crates.io》。 文章提到了程序员对 crated.io 让大家自由上传和下载代码的依赖,并指出了这种行为的潜在风险:包括单点故障、黑客攻击、国家安全等问题。作者认为,我们应该从开发速度的祭坛上退后一步,理想情况下需要有一个独立于作者进行策展的角色来审视依赖。然而在现实中,这种人力评审的路径很难实现。对此,Linux 发行版如 Debian 的解决方案是将大量库的完整 Rust 源码打包进 librust-cratename-dev,虽然没有进行审计,但已经是一个很大的改进。此外,作者也介绍了如何通过几个简单的命令来实现这一过程。这给予作者对 Rust 更大的信心,他原本担心由 crates.io 的自由选择依赖版本的方式,抵制任何旧方法的语言,例如 C++。幸运的是,Debian 证明了他是错误的。

《我如何将 Rust 的编译时间提高 75%》。 这篇博客主要关于如何改善 Rust 编译时间,通过使用不同的优化方法和替代的编译器链接器。作者测试了多种不同的方法,包括使用 Mold 链接器,Cranelift 编码器,和更高的优化等级,他发现使用 Mold 链接器和 Cranelift 代码生成器可以最大程度地提高编译速度,能使编译时间分别减少 75% 和 25%。此外,博主对 Rust 的热重载提出了替代方法,即 cargo-leptos 的 --hot-reload 标志,它可以在更改检测时通过 web socket 连接向浏览器发送 html 和 css 补丁,并在后台编译。

《我怎么知道自己做得对不对》。 作者分享了自我学习新技术时的验证假设与自我提升的有效方法。首先,查找可靠的文档和示例,如 MDN 和 web.dev,他们通常能以实际用例解释理论知识;其次,利用编程语言的 linter 插件指导编程,这有助于改进编码习惯;接着,使用诸如 Lighthouse 和 Accessibility Insights 等测量性能的工具以评估是否妥协了性能或可访问性;此外,利用 AI 工具如 Copilot 简化代码。但对于新手来说,要对 AI 生成的指导持怀疑态度;也可以通过向行业内人士询问学习新信息的方式,来学习。最后,查找有关主题的教程以对照使用情况。学到新知识后,应考虑写下来分享,提高自我理解和提高他人。

《React 18 中的并发性》。 React 18 新增的并发功能是一种执行模型,允许程序的不同部分无序执行而不影响最终结果。在浏览器中的 JavaScript 只能访问一个线程,因此采用了一种称为协作多任务处理的并发模型。React 18 分为紧急状态更新和转换状态更新两种更新类型。默认情况下,所有状态更新都是紧急的,不可中断的。如果希望进入并发渲染,需要使用 startTransition 或 useDeferredValue 将更新标记为低优先级。若在渲染低优先级更新时出现高优先级更新,React 会中断当前渲染并转向渲染高优先级更新。另一个重要更新是 Suspense 组件的行为,它在低优先级更新过程中的挂起行为稍有不同。还引入了新的钩子函数 useTransition 和 useDeferredValue,使用这些工具可以处理复杂的状态更新场景。

TypeScript 发布 5.3。 微软发布了 TypeScript 5.3 版本,主要引入了众多新特性,包括导入属性和稳定地支持在所有模块模式中使用 resolution-mode。此外,这个版本提供了针对布尔值的缩窄对比,以及通过 Symbol.hasInstance 进行 instanceof 缩窄。对于 “超级” 的属性访问,TypeScript 5.3 还进行了检查。此外,新版本中的其他改进包括跳过 JSDoc 解析以进行优化,比较非标准化交集以进行优化,以及在 tsserverlibrary.js 和 typescript.js 间进行整合。这个新版本还修复了一些断裂的变化,并进行了正确性改进。

MDH 前端周刊第 115 期:TypeScript 5.3、RSC、30 条建议、0.6 + 0.3、CI 时间