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

因为图床程序暂不支持套餐到期通知,需要杜老师定期统计到期的用户,再通过邮箱发通知。每次统计时操作较麻烦,为了方便统计用户,尝试用 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 文件中。 使用说明 将上述的代码保存为一个.php 文件如 export_users.php; 替换脚本中的数据库信息 your_username/your_password/your_database 为您自己的实际数据库凭证; 确保运行该脚本的服务器支持 PHP 并且可以访问 MySQL 数据库; 当通过浏览器或命令行访问这个 PHP 页面时,它会执行查询并将结果写入到当前目录下的 1.txt 文件。 输出示例 1 2 3 4 email 123123123@qq.com 456456456@qq.com 789789789@qq.com 注意:确保 PHP 环境有权限写入目标文件「如 1.txt」

2025/10/16
articleCard.readMore

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

在当今数字化协作时代,高效的项目管理工具对于团队的成功至关重要。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 来规划项目、分配任务、跟踪进度并实现顺畅的协作,从而提高工作效率和项目成功率。

2025/10/10
articleCard.readMore

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

NodePass 是一个开源网络隧道工具,其基于 Go 语言开发,目标是让两台机器之间的通信变得简单又安全。想象一下,您有一台内网 Web 服务器,想让远在千里之外同事访问,NodePass 就能搭一座隐形的桥,把数据安全送过去。 简介 它的工作方式非常巧妙,用一个未加密 TCP 通道来传递信号,然后通过另一个支持加密的数据通道把实际内容传过去。 您可以把它跑在服务器模式,接受外来连接,也可跑客户端模式,去连别人的服务器。 整个过程配置简单,资源占用较低,还支持 Docker 部署。 作为 GitHub 上开源项目,NodePass 用 MIT 许可证,代码全部公开,社区也挺活跃。 官网 项目官网地址: https://github.com/yosebyte/nodepasshttps://github.com/yosebyte/nodepass 特色 开源免费:代码全在 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

2025/10/4
articleCard.readMore

探索网络实验的神器 Mininet

在计算机网络的学习与研究领域,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 安装与使用方法,就可以开启一段精彩的网络实验之旅,探索网络世界无限奥秘。

2025/9/28
articleCard.readMore

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

为了更好的执行 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

2025/9/22
articleCard.readMore

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

随着相机像素越来越大,图片体积也变大了。在图片处理中,较大的文件体积会影响性能,因此杜老师会先生成缩略图,筛选完成后再通过 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_b 和 dir_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 注意:脚本运行过程可能会有错误提示,需要根据提示进行修复。

2025/9/16
articleCard.readMore

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

北京这边天气不错,特别适合骑行。杜老师拿出了压箱底的全景相机,打算录制一段沿途景色,结果压制出的文件体积很大。之前分享过通过 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。

2025/9/10
articleCard.readMore

天津游记「多图预警」

刚从合肥返京,就收到了天津出差任务。虽然京津距离不远,但杜老师平时工作较忙,周末一般都在家睡懒觉,所以也是想着趁此机会游玩一下!分享给未来过天津的小伙伴,大家来云旅游~ 天津之旅 天津是中国北方的一座历史文化名城,同样是直辖市之一,有着丰富的历史底蕴和独特城市风貌。 天津建筑风格多样,中西合璧,例如五大道保存着众多西式建筑,意大利风情街则充满了浓郁异国情调。 此外,天津还有着众多的名胜古迹,例如盘山、独乐寺等等自然与人文景观,展现了其深厚文化底蕴。 天津的旅游特色主要体现在其独特的文化韵味和美食文化上,是体验津味文化与北方风情绝佳之地。 天津美食文化源远流长,如狗不理包子、煎饼果子等等传统小吃闻名全国,散发着独特的魅力。 此外,天津的相声文化也独具特色,古文化街、泥人张彩塑等更是让人感受到天津的艺术之美。 游记留影 天津的民国时代的建筑较多,也是别有一番风味: 张学良故居的餐厅: 张学良和赵四小姐卧室: 顶层是个舞厅,本来拍了歌厅整体,结果有个大爷入镜了,所以只有观众席给大家看看: 这叫聚丰当铺,可以清楚的观察到民国时代当铺格局: 这个是鹤竹堂药铺,据说是曾给慈禧光绪看病的御医所开: 皇宫舞厅,为什么杜老师想到依萍: 天津市特别警察局,杜老师也想拍亮堂点的,这里边就是暗光线,可能是想震慑罪犯: 瑞蚨祥成衣店,里边格局也很大气漂亮,就是衣服看着有一点少,毕竟都叫成衣店了,怎么衣服比杜老师的都要少: 成衣店顾客等待位,本来不想放这张的,但是这个窗和格局吸引了杜老师,所以还是放上来了: 这个是鼎章照相馆,杜老师除了会说漂亮外,不会说别的了,原谅杜老师言辞的匮乏: 民国时代诊所,不过感觉杜老师小时候诊所也长这个样子,可能杜老师也挺老的了: 这个是商会俱乐部,有很多张,但里边的光线不是很好,只有这张看起来还是不错的: 国父孙中山办公室,右上角露出来的点点就是他照片,不过相机没有全部收录进去,右侧还有一个很好看的壁炉,哈哈: 头一次看见民国的封条,必须拍照一张,杜老师一直以为封条只要有个封字就可以,没想到要写这么多东西: 这个是春和大戏院,张学良故居进门开始可以玩剧本杀的,好多人在走来走去的找线索,杜老师没有好意思参与进去,不过感觉很好玩的,大家有兴趣的可以参观的同时玩这个游戏。这个戏院里还有相声表演的,不过是固定的时间,杜老师忙着赶下一个参观地,所以并没有听相声,可惜: 最后用民国画报小广告来做结尾,张学良故居以及范竹斋故居之旅就结束啦: 全都是人,大家都在门口想拍出满意的照片,杜老师就只匆匆闪过了,毕竟杜老师没有高超的运镜技术: 这个是最后的晚餐,教堂里也好多的人,想找出一张没人的照片实在是太难了: 感觉这个吊灯和玻璃都漂亮的很,但是杜老师对宗教理解不深,不知道这个里边画面的含义,要是有解说就好了: 这个好像就是主教传教的地方吧,用隔离带围着,杜老师进不去,不过感觉就很神圣: 据说是溥仪和妃子们被从故宫赶出来之后住的地方,感觉就是个小洋楼: 溥仪和妃子们的小餐厅: 这个是溥仪妃子文绣的卧室: 这个是皇后婉容的卧室,感觉他们的床都好小啊,杜老师睡在上边都怕掉下来: 这个是溥仪的书房: 张园里也有剧本杀,每个时间段也有节目表演的,但是杜老师依然没赶上,时间太紧张了,下次一定要试试看: 最后用杜老师们伟大领袖毛主席给这段旅程做结尾,这个展区是爸爸妈妈他们那个年代结婚的布景,感觉爸爸妈妈他们来看肯定很有感触:

2025/9/4
articleCard.readMore

合肥游记「多图预警」

时隔一年,又一次来到了安徽省会——合肥。这次出差的时间很灵活,杜老师有半天时间可以到附近景区逛一逛,就特地带了单反相机拍了些照片。本文整理了几张特色的美照,特邀杜老师的另一半帮忙配的介绍文,感兴趣的小伙伴可进来一看! 合肥之旅 合肥是安徽的省会,简称庐州,有着 2500 多年建城史,是国家级历史文化名城,曾是三国时期兵家必争之地,也是包拯、李鸿章等历史名人故乡。 这里历史遗迹众多,例如三河古镇,因丰乐河、小南河三水流贯其间而得名,是合肥唯一 5A 景区,古镇历史悠久,古建众多,青砖灰瓦,小桥流水,宛如一幅淡雅的水墨画。 合肥不仅有深厚的历史文化底蕴,还有丰富的自然景观和现代旅游资源。 包公园是纪念北宋清官包拯而建,园内有包公祠、包公墓等景点,游客可以在此了解包拯的生平事迹和清正廉明精神。 徽园则集中展示了安徽各地的著名风景和徽派建筑,游客可半天时间领略安徽的徽风古韵。 合肥美食也是一大特色,庐州烤鸭、李鸿章大杂烩、合肥三鲜等等美食让人回味无穷。无论是对历史文化感兴趣的游客,还是喜欢自然风光和娱乐体验的游客,合肥都能满足需求。 游记留影 不需要买票哦,可直接进,不过周一闭馆,去的话要注意: 感觉徽式古建筑石雕木雕都很精致且应用广泛,都有相关典故以及故事。房梁窗户等很多地方都有精致的雕刻: 这个是徽式的古代祠堂模型,看起来很大气,请忽略杜老师不专业的摄影技术: 这个是古人的牌坊,看着真是方方正正,哦对,传说中的贞节牌坊貌似也长这个样子: 这个博物馆里,金子本来不多,这个碗是最好看滴: 爬了很多个塔,其中有很大一部分是不带电梯的。当时走到这里的时候人已经快累屁了,犹豫了很久不想爬上去,结果过来了一队旅游团,导游用喇叭喊:大家不用担心,这个塔有电梯。瞬间冲到塔里坐电梯美极了: 从塔上俯视图一张,景色还是很不错的,哇哈哈哈。下来的时候没有坐电梯,想着看看各层景色,结果有很多不知道有电梯的,杜老师听到大家边爬边骂街,上的时候在骂,下的时候也骂: 这是包公祠的井叫廉泉,根据传说,这个井可检测贪官,有个贪官喝了这个井水开始头痛,经查,他确实是贪官,所以有了这个名字: 打车去李府的时候司机告诉杜老师这里很出名,那必须要打卡,不过实在是太大了,且日头晒得很: 位于古逍遥津,emmmm 杜老师没有拍墓碑和坟茔,大家看看牌坊好了: 李府李鸿章的人物雕塑,本来是想拍大门口的牌匾的,但是人实在太多了。这个不需要买门票,但是需要网络预约免费门票,合肥这一点比较好,好多景点是免费的,对学生党也很友好: 让我们看下晚清时代的家具: 清朝各级官员胸前绣的动物,具体哪个代表哪个,还请百度,不过当时古人绣工是真的好,超好看的: 这个美术馆给杜老师最大的印象就是里边超级凉快,超级超级,凉快发冷: 欣赏艺术画作: 继续欣赏艺术画作,杜老师真是一点艺术细菌都没有,完全看不出这画的含义: 这个旋转楼梯拍照应该会很出片,但是杜老师的摄影技术也就只能到这里了,凑合着看看吧: 同样不需要预约而且不需要门票,直接进就可以,不逛这个杜老师都不知道这么多的名人竟然都是安徽人: 这个楼层有个展区是做了仿古街区的各类商店,特别有那个氛围感,就是人太多了,想拍下整个街景总有人入镜,挑了很久也就剩了这么一张: 仿客栈以及瓷器店,很有古风韵味: 一层是一个蜡像馆,有很多的出名人物都在这里,看到这个大象大家应该就知道是哪个了吧,这就是传说中曹冲称象: 这个就是包公断案现场蜡像,杜老师深深觉得喜欢看蜡像馆的,可来这里,比蜡像馆省钱,氛围还好: 三河古镇俯拍,这个是杜老师爬上没有电梯的塔才拍到的,这个塔不光没电梯!它的楼梯还特别窄,只可以放下半只脚,杜老师一路外八着上下,就像个大螃蟹: 古镇胡同,很难得有张没有行人的照片,热闹和静谧共存的徽式小镇: 徽式游廊,好多游人在另一边休息,微风吹拂: 除了这个马囧囧的样子让杜老师觉得比较好玩,这个马车厢小的出乎杜老师意料,杜老师小时候看电视剧他们出行乘坐马车还以为里边很大的,这个车厢杜老师感觉对胖子很不友好,进去就塞满了。原来古人的马车这么小的吗: 酿酒步骤,杜老师震惊的是他们真的有自己酿的酒摆在大缸里,但是看着黑漆漆的,用玻璃封住了,闻不到是什么味道,不知道还需不需要过滤: 回程坐了游艇,细细看了河两边的建筑,感觉是超级好,感觉每个时代的建筑都有它独特魅力:

2025/8/29
articleCard.readMore

探索扣子空间「邀请码不限量分享」

当今数字化浪潮中,人工智能正以前所未有的速度改变着我们的工作和生活方式。字节跳动于 2025 年 4 月 19 日推出的通用型 AI Agent 平台,无疑是这一变革中一颗璀璨新星,为我们带来了全新的 AI 协作办公体验。 扣子空间是啥 扣子空间是个致力于打造和 AI 协作工作全新工作方式的平台。 它基于字节跳动自研的豆包等国产大模型,用户只需将任务交给智能体,系统就能自动完成需求分析、任务拆解、工具调用、结果生成,支持从网页到文档等多种类输出形式,极大提升工作效率与执行力。 核心特点功能 双重模式协作,灵活应对任务需求 扣子空间提供了探索模式和规划模式。 探索模式下 AI 自主动态探索,完成速度更快,适用于时效性强的任务,例如查询最新资讯、获取实时数据等等;规划模式中 AI 深度思考,会先给出任务处理规划,经过用户确认后再行动,执行期间也需用户参与,适合高复杂性任务,如跨行业市场调研、复杂项目规划等等。这种双模式的协作机制,让用户可根据任务属性灵活选择,能更好地与 AI 协作完成工作。 强大任务处理能力,实现自动工作流程 扣子空间能够智能解析用户的一句话需求,精准识别意图并将其分解为多个具体任务。系统会自主调用浏览器、代码编辑器等工具执行任务,同时将每个思考和执行步骤清晰呈现,适时的与用户确认意图,确保执行方向准确。 最终输出完整结果报告,如 PPT、网页、飞书文档等等,真正实现了从需求输入到成果输出的全流程自动化。 专家级 Agent 生态,提供专业领域支持 平台内置多种领域的专业 Agent,例如华泰 A 股观察助手可生成每日股市早报并解答股票分析问题,用户研究专家可以协助进行用户研究资料深度分析。 这些专家级的 Agent 针对特定领域更专业,能处理更复杂任务,为不同领域的用户提供了便捷的专业服务。 丰富插件集成,无限拓展能力边界 扣子空间首批集成飞书多维表格、高德地图、图像工具、语音合成等 60 多款 MCP 模块化能力插件,未来还将支持开发者通过扣子开发平台发布自定义插件。 这些插件涵盖资讯阅读、旅游出行、效率办公等等众多方面,使扣子空间能够满足用户在不同场景下的各种需求,真正实现了功能的无限扩展。 应用场景广泛 扣子空间应用场景十分丰富,涵盖办公、学习、生活、电商、金融等等多个领域。 在办公场景中,可以帮助用户完成撰写文档、数据分析、制作 PPT 等各种工作任务;在学习场景下,能为学生和教育工作者提供课程资料收集、课件制作等辅助教学和学习服务;在生活场景里,可以用于制定旅游计划、查询信息等等;在电商场景中,能够进行商品推荐、用户行为分析;在金融场景下,可为股票分析、金融数据解读等等提供决策支持。 截图与邀请码 扣子空间界面非常简洁,登录后可通过左侧菜单进行任务管理,输入任务描述即可快速创建任务,开始任务后会在右侧显示 Agent 执行过程: 扣子目前机制每次能生成五个邀请码,杜老师会定期更新邀请码的使用状态,也请小伙伴使用后留言邀请码的编号,用尽后会发放新邀请码: 编号邀请地址备注 1https://www.coze.cn/space-preview?invite_code=PYFNVF90已用 2https://www.coze.cn/space-preview?invite_code=TLZTCXQN已用 3https://www.coze.cn/space-preview?invite_code=MCIEP9ZP已用 4https://www.coze.cn/space-preview?invite_code=H3M95JPB已用 5https://www.coze.cn/space-preview?invite_code=0XV6MVQ3已用 6https://www.coze.cn/space-preview?invite_code=39GL3SRL已用 7https://www.coze.cn/space-preview?invite_code=LGOQDX27已用 8https://www.coze.cn/space-preview?invite_code=W9G0P33F已用 9https://www.coze.cn/space-preview?invite_code=CEP1YQD5已用 10https://www.coze.cn/space-preview?invite_code=EFUJVJ95已用 11https://www.coze.cn/space-preview?invite_code=PGYMJSN5已用 12https://www.coze.cn/space-preview?invite_code=L33JT5Q7未用 13https://www.coze.cn/space-preview?invite_code=MCAKQH6N未用 14https://www.coze.cn/space-preview?invite_code=68TDVTNL未用 15https://www.coze.cn/space-preview?invite_code=PA55VHFS未用

2025/8/23
articleCard.readMore

在银河麒麟桌面操作系统 ARM 版上安装 KVM 虚拟化

KVM 是一种开源全虚拟化解决方案,能够在 Linux 系统运行多个操作系统。本文将详细介绍如何在银河麒麟桌面操作系统 ARM 版安装 KVM 虚拟化环境,帮助用户搭建高效的虚拟化平台。 准备工作 硬件要求 确保 ARM 架构设备支持虚拟化技术。通常,支持虚拟化的 ARM 处理器会支持硬件辅助虚拟化功能。 系统至少需要 4GB 内存和 20GB 的硬盘空间。 软件要求 银河麒麟桌面操作系统 ARM 版「如 V10」 KVM 虚拟化相关的软件包。 安装 KVM 虚拟化环境 安装 KVM 和相关工具 1 2 sudo apt update sudo apt -y install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager 注意:在银河麒麟桌面操作系统 ARM 版上,可以通过上面命令安装 KVM 和相关工具。 包的作用 上面软件包的作用如下: 包名作用 qemu-kvm提供 KVM 虚拟化核心功能 libvirt-daemon-system用于管理虚拟机的后端服务 libvirt-clients提供客户端工具管理虚拟机 bridge-utils用于配置网络桥接 virt-manager提供图形化界面管理虚拟机 添加用户到 libvirt 组内 1 sudo usermod -aG libvirt $(whoami) 注意:为方便管理虚拟机,需要将当前用户添加到 libvirt 组,然后注销重新登录,使组成员关系生效。 验证是否安装成功 1 virsh --version 注意:运行上面命令来检查 KVM 是否正常工作,如果返回版本信息,说明 KVM 安装成功了。 创建 KVM 虚拟机 下载镜像 可以从银河麒麟官方网站下载适合 ARM 架构的虚拟机镜像文件。 如 Kylin-Desktop-V10-SP1-2403-Release-20240430-arm64.iso 文件。 创建虚拟磁盘 1 qemu-img create -f qcow2 /path/to/disk.img 50G 注意:使用上面命令创建虚拟磁盘。其中/path/to/disk.img 是虚拟磁盘路径,50G 表示磁盘的大小。 启动 KVM 虚拟机安装 1 qemu-system-aarch64 -m 2048 -cpu cortex-a76 -smp 4 -M virt -bios /path/to/QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=/path/to/disk.img,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=/path/to/Kylin-Desktop-V10-SP1-2403-Release-20240430-arm64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom 注意:使用上面命令启动 KVM 虚拟机安装。其中-m 2048 分配 2048MB 内存;-cpu cortex-a76 指定 CPU 类型;-smp 4 是指定虚拟 CPU 核心数。 完成安装 按照虚拟机安装界面的提示完成安装过程。 安装完成后 KVM 虚拟机将自动重启。 使用 KVM 管理虚拟机 使用 virsh 命令行工具 列出所有 KVM 虚拟机: 1 virsh list --all 启动 KVM 虚拟机: 1 virsh start <KVM 虚拟机名称> 关闭 KVM 虚拟机: 1 virsh shutdown <KVM 虚拟机名称> 强制停止 KVM 虚拟机: 1 virsh destroy <KVM 虚拟机名称> 挂起 KVM 虚拟机: 1 virsh suspend <KVM 虚拟机名称> 恢复挂起 KVM 虚拟机: 1 virsh resume <KVM 虚拟机名称> 使用 virt-manager 图形化界面 virt-manager 提供了一个直观的图形化界面,方便用户管理 KVM 虚拟机。 启动 virt-manager 后,可以连接到本地或者远程的 KVM 服务器,创建、启动、停止 KVM 虚拟机。

2025/8/17
articleCard.readMore

LibreTV 免费的在线视频观看神器

在数字媒体盛行的今天,观看电影、电视剧等视频内容成为了人们日常娱乐的重要部分。然而,许多视频平台要么需要付费订阅,要么充斥大量广告,还有的需要复杂的注册流程,极大地影响了观影体验。今天,就给大家介绍一款名为 LibreTV 的开源工具,它将彻底改变在线观影方式。 LibreTV 是什么 LibreTV 是个轻量级、免费的在线视频搜索与观看平台,无需注册账号,也无需要下载安装任何软件,更不需要付费订阅,只要连接网络,通过浏览器就可以随时随地访问。 它采用纯前端技术构建,结合了前端技术和后端代理功能,可以轻松部署在各种支持服务端功能的网站托管服务上。 LibreTV 的优势 免费使用:无需支付任何会员费用,即可畅享海量视频内容,真正实现了看片不花钱。 多源搜索:聚合了多个视频源,能更全面地搜索到电影、电视剧等各类影视资源,可轻松找到想看的内容。 跨多平台支持:无论电脑、平板还是手机设备,均能完美适配,随时随地满足观影需求。 静态部署:不需要后端服务器,部署简单快捷,大大降低了搭建和维护成本。 广告过滤:内置广告过滤功能,有效屏蔽广告干扰,提供更加干净、更优质的观影体验。 自定义 API 接口:用户可以根据自身需求添加或修改视频源,灵活性非常强,可以不断拓展影视资源。 LibreTV 的功能 多源视频搜索:覆盖丰富电影、电视剧等内容,支持多视频源自动聚合,一次搜索即可获取更多结果。 响应式 Web 设计:能够完美适配各种屏幕尺寸设备,无论是 PC 端还是移动端,都可以获得良好的观看体验。 本地存储搜索历史:将搜索历史存储在本地,方便用户下次快速查找之前看过影视内容。 快捷键的支持:播放器支持多种键盘快捷键,如全屏快进快退等,让操作更加的便捷。 HLS 流媒体支持:兼容 HLS 流媒体格式,确保视频播放更加流畅稳定。 可选密码保护:支持设置密码保护,增强访问控制,保障观影隐私。 LibreTV 的安装 用 Cloudflare Pages 部署 Fork 或者克隆 LibreTV 仓库 到 GitHub 账户。 登录 Cloudflare Dashboard 进入 Pages 服务。 点击创建项目,连接到 GitHub 仓库。 使用以下设置:构建命令「留空」(无需构建)输出目录「留空」(默认为根目录) 最后点保存并部署。 可选:在设置环境变量中配置密码保护。 用 Vercel/Netlify 部署 与 Cloudflare Pages 类似,只需要连接仓库并部署即可,无需特殊配置。 点击仓库中的部署按钮,按照提示完成部署流程。 用 Docker 部署 1 docker run -d --name libretv -p 8899:80 -e PASSWORD=your_password_here bestzwei/libretv:latest 注意:使用 Docker 运行 LibreTV,运行以上命令。然后打开浏览器输入 http://localhost:8899 即可访问。 用 Docker Compose 部署 1 2 3 4 5 6 7 8 9 10 version: '3' services: libretv: image: bestzwei/libretv:latest container_name: libretv ports: - "8899:80" environment: - PASSWORD=111111 restart: unless-stopped 注意:将上面内容保存到 docker-compose.yml 文件中,然后运行 docker-compose up -d 命令即可启动 LibreTV。 LibreTV 的使用 搜索视频:打开 LibreTV 的网页界面,直接在搜索框中输入想看的电影、电视剧关键词,点击搜索按钮或者按回车键,系统会自动聚合多个视频源。 可选择播放源:在搜索结果中,可以看到不同视频源提供的播放链接,根据喜好选择一个合适的播放源,点击进入播放页面。 播放控制:在播放页面可通过播放器的控制按钮进行播放、暂停、调整音量、可切换清晰度、拖动进度条等常规操作。此外,还可以使用键盘快捷键来进行屏、快进快退操作,提升观影体验。 查看历史记录:LibreTV 会将搜索历史存储在本地,可在搜索框下方或相应的历史记录区域查看和点击之前搜索过的内容,方便快速查找以及继续观看。 LibreTV 的效果 杜老师提供的免费平台: https://tv.dusays.com/https://tv.dusays.com/ LibreTV 以其丰富的功能、简洁的界面以及便捷的操作,为用户带来全新的在线观影体验。无论是在家中放松休息,还是在旅途中打发时间,它都能满足随时随地观看影视内容的需求:

2025/8/11
articleCard.readMore

Electerm 高效便捷的开源终端工具

在数字化工作时代,一款高效、便捷的终端工具对于开发者、系统管理员和网络工程师等人群来说至关重要。Electerm 作为一款开源免费的跨平台终端模拟器,凭借其丰富的功能和优秀的用户体验,成为了众多用户的首选。 Electerm 的简介 集终端模拟器、文件管理、远程连接、SFTP 客户端等功能于一体,支持 Windows/macOS 和 Linux 等多种操作系统。不仅功能强大,而且界面简洁直观,易于上手。 Electerm 支持在同一窗口中运行多个 SSH 会话,方便用户可同时管理多个远程服务器。同时,它还支持多种认证方式,包括密码、密钥、双因素认证等,充分满足不同用户安全需求。 安装方法 Windows 系统的安装方法 访问 Electerm 的 官方网站,进入下载页面,找到 Windows 相关安装包。下载完成后双击安装包,进入欢迎界面,选择安装模式,浏览选择安装位置点击安装,等待安装完成即可。 另外,也可选择下载免安装版,解压到磁盘自定义目录,直接打开 electerm.exe 就能使用了。 Linux 系统的安装方法 对于一些 Linux 发行版,如 Ubuntu、Kylin 等,用户可直接通过系统的内置软件商店进行安装: 使用方法 SSH 连接项 打开 Electerm 后,在主界面点击左上角的加号,选 SSH。在弹出的对话框中输入主机地址、用户名以及密码等相关信息,点击连接按钮。 文件传输 在连接到远程服务器后,点击左侧边栏文件管理选项,进入文件管理界面。在该界面中用户可以看到本地和远程服务器的文件目录,通过简单拖拽操作,即可实现文件的上传和下载。 自定义快捷键 Electerm 允许用户自定义快捷键和主题,以满足个人操作习惯和视觉喜好。点击顶部菜单栏的设置选项,进入设置界面。在快捷键部分,用户可根据自己的需求对各种操作的快捷键进行修改和设置。在主题项部分,提供多种预设的主题供用户选择,同时用户也可以根据自己的喜好对主题的颜色、字体等进行自定义调整。 其它功能 Electerm 支持多语言,包括英语和中文等,用户可以在设置中进行语言切换。此外,它还具有自动完成、自动重连、透明窗口、终端背景图像等等功能,为用户提供更加便捷和个性化的使用体验。 效果截图 Electerm 支持 SFTP 功能,方便用户在本地和远程服务器间传输文件: 成功连接到远程服务器,进行相关的操作和管理:

2025/8/5
articleCard.readMore

Wave Terminal 多功能开源终端工具

在现代开发工作中,终端是我们必不可少的工具之一。今天要给大家介绍的 Wave Terminal,无疑是一款将传统终端功能与图形化能力完美融合开源终端,能够极大地提升我们的工作效率。 Wave Terminal 的简介 Wave Terminal 是一款支持 macOS/Linux 和 Windows 三大操作系统跨平台终端。 它不仅具备常规的终端功能,还集成了诸多高级特性,例如文件预览、网页浏览、AI 对话等。这使得开发者在使用终端时,无需频繁切换其它应用程序,即可完成多种任务。 下载安装 访问 Wave Terminal 的官方网站,下载安装包后,按照安装向导进行操作即可完成安装: https://www.waveterm.dev/downloadhttps://www.waveterm.dev/download 使用方法 界面布局模块操作:Wave Terminal 的默认界面左侧为终端命令行模块,中间区域分别是 CPU 性能、浏览器和本地文件路径模块,右侧则有帮助、提示和 AI 对话模块。这些模块均可根据个人需求随意拖动位置、多开、添加、删除。 多命令行窗口使用:可同时打开多个命令行窗口,方便在不同项目或任务之间切换。例如,在一个窗口中运行项目服务,另一窗口中执行相关命令进行调试等操作。 文件路径浏览操作:在文件路径模块中,用户不仅可以查看文档、图片,还能播放视频。直接输入文件路径或者通过图形界面浏览文件系统,快速定位到所需文件并进行编辑或者查看。 网页浏览功能:利用内置的浏览器模块,可以直接在终端中浏览网页。这在需要查阅技术文档、搜索解决方案等场景下非常方便,无需切换到其它浏览器,节省了时间和精力。 AI 对话的功能:借助右侧的 AI 对话模块,用户可以与 AI 进行交流。无论寻求编程建议、解决问题思路,还是进行其它知识性的问答,都能得到及时的回复和帮助。 远程连接功能:通过 Wave Terminal 可以方便地连接到本地内网的 Linux 服务器。以 Ubuntu 系统为例,先在 Ubuntu 系统安装 SSH 服务,执行 sudo apt -y install openssh-server 命令进行 SSH 安装,安装完成后执行 sudo systemctl status ssh 命令查看 SSH 的服务状态,若显示绿色 running 提示则表示服务已启动。然后在 Windows 系统 Wave Terminal 中,输入 ssh 用户名@服务器 IP 命令,输入密码后即可连接到远程 Linux 服务器。 工具截图 Wave Terminal 的强大之处在于它将多种实用功能整合到一个终端工具中,无需再频繁的切换应用程序,大大提高工作效率。无论是开发人员还是系统管理员,都能在这款工具中找到诸多便利之处,它无疑是现代终端工具中的一颗新星,值得大家尝试使用:

2025/7/30
articleCard.readMore

SimpleMindMap 开启思维可视化之旅

在信息爆炸的时代,思维导图已经成为高效整理知识、梳理思路必备工具。而 SimpleMindMap 作为一款强大的 Web 思维导图工具,凭借其独特的魅力,正吸引着越来越多用户目光。 SimpleMindMap 是什么 SimpleMindMap 既是思维导图的 js 库,也是一个完整思维导图工具。 功能丰富,能满足思维导图的各种需求,无论是简单的想法记录,还是复杂知识体系构建。 其插件化设计理念,使得除核心功能外的其它能力都作为插件提供,用户可以按需选择,避免了冗余代码的困扰。 而且易于使用,开箱即用,配置丰富,文档清晰,无论是编程新手还是有经验的开发者,都能快速上手。 安装方法 在线使用 最便捷的方式便是直接在线使用。这种方式适合临时使用或者快速尝试工具功能的场景。 访问 在线思绪思维导图,无需繁琐安装过程,即可立即开始创建思维导图。 本地部署 1 2 3 4 5 6 7 8 9 services: mind-map: image: hraulein/mind-map:latest container_name: mind-map restart: always ports: - "8080:8080" environment: - GIN_MODE=release # debug 为调试模式 注意:对于一些对数据安全和隐私有严格要求的用户,本地部署是最理想选择。将上面的内容保存为 docker-compose.yml 文件,然后用 docker-compose up -d 命令启动容器。 使用方法 创建思维导图 打开 SimpleMindMap 应用后,首先会看到一个简洁的界面。点击「新建」按钮,即可开启一张新的思维导图。 在中心出现一个根节点,这是思维导图起点。可双击根节点,为其输入主题名称,比如「我的学习计划」。 添加分支节点 确定好主题后,接下来就是添加分支节点来细化内容。先选中根节点,会发现有一些添加子节点的按钮或快捷键提示。 通常可以通过点击这些按钮或使用快捷键「如 Tab 键等」来创建子节点。例如,在「我的学习计划」根节点下,添加「语文」「数学」「英语」等学科子节点。 编辑节点内容 对于每个节点,不仅可以修改文字内容,还可以进行丰富的格式设置。在选中节点后,可通过顶部菜单栏或者右键菜单找到编辑选项。 比如,可以设置字体大小、颜色,加粗、倾斜文字,甚至可以插入图片、链接等多媒体元素。 调整布局 SimpleMindMap 提供了多种布局方式,以满足不同的展示需求。在菜单栏找到布局选项,有常见的思维导图布局。 可根据思维导图的内容结构和美观度考虑,随时切换布局,直观地看到不同的展示效果。 插件拓展 SimpleMindMap 的插件化特性是一大亮点。用户可根据自身需求安装各种插件来增强功能。 例如,有用于团队协作的插件,可让多个用户同时编辑一张思维导图,实时看到彼此修改;还有用于数据分析插件,能够对思维导图中的内容进行简单的统计分析,如节点数量统计、关键词频率分析等,为用户提供更好数据支持和决策依据。

2025/7/24
articleCard.readMore

Logseq 高效知识管理与协作利器

Logseq 以其出色的知识管理能力、便捷协作功能、强大的隐私保护以及灵活的可扩展性,成为了日常学习和工作中不可或缺的工具。不仅帮助高效地记录和整理知识,还激发了创造力和思考能力。 Logseq 的简介 Logseq 是一款开源的本地优先知识管理和协作平台,它完美融合了大纲笔记与双链笔记的优势,还注重用户的个人隐私保护。支持多种文件格式,包括 Markdown 等,满足不同用户写作习惯,同时提供了丰富的插件生态系统,用户可以根据自身需求扩展功能: 它不仅具备强大的笔记编辑能力,还内置了任务管理、日历视图、知识图谱功能,助力用户更好规划工作、学习、生活,无论整理学习资料、记录工作要点,还是进行团队协作,Logseq 都可以轻松胜任: Logseq 的安装 Logseq 的安装十分便捷。电脑端用户可以从 官网,根据自身操作系统选择对应的安装包进行下载安装,如 Windows、Linux 等都有适配版本。首次打开会自动创建一个知识库,也可以根据需要自行创建新的知识库。 手机端用户同样可以在 App Store 或官网下载安卓端 Logseq 应用程序,实现移动端与桌面端的无缝同步,方便用户随时随地查看、编辑笔记。 Logseq 的使用 创建编辑笔记:在 Logseq 创建笔记非常简单,点击界面右下角的加号按钮,即可新建笔记。在编辑界面可以使用 Markdown 语法文本进行排版,例如设置标题、段落、列表、链接等等,还可插入图片、表格等等元素,让笔记内容更加的丰富多样。 添加标签属性:为更好地对笔记进行分类和管理,可为笔记添加标签。在笔记编辑界面中,点击右上角的「标签」按钮,输入相关标签名称即可。此外 Logseq 支持为笔记添加属性,如优先级、状态、日期等等,方便用户从不同维度对笔记进行筛选、查询。 双向链接:这是 Logseq 的核心功能之一。当在一篇笔记中提及另一个已存在的笔记内容,Logseq 会自动在两者间建立双向链接。也可以手动在笔记中入「笔记名称」的形式来创建链接,通过双向链接,可以轻松构建起一个有机的知识网络,方便在不同笔记间穿梭浏览,发现知识间的隐含关联。 知识图谱:借助知识图谱功能,可以直观地看到笔记之间的链接关系。点击界面左侧边栏「知识图谱」按钮,即可进入图谱视图。在这个视图中,节点之间的连线表示它们之间的双向链接关系。可以通过放大、缩小、拖拽等操作来浏览图谱,还可以查看某个笔记的关联笔记列表。 Logseq 的进阶 使用插件扩展功能:Logseq 的插件市场提供了丰富多样的插件,如增强的表格编辑插件、思维导图插件、PDF 注释插件等。可在 Logseq 的设置界面中找到件管理选项,浏览并安装需要的插件,以进一步提升工作效率。 数据同步备份:支持与多种云存储服务集成,如 GitHub、Google Drive 等,确保笔记数据在不同设备间实时同步。此外,还可以定期对数据进行本地备份,防止数据丢失。

2025/7/18
articleCard.readMore

Linux 系统监控利器 ctop 命令详解

在 Linux 系统,尤其是当我们在管理多个容器时,了解系统和容器的资源使用情况至关重要。今天,就给大家介绍一款强大的监控工具 ctop,本文详细介绍 ctop 的安装、使用、命令选项。 ctop 命令的简介 ctop 是一个类似 top 命令的界面工具,它专注于容器环境,能够实时监控 Docker/Podman 等容器运行时的性能指标,如 CPU、内存、网络、磁盘 I/O 等使用情况。 它以一种直观的方式展示各个容器的详细信息,让管理员可以迅速掌握系统整体健康状况,并且快速定位到可能存在性能瓶颈的容器。 与传统 top 命令相比,ctop 提供更丰富的容器相关数据和更便捷的交互方式。 它不仅能展示容器的基本资源使用率,还能深入到每个容器的进程级别,查看内部运行具体进程,这对于深入分析容器性能表现非常有帮助。 ctop 命令的安装 Linux 系统的安装方法「以 Ubuntu 为例」 1 2 sudo wget https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -O /usr/local/bin/ctop sudo chmod +x /usr/local/bin/ctop 注意:可以直接从 Github 下载最新版本的二进制文件进行安装,以上是具体的步骤「这里以 v0.7.7 版本为例」最后,用命令 ctop -v 验证是否安装成功,若可以正确显示版本号,说明安装成功。 通过 Docker 的方法安装 1 docker run --rm -it --name=ctop -v /var/run/docker.sock:/var/run/docker.sock quay.io/vektorlab/ctop:latest 注意:也可以使用 Docker 快速启动 ctop 容器来进行监控。 ctop 命令的使用 基本使用 在终端中输入 ctop 命令后回车,即可启动 ctop 程序进入主界面。在界面中,会显示出所有正在运行的容器及其资源使用情况的概览,包括容器名称、CPU 使用率、内存使用量及限制、网络收发速率、磁盘读写速率、进程数等信息。 可以通过方向键上下移动光标来选择不同容器,然后按下回车键可以查看到所选容器详细信息,如容器的创建时间、各资源的详细使用数据以及内部运行的进程列表等。 命令选项 命令选项列表如下: 选项描述 ctop -a只查看正在运行中容器,方便专注那些实际处于活动状态、可能对系统资源产生影响的容器。 ctop -f string查看包含指定字符串的容器,当系统中有大量容器时,利用此选项可快速过滤出我们关心的特定容器进行监控。 ctop -i反转默认颜色,如默认的颜色显示效果不佳,或需要与其它界面风格保持一致,可使用该选项来改变界面的颜色显示。 ctop -r反向容器排列顺序,默认情况下存活的容器在前,使用此选项可将其顺序反转,以便按照不同顺序查看容器。 ctop -s string按照指定字段排序,如执行 ctop -s net 可以按照网络使用率对容器进行排序,从而快速找到网络流量较高容器。 交互操作 交互操作列表如下: 操作描述 h打开帮助,在使用过程中如果忘记了某些快捷键的功能或者想了解更多操作方法,可以随时按下 h 键查看帮助信息。 s打开排序,通过此快捷键可以方便地切换不同的排序字段,无需重新输入命令选项。 q退出打开的对话框,当查看完帮助信息或排序设置后,按下 q 键可以退出相应的对话框,返回到主界面。 a只显示正在运行的容器,与 ctop -a 命令效果一致,但在已经启动了 ctop 程序的情况下,使用快捷键可更快速地切换显示模式。 r反转排序,正在运行容器放在末尾,方便在不同的排序需求之间快速切换。 f输入指定字符串过滤出想要查看容器,与 ctop -f string 命令类似,无需重新输入命令,直接在当前界面中进行过滤操作。 j用于向下移动光标,方便在容器列表中快速定位到不同的容器。 k用于向上移动光标,方便在容器列表中快速定位到不同的容器。 Enter查看指定容器详细指标,当光标定位到某个容器,按下回车键即可进入该容器详细信息界面,查看更全面的资源使用以及进程信息。

2025/7/12
articleCard.readMore

Linux 下的高效压缩工具 Zstandard

Zstandard 以其卓越的性能和丰富的功能,成为了 Linux 下一款不可或缺的压缩工具。无论是对单个文件还是整个目录的压缩和解压,它都可以轻松应对,且在处理速度和压缩效果上都有着出色的表现。 Zstandard 的简介 Zstandard 是由 Facebook 开发并开源的一种快速无损压缩算法,2015 年首次发布以来,凭借其高压缩比和快速的解压缩速度,逐渐受到了开发者青睐。 它不仅在压缩效率上超越传统的 gzip 等工具,还能在保持高压缩率的同时,实现极快解压速度,特别适合对数据处理效率要求较高的场景,如大数据处理、日志压缩、网络数据传输等等。 Zstandard 的特点 高压缩比:通常情况下 Zstandard 能够获得比 gzip 更好压缩效果,有效减少数据存储空间。 快速解压:其解压缩速度极快,即使是低压缩等级,解压速度也能远超一些 SSD 的读取速度,大大提高了数据的读取效率。 多线程的支持:Zstandard 自带多线程压缩功能,可以充分利用多核 CPU 的性能,大幅提升压缩速度。例如,在处理大量数据时,多线程压缩能够显著的缩短压缩时间,提高工作效率。 丰富压缩级别选择:提供了从 1 到 22 的压缩级别选择,用户可根据实际需求在压缩速度和压缩率之间进行灵活权衡。压缩级别越高,压缩比率越大,但压缩速度会相应减慢;反之,压缩级别越低,压缩速度越快,但压缩比率会有所降低。 字典压缩模式:Zstandard 为小数据提供一种特殊的字典压缩模式。用户可通过提供一些样本数据来训练生成字典,然后在压缩和解压时加载该字典,从而在小数据上实现更高压缩率,这对于处理大量小文件场景非常有用。 使用模式:Zstandard 提供了多种命令模式,包括压缩、解压、查看压缩信息、测试压缩文件等等。 Zstandard 的安装 Debian/Ubuntu 系统的安装命令如下: 1 sudo apt install zstd Fedora/Red Hat/CentOS/AlmaLinux 系统的安装命令如下: 1 sudo dnf install zstd Arch Linux/Manjaro 系统的安装命令如下: 1 sudo pacman -S zstd 也可以从源码编译安装「这里以 1.5.7 版本为例」命令如下: 1 2 3 4 5 wget https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz tar -zxvf zstd-1.5.7.tar.gz cd zstd-1.5.7/ make sudo make install Zstandard 的使用 压缩文件 基础压缩:使用命令 zstd file_name 即可对文件进行压缩,压缩后会生成一个扩展名为.zst 的文件,如 zstd doc.txt,会生成 doc.txt.zst 文件。 指定压缩级别:可通过选项来指定压缩级别,例如 zstd -3 file_name 表示使用压缩级别-3 进行压缩。 解压文件 基础解压:使用 zstd -d archive_name.zst 即可对文件进行解压,解压后的文件会自动去除.zst 后缀。 指定解压后文件名:同样可使用-o 选项来指定解压后的文件名,如 zstd -d archive_name.zst -o new_file_name。 压缩目录 压缩整个目录:可以使用 zstd -rz directory_name 来压缩整个目录,其中-r 表示递归压缩目录中所有文件和子目录,-z 表示压缩的操作。 解压目录:对于压缩后的目录文件,使用 zstd -dr archive_name.zst 进行解压缩,-d 表示解压缩操作,-r 表示递归解压缩。 查看压缩文件内容 使用 zstd -l archive_name.zst 可以查看压缩文件的相关信息,如压缩比、压缩级别、文件大小等等。 而 zstd -t archive_name.zst 则可用于测试压缩文件的完整性,确保文件在压缩和传输过程中未损坏。

2025/7/6
articleCard.readMore

使用 Python 脚本下载指定网页的图片文件

有小伙伴反馈说侧边栏随机图出现了重复,有些审美疲劳,要求杜老师再更新一些图片,正好聊天广场有小伙伴分享了一个美图的网址。本文分享如何使用 Python 脚本下载指定网页的图片文件,需要的小伙伴可以参考文中代码。 代码需求 使用 Python 的语言编写一个脚本,下载指定网址中包含的多种格式图片文件,如 JPG 和 PNG 格式图片。 将图片保存至指定的目录中,可以指定绝对路径,或者相对路径。 并用随机数重命名,防止同名图片触发覆盖事件。 尽可能使用 Python 的标准库,尽量避免使用第三方库。 变更解释 导入必要的库:包括 os/requests/re 以及 random; 定义函数:download_images 函数可用于下载图片; 获取图片链接:使用正则表达式从网页内容中提取图片 URL; 下载保存图片:使用 requests 库下载图片,并且使用 random 库生成随机数作为文件名; 指定目录:确保保存目录存在,如果不存在则创建; 获取内容:使用 requests 库获取网页内容。 功能代码 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 import os import requests import re import random def download_images(url, save_folder): # 确保保存目录存在 if not os.path.exists(save_folder): os.makedirs(save_folder) # 发送HTTP请求获取网页内容 response = requests.get(url) if response.status_code != 200: print(f"Failed to retrieve the webpage. Status code: {response.status_code}") return # 使用正则表达式查找所有的图片URL image_urls = re.findall(r'<img[^>]+src=["\'](.*?)["\']', response.text) for img_url in image_urls: # 处理相对路径的URL if not img_url.startswith(('http://', 'https://')): img_url = os.path.join(url, img_url) # 下载图片 img_response = requests.get(img_url) if img_response.status_code == 200: # 生成随机文件名 random_filename = f"{random.randint(10000, 99999)}.jpg" save_path = os.path.join(save_folder, random_filename) # 保存图片 with open(save_path, 'wb') as f: f.write(img_response.content) print(f"Downloaded and saved {img_url} as {save_path}") else: print(f"Failed to download {img_url}. Status code: {img_response.status_code}") # 读取网址列表文件 def read_urls_from_file(file_path): with open(file_path, 'r') as file: urls = file.readlines() return [url.strip() for url in urls] # 示例调用 if __name__ == "__main__": urls_file = 'f:\\代码\\urls.txt' # 包含网址的文件路径 save_folder = 'f:\\代码\\images' # 保存图片的目录路径 urls = read_urls_from_file(urls_file) for url in urls: download_images(url, save_folder) 注意:本示例代码仅适用于 Python 3.x 版本,运行于 Windows 系统。如使用 Linux 系统,可能需要进行相应修改。 使用说明 将上述的代码保存为 download_images.py 文件。 在运行脚本时,传入目标网页的 URL 和保存图片的目录路径。 脚本会自动下载网页中所有图片,并且以随机数命名保存到指定目录中。 打开的网址保存在一个文件,每行一个网址。

2025/6/30
articleCard.readMore

X Window 与 Wayland 的深度对比

X Window 与 Wayland 不仅代表了图形界面技术不同发展阶段,更体现了设计理念、架构模式及应用场景的显著差异。本文将从历史背景、技术特点、应用场景及未来展望等多个维度,对 X Window 和 Wayland 进行深入剖析。 历史背景演变 X11 诞生于 1984 年,由麻省理工学院 MIT 开发,旨在满足分布式计算环境下图形界面需求。其设计哲学强调网络透明性,允许用户在远程服务器运行应用程序,并在本地终端显示结果,极大地拓展 GUI 的可用性和灵活性。随着时间推移,X11 凭借其广泛的硬件和软件支持,逐渐成为 Linux 桌面环境的标准图形界面后端。 随着计算需求增长,X11 的一些设计局限逐渐显现,例如架构复杂、性能瓶颈和安全性问题。2008 年,Kristian 提出 Wayland 项目,旨在创建一个更加现代、高效窗口系统。Wayland 的设计重点在于简化架构、提高性能和增强安全性,采用客户端 Compositor 通信模型,减少了中间层,提升了效率和响应速度。 技术特点比较 X11 采用 C/S 模型,客户端通过 X 协议与服务器通信,而 X 服务器负责处理所有图形和输入事件。相比之下,Wayland 采用了客户端 Compositor 模型,客户端可直接与 Compositor 通信,Compositor 负责了窗口管理、合成、输出。Wayland 的架构更加贴合现代图形硬件特性,可以更高效地利用 GPU 和现代显示技术。 X11 在安全性方面存在了固有弱点,其复杂协议和广泛权限易被恶意利用。Wayland 通过限制客户端权限以及简化通信模型,显著提高了安全性。例如,Wayland 禁止了应用程序直接访问底层硬件,只允许了它们与 Compositor 通信,从而增强系统的安全性。 Wayland 的协议设计更加高效,减少了延迟和带宽消耗。在移动设备和资源受限的环境中,Wayland 的优势尤为明显。此外,Wayland 避免了不必要的复杂性和额外处理,使得其在性能上优于 X11。尤其是在窗口大小调整以及拖动等操作中,Wayland 显得更加的平滑流畅。 X11 拥有庞大的生态系统,支持大量的应用程序和工具,几乎所有 Linux 发行版默认都使用 X11。然而,Wayland 的生态系统正在快速发展,主要桌面环境如 GNOME 和 KDE 已全面支持 Wayland。尽管如此,一些特定应用程序和工具可能仍需要额外的兼容层或补丁才能在 Wayland 下运行。 应用场景 在桌面环境中,X11 凭借其广泛的兼容性和成熟度,仍然是许多用户的首选。但随着硬件技术的进步和用户对高性能图形渲染的需求增加,Wayland 正在逐渐成为主流的选择。 越来越多的 Linux 发行版开始默认支持 Wayland,例如 Fedora 和 Ubuntu 等。 在移动设备和嵌入式系统中,资源受限是一个普遍的问题。Wayland 的低功耗以及高性能特性使其成为这些场景下的理想选择。 例如,Android 系统中的 SurfaceFlinger 就是基于 Wayland 的原理设计,用于图形显示以及窗口管理。 在虚拟化和云计算的环境中,图形性能以及网络传输效率至关重要。 虽然 X11 的网络透明性在某些场景下仍有些优势,但 Wayland 通过优化的协议和架构,正在成为虚拟桌面基础设施 VDI 和云桌面解决方案的首选,特别在需要高性能图形渲染的场景中。 未来展望 随着 GPU 技术的成熟以及高性能计算需求的增长,图形界面的渲染以及交互将变得更加复杂和多样化。 X11 和 Wayland 都在积极的探索与 Direct Rendering Manager、Mesa 等图形驱动框架的更紧密集成,以实现更高效的图形渲染和硬件加速。 此外,Wayland 还在研究如何更好地支持多显示器配置、高分辨率显示、触控输入,以满足未来计算环境多样化需求。 最后说两句题外话,近一个月杜老师因为工作的原因,拖更了很多篇文章,感谢小伙伴们的关注和催更,近期会大批量发表一些技术文章,欢迎大家关注。

2025/6/24
articleCard.readMore