Windows下用Vagrant打造可复现的Linux开发环境
1. 为什么非用Vagrant不可Windows下最顺手的Linux环境方案做开发的朋友应该都有这种体会手头一台Windows笔记本公司线上服务器全是Linux本地写代码、调试脚本、验证部署流程时环境跟服务器对不上Windows上跑通的东西一发到Linux上就翻车。装双系统太折腾来回切换麻烦WSL当然是好选择但它始终隔着一层有些内核模块、systemd服务、网络栈行为跟真实虚拟机还是不一样手动装VirtualBox再一步步选镜像、配网络、快照、迁移每次重复操作又烦人。我大概是在做模拟项目X的部署脚本时彻底转向Vagrant的。那时候每天要反复创建、销毁、重建干净的Linux测试环境手动建虚拟机光选系统、等安装、配网络就得半小时效率低到没法忍。后来用Vagrant把整套流程变成了一条命令vagrant up几分钟后一个干净的Linux环境就起来了用完vagrant destroy直接拆掉跟重启容器一样随意。Vagrant本质上是一个虚拟机生命周期管理工具它把你的虚拟环境需求写进一个叫Vagrantfile的文本文件里用什么镜像、分配多少内存和CPU、开哪些网络端口、共享哪些目录、启动时自动执行哪些初始化命令。这台机器完全由文件定义删了重建就是同一套配置不会像手动装的虚拟机那样时间一长就变成一团乱麻最后根本记不清当时改了些什么。这种思路用行话说就是基础设施即代码说人话就是把折腾环境这件事变成写配置、跑命令、看输出的工程化流程。这篇文章不是讲怎么装个虚拟机拿来用而是讲一套可以反复套用的工作流从Windows 10宿主机环境准备到选择虚拟化方案到写Vagrantfile再到解决Windows特有的各种坑最后是日常维护和清理。我踩过的坑会全部标出来你照做就能少走弯路。适合正在做Linux相关开发、部署自动化、学习运维工具但主力机器是Windows的人。先说一句总的心得Vagrant能用得舒服的前提是理解一个思维转变——虚拟机不是你小心翼翼养着的宠物而是一次性使用的工具坏了就销毁重建。Vagrant就是帮你把这个流程做到极致顺着这个思路后面所有操作都顺理成章。2. 前置准备VirtualBox版本选择和初始化目录规范2.1 先装VirtualBox再装Vagrant两者版本要匹配Vagrant本身只是一个命令行工具真正的虚拟化能力要靠底层的Provider最常用、最容易上手的就是VirtualBox。在Windows 10上我建议的安装顺序是先装VirtualBox再装Vagrant。为什么这个顺序重要Vagrant装完之后会在系统里注册一个VAGRANT_HOME目录并探测可用的Provider虽然装完VirtualBox之后再装Vagrant这个顺序不是绝对强制但先装好VirtualBox可以保证Vagrant在初始化时立刻识别到底层虚拟化层省去后面配置Provider的麻烦。版本匹配是我第一次就栽跟头的地方。VirtualBox 7.x刚发布那阵子配旧版Vagrant2.2.x及更早启动虚拟机会直接报错要么卡在Waiting for SSH要么Guest Additions装不上。后来我固定成这个组合VirtualBox 7.0.x Vagrant 2.3.x以上才算稳下来。你如果手头有旧版本的VirtualBox 6.1.x配Vagrant 2.3.x也完全没问题反而最省心不建议用太老或太新的混搭。安装过程本身没什么特别的Windows下全部下一步就行。有一点要注意装完Vagrant之后需要重新打开一个终端窗口因为安装包更新的PATH环境变量不会自动生效到已开启的窗口里。要是敲vagrant提示不是内部或外部命令别急着重装先开个新的PowerShell窗口试试。装完之后在PowerShell里跑一下确认vagrant --version VBoxManage --version两个版本都正常显示前置环境就算完成一大半了。2.2 初始化目录的命名规范别用中文别带空格Vagrant要求它在哪个目录运行就会以这个目录名作为虚拟机项目的标识。如果目录路径里带中文或空格Windows下非常容易出问题典型表现是vagrant up的时候SSH密钥路径解析乱掉报错信息里路径显示成乱码或者干脆卡在SSH连接阶段。我统一用这种目录结构建议你直接照抄D:\Vagrant\ubuntu2204 D:\Vagrant\centos7 D:\Vagrant\k8s-lab每个项目一个独立目录目录名只含字母、数字、下划线目录层级不要嵌套太深。为什么放到D盘因为虚拟机的虚拟硬盘、box镜像缓存默认都在C盘用户目录下一个box解压之后好几个GBC盘空间本来就被系统和各种软件吃掉了大半再塞虚拟磁盘很容易爆掉。放到D盘不仅是为了路径安全也是为后续磁盘管理留余地。提示如果你实在想沿用带空格的路径后面可能会碰到共享目录挂载失败、SSH密钥生成失败等一堆诡异问题建议从源头避免。2.3 确认虚拟化已开启VirtualBox跑64位Linux虚拟机要求CPU的硬件虚拟化VT-x/AMD-V在BIOS里处于开启状态。Windows 10的大部分机器默认是开的但有时候你重装过系统、更新过BIOS或者某些品牌机默认关掉了就会在启动时看到类似VT-x is not available的错误。检查方法很简单打开任务管理器切到性能标签看CPU这一栏如果虚拟化已启用就没问题。如果显示已禁用就得进BIOS找Intel Virtualization Technology或AMD SVM Support选项把它打开。这个BIOS入口每家主板不一样多数在Advanced或Configuration菜单下面保存重启后再看任务管理器。这一步我提出来说是因为很多人第一次用Vagrant失败根本不是Vagrant的问题而是底层虚拟化压根没开。你排查了半天Vagrantfile配置最后发现是BIOS的事就尴尬了。3. 从零跑通Vagrantfile配置与启动全流程前置环境准备好之后正式开始搭建。我以Ubuntu 22.04为例因为它是目前最主流的服务器发行版box镜像也比较完整支持VirtualBox的Guest Additions预装共享目录、端口转发这些功能开箱即用。3.1 初始化项目目录并生成Vagrantfile进入规划好的项目目录执行初始化cd D:\Vagrant\ubuntu2204 vagrant init generic/ubuntu2204vagrant init做的事情很简单在当前目录生成一个Vagrantfile模板并把你要用的box名字写进去。box就是Vagrant世界里对虚拟机镜像的称呼一个box文件里包含了基础系统、必要的VirtualBox增强工具以及其他预配置项。这里有个选择问题box用哪个官方推荐的是hashicorp/bionic64Ubuntu 18.04这个box比较轻量但老旧。我实测觉得generic/ubuntu2204更合适它是通用box项目维护的更新及时对VirtualBox支持好而且不自带一堆花里胡哨的工具干净。Windows下直接执行vagrant up时Vagrant会自动从官方box仓库下载这个镜像不需要你手动干预。如果下载速度不给力还可以先用命令手动下载box文件到本地再把它添加到Vagrant的box管理里这种方式在构建脚本里更可控vagrant box add generic/ubuntu2204没有本地box文件的情况下这条命令会从官方源下载。如果公司网络环境对下载有限制需要走代理或离线导入那就在能上网的机器上把box文件下载下来拷贝到本机再用vagrant box add指定本地文件路径。box文件是个压缩包几百MB到1GB不等用本地文件添加很方便。3.2 Vagrantfile关键配置逐行解读vagrant init生成的Vagrantfile有一大堆注释模板我建议直接把注释删干净改成自己真正需要的配置。这是我最常用的最小可用版本Vagrant.configure(2) do |config| config.vm.box generic/ubuntu2204 config.vm.hostname devbox config.vm.network private_network, type: dhcp config.vm.synced_folder ./workspace, /home/vagrant/workspace config.vm.provider virtualbox do |vb| vb.memory 4096 vb.cpus 2 end end逐行解释一下关键点config.vm.box指定使用的box镜像。和Docker的image概念类似不同box对应不同系统之后换系统只需要换成ubuntu2204、centos7等名称即可。config.vm.hostname设置虚拟机内部的主机名。服务器环境里主机名很重要很多服务启动时会用主机名做标识。config.vm.network private_network, type: dhcp给虚拟机挂一张仅主机host-only网卡由VirtualBox的DHCP自动分配IP。这个配置比默认的NAT更方便——宿主机可以直接通过这个IP访问虚拟机里的服务不用再绕端口转发。后面我会专门讲网络选择的坑这里是关键。config.vm.synced_folder ./workspace, /home/vagrant/workspace把宿主机当前目录下的workspace文件夹同步挂载到虚拟机里的/home/vagrant/workspace目录。两边看到的是同一份文件在Windows里写代码Linux里跑服务无缝配合。vb.memory和vb.cpus分配给虚拟机的内存和CPU核心数。我给的4G内存2核是通用开发配置跑编译任务不会太吃力如果你的机器配置不够砍到2G1核也能跑。为什么推荐private_network而不是Vagrant默认的端口转发Windows开发者最常用的场景是Linux里跑一个Web服务在Windows浏览器里打开访问。端口转发模式下你得手动指定config.vm.network forwarded_port每开一个新端口就要加一行配置而host-only模式下虚拟机有一个固定网段的独立IP比如192.168.56.x你直接在浏览器里访问这个IP加端口就够了省去一层转发少了端口冲突的麻烦。当然host-only模式意味着只有宿主机能访问虚拟机外网进不来正好符合开发环境的需求。3.3 启动虚拟机的完整命令流在项目目录下执行vagrant up第一次执行会经历几个阶段每个阶段输出都有信号帮助判断是否正常Bringing machine default up with virtualbox provider——开始创建虚拟机。Importing a base box——把box镜像解压到VirtualBox的机器目录并导入这个过程比较慢是正常的耐心等。Forwarding ports——Vagrant默认会把宿主机的某个端口转发到虚拟机的22端口用于SSH。Waiting for SSH to become available——等待SSH服务就绪这是setup流程里最常出问题的一步后面我会专门讲。启动完成后用下面这条命令登录虚拟机vagrant ssh这个命令和普通SSH不一样它自动读取Vagrant生成的SSH配置私钥、用户名、地址、端口不需要你手动指定任何参数。登录成功后会看到Linux命令行用cat /etc/os-release确认系统版本用free -h查看内存分配是否生效。3.4 验证共享目录和网络IP共享目录是Vagrant工作流里最核心的体验之一。登录虚拟机后执行ls -l /home/vagrant/workspace能看到宿主机workspace里的文件就说明同步目录挂载成功了。我一般会做个双向验证在宿主机workspace里放一个测试文件在虚拟机里看到再在虚拟机里往workspace写一个新文件回到Windows这边看是否同步出现。两个方向都通环境才算真的可用。网络IP验证在宿主机上做vagrant ssh -c ip addr show | grep 192.168.56如果是dhcp模式你会在输出里看到一个192.168.56.x的地址记住它后面访问Web服务、测试API都直接用这个IP。如果你采用的是private_network的静态IP模式把配置改成config.vm.network private_network, ip: 192.168.56.10IP就是固定的写脚本、配域名解析都更方便。到这里一个Linux开发环境就算跑起来了。但真实世界里事情没这么简单Windows上用Vagrant有它专属的一堆坑下面这章我把高频问题按排查链路的顺序拆开说。4. Windows专属的坑VirtualBox版本、SSH卡住、Hyper-V冲突、共享目录失灵4.1 启动失败先看版本组合再看VT-xvagrant up最常见的失败场景就是启动过程直接报错错误信息里带着VT-x is disabled或Failed to open a session。遇到这类错误我的排查顺序是固定的第一步确认VirtualBox和Vagrant的版本组合。这俩工具都更新得比较勤网上教程里的组合不一定适配当前版本最好的办法是去各自官方文档看支持矩阵。如果版本太老或太新直接升级到当前稳定版。我实测在VirtualBox 7.0.x Vagrant 2.3.x这个组合下Windows 10和Windows 11都没出过启动级的问题。第二步确认BIOS虚拟化开启。前面说过用任务管理器看虚拟化已启用。这一步很多人会忽略但它常常是启动失败的根因。第三步确认Hyper-V功能没有跟VirtualBox抢资源。这一点Windows用户特别容易踩我单独放在4.3小节细说。4.2 卡在Waiting for SSH的核心原因和排查链路vagrant up跑到Waiting for SSH to become available...就长时间不动最终报Timed out这是Windows下出现频率最高的一个故障。我自己碰到过群里也好几个人来问过。完整的排查链路是这样的第一步看VirtualBox的控制台。打开VirtualBox主界面找到新创建的虚拟机点显示打开虚拟机的图形窗口直接看Linux系统是不是真的起来了有没有卡在内核引导、有没有闪退、有没有提示磁盘错误。这一步信息量最大能直接排除掉一大堆根本就没启动成功的情况。第二步确认2222端口转发。Vagrant默认把宿主机的2222端口转发到虚拟机的22端口如果2222被别的程序占用了Vagrant会自动分配到其他端口。检查方法是看vagrant up日志里Forwarding ports那一段写了什么。有一种常见情况是之前跑过一次vagrant up但虚拟机关机不彻底端口还在占用状态。解决办法是打开任务管理器找VirtualBox相关的进程把残留进程结束掉再重试。第三步检查SSH密钥匹配。Windows下Vagrant生成的私钥文件在C:\Users\你的用户名\.vagrant.d\下面如果项目目录被拷贝过、多个项目共用同一个box等原因可能出现密钥不匹配导致SSH握手失败。比较省事的解决办法是在Vagrantfile里加一行config.ssh.insert_key false让Vagrant不要每次重新生成新的SSH密钥直接使用box自带的密钥。第四步重启VirtualBox网络服务。Windows下VirtualBox的网络驱动偶尔会进入异常状态表现为虚拟机里网络起不来、SSH连不上。在管理员权限的PowerShell里跑net stop VBoxSDS net start VBoxSDS然后再vagrant reload一次大概率能救回来。第五步实在不行就销毁重来。如果虚拟机已经处于半启动状态、SSH密钥乱了、系统配置改到一半别浪费时间修直接vagrant destroy -f再vagrant up。Vagrant的价值就在这里销毁重建成本极低不值得为了一个测试环境花两个小时排障。我见过很多人在这里倔强地修最后发现重置解决得最快。4.3 Hyper-V与端口占用Windows平台特有的两个冲突源Windows 10自带的Hyper-V虚拟化平台会和VirtualBox抢硬件虚拟化资源。如果你的系统开启了Windows沙盒、WSL2、Windows功能里的虚拟机平台或Hyper-VVirtualBox启动64位虚拟机就会特别吃力甚至直接报错。这个问题最坑的地方在于Windows功能里的条目五花八名很多人根本不知道自己的Hyper-V是开着的。比如装了WSL2的人系统里虚拟机平台这个功能默认就是开的VirtualBox跑起来兼容性就会下降。排查方法是在PowerShell里跑Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All看State是Enabled还是Disabled。如果是Enabled而你日常工作并不依赖Hyper-V比如不跑WSL2、不用Docker Desktop的Hyper-V模式可以考虑把它关掉。注意关掉Hyper-V功能后WSL2和Docker DesktopHyper-V模式都会失效需要权衡。如果你必须同时保留Hyper-V和VirtualBox那VirtualBox这边基本很难长期稳定工作这种情况更推荐直接用WSL2或者纯Hyper-V方案。端口占用是另一个很恼火的事。Windows上常有程序抢占2222端口Vagrant启动时会报Vagrant cannot forward the specified ports并且自动选择其他端口。如果你之前用了端口转发模式而某个服务占用了你配置的转发端口比如8080被本地开发服务器占用了虚拟机里的Web服务就迟迟连不上。排查端口占用netstat -ano | findstr :2222 tasklist | findstr PID号确认是哪个进程占用。如果只是临时占用杀进程就能解决如果是固定服务占用要么改Vagrantfile的端口映射要么干脆换成host-only模式一劳永逸。4.4 Guest Additions版本不匹配共享目录失效的罪魁祸首共享目录挂载消失、文件看不到、写入报错十有八九是VirtualBox Guest Additions增强功能的版本和VirtualBox版本对不上。Guest Additions是VirtualBox安装在虚拟机里的驱动包负责共享目录、剪贴板、自适应分辨率这些功能。box镜像里自带的版本可能比你宿主机装的VirtualBox旧一截Vagrant启动虚拟机后如果检测到版本不同就会尝试重新安装但Windows下这个自动安装经常失败表现为启动日志里出现Guest Additions are not running之类的警告。解决办法是装一个Vagrant插件让它在每次启动时自动匹配并更新Guest Additionsvagrant plugin install vagrant-vbguest vagrant reload这个插件会自动进入虚拟机下载对应版本的增强工具并安装装完后再看共享目录就正常了。第一次安装时虚拟机里会跑编译耗时几分钟耐心等就好。如果这个插件因为网络原因在虚拟机里下载安装包失败可以用离线方式把增强功能的iso文件拷进虚拟机手动装但这属于最后手段了插件方案在绝大多数情况下都能解决问题。注意如果共享目录持续失灵还有一个临时兜底方案——用rsync式同步目录作为替代配置type: rsync它会单向把宿主机的目录同步到虚拟机不用Guest Additions也能工作。缺点是不能反向同步但至少有得用。5. 生命周期管理挂起、停止、销毁与box镜像缓存环境搭建好只是开始能不能长期舒服地用取决于你对虚拟机生命周期和磁盘空间的管理习惯。Vagrant把虚拟机定义成可变状态的基础设施所以它提供了好几个不同的关机操作每个的用途和代价都不一样。5.1 suspend、halt、destroy怎么选这三个命令是Vagrant日常使用里最容易混的我直接给结论vagrant suspend相当于把内存状态冻结到磁盘虚拟机进程彻底停掉重启后内存里跑的进程原样恢复。恢复速度极快但会在磁盘上生成一个和内存大小相近的休眠文件4G内存就是4G左右磁盘占用。vagrant halt相当于正常关机走完整的系统关机流程进程会被终止磁盘内容保留。重启后系统会重新引导耗时几十秒比suspend慢但比destroy快。vagrant destroy相当于直接把整个虚拟机的硬盘删除这是一个不可逆操作系统上没提交的所有改动全部丢失。我的使用习惯是临时离开开发状态几小时内还会回来用suspend当天收工第二天继续用用halt一个需求做完、环境污染得不行了、或者需要体验干净的初始环境用destroy重建。有人会担心destroy丢了数据怎么办Vagrant的设计思路很清楚一切可变化的状态都不该留在虚拟机里你的代码、文档、数据库文件这些有价值的东西一律放到共享目录。这就是我在前面强调共享目录核心地位的原因——只有宿主机上的文件才是持久的虚拟机本身随时可以灰飞烟灭。这套思维一旦建立起来你就不会在虚拟机上手动安装一大堆工具、手动调整配置而是把这些初始化步骤写进Vagrantfile的provision脚本里让环境可重现。5.2 删除主机文件会用什么节奏define与迁移用了一段时间的Vagrant项目你可能会遇到换电脑、换目录、或者想分享给同事的需求。Vagrantfile是纯文本文件配合box名称整个项目的定义就几KB。但实际跑起来的虚拟机文件大得多所以我的建议是项目源文件Vagrantfile 业务代码 初始化脚本提交到代码仓库按团队规范管理。虚拟机的实体磁盘文件不做备份。需要重建时vagrant up会基于box重新生成一台干净的机器再用provision脚本恢复配置。换电脑的流程其实很简单把项目目录拷到新机器安装好VirtualBox和Vagrant进入项目目录执行vagrant upVagrant会自动下载box、创建虚拟机、执行配置。唯一要注意的是下行密码编译的SSH密钥因为新机器的.vagrant.d目录是空的Vagrant会重新生成一套SSH密钥并注入虚拟机。如果你从旧机器拷了.vagrant目录过来反而可能因为密钥不匹配而连不上这又是一个原来的正常文件在换环境后成了包袱的典型场景。5.3 box镜像缓存管理磁盘C盘必看前面说过box镜像默认缓存在用户目录下的.vagrant.d文件夹里。每个box压缩包几百MB到1GB解压后虚拟硬盘更大多装几个box之后C盘空间会被严重侵蚀。查看当前已缓存的boxvagrant box list清理不用的boxvagrant box remove generic/ubuntu2204如果你希望box缓存目录彻底迁出C盘可以设置环境变量VAGRANT_HOME指向其他磁盘比如setx VAGRANT_HOME D:\vagrant_home设置之后再打开新的终端窗口后续所有box缓存都会放到D盘。注意这个变量影响的是box镜像和全局配置不影响单个项目的.vagrant状态目录两回事。另外VirtualBox本身也会把创建的虚拟机文件放在默认机器目录通常是C:\Users\你的用户名\VirtualBox VMs。如果你开头用了多少G内存分配了多大这个目录最终会变得非常大。迁移虚拟硬盘文件位置的办法是VirtualBox主界面菜单栏文件→工具→虚拟机管理器在全局设置里修改默认机器文件夹的路径。我个人的磁盘管理方案是项目目录、box缓存、虚拟机实体文件三个分别放在D盘的不同位置C盘只放程序和系统。这样不管你怎么折腾C盘空间永远是安全的。方案看起来简单但能坚持下来的人不多我就是被一次C盘爆满、虚拟机无法启动的经历教育过之后才老实的。6. 一些值得养成的习惯把环境当代码管理读完上面整个流程其实你已经可以顺畅地在Windows 10上用Vagrant管理Linux开发环境了。最后我再分享几个在实际项目里沉淀出来的习惯它们能让你的使用体验再上一个档次。第一个习惯是初始化脚本一定要写进Vagrantfile。与其进入虚拟机里手动apt install、手动改配置文件不如在Vagrantfile里加一段自动配置config.vm.provision shell, inline: -SHELL apt update apt install -y git vim curl SHELL用vagrant up启动时自动执行用vagrant reload --provision可以对已存在的虚拟机重新跑一遍。这样不管这台机器被销毁重建多少次出来的环境永远长一样不会出现我这台机器上装过什么啊怎么跑起来的这种玄学问题。第二个习惯是别吝啬给项目起名字和下注释。一个Vagrant项目就是一个虚拟环境定义项目多了以后Vagrantfile里最好用注释标明这个环境的用途、分配了多少资源、开了哪些网络、坑有哪些。这份文件既是配置也是文档三个月后回来看还会感谢当时的自己。第三个习惯值得说透Windows下跑Linux环境的终极归宿是让环境本身成为可讨论、可评审、可版本化的对象。你不用再担心换电脑、换系统、同事环境不一致只要拿到一份Vagrantfile整个环境就能原样复现。这种能力在团队协作里特别值钱因为大量时间其实都浪费在我这边能跑啊和我这边怎么就报错的互相拉扯中。回到我自己的场景现在无论是写部署脚本、测试openresty配置、练习Kubernetes集群搭建还是在Linux下跑数据抓取任务我都会先拉一个对应的Vagrant项目。用完拆掉不心疼环境干净可控排查问题的步骤也变成了对着一份已知配置找差异而不是对着一台被改得面目全非的虚拟机猜历史。如果你正准备开始就从D:\Vagrant\ubuntu2204这个目录开始老老实实按前面的步骤走一遍。第一次vagrant up跑通、vagrant ssh登录进去的那一刻你会立刻明白为什么这套工具能在开发环境管理领域站稳这么多年。别被第一次启动时那一堆日志吓到那些输出里其实藏着大量有用的信息读多了就懂了。

相关新闻

SpringBoot整合Gateway与Feign的踩坑指南与高可用实践

SpringBoot整合Gateway与Feign的踩坑指南与高可用实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 19:48:56 阅读更多 →
Android Dex编译全解析:从Java源码到D8/R8优化与65536方法数突破

Android Dex编译全解析:从Java源码到D8/R8优化与65536方法数突破

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 19:48:56 阅读更多 →
选择性搜索算法详解:从原理到Python实现与调参避坑指南

选择性搜索算法详解:从原理到Python实现与调参避坑指南

简介:这份资源是面向计算机视觉初学者与目标检测入门者的选择性搜索(Selective Search)Python 实践示例,帮助读者理解如何通过超像素分割与区域生长策略生成候选目标区域,从而替代传统滑动窗口、降低后续检测的计算负担…

2026/10/14 19:47:55 阅读更多 →

最新新闻

Python 嵌套字典取值:30-seconds-of-python 的 `get` 片段深度解析

Python 嵌套字典取值:30-seconds-of-python 的 `get` 片段深度解析

教程文档 【免费下载链接】30-seconds-of-python Short Python code snippets for all your development needs 项目地址: https://gitcode.com/gh_mirrors/30/30-seconds-of-python 点击查看 免费下载 在 Python 开发中,读取多层级嵌套的字典或列表结构…

2026/10/14 20:26:45 阅读更多 →
bk-cmdb 开放 API 之创建模型(create_object):参数详解、请求响应示例与源码级实现原理

bk-cmdb 开放 API 之创建模型(create_object):参数详解、请求响应示例与源码级实现原理

后端企业应用运维 【免费下载链接】bk-cmdb 蓝鲸智云配置平台(BlueKing CMDB) 项目地址: https://gitcode.com/gh_mirrors/bk/bk-cmdb 点击查看 免费下载 导读 本文基于蓝鲸智云配置平台(bk-cmdb)开放 API 文档中「创建模型(Cre…

2026/10/14 20:26:45 阅读更多 →
本地优先与隐私解析:Home Assistant WashData收集哪些数据?Community Store完整使用指南

本地优先与隐私解析:Home Assistant WashData收集哪些数据?Community Store完整使用指南

【免费下载链接】ha_washdata Home Assistant integration for smart-plug appliance monitoring: detects cycles, matches programs, estimates time remaining. Supports washing machines, dryers, dishwashers and more. 项目地址: https://gitcode.com/gh_mir…

2026/10/14 20:26:45 阅读更多 →
webmagic-scripts 使用指南:用 JavaScript/Ruby 脚本零代码编写 WebMagic 爬虫

webmagic-scripts 使用指南:用 JavaScript/Ruby 脚本零代码编写 WebMagic 爬虫

后端网页爬虫 【免费下载链接】webmagic A scalable web crawler framework for Java. 项目地址: https://gitcode.com/gh_mirrors/we/webmagic 点击查看 免费下载 webmagic-scripts 是 WebMagic 爬虫框架(Java)中的一个实验性子模块&#x…

2026/10/14 20:26:45 阅读更多 →
深入理解 wot-design-uni 的 wd-icon 图标组件:字体图标、自定义图标与图片图标的实现原理

深入理解 wot-design-uni 的 wd-icon 图标组件:字体图标、自定义图标与图片图标的实现原理

前端UI组件移动开发小程序 【免费下载链接】wot-design-uni 一个基于Vue3TS开发的uni-app组件库,提供70高质量组件,支持暗黑模式、国际化和自定义主题。 项目地址: https://gitcode.com/gh_mirrors/wo/wot-design-uni 点击查看 免费下载 wd-…

2026/10/14 20:26:45 阅读更多 →
纯血鸿蒙学生党三件套实测:拍照提取书页文字、课表签到备忘与本地电子书阅读

纯血鸿蒙学生党三件套实测:拍照提取书页文字、课表签到备忘与本地电子书阅读

开学有一阵了,手机里最高频的其实不是游戏和短视频,而是几类学习搭子:课上拍板书、课后整理资料、平时查教学周、睡前看两页书。这学期我把这些需求收拢到三款纯血鸿蒙应用上——「OCR扫描匣」「课程表管家」「爱阅读」。它们的共同点很明确&…

2026/10/14 20:25:44 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →