普通视图

发现新文章,点击刷新页面。
昨天以前杜老师说

推荐酷鸭数据主机

作者 Teacher Du
2026年2月26日 00:00

好久没有发博文了,具体原因近期博文杜老师会说明。本篇博文推荐一下酷鸭数据主机,正巧近期需要采购香港主机,酷鸭数据为杜老师提供一台香港主机,希望可以发布一篇推荐文章,故有此文。

平台截图

平台首页点击 这里。首页设置清新简洁:

后台面板也很直白,不像大厂平台一样一堆操作接口:

主机测评

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
-------------------- A Bench.sh Script By Teddysun -------------------
Version : v2026-01-31
Usage : wget -qO- bench.sh | bash
----------------------------------------------------------------------
CPU Model : Intel(R) Xeon(R) Gold 6133 CPU @ 2.50GHz
CPU Cores : 8 @ 2494.140 MHz
CPU Cache : 28160 KB
AES-NI : ✓ Enabled
VM-x/AMD-V : ✓ Enabled
Total Disk : 29.9 GB (1.9 GB Used)
Total RAM : 7.8 GB (338.7 MB Used)
System Uptime : 0 days, 20 hour 32 min
Load Average : 0.00, 0.00, 0.00
OS : Debian GNU/Linux 12 (bookworm)
Arch : x86_64 (64 Bit)
Kernel : 6.1.0-10-amd64
TCP Congestion Ctrl: cubic
Virtualization : KVM
IPv4/IPv6 : ✓ Online / ✗ Offline
Organization : AS401701 cognetcloud INC
Location : Tung Chung / HK
Region : Islands
----------------------------------------------------------------------
I/O Speed(1st run) : 187 MB/s
I/O Speed(2nd run) : 487 MB/s
I/O Speed(3rd run) : 489 MB/s
I/O Speed(average) : 387.7 MB/s
----------------------------------------------------------------------
Node Name Upload Speed Download Speed Latency
Speedtest.net 2.37 Mbps 9.53 Mbps 1.55 ms
Los Angeles, US 9.62 Mbps 9.90 Mbps 153.80 ms
Dallas, US 10.00 Mbps 9.88 Mbps 175.75 ms
Montreal, CA 9.50 Mbps 6.56 Mbps 216.71 ms
Paris, FR 9.47 Mbps 8.54 Mbps 300.07 ms
Amsterdam, NL 10.19 Mbps 10.18 Mbps 190.15 ms
Suzhou, CN 9.57 Mbps 9.56 Mbps 77.33 ms
Ningbo, CN 9.55 Mbps 9.34 Mbps 71.59 ms
Hong Kong, CN 9.46 Mbps 7.85 Mbps 96.12 ms
Singapore, SG Test failed
Taipei, CN 9.48 Mbps 9.52 Mbps 47.49 ms
Tokyo, JP 9.47 Mbps 9.51 Mbps 50.01 ms
----------------------------------------------------------------------
Finished in : 4 min 42 sec
Timestamp : 2026-04-04 23:24:51 CST
----------------------------------------------------------------------

注意:测试命令为 wget -qO- bench.sh | bash

特惠福利

新客可以使用优惠码 9Y920269y,享受 9.9 元体验价格。

本活动覆盖约百分之 90 商品,少数特殊商品合叠加活动商品可能不可用;是否可用以结算页提示为准。

复制优惠码后进入选购并且下单,在结算页输入并且使用即可;点击去选购会自动携带优惠码进入到流程。

优惠码有效期至 2027 年 3 月 6 日前,过期自动失效。

关于酷鸭

酷鸭的运营主体法人为印度尼西亚籍,该创始人曾在中国攻读博士学位,依托海外资源创立酷鸭品牌。品牌母公司总部位于印度尼西亚,在印度尼西亚及新加坡均部署有自建机房,基础设施具备一定自主可控能力。

国内层面,酷鸭数据完成正规公司注册。鉴于母公司主体在境外,且当前业务未涉及中国大陆境内运营,因此暂未办理国内的增值电信业务经营许可证,其运营模式为正规团队运作,并非个人单干的小作坊服务。

酷鸭目前已上线新加坡、中国香港、美国等地区的云服务器产品,均支持免备案部署,可满足海外建站及相关业务快速上线需求,使用流程较为便捷。

定价方面,酷鸭整体处于行业常规市场价格区间,定价稳健务实,未采用部分个人服务商常见的超低价引流模式。

对比市面部分极端低价机型,其定价更符合正常运营成本逻辑,用于承载重要数据的稳定性与可靠性相对更有保障。

酷鸭整体偏向低调稳健,市场推广活动较少,现阶段仅开设新人体验活动。品牌现阶段不追求快速扩张、短期流量变现,核心思路稳中求进、稳步发展。

快速部署 Nexus Terminal 打造高颜值远程管理终端

作者 Teacher Du
2025年12月9日 00:00

对于运维人员和开发者而言,一款高效、安全、易用的远程连接管理工具是日常工作的刚需。Nexus Terminal(星枢终端)作为一款现代化的Web SSH/RDP/VNC客户端,凭借高颜值界面、丰富功能和强大的安全机制,成为远程管理的优质选择。更重要的是,通过Docker可以快速部署这款工具,充分利用容器化的便捷性和环境隔离特性,让远程服务器管理效率大幅提升。本文将详细分享基于Docker部署Nexus Terminal的完整步骤,以及工具的基础使用方法,新手也能轻松上手。

一、认识Nexus Terminal,高效远程管理的利器

Nexus Terminal是专为开发者、运维人员和企业团队打造的远程连接管理工具,兼具Web端和独立桌面端应用,核心围绕高效、安全、定制化设计,相比传统远程管理工具,优势十分突出。

其核心特性涵盖连接管理、安全防护、功能拓展等多个维度,完美适配日常远程运维需求:

  1. 多协议多标签支持:同时兼容SSH/SFTP、RDP、VNC协议,多远程连接可通过标签页并行操作,告别多窗口切换的繁琐;
  2. 类VS Code编辑体验:内置Monaco Editor,支持在线编辑文件,语法高亮、智能补全一应俱全,远程修改代码/配置无需额外工具;
  3. 强大安全防护体系:集成人机验证、双因素认证(2FA),支持IP白名单/黑名单,异常访问自动封禁,还有全面的审计日志,记录所有用户行为和系统变更,满足合规审查和问题回溯需求;
  4. 轻量高效易部署:基于Node.js开发的轻量级后端,资源占用低,还支持PWA渐进式Web应用,可安装为类原生应用,支持离线使用和推送通知;
  5. 实用附加功能:内置简易Docker容器管理面板,简化DevOps流程;心跳保活机制确保连接稳定,避免超时断开;界面主题和布局可高度定制,适配不同使用习惯。

此外,Nexus Terminal还配备了实时通知系统,登录提醒、异常告警等关键事件及时推送,让运维人员随时掌握系统状态。

二、部署前准备,环境规划与检查

本次部署基于个人测试环境进行,生产环境部署需谨慎评估并做好安全加固,以下是具体的环境规划和检查步骤,确保部署过程顺利。

2.1 本地环境规划

本次实践的基础环境配置如下,核心需保证Docker和Docker Compose版本符合要求:

主机名IP地址操作系统版本Docker版本部署项目
jeven01192.168.3.88Ubuntu 22.04.1 LTS27.1.1Nexus Terminal

2.2 环境核心检查

部署前需确认Docker服务正常运行、Docker版本适配,且Docker Compose版本在2.0以上,依次执行以下命令检查:

  1. 检查Docker服务状态
1
systemctl status docker

输出结果显示Active: active (running)即为正常运行;
2. 检查Docker版本

1
docker -v
  1. 检查Docker Compose版本
1
docker compose version

若Docker未安装或版本过低,需先完成安装/升级,确保基础环境达标。

三、Docker一键部署Nexus Terminal,步骤超简单

基于Docker Compose部署Nexus Terminal,全程只需拉取镜像、配置部署文件、启动容器三步,无需复杂的环境配置,快速完成搭建。

3.1 拉取相关容器镜像

Nexus Terminal的部署需要前端、后端、远程网关和guacd四个镜像,依次执行以下命令拉取最新版本:

1
2
3
4
docker pull heavrnl/nexus-terminal-frontend:latest
docker pull heavrnl/nexus-terminal-backend:latest
docker pull heavrnl/nexus-terminal-remote-gateway:latest
docker pull guacamole/guacd:latest

3.2 创建部署目录并编写docker-compose.yaml

  1. 创建专属部署目录,并进入该目录:
1
mkdir -p /data/nexus-terminal &&  cd /data/nexus-terminal
  1. 创建并编辑docker-compose.yaml文件
1
vim docker-compose.yaml

将以下配置内容复制到文件中,注意替换其中的IP地址为自身服务器的实际IP(示例为192.168.3.88):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
services:
frontend:
image: heavrnl/nexus-terminal-frontend:latest
container_name: nexus-terminal-frontend
ports:
- "18111:80"
depends_on:
- backend
- remote-gateway
backend:
image: heavrnl/nexus-terminal-backend:latest
container_name: nexus-terminal-backend
volumes:
- ./data:/app/data
environment:
NODE_ENV: production
PORT: 3001
DEPLOYMENT_MODE: docker # local/docker
REMOTE_GATEWAY_API_BASE_LOCAL: http://192.168.3.88:9090
REMOTE_GATEWAY_API_BASE_DOCKER: http://remote-gateway:9090
REMOTE_GATEWAY_WS_URL_LOCAL: ws://192.168.3.88:8080
REMOTE_GATEWAY_WS_URL_DOCKER: ws://remote-gateway:8080
# passkey
RP_ID: "192.168.3.88"
RP_ORIGIN: "http://192.168.3.88:18111"
remote-gateway:
image: heavrnl/nexus-terminal-remote-gateway:latest
container_name: nexus-terminal-remote-gateway
environment:
GUACD_HOST: guacd
GUACD_PORT: 4822
REMOTE_GATEWAY_API_PORT: 9090
REMOTE_GATEWAY_WS_PORT: 8080
FRONTEND_URL: http://frontend
MAIN_BACKEND_URL: http://backend:3001
NODE_ENV: production
depends_on:
- guacd
- backend
guacd:
image: guacamole/guacd:latest
container_name: nexus-terminal-guacd
restart: unless-stopped

保存并退出编辑(vim中执行:wq)。

3.3 启动Nexus Terminal容器

在部署目录下执行以下命令,后台启动所有容器

1
docker compose up -d

3.4 检查容器运行状态

容器启动后,执行以下命令确认所有服务正常运行:

1
docker compose ps

若所有容器的STATUS列显示Up(guacd会显示Up (healthy)),说明部署成功,前端容器已映射18111端口,可通过该端口访问。

四、访问并初始化Nexus Terminal

部署成功后,通过浏览器即可访问Nexus Terminal,首次访问需完成管理员账号创建,步骤如下:

  1. 浏览器访问:在地址栏输入http://<服务器实际IP>:18111,例如http://192.168.3.88:18111
  2. 创建管理员账号:首次进入会显示初始设置页面,自定义输入用户名、密码,确认密码后点击「创建账号」,建议设置复杂密码,提升安全性;
  3. 首次登录:输入刚创建的账号密码,登录后进入Nexus Terminal主界面,可看到仪表盘、终端、连接管理、审计日志等功能模块。

注意:若无法访问,需检查宿主机防火墙是否放行18111端口,云服务器还需在安全组中添加18111端口的访问规则。

五、Nexus Terminal基础使用,快速上手远程管理

成功登录后,即可开始使用Nexus Terminal进行远程服务器管理,核心的添加服务器、远程登录、在线编辑文件等操作,步骤简单易懂。

5.1 添加远程服务器连接

  1. 依次点击主界面的「终端」——「连接列表」,点击「添加第一个连接」;
  2. 配置服务器基本信息:填写连接名称(可选,便于区分)、服务器IP地址,选择连接类型(SSH/RDP/VNC,默认SSH),填写对应端口;
  3. 配置认证信息:选择认证方式(密码/SSH密钥),若为密码认证,输入服务器登录用户名和密码;若为SSH密钥,上传对应密钥文件;
  4. 测试并添加:可点击「测试连接」确认服务器可达,测试成功后点击「确认添加」,连接即创建完成。

5.2 远程登录服务器

连接创建完成后,在连接列表中双击服务器名称,即可快速建立远程连接,进入终端界面,可直接执行服务器命令,操作与本地终端一致,多连接可通过标签页切换。

5.3 在线编辑远程文件

远程登录后,终端界面下方会显示服务器的文件列表,无需借助SFTP工具,直接点击文件即可在左侧编辑区域打开,支持语法高亮和智能补全,编辑完成后保存即可同步到服务器,修改配置、编写代码高效便捷。

5.4 查看审计日志,追踪操作记录

所有的操作行为都会被记录在审计日志中,点击主界面的「审计日志」,可查看SSH连接成功/失败、连接创建、设置更新等所有操作记录,支持按操作类型、时间筛选,便于问题排查和操作追溯。

六、部署总结与使用建议

通过Docker部署Nexus Terminal,充分发挥了容器化的优势:部署流程简单、环境隔离性好、后续维护便捷,无需关注复杂的依赖配置,几分钟即可完成搭建,无论是个人测试环境还是企业轻量运维场景,都非常适用。

Nexus Terminal凭借高颜值的界面、丰富的功能和强大的安全防护,完美解决了传统远程管理工具的痛点:多协议兼容满足多样化远程需求,类VS Code的编辑体验简化远程文件操作,全面的安全机制保障服务器访问安全,审计日志和通知系统让运维管理更可控。

生产环境使用建议

  1. 强化密码安全,开启双因素认证(2FA),配置IP白名单,仅允许可信IP访问;
  2. 定期备份部署目录下的data文件夹,防止数据丢失;
  3. 及时更新Nexus Terminal镜像,修复已知安全漏洞;
  4. 对18111端口做反向代理,配置HTTPS,提升传输安全性。

无论是日常的服务器远程维护、代码部署,还是团队协作的远程管理,Nexus Terminal都能成为高效的辅助工具,结合Docker的便捷部署,让远程管理工作更轻松、更安全。

Minecraft 生存服务器来啦「1.21.8 版」

作者 Teacher Du
2026年1月2日 00:00

杜老师在家用机上搭建了一个 Minecraft 游戏平台,配置为 16H32G 内存,500M 的带宽,预估支持 30 人同时在线。如果您喜欢玩我的世界,又感觉自己玩没有意思,欢迎加入我们平台,大家一起 play 一起 happy!

注意事项

  1. 本服务端仅支持 Java 版 Minecraft,内置常用插件,身份验证、领地、家设置等;

  2. 服务端目前支持 1.21.8 版本,如果您已有客户端,只需进入多人游戏,输入杜老师服务器的地址 mc.dusays.com 即可「如果连接失败可加上端口 mc.dusays.com:25565」

  3. 我们将平台设置为生存模式,容易难度,重生保留物品,并开启了防爆模式;

  4. 游戏无 GM 直接干预,没有任何隐藏收费项目;

  5. 我们本着共同游戏更多快乐原则,谢绝恶意玩家进入,请不要破坏他人的劳动成果,谢谢;

  6. 本游戏服长期有效,只要有一个人在线,游戏服就不会关闭,同时每周进行数据备份;

  7. 如有任何问题,可在评论区内留言,杜老师都会积极帮大家解决;

  8. 最终解释权归杜老师说所有。欢迎加 QQ 群 454279233。

1.21.8 客户端

如果您没有客户端,可下载杜老师整合的客户端:

下载地址

游戏截图

游戏主城截图:

生存村庄界面:

模组版本

2026 年 01 月 20 日更新:

功能名称版本
IAItemsAdder4.0.15
MOTDminimotd-bukkit2.1.2
NPCCitizens2.0.40-b3959
扩展PurpurExtras1.37.0
TABTABv5.4.0
世界保护worldguard-bukkit7.0.14-dist
全息图DecentHolograms2.9.9
全球市场PlayerAuctions1.32.1
创世神worldedit-bukkit7.3.17
前置CMILib1.5.7.4
前置nightcore2.11.0
前置ProtocolLib5.4.1-SNAPSHOT-aa4fab1
前置Vault1.7.3-b131
变量PlaceholderAPI2.11.7
基础CMI9.8.4.4
多世界Multiverse-Core4.3.1
快捷键xShiftFCommand1.0.0
抽奖ExcellentCrates6.6.1
插件管理PlugManX3.0.1
权限LuckPerms-Bukkit5.5.16
正版验证PremiumVerify1.0.8
每日任务ODailyQuests3.0.1
每日回收UltimateShop3.12.5
点券PlayerPoints3.3.3
玩家地标PlayerWarp2.2.1-free
登录AuthMe5.6.0
登录标题AuthMeTitles2.6.6
离线皮肤SkinsRestorer15.9.3
称号PlayerTitle4.11.2-free
签到LiteSignIn1.8.9.0
箱子商店QuickShop-Hikari6.2.0.10
经济XConomy-Bukkit2.26.3
菜单DeluxeMenus1.14.1-Release
随机传送BetterRTP3.6.13
领地Residence6.0.1.2

DEB 和 RPM 有什么区别

作者 Teacher Du
2025年12月3日 00:00

在 Linux 系统中,软件的安装和管理通常依赖于软件包(Package),而 .deb 和 .rpm 是两种最主流的软件包格式。它们分别服务于不同的 Linux 发行版生态系统,不仅文件后缀不同,所使用的工具链、依赖管理方式、系统集成方式等方面也各有特点。本文将从多个角度对这两种格式进行深入解析。

基础定义

格式全称主要用途
.debDebian Binary Package用于 Debian 及其衍生系统
.rpmRPM Package Manager用于 Red Hat 等及其衍生系统

软件包管理工具的不同

操作.deb 系列.rpm 系列
低层包管理器dpkgrpm
高层包管理器apt、apt-get、gdebiyum、dnf、zypper
自动解决依赖apt 系列具备强大的自动依赖解决能力yum / dnf 支持自动依赖解析
安装命令示例sudo apt install ./xxx.deb ; sudo dpkg -i xxx.debsudo yum install xxx.rpm ; sudo rpm -ivh xxx.rpm

软件包内部结构差异

尽管 .deb 和 .rpm 都包含软件的可执行文件、元信息、安装脚本等,但它们的打包方式和控制文件结构并不相同:

1
2
3
4
5
6
7
8
9
10
11
.deb 软件包结构:
.deb 文件实际上是一个 ar 档案,包含:
├── control.tar.gz → 控制信息(如版本、依赖、脚本)
├── data.tar.gz → 软件内容(实际文件)
├── debian-binary → 版本信息(固定为2.0)
.rpm 软件包结构:
.rpm 文件是经过 CPIO 和 RPM 格式封装的结构,包含:
├── 包描述信息(名称、版本、架构等)
├── 安装/卸载脚本(%pre、%post、%preun、%postun)
├── 文件列表及路径
├── 安装数据(通过 CPIO 解包)

平台兼容性

.deb 和 .rpm 是彼此不兼容的,不同包管理器和元数据结构使它们无法直接在非原生系统中使用。但可以通过跨格式转换工具实现临时兼容;

注意:转换后的包可能在目标系统中运行异常,特别是涉及依赖项或系统级服务时。

系统集成差异

.deb 系列操作系统默认使用 systemd 或 sysvinit 管理服务,依赖包也多以 .deb 分发。

.rpm 系统通常更加倾向于企业级应用部署,具备更强的 SELinux、Firewalld 集成与限制管理。

此外,.rpm 包更早支持数字签名验证(GPG 签名),而 .deb 也已在 apt 中引入类似机制。

使用场景与生态对比

项目.deb 系列(如 Ubuntu、麒麟桌面、统信桌面).rpm 系列(如 openEuler、麒麟服务器、统信服务器)
使用人群个人用户、国产桌面操作系统用户居多企业级、服务器、运维自动化场景多见
系统更新频率快,偏向社区活跃发展稳定,重视长期支持(LTS)版本
支持工具apt, dpkgyum, dnf, rpm, zypper

ima 任务模式邀请码分享

作者 Teacher Du
2025年11月27日 00:00

在当今快节奏的工作中,高效的信息处理与内容创作工具越来越受到人们的青睐。腾讯推出的 ima,是一款以知识库为核心,面向学习与办公场景的 AI 智能工作台,致力于帮助用户提升信息获取效率并大幅提高内容创作的效率与质量。

ima 工作台简介

高效获取信息:无论是全网搜索还是基于个人知识库,ima 都能快速定位精准答案;

智能解读内容:支持对文档、网页、图片、音视频等多种格式内容进行 AI 解读与总结;

便捷知识沉淀:可将公众号文章、网页、笔记、文档等一键加入个人或共享知识库,形成自己的知识体系;

辅助内容创作:提供 AI 写作、扩写、缩写、翻译、脑图生成等能力,助力用户高效产出高质量内容。

任务模式

智能任务生成

用户仅需输入主题描述,或通过 @ 指定个人/共享知识库,ima 就能基于你的需求与知识储备,智能生成结构化内容,如行业报告、项目总结、分析文档等。

支持生成 播客音频内容,可选择对谈人数、音色,模拟真实对话场景,适用于知识分享、培训、访谈类内容创作。

结构化输出

生成的报告自带 目录导航,目录条目与报告内容层级一一对应,点击即可快速跳转,便于阅读与分享。

播客内容支持 音频下载,便于后续传播与再加工。

个性化延续

系统会自动记录用户上次使用的音色与对谈人数设置,下次使用时无需重复配置,提升连续创作体验。

任务模式体验申请机制

任务模式目前为邀请制体验功能,并非所有用户默认开放。用户需要通过申请获得体验资格,体验期内每日有使用次数限制(通常为每日 5 次,次数每日重置)。

邀请分享

由于任务模式目前处于 逐步开放体验阶段,并非所有用户默认可用,因此官方设置了 邀请码分享机制,以便于感兴趣的用户通过官方渠道或已体验用户获取试用资格。

若你想体验 ima 任务模式,可按如下步骤申请:

第一步:确保你的 ima 客户端为最新版本

手机端(iOS/Android/鸿蒙)或电脑端(Windows/Mac)的 ima 版本需 升级至 2.0 或更高版本。

第二步:进入任务模式入口

在 ima 对话界面中,切换至「任务模式」(通常在模式选择区或功能入口中可以找到)。

第三步:点击“申请体验”

在任务模式页面,会有 “申请体验”按钮,点击后提交申请。

第四步:等待官方审核与邀请码发放

任务模式体验资格将 根据申请顺序分批发放,通过审核后,你将在 ima 端内收到 站内信通知,内含你的 体验资格及可能的邀请码(如有)。

第五步:开始使用

获得体验资格后,每个账号 每日最多可体验 5 次任务模式功能,系统可能会根据实际运营情况调整使用次数。

本站分享

杜老师获取了 3 个 任务模式体验资格,可通过如下方式使用:

  1. 在本站评论去留言,留下邮箱接收;

  2. 本站在看到留言后,会尽快发送邀请码到你的邮箱;

  3. 收到邀请码后,可在 ima 端内使用 “邀请码” 功能,输入邀请码即可获取体验资格。

  4. 目前剩余一个邀请码,最终解释权归杜老师说所有。

Temp Mail 兼具隐私和便捷性的最佳临时电子邮件服务

作者 Teacher Du
2025年11月21日 00:00

您是否曾经需要一个快捷的电子邮件地址?比如注册游戏或网站?这时 Temp Mail 就能派上用场了!它能为您提供一个可在短时间内使用的临时电子邮件地址。

什么是临时邮件?

使用临时邮箱,您可以创建一个有效期仅为 24 小时的电子邮件地址。这意味着您无需使用真实邮箱即可注册网站或 Facebook、Twitter 等社交媒体。它非常适合保持您的收件箱整洁!

有了临时邮箱后,您就可以立即阅读收到的邮件。超级简单方便!

因此,如果您想尝试一下,只需访问 Temp Mail 并立即获取您的临时电子邮件地址!

在深入探讨最佳实践之前,让我们先来了解一下临时邮箱的各种术语。常见的名称包括一次性邮箱地址、一次性邮箱地址、10分钟邮箱地址和一次性邮箱地址。其他术语,例如虚假邮箱地址、匿名邮箱账户和别名邮箱地址,则强调了其隐私功能。此外,临时邮件和自毁邮箱地址则强调了其保护您的主邮箱免受垃圾邮件侵害的用途。这些术语都体现了增强安全性和有效管理通信的目标,并且可以互换使用。

主要特点和优势

  • 临时电子邮件地址

使用临时邮箱地址是明智之举。它能确保您真实邮箱的安全。您可以随时创建新邮箱。这样,您就可以避免收到垃圾邮件和不需要的邮件。

  • 轻松注册网站和社交媒体

使用临时邮箱注册网站和社交媒体非常方便。您只需输入临时邮箱地址即可。无需分享您的真实邮箱地址。这可以确保您的信息安全。

  • 隐私保护

您的隐私至关重要。使用临时邮箱,您的个人数据安全无虞。所有邮件将在一小时后删除。您也可以随时删除临时邮箱。这意味着没有人可以追踪您。

有关我们如何保护您的隐私的更多详细信息,请查看我们的隐私政策

使用临时邮箱是保障网络安全的好方法。立即试用!

临时邮件的理想用户

您是否曾经想在线注册某些服务,但又不想使用真实邮箱?这时,临时邮箱 就派上用场了!它非常适合那些想要保持邮箱整洁的用户。

以下是 Temp Mail 的一些理想用户:

  • 想要尝试新服务但又不想泄露个人电子邮件的人。
  • 需要注册在线资源但又想避免垃圾邮件的学生。
  • 任何重视隐私并希望保证信息安全的人。

使用临时邮件很简单,并且可以帮助您在线保持安全!

临时邮件的优点和缺点

你听说过临时邮箱吗?它是一款很酷的工具,可以为你提供一个临时的电子邮件地址。但它真的有用吗?让我们来一探究竟!

优势缺点
保护您的隐私可能会被某些网站屏蔽
便于使用电子邮件可能很快就会过期
无需注册与常规电子邮件相比功能有限

总而言之,临时邮箱有其优缺点。它在保护隐私方面做得很好,但可能并非万能。您觉得呢?

临时邮件适合您吗?

您是否曾经需要邮箱地址,但又不想使用真实邮箱?这时,Temp Mail 就派上用场了!它能为您提供一个临时邮箱地址。您可以用它来注册网站或获取验证码。但它真的适合您吗?如果您想保障网络安全并避免垃圾邮件,那么答案是肯定的!但请记住,它不适用于发送重要邮件。

使用临时电子邮件的最佳实践

临时邮箱服务对于管理在线隐私和沟通至关重要。随着垃圾邮件和数据泄露事件的增多,临时邮箱提供了一种保护个人信息的实用方法。本指南概述了有效使用临时邮箱的最佳实践,帮助您在享受其优势的同时,确保在线活动的安全性和便捷性。

1.使用临时邮件满足临时需求

临时邮箱非常适合短期用途,例如订阅新闻简报、查看一次性优惠或注册您不完全信任的网站。请避免使用临时邮箱进行长期或重要的通信,因为收件箱通常会在短时间后被删除。

2.避免使用临时邮件发送敏感信息

虽然临时邮箱可以保护您的主邮箱免受垃圾邮件的侵扰,但它并非用于处理敏感信息。请避免使用临时邮箱进行金融交易、个人通信或任何涉及敏感数据的活动。

3.定期清除浏览器缓存

使用临时邮箱时,建议定期清除浏览器缓存和 Cookie。这有助于保护您的隐私,并确保不会留下任何可能被利用的残留数据。

4.保持临时邮件匿名

临时邮箱的主要优势之一是匿名性。请勿将您的临时邮箱地址与您的主邮箱或任何个人信息关联。这有助于保障您的身份安全并保护您的在线活动隐私。

5.谨慎使用链接和附件

与普通电子邮件一样,请谨慎处理临时邮箱收件箱中收到的任何链接或附件。这些链接或附件可能包含恶意软件或钓鱼攻击。请仅与来自可信来源的内容进行互动。

6.使用临时邮箱进行多次注册

如果您需要在一个平台上注册多个帐户,临时邮箱会是一个很有用的工具。它可以让您快速轻松地创建多个地址,从而帮助您管理多个帐户,而不会使主收件箱变得杂乱无章。

推荐的临时邮箱网站

Dockerd 日志太多?磁盘爆了?一篇教您搞定容器日志问题

作者 Teacher Du
2025年11月15日 00:00

Docker 重度使用者们,您了解过 Docker 日志吗?如何查找、减少以及管理日志,从而有效节省磁盘空间!今天分享一下如何处理 Docker 日志的问题。

日志好坑

Docker 默认使用的是 json-file 日志驱动。日志会一直写,没有限制、没有轮转、没有清理!日志默认位置:

1
/var/lib/docker/containers/<container-id>/<container-id>-json.log

当您发现它时,可能已经:

1
2
3
4
IO 等待时间长
占了几十个 G
吃满磁盘
服务挂了

处理问题

主要通过日志轮询方式处理,下面介绍两种方式设置日志轮询。在运行容器时设置轮转策略:

1
2
3
4
5
6
docker run -d \
--name myapp \
--log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
myapp:latest

参数解释:

参数解释
max-size=10m单日志文件最大 10MB
max-file=3最多保留 3 个轮转文件,容器总日志控制在 30MB 内

修改 Docker 的配置,该配置适用于所有容器,编辑 Docker 配置文件/etc/docker/daemon.json:

1
2
3
4
5
6
7
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "5"
}
}

重启下 Docker 服务,注意只对之后创建的容器生效!

1
systemctl restart docker

日志清理

正运行的容器,可以这样快速清理日志「生产环境慎用」

1
echo "" > $(docker inspect --format='{{.LogPath}}' <container-id>)

或者更稳一点:

命令解释
docker stop停掉容器
docker rm删除容器

禁用日志输出,这个操作慎用,有可能到影响应用运行,而且不方便后续的排查:

1
docker run --log-driver=none <container-id>

日志快速清理,仅推荐在磁盘告急临时使用:

1
find /var/lib/docker/containers -name *-json.log -exec truncate -s 0 {} \;

实战建议

根据不同的场景推荐配置值:

场景配置值一配置值二
开发环境max-size=5mmax-file=3
测试环境max-size=10mmax-file=5
生产环境max-size=50mmax-file=10

最佳实践:

1
2
3
用 json-file+max-size+max-file
修改 daemon.json 设置全局默认值
旧的容器要么清理日志,要么重启带有轮转参数

二手手机值得买吗?数码爱好者的省钱换机经验

作者 Teacher Du
2025年11月9日 00:00

作为一名资深的数码爱好者,杜老师有个坚持多年的习惯:每年小米新品旗舰发布,必定第一时间入手尝鲜,再把手上的旧机挂出去二手转出。本以为这样能“以旧补新”降低成本,可算下来每年差价依然不菲,长期累积竟是一笔不小开支。期间杜老师也接触很多二手平台,但感觉不靠谱。直到杜老师接触了某转平台,才算真正找到了兼顾体验与性价比的二手换机方案。

背景

对数码迷来说,新机的吸引力不言而喻。小米每一代旗舰的性能升级、影像优化、系统创新,都会让杜老师忍不住想第一时间上手体验。

以前更换手机,都是新品一到手就会把旧机挂在个人闲置渠道,不仅要反复的沟通议价,还要担心买家挑剔成色、质疑质量,最后往往只能低价成交。

更关键的,即便算上旧机残值,每年换小米新机的净支出仍要两千多,长期下来成本压力越发明显。

期间杜老师也接触很多二手平台,但感觉不靠谱。很多商家会把二手机器进行翻新,外观上看不到任何使用痕迹,但电池健康度极低,运行主流 APP 都卡顿不堪,体验极差。

平台

后来身边的朋友推荐杜老师试试某转,说是平台能解决二手交易的信任难题,价格也更实在。抱着试试看的心态,杜老师第一次在某转上入手了一台 95 新的小米旗舰机型。

下单前杜老师特意研究了平台的官方验机服务,发现每一台手机都会经过 20 道外观检测和 55 道功能检测,从屏幕的显示、电池的健康到核心硬件性能都有详细报告,连边框的细微划痕、电池循环次数都标注得一清二楚,完全杜绝了暗病机、翻新机的隐患。

体验

在收到手机后,实际体验比预期更惊喜。机身的成色几乎和新机无异,仅在边角有极难察觉的使用痕迹,电池健康度保持在百分之 90 以上,日常使用一天一充完全够用,运行主流 APP 和大型游戏都流畅无卡顿,和新机的体验差距极小。

而价格仅为新机首发价的一半多,直接省下一千多元,这笔钱足够再入手一副无线耳机,大幅降低换机成本。

其实很多人对二手手机的顾虑本质上是担心质量没保障、交易会有风险。但正规平台标准化服务,早已解决这些痛点。

某转不仅有专业验机和一年质保服务,还支持七天无理由退换,让二手交易变得和购买新机一样省心。

总结

对杜老师这种每年都想追新的数码爱好者来说,用某转入手上一代旗舰,既能以低成本享受高端体验,又可以把旧机通过平台高价转出,形成低成本循环换机的闭环。

现在杜老师早已放弃新机必买全新的执念。毕竟手机更新迭代速度飞快,旗舰机型性能冗余足够支撑两年使用,二手的准新机的性价比无疑更高。

某转上官方验机报告和质保服务,让杜老师彻底打消对二手手机的顾虑,每年换小米机型的成本直接降低了近一半。

回到最初问题:二手手机值得买吗?答案因人而异,但是对追求性价比的数码爱好者来说,选对平台至关重要。像某转这样的正规平台,用标准化服务抹平二手交易的信息差,让二手手机既能省钱又省心。

最近总觉得脑子不够用?杜老师的脑力不足自救实录

作者 Teacher Du
2025年11月3日 00:00

不知道有没有朋友和杜老师一样,最近这段时间总是被脑力不足的状态困扰。以前处理工作、规划生活都会游刃有余,现在却频繁陷入反应慢半拍、记不住事的窘境,连原本轻松日常都变得有些吃力。今天就来好好聊聊这种状态,也分享下杜老师为了改善它做的那些尝试。

具体表现

先说说杜老师感受到的脑力不足具体表现,真的是渗透在生活和工作的方方面面。工作上最明显的就是专注力严重下降。

以前能安安稳稳连续处理两三个小时任务,现在坐下来不到半小时,思绪就会不受控制飘走,一会儿想起没晾的衣服,一会儿纠结晚上吃什么,哪怕强行把注意力拉回来效率也大打折扣。

除了工作,日常里脑子短路也特别频繁。和朋友聊天有时候想表达一个简单的观点,话到嘴边却突然卡壳了,想不出合适的词语;甚至有时候会对着手机屏幕发呆,忘了自己打开手机要做什么。

更关键的,这种状态还伴随着明显的疲惫感,不是身上的累,而是脑子转不动的疲惫,哪怕休息了一会儿,也很难恢复到以前精力充沛状态。

调整作息

当意识到问题越来越严重后,杜老师开始主动尝试各种办法来改善,毕竟总不能一直陷在这种低效又焦虑的状态里。

首先从作息上入手,杜老师发现之前经常熬夜刷手机,凌晨一两点才睡觉,早上得早起赶通勤,睡眠不足肯定是脑力下降的重要原因。

于是杜老师给自己定了强制休息规则,晚上 11 点之前必须放下手机,哪怕睡不着也躺在床上闭目养神,尽量保证 8 小时的睡眠。

刚开始执行的时候特别艰难,总忍不住想刷会儿视频,但坚持了一周左右,明显感觉早上起床后脑子没那么昏沉,专注力也稍微好了一点。

饮食运动

其次是调整饮食和运动习惯。以前杜老师早上赶时间,经常不吃早饭,中午也会随便点份外卖应付,晚上又喜欢吃重油重盐大餐。

查了一些资料发现,大脑运转需要充足营养,比如蛋白质以及维生素 B 族这些,不合理的饮食会直接影响到脑力。

所以现在杜老师会提前准备好第二天早餐,比如鸡蛋、牛奶、全麦面包,中午尽量选择清淡的家常菜,晚上少吃油腻食物,偶尔还会吃点坚果、蓝莓补充营养。

同时,杜老师还加入轻度运动,每天下班回家后散步 20 分钟,运动的时候可以让大脑彻底放松,也能促进血液循环,对于改善脑力很有帮助。

改善效果

另外,杜老师还调整了工作和学习节奏,不再追求长时间高强度,而是采用分段工作方式。每工作 40 分钟,就起身活动 5 分钟,伸个懒腰或者看看窗外绿植,让大脑短暂的休息。

同时,杜老师还养成了随时记笔记习惯,不管工作任务、待办事项,还是突然想到点子,都立刻记在手机备忘录,避免因为记忆力差而遗漏重要的事情。

除此之外,杜老师还减少不必要的信息摄入,以前刷手机会漫无目的地刷各种视频、新闻,现在会刻意的控制时间,只看一些有价值的内容,避免大脑被碎片化信息过度消耗。

现在坚持了差不多半个多月,能明显感觉到状态慢慢好转。专注力比之前强了,工作效率也有提升,日常里脑子短路的次数也减少了很多。

如果您也正经历类似的状态,不妨试试杜老师的这些办法,慢慢找回大脑活力。

最后也想问问大家,你们有没有遇到过脑力不足情况?又有哪些改善的技巧呢?欢迎在评论区和杜老师交流~

MinIO 社区版 Web 管理界面被删事件全解析

作者 Teacher Du
2025年10月22日 00:00

开源项目一直是软件开发领域的重要组成部分,众多开发者依赖开源项目推动着技术快速发展。然而,近期 MinIO 社区版的一次更新却引发轩然大波,其删除 11 万行代码,原本功能完备的 Web 管理界面大幅精简,这举动不仅让用户措手不及,也引发了社区对于开源项目商业化的深度思考。

Web 管理界面的阉割

2025 年 5 月 24 日,MinIO 发布了版本更新,以简化控制台为由,删除 114736 行代码,导致 Web 管理界面的核心管理功能几乎全部丧失,仅保留基础的对象浏览功能。被移除的功能涵盖用户账户管理、访问策略配置、存储桶管理工具以及系统配置等核心管理功能。

这一变化意味用户无法再通过 Web 界面执行诸如创建用户账户、设置访问密钥、管理存储桶策略等管理员级别的操作,所有管理任务被强制转移到 mc 命令行工具。

官方解释与社区的质疑

MinIO 联合创始人表示,维护社区版和商业版的双套图形界面成本过高,涉及设计、用户体验、前后端开发以及安全测试等多个方面,对社区版而言负担沉重。

因此,官方建议需要图形化管理的用户转向商业产品或改用命令行工具。

然而,开源社区普遍认为这是商业利益驱动决策,认为 MinIO 在没有提前通知的情况下,强制推动商业化是一种特洛伊木马式更新。

社区用户对官方的解释并不买账,认为 Web 控制台的资源占用低,维护成本有限,官方理由难以令人信服。

社区反应与应对的措施

面对 MinIO 社区版 Web 管理界面被删事件,社区迅速做出反应。一方面启动了名为 OpenMaxIO 的分支项目,试图恢复被移除的功能;另一方面,SeaweedFS/Garage 等替代方案也获得更多的关注。

部分社区成员在 GitHub 上对相关的 PR 进行质疑,认为更新后 Web 管理界面只剩下烦人的弹窗,迫使用户只能使用命令行管理 MinIO。然而,MinIO 官方却锁定了该 PR 的讨论并限制其发言权限,引发了社区的不满。

其影响与反思

此次事件对 MinIO 社区版的用户体验和项目生态造成了显著影响。对于非技术用户及中小团队来说,Web 管理界面删除无疑提高了操作门槛,增加适配成本。

从更深的层次来看,这一事件暴露开源项目在商业化道路上的两难选择。开源项目需要在商业利益与开源精神之间找到平衡,否则可能自毁长城。MinIO 此次更新被部分用户视为一种阳谋,通过削弱社区版功能来引导用户转向付费版本,这种短视的策略可能会损害社区信任,导致用户流失。

开源项目的未来不应是商业利益附庸,而应是技术与协作共生。MinIO 下一步决策将决定其在对象存储领域的地位,也关系到其开源生态稳定与发展。对于用户而言,此事件是一记警钟,提醒大家在采用开源基础设施时,应该提前做好应对方案,关注项目的未来发展和授权策略变化,避免陷入类似困境。

最后杜老师提醒使用 Docker 部署 MinIO 的用户,如需要使用 Web 管理页面,可以部署标签为 minio/minio:RELEASE.2025-04-22T22-12-26Z,该版本为具有 Web 管理页面的最后版本。

如何使用 PHP 脚本筛选去不图床已到期用户邮箱

作者 Teacher Du
2025年10月16日 00:00

因为图床程序暂不支持套餐到期通知,需要杜老师定期统计到期的用户,再通过邮箱发通知。每次统计时操作较麻烦,为了方便统计用户,尝试用 PHP 编写一个页面,可以筛选去不图床到期用户邮箱。

公告

去不图床会在用户的容量套餐到期后,发送邮件通知「请确保注册邮箱可用性」

通知内容包含数据到期时间「一般为容量到期后七天」如 5 月 24 日到期的用户,我们会保留数据到 5 月 31 日。

超过保留期限的数据会从数据库清除,但数据依然会保留在备份节点中。

为了方便用户从备份节点中恢复数据,去不图床定期「每半小时」同步至 OneDrive,需要的小伙伴可以访问 共享链接 获取备份数据,页面密码为 7bu.top

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
// 数据库配置
$host = 'localhost'; // 数据库主机
$username = 'your_username'; // 数据库用户名
$password = 'your_password'; // 数据库密码
$database = 'your_database'; // 数据库名称

// 创建数据库连接
$conn = new mysqli($host, $username, $password, $database);

// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}

// 执行查询
$sql = "SELECT * FROM `users` WHERE `capacity` = 0.00 AND `size` != 0.0000";
$result = $conn->query($sql);

// 检查是否有结果返回
if ($result->num_rows > 0) {
// 打开文件准备写入
$file = fopen("1.txt", "w");

// 写入表头
$headers = [];
while ($fieldinfo = $result->fetch_field()) {
$headers[] = $fieldinfo->name;
}
fwrite($file, implode("\t", $headers) . "\n");

// 写入每一行数据
while ($row = $result->fetch_assoc()) {
fwrite($file, implode("\t", $row) . "\n");
}

// 关闭文件句柄
fclose($file);

echo "数据已成功写入 1.txt";
} else {
echo "没有匹配的记录";
}

// 关闭数据库连接
$conn->close();
?>

注意:以上是一个完整 PHP 脚本,用于连接 MySQL 数据库、执行 SQL 查询并将结果写入到 1.txt 文件中。

使用说明

  1. 将上述的代码保存为一个.php 文件如 export_users.php

  2. 替换脚本中的数据库信息 your_username/your_password/your_database 为您自己的实际数据库凭证;

  3. 确保运行该脚本的服务器支持 PHP 并且可以访问 MySQL 数据库;

  4. 当通过浏览器或命令行访问这个 PHP 页面时,它会执行查询并将结果写入到当前目录下的 1.txt 文件。

输出示例

1
2
3
4
email
123123123@qq.com
456456456@qq.com
789789789@qq.com

注意:确保 PHP 环境有权限写入目标文件「如 1.txt

Focalboard 开源项目管理的有力工具

作者 Teacher Du
2025年10月10日 00:00

在当今数字化协作时代,高效的项目管理工具对于团队的成功至关重要。Focalboard 作为一款开源的项目管理软件,正在逐渐崭露头角,受到了众多团队和个人青睐。

简介

Focalboard 是由 Mattermost 开发的功能强大开源项目管理和协作工具,能够以看板形式灵活地组织任务,创建详细笔记,并方便地共享文件。它支持创建各种类型的笔记页面,记录数字、链接、文字等多种类型的信息,且内置多种模板供用户直接套用编辑:

Focalboard 具有以下的特点:一是开源免费,数据自行托管,用户可将其部署在自己本地服务器上,确保数据安全可靠;二是支持多种平台,包括 Windows/macOS/Linux/iOS 和 Android 等,方便用户随时随地接入项目;三是具备丰富功能,如拖放卡、进出口板、按状态或着截止日期等过滤板和任务,以及支持多人协作、文件共享、团队和直接消息等;四是界面简洁易用,操作便捷,易于上手:

安装

使用 Docker 安装 Focalboard。

输入命令 docker run -it -p 80:8000 mattermost/focalboard 后,等待安装完成。安装成功后在浏览器输入 localhost:8000 即可进入 Focalboard 的登录界面。

或直接下载安装包安装。

可前往 Focalboard 官方网站,下载适用于不同操作系统的个人桌面版安装包,按照提示完成安装。

使用

在 Focalboard 的欢迎屏幕上,用户可选择创建新的团队并设置团队名称。

进入团队页面,点击创建看板按钮,根据需要选择看板类型,例如项目任务、内容日历、公司目标与 OKR、路线图等模板创建看板,也可创建空白看板自行设计。

还可设置看板名称、描述以及背景色等信息。

在看板上,通过点击添加卡片按钮来创建新任务卡片。

可以在卡片中输入任务描述,并为卡片添加标签、截止日期、优先级等属性,以便更好对任务进行分类和管理。

同时,可以将任务卡片分配给团队中的不同成员,明确责任分工。

团队成员可在看板上实时查看和编辑任务卡片,共同推进项目进度。

在卡片添加评论和讨论,提及队友以引起他们的注意,分享想法意见,实现高效协作沟通。

此外,还可以通过 Focalboard 的团队和直接消息功能,进一步加强团队成员之间的交流。

Focalboard 还支持文件共享,用户可以在任务卡片中上传相关文件,方便团队的成员查阅和下载。

可对看板进行筛选、分组、排序,快速找到所需的任务和信息。

还能查看历史记录、备份快照等等,确保数据安全性和可恢复性。

总结

Focalboard 作为一款开源的项目管理工具,凭借其丰富的功能、简洁易用的操作界面及数据自托管等优势,为个人和团队提供一个高效、可靠的项目管理和协作平台。

无论小型团队还是大型企业,都可利用 Focalboard 来规划项目、分配任务、跟踪进度并实现顺畅的协作,从而提高工作效率和项目成功率。

NodePass 开源的隧道工具重新定义内网穿透

作者 Teacher Du
2025年10月4日 00:00

NodePass 是一个开源网络隧道工具,其基于 Go 语言开发,目标是让两台机器之间的通信变得简单又安全。想象一下,您有一台内网 Web 服务器,想让远在千里之外同事访问,NodePass 就能搭一座隐形的桥,把数据安全送过去。

简介

它的工作方式非常巧妙,用一个未加密 TCP 通道来传递信号,然后通过另一个支持加密的数据通道把实际内容传过去。

您可以把它跑在服务器模式,接受外来连接,也可跑客户端模式,去连别人的服务器。

整个过程配置简单,资源占用较低,还支持 Docker 部署。

作为 GitHub 上开源项目,NodePass 用 MIT 许可证,代码全部公开,社区也挺活跃。

官网

项目官网地址:

特色

开源免费:代码全在 Github 上,透明并且省钱。

简单易用:不用编写配置文件,命令行一敲就能跑。

轻量省心:从树莓派到服务器,在哪里都能跑。

功能硬核:支持 TCP 以及 UDP,多种加密。

安装

NodePass 提供 Docker 镜像,可以使用下面命令部署,以服务器模式运行:

1
2
docker run -d --name nodepass-server -p 10101:10101 -p 8080:8080 \
ghcr.io/yosebyte/nodepass server://0.0.0.0:10101/0.0.0.0:8080

以客户端模式运行:

1
2
3
4
5
docker run -d --name nodepass-client \
-e MIN_POOL_CAPACITY=32 \
-e MAX_POOL_CAPACITY=512 \
-p 8080:8080 \
ghcr.io/yosebyte/nodepass client://nodepass-server:10101/127.0.0.1:8080

探索网络实验的神器 Mininet

作者 Teacher Du
2025年9月28日 00:00

在计算机网络的学习与研究领域,Mininet 是款极具价值的工具。它就像是一个迷您网络世界的构建者,为我们提供便捷的网络实验环境。本文将带您深入了解 Mininet 魅力所在,并手把手教您安装与使用它。

简介

Mininet 是一个用于创建虚拟化网络环境的平台。

它能够在一台计算机上快速构建出包含多个交换机、主机、路由器等网络设备拓扑结构。

对于网络研究人员、开发者以及网络课程的学生来说,Mininet 是一个理想实验平台。

通过它可以模拟大规模网络环境,进行各种网络协议研究、网络应用的开发测试以及网络教学演示等。

例如,如果您想研究一种新的网络路由算法,借助 Mininet 就可以轻松搭建出实验所需的网络场景,无需搭建实体网络设备,大大节省了成本和时间。

它的核心优势在于轻量级以及灵活性。Mininet 是基于 Linux 的用户模式 Linux 网络命名空间技术实现的,这使得它能很方便地在各种 Linux 系统上运行。

而且,Mininet 的网络拓扑结构可以灵活定制,无论是简单的链式拓扑、树形拓扑,还是复杂的自定义拓扑,都能通过简单的配置文件或命令行参数来实现。

同时,Mininet 还支持多种网络仿真工具集成,例如 Wireshark 等,方便针对网络流量进行分析。

安装

安装 Mininet 的过程相对简便,但需要确保您的系统满足一定的前提条件。以下是基于 Ubuntu 系统安装步骤。

首先,需要更新系统的软件包列表。在终端输入命令 sudo apt update,让系统获取最新软件包信息。

然后安装必要的依赖库。可通过运行 sudo apt -y install build-essential autoconf automake libtool pkg-config gawk git python python-pip python-dev tcpdump wireshark sqlite3 curl bzip2 openvswitch-datapath-dkms openvswitch-switch openvswitch-common 命令,可一次性安装这些依赖,它们是 Mininet 正常运行和后续功能扩展的基础。

接下来就是安装 Mininet 本身。可从 Mininet 的官方仓库克隆代码,可使用命令 git clone git://github.com/mininet/mininet,然后进入 Mininet 目录中,再运行 mininet/util/install.sh -a 命令进行安装。这个安装脚本会自动完成编译和安装过程,在安装完成后,系统会提示安装成功的相关信息。

使用

安装 Mininet 后,就可以开始体验它强大的功能了。最基本的使用方式是通过命令行来创建和操作网络拓扑。

创建网络拓扑。Mininet 提供了简单的命令行参数来快速创建常见的网络拓扑。

如运行命令 sudo mn,就会自动创建一个包含两个主机、一个交换机和一个控制器的简单网络拓扑。

主机间通过交换机进行通信,控制器用于管理交换机行为。

如果想要创建更复杂的拓扑,可使用--topo 参数。如使用命令 sudo mn --topo linear,4,就会创建四个主机呈线性连接的拓扑,主机 1 连接到交换机 1,交换机 1 连接到主机 2,依此类推,形成一条链式结构。

操作网络设备。创建好网络拓扑后,Mininet 会进入交互式命令行界面。在这个界面中,可对网络设备进行各种操作。

例如,可以通过 h1 命令进入主机 1 的命令行界面,在主机 1 上执行网络相关的命令,如 ping h2 来测试主机 1 和主机 2 之间的连通性。如果网络配置正确,应该可以看到主机 1 向主机 2 发送 ICMP 请求并收到回复的信息,这就表明网络通信是正常的。

对于交换机可以使用 ovs-vsctl 命令来查看和配置交换机的端口信息、流表等等。例如,ovs-vsctl show 命令可显示交换机的详细信息,包括交换机的名称、连接主机、端口号等。

可自定义脚本。当然,Mininet 也支持使用 Python 脚本来自定义更复杂的网络行为和实验场景。您可以编写自己的 Python 脚本来定义网络拓扑、配置网络设备参数及实现特定的网络功能。

例如,您可以通过继承 Mininet 的拓扑类,创建个包含多个子网络、不同带宽和延迟设置的复杂拓扑,并在脚本中对交换机的流表进行编程,实现特定流量转发策略,例如负载均衡、流量过滤等等。这种方式为用户提供了极大的自由度,能够满足各种个性化的网络实验需求。

总结

总之,Mininet 可作为一款网络实验工具,凭借简单易用、功能强大特点,在网络领域有着广泛的应用。

无论是初学者入门网络知识,还是专业研究人员进行深度网络研究,Mininet 都是一个不可或缺的得力助手。通过掌握 Mininet 安装与使用方法,就可以开启一段精彩的网络实验之旅,探索网络世界无限奥秘。

Ubuntu 系统无法通过 pip 命令安装 Python 库问题解决

作者 Teacher Du
2025年9月22日 00:00

为了更好的执行 Python 脚本,杜老师习惯使用 Ubuntu 系统,不过在安装 Python 库时经常报错。收集了安装 Python 库的报错信息,并整理了解决办法,供需要的小伙伴们参考。

问题提示

这里以上一篇《使用 Python 脚本实现图片相似度匹配》文中代码为例,首次执行时的报错信息如下:

1
2
3
4
5
penn@penn-VMware-Virtual-Platform:~/图片$ python3 1.py
Traceback (most recent call last):
File "/home/penn/图片/1.py", line 4, in <module>
import imagehash
ModuleNotFoundError: No module named 'imagehash'

根据报错信息,提醒找不到 imagehash 模块,使用 pip3 命令安装需要的模块,结果又出现了错误信息。这个信息表明正在尝试在一个由操作系统管理的 Python 环境中直接安装 Python 相关的包,为了保证系统 Python 环境的稳定性和安全性而采取限制措施:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
penn@penn-VMware-Virtual-Platform:~/图片$ pip3 install imagehash
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.

If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.

If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.

See /usr/share/doc/python3.13/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

解决方法

解决的方法有很多,这里推荐使用虚拟环境。因为使用虚拟环境可以避免直接修改系统的 Python 环境,同时方便管理依赖。按照提示创建一个虚拟环境,使用 python3 -m venv myenv 来创建虚拟环境,使用 source myenv/bin/activate 激活虚拟环境:

1
2
penn@penn-VMware-Virtual-Platform:~/图片$ python3 -m venv myenv
penn@penn-VMware-Virtual-Platform:~/图片$ source myenv/bin/activate

在激活虚拟环境后,使用以下命令安装所需的包。安装完成后运行命令 deactivate,退出虚拟环境:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(myenv) penn@penn-VMware-Virtual-Platform:~/图片$ pip install imagehash
Collecting imagehash
Downloading ImageHash-4.3.2-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting PyWavelets (from imagehash)
Downloading pywavelets-1.8.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (9.0 kB)
Collecting numpy (from imagehash)
Downloading numpy-2.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (62 kB)
Collecting pillow (from imagehash)
Downloading pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl.metadata (8.9 kB)
Collecting scipy (from imagehash)
Downloading scipy-1.15.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (61 kB)
Downloading ImageHash-4.3.2-py2.py3-none-any.whl (296 kB)
Downloading numpy-2.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.1/16.1 MB 21.3 MB/s eta 0:00:00
Downloading pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl (4.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.6/4.6 MB 38.6 MB/s eta 0:00:00
Downloading pywavelets-1.8.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.5/4.5 MB 38.6 MB/s eta 0:00:00
Downloading scipy-1.15.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (37.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 37.3/37.3 MB 41.4 MB/s eta 0:00:00
Installing collected packages: pillow, numpy, scipy, PyWavelets, imagehash
Successfully installed PyWavelets-1.8.0 imagehash-4.3.2 numpy-2.2.5 pillow-11.2.1 scipy-1.15.2

使用 Python 脚本实现图片相似度匹配

作者 Teacher Du
2025年9月16日 00:00

随着相机像素越来越大,图片体积也变大了。在图片处理中,较大的文件体积会影响性能,因此杜老师会先生成缩略图,筛选完成后再通过 Python 脚本实现图片相似度匹配。这里是一个简单的示例,供需要的小伙伴们参考。

脚本说明

以下是个基于 Python 的脚本,使用 PIL 以及 imagehash 库来实现。

遍历目录 A 中所有图片。

在目录 B 中查找相似的图片「通过感知哈希算法判断」

如找到匹配项,则将图片复制到目录 C,并以目录 A 图片的名字命名。

安装依赖

1
pip install pillow imagehash

注意:在运行脚本前,需安装所需的 Python 库。

脚本示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import os
import shutil
from PIL import Image
import imagehash

# 定义目录路径
dir_a = 'path/to/dirA'
dir_b = 'path/to/dirB'
dir_c = 'path/to/dirC'

# 设置相似度阈值(越小越严格)
threshold = 5

# 获取图片的感知哈希值
def get_image_hash(filepath):
try:
return imagehash.phash(Image.open(filepath))
except Exception as e:
print(f"无法处理文件 {filepath}: {e}")
return None

# 判断两个哈希值是否相似
def is_similar(hash1, hash2):
return hash1 - hash2 <= threshold

# 确保目标目录存在
os.makedirs(dir_c, exist_ok=True)

# 遍历目录 A
for filename in os.listdir(dir_a):
file_a_path = os.path.join(dir_a, filename)

# 检查是否为图片
if not filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
continue

hash_a = get_image_hash(file_a_path)
if hash_a is None:
continue

# 遍历目录 B 寻找相似图片
for b_filename in os.listdir(dir_b):
file_b_path = os.path.join(dir_b, b_filename)

# 检查是否为图片
if not b_filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
continue

hash_b = get_image_hash(file_b_path)
if hash_b is None:
continue

if is_similar(hash_a, hash_b):
# 构建目标路径
file_c_path = os.path.join(dir_c, filename)
# 复制并重命名文件
shutil.copy(file_b_path, file_c_path)
print(f"已找到匹配: {filename} -> {b_filename}, 已复制到 {file_c_path}")

注意:将 dir_a, dir_bdir_c 替换为实际路径;threshold 控制图像相似度阈值,可以根据需要调整;支持多种常见格式图片文件;使用 imagehash.phash 进行感知哈希的比较,适合用于识别视觉上接近的图片。

运行效果

1
2
3
4
5
(myenv) penn@penn-VMware-Virtual-Platform:~/图片$ python3 1.py
已找到匹配: image105.jpg -> 1745928332994.jpg, 已复制到 c/image105.jpg
已找到匹配: image001.jpg -> 1745736425856.jpg, 已复制到 c/image001.jpg
已找到匹配: image017.jpg -> 1745736425221.jpg, 已复制到 c/image017.jpg
已找到匹配: image085.jpg -> 1745928334851.jpg, 已复制到 c/image085.jpg

注意:脚本运行过程可能会有错误提示,需要根据提示进行修复。

几种通过 FFmpeg 无损压缩视频的方法

作者 Teacher Du
2025年9月10日 00:00

北京这边天气不错,特别适合骑行。杜老师拿出了压箱底的全景相机,打算录制一段沿途景色,结果压制出的文件体积很大。之前分享过通过 FFmpeg 来压缩视频的方法,这次整理了更多的方法,供需要的小伙伴们参考!

写在前面

如果需要了解 FFmpeg 的安装方法,可以浏览《如何使用 FFmpeg 来压缩视频》一文,里面有详细介绍如何在 Linux 系统安装 FFmpeg。

如果需要在 Windows 系统上安装 FFmpeg,可以直接至官方下载安装包「或在评论区中留言」

用 CRF 参数

原理:CRF 是 H.264 编码器中用于控制视频质量的一个参数,数值越小画质越高,体积越大,一般取值范围为 18-28,默认值 23,18 是视觉无损。

命令示例:ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset veryslow -c:a copy output.mp4 此命令指定了视频编码器为 libx264,设置 CRF 的参数为 18,且使用 veryslow 预设以进一步提高编码质量,音频部分直接复制。

更改格式

原理:在不改变媒体编码的情况下,改变媒体封装格式,通常转换后的大小基本相同,一般不会出现过大差距,如果大小差距过大,需要检查媒体文件的完整性。

命令示例:ffmpeg -i input.mp4 -codec copy output.mp4 可直接更改封装格式,无需重新编码。

调分辨率

原理:降低视频分辨率可显著减小文件体积,对于对视频画质要求不是特别高,或需要在低分辨率设备上播放的场景比较适用。

命令示例:ffmpeg -i input.mp4 -vf scale=1280:720 -c:a copy output.mp4 该命令会将视频的分辨率调整为 1280×720 像素,音频的部分不进行重新编码,从而实现压缩体积目的。

调比特率

原理:降低视频比特率可以在保持原始分辨率的同时减小文件体积,适当减少比特率能够有效的减少文件大小。

命令示例:ffmpeg -i input.mp4 -b:v 2500k -c:a copy output.mp4 此命令将视频比特率设置为 2500kbps,音频流则直接复制。

用 HEVC 编码

原理:HEVC 是一种更高效的视频编码格式,在同等画质下,相较于 H.264 编码,可使文件体积更小。

命令示例:ffmpeg -i input.mp4 -c:v libx265 -crf 28 -preset medium -c:a aac -b:a 128k output.mp4 其中-c:v libx265 指定输出的视频编码器为 libx265-crf 28 指定 CRF 参数为 28-preset medium 平衡视频质量和压缩速度,-c:a aac -b:a 128k 表示音频部分使用 AAC 编码,并设置了音频码率为 128kbps。

天津游记「多图预警」

作者 Teacher Du
2025年9月4日 00:00

刚从合肥返京,就收到了天津出差任务。虽然京津距离不远,但杜老师平时工作较忙,周末一般都在家睡懒觉,所以也是想着趁此机会游玩一下!分享给未来过天津的小伙伴,大家来云旅游~

天津之旅

天津是中国北方的一座历史文化名城,同样是直辖市之一,有着丰富的历史底蕴和独特城市风貌。

天津建筑风格多样,中西合璧,例如五大道保存着众多西式建筑,意大利风情街则充满了浓郁异国情调。

此外,天津还有着众多的名胜古迹,例如盘山、独乐寺等等自然与人文景观,展现了其深厚文化底蕴。

天津的旅游特色主要体现在其独特的文化韵味和美食文化上,是体验津味文化与北方风情绝佳之地。

天津美食文化源远流长,如狗不理包子、煎饼果子等等传统小吃闻名全国,散发着独特的魅力。

此外,天津的相声文化也独具特色,古文化街、泥人张彩塑等更是让人感受到天津的艺术之美。

游记留影

天津的民国时代的建筑较多,也是别有一番风味:

张学良故居的餐厅:

张学良和赵四小姐卧室:

顶层是个舞厅,本来拍了歌厅整体,结果有个大爷入镜了,所以只有观众席给大家看看:

这叫聚丰当铺,可以清楚的观察到民国时代当铺格局:

这个是鹤竹堂药铺,据说是曾给慈禧光绪看病的御医所开:

皇宫舞厅,为什么杜老师想到依萍:

天津市特别警察局,杜老师也想拍亮堂点的,这里边就是暗光线,可能是想震慑罪犯:

瑞蚨祥成衣店,里边格局也很大气漂亮,就是衣服看着有一点少,毕竟都叫成衣店了,怎么衣服比杜老师的都要少:

成衣店顾客等待位,本来不想放这张的,但是这个窗和格局吸引了杜老师,所以还是放上来了:

这个是鼎章照相馆,杜老师除了会说漂亮外,不会说别的了,原谅杜老师言辞的匮乏:

民国时代诊所,不过感觉杜老师小时候诊所也长这个样子,可能杜老师也挺老的了:

这个是商会俱乐部,有很多张,但里边的光线不是很好,只有这张看起来还是不错的:

国父孙中山办公室,右上角露出来的点点就是他照片,不过相机没有全部收录进去,右侧还有一个很好看的壁炉,哈哈:

头一次看见民国的封条,必须拍照一张,杜老师一直以为封条只要有个封字就可以,没想到要写这么多东西:

这个是春和大戏院,张学良故居进门开始可以玩剧本杀的,好多人在走来走去的找线索,杜老师没有好意思参与进去,不过感觉很好玩的,大家有兴趣的可以参观的同时玩这个游戏。这个戏院里还有相声表演的,不过是固定的时间,杜老师忙着赶下一个参观地,所以并没有听相声,可惜:

最后用民国画报小广告来做结尾,张学良故居以及范竹斋故居之旅就结束啦:

全都是人,大家都在门口想拍出满意的照片,杜老师就只匆匆闪过了,毕竟杜老师没有高超的运镜技术:

这个是最后的晚餐,教堂里也好多的人,想找出一张没人的照片实在是太难了:

感觉这个吊灯和玻璃都漂亮的很,但是杜老师对宗教理解不深,不知道这个里边画面的含义,要是有解说就好了:

这个好像就是主教传教的地方吧,用隔离带围着,杜老师进不去,不过感觉就很神圣:

据说是溥仪和妃子们被从故宫赶出来之后住的地方,感觉就是个小洋楼:

溥仪和妃子们的小餐厅:

这个是溥仪妃子文绣的卧室:

这个是皇后婉容的卧室,感觉他们的床都好小啊,杜老师睡在上边都怕掉下来:

这个是溥仪的书房:

张园里也有剧本杀,每个时间段也有节目表演的,但是杜老师依然没赶上,时间太紧张了,下次一定要试试看:

最后用杜老师们伟大领袖毛主席给这段旅程做结尾,这个展区是爸爸妈妈他们那个年代结婚的布景,感觉爸爸妈妈他们来看肯定很有感触:

合肥游记「多图预警」

作者 Teacher Du
2025年8月29日 00:00

时隔一年,又一次来到了安徽省会——合肥。这次出差的时间很灵活,杜老师有半天时间可以到附近景区逛一逛,就特地带了单反相机拍了些照片。本文整理了几张特色的美照,特邀杜老师的另一半帮忙配的介绍文,感兴趣的小伙伴可进来一看!

合肥之旅

合肥是安徽的省会,简称庐州,有着 2500 多年建城史,是国家级历史文化名城,曾是三国时期兵家必争之地,也是包拯、李鸿章等历史名人故乡。

这里历史遗迹众多,例如三河古镇,因丰乐河、小南河三水流贯其间而得名,是合肥唯一 5A 景区,古镇历史悠久,古建众多,青砖灰瓦,小桥流水,宛如一幅淡雅的水墨画。

合肥不仅有深厚的历史文化底蕴,还有丰富的自然景观和现代旅游资源。

包公园是纪念北宋清官包拯而建,园内有包公祠、包公墓等景点,游客可以在此了解包拯的生平事迹和清正廉明精神。

徽园则集中展示了安徽各地的著名风景和徽派建筑,游客可半天时间领略安徽的徽风古韵。

合肥美食也是一大特色,庐州烤鸭、李鸿章大杂烩、合肥三鲜等等美食让人回味无穷。无论是对历史文化感兴趣的游客,还是喜欢自然风光和娱乐体验的游客,合肥都能满足需求。

游记留影

不需要买票哦,可直接进,不过周一闭馆,去的话要注意:

感觉徽式古建筑石雕木雕都很精致且应用广泛,都有相关典故以及故事。房梁窗户等很多地方都有精致的雕刻:

这个是徽式的古代祠堂模型,看起来很大气,请忽略杜老师不专业的摄影技术:

这个是古人的牌坊,看着真是方方正正,哦对,传说中的贞节牌坊貌似也长这个样子:

这个博物馆里,金子本来不多,这个碗是最好看滴:

爬了很多个塔,其中有很大一部分是不带电梯的。当时走到这里的时候人已经快累屁了,犹豫了很久不想爬上去,结果过来了一队旅游团,导游用喇叭喊:大家不用担心,这个塔有电梯。瞬间冲到塔里坐电梯美极了:

从塔上俯视图一张,景色还是很不错的,哇哈哈哈。下来的时候没有坐电梯,想着看看各层景色,结果有很多不知道有电梯的,杜老师听到大家边爬边骂街,上的时候在骂,下的时候也骂:

这是包公祠的井叫廉泉,根据传说,这个井可检测贪官,有个贪官喝了这个井水开始头痛,经查,他确实是贪官,所以有了这个名字:

打车去李府的时候司机告诉杜老师这里很出名,那必须要打卡,不过实在是太大了,且日头晒得很:

位于古逍遥津,emmmm 杜老师没有拍墓碑和坟茔,大家看看牌坊好了:

李府李鸿章的人物雕塑,本来是想拍大门口的牌匾的,但是人实在太多了。这个不需要买门票,但是需要网络预约免费门票,合肥这一点比较好,好多景点是免费的,对学生党也很友好:

让我们看下晚清时代的家具:

清朝各级官员胸前绣的动物,具体哪个代表哪个,还请百度,不过当时古人绣工是真的好,超好看的:

这个美术馆给杜老师最大的印象就是里边超级凉快,超级超级,凉快发冷:

欣赏艺术画作:

继续欣赏艺术画作,杜老师真是一点艺术细菌都没有,完全看不出这画的含义:

这个旋转楼梯拍照应该会很出片,但是杜老师的摄影技术也就只能到这里了,凑合着看看吧:

同样不需要预约而且不需要门票,直接进就可以,不逛这个杜老师都不知道这么多的名人竟然都是安徽人:

这个楼层有个展区是做了仿古街区的各类商店,特别有那个氛围感,就是人太多了,想拍下整个街景总有人入镜,挑了很久也就剩了这么一张:

仿客栈以及瓷器店,很有古风韵味:

一层是一个蜡像馆,有很多的出名人物都在这里,看到这个大象大家应该就知道是哪个了吧,这就是传说中曹冲称象:

这个就是包公断案现场蜡像,杜老师深深觉得喜欢看蜡像馆的,可来这里,比蜡像馆省钱,氛围还好:

三河古镇俯拍,这个是杜老师爬上没有电梯的塔才拍到的,这个塔不光没电梯!它的楼梯还特别窄,只可以放下半只脚,杜老师一路外八着上下,就像个大螃蟹:

古镇胡同,很难得有张没有行人的照片,热闹和静谧共存的徽式小镇:

徽式游廊,好多游人在另一边休息,微风吹拂:

除了这个马囧囧的样子让杜老师觉得比较好玩,这个马车厢小的出乎杜老师意料,杜老师小时候看电视剧他们出行乘坐马车还以为里边很大的,这个车厢杜老师感觉对胖子很不友好,进去就塞满了。原来古人的马车这么小的吗:

酿酒步骤,杜老师震惊的是他们真的有自己酿的酒摆在大缸里,但是看着黑漆漆的,用玻璃封住了,闻不到是什么味道,不知道还需不需要过滤:

回程坐了游艇,细细看了河两边的建筑,感觉是超级好,感觉每个时代的建筑都有它独特魅力:

❌
❌