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

利用Linux的I2C子系统和i2c-tools工具集写出的对I2C设备AP3216C读写的应用程序

前言

由于NXP官方提供的BSP里已经包含了其片上I2C控制器的驱动并接入到了Linux的I2C子系统,所以我们可以直接去写与I2C有关的应用程序了。
在本篇博文中我们用两种方式对I2C设备AP3216C进行读写操作。

第一种:直接利用Linux的I2C子系统对I2C设备AP3216C进行读写操作。

第二种:利用i2c-tools工具集对I2C设备AP3216C进行读写操作,当然i2c-tools也是运行于Linux的I2C子系统基础上的用户空间工具集,之前已经介绍过它了,并且之前已经用它的命令行对I2C设备AP3216C进行过读写操作了,详情见: https://blog.csdn.net/wenhao_ir/article/details/146319007

在阅读本文前建议还是先将博文 https://blog.csdn.net/wenhao_ir/article/details/146319007 阅读一遍。

直接利用Linux的I2C子系统对I2C设备AP3216C进行读写操作

完整代码(I2C_direct_control_ATP2126C.c)

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <linux/i2c-dev.h>
#include <sys/ioctl.h>
#include <errno.h>#define I2C_BUS "/dev/i2c-0"  // I2C 设备文件
#define I2C_ADDR 0x1E  // AP3216C 设备地址// 写入 I2C 设备寄存器
void i2c_write(int fd, unsigned char reg, unsigned char value) {unsigned char buf[2] = {reg, value};if (write(fd, buf, 2) != 2) {perror("Failed to write to I2C device");exit(EXIT_FAILURE);}
}// 读取 I2C 设备寄存器(16位数据)
int i2c_read_word(int fd, unsigned char reg) {unsigned char buf[2];if (write(fd, &reg, 1) != 1) {perror("Failed to set register address");exit(EXIT_FAILURE);}if (read(fd, buf, 2) != 2) {perror("Failed to read from I2C device");exit(EXIT_FAILURE);}return buf[0] | (buf[1] << 8);  // 低字节在前,高字节在后
}int main() {int fd = open(I2C_BUS, O_RDWR);if (fd < 0) {perror("Failed to open I2C bus");return EXIT_FAILURE;}if (ioctl(fd, I2C_SLAVE, I2C_ADDR) < 0) {perror("Failed to select I2C device");return EXIT_FAILURE;}// 1. 软复位 AP3216Ci2c_write(fd, 0x00, 0x04);sleep(1);  // 等待复位完成// 2. 启用光感和距离检测i2c_write(fd, 0x00, 0x03);sleep(1);  // 等待设备启动while (1) {// 3. 读取光照强度数据int als_data = i2c_read_word(fd, 0x0C);printf("Ambient Light: %d\n", als_data);// 4. 读取距离数据int ps_data = i2c_read_word(fd, 0x0E);int distance = ((ps_data >> 8) & 0x3F) << 4 | (ps_data & 0x0F);printf("Proximity Distance: %d\n", distance);sleep(3);  // 每 3 秒读取一次}close(fd);return EXIT_SUCCESS;
}

代码ioctl(fd, I2C_SLAVE, I2C_ADDR)的作用

I2C_SLAVE 是一个 ioctl 命令,用于设置当前通信的 I2C 从设备地址,在同一条 I2C 总线上可以有多个设备,这个 ioctl 调用用于选择当前要操作的I2C设备,它告诉 Linux的I2C 驱动,后续所有 read()write() 操作都针对 0x1E 这个 I2C 设备。

代码int distance = ((ps_data >> 8) & 0x3F) << 4 | (ps_data & 0x0F);

通过博文 https://blog.csdn.net/wenhao_ir/article/details/146319007 【搜索“读取距离值”】中我们知道需要取一个字的高8位的低6位和低8位的低4位组成一个10位的数值,所以有了这个distance的计算公式。
注意:0x3F = 0b0011 1111,作与操作后就可以得到ps_data高8位的低6位。

交叉编译代码

将文件I2C_direct_control_ATP2126C.c复制到Ubuntu中:
在这里插入图片描述
运行下面的命令编译它得到ELF可执行程序:

arm-buildroot-linux-gnueabihf-gcc -o I2C_direct_control_ATP2126C I2C_direct_control_ATP2126C.c

在这里插入图片描述

测试生成的可执行程序

将刚才交叉编译生成的ELF可执行程序复制到NFS网络文件目录中:
在这里插入图片描述
打开串口终端→打开开发板→挂载网络文件系统:

mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt

然后运行下面的命令执行程序:

cd /mnt/IC2_app1
./I2C_direct_control_ATP2126C

运行结果如下:
在这里插入图片描述
然后我用手电筒照向芯片AP3216C,运行结果如下:
在这里插入图片描述
可见光照强度的数值变大了很多。

接下来我再用我的手指靠近芯片AP3216C,运行结果如下:
在这里插入图片描述
可见距离接近值也变大了很多,说明程序没有问题,测试成功。

附代码文件和编译好的ELF可执行程序

https://pan.baidu.com/s/1URp5fmx5iBuusK2GZXCKaA?pwd=3yuq

利用i2c-tools工具集对I2C设备AP3216C进行读写操作

完整代码(I2C_tools_control_ATP2126C.c)

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <linux/i2c-dev.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <smbus.h>#define I2C_BUS "/dev/i2c-0"  // I2C 设备文件
#define I2C_ADDR 0x1E  // AP3216C 设备地址// 写入 I2C 设备寄存器
void i2c_write(int fd, unsigned char reg, unsigned char value) {if (i2c_smbus_write_byte_data(fd, reg, value) < 0) {perror("Failed to write to I2C device");exit(EXIT_FAILURE);}
}// 读取 I2C 设备寄存器(16位数据)
int i2c_read_word(int fd, unsigned char reg) {int res = i2c_smbus_read_word_data(fd, reg);if (res < 0) {perror("Failed to read from I2C device");exit(EXIT_FAILURE);}return res; // 低字节在前,高字节在后
}int main() {int fd = open(I2C_BUS, O_RDWR);if (fd < 0) {perror("Failed to open I2C bus");return EXIT_FAILURE;}if (ioctl(fd, I2C_SLAVE, I2C_ADDR) < 0) {perror("Failed to select I2C device");return EXIT_FAILURE;}// 1. 软复位 AP3216Ci2c_write(fd, 0x00, 0x04);sleep(1);  // 等待复位完成// 2. 启用光感和距离检测i2c_write(fd, 0x00, 0x03);sleep(1);  // 等待设备启动while (1) {// 3. 读取光照强度数据int als_data = i2c_read_word(fd, 0x0C);printf("Ambient Light: %d\n", als_data);// 4. 读取距离数据int ps_data = i2c_read_word(fd, 0x0E);int distance = ((ps_data >> 8) & 0x3F) << 4 | (ps_data & 0x0F);printf("Proximity Distance: %d\n", distance);sleep(3);  // 每 3 秒读取一次}close(fd);return EXIT_SUCCESS;
}

代码分析说明

代码没啥好分析与详解的,与上一个代码差不多,差别就是把对设备的读写函数read、write换成了i2c-tools工具集的函数i2c_smbus_read_word_datai2c_smbus_write_byte_data,其实i2c-tools工具集的函数也是在基本的读写函数read、write上套壳开发的嘛。

交叉编译代码

首先请参考博文 https://blog.csdn.net/wenhao_ir/article/details/146364042 把i2c-tools编译并安装配置好。

然后把源代码文件I2C_tools_control_ATP2126C.c复制到Ubuntu中:
在这里插入图片描述
运行下面的命令编译它得到ELF可执行程序:

arm-buildroot-linux-gnueabihf-gcc -o I2C_tools_control_ATP2126C I2C_tools_control_ATP2126C.c  -L/home/book/mybuild/i2c-tools-4.2/tmp/usr/local/lib -li2c

在这里插入图片描述

测试生成的可执行程序

将刚才交叉编译生成的ELF可执行程序复制到NFS网络文件目录中:
在这里插入图片描述

打开串口终端→打开开发板→挂载网络文件系统:

mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt

然后运行下面的命令执行程序:

cd /mnt/IC2_app2
./I2C_tools_control_ATP2126C

运行结果如下:
在这里插入图片描述
然后我用手电筒照向芯片AP3216C,运行结果如下:
在这里插入图片描述
可见光照强度的数值变大了很多。

接下来我再用我的手指靠近芯片AP3216C,运行结果如下:

可见距离接近值也变大了很多,说明程序没有问题,测试成功。

在这里插入图片描述

附代码文件和编译好的ELF可执行程序

https://pan.baidu.com/s/1H6n1CtONgR8JPpqciKq6ww?pwd=z4us

相关文章:

利用Linux的I2C子系统和i2c-tools工具集写出的对I2C设备AP3216C读写的应用程序

前言 由于NXP官方提供的BSP里已经包含了其片上I2C控制器的驱动并接入到了Linux的I2C子系统&#xff0c;所以我们可以直接去写与I2C有关的应用程序了。 在本篇博文中我们用两种方式对I2C设备AP3216C进行读写操作。 第一种&#xff1a;直接利用Linux的I2C子系统对I2C设备AP3216…...

springCloud集成tdengine(原生和mapper方式) 其二 原生篇

mapper篇请看另一篇文章 一、引入pom文件 <!-- TDengine 连接器--><dependency><groupId>com.taosdata.jdbc</groupId><artifactId>taos-jdbcdriver</artifactId><version>3.5.3</version></dependency>二、在nacos中填…...

gralloc usage flags

下面这些示例主要说明了 gralloc usage flags 在图像处理和多媒体应用中如何影响性能和正确性。让我们逐个详细分析每个问题的 根因 和 修复方案&#xff0c;并深入解析 gralloc 标志对 缓存管理 和 数据流 的影响。 ✅ Example 1: 长曝光快照耗时异常 &#x1f4cc; 问题描述…...

RIP路由欺骗攻击与防御实验详解

一、基础网络配置 1. 路由器R1配置 interface GigabitEthernet0/0/0ip address 192.1.2.254 255.255.255.0 ! interface GigabitEthernet0/0/1ip address 192.1.3.254 255.255.255.0 ! router rip 1version 2network 192.1.2.0network 192.1.3.0 2. 路由器R2配置 interface…...

在 Linux下使用 Python 3.11 和 FastAPI 搭建带免费证书的 HTTPS 服务器

在当今数字化时代&#xff0c;保障网站数据传输的安全性至关重要。HTTPS 协议通过使用 SSL/TLS 加密技术&#xff0c;能够有效防止数据在传输过程中被窃取或篡改。本教程将详细介绍如何在 Ubuntu 22.04 系统上&#xff0c;使用 Python 3.11 和 FastAPI 框架搭建一个带有免费 SS…...

[QMT量化交易小白入门]-三十五、如何将聚宽策略信号转为QMT实盘交易

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读一、聚宽模拟运行:构建交易策略的基础在聚宽…...

国思RDIF低代码快速开发框架 v6.2版本发布

1、平台介绍 国思RDIF企业级低代码开发平台&#xff0c;给用户和开发者最佳的框架平台方案&#xff0c;为企业快速构建跨平台、企业级的应用提供强大支持。致力于解决企业信息化项目交付难、实施效率低、开发成本高的问题。能帮助企业快速构建美观易用、架构专业、安全可控的企…...

学习笔记 ASP.NET Core Web API 8.0部署到iis

一.修改配置文件 修改Program.cs配置文件将 if (app.Environment.IsDevelopment()) {app.UseSwagger();app.UseSwaggerUI(); }修改为 app.UseSwagger(); app.UseSwaggerUI(); 二.安装ASP.NET Core Runtime 8.0.14 文件位置https://dotnet.microsoft.com/en-us/download/do…...

【Linux】信号:产生信号

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.信号信号处理简单理解信号的发送和保存由软件产生的信号由硬件&#xff08;异常&#xff09;产生的信号 01.信号 进程信号是操作系统提供的一种异步通知机制&#xff0c;用于…...

单片机自学总结

自从工作以来&#xff0c;一直努力耕耘单片机&#xff0c;至今&#xff0c;颇有收获。从51单片机&#xff0c;PIC单片机&#xff0c;直到STM32&#xff0c;以及RTOS和Linux&#xff0c;几乎天天在搞:51单片机&#xff0c;STM8S207单片机&#xff0c;PY32F003单片机&#xff0c;…...

Idea集成docker通过ca加密实现镜像打包

​ Idea集成docker实现镜像打包_ideadocker镜像打包-CSDN博客 ​ 之前通过这种方式虽然可以实现idea通过maven打jar包的同时把docker镜像也进行打包&#xff0c;但是这种方式存在很大漏洞&#xff0c;就是服务器的2375端口大开&#xff0c;任何人拿着idea通过这种方式都可以连…...

【Prometheus】prometheus标签替换label_replace,动态修改生成标签,增强查询的灵活性和表达能力

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...

蓝桥杯 之 暴力回溯

文章目录 数字接龙小u的最大连续移动次数问题 在蓝桥杯中&#xff0c;十分喜欢考察对于网格的回溯的问题&#xff0c;对于这类的问题&#xff0c;常常会使用到这个DFS和BFS进行考察&#xff0c;不过无论怎么考察&#xff0c;都只是会在最基础的模本的基础上&#xff0c;根据这个…...

在K8S中挂载 Secret 到 Pod

在 Kubernetes 里&#xff0c;把 Secret 挂载到 Pod 中有两种主要方式&#xff1a;作为卷挂载和作为环境变量挂载。下面为你提供相应的代码示例。 作为卷挂载 Secret 将 Secret 作为卷挂载到 Pod 时&#xff0c;Secret 的每个键会成为挂载目录下的一个文件&#xff0c;文件内…...

LINUX网络编程API原型详细解析

1. 网络体系 1.1. 简介 网络采用分而治之的方法设计&#xff0c;将网络的功能划分为不同的模块&#xff0c;以分层的形式有机组合在一起。 每层实现不同的功能&#xff0c;其内部实现方法对外部其他层次来说是透明的。每层向上层提供服务&#xff0c;同时使用下层提供…...

Android 13 Launcher3最近任务列表“全部清除“按钮位置优化实战

一、问题背景与实现难点 在Android 13横屏设备开发中&#xff0c;系统默认将最近任务列表的"全部清除"按钮布局在屏幕左侧&#xff0c;这与用户习惯的底部布局存在明显差异。相较于Android 8.1时代SystemUI模块的实现&#xff0c;Android 13将相关逻辑迁移至Launche…...

docker最新源,及遇到问题+处理

目前国内可用Docker镜像源汇总&#xff08;截至2025年3月&#xff09; - CoderJia 遇到问题&#xff1a; Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:13287->[:…...

Python简单爬虫实践案例

学习目标 能够知道Web开发流程 能够掌握FastAPI实现访问多个指定网页 知道通过requests模块爬取图片 知道通过requests模块爬取GDP数据 能够用pyecharts实现饼图 能够知道logging日志的使用 一、基于FastAPI之Web站点开发 1、基于FastAPI搭建Web服务器 # 导入FastAPI模…...

统信UOS中使用Vscode编程

写在前面&#xff1a;统信UOS其实就是套壳的Linux系统&#xff0c;所以有问题如果搜不到解决方法&#xff0c;可以参考Linux下的解决方法。 1.环境配置 Vscode : 1.85.0 Vscode就直接下载安装就行&#xff0c;然后安装插件&#xff1a;Volar、中文汉化包 node&#xff1a;18…...

C#从入门到精通(1)

目录 第一章 C#与VS介绍 第二章 第一个C#程序 &#xff08;1&#xff09;C#程序基本组成 1.命名空间 2.类 3.Main方法 4.注释 5.语句 6.标识符及关键字 &#xff08;2&#xff09;程序编写规范 1.代码编写规则 2.程序命名方法 3.元素命名规范 第三章 变量 &…...

openharmony中hilog实证记录说明(3.1和5.0版本)

每次用这个工具hilog都有一些小用法记不清&#xff0c;需要花一些时间去查去分析使用方法&#xff0c;为了给丰富多彩的生活留出更多的时间&#xff0c;所以汇总整理共享来了&#xff0c;它来了它来了~~~~~~~~~ 开始是想通过3.1来汇总的&#xff0c;但实际测试发现openharmony…...

飞书 设计智能字段:通过“字段类型”添加AI功能列

在飞书多维表格中&#xff0c;通过“字段类型”添加AI功能列的核心逻辑是将AI模型能力与结构化数据结合&#xff0c;实现自动化内容生成与信息处理。以下是具体操作步骤及关键要点&#xff0c;结合实际应用场景说明&#xff1a; 一、基础操作步骤 创建多维表格 登录飞书&#x…...

Cannot find module @rollup/rollup-win32-x64-msvc

方法1 在package.json中添加postinstall: "scripts": {"postinstall": "node -e \"const { platform } process; if (platform win32) { require(child_process).execSync(npm install rollup/rollup-win32-x64-msvc, { stdio: inherit });…...

Docker和Dify学习笔记

文章目录 1 docker学习1.1 基本命令使用1.1.1 docker ps查看当前正在运行的镜像1.1.2 docker stop停止容器1.1.3 docker compose容器编排1.1.4 docker网络[1] 进入到容器里面敲命令[2] docker network ls[3] brige网络模式下容器访问宿主机的方式 2 Dify的安装和基础使用2.1 下…...

【AIGC】Win10系统极速部署Docker+Ragflow+Dify

【AIGC】WIN10仅3步部署DockerRagflowDify 一、 Docker快速部署1.F2进入bios界面&#xff0c;按F7设置开启VMX虚拟化技术。保存并退出。2.打开控制面板配置开启服务3.到官网下载docker安装包&#xff0c;一键安装&#xff08;全部默认勾选&#xff09; 二、 RagFlow快速部署1.确…...

Oracle ASM 磁盘组冗余策略

Oracle ASM 磁盘组冗余策略 1. 外部冗余&#xff08;External Redundancy&#xff09;2. 普通冗余&#xff08;Normal Redundancy&#xff09;3. 高冗余&#xff08;High Redundancy&#xff09;关键注意事项如何选择合适的策略&#xff1f; Oracle ASM&#xff08;Automatic S…...

C++ 数据结构

C++ 数据结构 概述 C++作为一种强大的编程语言,在软件开发领域有着广泛的应用。数据结构作为C++编程中不可或缺的一部分,它决定了程序的性能和效率。本文将详细介绍C++中的常见数据结构,包括其定义、特点以及在实际应用中的使用方法。 常见数据结构 1. 数组 数组是一种…...

Unity NodeCanvas AI使用笔记

扩展: 1. 输入输出参数限制&#xff0c;增加描述&#xff0c;根据接口判断类型限制 2.选择节点&#xff0c;遍历节点&#xff0c;行为节点 3.行为节点 行为执行的时候有互斥关系&#xff0c;加入一个queue&#xff0c;最后执行 4.NodeCanvas的参数传参可以由上个节点传到下个节…...

(* IOB = “FORCE“ *) 的使用分享

在Xilinx FPGA设计中&#xff0c;IOBFORCE是一个与输入输出块&#xff08;IOB&#xff09;相关的属性设置。这个设置主要用于控制逻辑是否被推入到IOB&#xff08;Input/Output Block&#xff09;中&#xff0c;即FPGA芯片边缘的I/O引脚附近的专用硬件资源。使用IOB属性可以帮助…...

【大语言模型_7】利用ragas框架评测rag系统指标

一、介绍 ragas是一个用来评估RAG系统的框架&#xff0c;允许不在依赖人工注释的情况下&#xff0c;通过一套指标评估检索模块和生成模块的性能及其质量。 二、准备 数据准备&#xff1a;需要准备评估数据集&#xff0c;数据集格式如下 [{"question": "安全智…...

adb常用的命令

1. 查看adb版本 adb version 2. 将apk安装包安装到手机/模拟器上 adb install apk路径 3. 获取apk包名和界面名 包名&#xff08;package&#xff09;&#xff1a;决定程序的唯一性 界面名&#xff08;activity&#xff09;&#xff1a;一个界面界面名&#xff0c;对应一个界面…...

手动集成sqlite的方法

注意到sqlite有backup方法&#xff08;https://www.sqlite.org/backup.html&#xff09;。 也注意到android中sysroot下&#xff0c;没有sqlite3的库&#xff0c;也没有相关头文件。 如果要使用 sqlite 的backup&#xff0c;那么就需要手动集成sqlite代码到项目中。可以如下操…...

自然语言处理(NLP)技术

人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是一种模拟人类智能思维过程的技术&#xff0c;它在现代科技中的应用非常广泛&#xff0c;涉及诸多领域&#xff0c;如自然语言处理、计算机视觉、机器学习、数据分析等。以下是人工智能在现代科技中的应…...

【GPT入门】第25课 掌握 LangChain:链式调用的奥秘、特性与使用示例

【GPT入门】第25课 掌握 LangChain&#xff1a;链式调用的奥秘、特性与使用示例 语法解释各部分性质链式调用的性质调用方式注意事项 语法解释 你给出的代码 is_duplicated_chain (check_duplicated | model | parser) 运用了 LangChain 里的链式调用语法。在 LangChain 中&a…...

机器学习之DBSCAN算法详解

文章目录 引言1. DBSCAN算法概述2.DBSCAN算法的基本概念2.1 ε-邻域2.2 核心点&#xff08;Core Point&#xff09;2.3 边界点&#xff08;Border Point&#xff09;2.4 噪声点&#xff08;Noise Point&#xff09;2.5 直接密度可达&#xff08;Directly Density-Reachable&…...

借助vite来优化前端性能

Vite 是一个现代化的前端构建工具&#xff0c;凭借其基于原生 ES 模块的开发服务器和高效的构建能力&#xff0c;可以显著优化前端性能。 一、开发环境优化 1.快速启动与热更新 Vite 利用浏览器对 ES 模块的原生支持&#xff0c;在开发环境中无需打包&#xff0c;直接按需加载…...

[工控机安全] 使用DriverView快速排查不可信第三方驱动(附详细图文教程)

导语&#xff1a; 在工业控制领域&#xff0c;设备驱动程序的安全性至关重要。第三方驱动可能存在兼容性问题、安全漏洞甚至恶意代码&#xff0c;威胁设备稳定运行。本文将手把手教你使用 DriverView工具&#xff0c;高效完成工控机驱动安全检查&#xff0c;精准识别可疑驱动&a…...

Execution failed for task ‘:path_provider_android:compileDebugJavaWithJavac‘.

What went wrong: Execution failed for task ‘:path_provider_android:compileDebugJavaWithJavac’. Could not resolve all files for configuration ‘:path_provider_android:androidJdkImage’. Failed to transform core-for-system-modules.jar to match attributes {…...

基于SpringBoot的社区/物业管理系统

项目介绍 平台采用B/S结构&#xff0c;后端采用主流的SpringBoot语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。是一个综合的社区/物业管理系统。 整个平台包括前台和后台两个部分。 - 前台功能包括&#xff1a;小区信息、社区论坛、社区公告、社区留言板、个人中心。…...

vmware下linux无法上网解决方法

首先&#xff0c;打开打开"编辑" “虚拟网络编辑器”,并将"桥接"方式的网卡选择为主机上网的网卡。 虚拟机中&#xff0c;设置IP地址为主机网卡同样子网下的ip地址&#xff1a; 并且要选择桥接模式&#xff01;注意如下图&#xff0c;"复制物理连接状…...

【数据库备份】docker中数据库备份脚本——MySql备份脚本

docker中数据库备份脚本——MySql备份脚本 #!/bin/bash# MySQL数据库信息 DB_USER"root" DB_PASSWORD"你的密码"# 备份保存主目录 BACKUP_ROOT"/data/data_backup/mysql"# 最多保留的备份日期文件夹数 MAX_DATE_FOLDERS15# 数组包含要备份的数据…...

SpringBoot 第二课(Ⅰ) 整合springmvc(详解)

目录 一、SpringBoot对静态资源的映射规则 1. WebJars 资源访问 2. 静态资源访问 3. 欢迎页配置 二、SpringBoot整合springmvc 概述 Spring MVC组件的自动配置 中央转发器&#xff08;DispatcherServlet&#xff09; 控制器&#xff08;Controller&#xff09; 视图解…...

centos家用笔记

改用阿里云yum源 因CentOS7已经停止维护&#xff0c;原有的yum源也无法使用&#xff0c;在国内&#xff0c;改用阿里云yum源是个方便的选择。 cd /etc/yum.repos.d/ mkdir backup mv Cent* backup wget http://mirrors.aliyun.com/repo/Centos-7.repo mv Centos-7.repo Cen…...

数据可视化(matplotlib)-------辅助图标的设置

目录 一、认识图表常用的辅助元素 坐标轴 二、设置坐标轴的标签、刻度范围和刻度标签 &#xff08;一&#xff09;、设置坐标轴的标签 1、xlabel()------设置x轴标签 2、ylabel()------设置y轴标签 &#xff08;二) 、设置刻度范围和刻度标签 1、xlim()和ylim()函数分别可…...

15-双链表-双链表基本操作

题目 来源 827. 双链表 - AcWing题库 思路 此题我只想说&#xff0c;千万千万别漏了头结点和尾结点&#xff0c;不然根本查不出来是哪里出了问题&#xff0c;因为传入的k会有问题&#xff1b;最左边插入&#xff0c;相当于是在头结点的右边插入&#xff08;也就是0号节点的右…...

HTTP和RPC的区别

RPC和 HTTP是两种常见的通信方式&#xff0c;它们在设计目标、使用场景和技术实现上有显著区别。以下是它们的详细对比&#xff1a; 1. 定义与核心思想 特性RPCHTTPRemote Procedure Call远程过程调用HyperText Transfer Protocol超文本传输协议定义一种协议或框架&#xff0…...

【Linux内核系列】:动静态库详解

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 有些鸟儿是注定是关不住的&#xff0c;因为它们的每一片羽翼都沾满了自由的光辉 ★★★ 本文前置知识&#xff1a; 编译与链接的过程…...

【IROS 2025】CMU提出路径规划器PIPE:机器人探索效率提升14.6%,地图准确率提高9.3%!

在自主机器人探索未知环境的研究中&#xff0c;如何高效地规划路径、最大化信息获取&#xff0c;一直是一个核心问题。传统的方法往往仅在离散的路径点上计算信息增益&#xff0c;而缺乏对整个路径信息获取的综合考量&#xff0c;从而可能导致探索低效甚至错误的规划决策。近日…...

《笔记》Android 获取第三方应用及查看应用信息、apk大小、缓存、存储,以及第三方清除缓存

获取应用相关信息&#xff1a; PS:manifest标签中设置以下属性表示系统应用 android:process"system" android:sharedUserId"android.uid.system" //获取所有应用&#xff08;非系统apk&#xff0c;有些应用获取不到&#xff09; List<ApplicationInf…...

npm 安装 pnpm 的详细步骤及注意事项

一、安装步骤 1.全局安装 pnpm npm install -g pnpm2.验证安装 pnpm -v输出版本号即表示安装成功。 二、升级 pnpm 若已安装旧版本&#xff0c;可通过以下命令升级&#xff1a; npm install -g pnpmlatest三、配置镜像加速 设置淘宝镜像 pnpm config set registry http…...