📄🐟⌨️🍜🌙

一写代码的
debian 旁路由方案

debian 旁路由方案

Debian 旁路由方案为用户提供了一种更为稳定和灵活的选择,摆脱了对 OpenWRT 和 LuCI 的依赖。通过直接在 Debian 上进行配置,用户可以享受更高的系统控制权,避免了 GUI 带来的种种限制和不稳定性。相比于常见的旁路由方案,Debian 的方法使得透明代理的设置更加可靠,为那些追求性能和效率的用户提供了新的可能性。

GFW 原理考

GFW 原理考

GFW 的运作机制并非简单的出口网关监控,而是通过旁路监听技术对国际流量进行审查。这种方式使得所有出入境的 IP 包都被复制到 GFW 集群,进行深度分析和过滤。了解这一点,对于研究翻墙方法至关重要,因为它揭示了封锁的具体路径和技术手段。深入探讨 GFW 的网络拓扑,有助于更有效地应对和规避网络审查。

2024 学习计划

2024 学习计划

2024 年的学习目标:日语达到 N2 水平,学完 SICP 和 TAPL,实现一个完整支持 POSIX 的内核,再更新一下博客主题。目标不轻松,尽力而为。

RISC-V 工具链与模拟器(emulator)的安装

RISC-V 工具链与模拟器(emulator)的安装

在安装 RISC-V 工具链时,首先需要获取 riscv-gnu-toolchain 的源码,建议使用带有 `--depth=1` 的 clone 命令,以减少下载体积。安装过程中,注意查看 README 中的 Prerequisites 部分,确保前置依赖都已正确安装。在 Debian 系统中,可以通过简单的命令安装所需的依赖包,确保工具链的顺利搭建。

漫谈编程语言

漫谈编程语言

设计一门新的编程语言是一项既有挑战性又有趣的任务。通过简化复杂的编译原理和特性实现,重点关注代码如何在计算机系统中运行,能够帮助我们更清晰地理解编程语言的构建过程。以 RISC-VI 指令集为基础,探索语言设计的底层架构,揭示了计算机系统的分层结构和虚拟机模型,这不仅是对技术的探讨,还是对编程语言本质的深刻反思。

一次失败的项目实践——春节七天乐(不起来)

一次失败的项目实践——春节七天乐(不起来)

在一次春节假期中,灵感悄然降临。高铁上偶然阅读了关于在裸机上运行 Go 程序的文章,激发了对底层系统接口的探索欲望。作者的成功实践和实现,让人对将高级语言与操作系统结合的可能性感到兴奋。随着对相关研究的深入,发现这一概念早已有先例,这股热情在潜移默化中积聚,最终演变成了一场充满期待却未能如愿的项目实践。

6.5840 实验 2a —— Leader 选举

6.5840 实验 2a —— Leader 选举

实验 2a 专注于实现 Raft 算法中的 Leader 选举和心跳机制,旨在确保在各种极端情况下的正常换届和选举。这一实验是后续分布式KV存储实现的基础,包含了四个步骤,通过无锁版本的设计简化了 Raft 结构体的复杂性。实验指导书提供了必要的背景资料,但与前一实验相比,本次几乎不依赖参考资料,强调了独立实现的重要性。

Raft 论文阅读

Raft 论文阅读

Raft 是一种旨在提高日志复制效率的共识算法,特别适用于多机集群环境,确保在部分机器故障时仍能提供服务。这种算法通过复制状态机模型实现,利用日志记录指令顺序,使得集群各机器能够达到一致的状态。论文《In Search of an Understandable Consensus Algorithm》深入探讨了 Raft 的设计理念和与 Paxos 的对比,突显了其易于理解的特点,为构建可靠的大规模软件系统提供了基础。本文记录了对该论文的阅读笔记,旨在帮助理解其核心概念与应用。

golang 支持不同类型结构体间的深拷贝

golang 支持不同类型结构体间的深拷贝

在系统重构的过程中,面对分层架构中不同实体间的转换问题,深拷贝成为一项挑战。以商品为例,视图层的商品 VO、领域层的商品 entity 以及存储层的商品 PO 结构虽相似,但细微的差别如数据类型的不同,常常使得直接转换变得复杂且麻烦。为此,尝试利用反射实现一个通用的转换方法,旨在简化这一过程,减少繁琐的 assembler 方法,提升代码的可维护性与灵活性。

Java 中 this 关键字导致编译期常量传播优化失效的问题

Java 中 this 关键字导致编译期常量传播优化失效的问题

在 Java 中,使用 `this` 关键字时,编译器对常量的优化可能会失效。代码示例中,尽管 `ab1` 和 `ab2` 看似引用了相同的 `final` 静态变量 `s`,但在比较时却产生了不同的结果。`ab1` 通过直接引用静态变量进行字符串连接,而 `ab2` 则是通过 `this` 关键字,导致编译器无法进行相同的常量传播优化,从而影响了字符串的比较结果。这一现象揭示了在 Java 中细微的语法差异可能引发的编译行为变化。