Rust学习笔记(1)
本文介绍了Rust中判断变量所有权是否转移的“灵魂三问”法则,以及自动解引用的适用场景。
**所有权判断**:对于复杂类型(如String),若发生“裸体赋值”(`=` 直接赋值)、作为参数传递给函数(未加`&`)、或调用消耗自身的方法(如`into_...()`),则所有权转移,原变量失效。简单类型(如i32)则始终存活。此外,变量在离开其作用域`{}`时也会被销毁。
**自动解引用**:主要发生在两个场景:1)使用点操作符`.`调用方法或访问字段时,编译器会自动尝试解引用或加引用直到找到对应成员;2)函数传参时,若类型实现了`Deref`,`&T`会自动转换为`&U`(如`&String`转`&str`)。但在赋值、算术运算和模式匹配中,不会自动解引用,需手动处理。
简言之,所有权转移遵循明确规则,而自动解引用旨在方便方法调用和传参,但在可能影响逻辑正确性的操作中保持严格。
- 2025-12-27
- 95
- 0
- 0
- 33.5℃
记服务器挖矿木马入侵与解决
服务器CPU占用率异常持续100%,经排查发现是门罗币挖矿病毒入侵。病毒藏在自建的Umami容器中,利用React漏洞(CVE-2025-55182)植入恶意代码。通过htop定位异常进程,依次检查了定时任务、系统任务目录、Systemd和SSH密钥均无异常,最终通过进程树追踪到父进程为node脚本,定位到Docker容器1Panel-umami-1NNn。解决方案:删除恶意容器、修改SSH密码并将矿池IP加入黑名单,CPU恢复正常。作者提醒此漏洞影响广泛,甚至间接导致Cloudflare服务中断数小时,建议使用React的项目及时修复。
- 2025-12-10
- 98
- 1
- 0
- 36.8℃
解决VMware中NAT网络模式上不了网的问题
作者在VMware虚拟机中安装老版本Ubuntu时,NAT模式无法联网。为实现通过主机代理工具进行路由级代理,必须使用NAT模式。经过排查,通过三个步骤解决了问题:首先在Windows服务中重启VMware DHCP和NAT服务;其次在VMware虚拟网络编辑器中以管理员权限还原默认设置,并确认VMnet8为NAT模式且相关选项已勾选;最后在Ubuntu内重启NetworkManager服务并刷新网络配置,使虚拟机成功获取到NAT模式下的IP地址。
- 2025-07-30
- 144
- 0
- 0
- 38.4℃