Skip to content
Calvin's Blog

摸鱼精选第 9 期

Apr 15, 2022 — Reading

Tony Bai 是 Go 方面的专家,翻译了 Go 核心团队发布的一篇名为《An Introduction To Generics》的文章。这是 Go 团队发布 Go 1.18 版本后官博发表的首篇有关 Go 泛型的文章

Multi-Module 工作空间模型。它本质上仍然是解决本地发展需求的一种解决方案。

由于 go.mod 文件与项目密切相关,因此它们基本上是上传到 Git 存储库的,因此很难对其进行任何操作。所以我们只是将 go.work 构建为纯本地化且易于使用。

使用新的 go.work,您可以处理完全的本地文件,而不会影响开发团队的其他成员。

一个小巧、安全、URL 友好、唯一的 JavaScript 字符串 ID 生成器。

“一个惊人的无意义的完美主义水平, 这简直让人无法不敬佩。”

import { nanoid } from 'nanoid'
model.id = nanoid() //=> "V1StGXR8_Z5jdHi6B-myT"

支持现代浏览器、IE 使用 Babel (opens in a new window)、Node.js 和 React Native。

iOS 15 (SwiftUI 3.0) 的时候,苹果才加了下拉刷新组件refreshable,本文作者借助 UIKit 的UIRefreshControl,将这个功能带到 iOS 13 和 iOS 14,源码在此 (opens in a new window)

iOS 15 的refreshable

struct ContentView: View {
var body: some View {
List {
...
}
.refreshable {
await Network.load()
}
}
}

作者的实现版本:

struct ConventView: View {
var body: some View {
List {
...
}
.onRefresh { refreshControl in
Network.load {
refreshControl.endRefreshing()
}
}
}
}

作者是一个台湾的开发者,所以是繁体文章,阅读无障碍,也可以直接看官方英文文档 (opens in a new window)

eBPF 源于 BPF,本质上是处于内核中的一个高效与灵活的虚类虚拟机组件,以一种安全的方式在许多内核 hook 点执行字节码。BPF 最初的目的是用于高效网络报文过滤,经过重新设计,eBPF 不再局限于网络协议栈,已经成为内核顶级的子系统,演进为一个通用执行引擎。开发者可基于 eBPF 开发性能分析工具、软件定义网络、安全等诸多场景。本文将介绍 eBPF 的前世今生,并构建一个 eBPF 环境进行开发实。

TypeScript 的开发规范。

内存回收作为 Linux kernel 内存管理中比较复杂的部分,需要考虑各种场景,根据 page 的冷热状态,释放部分内存,满足其他进程的运行,kswapd 担当了重要的工作,开源社区还在不断完善和优化中。

lambda 已经成为 C++中一个强大的工具,了解 lambda 的使用以及底层实现原理,能够帮助我们更加高效更加便捷的进行编码。希望本文能够帮助到您。

在 Go 的并发编程模型中,不受操作系统内核管理的独立控制流不叫用户线程或线程,而称为 Goroutine。Goroutine 通常被认为是协程的 Go 实现,实际上 Goroutine 并不是传统意义上的协程,传统的协程库属于用户级线程模型,而 Goroutine 结合 Go 调度器的底层实现上属于两级线程模型。

Go 搭建了一个特有的两级线程模型。由 Go 调度器实现 Goroutine 到 KSE 的调度,由内核调度器实现 KSE 到 CPU 上的调度。Go 的调度器使用 G、M、P 三个结构体来实现 Goroutine 的调度,也称之为 GMP 模型。

MongoDB 是一个强大的分布式存储引擎,天然支持高可用、分布式和灵活设计。MongoDB 的一个很重要的设计理念是:服务端只关注底层核心能力的输出,至于怎么用,就尽可能的将工作交个客户端去决策。这也就是 MongoDB 灵活性的保证,但是灵活性带来的代价就是使用成本的提升。与 MySql 相比,想要用好 MongoDB,减少在项目中出问题,用户需要掌握的东西更多。本文致力于全方位的介绍 MongoDB 的理论和应用知识,目标是让大家可以通过阅读这篇文章之后能够掌握 MongoDB 的常用知识,具备在实际项目中高效应用 MongoDB 的能力。

利用了yarn patch-package 命令。

本文会为您讲解由可组合项和修饰符提供支持的组合布局模型,并深入探究其背后的工作原理以及它们的功能,让您更好地了解所用布局和修饰符的工作方式,和应如何以及在何时构建自定义布局,从而实现满足确切应用需求的设计。

Node 之道—设计、架构和最佳实践。

作者还有另一篇 React 之道 (opens in a new window)

本文作者罗列出了开发 React 项目所需的各种类型的库以及推荐他们的原因。

MAD (opens in a new window) 的全称是 Modern Android Development,它是一系列技术栈和工具链的集合,涵盖了从编程语言到开发框架等各个环节。

C++11 新标准重新定义了 lvalue 和 rvalue,并允许函数依照这两种不同的类型进行重载。通过对于右值(rvalue)的重新定义,语言实现了移动语义(move semantics)和完美转发(perfect forwarding),通过这种方法,C++实现了在保留原有的语法并不改动已存在的代码的基础上提升代码性能的目的。

与 HTTP/2 相比,HTTP/3 有很大的性能改进,这主要是因为它将底层传输协议从 TCP 改为基于 UDP 的 QUIC。在这篇文章中,我们将深入了解其中的一项改进,即消除“队头阻塞”(Head-of-Line blocking, 简写:HOL blocking)问题。

我将首先介绍队头阻塞问题,然后在整个 HTTP 历史中跟踪它的不同形式。我们还将研究它如何与其他系统交互,如优先级和拥塞控制。我们的目标是帮助人们对 HTTP/3 的性能改进做出正确的判断,而这(剧透)可能不像营销材料中所说的那样令人惊讶。

Flutter 相比 React Native 最大的缺点就是无法做到热更新组件。目前业界公开出来解决方案的只有 58 同城的 Fair。

本文旨在为大家提供 Fair 在实际项目中落地的完整案例,包含了使用 Fair 进行动态页面改造、复杂场景使用、接入过程中遇到的问题、Fair 接入前后的性能对比、热更新方案设计等等内容。

关于 Fair 的其他文章: 《Fair 逻辑动态化架构设计与实现》 (opens in a new window)

《Fair 逻辑动态化通信实现》 (opens in a new window)

《Fair 下发产物-布局 DSL 生成原理》 (opens in a new window)

《Fair 逻辑语法糖设计与实现》 (opens in a new window)

《Fair 热更新设计与实现》 (opens in a new window)

如果你学习 Rust 的过程感觉到艰难、痛苦或迷茫,不妨看一下这篇文章。 但如果你学 Rust 感觉很轻松,那这篇文章就对你无用,可以忽略。

工商银行从 2002 年开始建设数据集市,当时主要使用 Oracle 类单机版的关系型数据库。随着数据量不断增加,开始引入 TD、ED 等国外高端一体机。2014 年工行正式基于 Hadoop 技术建设了大数据平台,在其之上构建了企业级数据湖及数据仓库。2017 年,随着 AI 技术的兴起,又开始建设机器学习平台,2020 年开始建设数据中台和高时效类场景。

kafka3.0 的版本已经试推行去 zk 的 kafka 架构了,如果去掉了 zk,那么在 kafka 新的版本当中使用什么技术来代替了 zk 的位置呢,接下来我们一起来一探究竟,了解 kafka 的内置共识机制和 raft 算法。

大部分人的 commit 完全看不出改了什么东西,在团队人多的时候规范 commit 格式是很有必要的。