Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts


Set up a local docker registry mirror

本文介绍了通过自托管Docker registry镜像Docker镜像到本地服务器的完整方案包含三个Python脚本check.py验证镜像是否为最新版delete.py删除损坏镜像mirror.sh自动化镜像流程以及配套的Docker容器化部署方案首先通过docker run启动registry服务编写三个Python脚本实现镜像状态检测和清理编写包含所有目标镜像的mirror.sh脚本使用regctl工具执行镜像拉取和推送操作通过Dockerfile构建包含必要依赖的容器镜像配置定时任务实现每日自动执行镜像任务同时提供本地registry的使用方法包括配置daemon.json信任不安全仓库和镜像推送拉取操作最终形成完整的Docker镜像本地化镜像解决方案--Qwen3

Automation Python Docker Registry Mirroring Scripting

复习数据结构 - 撸个哈希树

本文通过构建二叉哈希树结构探索了时间复杂度为O(1)的集合实现方案。该方案通过将输入字符串的哈希值转化为二进制路径,在树结构中逐位判断左右分支构建节点,最终在终端节点标记存在状态。测试结果验证了其在百万级数据插入后仍能保持快速查找的特性,但哈希碰撞问题导致存在误判风险。这种结构在空间换时间的策略下,特别适合用于低精度场景的快速判断如用户注册状态检测。当哈希碰撞概率与内存消耗的平衡点如何取舍?是否可以通过引入多级哈希或动态调整树结构来降低碰撞率?面对大规模数据场景时二叉树的深度是否会成为性能瓶颈?这些开放问题提示着数据结构设计始终需要在理论最优与实际约束之间寻找最优解。--Qwen3

Binary Tree Custom Collection Binary Hash Trie Data Structure Hashing Set Operations

Run docker container with GPU in Docker swarm

本文探讨了在Docker Swarm环境中启用GPU支持的创新方法与潜在挑战。作者通过对比传统docker-compose配置与Swarm模式的限制揭示了一个关键矛盾:Swarm不支持在资源预留中直接声明GPU设备这一设计缺陷迫使开发者寻找替代方案。文章核心贡献在于提出了一种基于嵌套容器的解决方案通过创建可附着的overlay网络将GPU容器与Swarm管理的容器解耦实现跨节点的GPU资源共享。这种方法巧妙利用了docker-in-docker架构在宿主机上启动独立GPU容器的同时确保其他服务可通过自定义网络与其通信。这种架构突破了传统资源分配的桎梏但同时引发新的思考:当容器嵌套层级增加时性能损耗是否可被接受?这种间接访问方式是否会影响系统的可观测性?更重要的是这种工作模式是否暗示了云原生硬件资源调度的新范式?文章通过成功运行Ollama模型的案例证明了方案的可行性但留下的疑问更值得深思:当我们在追求资源隔离与共享的平衡时是否正在重新定义容器化的边界?--Qwen3

Docker Swarm GPU Resource Management Ollama DeepSeek Model Docker Networking Resource Allocation

使用 NPU 来运行 DeepSeek R1 32B

文章探讨了如何通过OpenVINO工具包在Intel Ultra 7处理器的NPU上运行DeepSeek R1 32B大语言模型的过程与挑战。作者首先尝试用CPU运行32B模型却遭遇性能瓶颈,随后揭示了NPU驱动安装与OpenVINO优化的必要性。通过安装NPU驱动三件套(intel-driver-compiler-npu、intel-fw-npu、intel-level-zero-npu)并配置用户权限,结合OpenVINO的Python环境搭建,最终成功将量化为4bit的DeepSeek-R1-Distill-Qwen-32B模型部署到NPU。实验表明NPU推理速度显著优于CPU但仍有提升空间,这一实践为边缘设备运行大模型提供了新思路。文章抛出若干值得思考的问题:如何平衡模型量化带来的精度损失与性能提升?NPU在处理更复杂的多模态任务时能否突破现有算力限制?当大模型持续扩展参数量时,专用硬件加速器的架构设计将如何演变?这些疑问或许正是推动AI技术突破的下一个关键节点。--Qwen3

Ai Lunarlake NPU Deepseek Hugging face OpenVINO

Some quick Docker tips

文章汇总了Docker常用操作命令及技巧,包括数据库备份恢复、资源监控、系统清理、密钥处理、时区配置、GUI应用安装等。提供MySQL和MariaDB容器数据库的备份命令,通过docker stats和docker images排序容器和镜像资源使用,使用docker system df查看磁盘空间及docker system prune清理无用数据。包含获取Docker密钥值的脚本,安装tzdata设置时区的方法,以及在Docker中安装微信等GUI应用的Dockerfile配置和运行步骤,覆盖容器环境下的各种实用场景。--Qwen3

bash Linux Docker Container timezone Locale

AnduinOS 究竟是怎么诞生的……

AnduinOS的诞生源于一位微软工程师对Linux系统个性化配置的执着追求。这个被戏称为"Windows主题Ubuntu"的系统,本质上是开发者在重装系统时反复调试个性化设置的产物,通过简单的ISO文件修改和自动化脚本封装,实现了对Ubuntu生态的轻量化定制。项目意外登上Distrowatch榜单后,开发者坦承这个茶余饭后消遣项目远比主业.NET开发更受关注,这种反差恰印证了技术社区对"极简主义"系统的某种隐秘渴望——当人们不再追求功能叠加而回归系统本质时,最朴素的方案反而可能掀起波澜。 这个仅用下午时间打造的系统引发热议的核心矛盾在于:当开发者坚持"不做多余工作"的哲学时,社区却在争论其商业潜力与技术价值。有人批评它缺乏应用商店,有人质疑其安全属性,但开发者始终强调这纯粹是满足个人需求的产物。这种"非功利主义"的开发态度,在当今商业软件主导的科技生态中显得尤为特殊——当一位全职工程师选择用业余时间维护开源项目时,究竟是技术理想主义的胜利,还是对商业逻辑的某种反叛?更耐人寻味的是,开发者对Nix系统持续的兴趣,暗示着包管理领域的技术革命或许正在酝酿,而AnduinOS的未来或许会成为这场变革的见证者。 项目面临的最大挑战并非技术层面,而是维系社区信任。当开发者坦承自己可能随时失业、系统可能突然停更时,这种"脆弱性"反而成为项目独特魅力的注脚:在商业利益与个人爱好之间,在开源精神与生存压力之中,一个由个人需求驱动的系统如何证明其存在的价值?或许正如开发者所言,保持本心才是最艰难的课题——当世界充满喧嚣时,最安静的系统反而最能触动人心。--Qwen3

AnduinOS Introduction Story Release operating-system Operating System Development

How to share a big file via BitTorrent

本文探讨了如何通过BitTorrent协议实现大文件的高效共享,揭示了分布式网络技术如何突破传统传输模式的限制。文章从技术实现的角度出发,展示了通过服务器搭建和多源追踪器配置构建去中心化传输网络的过程,重点解析了如何利用Aria2和Mktorrent工具生成种子文件,并通过持续做种维持文件分发的稳定性。在操作层面,通过Ubuntu系统环境下的具体命令演示了从服务器准备到追踪器列表整合的完整流程,强调了公共IP地址和稳定网络连接对节点通信的关键作用。这种基于碎片化传输和节点互换的机制,不仅提升了文件分发效率,更展现了P2P网络在资源优化方面的独特优势。文章引发的深层思考在于:当传输瓶颈被分布式架构打破后,如何平衡匿名性与追踪需求?如何在动态节点环境中实现最优带宽分配?更重要的是,当传统中心化存储面临挑战时,哪些新兴技术可能重新定义数据共享的边界?这些未解之谜或许正是推动下一代网络协议演进的关键。--Qwen3

Download Share aria2c bittorrent torrent bit-torrent

Run Windows on Linux for best experience

本文系统梳理了在Linux主机上通过Virt Manager部署高性能Windows虚拟机的完整技术路径,重点解析了硬件直通、安全架构和性能优化三大核心环节。通过配置IO-MMU和VFIO驱动实现PCIe设备直通,解决了GPU等外设资源分配难题;采用安全启动和模拟TPM构建虚拟信任链,满足Windows系统对硬件级安全的需求;VirtIO驱动替换传统设备驱动可提升I/O效率30%以上,而Hyper-V特性模拟使Windows虚拟机性能接近原生体验。值得注意的是,直通操作需谨慎处理单GPU场景的显示中断风险,同时需平衡安全启动与驱动兼容性的矛盾。当遇到系统识别不到直通设备、安全策略冲突或性能瓶颈时,如何通过XML配置精调参数、动态切换安全模式成为关键。最终方案的选型需结合硬件环境特征、业务负载需求和安全等级要求,这为虚拟化架构设计提供了灵活的技术决策空间。--Qwen3

Linux Windows qemu virt manager virtio-drivers windows-vm hyper-v-features performance-tuning virtualization

How to use apt

APT工具用于Ubuntu软件包管理包括安装更新删除清理等基本操作通过apt install apt update apt remove apt clean等命令实现高级功能如版本锁定可通过编辑/etc/apt/preferences.d文件设置Pin-Priority控制版本安装apt-file可查询包内文件内容apt-cache rdepends可查看依赖包添加仓库需先安装software-properties-common后使用add-apt-repository命令设置镜像需参考官方指南同时APT会自动处理依赖关系卸载依赖包时可能连带删除主程序例如删除git-man会同时卸载git并提供详细包信息显示依赖关系和安装要求--Qwen3

Apt Package Management Dependency Queries Repository Setup Package Tools Mirror Configuration Software Installations

应用商店、包管理……每天都会使用的东西有什么开发难度?

包管理是软件工程中的核心问题传统包管理器如apt通过集中存储解决依赖但存在冲突和环境不一致问题Nix采用函数式模型以不可变包和确定性构建为核心通过哈希路径实现包隔离和共享并支持二进制缓存和原子操作NuGet结合Monolithic与动态链接策略在项目内打包依赖同时全局存储多版本包以缓解冲突Monolithic方法通过打包所有依赖确保一致性但牺牲空间效率Docker等分治策略将服务单体化配合简单依赖管理成为主流然而包管理领域仍缺乏万能方案Nix虽技术先进但因反直觉应用有限业界普遍依赖Monolithic与虚拟化结合的折中方案包管理的复杂性远超表面呈现的商店化体验现代软件工程通过抽象简化了用户操作但开发者仍需直面依赖问题的本质挑战--Qwen3

Store nuget apt package manager Application Nix

在 2024 年学习汇编还有必要吗

文章探讨了操作系统与应用程序的相互关系及其底层抽象机制。通过定义和实现ABI(应用二进制接口)作为软件与硬件交互的标准,操作系统和应用程序可以同时诞生并依此共生。ABI明确了程序入口、资源管理、调用约定等规范,成为二者交互的桥梁,例如鸿蒙兼容Linux ABI使跨系统运行成为可能。学习汇编与操作系统课程有助于理解计算机底层机制,包括内存管理、进程调度、死锁处理等核心概念,这些知识对编译器开发、嵌入式系统设计及网络安全至关重要。文章指出,应用程序并不必然依赖操作系统存在,早期计算机和实时系统可直接在硬件上运行代码,而现代裸机编程和自制操作系统实验也证明了应用软件与操作系统的独立性。通过插件系统设计的案例,展示了抽象接口(如ImageFilter)如何实现系统扩展性,而操作系统本质是ABI的执行者与管理者。最终结论强调,理解ABI和底层原理是突破高级语言抽象的必要途径,计算机科学教育应重视基础理论而非仅关注应用层面。--Qwen3

Abstraction Assembly Language Memory Management Function Pointers Deadlock Detection Embedded Systems

开放性问题 Windows 和 Linux 哪个更加安全?

Windows与Linux的安全性对比始终是一个开放性问题,其答案取决于使用场景与用户需求。Windows通过硬件到软件的全链路信任体系构建了默认开启的多重防护——TPM固件验证、BitLocker加密、Secure Boot签名机制、VBS虚拟化安全等技术形成闭环,而Linux则凭借开源特性允许用户深度定制安全策略,但需主动配置完整性检查、内核签名及白名单机制。值得注意的是,普通用户往往因性能或便利性关闭Windows的安全功能,而开发者却可能因Linux的灵活性实现更高级的防护。当游戏主机用户为提升帧率关闭VBS时,其风险可能低于服务器管理员因代码漏洞导致的攻击面扩大。这种场景依赖性揭示了安全性的本质:它既非绝对标准,也非系统属性,而是用户行为与防御策略的综合体现。当讨论Windows与Linux哪个更安全时,或许更该思考——你的使用场景中,技术选择与安全投入的平衡点究竟在哪里?你的答案是什么?--Qwen3

Security VBS Operating Systems BitLocker User Experience Use Cases