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

【ESP32】ESP-IDF开发 | DAC数模转换器+余弦波输出例程

1. 简介

        ESP32上的数字模拟转换器 (DAC) 带有 2 个 8 位通道,因此可输出2路模拟信号。在低功耗模式下也可由 ULP 协处理器通过控制寄存器来实现完全控制。内部自带余弦波形生成器,可用于生成余弦波形/正弦波形,用户可调整频率、振幅、相位和直流偏移

2. 例程

        例程中使用到一个串口示波器上位机,下载地址在这:VOFA+

2.1 余弦波生成

        这个例程使用DAC生成一个余弦波,然后连接ADC进行捕获,捕获的数据发到上位机中。

#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"
#include "freertos/semphr.h"
#include "esp_log.h"
#include "esp_adc/adc_oneshot.h"
#include "driver/dac_cosine.h"
#include "soc/soc_caps.h"#include <string.h>#define TAG "app"adc_oneshot_unit_handle_t adc_handle = NULL;
dac_cosine_handle_t dac_handle = NULL;
int adc_raw = 0;int app_main()
{/* 初始化DAC */dac_cosine_config_t cos_cfg = {.chan_id = DAC_CHAN_0,  // 通道0.freq_hz = 1000,  // 1kHZ.clk_src = DAC_COSINE_CLK_SRC_DEFAULT,  // 默认时钟源,RTC_FAST_CLK.offset = 0,  // DC偏移.phase = DAC_COSINE_PHASE_0,.atten = DAC_COSINE_ATTEN_DEFAULT,  // 不衰减.flags.force_set_freq = false,};ESP_ERROR_CHECK(dac_cosine_new_channel(&cos_cfg, &dac_handle));ESP_ERROR_CHECK(dac_cosine_start(dac_handle));/* 初始化ADC */adc_oneshot_unit_init_cfg_t adc_init = {.unit_id = ADC_UNIT_1,};ESP_ERROR_CHECK(adc_oneshot_new_unit(&adc_init, &adc_handle));adc_oneshot_chan_cfg_t adc_cfg = {.bitwidth = ADC_BITWIDTH_12,.atten = ADC_ATTEN_DB_12,};ESP_ERROR_CHECK(adc_oneshot_config_channel(adc_handle, ADC_CHANNEL_0, &adc_cfg));while(1) {ESP_ERROR_CHECK(adc_oneshot_read(adc_handle, ADC_CHANNEL_0, &adc_raw));printf("adc:%d\n", adc_raw);vTaskDelay(1);}
}

        DAC的余弦生成器初始化结构体定义如下:

typedef struct {dac_channel_t chan_id;uint32_t freq_hz;dac_cosine_clk_src_t clk_src;dac_cosine_atten_t atten;dac_cosine_phase_t phase;int8_t offset;struct {bool force_set_freq: 1;} flags;
} dac_cosine_config_t;
  • chan_id:DAC通道(0-1);
  • freq_hz:输出频率,建议设置为120-200000之间,单位HZ;
  • clk_src:时钟源,默认为RTC_FAST;
  • atten:信号衰减;
  • phase:相位;
  • offset:直流偏移;
  • force_set_freq:强制设置频率。

        ADC我使用单次采集模式,配置ADC1,通道0,12db衰减。主循环中不断读取ADC值,并发送到串口。最后加一个delay防止看门狗超时。需要注意的是,ADC采集的频率一定要高于DAC输出频率的两倍或以上(采样定律),不然波形会失真

2.2 三角波生成

        生成其他的波形需要使用DAC的连续输出功能。

#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"
#include "freertos/semphr.h"
#include "esp_log.h"
#include "esp_adc/adc_oneshot.h"
#include "driver/dac_continuous.h"
#include "soc/soc_caps.h"#include <string.h>#define TAG "app"adc_oneshot_unit_handle_t adc_handle = NULL;
dac_continuous_handle_t dac_handle = NULL;
uint8_t wave[400];
int adc_raw = 0;int app_main()
{/* 生成波形 */for (int i = 0; i < 400; i ++) {wave[i] = (i > (400 / 2)) ? (2 * 255 * (400 - i) / 400) : (2 * 255 * i / 400);}/* 初始化DAC */dac_continuous_config_t cont_cfg = {.chan_mask = DAC_CHANNEL_MASK_CH0,.desc_num = 8,.buf_size = 2048,.freq_hz = 20000,  // 400kHz.offset = 0,.clk_src = DAC_DIGI_CLK_SRC_DEFAULT,.chan_mode = DAC_CHANNEL_MODE_SIMUL,};ESP_ERROR_CHECK(dac_continuous_new_channels(&cont_cfg, &dac_handle));ESP_ERROR_CHECK(dac_continuous_enable(dac_handle));ESP_ERROR_CHECK(dac_continuous_write_cyclically(dac_handle, wave, sizeof(wave), NULL));/* 初始化ADC */adc_oneshot_unit_init_cfg_t adc_init = {.unit_id = ADC_UNIT_1,};ESP_ERROR_CHECK(adc_oneshot_new_unit(&adc_init, &adc_handle));adc_oneshot_chan_cfg_t adc_cfg = {.bitwidth = ADC_BITWIDTH_12,.atten = ADC_ATTEN_DB_12,};ESP_ERROR_CHECK(adc_oneshot_config_channel(adc_handle, ADC_CHANNEL_0, &adc_cfg));while(1) {ESP_ERROR_CHECK(adc_oneshot_read(adc_handle, ADC_CHANNEL_0, &adc_raw));printf("adc:%d\n", adc_raw);vTaskDelay(1);}
}

        DAC连续输出模式的初始化结构体定义如下:

typedef struct {dac_channel_mask_t chan_mask;uint32_t desc_num;size_t buf_size;uint32_t freq_hz;int8_t offset;dac_continuous_digi_clk_src_t clk_src;dac_continuous_channel_mode_t chan_mode;
} dac_continuous_config_t;
  • chan_mask:通道遮罩,即定义输出通道;
  • desc_num:DMA的描述符数量,必需是DMA缓冲区大小的整数倍
  • buf_size:DMA缓冲区大小,必需在32-4096之间
  • freq_hz:输出频率,因为分频因子最大是255,所以要根据选择的时钟源频率确定频率范围
  • offset:偏移,范围-128~127;
  • clk_src:时钟源,PLL时钟或2分频PLL时钟;
  • chan_mode:通道模式,连续或间隔模式。

        代码一开始需要定义一个数组,里面放要生成波形的一个周期的数据,当然数组越大波形的分辨率就越高。使能DAC后,通过dac_continuous_write_cyclically函数配置输出,这样驱动会连续地将数组值通过DMA输入到DAC中。ADC和串口打印的代码和上面一样。

相关文章:

【ESP32】ESP-IDF开发 | DAC数模转换器+余弦波输出例程

1. 简介 ESP32上的数字模拟转换器 (DAC) 带有 2 个 8 位通道&#xff0c;因此可输出2路模拟信号。在低功耗模式下也可由 ULP 协处理器通过控制寄存器来实现完全控制。内部自带余弦波形生成器&#xff0c;可用于生成余弦波形/正弦波形&#xff0c;用户可调整频率、振幅、相位和直…...

java中的递归

大家好&#xff0c;今天我们来学习一下java中的递归&#xff0c;相信大家应该也对递归有一点了解吧&#xff0c;如果没有也没有关系&#xff0c;我们现在就来了解一下。 五、递归 自身中包含了自己,遇到的问题直接并不好解决,但是发现将原问题拆分成其子问题之后,子问题与原问…...

残差网络连接,使得输入与输出的尺寸一样

def forward(self, x):out self.layer1(x)out self.layer2(out)# 使用插值将输入x上采样至与layer2输出相同的尺寸x F.interpolate(x, size(out.size(2), out.size(3)), modebilinear, align_cornersFalse)# 确保x的通道数与out匹配x x[:, :out.size(1), :, :] # 选择前ou…...

SAP SD学习笔记18 - 投诉处理4 - 请求书订正依赖,投诉处理流程的总结

上一章讲了 Credit/Debit Memo依赖&#xff0c;Credit/Debit Memo。Credit Memo依赖 本质上是一张受注票&#xff1b;Credit Memo 本质上是一张请求票。 SAP SD学习笔记17 - 投诉处理3 - Credit/Debit Memo依赖&#xff0c;Credit/Debit Memo-CSDN博客 本章继续讲本图中的内容…...

记录下nginx接口代理配置问题

其中api和api1是前面定义的upstream&#xff0c;ip相同只是端口不同。 一开始/api1/直接 像api一样 proxy_pass http://api1这样是不行的&#xff0c;因为会代理到 后端的 /api1/...接口&#xff0c;而后端实际接口地址是 /api/..... 所以必须像上面写法才能将外网的 /api…...

flink-connector-mysql-cdc:01 mysql-cdc础配置代码演示

flink-connector-mysql-cdc&#xff1a; 01 mysql-cdc基础配置代码演示02 mysql-cdc高级扩展03 mysql-cdc常见问题汇总04 mysql-cdc-kafka生产级代码分享05 flink-kafka-doris生产级代码分享06 flink-kafka-hudi生产级代码分享 flink-cdc版本&#xff1a;3.2.0 flink版本&…...

001-Redis介绍

目录 一、Redis 简介 二、Redis 特性 三、Redis 下载安装 四、Redis 可视化管理界面工具 一、Redis 简介 1.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的 key-value 数据库。 2. 它在内存中存储数据,并提供了持久化功能,可以将数据保存到磁盘中,它是一种 NoS…...

数据结构---单链表

目录 一、概念 二、分类 1. 单向或者双向 2. 带头或者不带头 3. 循环或者非循环 三、接口实现 1.定义结构 2、申请节点 3、尾插 4、头插 5、尾删 6、头删 7.查找&#xff0c;也可以充当修改 8、在pos之前插入x 9、在pos之后插入x ​编辑 10、删除pos位置 …...

从一个Bug谈前端响应拦截器的应用

一、问题场景 今天在开发商品管理系统时&#xff0c;遇到了一个有趣的问题&#xff1a;当添加重复的商品编号时&#xff0c;页面同时弹出了两条 "商品编号已存在" 错误提示&#xff1a; 这个问题暴露了前端错误处理机制的混乱&#xff0c;让我们从这个问题出发&…...

在做题中学习(78):数组中第K个最大元素

解法&#xff1a;快速选择算法 说明&#xff1a;堆排序也是经典解决topK问题的算法&#xff0c;但时间复杂度为&#xff1a;O(NlogN) 而将要介绍的快速选择算法的时间复杂度为: O(N) 先看我的前两篇文章&#xff0c;分别学习&#xff1a;数组分三块&#xff0c;随机选择基准…...

药剂学试卷

1【单选题】在倍氯米松气雾剂中加入四氟乙烷是用作 C A、 助悬剂 B、 乳化剂 C、 抛射剂 D、 防腐剂 2【单选题】一步制粒机可完成的工序是 B A、 粉碎→混合→制粒→干燥 B、 混合→制粒→干燥 C、 过筛→制粒→混合→干燥 D、 过筛→制粒→混合 3【单选题】小檗碱片包…...

3D 生成重建020-Gaussian Grouping在场景中分割并编辑一切

3D 生成重建020-Gaussian Grouping在场景中分割并编辑一切 文章目录 0 论文工作1 方法2 实验结果 0 论文工作 最近提出的高斯Splatting方法实现了高质量的实时三维场景新视角合成。然而&#xff0c;它仅仅关注外观和几何建模&#xff0c;缺乏细粒度的物体级场景理解。为了解决…...

力扣143.重排链表

题目描述 题目链接143. 重排链表 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值&#xff…...

本文介绍麒麟信安服务器系统(kylinsec)的安装。

本文介绍麒麟信安服务器系统&#xff08;kylinsec&#xff09;的安装。 下载 在开源欧拉官方找到商业版本的介绍找到相关产品&#xff1a; https://www.openeuler.org/zh/download/commercial-release/ 麒麟信安kylinsec下载地址&#xff1a; https://mirrors.kylinsec.com…...

单链表---回文结构

判断某一个单链表是否是回文结构&#xff0c;是返回true、不是返回false。 所谓的回文结构&#xff0c;就是类似对称结构&#xff1a; 对于奇数与偶数个结点均是如此。 那么就有思路&#xff1a;①找到链表的中间结点②逆置后半部分或前半部分③比较两者 ①找中间结点&#x…...

Java --- 反射

目录 一.什么是反射&#xff1f; 二.反射的核心方法和功能&#xff1a; 1.获取类的元信息&#xff1a; 2. 动态实例化对象&#xff1a; 3. 访问字段&#xff08;包括私有字段&#xff09;&#xff1a; 4. 调用方法&#xff08;包括私有方法&#xff09;&#xff1a; 5.…...

python编程Day12-属性和方法的分类

私有和公有 在python中 定义类的时候&#xff0c;可以给 属性和方法设置 访问权限&#xff0c;即规定在什么地方可以使用。 权限一般分为两种&#xff1a;公有权限、私有权限 公有权限 定义&#xff1a;直接定义的属性和方法就是公有的特点&#xff1a; 可以在任何地方访问和使…...

C#实现TCP客户端和服务器

本文将介绍如何使用C#实现TCP客户端和服务器的基本功能&#xff0c;客户端与服务器可以相互发送消息。 效果展示 服务器端实现 首先&#xff0c;我们实现TCP服务器。以下是服务器端所需的类和代码&#xff1a; using System; using System.Collections.Generic; using Syste…...

数据库编程: JDBC 中数据库驱动包的安装,配置及引用

目录 驱动包的下载安装 1. 去oracle 官方网站下载 2. github 的开源软件 3. 中央仓库(推荐使用这个) 驱动包的配置及引用 1. 第一步: 打开idea, 在 idea 中创建新的项目 2. 然后我们要在 jdbc_1 目录下创建一个新的目录包 3. 最后引入MySQL 的驱动包, 作为项目的依赖 尾…...

mx linux 在konsole终端中无法输入中文的解决方法

在mx linux系统中&#xff0c;浏览器可以正常输入中文&#xff0c;但是终端窗口中无法输入中文的解决方法&#xff0c;可以通过以下步骤安装 fcitx - frontend - qt5 组件&#xff1a; 1. 打开终端。你可以通过系统菜单或者快捷键&#xff08;如 Ctrl Alt T &#xff09;来…...

./configure 安装ngnix的命令

./configure 是一个在 Unix 和类 Unix 系统中常用的 shell 脚本命令&#xff0c;主要用于配置软件源代码包&#xff0c;以便进行编译和安装。这个命令通常在从源代码编译软件之前执行&#xff0c;它会自动检测系统的配置并生成适合该系统的 Makefile。 以下是 ./configure 脚本…...

网络安全之接入控制

网络安全之接入控制 身份鉴别 ​ 定义:验证主题真实身份与其所声称的身份是否符合的过程&#xff0c;主体可以是用户、进程、主机。同时也可实现防重放&#xff0c;防假冒。 ​ 分类:单向鉴别、双向鉴别、三向鉴别。 ​ 主题身份标识信息:密钥、用户名和口令、证书和私钥 I…...

2.1 关系模型

关系模型的基本概念 关系&#xff1a;二维表&#xff0c;通常在数据库中表现为一个表&#xff1b; 属性&#xff1a;关系中的一个列即为关系的一个属性&#xff1b; 域&#xff1a; 每个属性的取值范围即为该属性的域&#xff1b; 元组&#xff1a;关系中的一个行是一个元组…...

深入浅出 Go 语言 sync包中的互斥锁、条件变量

深入浅出 Go 语言 sync包中的互斥锁、条件变量 引言 在并发编程中&#xff0c;多个 Goroutine 同时访问共享资源可能会导致数据竞争&#xff08;Race Condition&#xff09;&#xff0c;进而引发程序的不一致性或崩溃。为了确保并发程序的正确性和稳定性&#xff0c;Go 语言提…...

利用Python实现子域名简单收集

免责申明 本文仅是用于学习研究子域名信息收集&#xff0c;请勿用在非法途径上&#xff0c;若将其用于非法目的&#xff0c;所造成的一切后果由您自行承担&#xff0c;产生的一切风险和后果与笔者无关&#xff1b;本文开始前请认真详细学习《‌中华人民共和国网络安全法》【学法…...

npm发布插件到私有仓库保姆级教程

在开发项目的过程中&#xff0c;我们经常需要安装插件依赖&#xff0c;那么怎么把自己开发的组件封装成一个插件&#xff0c;并发布到npm 插件市场或者上传到私有仓库里面呢&#xff1f;今天总结下自己发布插件到私有仓库的记录&#xff1a; 一、创建组件 执行命令创建一个空…...

利用Java easyExcel库实现高效Excel数据处理

在Java应用程序中&#xff0c;处理Excel文件是一项常见任务&#xff0c;尤其是在需要读取、写入或分析大量数据时。easyExcel是一个基于Java的高性能Excel处理库&#xff0c;它提供了简洁的API和优化的性能&#xff0c;以简化Excel文件的处理。本文将指导您如何使用easyExcel库…...

基于Springboot的校园交友网站设计与实现

1.1 管理信息系统概述 管理信息系统是计算机在信息管理领域的一种实用技术。通过运用管理科学、数学和计算机应用的原理及方法&#xff0c;在符合软件工程规范的原则下&#xff0c;形成一套完整的理论和方法体系。是一个以人、计算机和其他外部设备组成的可以进行信息的收集、…...

android studio 读写文件操作(应用场景三)

android studio版本&#xff1a;2023.3.1 patch2 例程&#xff1a;filesaveandread 其实我写这个都是我记录我要做后个数独小游戏&#xff0c;每一个都是为了解决一个问题。即是分享也是备忘&#xff0c;反正我什么都不会&#xff0c;就是一顿瞎改&#xff0c;不行就研究。这…...

小程序 —— Day1

组件 — view和scroll-view view 类似于HTML中的div&#xff0c;是一个块级元素 案例&#xff1a;通过view组件实现页面的基础布局 scroll-view 可滚动的视图区域&#xff0c;用来实现滚动列表效果 案例&#xff1a;实现纵向滚动效果 scroll-x属性&#xff1a;允许横向滚动…...

使用 PyTorch 和 Horovod 来编写一个简单的分布式训练 demo

使用 PyTorch 和 Horovod 来编写一个简单的分布式训练 demo&#xff0c;可以帮助你理解如何在多GPU或多节点环境中高效地训练深度学习模型。Horovod 是 Uber 开发的一个用于分布式训练的框架&#xff0c;它支持 TensorFlow、Keras、PyTorch 等多个机器学习库。下面是一个基于 P…...

【Linux】以 CentOS 为例备份与恢复/home分区,并调整分区容量

在 Linux 系统中&#xff0c;这里举例对 /home 目录进行备份、重建和恢复操作&#xff0c;并调整分区大小、更换文件系统或修复损坏的分区等。 〇、前提条件 确认文件系统类型为 xfs。 确认 /home 目录确实没有重要数据&#xff0c;或者已经做好了数据备份。 确保在执行这些…...

OpenAI 12Days 第二天 强化微调(RFT):推动语言模型在科学研究中的应用

OpenAI 12Days 第二天 强化微调&#xff08;RFT&#xff09;&#xff1a;推动语言模型在科学研究中的应用 文章目录 OpenAI 12Days 第二天 强化微调&#xff08;RFT&#xff09;&#xff1a;推动语言模型在科学研究中的应用RFT的工作原理与应用领域案例研究&#xff1a;基因突变…...

神经网络的梯度反向传播计算过程,举例说明

目录 神经网络的梯度反向传播计算过程 网络结构 权重和偏置 激活函数 前向传播 损失函数 反向传播 参数更新 举例 神经网络的梯度反向传播计算过程 为了说明神经网络的梯度反向传播计算过程,我们考虑一个简单的全连接网络,该网络有一个输入层、一个隐藏层和一个输出…...

定点数乘法:补码一位算法(booth算法)

方法 初始化 将被乘数A放在寄存器A中。 将乘数B放在寄存器B中&#xff0c;并在最低位添加一个额外的位Q(-1) 0。 结果寄存器P初始化为0&#xff0c;长度为2n位。 迭代过程&#xff08;重复n次&#xff09; 对于i从0到n-1&#xff1a; 检查乘数B的最后两位&#xff08;B 和…...

robots.txt

robots.txt 文件是网站管理者用来告知搜索引擎爬虫&#xff08;也称为机器人或蜘蛛&#xff09;哪些页面可以抓取&#xff0c;哪些页面不应该被抓取的一种文本文件。它位于网站的根目录下&#xff0c;并且文件名必须全部小写。这个文件对于SEO&#xff08;搜索引擎优化&#xf…...

如何用 JavaScript 操作 DOM 元素?

如何用 JavaScript 操作 DOM 元素&#xff1f;——结合实际项目代码示例讲解 在前端开发中&#xff0c;DOM&#xff08;文档对象模型&#xff09;操作是与页面交互的核心。通过 DOM 操作&#xff0c;开发者可以动态地修改页面内容、响应用户交互、控制样式等。JavaScript 提供…...

vue3使用后端传递的文件流进行文件预览

文章目录 一、 注意事项1、responseType设置为&#xff1a;arraybuffer2、Blob设置type&#xff0c;来源于后台封装的response.headers[content-type]3、使用encodeURIComponent()&#xff0c;避免符号影响文件名 二、java接口 一、 注意事项 1、responseType设置为&#xff1…...

ubuntu20.04设置远程桌面

安装xrdp sudo apt install xrdp 2、 检查xrdp状态 sudo systemctl status xrdp3、&#xff08;若为Ubuntu 20&#xff09;添加xrdp至ssl-cert sudo adduser xrdp ssl-cert 4、重启服务 sudo systemctl restart xrdp最后可以远程了&#xff0c;注意一个账号只能一个登录...

在vue3里使用scss实现简单的换肤功能

实现的换肤功能&#xff1a;主题色切换、亮色模式和暗黑模式切换、背景图切换 主题色就是网站主色&#xff0c;可以配置到组件库上面&#xff1b;亮色模式又分为两种风格&#xff1a;纯白风格和背景图风格&#xff0c;不需要背景图的话可以删掉这部分逻辑和相关定义&#xff1b…...

flyway执行sql遇到变量执行报错解决

前两天在公司使用flyway工具执行sql时&#xff0c;开发写的sql里面有变量&#xff0c;于是这个flyway工具不识别这个变量直接报错&#xff0c;不接着往下执行了。报错信息如下&#xff1a; flyway工具执行sql报错 information: No value provided for placeholder: ${ep1} 于是…...

解谜类游戏《迷失岛2》等如何抽象出一套通用高效开发框架?

解谜类游戏以精妙的谜题设计和引人入胜的故事叙述为特点&#xff0c;考验着玩家的智慧与观察力。《迷失岛2》与《南瓜先生2九龙城寨》正是这一领域的佳作。游戏以独特的艺术风格和玩法设计吸引了大量玩家&#xff0c;而它们背后隐藏着一套强大的框架。 上海胖布丁游戏的技术总…...

Ant Design Vue v4版本如何解决1px没有被postcss-px2rem转成rem的问题

背景说明 如果你的 Ant Design Vue 项目有要做适配的需求&#xff0c;那首先要选择一种适配方案。笔者选择的是用 postcss-px2rem 进行适配。笔者在配置了 postcss-px2rem的相关配置后&#xff0c;发现 postcss-px2rem 没有对 Ant Design Vue 进行适配。在网上看了一些文章之后…...

【系统架构设计师论文】云上自动化运维及其应用

随着云计算技术的迅猛发展,企业对云资源的需求日益增长。为了应对这一挑战,云上自动化运维(CloudOps)应运而生,它结合了DevOps理念和技术,通过自动化工具和流程来提高云环境的管理效率和服务质量。本文将探讨云上自动化运维的主要衡量指标,并详细介绍一个实际项目中如何…...

河南地质灾害资质办理的政策

一、资质分类 资质等级&#xff1a; 甲级资质&#xff1a;由自然资源部审批管理&#xff0c;适用于承担大型地质灾害防治项目。 乙级资质&#xff1a;由省、自治区、直辖市自然资源主管部门审批管理&#xff0c;适用于承担中型地质灾害防治项目。 丙级资质&#xff1a;由省…...

单例模式--懒汉 饿汉模式

一.啥是单例模式? 先介绍一下设计模式&#xff1a; 设计模式好⽐象棋中的 "棋谱". 红⽅当头炮, ⿊⽅⻢来跳. 针对红⽅的⼀些⾛法, ⿊⽅应招的时候有⼀些固定的套路. 按照套路来⾛局势就不会吃亏. 软件开发中也有很多常⻅的 "问题场景". 针对这些问题…...

HDD 2025年技术趋势深度分析报告

随着数据量的指数级增长以及人工智能&#xff08;AI&#xff09;、物联网&#xff08;IoT&#xff09;、云计算和视频监控等领域的需求激增&#xff0c;硬盘驱动器&#xff08;HDD&#xff09;行业正面临着前所未有的挑战与机遇。本报告旨在深入剖析2025年HDD技术的发展方向&am…...

关于uni-app的uni.showModal和indexOf的使用

这里使用showModal时&#xff0c;这个里面的content需要使用到字符串的形式&#xff0c;不能用到number类型 uni.showModal({title: 提示,content: "hello",success: function (res) {if (res.confirm) {console.log(用户点击确定);} else if (res.cancel) {console…...

Spring Data Elasticsearch

简介说明 spring-data-elasticsearch是比较好用的一个elasticsearch客户端&#xff0c;本文介绍如何使用它来操作ES。本文使用spring-boot-starter-data-elasticsearch&#xff0c;它内部会引入spring-data-elasticsearch。 Spring Data ElasticSearch有下边这几种方法操作El…...

汇编语言简要记录-1

汇编语言与汇编指令 汇编语言的主题是汇编指令 汇编指令与机器指令的差别在于指令的表示方法上 1、汇编指令是机器机器指令便于记忆的书写格式 2、汇编指令是机器指令的助记符 ag&#xff1a;机器指令 1000100111011000操作&#xff1a;将寄存器BX的值送到AX中汇编指令 MOV …...