尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
VirtualBox安装Ubuntu 18.04开发环境:SSH、SAMBA、静态IP与备份全攻略
在开发环境搭建这件事上VirtualBox加Ubuntu的组合我用了很多年至今依然觉得它是成本最低、灵活性最高的方案之一。这篇东西不是官方文档的复述而是我自己反复折腾VirtualBox安装Ubuntu 18.04配置SSH远程管理、SAMBA文件共享、静态IP和DNS解析再到整机备份与恢复的完整记录。过程中踩过的坑、试错后的取舍、最终稳定跑起来的配置都会写出来。适合刚接触虚拟机的新手也给正在搭开发环境或内部测试服务器的人一个可以直接照抄的作业。1. 整体思路与方案设计1.1 为什么选VirtualBox加Ubuntu 18.04先说选型。VirtualBox开源免费跨平台Windows、macOS、Linux宿主机都能跑对个人开发者来说没有授权成本。虽然性能和功能上不如某些商业虚拟化方案但对测试环境、学习环境、日常开发来说完全够用而且它支持快照、导出导入、共享文件夹这些关键功能恰好覆盖了日常最需要的场景。Ubuntu 18.04虽然已经不是最新版本但它的稳定性和软件生态兼容性依然很好。很多公司内部服务器、CI环境、旧项目依然跑在18.04上用虚拟机复刻一套一模一样的系统环境可以避免大量“我本机跑得好好的部署到服务器就挂了”这类环境不一致的问题。更现实的原因是18.04的安装镜像小、系统资源占用低在虚拟机里跑起来比新版系统更轻快对宿主机配置不高的用户特别友好。这套方案的本质是用一台虚拟机替代一台物理服务器承载SSH远程管理、SAMBA局域网文件共享、静态IP固定访问入口并通过备份机制保证环境可重建。这样你既能拥有一台7x24小时可用的“小服务器”又不用担心搞坏了物理机器最重要的是整套配置可以反复推倒重来。1.2 需要解决的核心问题安装系统只是第一步真正有价值的是环境如何被管理起来。整个过程其实要解决四个问题远程管理虚拟机不能每次都打开图形界面操作必须用SSH从宿主机或者局域网内其他机器连进去做到无头化操作。文件互通虚拟机里的文件、宿主机上的文件要能够双向访问不能靠U盘或者网络上传这种笨办法SAMBA是在局域网环境里最直接的选择。固定网络入口虚拟机的IP如果每次重启都变SSH连接、SAMBA访问、数据库连接串全都要跟着改这是不可接受的。必须配置静态IP和稳定的DNS让虚拟机的网络身份固定下来。灾难恢复配置好的环境、安装好的软件、调试好的代码如果系统崩溃了就要全部重来代价太高。必须通过快照和导出备份机制让整个环境可以快速恢复到之前的状态。这四个问题对应了这篇文章后面四个主要章节也是整个虚拟机使用中最容易出问题的环节其中静态IP和DNS排第一SAMBA权限排第二。2. VirtualBox安装Ubuntu 18.04的完整实操2.1 虚拟机创建参数和安装前准备建议先下载好Ubuntu 18.04的桌面版ISO镜像服务器版也行但桌面版自带图形界面对新手排查网络问题更友好后面也可以随时关掉图形界面省资源。创建虚拟机时以下几个参数直接决定后续使用体验内存至少2048MB推荐4096MB。18.04桌面版跑起来大概占用1.2GB内存加上编译、运行开发服务2GB够用但偏紧给4GB能明显减少卡顿和交换分区读写。CPU核心数2核起步单核跑服务时经常出现CPU 100%导致SSH响应变慢的情况。磁盘大小建议动态分配最大容量给到40GB以上。虚拟磁盘文件是根据实际使用量增长的一开始不会真的占用40GB不用担心浪费空间。我见过很多人只给20GB装完系统和常用软件就剩几个GB后面安装依赖库时直接磁盘写满非常尴尬。显存如果你装桌面版显存不要用默认的16MB至少调到128MB否则画面分辨率上不去图形界面操作会很难受。不开桌面版的可以忽略。网络适配器建议先保持默认的NAT模式完成系统安装和软件源更新等系统装好后再切换成下一步要用的桥接模式这样安装过程不会被网络配置问题干扰。2.2 系统安装过程中的关键选择安装过程中有几个容易忽略但影响很大的选项分区布局保持默认即可不需要手动分区。如果你打算后面做快照备份磁盘格式保持VirtualBox默认的VDI就好不建议使用VHD或者VMDK和快照功能的兼容性没有VDI好。软件更新源建议在安装完成后立刻更换成国内镜像源。这个不属于必须步骤但18.04的默认源在国外apt安装软件时速度可能非常慢几KB每秒的速度会让你怀疑人生。更换方式很简单修改/etc/apt/sources.list把us.archive.ubuntu.com替换成你所在地区速度快的镜像地址然后执行apt update。这一步能节省大量等待时间。用户名密码设置时注意用户名不要包含空格和特殊字符SAMBA和SSH服务对带特殊字符的用户名有时会出怪问题用纯小写字母加数字最稳妥。2.3 安装增强功能与共享剪贴板系统装好后第一件事不是配置SSH而是安装VirtualBox增强功能。增强功能是一组驱动和工具集装好后才能支持高分辨率、共享剪贴板、拖拽文件、共享文件夹这些功能。操作路径VirtualBox菜单栏的“设备”-“安装增强功能”虚拟机会挂载一个光盘镜像在系统里执行sudo apt update sudo apt install build-essential dkms linux-headers-$(uname -r) cd /media/你的用户名/VBox_GAs_6.1.x sudo ./VBoxLinuxAdditions.run安装完成后重启虚拟机。这一步不要跳过我见过太多人没装增强功能后面共享文件夹挂载不上、屏幕分辨率上不去回头排查半天才发现是这里的问题。而且如果内核更新了dkms会自动重新编译增强功能模块所以建议不要卸载dkms。增强功能装完之后建议设置共享剪贴板为“双向”拖拽功能按需开启。这样宿主机和虚拟机之间的复制粘贴就顺畅了日常操作体验提升非常明显。3. 静态IP与DNS配置全解析3.1 桥接模式与NAT模式的取舍VirtualBox的网络模式里最常见的就是NAT和桥接。NAT模式下虚拟机通过宿主机上网对外不暴露自己的IP好处是安全、不需要配置坏处是宿主机和虚拟机之间的通信比较麻烦需要端口转发。桥接模式下虚拟机会像一台独立设备一样直接接入宿主机所在的局域网获得一个和宿主机同一网段的IP地址。这样局域网内其他机器可以直接通过这个IP访问虚拟机SSH连接、SAMBA访问都是直连不需要做任何端口映射。我的建议是如果你的宿主机网络环境相对固定直接选桥接模式。它的优势是真正实现了“虚拟机就是一台独立服务器”的体验无论SSH还是SAMBA都畅通无阻。但是要注意桥接模式下虚拟机的IP暴露在局域网里如果网络环境不安全需要更注意账户密码强度和服务权限控制。另外宿主机如果频繁切换不同网络比如笔记本在家里和公司之间移动桥接模式下的静态IP很可能会失效这种情况下用NAT加端口转发反而更稳定。选择依据其实就一条你的虚拟机是否需要被局域网内其他设备直接访问。需要就选桥接不需要就选NAT。3.2 Ubuntu 18.04的静态IP配置方法Ubuntu 18.04的网络配置方式从16.04的/etc/network/interfaces换成了netplan配置文件是YAML格式放在/etc/netplan/目录下。这是很多人第一次接触18.04时容易困惑的地方因为网上一搜全是16.04的配置方法照着改完全没用。先查看当前网卡名称ip addr常见的网卡名是enp0s3NAT模式或者enp0s8第二个网卡取决于VirtualBox的网卡类型。知道网卡名后编辑/etc/netplan/01-netcfg.yaml文件名可能略有不同以实际目录为准network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: no addresses: - 192.168.1.50/24 gateway4: 192.168.1.1 nameservers: addresses: - 192.168.1.1 - 223.5.5.5这里addresses指定的是静态IP和子网掩码/24等价于255.255.255.0。gateway4是网关地址通常就是路由器的LAN口地址。nameservers里第一个建议填网关地址也就是让路由器来做DNS转发第二个填一个公共DNS作为备份。配置完成后执行sudo netplan apply然后验证ip addr show enp0s3 ping 192.168.1.1 ping qq.com第一跳要能通网关通了说明网络链路没问题DNS解析通了说明域名解析正常。如果ping网关能通但ping域名不通基本可以断定是DNS配置有问题回到nameservers部分检查。3.3 DNS解析的几个坑DNS配置这里有一个很常见的问题nameservers只配了一个地址当这个地址不可用时虚拟机就没有任何域名解析能力。即使IP配置没问题apt update会失败、curl外网会超时但很多人第一反应是去查网络连接白白浪费大量时间。我在实际配置时习惯至少配两个DNS地址一个内网网关一个公网DNS。这里有个细节不同运营商的DNS响应速度差别挺大建议用公共DNS的测速工具或者直接用ping对比一下延迟选最快的那一个作为备用。另外要注意如果你的局域网内有自己的DNS服务器比如公司内部域名解析需求公网DNS是解析不了内部域名的这种情况下需要优先保证内网DNS可用。还有一个容易被忽略的点修改/etc/resolv.conf有时在18.04上不生效。原因是netplan和systemd-resolved会动态管理这个文件手动修改会在系统重启后被打回原形。正确的做法就是全部通过netplan配置不要再手动改resolv.conf。4. SSH服务从安装到安全加固4.1 安装与基础配置Ubuntu 18.04默认没有安装SSH服务端需要手动安装sudo apt update sudo apt install openssh-server安装完成后服务会自动启动并加入开机自启。验证方法systemctl status sshd如果状态显示active (running)说明正常。此时从宿主机执行ssh 用户名虚拟机IP输入密码就能登录这是最基础的用法。但密码登录存在安全隐患尤其是虚拟机使用桥接模式暴露在局域网时很容易被扫描工具探测到并尝试暴力破解。这一点在后面安全加固部分细说。需要修改的SSH配置集中在/etc/ssh/sshd_config建议立即调整的有两项一是Port默认22端口被暴力破解盯上的概率很高改到一个不常用的端口比如22022能过滤掉绝大多数自动扫描二是PermitRootLogin如果不是特别需要改成no禁止root直接远程登录降低权限被直接拿下的风险。改完配置后执行sudo systemctl restart sshd注意如果你修改了端口号在连接时要用ssh -p 22022和hostname的方式别再用默认的22端口。这个改动本地连接时可能不觉得什么但如果你有自动化脚本依赖22端口改之前记得一并搜索所有配置并把端口参数同步修改。4.2 SSH密钥登录配置密码登录虽然能用但每次都要输密码而且密码容易泄露更安全的做法是密钥登录。密钥登录的原理是生成一对公钥和私钥公钥放到服务器上私钥留在本地登录时服务器用公钥验证客户端持有的私钥验证通过就放行。在宿主机上生成密钥对ssh-keygen -t rsa -b 4096 -C 你的备注一路回车会在~/.ssh/目录下生成id_rsa私钥和id_rsa.pub公钥。然后把公钥上传到虚拟机上ssh-copy-id 用户名虚拟机IP执行后会要求输入一次密码之后就可以免密登录了。我建议在密钥登录确认可用之前不要禁用密码登录否则密钥配置出问题时就只能通过VirtualBox的图形界面去恢复了那个体验……说实话不算太好。确认密钥登录正常后再修改sshd_configPasswordAuthentication no重启SSH服务后密码登录就被禁用了只能通过密钥登录。这一步能大幅提高安全性因为暴力破解工具面对密钥认证基本无计可施。4.3 SSH连接不上的排查思路SSH连不上是大概率会遇到的问题这里按照从下到上的排查顺序来虚拟机网络是否正常虚拟机里ping宿主机IP不通就回到静态IP配置部分检查。宿主机和虚拟机之间网络是否可达宿主机ping虚拟机IP如果不通检查VirtualBox网络模式是否桥接、网卡是否启用。SSH服务是否在监听虚拟机里执行ss -tlnp | grep sshd确认sshd监听在0.0.0.0:22或者你修改后的端口上。如果只监听127.0.0.1那说明配置里ListenAddress写的有问题。防火墙是否放行18.04默认没开ufw如果你开启了执行sudo ufw allow ssh或sudo ufw allow 22022/tcp放行对应端口。虚拟机的网卡是否设置了MAC地址过滤VirtualBox默认是允许所有MAC地址的但如果你的路由器做了MAC地址绑定虚拟机换了网卡或者MAC变了也会连不上。按这个顺序排查绝大多数连接问题十分钟内能解决。最忌讳的是东试一下西试一下定位不了问题所在的层次。5. SAMBA文件共享配置与权限避坑5.1 SAMBA服务安装与共享目录规划SSH解决的是远程命令行操作但文件传输场景下用scp和sftp虽然可以用但对普通用户来说最顺手的方式还是直接在文件管理器里打开共享目录像操作本地文件一样复制粘贴。这就是SAMBA的用途。SAMBA是一套实现SMB/CIFS协议的软件Linux和Windows、macOS、Android设备之间都能互通。安装命令sudo apt install samba samba-common-bin安装完成后规划共享目录。我不建议直接把整个home目录共享出去这样权限控制会非常复杂。更合理的做法是建一个专用目录比如/data/shared按用途拆分子目录比如software和projects互不干扰mkdir -p /data/shared/software mkdir -p /data/shared/projects共享目录我一般放在根目录下而不是home目录下原因是SAMBA服务的权限配置和文件系统权限做了区分放在/下可以避免home目录的权限设置对共享访问造成意外干扰逻辑也更清晰。5.2 smb.conf配置实战配置文件在/etc/samba/smb.conf修改前建议先备份原文件sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak然后在文件末尾追加共享配置。先看一个基础版[shared] comment Shared Directory path /data/shared browseable yes read only no valid users yourusername这里valid users限定只有你指定的Linux用户能访问其他用户即使知道IP也看不到内容。还需要把这个用户加入SAMBA用户库并设置单独的SMB密码sudo smbpasswd -a yourusername这个密码是SAMBA自己的不一定要和系统登录密码相同。设置完成后重启SAMBA服务sudo systemctl restart smbd从Windows宿主机访问时在文件管理器地址栏输入\\虚拟机IP\shared输入用户名和刚才设置的SAMBA密码就能看到共享目录了。macOS访达里按CmdK输入smb://虚拟机IP/shared同样可以连接。5.3 权限不足和访问失败的排查我遇到的SAMBA问题里十个有八个是权限问题。SAMBA的访问控制有两层逻辑第一层是smb.conf里的权限设置第二层是Linux文件系统本身的权限设置。一个用户即使通过了SAMBA验证在Linux层面没有对应目录的读写权限一样无法操作文件。具体表现是能连接、能看到目录列表但复制文件进去时报“权限不足”或者“磁盘空间不足”其实不是磁盘满而是没有写权限。解决办法是把共享目录的所有者改成对应用户或者修改目录权限sudo chown -R yourusername:yourusername /data/shared sudo chmod -R 755 /data/shared如果需要在共享目录里创建文件目录本身要有写权限chmod建议使用775或者直接设置属主为登录用户不建议用777这种放开所有权限的方式会有安全隐患。另外一个常见问题是防火墙。如果你开启了ufwSAMBA默认端口是137/udp、138/udp、139/tcp、445/tcp需要放行sudo ufw allow samba放行后从Windows连接一般就没问题了。还有一个小概率但很隐蔽的问题Windows的SMB协议版本和SAMBA配置不匹配。Windows 10后续版本默认会使用SMB 3.0旧版Ubuntu的Samba如果不支持会在连接时报“无法访问”之类的错误。解决办法是在smb.conf的[global]段加入server min protocol SMB2 client min protocol SMB2强制使用SMB2及以上协议兼容性会好很多。5.4 SAMBA备份与性能调优如果你要在SAMBA共享目录上做大量小文件读写默认配置可能会比较慢。一个简单的优化是在[global]段设置socket optionssocket options TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF131072 SO_SNDBUF131072这是老牌优化参数对大文件传输效果比较明显。但小文件密集场景下瓶颈往往不在网络而在磁盘IO这个参数的作用会被削弱不必迷信。定期对SAMBA的配置做备份也是个好习惯因为smb.conf改坏了会导致整个服务起不来。我自己的习惯是每次修改前都复制一份带日期的备份比如smb.conf.20241118这样出问题可以快速回滚不用凭记忆重写。6. 备份快照与系统恢复实战6.1 VirtualBox快照的使用策略快照是VirtualBox非常好用的功能它记录了虚拟机在某个时间点的完整状态包括磁盘内容、内存状态如果选了保存内存和虚拟机配置。配置好了环境之后打一个快照后面随便折腾出了问题一键恢复非常稳。快照功能在VirtualBox的“机器”-“快照”菜单里也可以直接使用命令行操作VBoxManage snapshot Ubuntu18.04 take 初始配置完成 --description 装好系统、SSH、SAMBA、静态IP之后的干净状态命令行方式的好处是可控性和可自动化适合写进运维脚本。快照策略方面我的建议是分层次打系统刚装好、网络和SSH配置完成后打一个基础快照作为一切工作的起点。每次安装完一组重要软件或完成某次重要配置后打一个增量快照作为阶段的回退点。在上线某个变更比如修改系统内核参数、更新驱动之前强制先打快照防止变更导致系统不可用。快照恢复的操作很简单虚拟机关机状态下选中快照点击“恢复”即可。但这里有个重要提示恢复快照会丢弃该快照之后的所有更改。如果你打快照后又修改了系统恢复后这些修改全部丢失所以在恢复前要确认这些改动是否值得保留值得的话先备份出来。6.2 导出与导入实现整机迁移备份快照能应对“系统坏了恢复原状”的需求但它解决不了磁盘损坏、宿主机重装、需要迁移到另一台电脑这些场景。这时候需要做整机导出。在VirtualBox中通过“文件”-“导出虚拟电脑”可以将虚拟机导出为OVA文件。OVA是一个压缩包里面包含了虚拟机的磁盘镜像、配置信息和硬件设置。导出时可以选择压缩格式建议开启压缩以减小文件体积还要注意导出之前应先在虚拟机里执行一次磁盘清理避免把临时文件、日志、包管理器缓存等无用内容也封进备份里白白占空间。# 在虚拟机里执行清理 sudo apt clean sudo journalctl --vacuum-time3d sudo rm -rf /tmp/*命令行导出方式VBoxManage export Ubuntu18.04 -o ubuntu-backup.ova --ovf20 --compress恢复时通过“文件”-“导入虚拟电脑”选择OVA文件或者命令行导入VBoxManage import ubuntu-backup.ova导入后建议检查三点网卡类型和MAC地址是否和原虚拟机一致、网络模式是否正确、主机名是否保持原样。因为导出导入过程中这些信息有时会发生变化特别是网卡名从enp0s3变成enp0s8之类的情况会导致网络配置失效。6.3 备份整个虚拟机文件夹的完整方法还有一个最朴素但也最灵活的备份方式直接复制整个虚拟机文件夹。VirtualBox默认把每台虚拟机的文件放在一个独立目录里里面包含虚拟磁盘文件.vdi、配置文件.vbox和日志文件。关掉虚拟机后把这个目录整个复制到另一块硬盘或者网络存储上就等于做了一份完整的备份。这个方法的好处是简单直接不需要导出和导入的耗时过程恢复时只需要把文件夹复制回去然后在VirtualBox中通过“控制”-“注册”添加现有的虚拟机配置即可。需要注意的坑是复制前必须确保虚拟机关机不能在保存状态下复制否则. vdi文件可能处于不一致状态恢复到一半报错。另外如果你用了快照VDI文件会有多个差分镜像文件这些文件必须一起复制缺一个快照链就断了虚拟机会无法启动。快照多、磁盘大的情况下直接复制整个文件夹可能比OVA导出还慢所以这个方式更适合虚拟机文件总体积不大、快照数量少的场景。6.4 备份还原的完整操作步骤结合我自己的经验一份完整可用的备份还原步骤是这样的第一步虚拟机里做好数据清理删除不需要的临时文件和历史日志这将直接决定备份文件的大小。第二步关机并在VirtualBox主界面复制一份虚拟机副本这个功能在“机器”-“复制”路径下。复制时可以重新初始化网卡MAC地址避免和原虚拟机冲突。第三步把复制出来的虚拟机目录移动到外部存储保留原始虚拟机继续使用。如果确认复制版本一切正常这就是一个可用的冷备有问题的话虚拟机目录里的就是原始未动过的版本不影响当前使用。有了冷备之后再把OVA导出作为第二份异地备份存在另一块磁盘或者网盘上。我自己是“冷备用于本机快速恢复OVA用于跨机器迁移和长期归档”这个组合策略多个备份方案形成互补单点失效的风险就被分散了。7. 常见问题与排查技巧实录7.1 网络类问题速查这些问题是我实际使用中最常碰到的对号入座可以省下不少排查时间问题1虚拟机重启后静态IP变成了动态IP原因netplan配置了dhcp4: no但打开的是NetworkManager管理它自动拿到了IP。解决确认/etc/netplan/配置里的renderer是networkd然后执行sudo netplan apply。如果还是不行检查是否启动了NetworkManager服务sudo systemctl stop NetworkManager。问题2网关通了但域名解析不了原因DNS配置错误或DNS服务器没响应。解决修改netplan里nameservers地址至少配两个然后netplan apply。测试用nslookup域名和ping域名对比后者还受ICMP限制影响前者更直接。问题3宿主机能连虚拟机局域网其他机器连不上原因宿主机防火墙或者路由器AP隔离。解决宿主机防火墙放行VirtualBox网卡的网络流量同时去路由器后台检查是否开启了AP隔离或客户端隔离这个功能会把同一WiFi下的设备隔离开导致虚拟机无法被其他设备直接访问。问题4SSH连接超时但能ping通原因多半是sshd没有监听在正确端口或者防火墙拦截。解决虚拟机里执行ss -tlnp查看监听状态再用telnet虚拟机IP 22测试端口连通性逐层定位。7.2 SAMBA和备份类问题速查问题1Windows连接SAMBA提示网络路径未找到原因Windows的SMB协议设置和SAMBA不匹配。解决在smb.conf[global]段加上server min protocol SMB2并重启smbd服务。问题2SAMBA连接成功后无法写入文件原因Linux文件系统权限不足。解决chown把共享目录所有者改成登录用户确保目录有写权限。问题3快照恢复后SSH连不上原因快照恢复回滚到了打快照时的网络状态如果期间改了IP或主机名会不一致。解决恢复后马上在VirtualBox的图形界面里登录系统检查当前IP地址重新配置上层的SSH和SAMBA依赖。问题4OVA导出导入后虚拟机没有网络原因网卡MAC地址变了或者网卡类型改变导致内核驱动变化。解决检查VirtualBox设置里网卡型号是否保持一致比如原来用Intel PRO/1000 MT导入后可能被改成了其他型号会影响驱动加载。7.3 一个完整的日常维护清单经历了多次整机崩溃、快照误恢复之后我自己总结了一份日常维护清单每次给虚拟机做调整前都过一遍改配置之前先备份。这个指的是smb.conf、sshd_config这类关键配置文件直接复制一份带日期的副本。如果改动导致服务起不来可以快速回滚。更新系统之前先打快照。apt upgrade引起的依赖冲突、内核更换导致VirtualBox增强功能失效这些我都遇到过。有一个干净的快照兜底更新操作就是零风险的。定期导出OVA并保存在独立于系统盘的介质上。虚拟机文件默认放在系统盘如果系统盘坏了整机都会出事。至少在外部移动硬盘上留一份最近期的导出文件。记录所有改动的配置内容。可以是一个文本文件记录哪天改了netplan、加了哪些用户、安装了哪些服务。这个习惯在半年后回看时尤其有价值因为你会发现很多问题都可以通过配置记录来还原而不需要恢复快照。结尾的实操心得最后聊一点我的个人体会。虚拟机这东西用的时间越长越会发现真正让环境稳定跑起来的关键不是哪一步操作有多难而是你有没有把“备份”和“配置可追溯”这两个习惯建立起来。我见过不少人搭建环境时很顺利但出了问题就手忙脚乱原因基本都是没有备份意识、改了配置不记录。给你一个最容易做到的建议把/etc/netplan、/etc/samba/smb.conf、/etc/ssh/sshd_config这三个文件复制一份放在宿主机某目录里作为“黄金配置备份”。无论虚拟机怎么折腾只要这三个文件还在半小时内就能把SSH、SAMBA、静态IP全部恢复回来这个办法是我个人用过最实用且新手也容易养成的习惯。希望这篇实操记录能让你少走一些我走过的弯路。
RELATED

相关推荐

PyQt5桌面应用开发实战:从QSS界面美化到多线程与打包

PyQt5桌面应用开发实战:从QSS界面美化到多线程与打包

1. 为什么我还在坚持用PyQt5做桌面应用这几年桌面开发圈子里,关于技术选型的争论一直没停过。一边是Electron凭借Web生态吸走大量眼球,另一边是Tkinter被嫌弃界面老气,还有人在纠结要不要直接上C配合原生框架。可我自己做跨平台工具软件做了这…

📅 2026/10/16 11:59:04
Matpower 8.0 安装与配置全指南:从环境核对到潮流验证

Matpower 8.0 安装与配置全指南:从环境核对到潮流验证

简介:Matpower8.0安装包面向电力系统仿真与优化计算的学习者和研究人员,尤其适合高校电气工程专业学生、科研人员及从事潮流计算、最优潮流分析的工程师使用。该资源为zip压缩包,整体约46.21MB,可直接获取并部署到MATLAB环境中&am…

📅 2026/10/16 11:59:04
814 星冲榜:GitHub 日榜的“新面孔体质“是实力检测还是流量游戏

814 星冲榜:GitHub 日榜的“新面孔体质“是实力检测还是流量游戏

814 星冲榜:GitHub 日榜的"新面孔体质"是实力检测还是流量游戏 【免费下载链接】Madeira Run x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT 项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira Madeira 最近以约 814 …

📅 2026/10/16 11:59:04
MORE NEWS

更多资讯

📰

十二、常用类

一、Object 类包:java.lang,所有类的直接 / 间接父类,Object 引用可以接收任意对象,它的所有方法所有类都可使用。常用方法:1.getClass()返回对象实际运行类型;多用于判断两个对象实…

📰

人走客不走:当员工离职试图带走客户,账号冻结的技术纵深

员工离职带走客户,表面看是职业道德问题,底层其实是企业数据主权与响应速度的博弈。传统做法是事后审计、法律追责,但客户名单已经被复制、转发甚至卖给竞对之后,再完整的追责都只是补救。真正的破局点在于“事中阻断”——在敏感…

📰

接口测试实战:Postman与JMeter从调试到压测的协同指南

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

📰

机器人泛化与长程任务能力:行业分化的技术标尺

1. 这不是技术升级,是行业分水岭的现场直播“WRC观察:机器人行业进入分化期,泛化能力与长程任务能力是新标尺”——这句话最近在业内被反复引用,但很多人只把它当作风向标式的口号。我连续三年深度参与WRC(世界机器人大…

📰

锂电串联主动均衡原理与MP2642GR-Z实战设计

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

📰

PVN3D 6DoF位姿估计:逐点投票与几何解算的关键设计解析

做机器人抓取和AR这两年,我读了不少6DoF位姿估计的论文,PVN3D是印象比较深的一篇。它的核心思路很简洁:让网络为每个三维点预测一个指向关键点的偏移向量,最后由所有点一起投票决定关键点坐标,再通过最小二乘解算刚体变…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬