Laws of Software Engineering,软件工程定律

在互联网上闲逛的时候发现了一个很有趣的网站整理了一些软件工程的定律,叫做 Laws of Software Engineering,于是利用 LLM 在这里整理了一下。

浅记多因素身份认证

TOTP 为什么不算非常安全?为什么在多因素验证中又算是第二因素中常用的因素?

Linux 内核中的度量单位

又是狠狠地被 Linux 中度量单位坑害的一天。

无法重复键入的 Fcitx5

fcitx5 会在所有除了 Konsole 之外的终端卡死,何意味。

ZFS 降级事故

记录一次 ZFS degraded.

记被 XanMod Kernel 和 AppArmor 联合坑的一次踩坑

排查了下自己的 NAS 上 immich 为什么突然没办法拉起。

记一次服务器被挂恶意挖矿二进制

记一次服务器被挂挖矿软件

活着的 Arc

在翻阅其他的 Rust 项目时看到了一个关于 Arc 的有趣用法,故写下本篇文章特此记录

于 Tokio 中卸载 CPU Bound 任务

记一次后端计算密集性能优化。

74LS 家族手册

74LS 家族作为最出名的 TTL 门电路组件,有着超乎寻常的广泛用途。

JDK Projects 备忘录

他们开始建造城和塔。他们用火烧砖,把砖当石头来用。他们又拿石漆当灰泥,石漆来自海水和希纳尔的泉水。他们用了四十三年的时间来建城和造塔。塔的宽度有 203 块砖。每块砖的长度是高度的三倍。塔的高度是 5433 腕尺又 2 掌。〔塔的墙〕长十三斯塔德。

用 curl 下载 OnePlus 的 ROM

刷机,轻而易举啊! 坏了,坏了坏了坏了

实用命令切片

记录一下我常用的比较奇技淫巧的实用命令切片 XD

再见,Oh My Zsh。

Oh My Zsh 陪伴了我一整个学生时代,自从使用 zsh 后就没有离开过 Oh My Zsh。 不过终有离别的时候,上一次改革自己的工作条件是因为 VSCode 工作速度太慢不跟手导致体验非常不好,现在这把砍刀终于砍到 shell 上了。

你不应该复用 strings.Builder

在编写 Go 程序的时候在程序所占用的堆足够大后经常会遇到 GC 缓慢的问题,在这个时候第一个入手的地方就是利用对象池来处理对象复用问题减轻 GC 压力。 特别是对于 strings.Builder 类型,更应该利用 sync.Pool 来复用它对...吧?

支持删除的布隆过滤器

一般情况下布隆过滤器只能填入不能删除,有些特别的需求比如支持读写删的系统就会需要支持删除的布隆过滤器

基于栈的虚拟机与基于寄存器的虚拟机

经常听到 LuaJIT 和 JVM 分别是基于寄存器的虚拟机和基于栈的虚拟机,那么这两种虚拟机究竟有什么区别?

RVA23 包含了什么

Ubuntu 计划在 25.10 的 RISC-V 架构中只支持 RVA23 配置文件,于是打算大概看下 RVA23 有什么是比较重大的指令集成为了必选

Rust 的边界检查是否已经有很大的进步

最近又听到有人说 Rust 做不了高性能程序的原因是内插的边界检查会降低程序运行速度,我想这么多年了应该 Rust 开发团队不会不知道这个问题,因此做了个简单的实验来测试一下是不是这方面已经有了长足的进步

使用 Rust 编写操作系统:Barebones

这是 Philipp Oppermann 的操作系统系列博客的第一大章节,主讲如何搭建起一个基本的操作系统框架。

使用 Rust 编写操作系统:引言

最近在互联网上冲浪的时候找到了这个博客(其实是朋友发的),感觉很有意思于是决定做一下。

编译器笔记:rope

在实现 paradoxical 的时候注意到很多语言服务器或者编辑器都会使用一个叫作 rope 的东西来保存对文件的操作结果,因此简单记录下这个神奇的东西。

编译器笔记:CST

AST(Abstract Syntax Tree) 倒是想做编译器的人、不想做编译器的人都会知道一点,但是 CST(Concrete Syntax Tree) 倒是很少提到,睡不着就简单记录一下吧

Paradoxical 札记

最近把 neorg 作为笔记和规划系统有点上头,但苦于没一个好用的 Language Server,自己又对编译器前端方面略有了解于是决定写下这篇大概会持续更新的札记

简单的相似去重算法(基于向量)

在工作的时候遇到一个对图片进行去重的需求,简单记录一下

简单的 CFG 语法分析方法

有些时候吧人就是贱,想写点吃力不讨好的东西。今天就写点上下文无关文法(Context-Free Grammar, CFG)的两个算法吧。

让 OpenCV 可以被静态链接

在 Alpine 的环境里,需要尽可能让程序被静态链接,否则程序还需要安装巨大的 glibc 和其他动态库,不符合 Alpine 的原则,也不太方便被部署。但 OpenCV 并不是那么容易被静态链接,应该怎么办?

图片搜索笔笺

这篇文章只是简单笔记,具体实现方式不作细致讨论

电路板设计笔记-保护

在电路板设计当中,为了降低电路板在生命周期内意外挂掉的概率,需要一些保护性的措施来对电路板进行保护。

使用 Rust 实现 SnowflakeId

在最近的业务中更改设计的时候最终决定使用 雪花 ID (下文称之为 SID)作为数据库的主键,这样可以避免使用发号器等中间件。 但是广为使用的 snowflake 的实现实际上是线程级别的唯一,而不是分布式意义上的唯一,因此在生产上如果和分布式搭配会产生极大的问题。 怎么办?只能自己写了。 原理 SID 实际上是 Rust 的 i64,他有 64...

使用 Rust 实现拓展系统札记

Rust 在生产上的优势十分明显了,极高的性能和极致的资源体验。 但是对于我而言,总是觉得少了些什么——拓展系统。

遗传学定律的代码实现

[!NOTE] 因为最近要实现这方面的功能,所以写篇文章复习一下。

EN:The Journey of Rust and Procps

Hi, I'm Krysztal Huang, a contributor to Debian's uutils/procps.

ZH:Rust 与 Procps 之旅

大家好,我是 Krysztal Huang,Debian 的 uutils/procps 贡献者之一。

GSoC2024 笔记:使用 Rust 重新实现 procps

procps 是一套用于收集统计系统信息的套件,也指代一套访问 /proc 文件系统的 API。uutils 的 procps 是用 Rust 重新实现的,而这正好是本次 GSoC 的提案内容。

JWT 小册

JWT(JSON Web Token) 是一种分布式、跨域的单点登录方式,他开销很小而且天然支持分布式。

Guava:Cache

在开车的时候,与前方车辆一定要保持适当的距离,不管车速如何都是如此。这段距离叫做缓冲距离;在开发中也有类似的概念,不过分为 Buffer 和 Cache,Cache 偏向无序,Buffer 偏向有序。

编译器笔记:增量编译

如何让编译程序尽可能的快?并行化编译是最原始的做法——让每个单元都互相独立编译,并且尽可能多地同时编译。更进阶的做法就是——增量编译。

Gradle秘境:添加一个类似modCompileOnly的依赖块

FabricLoom 里有类似 modCompileOnly、modApi、modImplementation、modRuntimeOnly 配置块,那应该怎么做才能在自己的 Gradle 插件里实现类似的功能?

Minecraft:原始经济系统设计简述

如何在 Minecraft 设计经济系统是一个服务器维护人员以及策划组持久讨论的问题,那么过了这么多年我能给出什么方案?

TinyRemapper笔记

记录一下探索 TinyRemapper 和 FabricMC 构建流程

MicroOS:进阶

知道了 MicroOS 的基本理念,那么就该用这些基本理念构建服务了。

MicroOS:起步

MicroOS 是 SUSE 旗下一款很新的系统,面向原子化与自动化维护。 那么该从何体会它的好?它是为什么而诞生的?

DFS:深度优先搜索

暴力算法和 DFS 有什么区别?剪枝,回溯又是什么?

目录遍历攻击

在进行 Reposite 开发的过程之中遇到了访问本地文件的需求,同时又需要暴露文件。在查看 rocket.rs 的文档寻找这部分文档之时知道了 目录遍历攻击(directory traversal attack) 。