rqdmap
博客
/
Posts
算法
/
ACM
漫评
/
Anime
归档
/
Archive
关于
/
About
日志
/
Changelog
统计
/
Statistics
博客
/
Posts
算法
/
ACM
漫评
/
Anime
归档
/
Archive
关于
/
About
日志
/
Changelog
统计
/
Statistics
Neovim 打造 Java8 开发环境
2024.07.19 22:54
2024.07.22 22:30
技术
Neovim
Java
LSP
IDEA
2502字
这是一篇一看标题就很邪教的文章, 尽管拥有了 LSP 加持的 Neovim 处理大部分其他主流语言的项目都是游刃有余, 可是很难想象会有人愿意在 Java EE 开发(国内可以认为等价于 Spring 生态)中使用它, 尤其是项目本身极有可能具有沉重历史包袱而不得不使用的古老的 Java8.. 本文将说明我在基于 Neovim 开发 Spring 项目时的一些粗浅尝试与配置技巧. ...
nvim-cmp 支持前缀匹配优先的补全
2024.04.19 20:53
2024.05.09 17:04
技术
Neovim
Plugins
KMP
前缀函数
1126字
在我的 Neovim 配置中, 一直使用的是 nvim-cmp 作为补全引擎, 由于其默认支持模糊查找, 因而补全列表中可能会出现前缀匹配优先级不如子序列的乱序问题, 举一个例子: 补全候选项中有 abc_variable 和 xaxbx 这两个词 输入 ab, nvim-cmp 根据传入的比较函数进行逐个比较与排序; 但由于默认支持模糊查找, 且官方的补全函数中貌似没有前缀匹配优先的规定, 而我自己很合理地又添加了一个根据长度排序的比较函数, 因而在补全列表中, 子序列 xaxbx 反而会获得更高的优先级出现在第一个, 这是极为不合理的. ...
2023 年度总结
2024.01.04 23:58
2024.01.07 19:55
杂谈
年度总结
2023
7401字
尽管 2023 年不太特殊, 甚至容易发现不是素数(7*17*17), 不过对我个人而言 2023 是经历了许多、学习了许多的一年, 因此考虑做一个年度的自省与总结, 以期留下一些结构化的记忆以供后来者翻阅. ...
Python 进阶技巧: 类与继承
2024.01.04 23:16
2024.01.04 23:55
Python
类
MRO
继承
3409字
本文主要介绍有关 Python 中类(class)与继承(inheritance)的一些高级使用知识与技巧, 包括: 与类相关的若干内置函数 多继承下的 MRO 序列与 C3 序列化方法 super 类的使用 魔术方法与类的实例化过程 ...
实用Linux桌面系统定制化方案
2023.12.03 21:42
2024.03.02 20:27
Linux
ArchLinux
Utils
5473字
前前后后折腾自己使用的这套Linux桌面系统也有一年多的时间了, 但是由于其中涉及的事务纷繁细琐, 因而一直没有专门整理过一篇内容对其做系统的介绍. 不过由于这个周末又重构了之前的一套账单处理工具和一些常用脚本, 一下子便感觉到目前系统和功能服务已经愈发复杂起来了, 可以考虑对其做一个简单的介绍以便更好的传教(不是) ...
Android微信记录备份方案
2023.11.20 00:44
2023.11.20 02:36
技术
微信
Android
root
3624字
在还没有解锁root时, 我偶尔便会闲来无事查查看微信的用户记录导出方案, 一些方案是基于Windows的聊天记录解密, 如: windows取证之导出微信&QQ聊天记录, 还有一些是基于IOS系统的Itunes来做导出. 总的来说都不是很满足需求, 基于Windows的方案一来看评论说只能解密当前的缓存数据, 除非每几天登陆一次电脑微信不然数据就不完整, 另外常用的设备也不会是windows而是安卓, 而Itunes的更不说了, 我也没有一台适合当作中转站的IPhone系列. ...
Pixel7刷机折腾小记
2023.11.15 23:36
2024.04.02 17:51
技术
pixel
刷机
4984字
TL; DR 如何恢复Root? Pixel 自动推送的更新总是会覆盖掉 Root, 这边将简洁地给出如何恢复 Root 的过程以供查阅, 全部操作过程应当不超过15分钟. 因为是恢复root, 因而这里将不介绍adb工具套件的获取、bootloader的解锁等过程 从官方下载原厂固件文件, 注意: 选择的版本号需要与手机的操作系统版本号(build number)相匹配 ...
Mac(x86派)的废物再利用
2023.09.09 19:48
2023.12.04 01:00
技术
网络
frp
btrfs
备份
9192字
手头有一个退下来的mbp, 是老版本因而搭载的还是x86的CPU, 同时由于电源被我通过拓展坞充了次电而弄坏过, 因而一旦断电会光速关机.. 加上mbp真的是用到后面(大概4年)越用越卡, 让人怀疑macos是不是搞了什么鬼或怎么样.. 总之这台机子不太能当作主力机了, 退下来后也没怎么用过, 装了个windows但是用起来也是卡卡的, 前阵子拿来实验室企图当个服务器用, ntr上了个archlinux后但是也不知道拿来做什么, 正巧最近发现主力机的ssd/文件系统可能有问题, 因而考虑拿mbp来当一个x86派使用, 做做备份或者其他一些什么事情. ...
Rust项目结构与测试
2023.09.06 16:05
2023.09.06 16:33
Rust
包
模块
测试
4000字
由于rqdmap/rust-in-competitive-programming项目冉冉升起, 希望对代码更加有条理地进行维护和组织, 因而学习一下cargo中有关项目, 包, 模块, 以及测试的一些内容, 做一个简单够用的知识学习与整理. 实际上是项目代码写了不少了, 整体结构也划分好了, 再来补了完善了这篇博客; 因为大概喜欢写测试的技术人员不多吧:/ Rust的项目与包 Rust中Package(项目)和Crate(包)的区别? ...
不安全Rust: unsafe编程
2023.08.22 21:01
2023.08.28 22:51
Rust
unsafe
全局变量
3841字
在rCore-OS: 批处理系统 - rqdmap | blog初次见到了unsafe的相关代码, 当时并未系统学习, 只是草草了解, 这里补上相关的内容知识. Rust编译器提供了强大的编译期安全保障, 不过其仍然为我们提供了unsafe关键字, 供我们写一些 “不安全的” Rust黑魔法. unsafe简介 为什么会有unsafe的需求? ...
Rust中的智能指针
2023.08.01 16:56
2023.08.28 22:49
Rust
指针
6879字
通常说来, 指针是一个包含了内存地址的变量, 而内存地址引用/指向了另外的数据. 在Rust中, 最常见的指针类型是引用, 其借用其他的变量的值, 除了指向某个值以外就没有其他的功能了. 没有性能损耗, 是Rust中使用最多的指针. Rust中的智能指针则相比于一般指针更加复杂, 其中包含诸如长度、容量、元信息等额外信息. 相比于引用会借用数据, 智能指针还能拥有其指向的数据, 然后再向他人提供服务. String和Vec都是常见的智能指针. ...
rCore-OS: 批处理系统
2023.07.26 19:29
2023.08.16 21:52
OS
Rust
RISC-V
Trap
批处理系统
15902字
系列文章 rCore操作系统实践 - rqdmap | blog 本章主要目的为设计和实现支持批处理操作的OS, 其相比于上一节的库OS而言, 主要的不同在于: OS自身运行在内核态; 支持其他应用运行在用户态并发出系统调用 一个接一个的运行不同的应用程序 为了实现这些目的, 本章节需要做的事情分为: 调整应用程序, 使其能够发出系统调用; 操作系统提供额外的功能支持应用程序的执行, 包括但不限于sys_write, sys_exit等具体的系统调用功能. ...
rCore-OS: 基本执行环境
2023.07.24 19:30
2023.08.16 21:51
OS
Rust
RISC-V
QEMU
9579字
系列文章 rCore操作系统实践 - rqdmap | blog 本章主要是讲解如何设计和实现建立在裸机上的执行环境, 并让应用程序能够在这样的执行环境中运行. 导言中说: 大多数程序员的第一行代码都从 Hello, world! 开始,当我们满怀着好奇心在编辑器内键入仅仅数个字节,再经过几行命令编译(靠的是编译器)、运行(靠的是操作系统),终于在黑洞洞的终端窗口中看到期望中的结果的时候,一扇通往编程世界的大门已经打开。 ...
rCore操作系统实践
2023.07.23 20:38
2023.08.16 21:51
OS
Rust
RISC-V
QEMU
530字
系列文章 rCore-OS: 基本执行环境 - rqdmap | blog rCore-OS: 批处理系统 - rqdmap | blog 在寻找Rust实践性的学习材料的过程中发现了rCore-OS项目, 其基于RISC-V架构实现一个用Rust写的操作系统; 教程看上去也不错, 十分的详实且成体系: rCore-Tutorial-Book-v3 3.6.0-alpha.1 文档 因而准备照着教程学习一下rcore-os, 并企图在过程中对Rust的基本编程与操作系统等方面都能获得更进一步的理解. ...
网页字体精简方案
2023.07.21 02:13
2023.07.24 21:44
技术
字体
网页
2784字
这是一个令人兴奋的想法! 其目的在于按需精简字体库, 以使得网页在保证显示效果的同时减少需要传输的数据量. 我个人使用的字体为思源黑的CJK+Iosevka的西文, 为了实现强制爱(x), 之前对于博客字体的处理方式都是用css指定本地的字体文件, 手动压一份woff2的Iosevka和思源黑的字体放在网站服务器上, 如果用户没有的话就去下载吧(导致加载缓慢), 而且由于缺省字体的存在, 会造成特别明显的FOUT(Flash Of Unstyled Text)问题, 特别是最近新加坡接连抽风, 不确定是不是被FireWall管控了, 流量被控制了, 经常出现字体根本下载不出来的情况. ...
SUID与程序执行
2023.07.14 15:08
2023.07.24 21:44
Linux
Shell
文件系统
程序执行
1418字
在之前的博客ArchLinux调优: 显卡、声卡与电源 - rqdmap | blog中说明了如何使用开源的nvidia驱动并且关闭nvidia的供电来使得笔记本续航能力的提升. 通常来说我们不希望每次开机后都要手动向bbswitch写off字符串, 因而一般委以重任给dm; 不过像ly这样的纯终端dm貌似不具备在X Server加载后、登陆进入系统前的这个时间段执行一些脚本(可能因为ly运行在X Server加载前!), 因而后来出于种种考虑使用的是lightdm加载器, 比较现代, theme支持前端技术, 也比较好看, 最重要的是图形化的启动界面意味着可以在X加载后执行一些脚本. ...
软件所实习体会与总结
2023.07.07 22:24
2023.07.07 23:35
杂谈
实习
2572字
眨眼间就在软件所搞了4个月不到点的科研实习, 今天汇报完最后一个项目, 彻底run了, 浅浅记录一些心得体会.. 实习本身任务不算重, 线上实习, 无严格的考勤, 每周3-4天, 期间总共做了三个研究项目: Kernel Mode Linux: 基于QEMU搭建内核调试环境 KML: 启用Kernel Model Linux KML: 实现机制研究 Sched_ext 拓展调度技术 sched_ext机制研究 编译期间内核优化技术 真要说起来, 三个项目可能写了有几千行LaTeX代码, 而编程语言则是一行没写(sh和python脚本语言可能倒是写了点!).. ...
有关博客与笔记的思考
2023.07.07 11:09
2023.07.07 22:27
杂谈
1175字
这是一些有关于博客内容的思考, 事实上在之前就有过一些想法, 曾经在about的Todo列表中写过: 增添弃坑等标签, 允许保留与查看这些博客, 但不在主页渲染 当时就意识到了目前百余篇博客中可能一大部分都是一些思想的碎屑, 或者是一些草稿纸上的笔记, 真正让人满意的、好的技术博客可能寥寥. 翻看到这样一篇帖子也是进一步唤起了一些有关后续博客内容的思考: ...
Bluespec与CPU(MIT6.375)
2023.06.25 20:43
2023.07.07 22:22
计组
bluespec
MIPS
流水线
8702字
BUAA 6系高等机组实验作业, 使用bluespec工具链编程, 实现一个{,非}流水的右移器以及一个精简MIPS指令集CPU的一微小的部分. 课程疑似参考6.375 Complex Digital Systems - Spring 2006; 因为PPT的风格是一模一样的, 但是课程年份与内容应该可能有所出入, 不进行一个几乎是20年前课程的考据了. 环境搭建 实验默认提供的环境是ssh + X11转发, 不过在我的机器好像有问题: ...
Linux内核中的Rust使用
2023.06.05 16:09
2023.06.27 17:46
Linux
Kernel
Rust
2863字
内核代码选用Linux-6.3.4, 对其中有关Rust代码进行简单的分析. ...
ArchLinux: 蓝牙支持
2023.05.25 02:09
2024.09.25 19:19
Linux
蓝牙
archlinux
863字
前言 在考虑购买 HHKB 时, 由于有线版本只要1k, 带有蓝牙的双模则要2k5.. 不过由于蓝牙无线确实是十分的方便, 因而还是希望测试一下本机的蓝牙模块. 操作教程 主要参考<Bluetooth - ArchWiki>即可. ArchWiki 本机是Dell G5520 Nvidia, 可以修改ArchWiki对应的部分了:) Laptop/Dell - ArchWiki 安装几个相关的包: bluez: 蓝牙协议栈 bluez-utils: 命令行下的蓝牙配对&连接 ...
NixOS: 选择与放弃
2023.05.24 17:50
2023.05.29 23:05
Linux
Nix
NixOS
2721字
偶然听说了NixOS, 其万物皆配置文件的理念深深地吸引了我. 由于Arch下的pacman对于系统的监控总是不够地完全, 完全可能出现安装的某个包被卸载后一些配置/数据文件遗留在本机(经过测试, pacman -Rsun并不行, 后续考虑结合pacman -Ql写一些钩子函数), 或者是我修改了若干位于/etc/目录下的文件但这些修改并不会被包管理器追踪, 这极大地造成了系统状态的不确定性(冗余垃圾+不可复现). 因此, NixOS的理念从一开始就极大地吸引了有一些系统洁癖的我. ...
Neovim插件管理与配置
2023.04.24 16:40
2023.07.23 19:22
技术
NeoVim
Plugins
LSP
1129字
为Nvim添加了nvim-cmp插件栈… 之前一直没有动手, 只单独安装了几个无复杂依赖的插件, 这次直接一口气从nvim-cmp补全插件, LSP相关, 代码块补全, 模糊查找等全部搞好了.. 其实际上高度耦合… 代码块补全以及LSP最终必须全部集成到nvim-cmp中, 而且还更新了代码块补全为luasnip这个lua编写的补全前端(?不确定), 丢弃了原本的utlisnip, 因而还把所有自定义的代码块全部用luasnip的语法重写了..同时, 修改了插件管理器为lazy.nvim, 重构了我的nvim的所有配置文件的目录树结构.. ...
ArchLinux调优: 显卡、声卡与电源
2023.04.23 01:29
2023.07.14 15:21
Linux
驱动
声卡
独显
电源管理
3535字
记录一些最近针对本机硬件设备驱动相关的调整与优化(?反向优化), 主要涉及到Nvidia独立显卡, Intel声卡以及电源管理等几个部分. 电源管理 在使用Windows时基本上是稳定1.5-2h左右, 去年刚配置好我的bspwm桌面系统后却能使用到4h… 结果目前Linux的续航又变成2h了.. 所以研究一下如何对Linux的电源进行监视与管理. ...
sched_ext机制研究
2023.04.09 19:41
2023.05.29 23:05
Linux
Kernel
scheduler
eBPF
30526字
Slide 充斥着大量的谬误与个人的随意理解: sched_ext机制研究 简介 <The extensible scheduler class [LWN.net]> BPF背后的核心思想是, 它允许程序在运行时从用户空间加载到内核中; 与现在的Linux系统相比, 使用BPF进行调度有可能实现明显不同的调度行为. 那么, 为什么现在要提出BPF机制呢? 为了期待一场长时间的讨论, 补丁系列的封面信详细描述了这项工作背后的动机. 简而言之, 该论点认为, 在BPF中编写调度策略的能力大大降低了试验新调度方法的难度. 由于引入了完全公平调度器CFS, 我们的工作负载及其运行的系统都变得更加复杂. 要开发适合当前系统的调度算法, 需要进行试验. BPF调度类允许以一种安全的方式进行实验, 甚至不需要重新启动测试机器. bpf编写的调度器还可以提高可能不值得在主线内核中支持的小众工作负载的性能, 这些工作负载更容易部署到大量系统中. ...
Logisim开发单周期MIPS处理器
2023.04.06 18:20
2023.05.29 23:05
计组
Logisim
MIPS
4078字
作为计组第一次实验的报告模板进行整理, 内容为使用Logisim开发单周期MIPS处理器, 支持的指令集仅有: addu, subu, ori, lw, wsw, beq, lui这7条, 其中addu以及subu不必要实现溢出. 实验环境 <Logisim-Ita/Logisim: Logisim Italian Fork> 对Linux的支持还算可以, 因而直接在Linux上进行实验即可. 总体设计 下图展示了该单周期处理器的总体设计: 主要涉及到了IFU, GRP, ALU, EXT, DM, Controller这几个模块, 这几个模块后续也会进一步说明. ...
Linux下修改文件的4个时间
2023.03.24 13:43
2023.05.29 23:05
Linux
文件系统
时间
396字
由于一些原因… 接触到了如何修改Linux(/windows)下文件4个时间的方式. 修改时间 修改Access time 与 Modify time: 1touch -a <file> -d '2000-01-01 08:15:23' 2touch -m <file> -d '2000-01-01 08:15:23' 而Change time与Birth time貌似是与fs相绑定的, 比如在Linux的ext4下打包一个zip, 传送至windows的ntfs中解压, 显示的创建时间也只是当时windows的时钟所显示的时间… 关于这一点尚未仔细研究, 不过由于修改这两个时间的方式一般都是通过修改系统时钟. ...
clash+systemd自启动问题
2023.03.24 13:43
2023.05.29 23:05
Linux
clash
systemd
654字
通常来说, 参考网上最常见的guide来配置systemd + clash 没有问题: <Running Clash as a service · Dreamacro/clash Wiki> 1[Unit] 2Description=Clash daemon, A rule-based proxy in Go. 3After=network.target 4 5[Service] 6Type=simple 7Restart=always 8ExecStart=/usr/local/bin/clash -d /etc/clash 9 10[Install] 11WantedBy=multi-user.target 问题排查 但是在我的配置中(优先走的是url-test策略组)会出现一些问题: 开机自启后, 大概率会出现完全无法走proxy的情况, 而且该问题近期才出现, 因而并不是因为clash的配置导致… ...
KML: 实现机制研究
2023.03.16 21:11
2023.05.29 23:05
Linux
Kernel
Kernel Linux Mode
12849字
本文将参考作者给出的guide, 深入研究IA-32下KML机制的工作原理以及相关技术. 有关于KML技术的使用可以参考:<启用Kernel Model Linux - rqdmap | blog> 工作原理 To execute user programs in kernel mode, Kernel Mode Linux has a special start_thread (start_kernel_thread) routine, which is called in processing execve(2) and sets registers of a user process to specified initial values. The original start_thread routine sets CS segment register to __USER_CS. The start_kernel_thread routine sets the CS register to __KERNEL_CS. Thus, a user program is started as a user process executed in kernel mode. 文件arch/x86/kernel/process_32.c中涉及两处KML的补丁: ...
duu: 按照大小排序的du指令
2023.03.13 12:12
2023.05.29 23:05
Linux
shell
du
276字
正确的办法! du -d 1 -h | sort -hr duu du 指令无法以可读的形式按照大小排序, du -d 1 -h | sort -nr并不正确, 因而写一个简单的脚本进行实现. 1use std::env; 2 3fn main() { 4 let args: Vec<String> = env::args().collect(); 5 assert!(args.len() >= 2); 6 7 if args[1].len() > 18 { 8 println!("Number too large"); 9 return; 10 } 11 12 for c in args[1].chars() { 13 if !c.is_digit(10) { 14 println!("Invalid number"); 15 return; 16 } 17 } 18 19 let nr_bytes = args[1].parse::<u64>().unwrap(); 20 /* KB -> MB -> GB */ 21 22 let mut level: usize = 0; 23 let mut tmp = nr_bytes; 24 while tmp > 0 { 25 tmp /= 1024; 26 if tmp > 0 { 27 level += 1; 28 } 29 } 30 31 // du指令默认的单位是KB! 32 let levels = ["KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; 33 print!("{:>.2}\t{}\t", nr_bytes as f64 / u64::pow(1024, level as u32) as f64, levels[level]); 34} 再用awk处理一下du的第一列输出. ...
Acme.sh+ZeroSSL证书部署
2023.03.10 13:20
2023.09.06 10:00
技术
SSL
acme.sh
cloudflare
DNS
1748字
之前一直沿用的最老的服务器的ssl证书提供商FreeSSL首页 - FreeSSL.cn一个提供免费HTTPS证书申请的网站, 前阵子发现不知道怎么不太行了, 偶尔会出现证书不被信任的情况, 过一段时间可能会自己恢复… 不过去官网查了下发现自己的账号下居然好像又没有这份证书… 很奇怪, 总之打算换一下SSL证书提供商. ...
KML: 启用Kernel Model Linux
2023.03.08 10:58
2023.05.29 23:05
Linux
Kernel
Kernel Linux Mode
QEMU
4586字
KML简介 Kernel Mode Linux: Execute user processes in kernel mode 是一种允许用户程序运行于内核态的技术. 处于内核态的程序可以直接访问任意的内核空间, 无需再使用软中断和上下文切换等手段进行系统调用. 此外, 这些程序也会正常的参与分页和调度, 这样哪怕这些程序死循环, 整个系统也不会因此卡死. 如何使用KML? 编译了打好补丁的内核后, 在/trusted/目录下的程序将自动进入内核态运行. ...
基于QEMU搭建内核调试环境
2023.03.06 14:58
2023.05.29 23:05
Linux
Kernel
QEMU
GDB
3571字
搞一份内核源码, 并尝试调试一个拓展内核功能的补丁Kernel-Mode-Linux; 对于该模块的调试与分析见后续博文<启用Kernel Model Linux> Linux内核编译 这里使用的是Linux4.4.12(4.0.*, 3.1*, 2.6.*系列也有尝试过), 并且还需要打上PREEMPT_RT实时内核补丁, 借鉴于Github KML仓库: 1# 0. Clone this repository 2git clone git@github.com:sonicyang/KML.git 3 4# 1. Clone Linux 4.4.12 5git clone -b v4.4.12 --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git 6 7# You will get a copy of Linux 4.4.12 source in directory linux 8 9# 2. Download PREEMPT_RT patch 10wget https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.4/older/patch-4.4.12-rt18.patch.xz 11 12# You will get a file patch-4.4.12-rt18.patch.xz 13 14# 3. Apply the PREEMPT_RT patch 15cd linux 16xzcat ../patch-4.4.12-rt18.patch.xz | patch -p1 17 18# You will have a modified Linux 4.4.12 source with PREEMPT_RT, now. 19 20# 4. Commit the the changes at once (Otherwise, git am will fail) 21git add . 22git commit -m "Apply PREEMPT_RT" 23 24# Now you should have a clean git repository without unstaged changes 25 26# 5. Apply these 2 patches 27cp ../KML/*.patch . 28git am *.patch 29 30# You are good to go 31# Compile the kernel then you should be able to use KML PREEMPT_RT补丁 关于该内核补丁, 是为了将Linux内核拓展为一个实时的操作系统. ...
Rust-泛型与特征
2023.02.22 15:31
2023.05.29 23:05
Rust
泛型与特征
6006字
Rust的泛型(Generics)和特征(Trait)看的一个头两个大… 需要仔细学习整理一下, rust_course的标题分类感觉有点confusing… 泛型 如何使用泛型? 泛型函数: 1fn largest<T>(list: &[T]) -> T{ 2 .. 3} 泛型结构体: 1struct Point<T> { 2 x: T, 3 y: T, 4} 5 6fn main() { 7 let integer = Point { x: 5, y: 10 }; 8 let float = Point { x: 1.0, y: 4.0 }; 9} 泛型枚举: ...
Windows10+ArchLinux重安装
2023.02.18 23:26
2024.04.07 16:45
windows
3804字
系列文章 原始问题: win11下第一次启动chrome卡死 - rqdmap | blog 昨天礼拜五, 晚上带了电脑回来准备鸭子杀, 刚开机就有不详的感觉, 哪有名字叫self-signed的证书 自己认证自己… 更加让人觉得是中毒了… 不过好像其实是和clash有关.. 不管了, 因为这就是它的遗照了: 书接上文 最开始的一些问题背景和初步解决方案(但失败了)在这里: win11下第一次启动chrome卡死 ...
ArchLinux上安装zathura-develop
2023.02.13 01:35
2023.05.29 23:05
Linux
zathura
源码包
1857字
起因是因为Zathura作为一款我很喜欢的使用键盘移动的PDF阅读器, 居然拥有如此糟糕的划词功能(Text Select), 其划词功能通过一个方框框选出一片区域, Zathura自动提取出其中的文本, 并自动复制到剪贴板, 看上去很美好但是存在两个问题: 选区粒度粗, 不能做到精准到某个字符 划词不准确, 有时候阅读PDF文章时, 框出来的内容要么会变得很多要么缺胳膊断腿 那么能否使其变得和Okular/Acrobat这类阅读器一样便利呢? ...
网络实验复杂组网
2023.01.14 00:51
2023.05.29 23:05
网络
MPLS
VPN
6269字
实验内容 本实验将模拟一个全国范围的银行主干网络, 采用总行数据中心、省行和地市行的三级架构,业务接入基于MPLS VPN体系结构进行部署。充分考虑网络的安全性和可靠性规划网络拓扑结构,根据业务接入需求统一规划VPN、IP地址和子网,采用设备备份、链路备份、路由备份等技术保证网络的可靠性。 实验分析 体系架构 实验的主干网将分为4个自治系统, 所有的业务均采用VPN方式接入骨干网, 网络拓扑结构如下所示: ...
网络实验MPLS/VPN
2023.01.08 23:55
2023.05.29 23:05
网络
MPLS
VPN
6024字
偷懒偷的都是自己的懒… 虽然考完试了, 但是之前没有整理MPLS/VPN的内容, 确实对这块不敢说是很清楚… 在此之前 曾经尝试了更新系统来修复打开chrome/任务管理器卡死的问题, 当时就提示说此次更新与vmware冲突, 需要卸载vmware… 事实上确实与别的虚拟化平台会冲突.. 不仅仅是vmware, 还有vbox… 不过因为一直没有再次进入过ensp所以今天才发现.. ...
win11下第一次启动chrome卡死
2023.01.08 22:20
2024.04.07 16:45
windows
chrome
3586字
系列文章 系统重装: Windows10+ArchLinux重安装 - rqdmap | blog 很魔幻的问题以及最后的解决办法… TL; DR 问题描述: 机器为 Dell G5520, 自行更换过西数 2T 黑盘, 使用一段时间后出现第一次打开应用时(Chrome最为明显)整个系统直接卡死的问题, 有时等待5分钟左右可以自行恢复正常, 后续也不会再卡死; 但通常情况下则必须重启才能重新正常使用 Windows 系统. ...
trash:取代危险的rm
2023.01.01 13:23
2023.05.29 23:05
Linux
rm
shell
594字
rm 指令十分的危险… 为此希望实现一个回收站. archwiki给出了一些可用的建议Trash management, 用下来体验不好, 打算自己搞一个. 第一版的trash自己解析了输入的参数.. 然后加上unix时间戳后mv到一个指定的公共磁盘分区上(因而其实性能也不太好, 尤其是大文件的删除时), 但是最后还是死在了处理空格和引号之类的问题上.. 而且与原生rm的兼容性不好… ...
Linux文件权限
2023.01.01 12:48
2023.05.29 23:05
Linux
文件权限
2010字
其实对于Linux的文件权限一直一知半解, 之前使用php尝试访问sqlite的时候就发生了文件权限的惨案, 至今也不知道为什么会这样.. 当时的情况是, 将博客的public文件夹放置在服务器的/usr/share/nginx/html下就会G, 哪怕对数据库文件+该文件所在的目录都设置了777权限后php还是无法访问该目录下的sqlite DB; 修改放置位置到/srv/http/下就可以了, 而且不需要设置777, 设置为755即可.. 但是其实之前也考虑到文件权限等等, 因而将nginx和php-fpm的用户全部设置为了rqdmap, 而public文件的用户和组也全部都是rqdmap… 为何放到/srv下就可以了呢… 疑案未决… 因而准备稍微系统看一下Linux的文件权限管理. ...
实现Hit Counter访客统计
2022.12.19 14:43
2023.05.29 23:05
技术
php
sqlite
1143字
找了下网络上的但是不是很满意… 所以打算自己通过前后端实现一下Hit Counter来进行访客统计. 后端总体通过nginx + php-fpm + sqlite实现. ...
网络实验(MPLS基础与考试)
2022.12.19 12:20
2023.05.29 23:05
网络
MPLS
7688字
将所有的图片放在一个Markdown中太傻逼了, 超过了200张图片, 因而本篇博客再单独记录MPLS与网管的相关内容, 同时努力不再采用图片格式, 而是用Plain Text展示相关实验内容. 不过比较怠惰, MPLS VPN只是结合着教材上做了一下实验, 没有进行记录; 网管则是觉得过于傻逼, 加上ensp也没有网管软件, 很多报文都没法复现, 直接跳过不管. ...
vim使用技巧
2022.12.12 23:34
2023.05.29 23:05
vim
7606字
不知道怎么就放弃了VSC… 极为朴素的用了3个月Vim… 最近越发觉得不能够得心应手的进行编辑了, 因而感觉是时候系统地再精进一下Vim了 首先记一下VSC的一些问题… 完全的OSS版本中, 许多插件都没有上线, 这样的VSC几乎无法使用了, 或许有什么奇技淫巧可以离线安装, 但是如果使用vsc还要折腾这么麻烦的话就偏离了使用它的初衷了; 而在微软的专有软件中(也是从官网上直接下载的版本), 插件有时候会有莫名的问题, 在我的archlinux上至少有如下两个问题, 感觉是比较大的瑕疵: ...
trojan+nginx共用443端口
2022.12.08 19:41
2023.05.29 23:05
Linux
nginx
trojan
906字
当远端服务器的443与80端口已经运行着Http Server后, 如何复用端口以允许trojan同样监听443呢? ...
Linux下为Chrome开启代理
2022.12.07 23:00
2023.05.29 23:05
Linux
Chrome
Proxy
Linux
334字
由于没有使用集成的桌面环境, 因而chrome没法读取全局代理的信息, 每次更新AUR chrome后都需要手动修改… 这里小小mark一下解决办法(或许今后可以做更加自动化的钩子什么的… 再说) Rofi命令行启动的应该是桌面程序(?), 在这个地方:/usr/share/applications/google-chrome.desktop ...
网络实验(OSPF,BGP与组播)
2022.11.27 18:14
2023.05.29 23:05
网络
OSPF
BGP
组播
SNMP
MPLS
16645字
本文章包含200张图片… 请务必慎重打开该文章… 该博客主要为网络实验的全面复盘, 包括: OSPF, BGP, 组播, 网络管理与MPLS. 参考了大量张力军老师的《计算机网络实验教程》, 通过ensp进行各项实验与分析. 后记, 本博客OSPF和组播的介绍比较系统比较好, 但是BGP不知道当时在整理的时候处于什么精神状态, 导致BGP的内容整理比较答辩… ...
Stratovirt + Unikraft + Redis
2022.11.19 18:26
2024.01.05 00:01
技术
stratovirt
unikraft
2267字
尝试在stratovirt虚拟机上运行基于unikraft的redis, 并测试1G内存可以运行多少个实例, 但是行百里者半九十, 折腾了半天的网桥和DHCP, 又换了红帽, arch和debian系列的rootfs, 最终ubuntu总算把kraft成功build起来, 结果最后一步死活不行, 所以姑且记录一下, 但是意义寥寥… ...
ULK 中断与异常
2022.09.03 19:41
2023.05.29 23:05
23588字
中断被定义为一个事件, 该事件将改变处理的指令执行顺序. 中断分为同步中断和异步中断, 在Intel微处理器手册中, 它们分别被称为异常和中断. 中断是由定时器或IO设备产生的; 而异常是由程序的错误产生的, 或是由内核必须处理的异常条件(如缺页, 对内核服务的请求等)产生的, 前者内核通过发送信号来处理, 后者则需要内核执行恢复异常的所有步骤. ...
ULK 内存管理
2022.07.29 19:50
2023.05.29 23:05
Linux
Kernel
内存
33748字
页框管理 尽管奔腾处理器允许采取两种不同大小的页框:4KB和4MB(PAE被激活则是2MB),但是Linux采用4KB页框大小作为基本分配单元,基于两个原因: 由分页单元引发的缺页异常很容易得到解释:或者是页无权访问,或者是页不存在。在后一种情况下,内存分配器仅仅需要找到一个4KB空闲页框分配给进程。 ...
6.828(2021)
2022.05.17 19:56
2023.05.29 23:05
OS
4815字
代码存放于rqdmap/6.828-2021下的各个Branch中 Trap RISC-V的trap机制 在RISC-V中,使用ecall、发生exception和产生中断会使得CPU的控制流改变,转而去执行特殊任务以处理这些事件,这些事件被称为trap. 为了完成trap处理事件,RSIC-V CPU提供了一系列控制寄存器,其中比较重要的有以下几个: stvec: 内核将处理函数的地址写入该寄存器,riscv跳转到该地址处理事件 spec: riscv保存PC计数器在该寄存器中,后续通过sret指令(从trap中返回时调用)将原计数器写回pc scause: riscv在此处写入一个数值表示trap的原因 sscratch: 在开始trap处理时进行辅助 sstatus: 该寄存器中的SIE比特位决定是否允许设备中断,SPP比特位表明该trap来自用户还态还是内核态,并以此决定sret返回的状态. 对于所有的trap类型而言,riscv硬件将会依次执行下述的过程: ...
Promela初探
2021.11.29 18:44
2023.06.20 21:58
技术
spin
Promela
协议分析技术
1457字
由于要处理协议分析的大作业,接触了spin和Promela,下面整理一些内容作为记录。 基础语法 参考资料: Promela-维基百科 Promela-Manual 数据类型 内置的基础类型有:bit(u1), bool(u1), byte(u8), short(16), int(32)等, 这里前缀u表示无符号数。 声明一个变量可以类Ctypename name [ = anyexpr ]), 也可以使用这种语法unsigned name : constant [ = anyexpr ], 这样将声明一个占用conststant位的无符号数。当初始化的值超出了数据类型能表示的范围后,数值将会被截断造成信息的损失,spin只会在随机或指定的模拟下会警告该情况。 ...
C内联汇编-AT&T
2021.10.13 23:02
2023.05.29 23:05
技术
汇编语言
内联汇编
2869字
GCC-Inline-Assembly-HOWTO GCC 汇编语法 GCC采用AT&T的汇编语法,这和intel汇编语法有一些不同: 操作数的顺序。intel语法通常是op dst src,在AT&T语法中则是op src dst 寄存器命名时需要加上%作为前缀 立即数的表示。AT&T立即数以$作为前缀,对于字符串常量而言也需要加上该前缀。intel语法中使用h后缀表示一个十六进制数,AT&T使用前缀0x表示。因而当表示一个十六进制的立即数时,则写为$0x123的格式 操作符的大小。AT&T中使用操作符后缀来确定该被作用的操作数的长度,‘b’, ‘w’, ’l’分别表示byte(8-bit), word(16-bit), long(32-bit);在intel汇编中则是通过ptr作用在操作数上确定对应的长度 地址操作数。在间接寻址时,intel使用[base + index*scale + disp]的语法,在AT&T中则使用disp(base, index, scale)的语法。需要注意,当disp/scale中出现常量时,不需要$前缀。 基础语法 1asm("assembly code"); 如果asm关键字与代码中其余部分冲突,也可以使用__asm__指令,二者是等价的。 ...
ULK 进程
2021.10.04 16:28
2023.05.29 23:05
Linux
Kernel
进程
32210字
进程、轻量级进程和线程 进程是资源分配的实体,而线程是作业调度的基本单位。Linux使用轻量级进程来支持多线程应用程序,轻量级进程之间可以共享一部分资源,诸如地址空间、打开的文件等,通过将轻量级进程和线程关联起来就可以实现多线程应用程序。 进程描述符 进程描述符包含了与一个进程有关的所有信息,内容相当复杂。 进程拥有多种特殊资源,本章主要说明两种字段:进程的状态和进程间的父子关系。 ...
ULK 内存寻址
2021.10.04 16:28
2023.05.29 23:05
Linux
Kernel
内存寻址
7583字
绪论 绪论中从总体的框架介绍了一下操作系统、文件系统与Unix内核相关内容,不予过多赘述。 一个新学到的内容是可重入(内核,这意味着多个进程可以同时在内核下执行。这个特性太过于自然以至于让我一直没有注意到也没有在教材上见过,如果某个进程在内核态中被阻塞被挂起,那么它当然不应该影响到其余进程对CPU的使用。在可重入内核的要求下,内核控制路径就会被交替执行。 ...
SEU夏令营回忆录_and_近况杂谈
2021.09.09 22:58
2023.05.29 23:05
杂谈
2798字
对一个月前的东南大学夏令营的回忆,并杂乱地记录一些近日杂谈.. -1 现在电脑出了点问题都不知道是哪里爆炸了,有可能是挫比linux系统爆炸,有可能是挫比typora for linux兼容性不行,有可能是老键盘连接不稳定,还有可能自己误操作…….为了正确写个mardown还重启了电脑… 更新博客一拖再拖…当初面试完SEU后基本就彻底躺平,一直没有高兴记录博客;加上各种夏令营的具体情况理论上不得外传,显然不能发在部署在github的公开网页中,又想捣鼓有一下自定义theme的web前端后端技术,不过终归是无功而返…中断的嵌套层数太多,让人彻底失去一项项补全的耐心了,也就一拖到底了主要是打游戏躺平不香吗 ...
iie夏令营记
2021.07.31 00:15
2023.05.29 23:05
杂谈
2158字
iie(伪)夏令营记 ...
LinuxKernel
2021.07.17 22:09
2023.05.29 23:05
Linux
Kernel
523字
深入理解Linux内核学习笔记 前言 想要学习Linux内核的契机大抵源于读OS相关的paper时感到力不从心,就正好趁机学习一下素来感兴趣的内核知识。 写下“兴趣”二字后不禁想到日向晶也的论述,兴趣绝不能成为训练的动力,否则遇挫后兴趣消失也就自然放弃了训练;然而学习内核确实也没有什么迫切的压力与强制的要求,随意为之吧 ...
ECNU夏令营记
2021.07.13 23:35
2023.05.29 23:05
杂谈
2494字
华东师范大学计算机营游记 ...
BUAA夏令营记
2021.07.12 21:45
2023.05.29 23:05
杂谈
1627字
BMP-FS
2021.05.28 20:14
2023.05.29 23:05
BMP
1884字
BMP文件格式初探 实现BMP文件的放缩 搜索资料时找到,笑死。 此为课程设计的第四题,这道题体现了大作业的精髓:在抄中知道,在抄中学习,在抄中苟且。 BMP 文件结构 一般的情况如下所示,摘自wiki Structure name Optional Size Purpose Comments Bitmap file header No 14 bytes To store general information about the bitmap image file Not needed after the file is loaded in memory DIB header No Fixed-size (7 different versions exist) To store detailed information about the bitmap image and define the pixel format Immediately follows the Bitmap file header Extra bit masks Yes 3 or 4 DWORDs[6] (12 or 16 bytes) To define the pixel format Present only in case the DIB header is the BITMAPINFOHEADER and the Compression Method member is set to either BI_BITFIELDS or BI_ALPHABITFIELDS Color table Semi-optional Variable size To define colors used by the bitmap image data (Pixel array) Mandatory for color depths ≤ 8 bits Gap1 Yes Variable size Structure alignment An artifact of the File offset to Pixel array in the Bitmap file header Pixel array No Variable size To define the actual values of the pixels The pixel format is defined by the DIB header or Extra bit masks. Each row in the Pixel array is padded to a multiple of 4 bytes in size Gap2 Yes Variable size Structure alignment An artifact of the ICC profile data offset field in the DIB header ICC color profile Yes Variable size To define the color profile for color management Can also contain a path to an external file containing the color profile. When loaded in memory as “non-packed DIB”, it is located between the color table and Gap1.[7] 一般来说,现在获取到的BMP文件的DIB头都是第五代(BITMAPV5HEADER),长124字节;但是针对本实验而言,只需要极少的一些信息,因而只保留40字节,剩余84字节读进来不与使用。 ...
linux多线程
2021.03.23 12:45
2023.05.29 23:05
Linux
多线程
2090字
在linux下,Pthread是一套通用的线程库,由POSIX提出,具有较好的移植性。 使用头文件<pthread.h> 线程基本操作 线程的创建与退出 pthead_create 1int pthread_create(pthread_t *thread, pthread_attr_t * attr, void *(*start_routine)(void *), void *arg); 传入参数:thread为线程标识符,attr为线程属性设置,start_routine为线程函数起始地址,arg为传给start_routine的参数。 ...
Linux 下的 socket 编程
2021.03.23 12:45
2024.03.02 20:27
Linux
7726字
基础知识 socket常用函数 socket domain指定协议族,type指定socket类型,protocol指定协议(为0时自动选择type类型对应的默认协议) 1int socket(int domain, int type, int protocol); 返回值大于0成功;-1失败,错误类型保存在全局变量errno中。 bind 分配地址族中的特地地址给socket sockfd为socket描述字,通过socket函数的返回值确定 addr指向绑定给sockfd的地址,根据socket创建时协议族的不同而不同。 ...
2020数据库实验
2021.01.15 23:04
2023.05.29 23:05
数据库
SQL
前后端
5228字
前端使用html,后台使用mysql数据库,使用php处理数据库,完成数据库课程的学籍管理系统大作业。 特此记录,有机会的话还是希望学习一番全栈的内容。 别的班好像做的都绘声绘色的,我们班验收者则寥寥,我太菜了 前台html服务 写的非常丑陋,很多冗余的代码,自己确实完全是个门外汉qaq 没有css 我不会 ...
微信小程序
2020.12.07 23:44
2023.05.29 23:05
技术
前后端
PHP
SQL
微信小程序
2070字
记一次微信小程序的搭建过程。 前端wxml+wxss+js,后端apache2+php+mysql 尽管为了完成微信小程序的基本功能只需要略知上述内容的皮毛即可,但是从零开始仍然是过程坎坷,花费了许多夜晚才略有成效;故特此记录。 后端apache服务器的配置 apache2 最初不知道从哪里安装了一个不带有mysqli库的apache2,导致我顶着超长的延迟在服务器修了一年还是不知道怎么搞出来。 ...
创建时间
修改时间
字数