深入探索STM32的SPI功能:W25Q64 Flash存储器全攻略
摘要
随着嵌入式系统对存储需求的增长,选择合适的存储设备变得尤为重要。W25Q64 Flash存储器以其8Mbit的存储容量和SPI接口的便捷性,成为STM32微控制器项目中的优选存储方案。本文将深入探索STM32的SPI功能,提供W25Q64 Flash存储器的全面集成指南,包括硬件配置、SPI接口编程和实际代码示例。
1. SPI通信基础
SPI是一种同步串行通信协议,广泛应用于微控制器与外设间的通信。主要特性包括:
- 主从模式:一个主设备控制多个从设备。
- 全双工通信:同时发送和接收数据。
- 时钟同步:数据传输由主设备时钟信号同步。
2. W25Q64 Flash存储器特性
W25Q64是一款串行Flash存储器,具备以下特性:
- 容量:8Mbit,即1M字节。
- 组织:分为128个扇区,每扇区含16页,每页256字节。
- 擦写次数:高达100万次。
- 工作电压:2.7V至3.6V。
3. 硬件连接
W25Q64与STM32的硬件连接包括:
CS
(片选)接至STM32 GPIO(如PA4)。SCK
(时钟)接至STM32 SPI时钟引脚(如PA5)。MOSI
(主设备数据输出)接至STM32 SPI MOSI引脚(如PA7)。MISO
(主设备数据输入)接至STM32 SPI MISO引脚(如PA6)。VCC
接3.3V,GND
接地。
4. SPI接口配置
4.1 硬件SPI初始化
硬件SPI初始化代码示例:
void SPI_Hardware_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;SPI_InitTypeDef SPI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB1Periph_SPI1, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;SPI_InitStructure.SPI_Mode = SPI_Mode_Master;SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;SPI_Init(SPI1, &SPI_InitStructure);SPI_Cmd(SPI1, ENABLE);
}
4.2 W25Q64初始化
W25Q64初始化涉及SPI初始化和芯片特定设置。
void W25Q64_Init(void) {SPI_Hardware_Init();// 发送W25Q64的复位指令(如果需要)
}
5. W25Q64 Flash存储器操作
5.1 读取W25Q64 ID
读取ID用于验证W25Q64芯片。
uint16_t W25Q64_ReadID(void) {uint16_t id = 0;SPI_CS_Low();SPI_SendByte(0x90); // READ ID COMMANDid = SPI_ReceiveByte() << 8;id |= SPI_ReceiveByte();SPI_CS_High();return id;
}
5.2 写入W25Q64
页编程是W25Q64写入数据的基本操作。
void W25Q64_WriteByte(uint32_t addr, uint8_t data) {SPI_CS_Low();SPI_SendByte(0x02); // PAGE PROGRAM COMMANDSPI_SendByte(addr >> 16);SPI_SendByte(addr >> 8);SPI_SendByte(addr);SPI_SendByte(data);SPI_CS_High();// 等待写入完成...
}
5.3 从W25Q64读取数据
读取数据操作允许从指定地址读取信息。
uint8_t W25Q64_ReadByte(uint32_t addr) {uint8_t data;SPI_CS_Low();SPI_SendByte(0x03); // READ DATA COMMANDSPI_SendByte(addr >> 16);SPI_SendByte(addr >> 8);SPI_SendByte(addr);data = SPI_ReceiveByte();SPI_CS_High();return data;
}
6. 完整示例代码
以下是STM32与W25Q64通信的完整示例代码。
int main(void) {SystemInit();W25Q64_Init();uint16_t id = W25Q64_ReadID();printf("W25Q64 ID: 0x%X\r\n", id);uint32_t testAddr = 0x000000; // 测试地址uint8_t testData = 0xAA; // 测试数据W25Q64_WriteByte(testAddr, testData); // 写入数据// 延迟一段时间,等待数据写入完成for (volatile int i = 0; i < 0x100000; i++);uint8_t readData = W25Q64_ReadByte(testAddr); // 读取数据if (readData == testData) {printf("Write and Read Test Passed.\r\n");} else {printf("Write and Read Test Failed.\r\n");}while(1) {// 其他应用代码}
}
7. 结论
本文深入探索了STM32的SPI功能,并提供了W25Q64 Flash存储器的全攻略。从SPI通信的基础到W25Q64的特性,再到具体的硬件连接和SPI接口编程,本文为读者提供了全面的集成方案。示例代码进一步演示了如何在实际项目中应用这些知识,帮助读者深入理解和掌握SPI通信技术。
✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进
❤欢迎关注我的知乎:对error视而不见
代码获取、问题探讨及文章转载可私信。
☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。
🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇
点击领取更多详细资料
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
深入探索STM32的SPI功能:W25Q64 Flash存储器全攻略
摘要 随着嵌入式系统对存储需求的增长,选择合适的存储设备变得尤为重要。W25Q64 Flash存储器以其8Mbit的存储容量和SPI接口的便捷性,成为STM32微控制器项目中的优选存储方案。本文将深入探索STM32的SPI功能,提供W25Q64 Flash存储器的全面集成…...
![](https://img-blog.csdnimg.cn/direct/397afba409dc46e1be2788a61e9c29db.png)
【SQL Server数据库】带函数查询和综合查询(1)
目录 1.统计年龄大于30岁的学生的人数。 2.统计数据结构有多少人80分或以上。 3.查询“0203”课程的最高分的学生的学号。 4.统计各系开设班级的数目(系名称、班级数目),并创建结果表。 5.选修了以“01”开头的课…...
![](https://www.ngui.cc/images/no-images.jpg)
使用WebService接口进行数据通信
使用WebService接口进行数据通信 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何使用WebService接口进行数据通信。WebService是一种基于Web…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
AI进阶指南第五课,大模型相关概念(知识库,微调)
虽然前面大概讲了一下大模型的一些基本概念,但是那些都比较偏向于大模型本身,但是我们使用的时候如果只靠大模型肯定是不行的。 就好比如果一个人只有一个脑子,其他什么部位也没有的话,那场面。(感觉现在网上的AI图片…...
![](https://www.ngui.cc/images/no-images.jpg)
【深度学习基础】`view` 和 `reshape` 的参数详解
目录 基本概念参数详解 示例view 和 reshape 在具体应用中的参数解释参数解释 更多示例高维张量示例非连续内存示例 总结 基本概念 view 和 reshape 都用于调整张量的形状,它们的参数是新的形状,每个维度的大小可以指定为具体的数值或者 -1。-1 表示这个…...
![](https://img-blog.csdnimg.cn/direct/c622bf228e034f27b20f352728c596da.png)
【笔记】Spring Cloud Gateway 实现 gRPC 代理
Spring Cloud Gateway 在 3.1.x 版本中增加了针对 gRPC 的网关代理功能支持,本片文章描述一下如何实现相关支持.本文主要基于 Spring Cloud Gateway 的 官方文档 进行一个实践练习。有兴趣的可以翻看官方文档。 由于 Grpc 是基于 HTTP2 协议进行传输的,因此 Srping …...
![](https://img-blog.csdnimg.cn/direct/fa793ea5619a49e586feabbe1dda4c6a.png)
云顶之弈数据网站
摘要:随着云顶之弈游戏的广泛流行,玩家对于游戏数据的查询和最新资讯的获取需求呈现出显著增长的趋势。设计一款云顶之弈数据网站,为玩家提供便捷、高效的数据查询和资讯浏览服务,能满足玩家对于游戏数据的快速查询和实时资讯获取…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux(Ubuntu)下源码开发整个流程完成版本(下载->编译->模拟器运行)
写这篇文章没别的意思, 年纪大了记性不好, 这次工作中下载,编译遇到了一些之前没遇到的问题,所以就所幸记录一下, 以便日后能快速查阅 好了, 正题开始 首先我们下载AOSP源代码开始 AOSP源代码下载 首先找到官网https://source.android.google.cn/ 进入后最上面点击获取源代…...
![](https://www.ngui.cc/images/no-images.jpg)
el-form表单实现校验
前端表单实现, rules 属性传入约定的验证规则,并将 form-Item 的 prop 属性设置为需要验证的特殊键值即可。 <el-form ref"ruleFormRef" :model"interviewForm" label-position"left" require-asterisk-position"…...
![](https://www.ngui.cc/images/no-images.jpg)
一台TrinityCore服务器客户端连接网速慢(未解决)
在FreeBSD开bhyve安装Ubuntu,然后安装了TrinityCore服务器,在只是经过一层NAT,两边都是局域网的情况下,连接速度竟然很慢,慢到600ms。 服务器安装见:尝试在FreeBSD 的jail、bhyve里安装TrinityCore-CSDN博…...
![](https://img-blog.csdnimg.cn/direct/59c0aa8eaf5f457894b504fbae7e85a5.png)
[系统运维|Xshell]宿主机无法连接上NAT网络下的虚拟机进行维护?主机ping不通NAT网络下的虚拟机,虚拟机ping的通主机!解决办法
遇到的问题:主机ping不通NAT网络下的虚拟机,虚拟机ping的通主机 服务器:Linux(虚拟机) 主机PC:Windows 虚拟机:vb,vm测试过没问题,vnc没测试不清楚 虚拟机网络࿱…...
![](https://www.ngui.cc/images/no-images.jpg)
C 语言实例 - 查找数组中最大的元素值
查找数组中最大的元素值。 实例 1 #include <stdio.h>int main() {int array[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};int loop, largest;largest array[0];for(loop 1; loop < 10; loop) {if( largest < array[loop] ) largest array[loop];}printf("最大…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL之可扩展性(七)
可扩展性 通过集群扩展 理想的扩展方案时单一逻辑数据库能够存储尽可能多的数据,处理尽可能多的查询,并如期望的那样增长。许多人的第一想法就是建立一个"集群"或者"网格"来无缝处理这些事情,这样应用就无须去做太多工…...
![](https://img-blog.csdnimg.cn/direct/7a6cb3e136c1422f9829c181cadbf1f0.png)
微服务框架中Nacos的个人学习心得
微服务框架需要学习的东西很多,基本上我把它分为了五个模块: 第一:微服务技术模块 分为三个常用小模块: 1.微服务治理: 注册发现 远程调用 配置管理 网关路由 2.微服务保护: 流量控制 系统保护 熔断降级 服…...
![](https://img-blog.csdnimg.cn/direct/a795e0f98e7648dea2754d064fb778ac.png)
Unity Animator 运行时修改某个动画状态的播放速度
1.添加动画参数,选择需要动态修改速度的动画状态 2.在属性面板种设置速度倍速参数...
![](https://img-blog.csdnimg.cn/direct/4f415a0a41084562ab867cec2b2a1fee.png)
阿里云常用的操作
阿里云常见的产品和服务 容器服务 可以查看容器日志、监控容器cpu和内存, 日志服务 SLS 可以查看所有服务的日志, Web应用防火墙 WAF 可以查看 QPS. 阿里云查看集群: 点击 “产品和服务” 中的 容器服务,可以查看 集群列表&…...
![](https://img-blog.csdnimg.cn/direct/334ac8248b044115935b537b6aa99ff0.png)
【MATLAB源码-第231期】基于matlab的polar码编码译码仿真,对比SC,SCL,BP,SCAN,SSC等译码算法误码率。
操作环境: MATLAB 2022a 1、算法描述 极化码(Polar Code) 极化码(Polar Code)是一种新型的信道编码技术,由土耳其裔教授Erdal Arıkan在2008年提出。极化码在理论上被证明能够在信道容量上达到香农极限…...
![](https://img-blog.csdnimg.cn/direct/54c6a92dd39d4e76ab50ef22b2465aeb.png)
创新实训(十三) 项目开发——实现用户终止对话功能
思路分析: 如何实现用户终止AI正在进行的回答? 分析实现思路如下: 首先是在用户点击发送后,切换终止对话,点击后大模型终止对话,停止sse,不再接收后端的消息。同时因为对话记录存入数据库是后…...
![](https://img-blog.csdnimg.cn/direct/9eb3cc9cdeca4be39b4f584fa4dd30dd.png)
基于Java+MySQL停车场车位管理系统详细设计和实现(源码+LW+调试文档+讲解等)
💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode 53.最大子数组和(dp)
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出:…...
![](https://img-blog.csdnimg.cn/direct/04aa268893344d0b9d71d4740fe69f72.png)
IOS17闪退问题Assertion failure in void _UIGraphicsBeginImageContextWithOptions
最近项目更新到最新版本IOS17,发现一个以前的页面突然闪退了。原来是IOS17下,这个方法 UIGraphicsBeginImageContext(CGSize size) 已经被移除,原参数如果size为0的话,会出现闪退现象。 根据说明,上述方法已经被替换…...
![](https://img-blog.csdnimg.cn/2d61eca442984641b8abef076b4951b4.jpg)
float8格式
产生背景 在人工智能神经元网络中,一个参数用1字节表示即可,或者说,这是个猜想:因为图像的颜色用8比特表示就够了,所以说,猜想神经元的区分度应该小于256。 数字的分配 8比特有256个码位,分为…...
![](https://img-blog.csdnimg.cn/direct/011df70966a14d8cb89fdbcd22399c1e.png)
云效BizDevOps上手亲测
云效BizDevOps上手亲测 什么是云效项目协作Projex配置2023业务空间原始诉求字段原始诉求工作流创建原始诉求配置2023产品空间创建主题业务原始诉求关联主题配置2023研发空间新建需求需求关联主题 与传统区别云效开发流程传统开发流程云效BizDevOps 操作体验 什么是云效 在说到…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
亚太杯赛题思路发布(中文版)
导读: 本文将继续修炼回归模型算法,并总结了一些常用的除线性回归模型之外的模型,其中包括一些单模型及集成学习器。 保序回归、多项式回归、多输出回归、多输出K近邻回归、决策树回归、多输出决策树回归、AdaBoost回归、梯度提升决策树回归…...
![](https://www.ngui.cc/images/no-images.jpg)
【Linux】部署 GitLab 服务
1、配置实验环境 安装git apt install git 安装docker apt install docker 安装tree apt install tree 2、安装 Gitlab 下载官方库与安装包 下载官方库的安装脚本 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bas…...
![](https://img-blog.csdnimg.cn/direct/bc3bda3063364b979425b1b56bcceaa7.png)
cs与msf权限传递以及mimikatz抓取win2012明文密码
启动服务端 进入客户端 建立监听 制作脚本 客户端运行程序 主机上线 打开msf 调用handler模块 创建监听 11.cs->msf 传递会话 12.传参完成 msf->cs会话传递 抓取密码(null) 修改注册表 shell reg add "HKEY_LOC…...
![](https://img-blog.csdnimg.cn/img_convert/5004eb9dc4eb7806dcc28ccb6dbf3d44.png)
C++ 矩阵的最小路径和解法
描述 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。 数据范围: 1≤𝑛,𝑚≤5001≤n,m≤500,矩阵中任意值都满足 0≤𝑎𝑖,𝑗≤1000≤ai,j≤100 要求…...
![](https://img-blog.csdnimg.cn/direct/024e433466f248e7a8de9355d5e8e890.png)
http服务网络请求如何确保数据安全(含python示例源码)
深度学习类文章回顾 【YOLO深度学习系列】图像分类、物体检测、实例分割、物体追踪、姿态估计、定向边框检测演示系统【含源码】 【深度学习】物体检测/实例分割/物体追踪/姿态估计/定向边框/图像分类检测演示系统【含源码】 【深度学习】YOLOV8数据标注及模型训练方法整体流程…...
![](https://img-blog.csdnimg.cn/direct/812ad30cae744309893406405a624db6.jpeg)
网络构建关键技术_2.IPv4与IPv6融合组网技术
互联网数字分配机构(IANA)在2016年已向国际互联网工程任务组(IETF)提出建议,要求新制定的国际互联网标准只支持IPv6,不再兼容IPv4。目前,IPv6已经成为唯一公认的下一代互联网商用解决方案&#…...
![](https://www.ngui.cc/images/no-images.jpg)
数仓建模—数据生命周期管理
数仓建模—数据生命周期管理 数据生命周期管理 (DLM) 是一种在从数据输入到数据销毁的整个生命周期内管理数据的方法。 数据根据不同的条件分处不同的阶段,随着其完成不同的任务或满足特定要求而逐次经历这些阶段。 一个出色的 DLM 流程提供针对企业数据的结构和组织,帮助实…...
![](https://www.ngui.cc/images/no-images.jpg)
【INTEL(ALTERA)】Nios II软件开发人员手册中设计位置的错误示例
目录 说明 解决方法 说明 Nios II软件开发人员手册正确无误 请参阅 Nios 中包含的Nios II硬件设计示例 II 嵌入式设计套件 (EDS)。提供设计示例 设计上 Altera网站的示例页面。 Nios II软件开发人员手册正确无误 请参阅 创建本应用程序和创建本 bsp …...
![](https://img-blog.csdnimg.cn/direct/fd997ae1e6f9451a894c6c6bf839de2a.png)
jeecg导入excel 含图片(嵌入式,浮动式)
jeecgboot的excel导入 含图片(嵌入式,浮动式) 一、啰嗦二、准备三、 代码1、代码(修改覆写的ExcelImportServer)2、代码(修改覆写的PoiPublicUtil)3、代码(新增类SAXParserHandler&a…...
![](https://www.ngui.cc/images/no-images.jpg)
GPT-5 一年半后发布?对此你有何期待?
GPT-5 一年半后发布?对此你有何期待? IT之家6月22日消息,在美国达特茅斯工程学院周四公布的采访中,OpenAI首席技术官米拉穆拉蒂被问及GPT-5是否会在明年发布,给出了肯定答案并表示将在一年半后发布。此外,…...
![](https://img-blog.csdnimg.cn/direct/410767c8969f4229974ee7bbd37163f3.png#pic_center)
SHELL脚本学习(十二)sed进阶
一、多行命令 概述 sed 编辑器的基础命令都是对一行文本进行操作。如果要处理的数据分布在多行中,sed基础命令是没办法处理的。 幸运的是,sed编辑器的设计人员已经考虑了这个问题的解决方案。sed编辑器提供了3个处理多行文本的特殊命令。 命令描述N加…...
![](https://img-blog.csdnimg.cn/direct/642f518ec953404fa6e954109d5b3134.png)
【python】一篇文零基础到入门:快来玩吧~
本笔记材料源于: PyCharm | 创建你的第一个项目_哔哩哔哩_bilibili Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法-CSDN博客 0为什么安装python和pycharm? 不同于c,c࿰…...
![](https://img-blog.csdnimg.cn/direct/f4c7ac65a6024daa8af9900bb0860c7d.png)
Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六)
Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六) 漏洞环境搭建 这里我们使用Kali虚拟机安装docker并搭建vulhub靶场来进行ThinkPHP漏洞环境的安装,我们进入 ThinkPHP漏洞环境,可以 cd ThinkPHP,然后通过 …...
![](https://www.ngui.cc/images/no-images.jpg)
2024.6.28刷题记录
目录 一、13. 罗马数字转整数 贪心 二、16. 最接近的三数之和 排序指针 三、17. 电话号码的字母组合 dfs(深度优先搜索) 四、19. 删除链表的倒数第 N 个结点 1.模拟 2.前后同步指针 五、20. 有效的括号 栈 六、21. 合并两个有序链表 1.递归 …...
![](https://img-blog.csdnimg.cn/direct/b5090c6c9c8949a392df49767f554c4b.png)
柔性数组(flexible array)
柔性数组从C99开始支持使用 1.柔性数组的概念 概念: 结构体中,结构体最后一个元素允许是未知大小的数组,这就叫[柔性数组]的成员 struct S {int n;char arr[]; //数组大小未知(柔性数组成员) }; 柔性数组的特点: 结构体中柔性…...
![](https://www.ngui.cc/images/no-images.jpg)
服务器配置路由
translator 在Linux系统中,通过ip route add命令添加的路由规则通常不会永久保存,它们只会在当前会话中生效。当系统重新启动后,这些临时添加的路由规则会丢失。 要求在开关机之后仍然保留这条路由,需要将路由规则永久保存。在大多…...
![](https://img-blog.csdnimg.cn/direct/fc87d23fbdd9425b8aead1d3c829035c.png)
老生常谈问题之什么是缓存穿透、缓存击穿、缓存雪崩?举个例子你就彻底懂了!!
老生常谈问题之什么是缓存穿透、缓存击穿、缓存雪崩?举个例子你就彻底懂了!! 缓存穿透发生场景解决方案 缓存击穿解决方案 缓存雪崩发生场景解决方案 总结三者区分三者原因三者解决方案 想象一下,你开了一家便利店,店里…...
![](https://www.ngui.cc/images/no-images.jpg)
[code snippet] 生成随机大文件
[code snippet] 生成随机大文件 一个无聊的测试代码,因为要测试大文件的网络传输,就写了一个随机大文件生成脚本,做个备份。 基本上都是 GPT 生成的,哈哈。 C# 代码 namespace ConsolePlayground;internal class BigFileGenera…...
![](https://img-blog.csdnimg.cn/img_convert/e07122cc2600cb9e00fe95284e80f2ed.png)
计算机网路面试HTTP篇三
HTTPS RSA 握手解析 我前面讲,简单给大家介绍了的 HTTPS 握手过程,但是还不够细! 只讲了比较基础的部分,所以这次我们再来深入一下 HTTPS,用实战抓包的方式,带大家再来窥探一次 HTTPS。 对于还不知道对称…...
![](https://img-blog.csdnimg.cn/direct/efc056b146334106bf84146b3a60e94c.png#pic_center)
如何不改变 PostgreSQL 列类型#PG培训
开发应用程序并在其背后操作数据库集群时,会遇到一个意想不到的问题是实践与理论、开发环境与生产之间的差异。这种不匹配的一个完美例子就是更改列类型。 #PG考试#postgresql培训#postgresql考试#postgresql认证 关于如何在 PostgreSQL(以及其他符合 SQ…...
![](https://img-blog.csdnimg.cn/direct/ebe43044e1d94ad79e387602fb345b74.png)
RocketMQ快速入门:事务消息原理及实现(十)
目录 0. 引言1. 原理2. 事务消息的实现2.1 java client实现(适用于spring框架)2.2 springboot实现 3. 总结 0. 引言 rocketmq 的一大特性就是支持事务性消息,这在诸多场景中有所应用。在之前的文章中我们已经讲解过事务消息的使用࿰…...
![](https://img-blog.csdnimg.cn/direct/b580c553f6b0467dbbe1eddbc3d4988d.png)
Kotlin设计模式:深入理解桥接模式
Kotlin设计模式:深入理解桥接模式 在软件开发中,随着系统需求的不断增长和变化,类的职责可能会变得越来越复杂,导致代码难以维护和扩展。桥接模式(Bridge Pattern)是一种结构型设计模式,它通过…...
![](https://img-blog.csdnimg.cn/direct/ef88994c03df40adaf2d58ef9dc652e3.png)
常用MQ消息中间件Kafka、ZeroMQ和RabbitMQ对比及RabbitMQ详解
1、概述 在现代的分布式系统和实时数据处理领域,消息中间件扮演着关键的角色,用于解决应用程序之间的通信和数据传递的挑战。在众多的消息中间件解决方案中,Kafka、ZeroMQ和RabbitMQ 是备受关注和广泛应用的代表性系统。它们各自具有独特的特…...
![](https://img-blog.csdnimg.cn/direct/411f6df9f19b4f4498189ef6ad961138.png)
【UE5.3】笔记6-第一个简单小游戏
打砖块小游戏: 1、制造一面砖块组成的墙 在关卡中放置一个cube,放这地面上,将其转换成蓝图类,改名BP_Cube,更换砖块的贴图,按住alt键进行拷贝,堆出一面墙,复制出来的会很多,全选移动…...
![](https://img-blog.csdnimg.cn/direct/b88f22e37f4d42e890dce361df27ac8f.png)
LeetCode---402周赛
题目列表 3184. 构成整天的下标对数目 I 3185. 构成整天的下标对数目 II 3186. 施咒的最大总伤害 3187. 数组中的峰值 一、构成整天的下标对数目 I & II 可以直接二重for循环暴力遍历出所有的下标对,然后统计符合条件的下标对数目返回。代码如下 class So…...
![](https://www.ngui.cc/images/no-images.jpg)
循环冗余校验
循环冗余校验(Cyclic Redundancy Check,简称CRC)是一种广泛使用的错误检测编码技术,用于检测数据在传输或存储过程中是否发生错误。CRC通过在数据后面添加一个校验值(通常称为CRC码或CRC校验和)来实现错误检…...
![](https://www.ngui.cc/images/no-images.jpg)
resample sensor
resample sensor 的一个问题。 背景: 项目要求,发送多个数据到 sensor-hal 上去,发现无论怎样,在 sensor-hal 上都 只有一个数据。 resample sensor 是重新采样,这个怎么理解的,我的理解是: 假设 sensor 采…...
游戏AI的创造思路-技术基础-深度学习(6)
让人工智障具备信念吧,依莫拉萨~~~串频道暴露年龄。。。不过深度信念和信念真的没啥关系,不知道为啥这样起名 目录 3.6. 深度信念网络(DBN) 3.6.1. 定义 3.6.2. 发展历史 3.6.3. 算法公式 3.6.4. 运行原理 3.6.4.1. 基本原理 3.6.4.2. Python实现…...
![](https://img-blog.csdnimg.cn/direct/1107d018e0d5449687ad2deadfa60e1b.png)
Python基础入门知识
目录 引言 简要介绍Python语言 为什么要学习Python Python的应用领域 Python安装和环境配置 Python的下载和安装(Windows, macOS, Linux) 配置Python环境变量 安装和使用IDE(如PyCharm, VS Code) Python基本语法 注释 变量和数据类型(数字,字符串,列表,元组,字典,…...
![](https://img-blog.csdnimg.cn/direct/af70d5f0ac3b40a9b89f5636069129d6.png)
STM32 ADC精度提升方法
STM32 ADC精度提升方法 Fang XS.1452512966qq.com如果有错误,希望被指出,学习技术的路难免会磕磕绊绊量的积累引起质的变化 硬件方法 优化布局布线,尽量减小其他干扰增加电源、Vref去耦电容使用低通滤波器,或加磁珠使用DCDC时尽…...
![](https://img-blog.csdnimg.cn/direct/b71d6b1283db40dbbfcb4c9060d236a4.png)
Linux常用命令大全(超详细!!!)
文章目录 1.Linux是什么1.1 关于Linux我们主要学习什么1.1 学习Linux常见命令的前置知识 2. Linux常见命令2.1 ls命令2.2 cd命令2.3 pwd命令2.4 touch命令2.5 cat命令2.6 echo命令2.7 vim命令2.8 mkdir 命令2.9 rm命令2.10 cp命令2.11 mv命令2.12 grep命令2.13 ps命令2.14 nets…...
![](https://img-blog.csdnimg.cn/direct/49ecd424c79047aabe8dea4ae71874de.png)
【操作系统】进程管理——线程管理(个人笔记)
学习日期:2024.7.2 内容摘要:线程的概念、存在的意义、线程的属性,线程的实现方式,线程的状态与组织。 线程的概念 拿QQ来说,QQ既可以打视频电话,也可以在这同时进行文字聊天或传送文件,进程是…...
![](https://img-blog.csdnimg.cn/img_convert/59a67f9549d8ca34dca07b553a72bf59.jpeg)
深入理解ThreadLocal原理
以下内容首发于我的个人网站,来这里看更舒适:https://riun.xyz/work/9898775 ThreadLocal是一种用于实现线程局部变量的机制,它允许每个线程有自己独立的变量,从而达到了线程数据隔离的目的。 基于JDK8 使用 通常在项目中是这样…...
![](https://www.ngui.cc/images/no-images.jpg)
Day27
Day27 反射案例 案例一:万能数组扩容 注意:copyOf、toString public class Test01 {/*** 知识点:反射案例 之 万能数组扩容* * 注意:copyOf、toString*/public static void main(String[] args) {String[] ss {"aaa"…...
![](https://img-blog.csdnimg.cn/direct/1f825e1a94cc497088eee540b822e6a0.png)
element-ui 前端ui框架用法开发指南(2024-05-22)
Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库 1、npm安装 // npm安装:npm install element-ui --save 能更好地和 webpack 打包工具配合使用 2、cdn在线引入 访问最新版本的资源地址 - element-uiThe CDN for element-u…...
![](https://img-blog.csdnimg.cn/direct/952d588f4f4f43d1ab32a3c9f499d00f.gif)
列表、元组、字典和集合的区别
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在前面介绍了序列中的列表、元组、字典和集合的应用,下面通过表2对这几个数据序列进行比较。 表2 列表、元组、字典和集合的区别 数 据…...
![](https://www.ngui.cc/images/no-images.jpg)
eNSP学习——OSPF被动接口配置
目录 相关命令 1、配置接口IP地址 2、配置OSPF进程号、区域号以及网段宣告 3、配置被动接口 4、查看OSPF的邻居关系状态以及路由条目 原理概述 实验目的 实验步骤 实验内容 实验编址 具体步骤 1、基本配置 测试结果(仅提供一个) 2、搭建OSPF网络 3、配置被动接口…...
![](https://www.ngui.cc/images/no-images.jpg)
软件测试面试题(十)
一:简述软件系统中用户文档的测试要点? 读者群:文档面对的读者定位要明确。对于初级用户、中级用户以及高级用户应该有不同的定位 术语:文档中用到的术语要适应与定位的读者群,用法一致,标准定义与业界规范…...
![](https://img-blog.csdnimg.cn/direct/df7ac01bd23c4e2e87ea22d1ae5c02b3.png)
报修新选择:一款软件搞定所有维修问题
数字化、智能化时代发展迅速,各类便捷、智能化软件应用已经深入到我们生活和工作的方方面面。尤其是在企业或学校的设备管理中,报修维修工作一直是一个重要环节。传统的报修方式,如电话报修、填写纸质报修单等,已经无法满足现代高…...