类模板的简单实例
author: hjjdebug
date: 2025年 05月 16日 星期五 15:06:00 CST
description: 类模板的简单实例
文章目录
- 1.实例代码:
- 2. 模板类写法
- 2.1 模板类的构造函数.
- 2.2 模板类中的语句
- 3. 模板类的实例化过程.
- 3.1 实例化的进一步试验.
- 4. 怎样调试constexpr 修饰的函数?
类模板的概念可能很复杂,假定你已经理解了一些基本概念.
这里用简单实例来巩固一些基本概念.
1.实例代码:
$ cat main.cpp
#include <stdio.h>
//定义一个类模板,带类型参数和非类型参数
//将来可以生成很多类
template <typename Func, int N>
struct ConstArray
{constexpr ConstArray(Func f) : data{} {for (int i = 0; i < N; ++i)data[i] = f(i);}int data[N];
};
//想调试,你可以去掉constexpr, 编译出debug版本调试
constexpr int myFunc(int i) { return i * 2; }/* 定义一个类模板实例, 实例化类模板, 型实结合的过程* 模板参数1,类型 ,传递实参deltype(&myFunc)* 模板参数2,整数 ,传递整数3** 定义类的对象名称arr,传递对象的构造参数&myFunc*/
//constexpr ConstArray<decltype(&myFunc),5> arr(&myFunc); // 放开该语句,编译时就能生成数组 {0, 2, 4, 6,8}:int main()
{int(*pTest1)(int) = myFunc;int(*pTest2)(int) = &myFunc;printf("pTest1:%p,pTest2:%p\n",pTest1,pTest2);//两种赋值都能工作,随便选一种吧,都各有各的道理,其实是一样的,选第二种吧.ConstArray<decltype(myFunc),5> arr(myFunc); //该对象执行时会被直接付给初值,数值是编译期调用构造计算好的.ConstArray<decltype(&myFunc),5> arr2(&myFunc); return 0;
}
运行:
./tt
pTest1:0x401136,pTest2:0x401136
2. 模板类写法
template <typename Func, int N>
struct ConstArray
template 是关键字, 表示模板, 模板就是模子, 就是由它可造出一堆东西来.
typename 是关键字, 表示模板类型, 也可以用class 关键字替换.
Func 是模板类型名称,是一个标识符, 你可以改成你喜欢的名字. 它代表了可变的类型.
int 是关键字, 是确定的类型为int
N 是标识符,可改为你喜欢的名字. 是非类型参数, 将来由固定的数值替换.
struct 是关键字, 代表定义的是类.
ConstArray 是标识符, 代表类模板的名称
与普通类定义比较,多了模板参数声明部分,这正式模板类的精华所在, 类型是不固定的,由参数确定类型.
模板类只注重算法,不注重类型,进一步把算法分离.
模板参数还可以传递固定类型的参数,例如这里的N,它是一个整形数, 叫非类型模板参数. 通常用来处理编译期常量
如果按定义读下来, 似乎模板类更自然, 但从意义而言,类模板更贴切,
类模板,模板类含义差不多,也就混用了.
2.1 模板类的构造函数.
constexpr ConstArray(Func f) : data{}
constexpr 是关键字, 表示函数可以在编译器调用.
ConstArray 与类同名,表示是构成函数
Func 是模板类传来的类型
f 是类型的实例,是对象, 其名称是标识符,可以随便起名.
data 是该类定义的 int 型数据成员. 是一个数组名称,数组大小为模板参数N
2.2 模板类中的语句
分析一条函数语句:
for (int i = 0; i < N; ++i) data[i] = f(i);
for循环意义比较明确,仅有f(i) 看着别扭, f 是我们传来的类型的实例, f(i)是什么意思?
如果f是一个函数指针,那f(i) 就是函数调用. 所以在实例化时要传递函数地址.
3. 模板类的实例化过程.
constexpr ConstArray<decltype(&myFunc),5> arr(&myFunc);
/* 定义一个类模板实例, 实现型实结合的过程
- 模板参数1,类型 ,类型是gcc 从传递的构造参数推导出来的deltype(&myFunc)
- 模板参数2,整数 ,传递整数5 , 表示只运算5次
- 定义类的对象名称arr,传递对象的构造参数&myFunc
我们看看gdb中打印的arr, 这就是gcc 我们编译的计算机认识的对象. 一目了然.
(gdb) p arr
$3 = {data = {0, 2, 4, 6, 8}
}
(gdb) ptype arr
type = const struct ConstArray<int (*)(int), 5> [with Func = int (*)(int)] {int data[5];public:ConstArray(Func);
}
类型的名称就有点长了,是模板类型 struct ConstArray<int (*)int,5> 类型
3.1 实例化的进一步试验.
我们把实例化改一改,如下:
constexpr ConstArray<decltype(&myFunc),5> arr(1);
编译出错:
error: invalid conversion from ‘int’ to ‘int ()(int)’ [-fpermissive]
22 | constexpr ConstArray<decltype(&myFunc),5> arr(1); // 编译时生成数组 {0, 2, 4, 6,8}:
| ^
| |
| int
咿! 它怎么知道我传1不对,要求传int()(int) 函数呢? 噢! 是 decltype(&myFunc)推导出来的.
重新实例化:
constexpr ConstArray<int,5> arr(1);
编译报错:
main.cpp:9:42: error: ‘f’ cannot be used as a function
9 | for (int i = 0; i < N; ++i) data[i] = f(i);
| ^~
gcc 抱怨我们传入的类型对象没法当函数来调用, 是的,我们传入的是整数1,当然不能当函数.
这样对传递的类型要求有了更清晰的认识.
可见模板类会对传递的类型进行检查, 对i语句语法进行检查, 如果gcc不理解,就会报错,
可见其使用还是很安全的. 是啊,生不成执行代码,gcc 肯定是不干的.
如果我不用编译期生成数据,而在运行期再生成数据,是怎样的过程呢?
反编译发现,竟是直接把数值付给类成员, 调用构造函数及回调函数根本就没有执行.
26 ConstArray<decltype(&myFunc),5> arr(&myFunc);
0x0000000000401151 <+27>: movl $0x0,-0x20(%rbp)
0x0000000000401158 <+34>: movl $0x2,-0x1c(%rbp)
0x000000000040115f <+41>: movl $0x4,-0x18(%rbp)
0x0000000000401166 <+48>: movl $0x6,-0x14(%rbp)
0x000000000040116d <+55>: movl $0x8,-0x10(%rbp)
可见gcc 在编译期,根据用户提供的线索,构造函数,回调函数,按解释性语句已经帮我们计算好了数据,
直接来构建了对象, gcc 很强大!
4. 怎样调试constexpr 修饰的函数?
此例我想看看构造过程,因为如果函数比较复杂,运行出错怎么办?
你只需要去掉constexpr 就可以了. debug版还可以跟入函数内部.
否则的话, 静态编译,你只能看到编译的结果而看不到具体的过程.
调试的时候,myFunc 的地址也可以看见了.
(gdb) p myFunc
$6 = {int (int)} 0x401136 <myFunc(int)>
它说myFunc 地址是0x401136
类型: 输入参数是int,输出参数是int的函数类型
(gdb) p &myFunc
函数名称本来就是地址0x401136, 函数名称再取地址是什么意思?
由调试知道, 它认为还是地址,地址没有变,但类型变了,是函数指针类型的地址,
$7 = (int (*)(int)) 0x401136 <myFunc(int)>
这与我们通常意义上的变量取地址是不一样的内涵!
变量取地址是变量所处的内存地址. 函数名称取地址其值还是函数的地址,这只能算是和gcc的约定了.
但这就要小心了,函数指针解引用,其值还是函数地址.
即从0x401136函数指针解引用还是得0x401136函数地址, 效果上好象调不调解引用都一样
(gdb) ptype myFunc
type = int (int)
(gdb) ptype &myFunc
type = int (*)(int)
int(int) 与 int(*) int 有什么区别呢?
前者为函数类型,后者为函数指针类型.如果一定要区分的话.
我们定义一个函数指针pTest,为其赋值即可调用函数.
int (*pTest1) (int) = myFunc;
int (*pTest2) (int) = &myFunc;
两种赋值方式都是可以通过编译的,且pTest1 完全等价于pTest2
c++中允许写为 pTest(5); 这种形式来调用函数
实例化类时我传myFunc,或传&myFunc 结果都是对的, 因为它们传的都是0x401136
而且其构造函数的参数类型f 都是
(gdb) p f
4 = (int (*)(int)) 0x401136 <myFunc(int)>
在这里得到了统一.
int (int) 类型的Func类型声明一个变量f, 居然是int (*) (int) 类型的, 看起来还是有一点点不爽,
所以正宗的还是传递&myFunc 吧. 这样它们的类型一致性更好.
而且了解到myFunc与&myFunc它们的值是一样的. 用着也就放心了.
按说gcc 应该加一种限制,把函数地址限定为一种会更好,
或者让函数名称代表有效地址,
或者让函数名称取地址代表有效地址,
让2者都有效,总有一种混乱的感觉. 但如果限制某一种,也有管得太宽的嫌疑.
算了,现实是允许这种有点混乱的赋值,知道了其内在实现,心理用着也就踏实了.
相关文章:
类模板的简单实例
author: hjjdebug date: 2025年 05月 16日 星期五 15:06:00 CST description: 类模板的简单实例 文章目录 1.实例代码:2. 模板类写法2.1 模板类的构造函数.2.2 模板类中的语句 3. 模板类的实例化过程.3.1 实例化的进一步试验. 4. 怎样调试constexpr 修饰的函数? 类模…...
描述性统计图表
一、核心图表类型与用途 1、直方图(Histogram) (1)定义:用连续矩形表示数据分布,横轴为数据区间,纵轴为频数或频率。 (2)用途:展示数据分布形态(对称、偏态)、识别离群值。 (3)适用场景:分析连续型变量的分布特征,如收入分布、考试成绩分布。 2、箱线图(Box P…...
【Golang笔记01】Goland基础语法规则
Golang笔记:快速学习Golang基础语法规则 一、基础语法 1.1、环境安装 第一步需要安装go的运行环境,从官网下载安装包:https://golang.google.cn/dl/。 第二步需要安装go的开发工具,可以使用vscode、goland。这里推荐使用golan…...
STM32 ADC+DMA+TIM触发采样实战:避坑指南与源码解析
知识点1【TRGO的介绍】 1、TRGO的概述 TRGO:Trigger Output(触发输出),是定时器的一种功能。 它可以作为外设的启动信号,比如ADC转换,DAC输出,DMA请求等。 对于ADC来说,可以通过…...
Gmsh 读取自定义轮廓并划分网格:深入解析与实践指南
一、Gmsh 简介 (一)Gmsh 是什么 Gmsh 是一款功能强大的开源有限元网格生成器,广泛应用于工程仿真、数值模拟以及计算机图形学等领域。它为用户提供了从几何建模到网格划分的一整套解决方案,能够有效处理复杂几何形状,生成高质量的二维和三维网格,满足多种数值方法的需求…...
Elasticsearch/OpenSearch 中doc_values的作用
目录 1. 核心作用 2. 适用场景 3. 与 index 参数的对比 4. 典型配置示例 场景 1:仅用于聚合,禁止搜索 场景 2:优化大字段存储 5. 性能调优建议 6. 底层原理 doc_values 是 Elasticsearch/OpenSearch 中用于优化查询和聚合的列式存储结…...
如何在 Windows 10 或 11 上使用命令提示符安装 PHP
我们可以在 Windows 上从其官方网站下载并安装 PHP 的可执行文件,但使用命令提示符或 PowerShell 更方便。 PHP 并不是一种新的或不为人知的脚本语言,它已经存在并被全球数千名网络开发人员使用。它以开源许可并分发,广泛用于 LAMP 堆栈中。然而,与 Linux 相比,它在 Wind…...
SZU 编译原理
总结自 深圳大学《编译原理》课程所学相关知识。 文章目录 文法语法分析自顶向下的语法分析递归下降分析LL(1) 预测分析法FIRST 集合FOLLOW 集合 文法 乔姆斯基形式语言理论: 表达能力:0型文法 > 1型文法 > 2型文法 > 3型文法。 0 型文法&am…...
灌区量测水自动化监测解决方案
一、方案背景 随着社会发展和人口增长,水资源需求不断增大。我国水资源总量虽然丰富,但时空分布不均,加之农业用水占比大且效率偏低,使得水资源短缺问题日益凸显。农业用水一直是我国的耗水大户,占全部耗水总量的60%以…...
CVE-2017-8046 漏洞深度分析
漏洞概述 CVE-2017-8046 是 Spring Data REST 框架中的一个高危远程代码执行漏洞,影响版本包括 Spring Data REST < 2.5.12、2.6.7、3.0 RC3 及关联的 Spring Boot 和 Spring Data 旧版本。攻击者通过构造包含恶意 SpEL(Spring Expression Language&…...
1基·2台·3空间·6主体——蓝象智联解码可信数据空间的“数智密码”
近日,由全国数据标准化技术委员会编制的《可信数据空间 技术架构》技术文件正式发布,标志着我国数据要素流通体系向标准化、规范化迈出关键一步。该文件从技术功能、业务流程、安全要求三大维度对可信数据空间进行系统性规范,为地方、行业及企…...
MySQL的存储过程
这一部分比较重要,加油!!!部分代码忘记保存了,嘻嘻,练习代码在最后,大家共勉!!! 通俗来讲,视图是死的,但是这个可以根据传入的参数不同…...
spring学习->sprintboot
spring IoC(控制翻转): 控制:资源的控制权(资源的创建,获取,销毁等) 反转:和传统方式不一样(用上面new什么),不用new让ioc来发现你用什么,然后我来给什么 DI:(依赖注入) 依赖:组件的依赖关系。如newsController依赖NewsServi…...
如何排查阻塞语句
文章目录 文档用途详细信息 文档用途 查询阻塞当前sql的语句,并结束阻塞语句。 详细信息 1、通过pg_stat_activity视图和pg_blocking_pids函数查找阻塞sql。 highgo# select pid,pg_blocking_pids(pid),wait_event_type,wait_event,query from pg_stat_activity…...
TIP-2021《SRGAT: Single Image Super-Resolution With Graph Attention Network》
推荐深蓝学院的《深度神经网络加速:cuDNN 与 TensorRT》,课程面向就业,细致讲解CUDA运算的理论支撑与实践,学完可以系统化掌握CUDA基础编程知识以及TensorRT实战,并且能够利用GPU开发高性能、高并发的软件系统…...
【AI学习】AI大模型技术发展研究月报的生成提示词
AI大模型技术发展研究月报生成提示词 请输出AI大模型技术发展研究月报,要求如下: —————————— 任务目标 在今天({{today}})往前连续 30 天内,检索已正式公开发表的、与AI大模型(参数量 ≥10B&am…...
深入理解 Git 分支操作的底层原理
在软件开发的世界里,Git 已经成为了版本控制的标配工具。而 Git 分支功能,更是极大地提升了团队协作和项目开发的效率。我们在日常开发中频繁地创建、切换和合并分支,但是这些操作背后的底层原理是怎样的呢?在之前的博客探秘Git底…...
泰迪杯特等奖案例深度解析:基于多模态融合与小样本学习的工业产品表面缺陷智能检测系统
(第九届泰迪杯数据挖掘挑战赛特等奖案例全流程拆解) 一、案例背景与核心挑战 1.1 工业质检痛点分析 在3C电子、汽车零部件等高端制造领域,产品表面缺陷(划痕、凹陷、氧化等)检测是质量控制的核心环节。传统人工目检存在效率低(平均检测速度3秒/件)、漏检率高(约15%)…...
Go语言爬虫系列教程 实战项目JS逆向实现CSDN文章导出教程
爬虫实战:JS逆向实现CSDN文章导出教程 在这篇教程中,我将带领大家实现一个实用的爬虫项目:导出你在CSDN上发布的所有文章。通过分析CSDN的API请求签名机制,我们将绕过平台限制,获取自己的所有文章内容,并以…...
轨道炮--范围得遍历,map巧统计
1.思路很难想,但代码一看一下就明白了,就是模拟时间,map存起来遍历也不受10*6影响 2.每次先统计点对应的直线,再动这个点,map一遍历实时更新ma统计max,AC!!!! https://www.luogu.com.cn/problem/P8695 #i…...
python中集合的操作
Python中的集合(Set)是一种无序、可变且元素唯一的数据结构,主要用于去重和数学运算。以下是核心操作分类: 1. 集合创建 大括号创建:s {1, 2, 3}(空集合必须用set())构造函数:…...
常见激活函数——作用、意义、特点及实现
文章目录 激活函数的意义常见激活函数及其特点1. Sigmoid(Logistic 函数、S型函数)2. Tanh(双曲正切函数)3. ReLU(Rectified Linear Unit修正线性单元)4. Softmax5. Swish(Google 提出ÿ…...
FC7300 Trigger MCAL配置引导
FC7300包含4个触发器选择(TRGSELs)。详细的连接信息将在章节中描述。Trigger Select (TRGSEL)源。TRGSEL模块允许软件为外设选择触发器源。 TRGSEL提供了一种极其灵活的机制,用于将各种触发器源连接到多个引脚/外设。 在TRGSEL中,每个控制寄存器最多支持4个输出触…...
组件导航 (HMRouter)+flutter项目搭建-混合开发+分栏效果
组件导航 (Navigation)flutter项目搭建 接上一章flutter项目的环境变量配置并运行flutter 1.flutter创建项目并运行 flutter create fluter_hmrouter 进入ohos目录打开编辑器先自动签名 编译项目-生成签名包 flutter build hap --debug 运行项目 HMRouter搭建安装 1.安…...
WAS和Tomcat的对比
一、WAS和Tomcat的对比 WebSphere Application Server (WAS) 和 Apache Tomcat 是两款常用的 Java 应用服务器,但它们有许多显著的区别。在企业级应用中,它们扮演不同的角色,各自有其特点和适用场景。以下是它们在多个维度上的详细对比&…...
GPU Runtime Suspend 调试与验证:从 sysfs 到 perf 分析
选题背景:在基于 NXP i.MX8MP 平台调试 GPU 时,常常需要确认 Vivante GPU2D/ Vivante GPU2D/\uGPU3D 是否已经进入 runtime suspend ,以降为一篇完整的验证和分析步骤,适合用于实战调试与面试表达。 一、什么是 Runtime Suspend&a…...
响应式布局
布局方式 固定宽度布局:主流的宽度有960px/980px/1190px/1210px等。移动端用户需要缩放查看页面内容 流式布局:百分比设置相对宽度。在不同设备上都能完整显示。兼容性一般,可能发生错位 响应式布局:一套代码自动适配不同终端。检测设备信息,根据设备调整布局。用户体验最…...
简单入门RabbitMQ
本章将带大家来写一个简单的程序,使用 Java 创建RabbitMQ 的生产者和消费者 依赖引入 在 Maven 仓库中输入 amqp-client: 找到第一个 RabbitMQ Java Client ,点击进去找到一个合适的版本然后将依赖引入到我们项目中的 pom.xml 文件中。 …...
金属加工液展|切削液展|2025上海金属加工液展览会
2025上海金属加工液展览会 时间:2025年12月2-4日 地点:上海新国际博览中心 2025上海金属加工液展规划30000平方米展览规模,预设展位1200个,将为国内外加工液产业提供一个集“展示、合作、交易、发展”于一体的综合性平台&#…...
前端实现流式输出《后端返回Markdown格式文本,前端输出类似于打字的那种》
一、使用插件 插件名称:marked 版本:15.0.11 安装插件:npm install marked15.0.11 作用:marked 是一个用于将 Markdown 语法转换为 HTML 的 JavaScript 库 插件2名称:dompurify 版本:3.2.5 安装插件&…...
Python字符串常用方法详解
文章目录 Python字符串常用方法详解一、字符串大小写转换方法(常用)1. 基础大小写转换2. 案例:验证码检查(不区分大小写) 二、字符串查找与替换方法1. 查找相关方法2. 替换相关方法 三、字符串判断方法1. 内容判断方法 四、字符串分割与连接方…...
深度学习中的归一化:提升模型性能的关键因素
📌 友情提示: 本文内容由银河易创AI(https://ai.eaigx.com)创作平台的gpt-4-turbo模型辅助完成,旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证,建议读者通过官方文档或实践进一步确认…...
【C++】 —— 笔试刷题day_30
一、爱吃素 题目解析 这道题,简单来说就是给定两个数a和b,然后让我们判断a*b是否是素数。 算法思路 这道题还是比较简单的 首先,输入两个数a和b,这两个数的数据范围都是[1, 10^11];10的11次方,那a*b不就是…...
WebMvcConfigurer介绍-笔记
1.WebMvcConfigurer功能简介 org.springframework.web.servlet.config.annotation.WebMvcConfigurer 是 Spring MVC 提供的一个接口,用于自定义 Web 应用的配置。通过实现该接口,开发者可以灵活地添加拦截器(Interceptors)、配置…...
简单图像自适应亮度对比度调整
一、背景介绍 继续在刷对比度调整相关算法,偶然间发现了这个简单的亮度/对比度自适应调整算法,做个简单笔记记录。也许后面用得到。 二、自适应亮度调整 1、基本原理 方法来自论文:Adaptive Local Tone Mapping Based on Retinex for High Dynamic Ran…...
[SpringBoot]Spring MVC(2.0)
紧接上文,这篇我们继续讲剩下的HTTp请求 传递JSON数据 简单来说:JSON就是⼀种数据格式,有⾃⼰的格式和语法,使⽤⽂本表⽰⼀个对象或数组的信息,因此JSON本质是字符串. 主要负责在不同的语⾔中数据传递和交换 JSON的语法 1. 数据在 键值对(Key/Value) …...
GDB 高级调试技术深度解析
1. 引言 GNU调试器(GDB)是软件开发和逆向工程领域中不可或缺的工具。它为开发者提供了一个强大的环境,用于检查正在运行的程序或程序崩溃后产生的核心转储文件的内部状态。虽然许多开发者熟悉GDB的基本命令,如设置断点和单步执行,但GDB的真正威力在于其丰富的高级功能集。…...
【Kuberbetes】详谈网络(第三篇)
目录 前言 一、K8S的三种网络 1.1 Pod 内容器与容器之间的通信 1.2 同一个 Node 内 Pod 之间的通信 1.3 不同 Node 上 Pod 之间的通信 1.4 汇总 二、K8S的三种接口 三、VLAN 和 VXLAN 的区别 3.1 使用场景不同 3.2 支持的数量不同 3.3 是否记录到MAC地址表中…...
【科普】具身智能
一、具身智能的基本概念与理论框架 具身智能(Embodied Intelligence, EI)是指智能体通过物理身体与环境的实时交互,实现感知、决策和行动的能力。其核心思想是“智能源于身体与环境的互动”,而非仅仅依赖于抽象的计算或符号处理。…...
java -jar命令运行 jar包时如何运行外部依赖jar包
java -jar命令运行 jar包时如何运行外部依赖jar包 场景: 打包发不完,运行时。发现一个问题, java java.lang.NoClassDefFoundError: org/apache/commons/lang3/ArrayUtils 显示此,基本表明,没有这个依赖,如果在开发…...
Linux进程信号(一)之信号的入门
文章目录 信号入门1. 生活角度的信号2. 技术应用角度的信号3. 注意4. 信号概念5.用kill -l命令可以察看系统定义的信号列表6. 信号处理常见方式 信号入门 1. 生活角度的信号 你在网上买了很多件商品,再等待不同商品快递的到来。但即便快递没有到来,你也…...
腾讯云MCP数据智能处理:简化数据探索与分析的全流程指南
引言 在当今数据驱动的商业环境中,企业面临着海量数据处理和分析的挑战。腾讯云MCP(Managed Cloud Platform)提供的数据智能处理解决方案,为数据科学家和分析师提供了强大的工具集,能够显著简化数据探索、分析流程,并增强数据科学…...
曝光融合(Exposure Fusion)
一、背景介绍 图像融合算法里面,hdr图像进行融合,拓宽动态范围的操作非常常见。 常用的hdr融合算法通常有两类: 1、不同曝光的ldr图像先进行hdr融合,得到高bit位的hdr图像,再通过tonemaping算法得到结果如图像。 2、不…...
无人机减震模块运行与技术要点分析!
一、减震模块的运行方式 1. 多级减震结构 两级减震设计:采用第一级减震组件(如减震球、锥面减震垫)吸收高频振动,第二级减震组件(如减震环、负重物)进一步过滤低频振动。例如,通过硅胶减震球…...
CVPR2025 | 首个多光谱无人机单目标跟踪大规模数据集与统一框架, 数据可直接下载
论文介绍 题目:MUST: The First Dataset and Unified Framework for Multispectral UAV Single Object Tracking 期刊:IEEE/CVF Computer Vision and Pattern Recognition Conference 论文:https://arxiv.org/abs/2503.17699 数据&#x…...
嵌入式故障码管理系统设计实现
文章目录 前言一、故障码管理系统概述二、核心数据结构设计2.1 故障严重等级定义2.2 模块 ID 定义2.3 故障代码结构2.4 故障记录结构 三、故障管理核心功能实现3.1 初始化功能3.2 故障记录功能3.3 记录查询与清除功能3.4 系统自检功能 四、故障存储实现4.1 Flash 存储实现4.2 R…...
若依框架Consul微服务版本
1、最近使用若依前后端分离框架改造为Consul微服务版本 在这里分享出来供大家参考 # Consul微服务配置参数已经放置/bin/Consul微服务配置目录 仓库地址: gitee:https://gitee.com/zlxls/Ruoyi-Consul-Cloud.git gitcode:https://gitcode.c…...
【风控】用户特征画像体系
一、体系架构概述 1.1 核心价值定位 风控特征画像体系是通过多维度数据融合分析,构建客户风险全景视图的智能化工具。其核心价值体现在: 全周期覆盖:贯穿客户生命周期的营销、贷前、贷中、贷后四大场景立体化刻画:整合基础数据…...
【Java微服务组件】分布式协调P1-数据共享中心简单设计与实现
欢迎来到啾啾的博客🐱。 记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 欢迎评论交流,感谢您的阅读😄。 目录 引言设计一个共享数据中心选择数据模型键值对设计 数据可靠性设计持久化快照 (…...
数据库--向量化基础
本文包含内容有: 向量化、SIMD的概念及关系SSE,AVX-512八种基础的SIMD操作,并用具体例子解释,给出伪代码。一、快速了解向量化、SIMD 1.1 向量化 向量化是指将原本需要循环处理的多个数据元素,通过一条指令同时处理多个数据,从而减少循环次数,提高计算效率。 传统方式…...