【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高效的获取数据的结构叫…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
