clickhouse-题库
1、clickhouse介绍以及架构
clickhouse一个分布式列式存储数据库,主要用于在线分析查询
2、列式存储和行式存储有什么区别?
行式存储:
1)、数据是按行存储的
2)、没有建立索引的查询消耗很大的IO
3)、建立索引和视图花费一定的物理空间和时间资源
4)、面对大量的查询,复杂的复杂的数据库必须使用大量性能才能满足
列式存储:
1)、数据按列存储,每一列单独存放
2)、只访问查询设计的列,大量降低系统的IO
3)、数据类型一致,数据特征相似就可以高效的压缩
优势:
分析场景中往往需要读大量行但是少数几个列。在行式存模式下,数据按行连续存储,所有列的数据都存储在一个block中,不参与计算的列在IO时也要全部读出,读取操作被严重放大。而列存模式下,只需要读取参与计算的列即可,极大的减低了IO
cost,加速了查询。
同一列中的数据属于同一类型,压缩效果显著。列存往往有着高达十倍甚至更高的压缩比,节省了大量的存储空间,降低了存储成本。
更高的压缩比意味着更小的 data size,从磁盘中读取相应数据耗时更短。
自由的压缩算法选择。不同列的数据具有不同的数据类型,适用的压缩算法也就不尽相同。可以针对不同列类型,选择最合适的压缩算法。
高压缩比,意味着同等大小的内存能够存放更多数据,系统cache效果更好。
3、高吞吐写入
CK采用LSM Tree结构,数据写入后定期在后台compaction,因为是LSM Tree,ck在数导入的时候全部都是顺序append;数据会在后台一定时候compaction,但是只要是查询时候,会自动的compaction
4、ck中的数据类型
整型(包括有符号和无符号):int8、int16、int32、int64
浮点型:float32、float64
Decimal:
布尔型:
字符串:string、fixedstring(fixedstring使用null字节填充末尾字符)
枚举类型:
时间类型:datetime精确到秒、datetime64精确到亚秒、date只精确到天
数组类型:
5、表引擎
表引擎是ck的特色,决定了如何存储表
日志系列引擎
1)、tinylog 以列文件的形式保存在磁盘上,不支持索引,没有并发控制,一般保存少量数据的小表
2)、log和StripeLog
memory
内存引擎,数据以未压缩的原始形式直接保存在内存当中,服务器重启数据就会消失,读写操作不会相互阻塞,不支持索引
合并树家族引擎
mergeTree 是ck中最强大的表引擎,支持数据分区、主键索引、数据副本、数据采样等特性,相当于mysql中的innodb
分区目录:是以列文件+索引文件+表定义文件组成的
数据写入与分区合并:任何一个批次的数据写入都会产生一个临时分区,不会纳入任何一个已有的分区,一段时间过后,ck会自动执行合并操作,把临时分区的数据合并到已有的分区中(也可以手动使用optimize执行)
Primary key:主键并不用于去重,而是用于索引,加快查询速度,默认的索引粒度为8192行,为数据生成以及索引并保存到primary.idx文件内,索引数据按照primary
key排序;稀疏索引只需要少量的索引标记就能够记录大量的数据区间位置信息。数据量越大越明显
跳数索引/二级索引:在一级索引的基础之上再加一层索引,它们使ClickHouse能够跳过保证没有匹配值的数据块。——INDEX a
total_amount TYPE minmax GRANULARITY 5
(如果是把一级索引分成几块,那么二级索引的粒度就是每次可以跳几块)GRANULARITY。每个索引块由颗粒(granule)组成。例如,如果主表索引粒度为8192行,GRANULARITY为4,则每个索引“块”将为32768行。
repacingMergeTree 存储特征完全继承MergeTree,会删除排序键值相同的重复项。
ReplacingMergeTree和MergeTree的不同之处在于它会删除排序键值相同的重复项。
数据的去重只能在compaction中出现,合并会在未知的时间在后台进行或者使用optiumize进行(大会引发对数据的大量读写)
使用ORBER BY排序键作为判断重复数据的唯一键。
只有在合并分区的时候才会触发删除重复数据的逻辑。
以数据分区为单位删除重复数据。当分区合并时,同一分区内的重复数据会被删除;不同分区之间的重复数据不会被删除。
在进行数据去重时,因为分区内的数据已经基于ORBER BY进行了排序,所以能够找到那些相邻的重复数据。
在数据合并的时候,ReplacingMergeTree 从所有具有相同排序键的行中选择一行留下:如果ver列未指定,保留最后一条。如果ver列已指定,保留ver值最大的版本。
SummingMergeTree
不查询明细。只关心进行汇总聚合结果的场景,提供一种预聚合的功能 以order
by的列合并为准,作为维度列、不在一个分区内的数据不会被聚合,只有在用一批次插入的数据才会进行聚合
-ClickHouse会把所有具有相同主键的行合并为一行,该行包含了被合并的行中具有数值数据类型的列的汇总值。
AggregatingMergeTree
可以理解为SummingMergeTree的升级版,能够在合并分区时候,按照预先定义的条件聚合数据,同时根据预先定义的聚合函数计算数据并得到二进制的格式存入表内
AggregateFunction类型字段使用二进制存储,在写入数据时,需要调用state函数;在读数据时,需要调用merge函数,*表示定义时使用的聚合函数
AggregateMergeTree通常作为物化视图的引擎,与普通的MergeTree搭配使用 CollapsingMergeTree
以增代删的思路,支持行级数据修改和删除的表引擎,通过一个sign标记位字段,记录数据行的状态,如果sign标记为1,表示这是一行有效的数据,如果sign为-1,表示改行数据需要被删除,当进行分区合并时候,同一数据分区内,sign为1和-1的一组数据会被抵消
VersionedCollapsingMergeTree
VersionedCollapsingMergeTree数据折叠也是发生在分区合并时,只会对同分区的数据进折叠
6、Update和delete
ck提供了delete和update能力,被称为mutation,但是一种很重的操作,不支持事务,原因是每次修改或者和删除都会放弃目标数据的原有分区,重建新的分区,所以尽量做批量的变更,不进行小数据的操作
原理:分两步执行,同步执行的部分其实只是进行新增数据新增分区和并把旧分区打上逻辑上失效的标记,直到触发分区合并的时候,才会删除数据释放磁盘空间
7、分片集群
副本可以提高数据的可用性,但每台服务器实际上必须是安全量数据,对数据的横向扩容没有解决
分片是把一份完整的数据进行切分,不同的分片分布到不同的节点上,在通过distributed表引擎把数据拼接起来,该引擎本身不存数据
8、建表优化
为什么ck中能用数值或者日期时间类型就不用字符串:
ck底层将datetime存储为时间戳long类型。但不建议存储long类型,datetime不需要经过含函数转换处理,执行效率高、可读性好
空值存储
nullable类型会拖慢性能,因为存储nullable时候需要创建一额外的文件来存储null的标记,nullable列无法被索引,一般在业务中采用一个没有实际意义的值代替(-1,0,1)
表参数
如果表中不是必须要保留的全量数据,一般指定TTL,避免手动删除过期数据的麻烦
写入和删除优化
不要执行单条或者小批量的插入删除操作,会产生小分区文件(因为每一次插入都会重新分区),给merge任务带来巨大压力,不要一次写入过多分区,或者数据写入太快——会导致merge速度跟不上而报错
谓词下推
所谓的谓词,就是对数据的筛选行为,下推是尽可能将这些筛选条件优先执行(查询的最低端)
聚合计算外推
聚合函数内的计算会外推
聚合函数消除
9、分片集群
副本可以提高数据的可用性,但每台服务器实际上必须是安全量数据,对数据的横向扩容没有解决
分片是把一份完整的数据进行切分,不同的分片分布到不同的节点上,在通过distributed表引擎把数据拼接起来,该引擎本身不存数据
10、建表优化
为什么ck中能用数值或者日期时间类型就不用字符串:
ck底层将datetime存储为时间戳long类型。但不建议存储long类型,datetime不需要经过含函数转换处理,执行效率高、可读性好
空值存储
nullable类型会拖慢性能,因为存储nullable时候需要创建一额外的文件来存储null的标记,nullable列无法被索引,一般在业务中采用一个没有实际意义的值代替(-1,0,1)
表参数
如果表中不是必须要保留的全量数据,一般指定TTL,避免手动删除过期数据的麻烦
写入和删除优化
不要执行单条或者小批量的插入删除操作,会产生小分区文件(因为每一次插入都会重新分区),给merge任务带来巨大压力,不要一次写入过多分区,或者数据写入太快——会导致merge速度跟不上而报错
谓词下推
所谓的谓词,就是对数据的筛选行为,下推是尽可能将这些筛选条件优先执行(查询的最低端)
聚合计算外推
聚合函数内的计算会外推
聚合函数消除
11、查询优化
1)、prewhere代替where
两者的作用相同,不同之处在于perwhere只支持MergeTree系列引擎的表,会先判断数据过滤,等待数据过滤之后再读取select系列字段补全,prewhere最多可提高十倍性能,也会自动优化
2)、数据采样
采样修饰符只有在 MergeTree engine 表中才有效,且在创建表时需要指定采样策略。
3)、列裁剪与分区裁剪
数据量太大时应避免使用 select * 操作,查询的性能会与查询的字段大小和数量成线性 表换,字段越少,消耗的 io 资源越少,性能就会越高。
4)、orderby 结合 where、limit
5)、uniqCombined 替代 distinct
性能可提升 10 倍以上,uniqCombined 底层采用类似 HyperLogLog 算法实现,能接收 2% 左右的数据误差,可直接使用这种去重方式提升查询性能。Count(distinct )会使用 uniqExact精确去重。
12、物化视图
视图只是保存了计算逻辑,不保存数据
视图和物化视图的区别:ck的物化视图是一种查询结果的持久化,用户查起来和普通的表没区别,也像是一张时时刻刻计算的表,
缺点:本质是一个流式数据的使用场景,如果一张表加了很多的物化视图,在写入的时候,就会消耗很多资源
物化视图中的数据是在创建物化视图之后,在往对应表中插入数据时候,对应数据才会写入到物化视图中;
物化视图的名字不能和表明重复
13、ck和mysql主从同步
1)、确保mysql和开启binlog和GTID模式(binglog:记录所有对数据库执行更改的sql语句,不包括查,二进制文件是mysql数据复制恢复;GTID是一种复制方式,通过gtid保证了每个在主库上提交的事务在集群中有一个唯一的id,GTID (Global Transaction ID)是全局事务ID,由主库上生成的与事务绑定的唯一标识,这个标识不仅在主库上是唯一的,在MySQL集群内也是唯一的。
2)、确保ck物化引擎打开
14、ck的数据分布式存储机制如何设计的
1)、分片和复制:ck通过分片将数据水平划分为多个部分,每个部分存储在不同的节点上,每个分片可以有一个或者多个副本,副本之间自动同步数据
2)、分布式表引擎:ck使用分布式表引擎跨节点数据查询和写入
3)、数据分区:每个分片内,数据可以进一步根据分区键被划分为多个分区
4)、负载均衡:在执行查询时候,ck能够自动在所有可用的副本之间进行负载均衡
5)、一致性容错
15、补充:CK为什么快
1)存储引擎视角
ck利用存储引擎的特殊涉及充分减少磁盘IO对查询速度的影响,用户提交的一条SQL,大部分时间消耗在磁盘的IO上
ck对写入数据进行预排序
ck写入数据文件的数据是有序的,将数据在写入磁盘前进行排序,以保证数据在磁盘上有序,预排序在实现范围查找时候,可以将大量的随机读转换为顺序读,提高IO效率;在查找时,预排序能做到和未排序的数据相同的性能
列式存储 在列式数据库中,同一列的所有数据都在同一个文件中,因此在硬盘上是连续的,适合
OLAP 压缩
ck另一个降低IO的手段是压缩,可以减少读取和写入的数据量,减少IO时间;事务数据库大部分情况下是针对行的操作,如果对每一行都进行压缩和解压缩,带来的时间消耗是远大于磁盘IO时间,这也是为什么所有的事务数据库都不使用压缩技术的原因;ck的最小处理单元是块,块一般由8192行数据组成,一次压缩针对8192行数据,降低cpu的压缩和解压缩时间,并且列式数据有更好的压缩比
向量化引擎
ck采用了向量化执行引擎,能够将多个操作合并成单个向量操作,减少了函数调用和内存分配的次数,从而提高了执行效率。此外向量化执行还使得数据在内存中的布局更加紧凑
多线程与分布式处理 实现了多线程处理,提高整体的处理速度
2)计算引擎视角
ck计算快是来自内部向量化引擎的加持,ck计算慢是因为缺乏代价优化器 大量使用向量化运算
为了实现向量化执行,需要利用CPU的SIMD指令(single instruction Multiple data,单条指令操作多条数据),它是通过数据i你高兴以提高性能的一种实现方式,它的原理是在CPU寄存器方面实现数据的并行计算,计算机存储层次如下所示:
其中,从左往右距离CPU越近,访问速度就越快,显然能够容纳的数据大小也就越小,CPU寄存器也是可以存储数据的,CPU从寄存器中获取数据的速度是最快的,是内存的300倍,是磁盘的3000万倍
ck中的很多内置函数。使用时候ck会自动进行向量化优化, 查询中不使用join,或尽可能减少join操作
ck中没有代价优化器,说明在进行join的时候会出现内存不足的情况,使用ck时候,应当避免join操作,但join操作在ODS建模时候大量存在,数据量大的时候,建模工作应当下推到spark中进行
ck快的本质 ck快的本质是利用了cpu进行加速
总结:CK快的原因
ck是列式存储、索引机制、数据压缩、ck使用了向量化引擎(寄存器)、ck使用cpu加速、ck会在内存中进行group by,并使用hash
table装载数据
补充:ck的几点不足
1、不支持事务,不能把它用于OLTP事务操作的场景
2、不擅长根据主键按行粒度进行查询,所以不应该把ck当作键值对数据库使用
3、不擅长删除和修改数据
补充:ck相关补充
1、CK提供了标准的SQL查询接口,CK大小是大小写敏感的,关键字非大小敏感
2、ck中向量化是通过数据级别的并行方式提升了性能,那么多线程处理就是通过线程级并行的方式实现了性能提升
3、在分布式领域,移动计算优于移动数据,在服务器之间网络传输的成本是很高的,相比移动数据,更好的是预先将数据分布到各台服务器,将数据的计算查询直接下推到数据所在的服务器;
4、多主架构,在传统的hdfs、spark中,都采用了主从架构,一个leader节点统筹全局;ck采用多主架构,集群中的每个节点角色对等,客户端访问任意一个节点都能得到相同的效果,集群中所有节点功能相同,避免单点故障
5、数据分片,分区时表的分区,根据关键字将最终结果写入不同的文件中;而分复用了数据库的分区,相当于在原有的分区下,作为第二层分区,是在不同节点上的体现
6、ClickHouse 最终选择了这些算法:对于常量,使用 Volnitsky 算法;对于非常量,使用 CPU 的向量化执行 SIMD,暴力优化;正则匹配使用 re2 和 hyperscan 算法。
相关文章:
clickhouse-题库
1、clickhouse介绍以及架构 clickhouse一个分布式列式存储数据库,主要用于在线分析查询 2、列式存储和行式存储有什么区别? 行式存储: 1)、数据是按行存储的 2)、没有建立索引的查询消耗很大的IO 3)、建…...
kafka常用命令
安装kafka注意事项 修改 、vim kafka/config/server.properties 三个地方①brokerId ②logs地址③指定节点 一、创建主题 (必须指定分区,指定副本) #在kafka bin目录下执行以下命令 #①连接hadoop01 创建主题为TEST 分区1 副本3个 bin/ka…...
在 Django 中使用 SMTP 发送邮件是一个常见的需求
在 Django 中使用 SMTP 发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等。下面是一个简单的示例,展示了如何在 Django 中配置 SMTP 发送邮件,并创建一个包含表单、路由和视图的界面来发送邮件。 1. 配置 Django 项目…...
JS中的原型与原型链
1. 基本概念 原型(Prototype):每个对象都有一个内部属性 [[Prototype]],通常通过 __proto__ 访问(非标准,但广泛支持)。 原型链(Prototype Chain):对象通过原…...
STM32F407 | Embedded IDE01 - vscode搭建Embedded IDE开发环境(支持JLINK、STLINK、DAPLINK)
导言 Embedded IDE官网:https://em-ide.com/docs/intro 我猜肯定有部分人使用SI Keil开发STM32项目,也有vscode Keil开发STM32程序。SI或vscode编写代码,然后切换Keil编译、下载、调试程序。有一段时间,我也是这么干的。但是,程…...
放弃机器学习框架,如何用Python做物体检测?
每当我们听说“物体检测”时,就会想到机器学习和各种不同的框架。但实际上,我们可以在不使用机器学习或任何其他框架的情况下进行物体检测。在本文中,我将向你展示如何仅使用Python进行操作。 首先,我们定义一个模板图像…...
基于langchain的Agent(实现实时查询天气)
心血来潮,玩一下Agent,实现了多轮对话功能 import requests, jsonfrom langchain.agents import load_tools from langchain.agents import initialize_agent from langchain_community.llms.tongyi import Tongyi from langchain.memory import Conver…...
OB删除1.5亿数据耗费2小时
目录 回顾:mysql是怎么删除数据的? 删除方案 代码实现 执行结果 结论 本篇是实际操作 批量处理数据以及线程池线程数设置 记录学习 背景:有一张用户标签表,存储数据量达4个亿,使用OceanBase存储,由于…...
深度学习之目标检测——RCNN
Selective Search 背景:事先不知道需要检测哪个类别,且候选目标存在层级关系与尺度关系 常规解决方法:穷举法,在原始图片上进行不同尺度不同大小的滑窗,获取每个可能的位置 弊端:计算量大,且尺度不能兼顾 Selective …...
Vue.js前端框架教程7:Vue计算属性和moment.js
文章目录 计算属性(Computed Properties)基本用法缓存机制计算属性 vs 方法使用场景计算属性的 setter 和 getter结论Moment.js 进行时间处理1. 安装 Moment.js2. 在 Vue 组件中引入 Moment.js3. 在全局使用 Moment.js4. 使用 Vue 插件的方式引入 Moment.js5. 常用日期格式化…...
了解RPC
本文来自智谱清言 --------- RPC(Remote Procedure Call,远程过程调用)是一种允许程序调用位于远程计算机上的子程序或服务的技术。这种技术使得构建分布式计算变得更加容易,因为它提供了强大的远程调用能力,同时保持…...
【Go】Go数据类型详解—指针
1. 前言 在我看来,一门编程语言语法的核心就在于数据类型。而各类编程语言的基本数据类型大致相同:int整型、float浮点型、string字符串类型、bool布尔类型,但是在一些进阶数据类型上就有所不同了。本文将会介绍Go语言当中核心的数据类型——…...
C++ 中的智能指针与内存管理:从基础到进阶
在 C 中,内存管理是一个至关重要的课题,尤其是当程序复杂度逐渐增加时。传统的手动内存管理方式(使用 new 和 delete)容易引发内存泄漏、悬挂指针等问题。为了简化内存管理,C11 引入了智能指针(std::unique…...
二、使用langchain搭建RAG:金融问答机器人--数据清洗和切片
选择金融领域的专业文档作为源文件 这里选择 《博金大模型挑战赛-金融千问14b数据集》,这个数据集包含若干公司的年报,我们将利用这个年报搭建金融问答机器人。 具体下载地址 这里 git clone https://www.modelscope.cn/datasets/BJQW14B/bs_challenge_…...
R 语言 | 绘图的文字格式(绘制上标、下标、斜体、文字标注等)
1. 上下标 # 注意y轴标签文字 library(ggplot2) ggplot(mtcars, aes(mpg, cyl))geom_point()ylab(label bquote(O[3]~(ug / m^3)))2. 希腊字母,如alpha ggplot(mtcars, aes(mpg, cyl))geom_point()ylab(label bquote(O[3]~(ug / m^3)))ggtitle(expression(alpha))…...
版本更新导致前端网站资源加载失败:Failed to fetch dynamically imported module
前端网站在维护过程中经常有版本更新和重新部署,而这会导致一些问题,其中某些问题会导致更新时,正在网站中的用户无法正常使用。 异常 Failed to fetch dynamically imported module 的诱发原因之一就是版本更新:在用户访问网站的…...
CentOS 7 安装、测试和部署FastDFS
目录 FastDFS环境搭建 安装 libfastcommon 库 安装FastDFS 查看编译后的文件 FastDFS配置 FastDFS启动 启动tracker服务 启动storage服务 查看storage是否已经注册到了tracker下 查看存储文件的目录 FastDFS重启 FastDFS关闭 使用fdfs_test进行测试 修改client.co…...
elasticache备份
Elasticsearch 本地快照操作流程 配置快照存储路径 在 elasticsearch.yml 文件中配置以下字段以指定数据、日志和快照存储路径:path:data: /data/data # 数据存储路径logs: /data/log # 日志存储路径repo: /data/snapshot # 快照存储路径确保路径 /dat…...
wordpress调用指定分类ID下 相同标签的内容
要在WordPress中调用分类ID为1、3、7的分类下,具有相同标签的前10个内容,可以使用自定义的WordPress查询(WP_Query)。以下是实现此功能的步骤和示例代码: 步骤: 确定共同标签: 首先,你需要确定分类1、3、…...
Spring Security 6 系列之五 - 授权管理
之所以想写这一系列,是因为之前工作过程中使用Spring Security,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级为6.3.0,关键是其风…...
贪心算法求解跳跃游戏
跳跃游戏1: 代码随想录链接:代码随想录 思路: 求解是否能够跳到数组的最后一个位置,关键在于跳跃的覆盖范围 因此设置一个变量表示每次移动时能够覆盖的范围,该变量的初始值为0 因为坐标的位置受到覆盖范围的限制,因此只能遍历覆盖范围内…...
4大应用场景揭秘:AI视频监控在养老院中的智能化管理与安全保障
随着人口老龄化的加剧,养老院的管理面临着越来越多的挑战。传统的人工巡查方式不仅难以做到全天候监控,而且存在响应迟缓、效率低下等问题。为了解决这些问题,AI视频监控系统,利用人工智能技术提供了一种高效、智能化的解决方案。…...
构建简洁之美:我的第一个前端页面
实现界面效果 1. HTML示例代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><link rel"stylesheet…...
重拾设计模式--备忘录模式
文章目录 备忘录模式(Memento Pattern)概述定义: 作用:实现状态的保存与恢复支持撤销 / 恢复操作 备忘录模式UML图备忘录模式的结构原发器(Originator):备忘录(Memento)&…...
联通光猫怎么自己改桥接模式?
环境: 联通光猫 ZXHN F677V9 硬件版本号 V9.0 软件版本号 V9.0.0P1T3 问题描述: 联通光猫怎么自己改桥接模式 家里用的是ZXHN F677V9 光猫,最近又搞了个软路由,想改桥接模式 解决方案: 1.拿到最新超级密码&…...
UITableView实现通讯录效果
// // TableViewIndexViewController.m // study2024 // // Created by figo zhu on 2024/12/22. //#import "TableViewIndexViewController.h" //实现协议UITableViewDelegate,UITableViewDataSource interface TableViewIndexViewController ()<UITableView…...
Pytorch | 利用NI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
Pytorch | 利用NI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集NI-FGSM介绍背景算法流程 NI-FGSM代码实现NI-FGSM算法实现攻击效果 代码汇总nifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CIFAR10进行…...
【Matlab】绘制混淆矩阵示意图+colormap调整方法
主代码 %https://blog.csdn.net/weixin_42943114/article/details/81811556 %https://blog.csdn.net/Mark711/article/details/141144280 clc clear close all warning off %% 原始数据 % 假设groundTruth和predictions是已经定义好的向量 TrueLabels [1 2 1 3 2 3 1 3 2 1 4…...
计算机视觉目标检测——DETR(End-to-End Object Detection with Transformers)
计算机视觉目标检测——DETR(End-to-End Object Detection with Transformers) 文章目录 计算机视觉目标检测——DETR(End-to-End Object Detection with Transformers)摘要Abstract一、DETR算法1. 摘要(Abstract)2. 引言(Introduction&#…...
资源型数字化平台该如何顺利运营?
一、引言 随着信息技术的迅猛发展,资源型数字化平台在各领域的重要性日益凸显。此类平台整合各类资源,以数字化手段提升资源利用效率与价值,但确保其顺利运营面临诸多挑战。 二、资源型数字化平台特点 资源型数字化平台具有资源整合性&…...
写SQL太麻烦?免费搭建 Text2SQL 应用,智能写 SQL | OceanBase AI 实践
自OceanBase 4.3.3版本推出以来,向量检索的能力受到了很多客户的关注,也纷纷表达希望OB能拓展更多 多模数据库大模型 的AI应用实践。 在上篇文章 👉 OceanBase LLM,免费构建你的专属 AI 助手 ,我们介绍了如何去搭建一…...
Linux系统编程——系统内核中的信号
目录 一、前言 二、系统内核中的信号 三、sigset_t 四、信号集操作 1、sigpending(); 2、sigemptyset(); 3、sigfillset(sigset_t *set); 4、int sigaddset ()和sigdelset() 编辑 5、sigismember() 6、sigprocmask() 五、信号集操作代码演示 六、深入理解进程的信…...
Mapbox-GL 中 `token` 的使用
Mapbox-GL 是一个开源的 JavaScript 库,允许开发者在网页上渲染交互式地图。token 在 Mapbox 中主要是指 access token,它用于身份验证和授权,确保应用程序能够访问 Mapbox 的地图服务。 下面详细解析 Mapbox GL 中 token 的使用,…...
PostgreSQL标识符长度限制不能超过63字节
文章目录 问题:标识符太长会被截断分析相关源码可以尝试以下案例 问题:标识符太长会被截断 在创建表时,发现表名太长会自动被截断,导致查询表时报错了。 分析 参考:https://www.postgresql.org/docs/current/limits…...
【Token】校验、会话技术、登录请求、拦截器【期末实训】实战项目学生和班级管理系统\Day15-后端Web实战(登录认证)\讲义
登录认证 在前面的课程中,我们已经实现了部门管理、员工管理的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能学习辅助系统的后台。 这是不安全的,所以我们今天的主题就是登录认证。 最终我们要实现…...
电机相关内容
文章目录 电枢电阻电动机电动势系数负载转矩直流电动机的角速度和速度关系 电枢电阻 电枢电阻的计算公式如下: 基于欧姆定律的公式: R a V a − V b I a R_a \frac{V_a - V_b}{I_a} RaIaVa−Vb 其中, ( V a ) (V_a) (Va…...
电商环境下的财务ERP系统架构
先介绍一下自己的工作经历,2002年开始进入ERP实施行业,专注于O记EBS系统,正好赶上中国经济和信息化高度发展的阶段,先后实施过很多大国企和民企的大型ERP项目,在实施过程中逐渐对ERP系统的架构、模块设计有更深入的认识…...
Gitlab 数据备份全攻略:命令、方法与注意事项
文章目录 1、备份命令2、备份目录名称说明3、手工备份配置文件3.1 备份配置文件3.2 备份ssh文件 4、备份注意事项4.1 停止puma和sicdekiq组件4.2 copy策略需要更多磁盘空间 5、数据备份方法5.1 docker命令备份5.2 kubectl命令备份5.3 参数说明5.4、选择性备份5.5、非tar备份5.6…...
基于单片机的视力保护及身姿矫正器设计(论文+源码)
1. 系统设计 在本次设计中,其系统整个框图如图2-1所示。其主要的核心控制模块由超声波模块,光敏电阻,按键模块,复位电路,红外模块,LCD显示等组成。其包括自动模式,手动模式。自动模式ÿ…...
设计模式之【观察者模式】
观察者模式: 应用于发布-订阅消息模型中,订阅者订阅一个主题后,当有新消息到达时,所有订阅者都会收到通知。 主要关注的是对象之间的通信。是一种对象之间的一对多关系,多个对象依赖于一个对象,当被依赖的…...
杂七杂八的网络安全知识
一、信息安全概述 1.信息与信息安全 信息与信息技术 信息奠基人:香农:信息是用来消除随机不确定性的东西 信息的定义:信息是有意义的数据,是一种要适当保护的资产。数据经过加工处理之后,就成为信息。而信息需要经…...
【落羽的落羽 C语言篇】数据存储简介
文章目录 一、整型提升1. 概念2. 规则 二、大小端字节序1. 概念2. 练习练习1练习2 三、浮点数在内存中的存储1. 规则2. 练习 一、整型提升 1. 概念 C语言中,整型算术运算至少是以“缺省整型类型”(int)的精度来进行的。为了达到这个精度&am…...
linux----文件访问(c语言)
linux文件访问相关函数 打开文件函数 - open 函数原型:int open(const char *pathname, int flags, mode_t mode);参数说明: pathname:这是要打开的文件的路径名,可以是绝对路径或者相对路径。例如,"/home/user/…...
垂起固定翼无人机大面积森林草原巡检技术详解
垂起固定翼无人机大面积森林草原巡检技术是一种高效、精准的监测手段,以下是对该技术的详细解析: 一、垂起固定翼无人机技术特点 垂起固定翼无人机结合了多旋翼和固定翼无人机的优点,具备垂直起降、飞行距离长、速度快、高度高等特点。这种无…...
汽车电子零部件(15):AVM全景影像系统
概述: 使用ADAS全景监控(AVM)精确停车和操纵。这项先进技术采用多个摄像头,提供车辆周围环境的鸟瞰图。 360度全景监控系统: 360 AVM系统可以帮助驾驶员360度查看车辆周围的情况,避免发生碰撞。360 AVM系统由一个电子控制单元(ECU)和四个摄像头组成。ECU将处理四个摄…...
G口带宽服务器与1G独享带宽服务器:深度剖析其差异
在数据洪流涌动的数字化时代,服务器作为数据处理的核心,其性能表现直接关系到业务的流畅度和用户体验的优劣。随着技术的飞速发展,G口带宽服务器与1G独享带宽服务器已成为众多企业的优选方案。然而,这两者之间究竟有何细微差别&am…...
鸿蒙项目云捐助第十一讲鸿蒙App应用的捐助成功自定义对话框组件实现
在生活中,用户做了一个好事后,很多场合都会收到一份感谢。在捐助的行业也是一样的,用户捐出了一片爱心,就会收获一份温情。这里的温情是通过自定义对话框实现的。 一、通过自定义对话框组件实现捐款成功的信息页 这里用户捐款成…...
Elasticsearch-分词器详解
什么是分词器 1、分词器介绍 对文本进行分析处理的一种手段,基本处理逻辑为按照预先制定的分词规则,把原始文档分割成若干更小粒度的词项,粒度大小取决于分词器规则。 常用的中文分词器有ik按照切词的粒度粗细又分为:ik_max_word和ik_smart&…...
Android笔试面试题AI答之Android基础(3)
文章目录 1.谈一谈 Android 的安全机制一、系统架构层面的安全设计二、核心安全机制三、其他安全机制与措施 2.Android 的四大组件是哪四大?3.Android 的四大组件都需要在清单文件中注册吗?4.介绍几个常用的Linux命令一、文件和目录管理二、用户和权限管…...
酷黑金色配色 影片素材不过时 色彩丰富 电影主题html
本套大作业共计8个HTML页面,网页中包含:DIVCSS、下拉菜单栏、banner轮播图、图片放大效果、鼠标滑过效果、视频、小图标及按钮设计、登录注册页等,同时设计了logo;本作品花费大量时间去整理素材,大部分素材均使用Photo…...