顶级临阵磨枪(软考高级系统架构-1)
计算机操作系统 常见指令集有 CISC 和 RISC。 CISC 指令复杂、数量多,比如 x86 架构; RISC 指令简单、执行快,像 ARM、MIPS、RISC-V。 CPU 类型按指令集分, 有 x86 系列,常用于 PC 和服务器; ARM 系列,多用在手机、嵌入式设备;还有 RISC-V 这种开源指令集的 CPU 除了 CPU,常见的处理器还有 GPU,擅长并行计算,主要用于图形渲染和 AI 训练;DSP,专为数字信号处理设计,像音频、图像处理设备常用;FPGA,可编程逻辑器件,可根据需求定制硬件逻辑,适合实时性高的场景;还有 TPU,是谷歌专为深度学习优化的处理器 嵌入式操作系统 嵌入式操作系统特点是微型化、可定制、可靠性和一植移植性,常采用硬件抽象层Hardware Abstraction Layer,HAL和板级支撑包BSP 嵌入式操作系统应具备实时性、可裁剪性和安全性等特征。 基本开发工具是交叉编译器、交叉链接器和源代码调试器 计算机网络 局域网有总线型、星型、树型、环型、网状五种拓扑结构 WLAN拓扑结构有点对点型、Hub型和完全分布型。 完全分布型则处于理论探讨阶段无具体应用 广域网由通信子网与资源子网组成。广域网可以分为公共传输网络、专用传输网、络和无线传输网络3类。 主要有同步光纤网络(SONET)、同步数字体系(SDH)、数字数据网(DDN)、帧中继(FR)和异步传输技术(ATM) 。 以太网规定最小帧长为64字节,最大帧长为1518字节。设置最小帧长是为了避免冲突,最小帧长是根据网络中检测冲突的最长时间来定的。 信息系统基础 信息系统的功能有:输入、存储、处理、输出和控制 信息系统的生命周期分为产生、开发、运行和消亡4个阶段。 企业的所有资源包括三大流:物流、资金流和信息流。 信息安全技术基础 信息安全的基本要素有机密性、完整性、可用性、可控性与可审查性。 范围包括设备安全、数据安全、内容安全和行为安全。 DES 56位密钥长度,三重DES 112位是因为他用了两个密钥 K1加密 K2解密 K1加密 系统工程基础知识 MIPS=指令条数/(执行时间×10^-6) 软件工程基础知识 碎碎念 看到这里已经困的不行了,明天早上七点起来路上复习后去考试 案例分析第一题连考四次质量属性,所以押他还考,这里需要特别准备,然后准备一个主流技术,如果是微服务 / 云原生、缓存 / 数据库、新兴技术,新兴技术大概率是AI,其实都在我的打击范围,只是深度都不够,明天早上起来接着看案例 历年论文四题范围 我直接押题今年会有大模型应用,直接撞在我这两年最熟悉的领域,所以我将把复习重点放在案例分析可能会出现的概念上,好好准备一下 ...
GitHub Actions 编译 + Cloudflare Pages 部署踩坑全记录
我的主域名空着很久了,很久以前有一个非常简易的 home page,但是有了 AI 之后看来看去,太繁杂的又不喜欢,让我自己写又嫌烦,昨天终于狠下心让 codex 开始干活,然后部署流程记录一下。 这是个 Vite + React 的静态主页,本地跑没问题,想丢到线上去。之前一直用 Cloudflare Pages 直接连 GitHub 仓库自动部署,但这次想换个方式——用 GitHub Actions 编译,然后通过 Wrangler 做 Direct Upload 部署到 Cloudflare Pages。 思路比较简单,但是觉得可以记录一下。 整体链路 先说清楚整个链路长什么样: 1 2 3 4 5 6 7 8 本地代码 -> git push 到 GitHub main 分支 -> GitHub Actions 触发 CI + Deploy workflow -> npm ci -> npm run build -> 生成 dist -> wrangler pages deploy dist -> 发布到 Cloudflare Pages 跟 Cloudflare 自动连接 GitHub 仓库那种方式不一样,这里是 GitHub Actions 主动用 Wrangler 把构建产物推上去,算是个 Direct Upload 的方案。 ...
顶级临阵磨枪(软考高级系统架构-0)
前趋图(Precedence Graph) 前趋图(Precedence Graph)是一种用于描述任务、事件或进程之间先后依赖关系的有向无环图(Directed Acyclic Graph,DAG)。 通常记作: G = (P, E) 其中: P:顶点集合(Vertex Set),表示进程、任务或事件 E:边集合(Edge Set),表示前驱约束关系 边一般表示为: E = {(p_i, p_j)} 表示进程 p_i 必须先执行完成,进程 p_j 才能开始执行,即: p_i ➡️ p_j 由于前趋图只描述“先后依赖关系”,因此图中不能出现环路,所以它属于有向无环图(DAG)。 在实际分析中,本质上就是按照“节点大小关系 + 箭头方向”记录每一条边的依赖关系。 PV 操作(Semaphore Operations) PV 操作是操作系统中用于实现进程同步与互斥的一种经典机制,其核心是信号量(Semaphore)。 信号量通常记作: S_i 其中: S:Semaphore(信号量) 下标 i:表示第 i 个信号量 PV 操作包括两种基本原语: P 操作(Proberen) P 操作来源于荷兰语 “Proberen”,含义为“测试”或“申请资源”。 执行逻辑: 对信号量 S 减 1 若结果小于 0,则当前进程阻塞等待 若结果大于等于 0,则继续执行 因此: 执行前需要进行 P 操作 表示“申请资源”或“进入临界区” 常写作: P(S_i) V 操作(Verhogen) V 操作来源于荷兰语 “Verhogen”,含义为“增加”或“释放资源”。 ...
用 OBS + MediaMTX 搭一个本地视频流给视觉程序用
开发目标检测、姿态识别这类视觉程序的时候,有个很烦的问题:你需要一个可控的、可重复的视频输入源。 对着真实的摄像头调试?光线一会变一个样,人走来走去的,画面完全不可控。用视频文件做输入吧,有些程序又只认摄像头设备或者RTSP地址,不认本地文件路径。 所以我需要一个东西,既能把视频文件"伪装"成一个实时的视频流,让下游程序当摄像头一样去读。又能快速接入各种我想要做出的画面或者 usb 摄像头来测试视频效果。 当然如果有更好的方案欢迎大家留言(鬼知道有没有人看得到我的文章) 其实 OBS 自带的 Virtual Camera 也能解决一部分问题,但我没怎么用过。 这次搭的链路长这样: 1 视频文件 → OBS 推流 → MediaMTX → RTSP → ffplay / OpenCV / 目标检测程序 MediaMTX 是什么 之前没见过 MediaMTX,一开始还以为是某种虚拟摄像头设备。不是。 MediaMTX 是一个本地流媒体中转服务器,用 Go 写的,一个二进制文件就能跑。它能把推过来的流转成 RTSP、RTMP、HLS、WebRTC、SRT 等各种协议的输出。也就是说你往里面塞一路流,下游不管你用什么协议来读,它都能接。 GitHub 地址:bluenviron/mediamtx,macOS arm64 直接下载解压就能用。 启动 MediaMTX 1 2 cd /Volumes/extStorage/rayEx/Downloads/mediamtx_v1.18.2_darwin_arm64 ./mediamtx gemini 最早叫我下载完之后直接刷机打开,启动的时候会报一条 warning:是因为双击启动的目录对不上,他找不到 yml,进入路径执行就没问题了 1 WAR configuration file not found (looked in .../rtsp-simple-server.yml, .../mediamtx.yml), using an empty configuration 默认配置已经把常用端口都打开了: 1 2 3 4 5 RTSP :8554 RTMP :1935 HLS :8888 WebRTC :8889 SRT :8890 本地调试足够用了,不用改 yml。后面需要鉴权、固定路径、改端口的时候再配。 ...
让 Claude Code 直接画 draw.io 图
昨天看到一篇 drawio-mcp 的文章,说 draw.io 官方开源了 MCP,可以让 AI 直接生成可编辑架构图。 真是天赐的礼物 目前我画图基本都是用 processon这个平台,因为他在线编辑,所以等于一次编辑,导出修改查看。但是可惜的是这种肯定是要收费的,所以一直想找个替代版,另外还有一个问题是,让 LLM 输出 ASCII 字符画的话 很难进行拖动框框和一些 线路的修改。 看了一眼,mcp GitHub - jgraph/drawio-mcp · GitHub,我似乎没有太多的 在线浏览之类的需求,首先我之前没怎么用过 drawio,我只有一个大概的概念。我找了一下他有 desktop 版本的,于是我下载了他的 desktop。然后仓库里面其实有一个 skills:drawio-mcp/skill-cli/drawio/SKILL.md at main · jgraph/drawio-mcp · GitHub 你可以直接叫 codex 或者 claude code去安装这个 skills 这个 drawio skill,本质上就是一份 Agent 指令。它会让 Claude Code 直接生成原生 .drawio 文件,也就是 draw.io 自己用的 mxGraphModel XML。 这点很关键。它不是先写 Mermaid,然后丢给某个服务转换;也不是生成一张死图。它写出来的就是 draw.io 能继续编辑的源文件。 用法也很直接,在 Claude Code 里喊 /drawio 就行: 1 2 3 /drawio create a flowchart for user login /drawio sequence diagram for API auth /drawio ER diagram for blog posts and tags 如果不指定格式,它就生成 .drawio 文件,然后尝试打开 draw.io。 ...