回到首页

THE JOURNAL / 过往篇章

往前翻,还有故事。

第 3 页 · 沿着文字,走进更早的年轮。

过往篇章

共 38 篇
全部归档
4 分钟阅读925 字

疑难杂症

在 tauri 中为 command 使用自定义错误 在 tauri 的 command 中返回的任何值都必须要是可以 的,包括错误:Everything you return from commands must implement ## async 语句中使用 async 语句块与 async fn 最大的不同就是前者无法显式的声明返回值,当配合 使用的时候编译器就无法得知 中 E 的类型。

Rust
4 分钟阅读832 字

跨平台的静态链接构建

大多数 Linux 软件都是动态链接的,动态链接可以使我们的程序不需要将所有所需要的库都打包到自身当中去。不过这样也有弊处,当目标系统比较旧,或者压根就没有我们需要的库的时候,我们的二进制文件就无法在目标系统中运行。 ## 安装交叉编译工具 不光光需要使用 来安装对应的 target,还需要 linker 来帮助构建到目标平台。 macOS Ubuntu 在安装好 target 与 linker

RustLinux
5 分钟阅读1058 字

细颗粒度更新与自动依赖收集

众所周知,React 并没有实现细颗粒度的状态更新。同时在副作用中也需要我们手动去管理对应依赖。如常见的 和 等: 这里就需要我们手动的去管理 的依赖,否则 则只会执行一次。而在 Vue 等框架中,则可以自动追踪其依赖: 在 Vue 和 Mobx 等框架中使用的“能自动追踪依赖的技术”被称为“细颗粒度更新”(Fine-Grained Reactivity),这也是许多前端框架响应式的原理。 ##

TypeScriptReact
10 分钟阅读2025 字

Rust Box 与对象

对于多数高级语言往往会弱化堆栈的概念,它们通常由 GC 等方式来管理内存。而对于像 Rust 这类的低级语言来说,则需要更深入的了解堆栈的概念。 栈内存从高位地址向下增长,且栈内存是连续分配的,一般来说操作系统对栈内存的大小都有限制。这也是为什么 C 语言中无法创建任意长度的数组。在 Rust 中, 线程的栈大小是 8MB,普通线程是 2MB。在函数调用时会在其中创建一个临时的栈空间,调用结束后

Rust
2 分钟阅读488 字

Rust 模式匹配

match 是一个极为强大的控制流运算符,它允许我们将一个值与一系列的模式相比较,并根据相匹配的模式执行相应代码。模式可由字面值、变量、通配符和许多其他内容构成。 ### 绑定值的模式 在匹配到绑定值的模式后,可以增加一个变量用来表示所匹配到的值。 这里的 就是匹配到的对应的 的值。 ### 匹配 Option 这里 Clippy 可能会提示我们有更好的写法: 上有个 方法,可以更好的代替 来做匹

Rust
10 分钟阅读2015 字

公开密钥密码学-非对称加密 🔑

GPG/PGP 赛高! ## 什么是非对称加密? 人类的历史上加密走了很长的一段路程。想尽了各种办法来保护自己那不想让不该知道的人知道的东西。 加密这东西,在密码学中最直白的解释就是将一般的明文信息改变为难以读取的内容,使其不可读的过程只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。 大概在 1970 年代中期,所谓的“强加密”的使用开始从政府保密机构延申至公共的领域了,也就

Linux
6 分钟阅读1365 字

使用 useSyncExternalStore 构建属于自己的全局状态

在 React18 new hooks 中简单了解过并作过一个简单的全局状态,它的参数只有三个: - : 一个当状态更新后可执行的回调函数。该函数会收到一个回调函数,这个回调函数就是当状态后执行,React 用来对比是否需要重新渲染组件。 - : 返回当前状态的函数。 - : 在服务端渲染时返回当前状态的函数,可选。 配合上 就可以非常方便的对接外部状态,了解了这个 hook 之后,对自定义的全局

TypeScriptReact
5 分钟阅读1096 字

React 18 中的一些新 hooks

useTransition 返回一个状态值表示过渡任务的等待状态,以及一个启动该过渡任务的函数。它和 CSS 的过渡没有任何关系。useTransition 的主要目的是作用于在复杂的过渡任务时提供一个优先级较低的更新,过渡任务中触发的更新会让更紧急地更新先进行,比如点击。 过渡任务中的更新将不会展示由于再次挂起而导致降级的内容。这个机制允许用户在 React 渲染更新的时候继续与当前内容进行交互

ReactTypeScript
2 分钟阅读546 字

使用 Turborepo 和 rollup 构建 NPM 包

对于 monorepo 我使用的是 turborepo,创建一个新的项目非常简单: 对于包管理器,这次尝鲜使用了 pnpm 它在安装包到 workspace 中相对于其他两个来说要更加的方便。 ## Turborepo 对于 turborepo 来说没有什么需要过多配置的,比较需要注意的就是它的环境变量需要手动在 配置文件中声明一次: 除此之外,在默认的 tsconfig 中, 其 是 如果需要一

JavaScriptNPM
23 分钟阅读4754 字

自建简易 FaaS

近些年来,传统的 IaaS、PaaS 已经无法满足人们对资源调度的需求了。各大云厂商相继开始推出自家的 Serverless 服务。Serverless 顾名思义,它是“无服务器”服务器。不过并不是本质上的不需要服务器,而是面向开发者(客户)无需关心底层服务器资源的调度。只需要利用本身业务代码即可完成服务的运行。 Serverless 是近些年的一个发展趋势,它的发展离不开 FaaS 与 BaaS

TypeScript
© 2026 Yggdrasil