【STM32】STM32学习笔记-Unix时间戳(41)
00. 目录
文章目录
- 00. 目录
- 01. Unix时间戳
- 02. UTC/GMT
- 03. 时间戳转换
- 04. C 标准库 <time.h>
- 05. 时间相关函数示例
- 5.1 time函数
- 5.2 gmtime函数
- 5.3 localtime函数
- 5.4 mktime函数
- 5.5 ctime函数
- 5.6 asctime函数
- 5.7 strftime函数
- 06. 预留
- 07. 附录
01. Unix时间戳
•Unix 时间戳(Unix Timestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒
•时间戳存储在一个秒计数器中,秒计数器为32位/64位的整型变量
•世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间

02. UTC/GMT
•GMT(Greenwich Mean Time)格林尼治标准时间是一种以地球自转为基础的时间计量系统。它将地球自转一周的时间间隔等分为24小时,以此确定计时标准
•UTC(Universal Time Coordinated)协调世界时是一种以原子钟为基础的时间计量系统。它规定铯133原子基态的两个超精细能级间在零磁场下跃迁辐射9,192,631,770周所持续的时间为1秒。当原子钟计时一天的时间与地球自转一周的时间相差超过0.9秒时,UTC会执行闰秒来保证其计时与地球自转的协调一致
03. 时间戳转换
C语言的time.h模块提供了时间获取和时间戳转换的相关函数,可以方便地进行秒计数器、日期时间和字符串之间的转换


04. C 标准库 <time.h>
C 标准库 <time.h>
time.h 头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。
下面是头文件 time.h 中定义的变量类型:
| 序号 | 变量 & 描述 |
|---|---|
| 1 | size_t 是无符号整数类型,它是 sizeof 关键字的结果。 |
| 2 | clock_t 这是一个适合存储处理器时间的类型。 |
| 3 | time_t is 这是一个适合存储日历时间类型。 |
| 4 | struct tm 这是一个用来保存时间和日期的结构。 |
tm 结构的定义如下:
struct tm {int tm_sec; /* 秒,范围从 0 到 59 */int tm_min; /* 分,范围从 0 到 59 */int tm_hour; /* 小时,范围从 0 到 23 */int tm_mday; /* 一月中的第几天,范围从 1 到 31 */int tm_mon; /* 月,范围从 0 到 11 */int tm_year; /* 自 1900 年起的年数 */int tm_wday; /* 一周中的第几天,范围从 0 到 6 */int tm_yday; /* 一年中的第几天,范围从 0 到 365 */int tm_isdst; /* 夏令时 */
};
库宏
下面是头文件 time.h 中定义的宏:
| 序号 | 宏 & 描述 |
|---|---|
| 1 | NULL 这个宏是一个空指针常量的值。 |
| 2 | CLOCKS_PER_SEC 这个宏表示每秒的处理器时钟个数。 |
库函数
下面是头文件 time.h 中定义的函数:
| 序号 | 函数 & 描述 |
|---|---|
| 1 | char *asctime(const struct tm *timeptr) 返回一个指向字符串的指针,它代表了结构 timeptr 的日期和时间。 |
| 2 | clock_t clock(void) 返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。 |
| 3 | char *ctime(const time_t *timer) 返回一个表示当地时间的字符串,当地时间是基于参数 timer。 |
| 4 | double difftime(time_t time1, time_t time2) 返回 time1 和 time2 之间相差的秒数 (time1-time2)。 |
| 5 | struct tm *gmtime(const time_t *timer) timer 的值被分解为 tm 结构,并用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。 |
| 6 | struct tm *localtime(const time_t *timer) timer 的值被分解为 tm 结构,并用本地时区表示。 |
| 7 | time_t mktime(struct tm *timeptr) 把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。 |
| 8 | size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) 根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。 |
| 9 | time_t time(time_t *timer) 计算当前日历时间,并把它编码成 time_t 格式。 |
05. 时间相关函数示例
5.1 time函数
time_t time(time_t *t)
功能:C 库函数 time_t time(time_t *seconds) 返回自纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间,以秒为单位。如果 seconds 不为空,则返回值也存储在变量 seconds 中。参数:seconds -- 这是指向类型为 time_t 的对象的指针,用来存储 seconds 的值。返回值:以 time_t 对象返回当前日历时间。
示例:
#include <stdio.h>
#include <time.h>int main(void)
{time_t t;t = time(NULL);printf("t = %ld\n", t);return 0;
}
5.2 gmtime函数
struct tm *gmtime(const time_t *timer)
功能:使用 timer 的值来填充 tm 结构,并用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。参数:timeptr -- 这是指向表示日历时间的 time_t 值的指针。返回值:该函数返回指向 tm 结构的指针,该结构带有被填充的时间信息。下面是 timeptr 结构的细节:struct tm {int tm_sec; /* 秒,范围从 0 到 59 */int tm_min; /* 分,范围从 0 到 59 */int tm_hour; /* 小时,范围从 0 到 23 */int tm_mday; /* 一月中的第几天,范围从 1 到 31 */int tm_mon; /* 月份,范围从 0 到 11 */int tm_year; /* 自 1900 起的年数 */int tm_wday; /* 一周中的第几天,范围从 0 到 6 */int tm_yday; /* 一年中的第几天,范围从 0 到 365 */int tm_isdst; /* 夏令时 */
};
程序示例
#include <stdio.h>
#include <time.h>int main(void)
{struct tm *tm1 = NULL;time_t t;t = time(NULL);printf("t = %ld\n", t);tm1 = gmtime(&t);printf("year: %d\n", tm1->tm_year + 1900);printf("mon: %d\n", tm1->tm_mon + 1);printf("mday: %d\n", tm1->tm_mday);printf("%d:%d:%d\n", tm1->tm_hour, tm1->tm_min, tm1->tm_sec);return 0;
}
运行结果
root@local:~/code# ./a.out
t = 1706176342
year: 2024
mon: 1
mday: 25
9:52:22
root@local:~/code#
5.3 localtime函数
struct tm *localtime(const time_t *timer)
功能:用 timer 的值来填充 tm 结构。timer 的值被分解为 tm 结构,并用本地时区表示。参数:timer -- 这是指向表示日历时间的 time_t 值的指针。返回值:该函数返回指向 tm 结构的指针,该结构带有被填充的时间信息。下面是 tm 结构的细节:struct tm {int tm_sec; /* 秒,范围从 0 到 59 */int tm_min; /* 分,范围从 0 到 59 */int tm_hour; /* 小时,范围从 0 到 23 */int tm_mday; /* 一月中的第几天,范围从 1 到 31 */int tm_mon; /* 月份,范围从 0 到 11 */int tm_year; /* 自 1900 起的年数 */int tm_wday; /* 一周中的第几天,范围从 0 到 6 */int tm_yday; /* 一年中的第几天,范围从 0 到 365 */int tm_isdst; /* 夏令时 */
};
程序示例
#include <stdio.h>
#include <time.h>int main(void)
{struct tm *tm1 = NULL;time_t t;t = time(NULL);printf("t = %ld\n", t);tm1 = localtime(&t);printf("year: %d\n", tm1->tm_year + 1900);printf("mon: %d\n", tm1->tm_mon + 1);printf("mday: %d\n", tm1->tm_mday);printf("%d:%d:%d\n", tm1->tm_hour, tm1->tm_min, tm1->tm_sec);return 0;
}
运行结果
root@local:~/code# ./a.out
t = 1706176551
year: 2024
mon: 1
mday: 25
17:55:51
root@local:~/code#
5.4 mktime函数
time_t mktime(struct tm *timeptr)
功能:把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。参数:timeptr -- 这是指向表示日历时间的 time_t 值的指针,该日历时间被分解为以下各部分。下面是 timeptr 结构的细节:返回值:该函数返回一个 time_t 值,该值对应于以参数传递的日历时间。如果发生错误,则返回 -1 值。struct tm {int tm_sec; /* 秒,范围从 0 到 59 */int tm_min; /* 分,范围从 0 到 59 */int tm_hour; /* 小时,范围从 0 到 23 */int tm_mday; /* 一月中的第几天,范围从 1 到 31 */int tm_mon; /* 月份,范围从 0 到 11 */int tm_year; /* 自 1900 起的年数 */int tm_wday; /* 一周中的第几天,范围从 0 到 6 */int tm_yday; /* 一年中的第几天,范围从 0 到 365 */int tm_isdst; /* 夏令时 */
};
程序示例
#include <stdio.h>
#include <time.h>int main(void)
{struct tm *tm1 = NULL;time_t t;t = time(NULL);printf("t = %ld\n", t);tm1 = localtime(&t);printf("year: %d\n", tm1->tm_year + 1900);printf("mon: %d\n", tm1->tm_mon + 1);printf("mday: %d\n", tm1->tm_mday);printf("%d:%d:%d\n", tm1->tm_hour, tm1->tm_min, tm1->tm_sec);t = mktime(tm1);printf("t = %ld\n", t);return 0;
}
运行结果
root@local:~/code#
root@local:~/code# ./a.out
t = 1706176784
year: 2024
mon: 1
mday: 25
17:59:44
t = 1706176784
root@local:~/code#
5.5 ctime函数
char *ctime(const time_t *timer)
功能:返回一个表示当地时间的字符串,当地时间是基于参数 timer。返回的字符串格式如下:Www Mmm dd hh:mm:ss yyyy其中,Www 表示星期几,Mmm 是以字母表示的月份,dd 表示一月中的第几天,hh:mm:ss 表示时间,yyyy 表示年份。参数:timer -- 这是指向 time_t 对象的指针,该对象包含了一个日历时间。返回值:该函数返回一个 C 字符串,该字符串包含了可读格式的日期和时间信息。
程序示例
#include <stdio.h>
#include <time.h>int main(void)
{struct tm *tm1 = NULL;time_t t;t = time(NULL);printf("t = %ld\n", t);printf("%s\n", ctime(&t));return 0;
}
运行结果
root@local:~/code# ./a.out
t = 1706176968
Thu Jan 25 18:02:48 2024root@local:~/code#
5.6 asctime函数
char *asctime(const struct tm *timeptr)
功能:返回一个指向字符串的指针,它代表了结构 struct timeptr 的日期和时间。参数:timeptr 是指向 tm 结构的指针,包含了分解为如下各部分的日历时间:返回值:该函数返回一个 C 字符串,包含了可读格式的日期和时间信息 Www Mmm dd hh:mm:ss yyyy,其中,Www 表示星期几,Mmm 是以字母表示的月份,dd 表示一月中的第几天,hh:mm:ss 表示时间,yyyy 表示年份。struct tm {int tm_sec; /* 秒,范围从 0 到 59 */int tm_min; /* 分,范围从 0 到 59 */int tm_hour; /* 小时,范围从 0 到 23 */int tm_mday; /* 一月中的第几天,范围从 1 到 31 */int tm_mon; /* 月份,范围从 0 到 11 */int tm_year; /* 自 1900 起的年数 */int tm_wday; /* 一周中的第几天,范围从 0 到 6 */int tm_yday; /* 一年中的第几天,范围从 0 到 365 */int tm_isdst; /* 夏令时 */
};
程序示例:
#include <stdio.h>
#include <time.h>int main(void)
{struct tm *tm1 = NULL;time_t t;t = time(NULL);printf("t = %ld\n", t);tm1 = localtime(&t);printf("year: %d\n", tm1->tm_year + 1900);printf("mon: %d\n", tm1->tm_mon + 1);printf("mday: %d\n", tm1->tm_mday);printf("%d:%d:%d\n", tm1->tm_hour, tm1->tm_min, tm1->tm_sec);printf("%s\n", asctime(tm1));return 0;
}
运行结果:
root@local:~/code# ./a.out
t = 1706177253
year: 2024
mon: 1
mday: 25
18:7:33
Thu Jan 25 18:07:33 2024root@local:~/code#
5.7 strftime函数
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
功能:根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。参数:str -- 这是指向目标数组的指针,用来复制产生的 C 字符串。maxsize -- 这是被复制到 str 的最大字符数。format -- 这是 C 字符串,包含了普通字符和特殊格式说明符的任何组合。这些格式说明符由函数替换为表示 tm 中所指定时间的相对应值。格式说明符是:timeptr -- 这是指向 tm 结构的指针,该结构包含了一个呗分解为以下各部分的日历时间:
返回值:如果产生的 C 字符串小于 size 个字符(包括空结束字符),则会返回复制到 str 中的字符总数(不包括空结束字符),否则返回零。struct tm {int tm_sec; /* 秒,范围从 0 到 59 */int tm_min; /* 分,范围从 0 到 59 */int tm_hour; /* 小时,范围从 0 到 23 */int tm_mday; /* 一月中的第几天,范围从 1 到 31 */int tm_mon; /* 月份,范围从 0 到 11 */int tm_year; /* 自 1900 起的年数 */int tm_wday; /* 一周中的第几天,范围从 0 到 6 */int tm_yday; /* 一年中的第几天,范围从 0 到 365 */int tm_isdst; /* 夏令时 */
};
| 说明符 | 替换为 | 示例 |
|---|---|---|
| %a | 缩写的星期几名称 | Sun |
| %A | 完整的星期几名称 | Sunday |
| %b | 缩写的月份名称 | Mar |
| %B | 完整的月份名称 | March |
| %c | 日期和时间表示法 | Sun Aug 19 02:56:02 2012 |
| %d | 一月中的第几天(01-31) | 19 |
| %H | 24 小时格式的小时(00-23) | 14 |
| %I | 12 小时格式的小时(01-12) | 05 |
| %j | 一年中的第几天(001-366) | 231 |
| %m | 十进制数表示的月份(01-12) | 08 |
| %M | 分(00-59) | 55 |
| %p | AM 或 PM 名称 | PM |
| %S | 秒(00-61) | 02 |
| %U | 一年中的第几周,以第一个星期日作为第一周的第一天(00-53) | 33 |
| %w | 十进制数表示的星期几,星期日表示为 0(0-6) | 4 |
| %W | 一年中的第几周,以第一个星期一作为第一周的第一天(00-53) | 34 |
| %x | 日期表示法 | 08/19/12 |
| %X | 时间表示法 | 02:50:06 |
| %y | 年份,最后两个数字(00-99) | 01 |
| %Y | 年份 | 2012 |
| %Z | 时区的名称或缩写 | CDT |
| %% | 一个 % 符号 | % |
程序示例:
#include <stdio.h>
#include <time.h>int main(void)
{struct tm *tm1 = NULL;time_t t;char buf[128];t = time(NULL);printf("t = %ld\n", t);tm1 = localtime(&t);printf("year: %d\n", tm1->tm_year + 1900);printf("mon: %d\n", tm1->tm_mon + 1);printf("mday: %d\n", tm1->tm_mday);printf("%d:%d:%d\n", tm1->tm_hour, tm1->tm_min, tm1->tm_sec);printf("%s\n", asctime(tm1));strftime(buf, 80, "%Y-%m-%d %H:%M:%S", tm1);printf("格式化后的日期: %s\n", buf);return 0;
}
运行结果:
root@local:~/code# ./a.out
t = 1706177489
year: 2024
mon: 1
mday: 25
18:11:29
Thu Jan 25 18:11:29 2024格式化后的日期: 2024-01-25 18:11:29
root@local:~/code#
06. 预留
07. 附录
参考: 【STM32】江科大STM32学习笔记汇总
相关文章:
【STM32】STM32学习笔记-Unix时间戳(41)
00. 目录 文章目录 00. 目录01. Unix时间戳02. UTC/GMT03. 时间戳转换04. C 标准库 <time.h>05. 时间相关函数示例5.1 time函数5.2 gmtime函数5.3 localtime函数5.4 mktime函数5.5 ctime函数5.6 asctime函数5.7 strftime函数 06. 预留07. 附录 01. Unix时间戳 •Unix 时…...
2016年认证杯SPSSPRO杯数学建模B题(第一阶段)低分辨率下看世界全过程文档及程序
2016年认证杯SPSSPRO杯数学建模 B题 低分辨率下看世界 原题再现: 数码摄像技术被广泛使用于多种场合中。有时由于客观条件的限制,拍摄设备只能在较低的分辨率下成像。为简单起见,我们只考虑单色成像。假设成像的分辨率为 32 64,…...
16、Kafka ------ SpringBoot 整合 Kafka (配置 Kafka 属性 及对应的 属性处理类 解析)
目录 配置 Kafka 及对应的 属性处理类配置KafkaKafka配置属性的约定代码演示生产者相关的配置消费者相关的配置 代码(配置文件)application.properties 配置 Kafka 及对应的 属性处理类 配置Kafka spring.kafka.* 开头的配置属性,这些属性将由…...
【蓝桥杯选拔赛真题61】python偶数平方 第十五届青少年组蓝桥杯python 选拔赛比赛真题解析
目录 python偶数平方 一、题目要求 1、编程实现 2、输入输出...
智能语音识别源码系统+语义理解+对话管理+语音合成 带完整的搭建教程
人工智能技术的不断发展,智能语音识别技术逐渐成为人们日常生活和工作中不可或缺的一部分。然而,目前市场上的智能语音识别产品大多存在一定的局限性,如识别率不高、功能单一等。为了解决这些问题,罗峰给大家分享一款基于智能语音…...
cdh6.3.2的hive配udf
背景 大数据平台的租户要使用udf,他们用beeline连接, 意味着要通过hs2,但如果有多个hs2,各个hs2之间不能共享,需要先把文件传到hdfs,然后手动在各hs2上create function。之后就可以永久使用了,…...
在DevEco开发工具中,使用Previewer预览界面中的UI组件
1、在DevEco工具中,点击并展开PreViewer预览器 2、在PreViewer预览器中,点击Tt按钮(Inspector)切换至组件查看模式 3、在组件查看模式下选择组件,代码呈现选中状态,右侧呈现组件树,右下方呈现组…...
【蓝桥杯冲冲冲】旅行计划
蓝桥杯备赛 | 洛谷做题打卡day18 文章目录 蓝桥杯备赛 | 洛谷做题打卡day18旅行计划题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题解代码我的一些话 旅行计划 题目描述 Kira酱要去一个国家旅游。这个国家有 N N N 个城市,编号为 1 1 1 至 N N…...
Ultraleap 3Di配置以及在 Unity 中使用 Ultraleap 3Di手部跟踪
0 开发需求 1、硬件:Ultraleap 手部追踪相机(Ultraleap 3Di) 2、软件:在计算机上安装Ultraleap Gemini (V5.2) 手部跟踪软件。 3、版本:Unity 2021 LTS 或更高版本 4、Unity XR插件管理:可从软件包管理器窗…...
HarmonyOS鸿蒙学习基础篇 - Text文本组件
该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 Text文本组件是可以显示一段文本的组件。该组件从API Version 7开始支持,从API version 9开始,该接口支持在ArkTS卡片中使用。 子组件 可…...
pytorch学习笔记(十一)
优化器学习 把搭建好的模型拿来训练,得到最优的参数。 import torch.optim import torchvision from torch import nn from torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linear from torch.utils.data import DataLoaderdataset torchvision.datas…...
【并发编程】 synchronized的普通方法,静态方法,锁对象,锁升级过程,可重入锁,非公平锁
目录 1.普通方法 2.静态方法 3.锁对象 4.锁升级过程 5.可重入的锁 6.不公平锁 非公平锁的 lock 方法: 1.普通方法 将synchronized修饰在普通同步方法,那么该锁的作用域是在当前实例对象范围内,也就是说对于 SyncDemosdnewSyncDemo();这一个实例对象…...
jQuery 删除元素 —— W3school 详解 简单易懂(十四)
通过 jQuery,可以很容易地删除已有的 HTML 元素。 删除元素/内容 如需删除元素和内容,一般可使用以下两个 jQuery 方法: remove() - 删除被选元素(及其子元素)empty() - 从被选元素中删除子元素 jQuery remove() 方…...
在 Linux 上搭建 Java 环境
目录 一、安装jdk 1. 挑选 jdk 版本 2. 安装 3. 验证 jdk 二、安装tomcat 1. 下载压缩包 2. 上传压缩包给 Linux (需要用到 rz 命令) 3. 解压压缩包(需要用到 unzip) 4. 进入 bin 目录 5. 给启动脚本增加可执行权限 6. 启…...
深度学习-Pytorch如何保存和加载模型
深度学习-Pytorch如何保存和加载模型 用pytorch构建模型,并训练模型,得到一个优化的模型,那么如何保存模型?然后如何又加载模型呢? pytorch 目前在深度学习具有重要的地位,比起早先的caffe,te…...
2.数据结构 顺序表(自留笔记)
文章目录 一.静态顺序表:长度固定二.动态顺序表1.下面证明原地扩容和异地扩容代码如下:2.下面是写一段Print,打印数字看看:3.头插4.尾删5.头删6.越界一定会报错吗7.下标插入8.下标删除9.查找数字10.应用:利用顺序表写一…...
将python打包成exe文件
将python打包成exe文件 文章目录 将python打包成exe文件1.安装PyInstaller2.配置pyinstaller到环境变量3.打包 以上一篇文章🔗用python删除重复文件并放入回收站为例,演示了如何用python写一个删除重复文件并放入回收站的功能代码,但是每次都…...
大数据处理,Pandas与SQL高效读写大型数据集
大家好,使用Pandas和SQL高效地从数据库中读取、处理和写入大型数据集,以实现最佳性能和内存管理,这是十分重要的。 处理大型数据集往往是一项挑战,特别是在涉及到从数据库读取和写入数据时。将整个数据集加载到内存中的传统方法可…...
【2024年5月备考新增】《软考高项论文专题 (2)论文背景(合集)》
1 论文的项目背景 1.1 论文写法 段落字数 - 正文全部字数不少于2000字孙悟空大闹天宫,被如来镇压,唐僧收服孙悟空,开始去西天取经。背景500字因为路途遥远,所以需要九九八十一难,才能取得正经。过渡段150字第一难、第二难 … 第八十一难过程1300字取得正经,唐僧只受了八…...
Mysql复习1--理论基础+操作实践--更新中
Mysql 索引索引的分类索引失效sql优化 删除数据库数据恢复 索引InnoDB引擎MyISAM引擎Memory引擎Btree索引支持支持支持hash索引不支持不支持支持R-tree索引不支持支持不支持Full-text索引5.6版本以后支持支持不支持 索引 解释说明: 索引指的是帮助mysql高效的获取数据的结构叫…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
