AweiP Cache
type: channel
link: https://aweip.com/
description: My Cache
items: 关于 AI 应用的一些思考
items: 2025年：变与未变
items: Qwen2.5-7B 微调与部署全流程 SOP
items: 对SSD知识的学习汇总
items: 人生场景切片记录
items: 计算机网络个人笔记
items: OpenWrt路由下配置AP模式
items: Windows文件名过长带来的奇妙BUG
items: 《应用密码学与网络安全》知识总结
items: 《分布式计算》总结

关于 AI 应用的一些思考
type: item
date: 2026-01-18T17:55:00+08:00
description: 还记得 22 年那会还在用 Github Copilot 的代码补全，用注释生成思修课大作业，随后 ChatGPT 横空出世，再后来微软 New Bing 稍微支棱了一段时间（应该是最早带网页检索的AI？），以及之后国内模型一系列井喷式的发展 —— 千问、豆包、Deepseek R1(很难想象这玩意才出现一年）、智谱、MiniMax（拒绝了它家 offer 的本科室友现在是有点后悔 hh）······再到现在实习围绕 Agent Runtime 开发高强度做了一段时间，逐渐有了一些比较深刻的感受，在此记录下来，不定时更新。 2025.1.18 LLM 成为技术人员必备的提效工具的趋势不可阻挡，但是使用效果和个人知识广度和深度成正比。借用一句老话：“人的知识面是个圆，圆越大接触到的空白越多。” 只是在 AI 的使用上，知识面的圆越大，能应用 AI 的 Interfaces 越多。 AI CLI 工具不只是终端里的对话界面，它一方面解决了人在文档和网页复制粘贴中转效率低的瓶颈（人类按 Ctrl C+V 的双手作为数据总线太慢了），另一方面直接赋予了 AI 用终端命令操作电脑/服务器的能力，更能模拟人类使用这些设备的工作流程。 CLI 工具+容器是一个比较有意思的做法，通过引入“容器”这个边界，把一个受外界干扰的复杂状态机（宿主机），简化为一个封闭的、确定的黑盒（GPT：很抱歉我搞砸了一切，rm -rf *启动）。Agent 工具在内部运行可以在一定程度上起到熵减的作用。 只是应用层面的话，我感觉目前各种概念本质上还是在折腾输入的 Prompt。不过也确实，输入质量越高，参数匹配越精确，输出质量越高。有点类似于写 sql，写得好可以查得更快。 感觉目前大多数大厂 toC 的 AI 落地模式比较接近传统的 IM 系统（毕竟主要是对话）。 设计 Agent 一定程度上是对现实世界工作流程的逆向，有时候有点像超级智能的脚本，但是得定义好执行边界。（产品经理是最早用 Agent 的人群，只不过我们现在用人工智能，他们很早就把我们当能工智人用。） 2025.3.8 在某家网安领域的公司日常实习两个月不到内上线了一整个项目，作为日常实习生深度参与后端 + 前端 + Agent 侧容器化 + 生产环境服务部署 + 整体架构调优（不明白为什么公司很重视这个项目但怎么感觉整体 70% 都是我一个日常实习生在干），上线前也通过了公司安防实验室大佬们的测试。 作为一个对前端技术栈只是粗浅理解，只对后端开发和计算机专业核心课认识深一些的我，显然是在 AI 的帮助下才能实现这种类似特种兵式高强度开发作战，同时在实战中也积累到了 AI 的各种使用技巧，也认识到了 Coding Agent 基于原理的无法逾越的能力边界： 后端：简单的查询很适合 AI 写，但是其他部分要深刻理解任务场景，只有基于需求和现有代码精心编写的 prompt 才能放心让 AI 去完成，其实这种 prompt 已经差不多是自然语言和伪代码之间了。 对于低耦合度的功能模块增加很适合让 AI 写； 高耦合度的屎山，有那精心编 prompt 的时间还不如自己上手边写边测； 让节子的一个学长看了我的 prompt，他觉得这就是 prd 了（笑死 难道说我还挺适合干产品？） 架构是会随着一堆需求加上之后开始腐化的，要是开发的时候没意识到这种，只是库库让 AI 写功能，最后只会成一团 Go 💩，作为项目开发者你要想明白每次改动对后续继续开发有什么影响，这是要上生产环境不断迭代的代码，不是自己本地跑一跑的小工具。开发中，代码本身并不是所有的上下文，从部署环境（性能、网络条件等）到后续开发再到日常维护乃至产品未来的发展方向，以及公司各团队协作、国家相关政策和各种复杂历史遗留问题，这都是真切需要考虑，很吃经验以及个人意识的。 前端：我只理解前端一些基本的原理，很多功能上的只能详细描述我想要的结果，这时候反而得考虑为展现产品特色而设计一些效果 + 站在用户的角度去设计各种交互逻辑和显示效果（最产品的一集） 云原生：容器化是真好玩，为任务的生命周期管理和可观测性设计各种方法太爽了，但还是想说个笑话，虽然不是在云原生技术栈领域的： 我们这套 Agent 任务系统其实挺类似于 CI 平台的，但是难点是获取 AI 在容器内执行的状态和结果，之前单任务场景选择让 AI 执行完报销掉容器之后再读取文件夹获取产物，前不久提了个容器内执行多任务并实时反馈给用户的需求，我说这个后端作为控制平面很难处理，于是 Agent 侧让我轮询对应文件夹内的产物； 显然，直接提这种需求让 AI 写，它肯定是能直接写出来的，但是做出这种决策显然缺乏各种 IO 消耗、文件读取竞态、反模式的上下文，以至于不会觉得这是问题，都不会去 AI 问解决方…

2025年：变与未变
type: item
date: 2026-01-01T21:48:00+08:00
description: 过去不怎么写年度总结，一年一年跌跌撞撞哭哭笑笑地过去好像也就那么回事。很多时候心里憋着漫漫的情绪，憋着憋着也就凝固沉底了，只留下水面一掠的涟漪， 看不见的城市 过去的2025，是此生踏足这世界各个角落最多的一年——西安、合肥、上海、深圳、东京、大阪、京都、宇治、奈良、北京、天津…… 到现在还很怀念考研后年初在西电全身心骤然轻松的那段时光，记忆里还洋溢着和好友们一起过日子打游戏吃吃喝喝这此生仅此一次的惬意。还记得二月年关时在家乡和家人一起看着满天的烟火，庆祝着我们这个小镇的一次新生。随后是到上海的匆匆一瞥，雨雾蒙蒙、霓虹灯色，但是梅奔里夜游的表演我真的不甚喜欢，不过没想到居然是日音在国内的最后一舞。再然后便是三月底那决定命运的几天，上午从漫漫灰黄沙尘的西安出发，下午到空气清新满是春意的深圳，兴奋紧张、清新湿热、如梦一般地完成了对考研的最终答卷。最后是一切尘埃落定在西安的一些时光，心里氤氲着的是一些时光易逝的悲凉和脚步略迟于同伴们的孤单……就这么到五月底，收拾收拾回了合肥。 在家的日子很独特，咬着牙继续着我的减肥大业，在盛夏深蓝夜幕下，在清晨骄阳未起时，一遍遍奔跑，一次次大汗淋漓，一次次想象着未来更好的自己。 中间和小梦去了一趟日本，算是完成对自己这些年辛苦的一次奖赏，异国他乡的感觉确实很独特，无论是风景，还是身边的嘈杂，就像是生活在了日剧里，一切都如其中演绎的一般。我其实挺喜欢一切秩序井然的感觉，但身处其中隐隐又感到对个性和生命力的压制，末几天感到有些压抑，有些想逃离。 下半年的主题是北京，很幸运遇上了校区调整，到了可能是最能体验共和国氛围的玉泉路校区，顺便去看了陶喆的演唱会，其中发生的很多事可以后面的篇章再聊。还去了天津一趟，真的很搞笑还是能找到 z 同学，速通一遍天津游（虽然还是逛租界）……但是很开心完成了很久以来的愿望，看了一次周深的演唱会，顺便去表哥的母校天大逛了一圈，也是运气不好遇上了下雨，伴着瑟瑟秋雨走走停停，感受着独特的校园氛围，最后在校友咖啡厅点了杯热拿铁暂时拯救了快被冻死的我。 那些少年 真的很搞笑，虽然都毕业了，但大伙们还是不约而同的聚在了北京。 本科室友 Y，我总觉他是个妙人，粗放大线条下其实是一颗细腻善良的心，本科时关系甚是不错，毕业后人在老铁厂做牛马。我初到北京第一周的周末，那晚我没有提前打招呼，骑着新买的公路车，一路从玉泉路骑到龙泽，去见已阔别一年的他，也结识了他的猫猫，寒暄聊天后，他一路伴我骑行回学校，我们绕着校园走了一圈，最后已至深夜，我目视着他骑车离开，不得不说真的是很肆意青春的一次出行。随后每月常常找他聚餐（好吧其实很多时候是我想撸猫），我们一起聊着过去、当下和未来。如今他也成功进入了下一个阶段，祝他一切顺利。 老学长 xm，二刺螈，心不跳动厂能坚持三年多的铁血打工人，性格好得一笔但是能坚持几年都找不到对象。大学时期我们一众小登绝对的极客榜样。虽然毕业好几年了我感觉和没毕业似的——毕业后经常回西安和我们一起聚餐，前年我们小登快毕业的时候也和我们一起出去玩，去年考完研去日本也查有此人。在北京读书这半年，加上 C 叔，以及随机刷新的寄哥、 GC 和 SZ，离开西安之后还是能继续在北京再开一桌，一起骑行，也是不得不感慨很是幸运。 白月光寄哥，我眼里的满分人类，绝对的高情商，绝对的善解人意，性格好得一笔但是和 xm 一样能坚持几年都找不到对象。虽然去深圳了（嚯嚯你怎么知道我马上也得去深圳），但经常来北京出差，于是我们还是能一起出去骑车，一起狠狠干饭，每次遇见都觉得非常开心，有时真的觉得很幸好能在大学的时候认识到这些人。 追忆似水年华 年底，不到两个月的实习生活给今年添上了最为独特的一笔。这段实习经历以极其暴力的资源自由和文档匮乏打爆了我曾经隔离的知识体系，在极其短暂的时间里将其编译链接，让我建立起了闭环的工程思维。让我的视角从如何写好一个函数变为了如何设计一个体系以解决当前的需求。同时，我也见证了 AI 的恐怖发展，深刻理解了这玩意的本质和能力的边界，极大扩展了对其应用的设想，也具有了快速理解和猜测其他 AI 应用底层原理的直觉。但最珍贵的是，这段经历让我实现了对技术的祛魅，对黑盒/魔法式技术的去恐惧化，没有什么是没法理解的，它同时解答了我多年来的疑虑：那些在课堂里刻苦记忆的以及日常里四处探索尝试里积攒起来的知识，我其实是能很好运用起来的。 从书记雨露那耳濡目染获取到的前端知识，曾用心学习的后端技术栈，折腾服务器、路由器 、Docker等积攒的基础经验，最后加上 AI 的助力，让我在两个月不到的时间里摸透了负责的项目，独立完成了大部分模块的开发，乃至最后参与部署上线，我体验到了一般打螺丝实习生很难有的全链路视野，也让我有了基础的架构明悟感。 其实说来很牛马，我在这次实习中体验到的被需要的感觉，是让我坚…

Qwen2.5-7B 微调与部署全流程 SOP
type: item
date: 2025-12-11T22:52:00+08:00
description: 写在文前：没想到最后也屈服于 AI 了，在各种资料和 Gemini 的帮助下完成了一次微调和部署流程 项目目标：基于 Qwen2.5-7B-Instruct 模型，使用 PsyQA 数据集微调一个具备共情能力的心理咨询 AI，并量化部署到 Ollama。 硬件环境：NVIDIA 5090 32G + 100G 可用磁盘空间 基座模型：Qwen/Qwen2.5-7B-Instruct 第一阶段：环境与数据准备 1. 环境搭建 推荐使用 Conda 创建独立环境，防止依赖冲突。 Bash # 1. 创建并激活虚拟环境 conda create -n qwen_finetune python=3.10 -y conda activate qwen_finetune # 2. 克隆 LLaMA-Factory git clone --depth 1 https://github.com/hiyouga/LLAMA-Factory.git cd LLAMA-Factory # 3. 安装核心依赖 pip install -e ".[torch,metrics]" -i https://pypi.tuna.tsinghua.edu.cn/simple # 4. 安装加速库 (Flash Attention 2) # 注意：这步极易报错，确保 CUDA 版本与 Torch 匹配 pip install flash-attn --no-build-isolation 2. 数据处理与清洗 将 HF 格式转换为 LLaMA-Factory 支持的 Alpaca/JSONL 格式。 脚本：preprocess_psyqa.py Python import json from datasets import load_dataset def format_psyqa(output_file): print("正在加载数据集 lsy641/PsyQA ...") try: # 建议先下载到本地 /root/autodl-tmp/data/ 避免网络中断 dataset = load_dataset("lsy641/PsyQA", split="train") except Exception as e: print(f"加载失败: {e}") return print(f"原始数据量: {len(dataset)}") formatted_data = [] system_prompt = "你是一位共情能力强、专业的心理咨询师。请根据求助者的描述，给出温暖、建设性的建议。" for item in dataset: question = item.get('description', '') or item.get('question', '') answer = item.get('answer', '') # 简单清洗 if len(question) < 10 or len(answer) < 10: continue formatted_data.append({ "instruction": system_prompt, "input": question, "output": answer }) with open(output_file, 'w', encoding='utf-8') as f: json.dump(formatted_data, f, ensure_ascii=False, indent=2) print(f"✅ 处理完成！有效数据: {len(formatted_data)} 条。保存至: {output_file}") if __name__ == "__main__": # 确保 data 目录存在 import os os.makedirs("data", exist_ok=True) format_psyqa("data/psyqa_formatted.json") 生成文本样例： { "instruction": "你是一位共情能力强、专业的心理咨询师。请根据求助者的描述，给出温暖、建设性的建议。", "input": "我想实现自己的目标，但是心灵匮乏，没有能量，所以行动力很低心灵能量如何补？", "output": "楼主你好呀，给你温暖的抱抱～在你的问题描述中，你能够感知到自己是一个有目标的人，但是你却缺乏【能量】，这能量更学术一点的来说，就是动机。给我们做出行为反应的更多的就是我们的动机，当我们的动机越强烈越明确的时候，我们就能够越高效的、迅速的做出行为反应。或许你需要去寻找这个目标对你来说的意义，你为什么渴望有这样的一个目标？在这你还需要去完善你的行动，可能你有很强烈的需求去促进你的行为，但是可…

对SSD知识的学习汇总
type: item
date: 2025-08-10T22:46:42+08:00
description: 感谢HOMOLAB的精彩文章，让我对SSD有了更为科学的认识 PART I 固态硬盘（SSD）基础 1.1 发展历史与演进 NAND Flash 原理：1145141919810个浮栅晶体管平铺堆叠（发配到模电区）。把晶体管在不同挡位的电压（浮栅晶体管捕获存储的电子数量差异导致电压不同）当作信息。 比特数与存储密度 单元 数据量（二进制位数） SLC 1 MLC 2 TLC 3 QLC 4 性能与耐用性 从SLC➡MLC➡TLC➡QLC： 存储数据难度上升：主控在写入数据时，需要精确地控制浮栅中电子的数量； 读取数据的难度上升：主控在读取数据时，也必须非常精确地判断当前电压属于哪个区间，否则可能导致误读； 耐久性降低：存储信息越多，对电压精度要求越高。擦写次数越多，浮栅的磨损就越大，电压状态就越不稳定。 原因：如QLC，将16种不同的电压状态挤在一个小小的浮栅晶体管里，就好比在一条狭窄的公路上行驶16辆车。每辆车之间的安全距离会变得非常小。 1.2 SSD 的基本构成 NAND Flash 存储芯片：浮栅晶体管堆叠，有着比较玄学的寿命说 Block（擦除的最小单位） ➡ Page（读写最小单位）➡ Cell 主控（Controller）：硬盘里管理数据的大脑，在如今SSD产品损坏的案例里一般是由于主控物理暴毙或者固件暴毙导致的 DRAM 缓存（不是都有） 无缓（DRAMless SSD） 有缓（DRAM SSD）：存储FTL表，便于寻址 PART II SSD工作原理 2.1 读写与擦除 REW（Read-Erase-Write） 固态的擦除是以block为单位、读写以page为单位，nand的物理特性决定了他不能覆盖写入。因此如果我们要对一个已有数据的page进行写入，那么必须先要把这个page所在的block中的数据读出，block清空后再把所有数据写进去。 2.2 核心技术与机制 PART III SSD性能参数与协议 3.1 关键性能指标 IOPS（Input/Output Operations Per Second）：如英文名，硬盘每秒钟能够处理的输入/输出操作次数。 传统指标：随机和顺序是HDD时代传承下来的概念，在SSD中或许不再适用，但仍然被广泛使用。 顺序读写（Sequential Read/Write）： 顺序读写是指数据在存储介质上连续存储和读取的方式，通常用于大文件传输或连续数据流的处理。参数通过用大文件进行读写测试来获得。 随机读写（Random Read/Write）：随机读写是指数据在存储介质上分散存储和读取的方式，通常用于小文件或随机访问的数据。一般使用大量小文件进行读写测试。 相关论述文章《随机 稳态 缓外 无知以及谎言,不存在的随机写入》总结： SSD数据存储在NAND的多个页（Page）中，页是SSD的最小读写单位； SSD读取数据时，一般需要根据FTL（Flash Translation Layer）将逻辑地址转换为物理地址； FTL表的查询需要时间，如果一个文件分布在临近的物理空间上,那么对其进行读写的操作就不需要多次查询FTL表从而节省开销； FTL表的映射是非线性的，物理上连续的存储单元未必在逻辑上是连续的； 对于一个大块的连续文件写入而言,看起来是顺序写入，但数据不会集中在某一个NAND的某一个DIE的某一个plane的某一个block,而是分布在不同NAND上的不同block中； 因此，顺序读写和随机读写的概念对于SSD并不完全适用，SSD的性能更多地取决于其内部结构和数据管理方式；因此，顺序读写和随机读写的概念对于SSD并不完全适用，SSD的性能更多地取决于其内部结构和数据管理方式； 缓外速度（Sustained Write Speed）：在SLC Cache技术应用后产生的概念 定义：缓外速度是指在SSD的SLC Cache被填满后，数据写入到TLC或QLC NAND Flash时的速度。通常情况下，SLC Cache可以提供更高的写入速度，而缓外速度则较低。 备注：缓外速度不等同于SSD的实际写入速度，在如今常常导致用户对SSD性能的误解。实际上，连续大容量写入分多个阶段（关键词：SLC Cache释放、REW、Writeback惩罚、TLC/QLC直写、GC回收），而这受到厂家设计策略的影响，部分用户观察到的缓外速度没有太大的意义。 WAF（Write Amplification Factor） 定义：写放大因子，表示实际写入的数据量与原始数据量的比率。 产生原因：SSD是以页为单位进行读写，但由于NAND Flash的特性，无法直接覆盖写入，因此需要先擦除整个块（Block），然后再写入新的数据。这种操作会导致实际写入的数据量大于原始数据量，从而产生写放大现象。 WA…

人生场景切片记录
type: item
date: 2025-03-12T15:38:50+08:00
description: 午睡，梦中，将醒未醒时，意识恍然一掠发觉自己在那片依旧熟悉的黄绿相间的小路上，天上斜斜得挂着略有些晒人的太阳，路边疯长着有腰高的杂草，从层层叶间掠过扑面而来的是夹杂着草木青味的温热空气。虫鸣、鸟啼，铺洒在初夏回家的路上。

计算机网络个人笔记
type: item
date: 2024-11-19T19:59:00+08:00
description: 第一章 计算机网络体系结构 I.计算机网络概述 概念 计算机网络是互连的、自治的计算机集合。 由节点（Node）和连接这些节点的链路（Link）组成。 组成 组成部分：硬件、软件、协议 工作方式： 边缘部分：用户直接使用的主机 核心部分：网络的基础设施，如路由器、交换机等 功能组成： 通信子网：负责数据传输 资源子网：负责资源管理 功能 数据通信 资源共享 分布式处理 提高可靠性 负载均衡 交换技术 种类 交换技术 特点 优点 缺点 电路交换 1.需要建立物理连接通道2.传输过程中通道被==独占== 1.通信时延2.适用于实时通信3.能够完全有序传输 1.建立连接时间长2.线路利用率低灵活性差3.难以实现差错控制 报文交换 1.报文封装全部信息2.==全部存储==后再转发3.无需建立连接 1.适用于短报文传输2.适用==不确定==通信量3.线路可靠4.动态分配线路 1.转发时延长2.缓存开销大3.难以实现差错控制 分组交换 1.报文分割成==固定长度==的分组2.==存储转发==3.无需建立连接 1.减少出错概率2.简化缓存3.流水线加速 1.存在存储转发时延2.需要额外信息量3.可能出现乱序、丢失、重复分组 [!Important] 报文转发和分组转发存在处理延迟，即上图中的空隙 分组转发花费时间和中间节点数量有关系，一些情况下可以简便运算 区别 计算机的数据传送往往是突发式的，采用电路交换时通信线路的利用率很低。报文交换和分组交换不需要建立连接（即预先分配通信资源），在传送计算机的突发数据时可以提高通信线路的利用率 将报文构造成若干个更小的分组进行分组交换，比将整个报文进行报文交换的时延要小，并且还可以避免太长的报文长时间占用链路，有利于差错控制，同时具有更好的灵活性。 分类 分布范围 广域网（WAN） 城域网（MAN） 局域网（LAN） 个人区域网（PAN） 传输技术 广播式网络 点对点网络 拓扑结构 总线型 星型 环型 网状型 关于差别，在通信效率、可靠性、扩展性、成本等方面出题 网络性能指标 [!Important] 速率中的K、M、G表示的是十进制，分别为10^3、10^6、10^9 速率 带宽 模拟信号：频率范围（Hz） 计算机网络：最高数据传输速率 吞吐量：单位时间通过网络的实际数据量 时延 发送时延 t_s = 数据块长度/发送速率 传播时延 t_c = 信道长度/传播速率 处理时延 排队时延 总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延 时延带宽积: 传播时延 * 带宽 往返时延 RTT=|发送报文时间 - 接收确认ack时间| ！信道利用率 U 空闲时延 D_0、当前时延 D D = \frac{D_0}{1-U}，U 越大，当前时延 D 越大 II.计算机网络体系结构 分层结构 分层基本原则 每层实现特定功能 各层间由可以互相通信的接口 下层独立于上层，即没有上层也能工作 上层==单向==使用下层服务 结构元素 实体 实体：在通信过程中能够发送或接收信息的硬件或软件模块 对等实体：在通信过程中能够相互通信的实体 协议数据单元（PDU）：对等层水平传递的数据单元，分为数据和控制信息 服务数据单元（SDU）：对等层垂直传递的数据单元，服务上层 协议控制信息（PCI）：对等层水平传递的控制信息 [!Note] 第n层收到的PDUs称为n-1层的SDUs，加上第n层的PCI就构成了n层的PDUs ！协议、接口、服务 协议（水平关系） 协议 含义 作用 举例 语法 数据格式 数据的结构和编码 TCP 报文的格式由语法决定 语义 具体操作流程 何时发何种控制信息、如何应答 TCP 三次握手具体操作 同步（时序） 操作条件、时序 明确数据交互的顺序流程 TCP 连接的建立、关闭报文时序 接口 服务访问点 SAP（Service Access Point）：同一节点内相邻层之间的接口，提供服务访问点 服务（垂直关系） 服务原语：服务提供者和服务用户之间的通信操作 请求：服务用户向服务提供者发出的请求，请求服务提供者执行某种操作 指示：服务提供者向服务用户发出的指示，要求服务用户执行某种操作 响应：服务用户向服务提供者发出的响应，表示对指示的响应 证实：服务提供者向服务用户发出的证实，表示对请求的证实 服务分类 面向连接服务和无连接服务：是否建立连接 可靠服务和不可靠服务：是否保证数据传输的可靠性 有应答服务和无应答服务：是否需要对数据传输进行应答 OSI参考模型 低三层为通信子网，高三层为资源子网 层次 名称 传输单位 功能 协议 1 物理层 比特 1.规定物理接口参数2.规定信号意义和电气特征 IEEE802.3 2 数据链路层 帧 1.速率协调2.差错检测（==只能丢弃==）3.流量控制 SDLC…

OpenWrt路由下配置AP模式
type: item
date: 2024-09-04T11:23:00+08:00
description: 由于在当前的网络环境下部署了软路由+NAS，由软路由延申到我房间的硬路由在DHCP模式下的网络多了一层NAT，无法向上一层访问，但刷了OpenWrt的硬路由没有常见商用路由器的AP模式切换，让路由器将仅作为无线信号扩展设备。只能逐一对LAN口和WAN口以及防火墙进行设定，下文记录一下操作和背后的原理。 1. 关闭 DHCP 服务 进入 Network → Interfaces。 编辑 LAN 接口，在 DHCP Server 选项卡下，勾选 Ignore interface。 保存并应用。 既然只作为 AP 使用了，自然不需要 DHCP 为局域网内的设备自动分配 IP 地址了 2. 设置 LAN 口 IP（避免冲突） 仍在 LAN 接口的 General Settings 选项卡下： 协议切换为静态地址，把 IPv4 地址改为与上级主路由同一网段且不冲突的 IP。 例如：主路由 IP 是 192.168.2.1，此处可设置为 192.168.2.20。 子网掩码与主路由一致（通常 255.255.255.0）。 网关填写主路由 IP（如 192.168.2.1）。 DNS 服务器可填写主路由 IP 或公共 DNS（如 8.8.8.8）。 保存并应用。 此 IP 地址的存在意义： 提供接口地址管理硬路由本身； 和上级软路由网络层通信。 个人曾经的误区：把 AP 模式和交换机模式混为一谈 3. 关闭防火墙并桥接接口 进入 Network → Firewall。 删除所有防火墙规则，或直接关闭防火墙： 在 General Settings 选项卡，将 Forward、Input、Output 全部设为 ACCEPT。 或直接删除所有防火墙区域（确保不阻断流量）。 4. WAN 和 WAN6 处理 方案一 如果固件里有 switch （交换机）的设置项，可以很方便的通过以下办法来实现将 OpenWrt 设置为交换机 / AP 模式，可以充分利用物理 WAN 口充当 LAN 口来用。 进入 Network → Switch； 将 VLAN ID 1 中的 WAN 口设置为未标记； 删除 Interfaces 中的 WAN 口（包括 WAN6）。 方案二 如果固件里没有 switch （交换机）的设置项，可以进行以下设置，但此设置会浪费一个 WAN 口。 删除 Interfaces 中的 WAN 口（包括 WAN6）； 将连接主路由的网线连接到WAN口。

Windows文件名过长带来的奇妙BUG
type: item
date: 2024-06-01T17:11:00+08:00
description: 起因 当我在网页版Jellyfin直接播放视频时，虽然内网能够满足数千兆每秒的网速，这些视频仍然经常卡顿（后面分析是网页播放是直接用NAS的核显解码，但它性能捉急），我就选择直接下载到本地。 由于Jellyfin的限制，下载到本地的文件中文名称是经过URL编码后的，比如其中一个文件为“%E8%83%86%E5%A4%A7%E5%85%9A+S01E07.mkv”，看起来是16进制的Unicode编码。 问题 后续在我清理磁盘时，我发现Windows在图形界面上直接删除此类文件时会异常卡死，而换使用终端命令删除时居然无法定位到这份文件，它就像一个黑户一样钉在了磁盘上，Windows的文件系统拿它丝毫没有办法。这就很奇妙了，之前从未遇到过这种情况。 解决 经过一系列查询检索，最终定位到Windows的一个奇妙特性： Windows系统默认的最大路径长度为260个字符（包括盘符、文件夹名、文件名及分隔符\）。如果文件或文件夹的完整路径超过此限制，系统工具（如资源管理器）可能无法正常操作。 一时间确实有点难绷，这种古老的问题能存续到现在也是神奇。最后索性启动Manjaro Linux，干净利落删除了这个文件。 后面和朋友讨论时，他提出了个更简单的操作方法：使用WSL的终端操作磁盘上的文件。确实可行，连重启切系统的功夫都不用了。

《应用密码学与网络安全》知识总结
type: item
date: 2023-07-14T09:37:54+08:00
description: 第一讲 引言 网络安全核心地位的关键目标 保密性（Confidentiality） 数据保密性 隐私性 完整性（Integrity）(包括不可否认性、真实性) 数据完整性 系统完整性 可用性（Availability） 真实性（Authenticity） 可追溯性（Accountability） 安全攻击 被动攻击 在未经用户同意和认可的情况下将信息或数据文件泄露给系统攻击者，但对数据信息不做任何修改 常见手段 搭线监听 无线截获 其他截获 应对措施：重点在于预防 主动攻击 涉及某些数据流的篡改或虚假流的产生 分类 阻断攻击 伪造攻击 重放攻击 篡改攻击 拒绝服务攻击 应对措施 自动审计 入侵检测 完整性恢复 安全机制 安全机制要具备检测、防御或从安全攻击中恢复的能力，没有单一的机制能够提供所有的安全服务 特定的安全机制（specific security mechanisms） 加密， 数字签名， 访问控制，数据完整性，认证交换，流量填充，路由控制，公证等 普遍的安全机制（pervasive security mechanisms） 可信功能，安全标签，事件检测，安全审计跟踪，安全恢复 安全服务 可认证性 Authentication 访问控制 Access Control 机密性 Confidentiality 完整性 Integrity 不可否认性 Non-repudiation 可用性 Availability 第二讲 传统加密技术 密码学 密码编码学 研究内容：主要研究对信息进行编码，实现对信息的隐蔽 特征 密码编码学常用运算：代替与置换 所用的密钥数：单钥与双钥 处理明文的方法：分组密码与流密码 密码分析学 研究内容：主要研究如何破解密文的方法 攻击的两种常用方法 密码分析学： cryptanalytic attack 穷举攻击： brute-force attack 保护密码算法还是密钥 与维护算法的保密性相比，维护密钥的保密性更容易。 万一密钥暴露了，Alice 和 Bob 可以很容易地更换密钥；而万一算法被攻破，重新设计一个很好的加密算法要难得多。 万一有多对人员需要加密其通信，这些人可以使用相同的算法和不同的密钥，而使用不同的程序则太难。 加密算法 凯撒密码：共有密钥25个、移位、替换 单表代替密码：任意地打乱字母的顺序，密钥数目： 26！＞ 4 × 10^{26} playfair 密码：多字母代替密码，密钥空间：25！≈1.6×10^{25} Hill 密码 加密：C≡KP mod 26，其中，K为密钥矩阵，P、C分别为明、密文分组 解密：P≡K^{-1}C mod 26 维吉尼亚密码 置换密码 第三讲 分组密码与 DES Feistel 密码结构 混淆和扩散 混淆：使得密文的统计特性与密钥的取值之间的关系尽量复杂 扩散：明文的统计特征消散在密文中，使得明文和密文之间的统计关系尽量复杂 DES 加解密 两次置换（初始置换和初始逆置换） 密钥控制下的十六轮迭代加密 轮密钥生成 DES 是一种用 56 位密钥来加密 64 位数据的方法 雪崩效应 明文或者密钥的某一位发生变化，会导致密文很多位的变化 第四讲 代数基础 模运算性质 对称 传递 计算2^{64} mod 2012 \begin{flalign*} &2^2 =4 mod 2012\\ &2^4 =16 mod 2012\\ &2^8 =256 mod 2012\\ &2^{16}=65536 ≡1152 mod 2012\\ &2^{32}=1152^2 ≡1196 mod 2012\\ &2^{64}=1196^2 ≡1896 mod 2012& \end{flalign*} 欧几里得算法（辗转相除法） 求gcd(1970, 1066) \begin{flalign*} &令a=1970，b=1066\\ &1970=1×1066+904\\ &1066=1×904+162\\ &904=5×162+94 \\ &…… …… \\ &10=1×6+4\\ &6=1×4+2\\ &4=2×2\\ &因此gcd(1970, 1066)=2 & \end{flalign*} 求乘法逆元 已知28与81互素，求81 mod 28的逆元。 \begin{flalign*} &81=2×28+25\\ &28=1×25+3\\ &25=8×3+1\\ \\ &1=25-8×3\\ & =25-8×(28-25)\\ & =(-8)×28+9×(81-2×28)\\ & =9×81+(-26)×28\\ &所以81×9≡1 mod 28，同时 28×（－26）≡1 mod 81, 81 mod 28的逆元为9\\ &而28 mod 81的逆元为－26≡55&…

《分布式计算》总结
type: item
date: 2023-06-11T17:53:00+08:00
description: 一、 分布式计算概述 1. 分布式系统定义 分布式系统是由一组通过网络进行通信，为了完成共同的任务而协调工作的计算机节点组成的系统 1.1 消息传递模型（Shared-Nothing） 节点之间通过消息传递进行通信 内部运算速度快，但通信速度慢 1.2 分布式计算与并行计算 分布式计算是并行计算的一种特殊形式 并行计算 指令并行 CPU多核并行：多线程编程 多CPU并行（一致性内存共享）：多进程编程 多CPU并行（非一致性内存共享）：分布式计算 基于GPU的并行计算 多机并行计算 1.3 分布式与云计算 云计算 用户角度：是一种服务/应用/交付模式，方便用户随时随地通过网络访问应用程序、存储数据，不是一种技术 与分布式计算的关系 云计算是目标，分布式计算是手段 分布式计算是实现云计算的核心技术之一（还有虚拟化技术，网络通信技术，安全技术等） 2. 构建分布式系统的收益 提高计算能力 提高存储能力 提高网络吞吐能力 提高可靠性 提高可扩展性 提高安全性 实现资源共享 实现跨时空协同服务 3. 分布式系统衡量指标 业务层性能 时间复杂度 空间复杂度 通信复杂度 可扩展性：系统能够适应业务量的增长 容错性：系统在部分节点失效时，仍能正常工作 并发性：系统能同时处理多个请求 透明性：用户感知不到系统的分布式特性 开放性：节点可以动态加入或退出系统 安全性：系统能抵御各种攻击 可观测/可维护性：系统能够监控自身的运行状态，及时发现故障并修复 简记：扩容，容错，并发，透明，开放，安全，可观测 4. 设计分布式系统的挑战 与性能衡量指标 类似 5. 分布式计算任务的分类 5.1 OLTP（联机事务处理） 实时处理大量的短小的事务请求，每个事务请求的处理时间很短，通常是几毫秒到几秒钟 5.2 OLAP（联机分析处理） 对大量的历史数据进行分析，通常是对大量数据进行聚合计算，每个计算任务的处理时间很长，通常是几分钟到几小时 5.3 流式计算 对大量的实时数据进行分析，通常是对数据进行过滤、聚合、统计等操作，每个计算任务的处理时间很短，通常是几毫秒到几秒钟 6. 分布式系统架构模式 6.1 客户端-服务器模式 负载均衡技术 如何架构 通过DNS轮询 通过反向代理 通过负载均衡器 带来的收益 提高系统的可扩展性，弹性增减节点 提高系统的可靠性 提高系统的性能 常用的负载均衡算法及优劣 轮询：简单，均衡，但不考虑节点的负载情况 随机：简单，均衡，但不考虑节点的负载情况 最少连接：考虑节点的负载情况，但不考虑节点的性能 最少响应时间：考虑节点的负载情况，考虑节点的性能，但不考虑节点的可用性 哈希：考虑节点的负载情况，考虑节点的性能，考虑节点的可用性，但不支持动态增减节点 一致性哈希：考虑节点的负载情况，考虑节点的性能，考虑节点的可用性，支持动态增减节点 6.2 主从模式 主从模式的概念 主节点 负责处理客户端的请求，维护系统的状态 从节点 负责处理主节点分配的任务，不维护系统的状态 主从模式的优缺点 优点 提高系统的可扩展性 提高系统的可靠性 提高系统的性能 缺点 主节点成为瓶颈 从节点的状态不一致 6.3 总线模式 总线模式的概念 不同节点通过总线进行通信 消息发送与接受者解耦 异步 分工 6.4 对等模式 对等模式的概念 系统中的所有计算节点任务分工都是对等的 完全相同的软件在不同的节点上运行，只是初始化参数不同 对等模式的优缺点 优点 不会出现单点故障 无需维护系统的状态 缺点 效率低 7. 分布式中间件的概念 7.1 中间件在计算机系统中的位置 中间件是介于操作系统和应用程序之间的软件，它为应用程序提供服务，为操作系统提供接口 7.2 中间件的作用 为开发者提供高层的抽象接口 提高互操作性和可移植性 提供分布式系统的基础设施 7.3 中间件的基本表现形式 独立的后台进程 语言编译/解释器的一部分 函数库 二、分布式系统节点通信技术 1. 基于Socket的通信技术 1.1 Socket的概念 Socket是一种通信机制，它允许不同节点上的应用程序通过网络进行通信 是传输层和网络层提供给应用层的接口 1.2 基于流式Socket（TCP） 建立连接（三次握手） 客户端向服务器发送连接请求 服务器向客户端发送连接确认 客户端向服务器发送连接确认 发送请求 客户端向服务器发送请求 返回响应 服务器向客户端发送响应 关闭连接 1.3 基于数据报Socket（UDP） 发送请求 客户端向服务器发送请求 返回响应 服务器向客户端发送响应 与TCP的区别：没有建立连接的过程，不可靠，不保证数据的顺序 1.4 并发服务技术 多线程——线程池 优点：线程复用，减少线程创建和销毁的开销 多路复用（事件驱动技术） 优点：单线程，减少线程切换的开销，适用于并发连接数少…