在Linux上数据包的路由行为

好长时间没写blog了,这段时间暂时没有写代码,一直在倒腾软路由的事情。 不过多亏了软路由,我对网络知识的储备又增加了一些。 这篇文章是想好好讲一下关于Linux上的网络数据包的路由处理. 据我现在所了解到的知识,Linux上决定数据包路由流向的关键模块有两个, 第一个是RPDB(Routing Policy DataBase 路由策略数据库),第二个是netfilter/iptables,很多人会把netfilter/iptables直接称之为iptables,也没有问题,但是严格上来说还是分开为好,netfilter是内核中的一部分,提供了一组数据包的hook. iptables则是实现了这些hook,并且提供了在用户空间操作这些hook的办法. ...

2024年06月12日 · 4 分钟 · 1569 字 · sdttttt

Web也能做种啊?

最近了解到了WebTorrent这个软件, 这个是一个基于Web技术做的一个Torrent的下载器, 还能播放视频. 挺神奇的, 这年头Web都能做种了? 因为在我的印象里, 目前的Web技术是不支持原生TCP/UDP这些网络协议. ...

2023年09月05日 · 1 分钟 · 222 字 · sdttttt

关于大文件的解析

最近碰上了一个需求,要做一个桌面程序,功能是将一个文件格式解析成json,然后在图表上展示这个数据,但是这个文件可能有GB单位的大小,解析要防止爆内存,还有图形也要防止崩溃。 文件格式解析倒反而不是什么难点,主要是文件大小的问题以及格式,json是一种树状的类型,每个节点和上下文都是有关联的,如果全放内存中非常容易爆内存 ,但是这个数据结构的特性导致很难将已经解析好的一部分数据直接先持久化,不然存取是一个问题,所以持久化肯定需要一些媒介。 ...

2023年04月12日 · 1 分钟 · 439 字 · sdttttt

Rust的一个函数参数签名问题

这个问题烦了了我1个小时。 1fn parse_path_operation( 2 &mut self, 3 path: &str, 4 op: Option<Box<impl FnOnce(&mut Self) + ?Sized>>, 5 ) -> Result<bool, anyhow::Error> 6 7self.parse_path_operation(path, None::<Box<dyn FnOnce(&mut IDir)>>)?; 这里记录一下这个签名的正确用法。 下次学乖了,这种编译器大小未知的trait类型一定要用Box或者其他的智能指针包起来,我想写成这样的签名完全不行,虽然被调用方的签名能通过编译,但是调用方的签名始终有问题,网上找了半天,还是得用智能指针管用… ...

2023年04月06日 · 1 分钟 · 163 字 · sdttttt

Vim 快捷键记录

其实真不该写这个文章的,Vim我虽然算不上用的很多,但也用的不算少,可是我对Vim的快捷键一直都记不住,实际上如果记住了Vim的快捷键对于文本操作术的效率会有非常大的提升。 基本的操作我就不写了,比如保存什么的,主要是一些文本操作快捷键的记录。 ...

2022年11月16日 · 1 分钟 · 396 字 · sdttttt

常用软件合集

MacOS bilibili客户端 Amphetamine 防睡眠 Telegram for MacOS Wechat QQ Firefox ESR VSCode Jetbrains Homebrew Lepton 代码片段管理 Sequel Ace 数据库 Flow 🍅计时器 Maccy 剪贴板管理 Flux 护眼 Clash for Windows XCode Karabiner Dynamic Dark Mode CotEdit DBeaver Notion Enh AltTab Keka Windows bilibili客户端 Wechat QQ Bindzip Firefox ESR VSCode Jetbrains Lepton 代码片段管理 Flux 护眼 Clash for Windows Clash Verge (虽然和CFW一样是H5技术做的,但是用的是WebView) Fluent Search (这个对我来说比utools好用不少,可以搜索本地文件和浏览器记录) Kayviz 改键位 Auto Dark Mode DBeaver Mailspring (这个我还在找更好的代替品) Bindzip

2022年11月15日 · 1 分钟 · 190 字 · sdttttt

Go Unsafe

看了一些关于unsafe包的文章,长话短说: unsafe.Pointer就是一个纯指针, 它很聪明, 如果对象改变了地址它也会自动改变.并且保持对对象的引用, 这样对象不会被回收. uintptr就是一个比较大的整型, 能容下任何指针地址, 但是这个不会跟随对象改变地址…而且对象还会被回收…

2021年04月08日 · 1 分钟 · 154 字 · sdttttt

记录一次Gradle构建的困难

受@idiotc4t所托, 我拿到了一个Java项目, 目的是要把这玩意编译出来, 最初我还以为和以前的Java项目类似, 只要mvn build 就能一了百了, 没想到这次拿到的是一个使用gradle构建的项目. gradle的出现比maven晚, 它们都是用来构建运行在JVM上的应用使用的, gradle可以使用编程语言来自定义你的构建流程, 类似C的makefile(这个比喻不太好其实), 或者是JavaScript的gulp. gradle解决了maven的一些特点, 比如xml的配置繁琐, 看着就头大, 以及构建步骤的灵活控制. 总之很牛逼就是了, 也比较难上手. ...

2021年02月05日 · 2 分钟 · 667 字 · sdttttt

节流与防抖

闲来无事在网上翻一些关于 Javascript 的一些搞基技巧,就发现了节流与防抖这两种设计模式。 上个星期在编写搜索框的时候就已经写过类似的代码 (搜索框输入关键词会实时去服务器上搜索,考虑到服务器压力就把代码加了限制,每 500ms 最多搜索一次,实际上这就是类似防抖的设计,只是我还不知道这个叫防抖…) ...

2021年01月18日 · 1 分钟 · 469 字 · sdttttt

Composition Api

最近一直在写 Vue, 在公司的项目里使用的是Composition Api + Vue2 的组合. (因为公司里考虑到同事的技能树, 没有用vue3和Typescipt). CA 是 Vue3 追加的全新 API. 用到 Vue2 里可能有点怪怪的. 不过 CA 是以 Vue-Plugin 的方式提供的 API, 所以使用起来非常方便. 同时也鼓励更多人使用这个API. ...

2021年01月14日 · 3 分钟 · 1296 字 · sdttttt