OAuth 2.0 协议详解:用 Go 从零实现四种授权流程
你一定用过”微信登录”或”Google 登录”。点一下按钮,第三方应用就拿到了你的头像和昵称——但你从来没有把微信密码告诉过它。这是怎么做到的?
答案就是 OAuth 2.0。它不是什么新东西,2012 年就发布了 RFC 6749,但直到今天仍然是互联网授权的事实标准。
TypeScript 实战技巧——断言、类型选型与 axios 封装
本文为「TypeScript 深入理解」系列第 4 篇,也是最后一篇。我们将前面三篇的类型知识落地到实际场景:类型断言、
typevsinterface选型,以及一个完整的 axios 封装案例。
TypeScript 装饰器与编译原理——元编程与编译管线
本文为「TypeScript 深入理解」系列第 3 篇,涵盖五种装饰器和
tsc编译器的五步管线。前两篇分别介绍了类型系统基础和面向对象/泛型。
TypeScript 面向对象与泛型——从类到抽象类
本文为「TypeScript 深入理解」系列第 2 篇,涵盖类、泛型、枚举、迭代器、继承、多态和抽象类。第 1 篇介绍了基础类型系统和函数签名。
TypeScript 类型系统——从原始类型到函数签名
本文为「TypeScript 深入理解」系列第 1 篇,后续文章将分别覆盖面向对象与泛型、装饰器与编译原理、实战技巧与模式。
在 Golang 中使用 MongoDB 事务支持
在一次业务实践中需要在 MongoDB 中使用自增 ID,而 MongoDB 本身并不支持自增 ID。我们需要通过一个单独的集合保存 ID,使用 FindOneAndUpdate 和 $inc 操作符实现 ID 的自增.
然而此时需要操作两个集合,因 MongoDB 的原子性只是针对单文档的,故会出现 ID 增加而插入失败的情况。
好在 MongoDB 在 4.0 中,支持了副本集上的多文档事务,在版本 4.2 中,引入了分布式事务,这增加了对分片群集上的多文档事务的支持,并合并了对副本集上多文档事务的现有支持。
MongoDB事务
事务介绍
在 MongoDB 中,对单个文档的操作是原子的。由于您可以使用嵌入的文档和数组来捕获单个文档结构中的数据之间的关系,而不是跨多个文档和集合进行规范化,因此这种单一文档的原子性消除了对多文档的需求许多实际用例的事务。
对于需要对多个文档(在单个或多个集合中)进行读取和写入原子化的情况,MongoDB 支持多文档事务。对于分布式事务,事务可用于多个操作、集合、数据库、文档和分片。
微前端之背景与实践
一个 React 后台管理系统堆了两百多个页面,每次 CI 跑 45 分钟。产品经理想把隔壁团队用 Vue 写的客服系统嵌进来——“用户不要两个入口,要一个。”
这就是微前端要解决的问题。不是”多个团队怎么协作”这种管理学命题,而是你真实会遇到的:构建太慢、技术栈不统一、不同团队互相阻塞发布。