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

【STM32项目】在FreeRtos背景下的实战项目的实现过程(二)

在这里插入图片描述

个人主页~

实战项目的实现过程(一)~


实战项目的实现过程

  • 二、初步了解各个外设硬件
    • 1、OLED模块
    • 2、GPS模块
    • 3、MPU6050模块
    • 4、超声测距模块
    • 5、温度测控模块
    • 6、语音模块
    • 7、SIM模块
    • 8、按键模块
  • 三、查阅资料
    • 1、查看手册
    • 2、查找例程
  • 四、研究硬件功能
    • 1、OLED模块
    • 2、GPS模块
    • 3、MPU6050模块
    • 4、语音模块

二、初步了解各个外设硬件

在我们确定好要实现的功能后,我们要找到实现功能所对应的模块,然后将他们的功能简要列举出来

这里我举几个我使用过的硬件的例子,将它们的简单功能以及物理特性罗列一下,在脑子里要清楚

1、OLED模块

对于OLED模块大家应该很熟悉,它对于程序的调试有很好的帮助以及有显示信息等功能,四脚OLED有SDA、SCK、VCC、GND,两根数据线两根电源线,使用IIC通信实现,现在的产品基本都会有显示屏,所以这个也是必不可少的

2、GPS模块

一根天线加一个解析模块,有VCC、GND、TX、RX、PPS,这里的PPS引脚是GPS特有引脚,是GPS模块上的一个特殊引脚,它用于输出每秒一个的脉冲信号,这个信号与UTC时间同步,具有非常高的精度和稳定性

3、MPU6050模块

MPU6050模块是一个6轴的陀螺仪芯片,它是使用IIC通信实现的,由3轴加速度计和3轴陀螺仪传感器,分别测量X、Y、Z轴的加速度以及X、Y、Z轴的角速度

它有VCC、GND、SCL、SDA、XDA、XCL、AD0、INT,其中XDA、XCL就相当于SDA和SCL,INT引脚是中断引脚,可以产生中断信号,可以用来触发中断

4、超声测距模块

超声测距模块功能就是测量物体与模块之间的距离,有GND、ECHO、TRIG、VCC,ECHO和TRIG分别是回响引脚和触发引脚,TRIG引脚用来触发超声波测距模块开始测距,ECHO引脚用来接收并输出超声波从发射到被障碍物反射回来并被接收的时间信息

5、温度测控模块

温度测控模块没啥好说的,就是一个温控电阻,然后可以测量实时温度,有VCC、DQ、GND,DQ引脚是DS18B20等温度传感器的数据输入输出引脚,用于传输温度数据等数字信号

6、语音模块

语音模块就是在特定任务下,中断所要执行的程序,比如说摄像头监控到行人闯红灯,这时,喇叭就可以播报:有人闯红灯了,禁止闯红灯!也就是起到一个警示和提醒的作用

这块芯片引脚比较多,说几个重要的,SPK+和SPK-是外接喇叭引脚,M+和M-是外接咪头,也就是麦克风引脚,然后有VCC、GND等

7、SIM模块

因为我们的项目是一个贴近生活的项目,所以会用到SIM模块,用以报警或将信息传递给指定号码

8、按键模块

按键模块用以触发中断,一般有几个按钮就有几个+1个引脚

三、查阅资料

一般在购买硬件之后商家会给我们发一个资料包,商家不发我们也可以直接要,或者直接从网络上找
在这里插入图片描述

1、查看手册

一般在刚开始上手硬件之前我们要先翻阅一下手册,第一遍看手册主要是看一下各个引脚的协议,简略的知道它们的连接方法,以及电气属性,其实简单来说就是别给弄坏了就行,保持正确的连接,这样方便我们进行调试

2、查找例程

在资料包中找到这个附带的例程,然后将它下载到单片机里跑一跑,然后我们自己来调试一下,保证程序正常运行,也就是裸机开发,将所有需要该模块实现的程序都移植到一个裸机程序中,实现我们预期的效果,这样这一步就OK了

打开核心板的手册,查看每个引脚对应的协议,修改例程中的某些引脚,避免出现多个设备要共用一个引脚的尴尬局面,这都是要提前规划好的

四、研究硬件功能

挑几个用的比较多的模块解析,其中能用到的比如说串口助手

1、OLED模块

OLED模块就是用来显示图片、数字、文字等的,但是因为单片机它并不是计算机,我们在VS上建一个项目,写一个printf就能直接把文字和数字打印出来,再搭配上数学公式,就可以显示一个精美的图形,在单片机上控制OLED屏幕显示就是控制它的像素点亮灭从而达到视觉上的效果,这时候我们就需要一个文件专门用来存放这些像素点组合起来的文字数字以及图片,然后用一个多个二维数组来维护,但我们怎么知道哪些像素点可以组成文字数字和图片呢,这时我们就可以用到取模工具
在这里插入图片描述
要是想要生成图片,就是下面这个图形模式

其实取模软件上面都自带教程的,我这里就不赘述了
在这里插入图片描述
获得的点阵数据存储到数组当中,按照循环打印的方式让像素亮起,这样就在视觉上形成了自己想要的图像

如此一来这个图像的生成就可以用来做我们优先级最低的一项任务,用来显示一些固定的图像,就像游戏机的开始界面,不按按钮就一直显示,按下某个按钮就会进入中断,然后程序跑到游戏任务里面执行游戏界面

2、GPS模块

调试这个模块的时候需要用到USB转TTL
在这里插入图片描述
就是个东西,可以将USB协议转为TTL协议,那么有人会问了:USB我知道,我们平常用的U盘、很多数据线上的插头都是USB的,TTL是什么?

TTL是一种电子电路中的逻辑电平标准,它使用晶体管进行逻辑电平转换,USB转TTL模块的作用是将计算机上的USB接口的信号转换为TTL电平的串口信号,以便与其他支持TTL电平标准的设备进行串口通信,也就是说是计算机与单片机进行串口通信的桥梁

然后请上我们配套的串口助手
在这里插入图片描述
串口助手可以实时接收到来自模块的信息,然后将信息显示甚至保存在文件当中,然后可以对比着商家给的资料就可以解析出经纬度,由于数据涉及到个人位置的隐私问题,就不拿出来举例了,不管是GPS还是北斗定位,它都会涉及到协议问题,再参照使用手册就可以很好理解这个模块的功能,一般这种模块的手册都是很简单的

3、MPU6050模块

这个模块在很多产品中都会用到,像电赛的循迹小车题等的都会用到,只要是要检测运动状态的产品中都会存在这个模块,这个模块很小,有八个引脚大致可以分为四个模块,一个是电源线(VCC、GND),一个是IIC通信线(SDA、SCL、XDA、XCL),一个是中断控制线(INT),一个是地址线(AD0)

电源线就不必多说了,VCC可接3.3V或5V

SCL:I2C通信的时钟线,用于同步数据传输,在I2C通信中,SCL由主设备控制,用于确定数据传输的速率。

SDA:I2C通信的数据线,用于在主设备和从设备之间传输数据。在MPU6050中,SDA引脚用于接收和发送数据

XDA和XCL:这些是MPU6050的辅助I2C接口引脚,用于连接其他外部设备或传感器,并非所有版本的MPU6050都包含这些引脚,具体取决于模块的封装和配置,效果与SCL与SDA相同,目的是将其他设备也挂载到IIC总线上

INT:中断引脚,可用于输出中断信号,当MPU6050检测到特定事件(如数据就绪、超出阈值等)时,可以通过该引脚输出中断信号,通知主控制器进行相应的处理

AD0:地址选择引脚,用于设置MPU6050的I2C地址,通过将该引脚连接到VCC或GND,可以选择不同的I2C设备地址,从而允许在同一I2C总线上连接多个MPU6050模块而不会发生地址冲突

4、语音模块

语音模块的使用可以是外接一个喇叭,或者一个喇叭一个咪头,对于语音模块的使用还是按照步骤来,发来的资料包中看手册看功能,然后再在网络上搜索,这里调试硬件也是需要USB转TTL,可以极大程度的方便我们使用模块,不过这里我们用到的功能是烧录

按照教程的说法,我们可以在某平台上进行固件下载,未来我们要输出的语音指令就可以是对应固件的,比如说固件的语音输出的包头包尾我们可以写在单片机程序当中,然后再在中间加入要语音输出的内容,这样我们就可以很好的将该模块适配到单片机上
在这里插入图片描述
网上教程有很多,对于入门使用很详细,入门之后自己挖掘就可以了,这样一个固件就下载好了,这个模块也就调试好了,当然编写程序的时候一定要看这个固件的协议是什么样的,以便对症下药

我所使用的芯片是SU-03T,是一款较普遍且稳定的语音模块芯片
在这里插入图片描述
下载是用的烧录工具,在网上可以找到烧录教程
在这里插入图片描述

固件对每个引脚都有配置的参数,用户可以自行调整,如果装载着咪头,还可以进行语音唤醒,语音识别后进行相应的操作,这样可以做一些智能家居、智能遥控器、智能音箱啥的


写到这里我突然明白了为什么现在的企业对于这些智能家居、智能小车那么不感冒了,实现的原理在我们梳理模块功能的时候就能将一个小项目给规划出来,包括智能门锁这样的项目,我在网上看到过教程,裸机开发就能搞定,只需要4*4的按钮,这样的项目还不如做一个小型的游戏机,起码小型的游戏机里面的游戏逻辑也就是代码部分要求还是比较高的,像我C语言项目里面的贪吃蛇游戏就可以进行修改然后做成小游戏机

但进行一些类似上面所说的小的项目实践对于深入了解STM32的各种外设是帮助很大的,因为软硬结合的这种工作是需要动手实践的,只看教程和书本是效率很低的一种行为,练手是可以的,搬上台面就没啥竞争力了


今日分享就到这里了~

在这里插入图片描述

相关文章:

【STM32项目】在FreeRtos背景下的实战项目的实现过程(二)

个人主页~ 实战项目的实现过程(一)~ 实战项目的实现过程 二、初步了解各个外设硬件1、OLED模块2、GPS模块3、MPU6050模块4、超声测距模块5、温度测控模块6、语音模块7、SIM模块8、按键模块 三、查阅资料1、查看手册2、查找例程 四、研究硬件功能1、OLED…...

javaer快速入门 goweb框架 gin

gin 入门 前置条件 安装环境 配置代理 # 配置 GOPROXY 环境变量,以下三选一# 1. 七牛 CDN go env -w GOPROXYhttps://goproxy.cn,direct# 2. 阿里云 go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct# 3. 官方 go env -w GOPROXYhttps://goproxy.…...

SQL - 数据类型

字符串类型 char(10),存储固定长度字符串 varchar(255),存储可变长度字符串 mediumtext,中文本,对于存储JSON对象、SCV字符串很好使 longtext,长文本,可以很好地存储教本或许多年地日志文件 tinytext&#…...

进程相关知识

进程和程序的区别 程序 程序是静态的,是存储在硬盘、SSD等存储介质中的一个文件,通常由源代码(如 .c 文件)编译生成的二进制可执行文件(如 a.out)。程序包含了指令和数据,但在未被执行时&#…...

萝卜快跑和端到端的自动驾驶(1)

先看一篇论文 2311.18636 (arxiv.org) 这篇论文里有一个非常好的图 比较了一下模块化任务(级联任务)和端到端自动驾驶的区别 首先什么叫模块化任务(级联) 如上图所示,左边的方块中的子方块,是展示了自动驾驶获取数据的途径,这里包括&…...

通信原理学习笔记

一个手机通话需要经过下面三个网络 类别接入网(Access Network)承载网(Transport Network)核心网(Core Network)定义连接终端用户与电信网络的部分。在接入网和核心网之间传输数据的网络。处理、交换和管理…...

系统编程---day4

1. 链接文件 命令行: ln -s 文件名 softlink 1.1 symlink int symlink(const char *oldpath, const char *newpath); 功能:创建一个链接向oldpath文件的新符号链接文件 参数:oldpath:被链接向的文件的路径 newpath:新符号链接文件 返回值:成功返回0,失败返回…...

01:电容的什么,各类电容的优缺点

1.电容是什么? 电容是由两块不连通的导体,已经中间的不导电材料组成 电容结构: 1.2电容的容量计算公式 C ε s d \displaystyle\frac{εs}{d} dεs​ 1.3常见电容的种类 1.4各类电容的特点...

Android+Jacoco+code-diff全量、增量覆盖率生成实战

背景 主要是记录下Android项目使用jacoco生成代码覆盖率的实战流程,目前已完成全量覆盖方案,仅使用jacoco就能实现; 由于我们的Android端是使用Java和kotlin语言,目前增量的方案code-diff仅针对Java代码,卡在kotlin文件的分析&am…...

乌龟对对碰在线版

爆肝两天使用vue开发了一个在线版的乌龟对对碰小游戏之幸运对对碰。没有找到合适的乌龟素材,现在使用小兔子代替。 体验地址:幸运对对碰 | 乌龟对对碰小游戏 之前的python版本的乌龟对对碰:写文章-CSDN博客 乌龟对对碰-幸运对对碰...

如何更改select option边框颜色和选中的颜色

<!doctype html> <html> <head> <meta charset"utf-8"> <title>如何更改select option边框颜色和选中的颜色</title> </head><style>ul{border: 1px solid #000000;width: 500px;height: auto;background-color: aq…...

6. 数据结构—串的匹配算法

1.BF算法(暴力算法) //模式匹配(暴力算法) int Index(SString S,SString T){int i1,j1;while(i<S.length&&j<T.length){if(S[i]T[i]){i;j;}else{ii-j2; //最开始匹配的位置的后一个j1; //从头匹配 }}if(j>T.length)return i-T.length;return return 0…...

九大服务架构性能优化方式

来源&#xff1a;九大服务架构性能优化方式 目录 性能优化九大方式&#xff1a; 缓存 使用什么样的缓存 缓存常见问题 缓存淘汰 缓存数据一致性 并行化处理 批量化处理 数据压缩合并 无锁化 顺序写 分片化 避免请求 池化 异步处理 总结 最近做了一些服务性能优…...

【RabbitMQ】 相关概念 + 工作模式

本文将介绍一些MQ中常见的概念&#xff0c;同时也会简单实现一下RabbitMQ的工作流程。 MQ概念 Message Queue消息队列。是用来存储消息的队列&#xff0c;多用于分布式系统之间的通信。 系统间调用通常有&#xff1a;同步通信和异步通信。MQ就是在异步通信的时候使用的。 同…...

嵌入式学习 ——(Linux高级编程——进程)

目录 一、进程的含义 二、进程和程序的区别 三、进程的作用 四、进程的状态 五、进程的调度与上下文切换 六、查询进程相关命令 七、fork()函数 八、getpid()和getppid()函数 九、面试题解析&#xff1a; 十、应用场合及测试 一、进程的含义 进程指正在运行的程序&a…...

C++练习备忘录

1. 保留两位小数输出格式 #include <iostream> #include <iomanip> using namespace std; int main() {double S 0;S (15 25) * 20 / 2;cout << fixed << setprecision(2) << S;return 0; }2. 设置输出宽度 #include <iostream> #inclu…...

改善工作流

快捷键管理器 打开Editor->Shortcuts查看和编辑Unity中的快捷键 示例 ShiftSpace 窗口最大化 P 选择预制体 进入预制体编辑模式 单一检视窗口 选择组件&#xff0c;选择Properties打开一个窗口&#xff0c;显示组件信息&#xff1b;切换对象&#xff0c;窗口信息不会改变…...

迭代器失效

一、什么是迭代器失效 迭代器的主要作用就是让算法能够不用关心底层数据结构&#xff0c;其底层实际就是一个指针&#xff0c;或者是对指针进行了封装&#xff0c;比如&#xff1a;vector的迭代器就是原生态指针T* 。因此迭代器失效&#xff0c;实际就是迭代器底层对应指针所指…...

@RequestParam @RequestBody @PathVariable 这三个注解对应的前端使用vue的http请求时不同的调用方式

1. RequestParam 用途&#xff1a;用于提取请求参数&#xff0c;常见于GET请求或表单提交。 Vue HTTP 请求示例&#xff1a; // 使用axios发送GET请求 axios.get(/api/users, { params: { id: 1, name: John } }); 2. RequestBody 用途&#xff1a;用于提取请求体…...

SQL - 索引

索引本质上是数据库引擎用来快速查找数据的数据结构&#xff0c;可以显著提高查询的性能&#xff0c;为了加快运行较慢的查询。创建索引 默认索引 create index 索引名 on 表名 (列名); 通过对列名进行创建索引&#xff0c;在查询的时候&#xff0c;数据库就能通过索引找到匹配…...

Oracle23ai新特性FOR LOOP循环控制结构增强

在Oracle数据库中&#xff0c;FOR LOOP是一种常用的循环控制结构&#xff0c;它允许你重复执行一系列语句固定次数或直到满足特定条件为止。然而&#xff0c;标准的Oracle PL/SQL中的FOR LOOP主要用于遍历集合&#xff08;如数组或游标的结果集&#xff09;&#xff0c;而不是像…...

DHU OJ 二维数组

思路及代码 #include<iostream> using namespace std; int main(){ //input 多组 //input M,N int 1< <20 //input M 行 N 列 数据 //initialize listint M, N;while (cin >> M >> N){int list[M][N];for (int i 0; i < M-1; i){for (int j 0; j…...

UDP/TCP --- Socket编程

本篇将使用 Linux 中的系统调用来实现模拟 TCP 和 UDP 的通信过程&#xff0c;其中只对 UDP 和 TCP 进行了简单的介绍&#xff0c;本篇主要实现的是代码&#xff0c;至于 UDP 和 TCP 的详细讲解将会在之后的文章中给出。 本篇给出的 tcp 和 udp 的代码中的 echo 都是测试连接是…...

【C语言】最详细的单链表(两遍包会!)

&#x1f984;个人主页:小米里的大麦-CSDN博客 &#x1f38f;所属专栏:C语言数据结构_小米里的大麦的博客-CSDN博客 &#x1f381;代码托管:黄灿灿/数据结构 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、前言 二、单链表的概念 1. 单链表的特点 2. 单链表的基本…...

QT:VS2019 CMake编译CEF

CEF介绍 CEF作为一个基于Chromium的开源Web浏览器控件&#xff0c;为第三方应用提供了强大的嵌入浏览器支持。其多平台支持、HTML5特性、自定义能力以及多进程架构等特性&#xff0c;使得CEF在浏览器开发、桌面应用、开发工具以及自动化测试等领域得到了广泛应用。 多平台支持…...

day31(8/19)——静态文件共享、playbook

目录 一、ansible模块 script模块 copy模块 使用command模块下载 nfs-utils rpcbind 在被控制的主机上添加static目录&#xff0c;并创建test文件 command模块 service模块 二、playbook 三、playbook编排vsftpd 1、安装 2、卸载 3、启动服务 4、修改配置文件设置不…...

白骑士的C#教学实战项目篇 4.4 游戏开发

系列目录 上一篇&#xff1a;白骑士的C#教学实战项目篇 4.3 Web开发 在这一部分&#xff0c;我们将探索如何使用 Unity 和 C# 开发游戏。游戏开发结合了编程、图形设计和创意&#xff0c;既充满挑战又充满乐趣。通过这一节的学习&#xff0c;您将了解游戏引擎的基础知识&#…...

在Vue工程中开发页面时,发现页面垂直方向出现两个滚动条的处理

在Vue工程中开发页面时&#xff0c;发现页面垂直方向出现两个滚动条 最近在开发页面时&#xff0c;发现页面多了两个滚动条&#xff0c;如图&#xff1a; 原因&#xff1a; 当一个页面的内容高度大于屏幕的高度时就会出现滚动条。一般情况下当一个页面高度大于屏幕高度时&a…...

【C++初阶】:C++入门篇(一)

文章目录 前言一、C命名空间1.1 命名空间的定义1.2 命名空间的使用 二、C的输入和输出2.1 cin和cout的使用 三、缺省参数3.1 缺省参数的分类 四、函数重载4.1 函数重载概念及其条件4.2 C支持函数重载原理 -- 名字修饰 前言 C是在C语言的基础之上&#xff0c;增加了一些面向对象…...

【JAVA CORE_API】Day14 Collection、Iterator、增强for、泛型、List、Set

Collection接口及常用方法 Collection<Object> collection new ArrayList();&#xff1a;实例化ArrayList集合对象&#xff1b; collectionName.add(Object obj);&#xff1a;在集合中增加元素&#xff1b; int sizeName collectionName.size();&#xff1a;获取集合…...

Go更换国内源配置环境变量

背景 要在中国境内下载和使用Go编程语言的包&#xff0c;可以使用国内的Go模块代理来加速下载速度。以下是一些常见的国内Go模块代理源以及如何切换到这些源的方法&#xff1a; 常见国内Go模块代理源 七牛云&#xff08;Qiniu&#xff09; https://goproxy.cn 阿里云&#xff0…...

澎湃认证显实力,浪潮信息存储兼容新篇章

浪潮信息在存储技术兼容性领域取得新突破&#xff0c;其集中式存储HF/AS系列与长擎安全操作系统24强强联合&#xff0c;成功完成澎湃技术认证。此次合作不仅验证了双方产品的无缝对接能力&#xff0c;更体现了浪潮信息在推动全产业链共建共享方面的坚定决心。 浪潮信息澎湃技术…...

Leetcode 3255. Find the Power of K-Size Subarrays II

Leetcode 3255. Find the Power of K-Size Subarrays II 1. 解题思路2. 代码实现 题目链接&#xff1a;3255. Find the Power of K-Size Subarrays II 1. 解题思路 这一题是题目3254的进阶版&#xff0c;其实主要就是增加了算法复杂度。 整体上来说的话思路还是一个分段的思…...

Kotlin学习02-变量、常量、整数、浮点数、操作符、元组、包、导入

变量、常量、整数、浮点数、操作符、元组、包、导入 Book.kt package com.wujialiang.packclass Book {var title: String "Hello" }val PI 3.14; val E 2.178;Main.kt //引入包 //import com.wujialiang.pack.Book; import com.wujialiang.pack.*; //重命名导…...

C++的模板简介

文章目录 一、前言二、函数模板&#xff08;Function Template&#xff09;三、类模板&#xff08;Class Template&#xff09;四、变参模板&#xff08;Variadic Template&#xff09;五、模板的递归与元编程六、模板的局限与陷阱七、常用模板的实例八、C20 的概念&#xff08…...

树莓派5 笔记25:第一次启动与配置树莓派5_8G

今日继续学习树莓派5 8G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下&#xff1a; 今日购得了树莓派5_8G版本&#xff0c;性能是同运…...

Melittin 蜂毒肽;GIGAVLKVLT TGLPALISWI KRKRQQ

【Melittin 蜂毒肽 简介】 蜂毒肽&#xff08;Melittin&#xff09;是蜜蜂毒液中的主要活性成分&#xff0c;由26个氨基酸组成&#xff0c;具有强碱性&#xff0c;易溶于水&#xff0c;是已知抗炎性最强的物质之一。蜂毒肽具有多种生物学、药理学和毒理学作用&#xff0c;包括…...

day32

更新源 cd /etc/apt/ sudo cp sources.list sources.list.save 将原镜像备份 sudo vim sources.list 将原镜像修改成阿里源/清华源&#xff0c;如所述 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiver…...

【clickhouse】 使用 SQLAlchemy 连接 ClickHouse 数据库的完整指南

我听见有人猜 你是敌人潜伏的内线 和你相知多年 我确信对你的了解 你舍命救我画面 一一在眼前浮现 司空见惯了鲜血 你忘记你本是娇娆的红颜 感觉你我彼此都那么依恋 &#x1f3b5; 许嵩《内线》 ClickHouse 是一款非常高效的开源列式数据库&#xff0c;因…...

按键收集单击,双击和长按

按键收集单击,双击和长按 引言 在我们生活中, 按键是必不可少的, 不同的电器, 有不同的按键, 但是按键总有不够用的时候, 那么给与一个按键赋予不同的功能,就必不可少了. 一个按键可以通过按下的时间长短和频次, 来定义其类型。 一次按键收集&#xff0c; 都是在一个按键收集周…...

进程的异常终止

进程的异常终止 进程收到了某些信号&#xff0c;他杀 进程自己调用abort函数&#xff0c;产生了SIGABRT(6)信号&#xff0c;自杀 进程的最后一个线程收到了"取消"操作&#xff0c;并且做出响应 如果进程是异常结束的&#xff0c;atexit\on_exit它们事先注册的遗言…...

并发编程 | Future是如何优化程序性能

在初识Future一文中介绍了Future的核心方法。本文中接着介绍如何用Future优化我们的程序性能。 在此之前&#xff0c;有必要介绍Future接口的一个实现类FutureTask。 FutureTask介绍 FutureTask继承结构 首先我们看一下FutureTask的继承结构&#xff1a; public class Futur…...

Oracle笔记

一、 如何解决 sqlplus 无法使用退格键和方向键 .bashrc 中添加如下内容&#xff0c;解决 退格键 stty erase ^h 安装 rlwap 后&#xff0c;执行如下命令可解决 方向键 rlwap sqlplus 二、 都有哪些备份数据到工具 三、 谈谈 你对 oracle 中实例和数据库的理解 数据库是一…...

LVS+Keepalived 双机热备

LVSKeepalived 双机热备 Keepalived案例分析Keepalived工具介绍Keepalived工具介绍一、功能特点 一、理解Keepalived实现原理实验报告资源列表一、安装keepalived以及ipvsadm Keepalived案例分析 企业应用中&#xff0c;单台服务器承担应用存在单点故障的危险单点故障一旦发生…...

Web Image scr图片从后端API获取基本实现

因系统开发中需求&#xff0c;会有页面显示图片直接从后端获取后显示&#xff0c;代码如下&#xff1a; 后端&#xff1a; /*** 获取图片流* param response* param fileName*/RequestMapping(value"getImgStream",method RequestMethod.GET)public void getImgStr…...

2024音频剪辑指南:探索四大高效工具!

音频剪辑不仅仅是技术活&#xff0c;更是一种艺术创作&#xff0c;它能够让声音更加生动、更具感染力。今天&#xff0c;我们就来探索几款优秀的音频剪辑工具。 福昕音频剪辑 链接&#xff1a;www.pdf365.cn/foxit-clip/ 福昕音频剪辑是一款界面简洁、操作直观的音频编辑软件…...

“CSS”第一步——WEB开发系列13

CSS (Cascading Style Sheets&#xff0c;层叠样式表&#xff09;&#xff0c;是一种用来为结构化文档&#xff08;如 HTML 文档或 XML 应用&#xff09;添加样式&#xff08;字体、间距和颜色等&#xff09;的计算机语言&#xff0c;CSS 文件扩展名为 .css。 一、什么是 CSS&a…...

IEEE802网络协议和标准

IEEE802网络协议和标准 802委员会IEEE 802介绍现有标准 IEEE 802.3介绍物理媒介类型MAC子层与LLC子层主要内容通讯标准POE供电标准802.3af、802.3at、802.3btIEEE802.3af的工作过程&#xff1a;IEEE802.3af主要供电参数&#xff1a;IEEE802.3af的分级参数&#xff1a;为什么会有…...

vulnhub靶机 DC-9(渗透测试详解)

一、靶机信息收集 1、靶机下载 https://download.vulnhub.com/dc/DC-9.zip 2、靶机IP扫描 3、探测靶机主机、端口、服务版本信息 4、靶机目录扫描 二、web渗透测试 1、访问靶机IP 查看页面功能点&#xff0c;发现一个搜索框和登录框 2、测试一下是否存在sql注入 查看当前数…...

javaweb的新能源充电系统pf

TOC springboot339javaweb的新能源充电系统pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不可跨域…...