Linux性能调优之用电调优(Power Usage Tuning)
来源:良许Linux教程网
时间:2025-01-16 20:37:06 444浏览 收藏
积累知识,胜过积蓄金银!毕竟在文章开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Linux性能调优之用电调优(Power Usage Tuning)》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~
前言
-
收拾一些Linux电力优化的笔记,打算与小伙伴分享。对于电力优化,个人认为:
-
最好使用专业工具如powertop来进行调整
-
或者依赖Linux自带的优化策略
-
建议在调整某些策略时进行充分评估,避免错误的预算。
-
如果仅仅为了省电而导致生产故障,那最终将得不偿失,好心办了坏事。
-
文中提及的策略,个人认为部分不适用于生产环境,部分可以尝试,但也可能由于内核原因不再支持。这里整理出来供大家了解。
-
文章内容包括:
-
- 红帽推荐的节能策略,由于部分信息较陈旧,因此简单记录了一些修改内核参数的模块,博文中未提供示例
- 使用红帽自带的优化模块tuned进行优化
- 使用节能工具powertop进行自动优化
-
食用方法
我的Linux内核版本
┌──[root@liruilongs.github.io]-[~] └─$uname -r 4.18.0-193.el8.x86_64 ┌──[root@liruilongs.github.io]-[~] └─$
节能策略
管理与高CPU活动
相关的功耗和废热
是数据中心运行
的主要关注点之一。对于需要最大限度延长电池寿命的移动设备来说,最大限度地减少功耗也越来越重要。
可以使用一些通用策略来降低计算机上的功耗:
- 禁用未使用的服务。
- 禁用不用的硬件设备。
- 避免对系统进行轮询操作。
- 延长延迟活动的生命周期。
- 允许不活动的设备进入省电状态。
下面我们我们看一些可以在在Linux系统上实现这些策略的一些方法。
「禁用以太网局域:ethtool -s eth0 wol d
」
这里需要注意的是,当禁用之后,同一局域网下就不支持远程开机了
┌──[root@liruilongs.github.io]-[~] └─$ ethtool -s eth0 wol d ┌──[root@liruilongs.github.io]-[~] └─$ ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 1000baseT/Full 10000baseT/Full Supported pause frame use: No Supports auto-negotiation: No Supported FEC modes: Not reported Advertised link modes: Not reported Advertised pause frame use: No Advertised auto-negotiation: No Advertised FEC modes: Not reported Speed: 10000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: off MDI-X: Unknown Supports Wake-on: uag Wake-on: d Link detected: yes ┌──[root@liruilongs.github.io]-[~] └─$
支持Wake-On-LAN
的以太网卡必须保持供电以监控Wake-On-LAN以太网帧(可用于远程开机)
,即使在系统断电的情况下。
「启用笔记本模式」
当启用笔记本模式时,缓存中的脏页一次提交,而不是随着时间的推移分散提交,减少了硬盘休眠后重新启动的需要。
┌──[root@liruilongs.github.io]-[~] └─$ echo 1 >/proc/sys/vm/laptop_mode ┌──[root@liruilongs.github.io]-[~] └─$ cat /proc/sys/vm/laptop_mode 1 ┌──[root@liruilongs.github.io]-[~] └─$
「关闭 nmi_watchdog」
nmi_watchdog
内核模块用于监视内核,并在怀疑CPU陷入繁忙循环时生成一个不可屏蔽的“中断”,允许内核记录调试信息。
┌──[root@liruilongs.github.io]-[~] └─$ cat /proc/sys/kernel/nmi_watchdog 1 ┌──[root@liruilongs.github.io]-[~] └─$ echo 0 > /proc/sys/kernel/nmi_watchdog ┌──[root@liruilongs.github.io]-[~] └─$ cat /proc/sys/kernel/nmi_watchdog 0 ┌──[root@liruilongs.github.io]-[~] └─$
「启用noatime文件系统挂载选项,不更新访问时间」
Unix atime`跟踪文件的访问时间,其效果是`每次读都有一个相关的写操作来更新atime`。`atime字段`很少使用,可以通过`使用noatime挂载文件系统来禁用它`。注意,Linux 6内核支持relative选项,该选项维护atime字段,但将更新提交推迟一天。我们当前的系统为`Linux release 8.2 (Ootpa)`支持`relative`和`strictatime
man帮助文档
atime Do not use the noatime feature, so the inode access time is controlled by kernel defaults. See also the descriptions of the relatime and strictatime mount options. noatime Do not update inode access times on this filesystem (e.g. for faster access on the news spool to speed up news servers). This works for all inode types (directories too), so it implies nodiratime.
启用方式
┌──[root@liruilongs.github.io]-[~] └─$ mount -o remount,noatime /dev/mapper/rhel-home /home
可以通过stat命令来查看文件目录的详细信息
┌──[root@liruilongs.github.io]-[/home] └─$ stat /home/ File: /home/ Size: 23 Blocks: 0 IO Block: 4096 directory Device: fd02h/64770d Inode: 128 Links: 3 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:home_root_t:s0 Access: 2020-11-25 05:10:33.506038318 +0800 Modify: 2022-04-11 23:36:50.446087028 +0800 Change: 2022-06-03 11:10:41.288596109 +0800 Birth: -
「禁用经常不使用的蓝牙接口」
┌──[root@liruilongs.github.io]-[/home/liruilong] └─$ hciconfig hci0 down
蓝牙无线电接收器耗电,并需要连接USB子系统(额,英语小白..原文:and exercises the USB subsystem
.)。我们平常基本不会用的,禁用它
┌──[root@liruilongs.github.io]-[/home/liruilong] └─$ hciconfig -a hci0: Type: Primary Bus: USB BD Address: 3C:91:80:47:61:72 ACL MTU: 8192:128 SCO MTU: 64:128 UP RUNNING RX bytes:1048 acl:0 sco:0 events:51 errors:0 TX bytes:1209 acl:0 sco:0 commands:51 errors:0 Features: 0xff 0xff 0x8f 0xfe 0x83 0xe1 0x08 0x80 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH HOLD SNIFF PARK Link mode: SLAVE ACCEPT Name: 'liruilongs.github.io' Class: 0x4c0000 Service Classes: Rendering, Capturing, Telephony Device Class: Miscellaneous, HCI Version: 2.1 (0x4) Revision: 0x100 LMP Version: 2.1 (0x4) Subversion: 0x100 Manufacturer: not assigned (6502)
命令选择 | 描述 |
---|---|
-a | 显示蓝牙设备信息 |
up | 开启蓝牙设备 |
down | 关闭蓝牙设备 |
reset | 重置蓝牙设备 |
pscan | 启用页面扫描,禁用查询扫描 |
┌──[root@liruilongs.github.io]-[/home/liruilong] └─$ hciconfig pscan hci0: Type: Primary Bus: USB BD Address: 3C:91:80:47:61:72 ACL MTU: 8192:128 SCO MTU: 64:128 UP RUNNING RX bytes:1840 acl:0 sco:0 events:78 errors:0 TX bytes:1571 acl:0 sco:0 commands:78 errors:0 ┌──[root@liruilongs.github.io]-[/home/liruilong] └─$ hciconfig hci0 down ┌──[root@liruilongs.github.io]-[/home/liruilong] └─$ hciconfig pscan hci0: Type: Primary Bus: USB BD Address: 3C:91:80:47:61:72 ACL MTU: 8192:128 SCO MTU: 64:128 DOWN RX bytes:1840 acl:0 sco:0 events:78 errors:0 TX bytes:1571 acl:0 sco:0 commands:78 errors:0
「启用按需CPU频率调控器」
Linux内核允许通过可配置的策略来控制CPU速度。ondemand调控器允许cpu闲置或在使用不频繁时以较低的速度运行。
┌──[root@liruilongs.github.io]-[/usr/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ┌──[root@liruilongs.github.io]-[/usr/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$ modprobe cpufreq_ondemand ┌──[root@liruilongs.github.io]-[/usr/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$ echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ┌──[root@liruilongs.github.io]-[/usr/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$
常见策略我们简单来看下。
-
ondemand
:系统默认的超频模式
,按需调节,内核提供的功能,不是很强大,但有效实现了动态频率调节,平时以低速方式运行,当系统负载提高时候自动提高频率。以这种模式运行不会因为降频造成性能降低,同时也能节约电能和降低温度。一般官方内核默认的方式都是ondemand。 -
interactive
:交互模式
,直接上最高频率,然后看CPU负荷慢慢降低,比较耗电。Interactive 是以 CPU 排程数量而调整频率,从而实现省电。InteractiveX 是以 CPU 负载来调整 CPU 频率,不会过度把频率调低。所以比 Interactive 反应好些,但是省电的效果一般。 -
conservative
:保守模式
,类似于ondemand,但调整相对较缓,想省电就用他吧。Google官方内核,kang内核默认模式。 -
smartass
:聪明模式
,是I和C模式的升级,该模式在比interactive 模式不差的响应的前提下会做到了更加省电。 -
performance
:性能模式
,只有最高频率,从来不考虑消耗的电量,性能没得说,但是耗电量。 -
powersave
省电模式
,通常以最低频率运行。 -
userspace
:用户自定义模式
,系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置 -
Hotplug
:类似于ondemand
, 但是cpu会在关屏下尝试关掉一个cpu,并且带有deep sleep,比较省电。
临时设置,发现报错了。根据提示信息我们排查一下问题。
┌──[root@liruilongs.github.io]-[/sys/devices/system/cpu/cpu0] └─$ cpupower frequency-set -g ondemand Setting cpu: 0 Error setting new values. Common errors: - Do you have proper administration rights? (super-user?) - Is the governor you requested available and modprobed? - Trying to set an invalid policy? - Trying to set a specific frequency, but userspace governor is not available, for example because of hardware which cannot be set to a specific frequency or because the userspace governor isn't loaded?
查frequency-info信息,发现调频的信息都没有
┌──[root@liruilongs.github.io]-[/sys/devices/system/cpu/cpu0] └─$ cpupower frequency-info analyzing CPU 0: no or unknown cpufreq driver is active on this CPU CPUs which run at the same hardware frequency: Not Available CPUs which need to have their frequency coordinated by software: Not Available maximum transition latency: Cannot determine or is not supported. hardware limits: Not Available available cpufreq governors: Not Available Unable to determine current policy current CPU frequency: Unable to call hardware current CPU frequency: Unable to call to kernel boost state support: Supported: no Active: no Boost States: 0 Total States: 1 Pstate-P0: 1600MHz
可能是调频模块没有启动,我们来看下。
┌──[root@liruilongs.github.io]-[/sys/devices/system/cpu/cpu0] └─$ cd /sys/devices/system/cpu/cpu0;ls cache crash_notes_size firmware_node node0 subsystem uevent crash_notes driver microcode power topology
确实么有名为cpufreq的文件夹,然后我们看一下我的CUP信息
┌──[root@liruilongs.github.io]-[/sys/devices/system/cpu/cpu0] └─$ cat /proc/cpuinfo | grep name model name : AMD Ryzen 7 2700U with Radeon Vega Mobile Gfx model name : AMD Ryzen 7 2700U with Radeon Vega Mobile Gfx ┌──[root@liruilongs.github.io]-[/sys/devices/system/cpu/cpu0] └─$
可以用的 CPUfreq 模块
┌──[root@liruilongs.github.io]-[/sys/devices/system/cpu/cpu0] └─$ ls /usr/lib/modules/$(uname -r)/kernel/drivers/cpufreq/ acpi-cpufreq.ko.xz p4-clockmod.ko.xz speedstep-lib.ko.xz amd_freq_sensitivity.ko.xz powernow-k8.ko.xz ┌──[root@liruilongs.github.io]-[/sys/devices/system/cpu/cpu0] └─$
- p4-clockmod.ko.xz Intel P4的处理器
- speedstep-lib.ko.xz 迅弛,很多笔记本都是这个
- amd_freq_sensitivity.ko.xz,powernow-k*.ko AMD处理器用的
- acpi-cpufreq.ko.xz 如果所有的都不行,试试这个,(但2.6.20或以上的内核推荐优先使用该项)
加载一下AMD对应的模块试试,发现没办法加载
┌──[root@liruilongs.github.io]-[/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$ modprobe powernow-k8 modprobe: ERROR: could not insert 'powernow_k8': No such device
尝试修改一下配置试试,我们要修改这个文件
┌──[root@liruilongs.github.io]-[/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$ cat /proc/cmdline BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-193.el8.x86_64 root=/dev/mapper/rhel-root ro resume=/dev/mapper/rhel-swap net.ifnames=0 biosdevname=0 rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet
但是cmdline 不能直接更改,而是通过更改配置文件生成的该文件
┌──[root@liruilongs.github.io]-[/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$ sed '$a GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable"' /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="resume=/dev/mapper/rhel-swap net.ifnames=0 biosdevname=0 rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet" GRUB_DISABLE_RECOVERY="true" GRUB_ENABLE_BLSCFG=true GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable" ┌──[root@liruilongs.github.io]-[/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$ sed -i '$a GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable"' /etc/default/grub
运行grub2-mkconfig -o /boot/grub2/grub.cfg
,重新生成config文件
┌──[root@liruilongs.github.io]-[/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$ grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ...
reboot 重启检查/proc/cmdline
┌──[root@liruilongs.github.io]-[~] └─$ cat /proc/cmdline | grep intel_pstate=disable BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-193.el8.x86_64 root=/dev/mapper/rhel-root ro resume=/dev/mapper/rhel-swap net.ifnames=0 biosdevname=0 rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet intel_pstate=disable
还是不行,时间关系这里做简单记录,感兴趣小伙伴在研究下,看文档需要系统 BIOS 配置为允许操作系统控制 CPU 电源管理
┌──[root@liruilongs.github.io]-[/usr/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$ modprobe powernow-k8 modprobe: ERROR: could not insert 'powernow_k8': No such device ┌──[root@liruilongs.github.io]-[/usr/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$
感兴趣小伙伴可以参考下这个:https://access.redhat.com/solutions/253803
「将符合AC97的声卡设置为省电模式」
┌──[root@liruilongs.github.io]-[~] └─$ cat /sys/module/snd_ac97_codec/parameters/power_save 5 ┌──[root@liruilongs.github.io]-[~] └─$ echo 1 > /sys/module/snd_ac97_codec/parameters/power_save ┌──[root@liruilongs.github.io]-[~] └─$ cat /sys/module/snd_ac97_codec/parameters/power_save 1 ┌──[root@liruilongs.github.io]-[~] └─$
「禁用rsyslogd
同步」rsyslog是一个开源的软件程序,它负责写入日志。它记录绝大部分的日志记录,和系统有关的、安全、认证ssh,su、计划任务at,cron等日志。所以这要根据实际情况选择,如果遇到木马入侵等安全相关问题,通过日志排查可以发现问题。
┌──[root@liruilongs.github.io]-[~] └─$ sed -e 's#\s/var/log/#-' /etc/rsyslog.conf
默认情况下,rsyslogd
在写入所有文件后同步所有文件
。在文件名前面加上”-
“将禁用此行为。
┌──[root@liruilongs.github.io]-[~] └─$ grep /var/log /etc/rsyslog.conf *.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron uucp,news.crit /var/log/spooler local7.* /var/log/boot.log ┌──[root@liruilongs.github.io]-[~] └─$
「启用电源感知CPU调度器」
这个我的机器没办法做Demo。感兴趣小伙伴可以研究下
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
调整任务调度,使任务在尽可能少的内核上调度,允许未使用的cpu空闲。支持以下值。
- 0:无节能负载均衡(默认值)
- 1:对于长时间运行的线程,先填充一个线程/内核/包
- 2:也将任务唤醒到半空闲的cpu包,以节省电力
「增加虚拟机的脏回写时间」
┌──[root@liruilongs.github.io]-[/sys/devices/system/cpu] └─$ cat /proc/sys/vm/dirty_writeback_centisecs 500 ┌──[root@liruilongs.github.io]-[/sys/devices/system/cpu] └─$ echo 300000 > /proc/sys/vm/dirty_writeback_centisecs ┌──[root@liruilongs.github.io]-[/sys/devices/system/cpu] └─$ cat /proc/sys/vm/dirty_writeback_centisecs 300000 ┌──[root@liruilongs.github.io]-[/sys/devices/system/cpu] └─$
vm/dirty_writeback_centisecs sysctl
控制I/O缓存中的脏页
提交到磁盘的时间
,在Linux中默认为500。增加时间可以显著减少磁盘旋转,但在崩溃的情况下会有更多的数据丢失的风险。
「开启ALPM (SATAAggressive Link Power Management)模式」
现代SATA控制器
可以在不工作时进入低功耗模式,从而显著节省电力。
echo min_power > /sys/class/scsihost/hoste/link_power_management_policy
这个也不行,可能是内核版本的原因,或者是需要安装TLP电源管理工具
「启用USB 的autosuspend」
usbcore. autosuspend=1(on the kernel command 1ine)
USB自动暂停允许不活动的USB设备进入省电模式。
「开启无线设备的省电模式」
iwpriv wlane set_power 5c
无线设备支持不同的功率级别,从1到5不等。O表示自动,6表示不节能。
节能调优配置文件
RHEL7/8的调优服务tuned:提供了大量预设的调优方案,旨在于简化调优的实施,充分利用系统资源与能效。管理员可以针对不同的业务选择不同的优化策略,节能的调优可以使用powersave
策略
┌──[root@liruilongs.github.io]-[/sys/class/scsi_host/host0] └─$ tuned-adm list | grep powersave - powersave - Optimize for low power consumption ┌──[root@liruilongs.github.io]-[/sys/class/scsi_host/host0] └─$ tuned-adm profile powersave ┌──[root@liruilongs.github.io]-[/sys/class/scsi_host/host0] └─$ tuned-adm active Current active profile: powersave
配置功率使用powertop
PowerTOP
是一个笔记本电脑节省电源的 Linux 工具。此工具由 Intel 公司发布。它可以帮助用户找出那些耗电量大的程序,通过修复或者关闭那些应用程序或进程,从而为用户节省电源。
PowerTOP 要求 Linux 内核开启 tickless idle 功能,具备 2.6.21 及以上版本。另外,PowerTOP 工作的最佳平台为笔记本电脑。
官网地址:http://www.linuxpowertop.org/
需要装包
┌──[root@liruilongs.github.io]-[/sys/class/scsi_host/host0/power] └─$ yum -y install powertop
帮助文档
┌──[root@liruilongs.github.io]-[~] └─$ powertop --help Usage: powertop [OPTIONS] --auto-tune sets all tunable options to their GOOD setting -c, --calibrate runs powertop in calibration mode -C, --csv[=filename] generate a csv report --debug run in "debug" mode --extech[=devnode] uses an Extech Power Analyzer for measurements -r, --html[=filename] generate a html report -i, --iteration[=iterations] number of times to run each test -q, --quiet suppress stderr output -s, --sample[=seconds] interval for power consumption measurement -t, --time[=seconds] generate a report for 'x' seconds -w, --workload[=workload] file to execute for workload -V, --version print version information -h, --help print this help menu For more help please refer to the 'man 8 powertop'
Tunables 分页为调优选择
请使用 Tab, Shift + Tab 或方向键 ←, → 切换至 Tunables 分页 ↑, ↓ 上下移动,于欲调校的项目按下 Enter 进行调校,当所有状态显示为 Good 后即可按下 q 离开。
也可以通过命令来批量设置
┌──[root@liruilongs.github.io]-[~] └─$ powertop --auto-tune modprobe cpufreq_stats failedLoaded 0 prior measurements RAPL device for cpu 0 RAPL device for cpu 0 Devfreq not enabled glob returned GLOB_ABORTED the port is sda Leaving PowerTOP ┌──[root@liruilongs.github.io]-[~] └─$
PowerTOP 本身并无储存功能,但我们可以借由 powertop --html/csv
产生的报告来调校系统,甚至于开机时载入这些设定.
┌──[root@liruilongs.github.io]-[~] └─$ powertop --html modprobe cpufreq_stats failedLoaded 0 prior measurements RAPL device for cpu 0 RAPL device for cpu 0 Devfreq not enabled glob returned GLOB_ABORTED Preparing to take measurements Taking 1 measurement(s) for a duration of 20 second(s) each. the port is sda PowerTOP outputing using base filename powertop.html PS E:\docker> scp root@192.168.26.66:/root/powertop.html .\ root@192.168.26.66's password: powertop.html 100% 71KB 9.9MB/s 00:00 PS E:\docker>
到这里,我们也就讲完了《Linux性能调优之用电调优(Power Usage Tuning)》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于Linux,Linux系统,Shell脚本,Linux命令,linux入门,linux教程,linux学习,嵌入式Linux的知识点!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
500 收藏
-
320 收藏
-
490 收藏
-
302 收藏
-
381 收藏
-
216 收藏
-
402 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习