当前位置: 首页 > article >正文

Linux系统功耗调优实战:从监控到内核级优化指南

1. 项目概述为什么要在Linux上折腾功耗最近几年我手头的服务器、开发板和笔记本越来越多从24小时开机的家庭服务器到需要长续航的移动开发环境再到追求极致静音和低发热的桌面工作站“电”这个字眼开始频繁出现在我的运维账单和性能考量里。Linux作为这一切的底层操作系统其默认的电源管理策略往往是“性能优先”这在很多场景下会造成不必要的能源浪费和硬件损耗。比如一台轻负载的NAS可能因为CPU持续高频运行而白白消耗几十瓦电力一台笔记本在电池模式下可能因为某个后台服务疯狂读写磁盘而续航腰斩。“Linux用电功耗调优”这个事说白了就是教会系统“看菜吃饭量体裁衣”。在需要全力冲刺时比如编译大型项目它能瞬间满血在待机或处理轻量任务时它能自动“摸鱼”降低功耗。这不仅仅是省电费那么简单对于嵌入式设备意味着更长的续航对于服务器意味着更低的散热压力和运营成本对于个人电脑则意味着更安静的风扇和更凉爽的机身。整个过程就像给你的Linux系统做一次精细的“体检”和“生活习惯调整”从CPU、GPU、磁盘、网络到内核参数逐一优化。2. 核心调优思路与全局观测调优的第一步不是盲目下手改配置而是建立全局观测能力。你得先知道“电”都用到哪里去了才能有的放矢。2.1 建立功耗监控基线在动手调整任何参数之前必须量化当前的功耗状态。我习惯从硬件和软件两个层面同时抓取数据。硬件层面如果设备支持最直接的是使用外接的功耗计如智能插座。它能给出整个设备在交流电端的实时功率和累计耗电量数据最真实但无法细分到内部组件。软件层面则是依靠Linux内核暴露的各种接口。这里有几个我每天都会用到的工具组合powertop这是英特尔开源的工具但对非Intel CPU也有很好的参考价值。运行sudo powertop进入交互界面它的“Overview”标签页能直观显示各个组件CPU、GPU、USB设备、无线网卡等的功耗估算而“Tunables”标签页则直接给出了可优化的项目列表非常方便。注意powertop的功耗数值是估算值尤其是非Intel平台但其反映的相对变化趋势和问题点是非常准确的。turbostat这是深入洞察CPU功耗状态的利器。执行sudo turbostat --show PkgWatt,CorWatt,GFXWatt,RAMWatt,PkgTmp,CoreTmp,CPU%c1,CPU%c6,CPU%c7 --interval 5可以每5秒输出一次数据。这里的关键指标是PkgWatt整个CPU封装包括核心、核显、内存控制器等的功耗。CPU%c1/C6/C7CPU处于不同深度C-state空闲状态的时间百分比。C7比C1更省电这个百分比越高说明CPU空闲时降频休眠得越好。perf与tuned-admperf可以监控硬件性能计数器中与能源相关的事件。而tuned是RHEL/CentOS/Fedora系列上的一个调优方案管理工具通过sudo tuned-adm active可以查看当前生效的电源模式如powersave,balanced,performance它实际上是一系列预设优化参数的集合。通过以上工具运行一段时间比如在典型的工作负载下监控半小时你就能得到一份系统的“功耗画像”CPU平均频率是多少空闲时能否进入深睡眠哪个内核线程或设备中断最频繁导致系统无法休眠磁盘是不是在不停寻道这份画像是后续所有调优动作的基准。2.2 理解Linux电源管理框架知其然还要知其所以然。Linux的电源管理主要围绕以下几个子系统理解它们有助于做出正确的调优决策CPUFreq负责调节CPU的工作频率和电压P-state。驱动有acpi-cpufreq较老和intel_pstate现代Intel CPU默认。调速器governor决定了调频策略例如powersave锁定最低频、performance锁定最高频、ondemand按需快速升降、schedutil内核调度器集成更智能推荐使用。CPUIDLE负责当CPU核心无事可做时将其置于不同的休眠状态C-state。C-state越深如C7功耗越低但唤醒延迟也越高。Runtime PM (Runtime Power Management)为总线如PCIe、USB上的设备提供运行时电源管理当设备空闲一段时间后可以将其挂起以省电。ASPM (Active State Power Management)PCI Express总线链路层的电源管理技术可以在链路空闲时降低其电源状态。调优的本质就是在满足性能需求的前提下协调好这些子系统让硬件在正确的时机进入正确的低功耗状态。3. 分级调优实战从快速生效到深度定制有了观测数据和理论基础我们就可以开始动手了。我建议遵循一个从全局到局部、从简单到复杂的渐进式调优流程。3.1 第一级使用系统级优化方案快速上手对于不想深究细节的用户或者想快速得到一个不错基线的情况直接使用系统提供的方案是最佳选择。tuned服务如前所述这是一个预配置调优方案的守护进程。安装后sudo dnf install tuned或sudo apt install tuned你可以通过以下命令轻松切换模式sudo systemctl enable --now tuned sudo tuned-adm list # 列出所有可用方案 sudo tuned-adm profile powersave # 切换到省电模式 sudo tuned-adm profile balanced # 切换到平衡模式 sudo tuned-adm active # 查看当前生效的方案powersave方案通常会启用更激进的CPU调速器、磁盘APM、无线省电等。它的优势是开箱即用风险低。缺点是缺乏针对性可能为了省电在某些场景下损失不必要的性能。tlp工具这是一个功能非常强大的、社区驱动的Linux高级电源管理工具。它通过一个统一的配置文件/etc/tlp.conf管理几乎所有硬件的电源设置比tuned更细致、更透明。 安装后sudo apt install tlp tlp-rdw或sudo dnf install tlp默认配置就已经能带来显著的省电效果。它的强大之处在于高度可定制你可以仔细阅读其长达数百行的配置文件注释根据你的硬件型号和使用场景精细地调整每一个参数比如为你的特定无线网卡设置省电级别或者为你的NVMe硬盘设置正确的ASPM策略。我的建议是新手或求稳的用户先启用tlp的默认配置。当你通过powertop等工具发现特定瓶颈后再回头来仔细研读tlp.conf进行针对性调整。3.2 第二级核心组件针对性调优当系统级方案无法满足或者你需要对特定部件进行极致优化时就需要进入这一层级。CPU调优检查并设置调速器确认当前使用的驱动和调速器。cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor对于现代内核5.x优先使用schedutil。如果使用的是acpi-cpufreq驱动可以手动切换echo schedutil | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor。schedutil能更好地与任务调度器配合响应延迟更低能效比通常优于旧的ondemand。调整CPU能源性能偏好对于Intel CPU可以设置/sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference。将其设置为balance_power或power可以提示调度器更倾向于省电。禁用不必要的CPU核心对于负载极低的服务器可以考虑通过内核参数maxcpus在启动时禁用部分核心或者运行时使用echo 0 /sys/devices/system/cpu/cpuX/online来动态关闭核心。注意这会影响多线程性能需谨慎评估。磁盘与文件系统调优启用磁盘APM/ALPM高级电源管理APM或链接电源管理ALPM可以让硬盘在空闲时降低转速或进入休眠。使用hdparmSATA或nvmeNVMe工具设置。例如对SATA盘设置中等省电级别sudo hdparm -B 127 /dev/sda值1-255越低越省电但唤醒越慢。警告对SSD和NVMe盘过于激进的省电设置可能导致延迟飙升影响体验。调整文件系统挂载选项对于非关键数据分区可以在/etc/fstab中添加noatime或relatime选项。这可以减少文件访问时间戳的更新次数从而降低磁盘写入操作。relatime是较好的折中仅在访问时间早于修改时间时更新。减少文件系统写回间隔通过调整/proc/sys/vm/dirty_writeback_centisecs控制内核回写脏数据的周期和/proc/sys/vm/dirty_expire_centisecs脏数据过期时间可以影响磁盘活动。增大这些值如从默认的500厘秒增至1500可以让数据在内存中停留更久减少频繁的小规模磁盘写入但意外断电时数据丢失风险会略微增加。切勿在数据库服务器或重要生产环境随意调整。GPU与外围设备集成显卡对于Intel iGPU可以安装intel-gpu-tools使用sudo intel_gpu_frequency --set 300之类的命令限制其最高频率如果不需要高性能图形处理。USB自动挂起通过tlp或直接向/sys/bus/usb/devices/*/power/control写入auto来启用USB设备的运行时电源管理。无线网卡省电使用iwconfig wlan0 power on或通过tlp配置来启用无线网卡的省电模式。这可能会轻微增加网络延迟但对移动设备续航提升明显。3.3 第三级内核与引导参数深度优化这是最硬核的层面涉及修改内核行为需要一定的风险承受能力和测试验证。内核启动参数在GRUB配置/etc/default/grub的GRUB_CMDLINE_LINUX行中添加参数然后运行sudo update-grub。processor.max_cstate1慎用限制CPU最深只能进入C1状态会显著增加空闲功耗通常用于解决某些老旧硬件在深睡眠状态下的不稳定问题。intel_idle.max_cstate0禁用Intel CPU的intel_idle驱动回退到更老但可能更稳定的acpi_idle驱动。pcie_aspmforce强制启用PCIe ASPM即使BIOS未正确声明支持。这对某些台式机主板上的扩展卡省电可能有奇效但也可能导致兼容性问题。consoleblank60设置控制台60秒无操作后关闭屏幕背光。内核模块参数有些驱动模块可以通过参数调整。例如对于某些NVMe驱动可以尝试在/etc/modprobe.d/下创建配置文件添加options nvme_core default_ps_max_latency_us0以允许NVMe硬盘进入更深的电源状态。中断合并与亲和性高频率的中断会阻止CPU进入深睡眠。使用irqbalance服务可以自动优化中断在各个CPU核心上的分布。对于网络等高吞吐设备可以查看并调整其/sys/class/net/eth0/device/msi_irqs相关设置或启用中断合并Interrupt Coalescing。4. 调优效果验证与长期监控调优不是一劳永逸的尤其是经过深度定制后必须在多种典型工作负载下验证稳定性和性能表现。建立监控仪表盘我习惯使用collectd或telegraf代理配合InfluxDB时序数据库和Grafana可视化搭建一个简单的监控系统。采集的指标包括功耗相关通过powertop --csv输出解析或直接读取turbostat输出中的PkgWatt。CPU状态各核心频率、C-state驻留时间百分比、温度。磁盘活动IOPS、读写吞吐量、平均等待时间。性能基准在调优前后运行固定的性能测试脚本如编译某个内核、执行数据库查询记录完成时间确保性能衰减在可接受范围内。A/B测试方法准备两套完整的配置如/etc/tlp.conf.bak和/etc/tlp.conf.new通过脚本快速切换并在相同的 idle静置、轻度办公、高负载编译等场景下记录至少一小时的功耗数据。对比平均值和峰值才能客观评价某个优化项的真实效果。很多时候一个优化在idle时省电0.5W但在负载下因为响应变慢导致任务执行时间延长反而总耗电量增加了。5. 常见陷阱、疑难排查与经验心得这条路我踩过不少坑很多“优化”实际上是把双刃剑。坑一过度追求低功耗导致性能劣化或卡顿。最典型的例子是将CPU调速器设为powersave并锁定最低频率或者将磁盘休眠时间设得太短。这会导致系统响应缓慢用户体验极差。黄金法则任何优化都必须在满足性能SLA服务等级协议的前提下进行。对于桌面环境交互流畅度就是SLA对于服务器请求处理延迟就是SLA。坑二硬件/固件/驱动不兼容。这是最深的水。例如某些笔记本的BIOS ACPI实现有bug导致Linux无法正常进入S3挂起到内存状态。或者某个内核版本的intel_pstate驱动与你的CPU微码有冲突导致频率调节异常。这类问题排查起来非常困难需要查看内核日志dmesg | grep -i errorjournalctl -k --since today。尝试更新BIOS/UEFI固件到最新版本。尝试使用不同的内核版本如LTS版和最新主线版。在社区如对应发行版的论坛、Reddit相关板块、Linux内核邮件列表归档搜索你的硬件型号关键词。坑三混淆“瞬时功耗”与“总能耗”。powertop显示的是瞬时功耗估算。一个激进的省电设置可能让瞬时功耗很低但系统因为性能下降完成工作的时间翻倍总能耗功耗×时间反而更高。因此一定要以完成特定任务的总耗电量为最终评判标准。我的几点核心心得观测优于猜测不要凭感觉优化一定要用数据说话。powertop和turbostat是你的眼睛。增量调整逐一验证一次只修改一个或一类相关的参数观察效果并测试稳定性后再调整下一个。避免同时修改多处出了问题都不知道是哪里的锅。区分场景配置我的笔记本上就通过tlp配置了不同的模式。插电时使用AC模式偏向性能使用电池时自动切换到BAT模式启用所有省电选项。这可以通过tlp内置的[AC]和[BAT]配置段轻松实现。接受不完美电源管理是硬件、固件、操作系统和应用软件共同作用的结果。在Linux上你可能永远无法达到同硬件Windows系统下的完美续航因为很多硬件的高级电源管理特性需要厂商提供专门的驱动和固件支持而这在Linux世界往往是缺失的。我们的目标是在开源生态能达到的范围内做到最好。社区是你的后盾遇到奇怪的问题记得去Arch Wiki、Gentoo Wiki、Ubuntu Forums以及相关的硬件子版块寻找答案。你遇到的坑很可能别人已经踩过并填上了。功耗调优是一个持续的过程随着内核更新、驱动升级、使用场景变化可能需要反复调整。但它带来的收益是实实在在的更低的电费账单、更长的电池寿命、更安静的工作环境以及那种对系统了如指掌、尽在掌控的成就感。希望这份笔记能帮你少走些弯路开始你的Linux系统“瘦身”之旅。

相关文章:

Linux系统功耗调优实战:从监控到内核级优化指南

1. 项目概述:为什么要在Linux上折腾功耗? 最近几年,我手头的服务器、开发板和笔记本越来越多,从24小时开机的家庭服务器,到需要长续航的移动开发环境,再到追求极致静音和低发热的桌面工作站,“电…...

WindowsCleaner 终极指南:如何轻松解决C盘爆红和系统卡顿问题

WindowsCleaner 终极指南:如何轻松解决C盘爆红和系统卡顿问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否曾经遇到过这样的场景&#xff1a…...

Python异步编程与Discord机器人开发:pincer库实战指南

1. 项目概述与核心价值最近在折腾一个游戏服务器的后端,发现处理实时通信和状态同步这块儿,用传统的HTTP轮询或者WebSocket裸写,代码很快就变得又臭又长,维护起来简直是噩梦。就在我头疼的时候,社区里一个叫pincer的项…...

零代码构建离线环境数据记录器:基于WipperSnapper与BME280的实践指南

1. 项目概述:告别代码,用离线数据记录器抓住每一刻环境数据如果你曾经想搭建一个能默默在角落记录温度、湿度或气压的小设备,但又觉得写代码、调试硬件太麻烦,那今天这个项目就是为你准备的。数据记录,听起来很专业&am…...

团队协作福音:如何用EasyYapi插件统一SpringBoot项目的接口文档风格?

团队协作福音:如何用EasyYapi插件统一SpringBoot项目的接口文档风格? 在微服务架构盛行的今天,一个SpringBoot项目往往由多个团队协作开发。当接口数量突破三位数时,文档风格不统一、字段说明缺失等问题会让协作效率直线下降。上周…...

低成本PHY芯片RTL8201F驱动移植实战:从LAN8742到RTL8201F的完整替换流程与验证

低成本PHY芯片RTL8201F驱动移植实战:从LAN8742到RTL8201F的完整替换流程与验证 在嵌入式以太网开发中,PHY芯片的选择往往需要在性能和成本之间取得平衡。当项目预算有限时,RTL8201F这类低成本PHY芯片就成为极具吸引力的选择。本文将详细介绍如…...

AI赋能Git提交:aicommit2如何用LLM自动生成规范提交信息

1. 项目概述:从命令行到智能提交的进化在团队协作开发中,提交信息(Commit Message)的质量直接关系到项目的可维护性。一条清晰、规范的提交信息,就像给代码变更打上了一个精准的标签,能让团队成员&#xff…...

动态光照技术在视觉触觉传感器中的应用与优化

1. 视觉触觉传感器技术概述 视觉触觉传感器(Vision-Based Tactile Sensors, VBTS)是机器人触觉感知领域的重要技术突破。这类传感器通过光学成像方式捕捉弹性体接触面的微观变形,将机械接触转化为可视化数据。与传统力传感器相比,…...

高光谱数据处理避坑指南:从RAW文件到反射率,你的白板校正做对了吗?

高光谱数据处理避坑指南:从RAW文件到反射率,你的白板校正做对了吗? 在实验室里,一位研究员盯着屏幕上扭曲的反射率曲线皱起了眉头——明明按照标准流程采集了白板和暗电流数据,为什么最终结果会出现负值和异常波动&am…...

Flutter 测试完全指南

Flutter 测试完全指南 引言 测试是软件质量保障的关键环节。本文将深入探讨 Flutter 测试的各种类型和最佳实践。 基础概念回顾 测试类型 单元测试: 测试单个函数或方法Widget 测试: 测试单个 Widget集成测试: 测试多个组件的交互性能测试: 测试应用性能 测试工具 test:…...

小白程序员必看!收藏这份AI学习指南,从0到1逆袭高薪职业(内含经验分享)

作者原UI设计师,因职业瓶颈被辞退后转行AI领域。文章分享了学习AI的动机、遇到的困难、心得体会以及成功转行后的薪资提升经历。强调主动拥抱变化的重要性,建议多练习、多总结,并感谢老师们的耐心指导。最后,作者表示将继续深耕AI…...

AI视频自动化生产:从LLM到MoviePy的全栈技术解析

1. 项目概述:一个能自动“印钞”的AI内容工厂最近在GitHub上看到一个挺有意思的项目,叫“MoneyPrinterAICreate”。光看名字就挺吸引人,直译过来就是“印钞机AI创作”。这可不是什么物理印钞机,而是一个利用人工智能技术&#xff…...

终极指南:如何使用Legacy-iOS-Kit让旧iPhone重获新生

终极指南:如何使用Legacy-iOS-Kit让旧iPhone重获新生 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 你…...

告别GitHub龟速下载:三分钟掌握浏览器加速插件的正确用法

告别GitHub龟速下载:三分钟掌握浏览器加速插件的正确用法 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 你是否曾经在…...

AWS实战|从零搭建高可用Web应用网络架构

1. 为什么需要高可用Web应用架构? 最近帮朋友公司迁移电商平台到AWS时,他们最担心的就是大促期间服务器挂掉。这让我想起三年前自己踩过的坑——当时用单可用区部署的官网,因为一次区域级故障直接宕机8小时。现在回头看,其实只要在…...

当滑块验证码遇上VMP:浅析某讯前端混淆方案与自写解释器的踩坑记录

前端安全对抗新维度:VMP技术在滑块验证码中的实战解析 滑块验证码早已从简单的图像识别演变为复杂的人机验证系统,而VMP(Virtual Machine Protection)技术的引入,则将这场攻防对抗推向了更高维度。本文将深入探讨VMP如…...

从SDRAM到DDR3:给FPGA开发者的内存进化史与选型避坑指南

从SDRAM到DDR3:FPGA开发者的内存技术演进与实战选型策略 在FPGA开发中,外部存储器的选择往往决定了整个系统的性能上限。当面对OV5640摄像头每秒数百兆的像素数据流,或是高速ADC采集的连续波形时,一个不合适的内存选型可能导致系统…...

揭秘qmc-decoder:三步解锁QQ音乐加密音频的终极指南

揭秘qmc-decoder:三步解锁QQ音乐加密音频的终极指南 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经下载了心爱的QQ音乐歌曲,却发现只能在…...

如何用Cyber Engine Tweaks终极解锁赛博朋克2077的完整定制体验:新手快速入门指南

如何用Cyber Engine Tweaks终极解锁赛博朋克2077的完整定制体验:新手快速入门指南 【免费下载链接】CyberEngineTweaks Cyberpunk 2077 tweaks, hacks and scripting framework 项目地址: https://gitcode.com/gh_mirrors/cy/CyberEngineTweaks 你是否厌倦了…...

ARM SMMU-700内存管理单元原理与优化实践

1. MMU-700 SMMU架构概述与典型应用场景内存管理单元(MMU)是现代计算机系统中不可或缺的核心组件,负责处理虚拟地址到物理地址的转换。在ARM架构中,系统级内存管理单元(SMMU)扮演着更为关键的角色&#xff…...

2026实测:能耗管控场景下的AI工具数据分析能力横向对比,实在Agent如何通过ISSUT打破数据孤岛?

【摘要】 步入2026年,全球能源结构转型进入深水区。随着数据中心耗电量突破1000太瓦时(TWh)以及工业领域对“双碳”目标的刚性对标,能耗管控场景已成为企业运营的战略核心。然而,企业在推进自动化能效管理时&#xff0…...

开发AI Agent应用时利用Taotoken实现多模型路由与降级策略

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 开发AI Agent应用时利用Taotoken实现多模型路由与降级策略 在构建复杂的AI Agent工作流时,应用的稳定性和可用性是关键…...

CST 2023 GPU加速实战:从硬件选型到性能验证,一份给仿真工程师的避坑清单

CST 2023 GPU加速实战:从硬件选型到性能验证,一份给仿真工程师的避坑清单 当电磁仿真项目规模从实验室级别扩展到工业级应用时,计算资源的需求往往呈指数级增长。我曾见证过一个汽车雷达天线阵列的仿真案例:采用传统CPU计算需要72…...

实战演练:C#窗体交互式绘图控件开发全流程

1. 从零搭建绘图控件开发环境 第一次接触C#绘图控件开发时,我踩过不少环境配置的坑。现在回想起来,其实只要把握几个关键点就能快速搭建开发环境。首先打开Visual Studio(建议2019或2022版本),选择"新建项目"…...

深度学习优化算法(三)—— 自适应学习率(AdaGrad/RMSProp/Adam/AdamW)(三十五)

1. 定位导航 第 34 篇我们解决了"方向"问题(Momentum 让训练快 10)。本篇解决另一个核心问题:每个参数应该用多大学习率? 第 8 章规划进度: 篇号 主题 状态 33 优化挑战 ✅ 34 SGD + Momentum + Nesterov ✅ 35(本篇) 自适应学习率 🚀 36 参数初始化策略 …...

ClawX:基于RAG的智能代码助手,实现项目级上下文感知编程

1. 项目概述:ClawX,一个面向开发者的智能代码助手最近在GitHub上看到一个挺有意思的项目,叫ClawX。乍一看这个名字,可能会联想到“爪子”或者“抓取”,但它的定位其实是一个AI驱动的代码助手。作为一个在开发一线摸爬滚…...

通过Nodejs快速为Web应用接入多模型AI能力

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Nodejs快速为Web应用接入多模型AI能力 现代Web应用对智能交互能力的需求日益增长,无论是客服对话、内容辅助生成还…...

深度学习优化算法(四)—— 参数初始化策略(Xavier/Kaiming/正交)(三十六)

1. 定位导航 第 33-35 篇讨论了训练过程——但还有一个关键问题被忽略了:从哪里开始? Goodfellow 的警告: 训练深度模型是一个足够困难的问题,以至于大多数算法都很大程度地受到初始化选择的影响。初始点能够决定算法是否收敛、收敛速度、最终的代价值。 本篇专攻怎么挑一…...

Python自动化拍照邮件系统:从摄像头调用到SMTP发送全流程实战

1. 项目概述:从零搭建一个自动化拍照邮件系统最近在工作室搞了个小项目,需要定时监控一个实验区域的状态,拍下照片后自动发到邮箱里方便随时查看。这个需求听起来简单,但真动手做起来,从摄像头调用、图像处理到邮件发送…...

3步快速上手AnotherRedisDesktopManager:Redis桌面管理终极指南

3步快速上手AnotherRedisDesktopManager:Redis桌面管理终极指南 【免费下载链接】AnotherRedisDesktopManager 🚀🚀🚀A faster, better and more stable Redis desktop manager [GUI client], compatible with Linux, Windows, Ma…...