Linux常用操作命令、端口、防火墙、磁盘与内存
目录
1.Linux常用操作命令
1.1 基本命令
1.2 高级命令
2.Linux防火墙
2.1 iptables
2.2 firewalld
3.Linux端口号
3.1 netstat(查看网络连接)
3.2 lsof(查找占用端口的进程)
3.3 ps(查看进程服务路径)
3.4 ss(统计信息)
3.5 ufw(对iptables管理)
4.Linux磁盘空间与内存
4.1 磁盘空间
4.2 查看内存
日常开发中,部署线上项目少不了对Linux的操作,Linux基本操作命令、端口号、防火墙、查看磁盘空间和内存大小这些是基本功,如果您对他们还不够熟悉,下面大家一起来学习交流一下。
1.Linux常用操作命令
1.1 基本命令
ls
: 列出当前目录下的文件和文件夹。cd
: 切换目录。例如,cd /path/to/directory
可以进入指定路径的目录。pwd
: 显示当前所在的目录路径。mkdir
: 创建新的目录。例如,mkdir new_directory
可以创建名为 "new_directory" 的目录。rm
: 删除文件或目录。例如,rm file.txt
可以删除名为 "file.txt" 的文件;强制删除命令 rm -rf file.txt 注意删除前要看清楚文件,避免误删其他文件。cp
: 复制文件或目录。例如,cp file.txt /path/to/destination
可以将名为 "file.txt" 的文件复制到指定路径。mv
: 移动文件或重命名文件。例如,mv file.txt /path/to/destination
可以将名为 "file.txt" 的文件移动到指定路径,或者mv old_name.txt new_name.txt
可以将文件重命名。cat
: 查看文件内容。例如,cat file.txt
可以显示名为 "file.txt" 的文件的内容。grep
: 在文件中搜索指定的模式。例如,grep "pattern" file.txt
可以在 "file.txt" 文件中搜索包含指定模式的行。如下图所示,搜所有正在运行的jar进程:ps -ef|grep jar
chmod
: 修改文件或目录的权限。例如,chmod 755 file.txt
可以将 "file.txt" 文件的权限设置为 rwxr-xr-x。chown
: 修改文件或目录的所有者。例如,chown user:group file.txt
可以将 "file.txt" 文件的所有者设置为指定的用户和组。sudo
: 以管理员身份执行命令。例如,sudo apt-get update
可以更新系统软件包。apt-get
或yum
: 包管理工具,用于安装、更新和删除软件包。例如,sudo apt-get install package_name
可以安装指定的软件包。
这只是一小部分常用的Linux操作命令,还有很多其他命令和选项可供使用。你可以使用man
命令查看特定命令的手册页,以获取更详细的信息。
1.2 高级命令
Linux 中有许多强大的高级命令,可以帮助你更高效地管理系统和进行各种任务。以下是一些常用的高级命令:
1. `rsync`:用于远程数据同步和传输的工具,可以在本地和远程系统之间同步文件和目录,例如
# `rsync` 命令是一个强大的文件同步工具,可以在本地和远程系统之间同步文件和目录。
# 以下是几个 `rsync` 命令的例子:# 1. 从本地系统复制文件到远程系统:rsync -avz /path/to/local/file username@remote_host:/path/to/remote/directory# 2. 从远程系统复制文件到本地系统:rsync -avz username@remote_host:/path/to/remote/file /path/to/local/directory# 3. 同步本地目录到远程系统:rsync -avz /path/to/local/directory username@remote_host:/path/to/remote/directory# 4. 从远程系统删除文件:rsync --delete username@remote_host:/path/to/remote/directory /path/to/local/directory# 5. 同步文件并显示详细输出信息:rsync -avzh /path/to/source username@remote_host:/path/to/destination# 这些例子展示了 `rsync` 命令的基本用法,你可以根据自己的需求和具体情况来灵活运用该
# 命令进行文件同步和备份操作。
2. `find`:用于在文件系统中搜索文件和目录,支持按名称、时间、大小等条件进行搜索,例如:
# 当使用 `find` 命令时,你可以指定要搜索的目录、搜索条件以及要执行的操作。
# 以下是几个 `find` 命令的例子:# 1. 查找当前目录下所有名称为 "example.txt" 的文件:find . -name "example.txt"# 2. 在 `/home` 目录下查找所有拥有者为 "jack" 的文件:find /home -user jack# 3. 在 `/var/log` 目录下查找大于 100MB 大小的文件:find /var/log -size +100M# 4. 在 `/etc` 目录下查找所有以 ".conf" 结尾的文件并执行 `ls -l` 命令显示详细信息:find /etc -name "*.conf" -exec ls -l {} \;# 5. 在 `/usr/bin` 目录下查找所有可执行文件并将结果保存到 `executable_files.txt` 文件中:find /usr/bin -type f -executable > executable_files.txt# 这些例子展示了 `find` 命令的基本用法,你可以根据自己的需求和具体情况来灵活运用该命令。
3. `iptables` 或 `firewalld`:用于配置 Linux 的防火墙规则,控制网络数据包的流动。
4. `sed`:流编辑器,用于对文本进行替换、删除、添加等操作。例如:
# `sed` 命令是一个流式文本编辑器,可以用于对文本进行替换、删除、添加等操作。
# 以下是几个 `sed` 命令的例子:# 1. 替换文件中所有匹配的字符串:sed 's/old_string/new_string/g' filename# 2. 替换文件中第一个匹配的字符串:sed 's/old_string/new_string/' filename# 3. 删除文件中匹配的行:sed '/pattern/d' filename# 4. 在匹配的行前或后插入新行:sed '/pattern/i new_line' filename # 在匹配行前插入新行sed '/pattern/a new_line' filename # 在匹配行后插入新行# 5. 使用正则表达式匹配和替换:sed -E 's/pattern/new_string/g' filename # 使用扩展正则表达式# 6. 将文件内容输出到标准输出,不修改源文件:sed 'p' filename# 这些例子展示了 `sed` 命令的常见用法,你可以根据自己的需求和具体情况来使用
# 该命令进行文本处理和编辑操作。
5. `awk`:用于处理文本文件的工具,可以按列来处理文本数据。
# `awk` 命令是一个强大的文本处理工具,用于按列来处理文本数据。
# 以下是几个 `awk` 命令的例子:# 1. 显示文件的指定列:awk '{print $1, $3}' filename # 打印文件的第一列和第三列# 2. 计算文件某一列的总和、平均值等:awk '{sum += $1} END {print "Sum: " sum}' filename # 计算第一列的总和# 3. 根据条件筛选并显示行:awk '$3 > 100 {print $1, $2}' filename # 显示第三列大于 100 的行的第一列和第二列# 4. 使用自定义分隔符进行处理:awk -F':' '{print $1, $NF}' /etc/passwd # 使用冒号作为分隔符打印第一列和最后一列# 5. 对每一行进行处理并输出结果:ps aux | awk '{print $1, $2, $3, $4}'
6. `tar`:用于归档文件,常与 gzip、bzip2 等工具结合使用进行压缩。例如:
压缩myproject文件:tar -zcvf myproject.tar.gz myproject
解压myproject文件:tar -zxvf myproject.tar.gz
7. `dd`:用于复制和转换文件,可以用于创建镜像文件、备份硬盘等。
# `dd` 命令是一个用于复制文件和转换文件的工具,它可以用于创建镜像文件、备份
# 和恢复数据等操作。以下是几个 `dd` 命令的例子:# 1. 从一个设备复制数据到另一个设备:dd if=/dev/sda of=/dev/sdb bs=4k# 这个命令将硬盘 `/dev/sda` 的内容复制到 `/dev/sdb`,`bs=4k` 指定了块大小为 4KB。# 2. 创建一个指定大小的空白文件:# dd if=/dev/zero of=blankfile bs=1M count=100这个命令将会创建一个名为 `blankfile` 的大小为 100MB 的空白文件。# 3. 从文件中提取指定大小的数据:# dd if=inputfile of=outputfile bs=1M count=10这个命令将从 `inputfile` 中提取 10MB 的数据,并写入 `outputfile`。# 4. 在文件中跳过指定数量的块后再复制数据:dd if=inputfile of=outputfile bs=512 skip=10 count=5# 这个命令将在跳过输入文件中的前 10 个 512 字节块后,复制接下来的 5 个块到输出文件。#`dd` 命令非常强大,但同时也需要谨慎使用,因为它可以对系统造成严重破坏。
# 在使用时,请务必确认命令参数和目标设备,避免造成数据丢失或系统损坏。
8. `lsof`:列出系统当前打开的文件,可以查看进程打开的文件和网络连接等信息。
9. `netstat`:显示网络状态信息,包括网络连接、路由表、接口统计等。
这些高级命令可以帮助你进行各种系统管理和数据处理任务,提高工作效率并更好地掌握 Linux 系统。
2.Linux防火墙
在Linux系统中,防火墙是网络安全的重要组成部分,可以帮助保护系统免受未经授权的访问和恶意网络流量的影响。常见的Linux防火墙工具包括iptables和firewalld。下面我将简要介绍它们的基本用法:
2.1 iptables
(1)基本概念:
- iptables 是一个强大的防火墙工具,用于配置Linux内核的防火墙规则。
- 它通过定义规则集来控制进出系统的数据包。
- Centos 7默认使用firewalld防火墙,没有安装iptables, 若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables 。
# 1.禁用防火墙
# 停止 firewalld
systemctl stop firewalld
# 禁用 firewalld
systemctl disable firewalld# 2. 安装 iptables
# 安装iptables
yum -y install iptables
# 安装iptables-services
yum -y install iptables-services
# 设置 iptables 开机启动
systemctl enable iptables# 3. 保存配置
# 开放 22 端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 开放 21 端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# 开放 80 端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 开放 443 端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许 ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
(2)基本命令:
- `iptables -L`: 列出当前的防火墙规则。
iptables -L
- `iptables -A INPUT -p tcp --dport port_number -j ACCEPT`: 允许指定端口的TCP流量进入系统。
- `iptables -A OUTPUT -p tcp --dport port_number -j ACCEPT`: 允许系统发出到指定端口的TCP流量。
- `iptables -P INPUT DROP`: 设置默认策略为拒绝所有进入数据包。
- `iptables -P FORWARD DROP`: 设置默认策略为拒绝所有转发数据包。
- `iptables -P OUTPUT ACCEPT`: 设置默认策略为允许所有发出数据包。
2.2 firewalld
(1)基本概念:
- firewalld 是一个动态管理防火墙的工具,可以更灵活地管理防火墙规则。
- 它支持不同的区域和服务,可以根据需要动态调整防火墙规则。
- 注意CentOS7默认使用firewalld防火墙,而不是iptables。
(2)基本命令:
- `firewall-cmd --state`: 检查防火墙的状态。
- `firewall-cmd --get-zones`: 列出可用的区域。
- `firewall-cmd --zone=public --add-port=port_number/tcp --permanent`: 在公共区域永久开放指定端口的TCP流量。
- `firewall-cmd --reload`: 重新加载防火墙规则以使更改生效。
(3)以上是关于iptables和firewalld两种常用Linux防火墙工具的基本介绍和常用命令。在配置防火墙时,请务必谨慎操作,确保你了解你的网络需求,并避免意外封锁或开放重要的端口造成安全隐患。
3.Linux端口号
在Linux中,你可以使用一些命令来处理端口相关的问题。以下是一些常用的命令:
3.1 netstat(查看网络连接)
1. `netstat`: 用于查看网络连接、路由表和网络接口等信息。例如,`netstat -tuln` 可以列出所有已监听的TCP和UDP端口,netstat -tulnp 会比 netstat -tuln 内容更详细,如下图对比所示:
netstat -tulnp
netstat -tuln
3.2 lsof(查找占用端口的进程)
2. `lsof`: 用于列出当前打开的文件和进程信息。可以使用 `lsof -i :port_number` 来查找正在使用指定端口的进程,如下图所示:
方式一:lsof -i:port
方式二:netstat -nap|grep port【推荐】
3.3 ps(查看进程服务路径)
3. 根据进程pid查看服务路径
查看所有进程pid:ps -ef|grep java
查看服务安装路径:ll /proc/pid/cwd
3.4 ss(统计信息)
4. `ss`: 类似于 `netstat`,用于显示套接字统计信息。例如,`ss -tunl` 可以列出所有已监听的TCP和UDP端口,如下图所示:
ss -tunl
3.5 ufw(对iptables管理)
6. `ufw`: 简化了对iptables的管理,提供了更简单的命令行界面。例如,`ufw status` 可以查看防火墙状态,`ufw allow port_number` 可以允许指定端口的连接。
这些命令可以帮助你查看端口的使用情况、正在监听的端口以及相关的进程信息。如果你需要打开或关闭特定的端口,你可能需要配置防火墙规则或使用适当的工具进行管理。请注意,在执行任何网络操作之前,请确保你有足够的权限,并且谨慎操作以避免安全风险。
4.Linux磁盘空间与内存
4.1 磁盘空间
在Linux系统中,你可以使用一些命令来查看磁盘空间的使用情况。以下是一些常用的命令:
1. `df` 命令:
- `df` 命令用于报告文件系统的磁盘空间利用情况。
- `df -h` 可人类可读的格式显示磁盘空间使用情况,包括已用空间、可用空间和挂载点等信息。
- 例如,`df -h` 将列出系统中所有文件系统的磁盘空间使用情况。
2. `du` 命令:
- `du` 命令用于估算文件和目录的磁盘使用空间。
- `du -h folder_name` 可以以人类可读的格式显示指定目录的磁盘使用情况。
- 例如,`du -h /home/user` 将列出 "/home/user" 目录及其子目录的磁盘空间使用情况。
- 例如,`du -sh *` 将列出当前目录及其子目录的磁盘空间使用情况。
这些命令可以帮助你查看整个系统或特定目录的磁盘空间使用情况,以便及时采取措施来管理磁盘空间。如果你需要更详细的信息,你可以结合其他选项来获取特定的磁盘空间使用情况。
4.2 查看内存
要查看 Linux 系统中的内存使用情况,可以使用以下几个命令:
1. `free`:显示系统当前的内存使用情况,包括总内存、已使用、空闲等信息。
如下图所示:free -b、free -m、free -g
2. `top` 或 `htop`:这两个命令可以显示系统当前的进程和资源占用情况,包括内存占用情况。
例如:top
或者安装 `htop` 后使用:
sudo apt install htop # 安装 htop
htop # 查看系统资源使用情况
3. `vmstat`:显示系统的虚拟内存统计信息,包括内存、磁盘、CPU 等情况。
例如:vmstat
通过这些命令,你可以很方便地查看 Linux 系统中的内存情况。
相关文章:

Linux常用操作命令、端口、防火墙、磁盘与内存
目录 1.Linux常用操作命令 1.1 基本命令 1.2 高级命令 2.Linux防火墙 2.1 iptables 2.2 firewalld 3.Linux端口号 3.1 netstat(查看网络连接) 3.2 lsof(查找占用端口的进程) 3.3 ps(查看进程服务路径&#x…...

<JavaEE> 了解网络层协议 -- IP协议
目录 初识IP协议 什么是IP协议? IP协议中的基础概念 IP协议格式 图示 4bit版本号(version) 4bit头部长度(headerlength) 8bit服务类型(TypeOfService) 16bit总长度(total l…...

【安全类书籍-2】Web渗透测试:使用Kali Linux
目录 内容简介 作用 下载地址 内容简介 书籍的主要内容是指导读者如何运用Kali Linux这一专业的渗透测试平台对Web应用程序进行全面的安全测试。作者们从攻击者的视角出发,详细阐述了渗透测试的基本概念和技术,以及如何配置Kali Linux以适应渗透测试需求。书中不仅教授读者…...

ubuntu10.04 apache2.2开启tls1.2的支持,使现代的edge和firefox浏览器能正常访问https
最近发现自己ubuntu10.04服务器上的apache https无法通过win11上的edge和firefox浏览器访问,但xp下的ie6和ie8没有问题。 firefox的错误提示为“此网站可能不支持TLS 1.2协议,而这是Firefox支持的最低版本”。 经过检查发现: IE6访问https所需的版本是SS…...

算法学习(持续更新中)
学习视频:一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解(马士兵)_哔哩哔哩_bilibili 时间复杂度 一个操…...

蓝桥杯 2023 省B 飞机降落
首先,这题要求的数据量比较少,我们可以考虑考虑暴力解法。 这题可能难在很多情况的考虑,比如说: 现在时间是10,有个飞机20才到,我们是可以干等10分钟。 #include <iostream> #include <…...

基于python的变配电室运行状态评估与预警系统flask-django-nodejs-php
近年来,随着我国工业化、城镇化步伐的不断加快,城市配电网络取得令人瞩目的发展成果。变配电室是供配电系统的核心,在供配电系统中占有特殊的重要地位[1]。变配电室电气设备运行状态和环境信息缺乏必要的监测评估预警手段,如有一日遭遇突发情…...
el-table左键双击单元格编辑内容(输入框输入计算公式可直接得出结果),右键单击展示操作菜单,可编辑单元格高亮展示
vue2点击左侧的树节点(el-tree)定位到对应右侧树形表格(el-table)的位置,树形表格懒加载 表格代码 <el-table ref"singleTable" :data"detailsList" highlight-current-row"" row-key"detailId"…...

实现HBase表和RDB表的转化(附Java源码资源)
实现HBase表和RDB表的转化 一、引入 转化为HBase表的三大来源:RDB Table、Client API、Files 如何构造通用性的代码模板实现向HBase表的转换,是一个值得考虑的问题。这篇文章着重讲解RDB表向HBase表的转换。 首先,我们需要分别构造rdb和hba…...

10:00面试,10:06就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...

【Python】: Django Web开发实战(详细教程)
Python Django全面介绍 Django是一个非常强大的Python Web开发框架,它以"快速开发"和"干净、实用的设计"为设计宗旨。本文将从Django的基本概念开始,逐渐引导大家理解如何使用Django构建复杂的web应用程序。 Django基本概念与原理…...
突破编程_C++_C++11新特性(tuple)
1 std::tuple 简介 1.1 std::tuple 概述 std::tuple 是一个固定大小的不同类型值的集合,可以看作 std::pair 的泛化,即 std::pair 是 std::tuple 的一个特例,其长度受限为 2。与 C# 中的 tuple 类似,但 std::tuple 的功能更为强…...

xss.pwnfunction(DOM型XSS)靶场
环境进入该网站 Challenges (pwnfunction.com) 第一关:Ma Spaghet! 源码: <!-- Challenge --> <h2 id"spaghet"></h2> <script>spaghet.innerHTML (new URL(location).searchParams.get(somebody) || "Somebo…...
安装 docker 和 jenkins
安装 docker #安装 软件包 docker yum install -y yum-utils device-mapper-persistent-data lvm2#设置 yum 源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-c…...
jni入门学习 CMakeLists脚本
在 Android Studio 中使用 CMake 可以编译 C/C 代码,这为开发者提供了在 Android 应用中嵌入本地代码的能力。下面是关于在 Android Studio 中使用 CMake 编译的详细说明: 1. 创建 CMakeLists.txt 文件: 首先,你需要在项目的根目…...
如何在没有向量数据库的情况下使用知识图谱实现RAG
引言 传统上,为大型语言模型(LLMs)提供长期记忆通常涉及到使用检索增强生成(RAG)解决方案,其中向量数据库作为长期记忆的存储机制。然而,我们是否能在没有向量数据库的情况下达到相同效果呢&am…...

6.如何判断数据库搜索是否走索引?
判断是否使用索引搜索 索引在数据库中是一个不可或缺的存在,想让你的查询结果快准狠,还是需要索引的来帮忙,那么在mongo中如何判断搜索是不是走索引呢?通常使用执行计划(解释计划、Explain Plan)来查看查询…...
Java并发编程的性能优化方案中,哪些方法比较常用
在Java并发编程的性能优化方案中,以下是一些常用的方法: 线程池的使用: 线程池可以复用线程,避免频繁地创建和销毁线程,从而提高系统性能。常用的线程池有FixedThreadPool、CachedThreadPool等。根据任务特性选择合适…...
AcWing 2867. 回文日期(每日一题)
原题链接:2867. 回文日期 - AcWing题库 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。 因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。 我们称这样的日期是…...

学习笔记-华为IPD转型2020:3,IPD的实施
3. IPD的实施 1999 年开始的 IPD 转型是计划中的多个转型项目中的第一个(Liu,2015)。华为为此次转型成立了一个专门的团队,从大约20人开始,他们是华为第一产业的高层领导。董事会主席孙雅芳是这个团队的负责人。该团…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...