STM32F103C8T6 单片机入门基础知识及点亮第一个 LED 灯
目录
一、引言
二、STM32F103C8T6 基本特性
1. 内核与性能
2. 存储器
3. 时钟系统
4. GPIO(通用输入输出)
5. 外设
三、开发环境搭建
1. 硬件准备
2. 软件安装
四、点亮第一个 LED 灯
1. 硬件连接
2. 软件实现
(1)创建新工程
(2)配置时钟
(3)配置 GPIO
(4)编译与下载
五、代码解析
1. 时钟配置
2. GPIO 配置
3. LED 控制
六、总结
七、参考代码
八、常见问题与解答
1. 为什么 LED 灯不亮?
2. 如何更改 LED 灯的引脚?
3. 如何实现 LED 灯闪烁?
一、引言
STM32F103C8T6 是一款基于 ARM Cortex-M3 内核的 32 位微控制器,以其高性能、低功耗和丰富的外设资源而广泛应用于嵌入式系统开发。对于嵌入式开发初学者来说,掌握 STM32F103C8T6 的基本知识并实现简单的功能(如点亮 LED 灯)是迈向嵌入式开发的重要一步。本文将详细介绍 STM32F103C8T6 的基本特性、开发环境搭建以及如何通过 GPIO 控制点亮第一个 LED 灯。
二、STM32F103C8T6 基本特性
1. 内核与性能
STM32F103C8T6 采用 ARM Cortex-M3 内核,工作频率最高可达 72MHz,提供高性能处理能力。其哈佛架构的存储器系统支持高达 60MHz 的系统时钟,确保了高效的代码执行。
2. 存储器
Flash 存储器 :内置 64KB 的 Flash 存储器,用于存储程序代码和常量数据。
SRAM :提供 20KB 的 SRAM,用于存储变量和运行时数据。
3. 时钟系统
内部时钟源 :包括 8MHz 的高速内部时钟(HSI)和 40KHz 的低速内部时钟(LSI)。
外部时钟源 :支持 12MHz 的高速外部时钟(HSE)和 32.768KHz 的低速外部时钟(LSE)。
时钟树结构 :通过配置时钟树,可以灵活调整系统时钟频率,满足不同应用的需求。
4. GPIO(通用输入输出)
引脚数量 :具有 42 个 GPIO 引脚,分布在 5 个端口(A、B、C、D、E)。
工作模式 :每个 GPIO 引脚可以配置为输入、输出、复用功能或模拟模式。
输出模式 :输出模式下,可配置为推挽输出或开漏输出。
5. 外设
定时器 :包含多个通用定时器和高级定时器,支持多种计时和 PWM 输出功能。
通信接口 :支持 UART、SPI、I2C 等多种通信接口,方便与其他设备进行数据交换。
ADC(模数转换器) :提供 12 位 ADC,用于将模拟信号转换为数字信号。
三、开发环境搭建
1. 硬件准备
开发板 :STM32F103C8T6 开发板,通常配备有 LED 灯、按键等基本外设。
下载器 :用于将编译后的程序烧录到 STM32 芯片中,常见的下载器有 ST-Link、J-Link 等。
电脑 :用于编写和编译代码。
2. 软件安装
集成开发环境(IDE) :推荐使用 Keil uVision 或 STM32CubeIDE。Keil 是一款功能强大的 IDE,支持 STM32 系列芯片的开发;STM32CubeIDE 是由 ST 公司推出的免费 IDE,集成了丰富的开发工具。
驱动库 :安装 STM32 标准外设库或 HAL 库,这些库提供了对 STM32 外设的封装函数,简化了开发过程。
四、点亮第一个 LED 灯
1. 硬件连接
-
将开发板上的 LED 灯连接到 GPIO 引脚,例如 PA0 引脚。确保 LED 的正极连接到 GPIO 引脚,负极通过电阻连接到地(GND)。
2. 软件实现
(1)创建新工程
-
打开 Keil uVision 或 STM32CubeIDE,创建一个新的 STM32 工程,选择 STM32F103C8T6 为目标芯片。
(2)配置时钟
-
在
system_stm32f10x.c
文件中,配置系统时钟。通常使用 HSE(外部高速时钟)作为系统时钟源,并通过 PLL(锁相环)倍频到所需的频率,例如 72MHz。
void SystemInit(void)
{// 配置时钟SystemCoreClockUpdate();SetSysClock();
}void SetSysClock(void)
{// 配置 HSE 和 PLLRCC_OscInitTypeDef RCC_OscInitStruct;RCC_ClkInitTypeDef RCC_ClkInitStruct;// 使能 HSERCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState = RCC_HSE_ON;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; // 12MHz * 9 = 108MHzHAL_RCC_OscConfig(&RCC_OscInitStruct);// 配置系统时钟RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
}
(3)配置 GPIO
-
在主函数中,配置 PA0 引脚为输出模式。
#include "stm32f10x.h"int main(void)
{// 初始化时钟SystemInit();// 配置 GPIOA 时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 配置 PA0 引脚为推挽输出模式GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);// 点亮 LEDGPIO_SetBits(GPIOA, GPIO_Pin_0);while (1){// 主循环}
}
(4)编译与下载
-
编译工程,确保没有错误。使用下载器将编译后的程序烧录到 STM32 芯片中。如果一切正常,LED 灯将被点亮。
五、代码解析
1. 时钟配置
-
时钟配置是 STM32 初始化的重要步骤。通过配置时钟树,可以确保系统时钟频率满足要求。在上述代码中,我们使用 HSE 作为时钟源,并通过 PLL 倍频到 72MHz。
2. GPIO 配置
-
GPIO 引脚需要先使能对应的时钟,然后通过
GPIO_InitTypeDef
结构体配置引脚模式和速度。在本例中,我们将 PA0 配置为推挽输出模式,速度为 50MHz。
3. LED 控制
-
使用
GPIO_SetBits
函数将 PA0 引脚置为高电平,点亮 LED 灯。如果需要熄灭 LED,可以使用GPIO_ResetBits
函数。
六、总结
通过本文的介绍,我们学习了 STM32F103C8T6 的基本特性、开发环境搭建以及如何通过 GPIO 控制点亮第一个 LED 灯。点亮 LED 灯是 STM32 开发的入门实验,掌握了这一基本操作后,可以进一步学习 STM32 的其他外设功能,如定时器、ADC、通信接口等。希望本文能够帮助初学者顺利入门 STM32 开发。
七、参考代码
以下是完整的代码示例,用于点亮 PA0 引脚上的 LED 灯:
#include "stm32f10x.h"void SystemInit(void)
{// 配置时钟SystemCoreClockUpdate();SetSysClock();
}void SetSysClock(void)
{// 配置 HSE 和 PLLRCC_OscInitTypeDef RCC_OscInitStruct;RCC_ClkInitTypeDef RCC_ClkInitStruct;// 使能 HSERCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState = RCC_HSE_ON;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; // 12MHz * 9 = 108MHzHAL_RCC_OscConfig(&RCC_OscInitStruct);// 配置系统时钟RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
}int main(void)
{// 初始化时钟SystemInit();// 配置 GPIOA 时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 配置 PA0 引脚为推挽输出模式GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);// 点亮 LEDGPIO_SetBits(GPIOA, GPIO_Pin_0);while (1){// 主循环}
}
八、常见问题与解答
1. 为什么 LED 灯不亮?
-
检查硬件连接是否正确,确保 LED 的正负极连接正确。
-
检查程序是否正确配置了 GPIO 引脚。
-
检查时钟配置是否正确,确保 GPIO 时钟已使能。
2. 如何更改 LED 灯的引脚?
-
修改 GPIO 配置部分的代码,将
GPIO_Pin_0
更改为所需的引脚编号,例如GPIO_Pin_1
。 -
确保对应的 GPIO 时钟已使能。
3. 如何实现 LED 灯闪烁?
-
在主循环中,使用延时函数交替调用
GPIO_SetBits
和GPIO_ResetBits
函数,实现 LED 灯的闪烁。
while (1)
{GPIO_SetBits(GPIOA, GPIO_Pin_0); // 点亮 LEDfor (int i = 0; i < 1000000; i++); // 延时GPIO_ResetBits(GPIOA, GPIO_Pin_0); // 熄灭 LEDfor (int i = 0; i < 1000000; i++); // 延时
}
相关文章:
STM32F103C8T6 单片机入门基础知识及点亮第一个 LED 灯
目录 一、引言 二、STM32F103C8T6 基本特性 1. 内核与性能 2. 存储器 3. 时钟系统 4. GPIO(通用输入输出) 5. 外设 三、开发环境搭建 1. 硬件准备 2. 软件安装 四、点亮第一个 LED 灯 1. 硬件连接 2. 软件实现 (1)创…...
JavaScript Worker池实现教程
JavaScript Worker池实现教程 Worker池是一种管理和复用Web Workers的有效方法,可以在不频繁创建和销毁Worker的情况下,充分利用多线程能力提升应用性能。下面我将详细介绍如何在JavaScript中实现一个功能完善的Worker池。 为什么需要Worker池…...
【统信UOS操作系统】python3.11安装numpy库及导入问题解决
一、安装Python3.11.4 首先来安装Python3.11.4。所用操作系统:统信UOS 前提是准备好Python3.11.4的安装包(可从官网下载(链接)),并解压到本地: 右键,选择“在终端中打开”ÿ…...
Navicat导入JSON数据到MySQL表
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Navicat导入JSON数据到MySQL表1. 导入入口2.…...
体育比分小程序怎么提示日活
要提高体育比分小程序的日活跃用户(DAU),您可以考虑以下几个方面的策略: 一、核心功能优化 1.实时推送:确保比分更新真正实时,延迟不超过2秒,推荐接入熊猫比分API体育数据,比分实时更新 2.个性化订阅&am…...
【星海随笔】Python-JSON数据的处理
JSON 是一种轻量级的数据交换格式,主要用于在客户端和服务器之间传输数据。 JSON 在 python 里是一个标准库 https://www.jyshare.com/compile/9/ import json data {name: Alice, age: 30, city: New York} json_string json.dumps(data) print(json_string)js…...
Tomcat与Servlet
目录 1 Tomcat 1.1 目录结构 1.2 启动服务器 1.3 部署 2 Servlet 2.1 创建项目 (1)创建Maven项目 (2)目录结构 (3)引入依赖 (4)创建必要的目录结构 (5…...
MySQL MVCC工作流程详解
MySQL MVCC工作流程详解 1. 基础概念 MVCC(多版本并发控制)是通过在每行记录后面保存多个版本来实现并发控制的技术,主要用于提供并发事务访问数据库时的读一致性。 2. 核心要素 2.1 事务ID(DB_TRX_ID) 每个事务都…...
unityTEngine 框架学习记录1
目前项目再用QF框架其中的UI部分,突然有天想学习一下其他好用的框架UI,根据我多年网友胖菊大佬的推荐TE映入眼帘,网上找了一下发现学习教程没有几个,不太适合啥都不会的小白,然后我就加入了ET官方群,里面人长得又帅又有…...
算法的时间复杂度
整理了下算法的时间复杂度,跟大家一起分享下。 时间复杂度O是表示算法运行时间与输入数据规模(通常用 n 表示)之间的关系。算法执行时间随输入数据规模增长的变化趋势。 1、O(1) — 常数时间 无论输入数据多大,执行时间固定不变…...
深度学习 从入门到精通 day_01
Pytorch安装 torch安装 python版本3.9.0 在官方文档里面找到适合你设备的PyTorch版本及对应的安装指令执行即可:https://pytorch.org/get-started/previous-versions/ 针对我的网络及设备情况,我复制了如下指令完成了Torch的安装: …...
AutoToM:让AI像人类一样“读心”的突破性方法
引言:AI如何理解人类的“内心世界”? 如何让AI像人类一样理解他人的意图、情感和动机?这一问题的核心是心智理论(Theory of Mind, ToM),即通过观察行为推断心理状态的能力。近日,约翰霍普金斯大…...
Java实现Redis
String类型 代码 package com.whop.changyuan2.redisTest;import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.cor…...
DAY09:【pytorch】nn网络层
1、卷积层 1.1 Convolution 1.1.1 卷积操作 卷积运算:卷积核在输入信号(图像)上滑动,相应位置上进行乘加卷积核:又称为滤波器、过滤器,可认为是某种模式、某种特征 1.1.2 卷积维度 一般情况下…...
河南普瑞维升企业案例:日事清SOP流程与目标模块实现客户自主简报功能落地
公司简介: 河南普瑞维升企业管理咨询有限公司成立于2017年,目前公司主营业务是为加油站提供全方面咨询管理服务,目前公司成功运营打造河南成品油,运营站点15座,会员数量已达几十万,在加油站周边辐射区域内…...
LeetCode面试热题150中19-22题学习笔记(用Java语言描述)
Day 04 19、最后一个单词的长度 需求:给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 代码表示 public class Q19_1 {p…...
车载刷写架构 --- 刷写流程中重复擦除同一地址的问题分析
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...
一个测试GPU可用的测试实例
一个测试GPU可用的测试实例: import torch import torch.nn as nn import torch.optim as optim import time import gc import numpy as np from torch.cuda.amp import autocast, GradScalerclass LargeNN(nn.Module):def __init__(self, use_attentionTrue):sup…...
chili3d调试笔记2+添加web ui按钮
onclick 查找 打个断点看看 挺可疑的,打个断点看看 挺可疑的,打个断点看看 打到事件监听上了 加ui了 加入成功 新建弹窗-------------------------------------- 可以模仿这个文件,写弹窗 然后在这里注册一下,外部就能调用了 对了…...
Go-zero:JWT鉴权方式
1.简述 用于记录在go-zero的后端项目中如何添加jwt中间件鉴权 2.流程 配置api.yaml Auth:AccessSecret: "secret_key"AccessExpire: 604800config中添加Auth结构体 Auth struct {AccessSecret stringAccessExpire int64 }types定义jwt token的自定义数据结构&#…...
MySQL的MVCC机制详解
1. 什么是MVCC? MVCC(Multi-Version Concurrency Control,多版本并发控制)是数据库系统中用于实现并发控制的一种技术。它通过保存数据在某个时间点的快照来实现,使得在同一个数据行上可以同时存在多个版本࿰…...
Postman做自动化测试
Postman也可以实现接口自动化 1.在Scripts写断言,图中红框处。不会写可以偷懒使用蓝框处会自动填写 2.单个运行调试,结果显示在TestResults 3.多个接口都写好断言并调通后,在包揽这些接口的文件夹下运行,图示以两个接口为例&…...
Meltdown原理介绍:用户空间读取内核内存
摘要 计算机系统的安全性从根本上依赖内存隔离,如,内核地址范围被标记为不可访问并受到保护,以防用户非法访问。本文介绍了Meltdown。 利用现代处理器上乱序执行,来读取内核任意的内存位置,包括个人数据和密码。乱序执行是必不可少的用来提升性能的手段,并在现代处理器中…...
数据结构和算法(七)--树
一、树 树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家谱、单位的组织架构、等等。 树是由n(n>1)个有限结点组成一个具有层次关系的集合。把它叫做"树"是因为它看起来像一…...
UDP猜数字游戏与TCP文件传输案例解析
目录 案例一:UDP协议实现的猜数字游戏 游戏概述 服务器端代码 客户端代码 (udp_client.py) 游戏特点 案例二:TCP协议实现的文件传输工具 工具概述 服务器端代码 客户端代码 工具特点 总结对比 案例一:UDP协议实现的猜数字游戏 游…...
WPF View 与ViewModel注入对象
View 和ViewModel中使用同一个类型的类,注入的对象在主机中通过在服务中添加 AddTransient 获取的不是同一个对象,在 View 绑定了在ViewModel 中是取不到的,应该在View 中注入ViewModel 对象,使用View中的ViewModel对象里面的参数…...
如何下载免费地图数据?
按照以下步骤下载免费地图数据。 1、安装GIS地图下载器 从GeoSaaS(.COM)官网下载“GIS地图下载器”软件:,安装完成后桌面上出现”GIS地图下载器“图标。 双击桌面图标打开”GIS地图下载器“ 2、下载地图数据 点击主界面底部的“…...
B端可视化方案,如何助力企业精准决策,抢占市场先机
在当今竞争激烈的商业环境中,企业需要快速、准确地做出决策以抢占市场先机。B端可视化方案通过将复杂的企业数据转化为直观的图表和仪表盘,帮助企业管理层和业务人员快速理解数据背后的业务逻辑,从而做出精准决策。本文将深入探讨B端可视化方…...
IAR打包生成的hex和.a文件的区别
IAR打包生成的hex和.a文件的区别 在使用IAR Embedded Workbench进行嵌入式开发时,项目生成的文件中常见的两种文件类型是HEX文件和.a文件。它们在项目开发和部署过程中扮演着不同的角色。 HEX文件 定义与用途 HEX文件是一种十六进制表示的二进制文件格式…...
黑马点评:Redis消息队列【学习笔记】
目录 当前业务存在的问题 认识消息队列 List PubSub (publish subscribe) Stream 单消费模式 消费者组模式 对比 异步秒杀优化 当前业务存在的问题 JVM内存限制:当前使用的是JDK提供的阻塞队列,使用的是JVM的内存,如果不加以限制&…...
thinkphp:部署完整项目到本地phpstudy
一、准备工作 首先准备一个thinkphp的项目文件;准备mysql数据库 二、小皮初步搭建 1、建立网站 在小皮界面,网站->创建网站->输入域名,选择PHP版本等 注:确保端口未被占用 2、将项目文件放入根目录 网站->管理->…...
关于链接库
在 C# 中,链接库主要分为两种类型:托管链接库和非托管链接库,以下为你详细介绍它们的特点和导入方式: 托管链接库 特点 托管链接库通常是用 .NET 兼容的语言(如 C#、VB.NET 等)编写的,运行在…...
小程序返回按钮,兼容所有机型的高度办法
现象 在使用返回按钮的时候在不同机型上返回按钮小图标位置总是不一样,一会高一会低。 原因 因为手机的状态栏一般是不一样的,导致设置固定高度的时候就随时在改变。 解决办法 直接获取胶囊按钮的top值和height值将返回按钮的top值设置为一样的&…...
Docker镜像迁移指南:从Windows构建到Ubuntu运行
Docker镜像迁移指南:从Windows构建到Ubuntu运行 本文档详细介绍如何在Windows系统中构建SVM分类服务的Docker镜像,并将其迁移到Ubuntu系统中运行。 项目概述 本项目是一个使用FastAPI构建的SVM图像分类服务,可以将上传的图像分类为五种不同…...
XR技术赋能艺术展演|我的宇宙推动东方美学体验化
本次广州展览现场引入我的宇宙XR体验模块,通过空间计算与动作捕捉技术,让观众在潮玩艺术氛围中体验虚拟互动,打造“看得懂也玩得动”的展演新场景。 作为科技与文化融合的推动者,我的宇宙正在以“体验科技”为媒介,为潮…...
半导体制造如何数字化转型
半导体制造的数字化转型正通过技术融合与流程重构,推动着这个精密产业的全面革新。全球芯片短缺与工艺复杂度指数级增长的双重压力下,头部企业已构建起四大转型支柱: 1. 数据中枢重构产线生态 台积电的「智慧工厂4.0」部署着30万物联网传感器…...
windows虚拟机隐藏“弹出虚拟驱动”
PVE8 上安装的windows虚拟机,SCSI控制器使用了VitrlIO,安装virtio驱动后,右下角有弹出选项,virtio驱动的网卡、Balloon、串口等设备都是标准的PCI设备,支持热插拔,因此Windows系统会在界面上显示设备可以弹…...
AI工具箱源码+成品网站源码+springboot+vue
大家好,今天给大家分享一个靠AI广告赚钱的项目:AI工具箱成品网站源码,源码支持二开,但不允许转售!! 本人专门为小型企业和个人提供的解决方案。 不懂技术的也可以直接部署工具箱网站,成为站长&…...
《MySQL基础:了解MySQL周边概念》
1.登录选项的认识 -h:指明登录部署了mysql服务的主机,默认为127.0.0.1-P:指明要访问的端口号,默认为3306-u:指明登录用户-p:指明登录密码 2.什么是数据库 2.1认识数据库 第一点理解。 mysql是数据库的客户…...
零基础上手Python数据分析 (15):DataFrame 数据排序与排名 - 快速定位关键数据
写在前面 在上一篇文章中,我们学习了如何使用 Pandas 对 DataFrame 进行分组(groupby())和聚合(agg(), apply(), transform()),这使我们能够从不同维度对数据进行汇总和分析。然而,仅仅得到聚合结果往往不够,我们经常需要知道 “谁是第一?”,“哪些数据排在前面/后面…...
案例驱动的 IT 团队管理:创新与突破之路:第五章 创新管理:从机制设计到文化养成-5.1 创新激励体系-5.1.2 OKR 与创新项目的结合
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 OKR 与创新项目的结合:驱动 IT 团队突破性创新的机制设计1. 背景与挑战:创新管理的核心痛点1.1 传统绩效管理体系的失效1.2 OKR 的适应性优势 2. 机制…...
数据库10(代码相关语句)
while循环 declare avgprice numeric(10,2) set avgprice(select avg(price)from titles) //自定义参数 while avgprice<10 //循环条件 begin update titles set priceprice*1.1 end //循环语句操作,当avgprice<10,所有price都加0.1 case语句 查询authors表…...
【Pandas】pandas DataFrame tail
Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签(行标签和列标签&#…...
淘宝 API 与爬虫混合开发:突破官方接口限制的商品数据采集进阶方案
一、引言 在电商数据挖掘领域,获取淘宝商品数据是一项重要任务。淘宝提供了 API 接口,但其存在调用频率、数据范围等限制。为了更全面、高效地采集商品数据,我们可以采用淘宝 API 与爬虫混合开发的方案,结合两者的优势࿰…...
MAC-基于 Spring 框架的高并发批量任务处理方案
基于 Spring 框架的高并发批量任务处理方案 以下结合 Spring 的特性(如 @Async、线程池管理、事务控制)实现高并发批量任务处理,涵盖 任 务分片、异步执行、资源隔离、熔断降级 等核心能力。 一、线程池配置(资源隔离) 通过 ThreadPoolTaskExecut…...
文件包含漏洞 不同语言危险函数导致的漏洞详解
目录 1. 什么是文件包含漏洞? 2. 文件包含漏洞如何利用?实际案例解析 案例 1:PHP 本地文件包含(LFI) 案例 2:PHP 远程文件包含(RFI) 案例 3:Java 目录遍历与文件包含…...
Android ViewPager使用预加载机制导致出现页面穿透问题
缘由 在应用中使用ViewPager,并且设置预加载页面。结果出现了一些异常的现象。 我们有4个页面,分别是4个Fragment,暂且称为FragmentA、FragmentB、FragmentC、FragmentD,ViewPager在MainActivity中,切换时&#x…...
css 中float属性及clear的释疑
float属性可以让元素脱离文档流,父元素中的子元素设置为float,则会导致父元素的高度塌陷。 <style type"text/css"> .father{ /*没有给父元素定义高度*/background:#ccc; border:1px dashed #999; } .box01,.box02,.box0…...
SpringBoot异常处理之自定义统一的错误处理页面
总体来讲,springboot里处理异常有五种方式,先看第一种: 利用springboot的默认配置,我们自定义统一的错误处理页面 前面说了SpringBoot只是帮助我们做了整合的工作,做配一堆的默认配置工作,异常处理的配置…...
事务管理:确保数据一致性与业务完整性
摘要:本文围绕事务管理展开,先回顾事务基本概念与操作,后深入探讨Spring事务管理。通过具体案例剖析事务管理在实际应用中的问题及解决方案,详细介绍Transactional注解及其属性rollbackFor和propagation的使用。 关键词ÿ…...