ClickHouse SQL Reference (四)数据类型

Tuple(T1, T2, …)

元素元组,每个元素都有一个单独的类型。元组必须至少包含一个元素

元组用于临时列分组。在查询中使用IN表达式时,以及指定lambda函数的某些形式参数时,可以对列进行分组。有关更多信息,请参阅IN操作符和高阶函数部分。

元组可以是查询的结果。在这种情况下,对于JSON以外的文本格式,值在括号中以逗号分隔。在JSON格式中,元组作为数组输出(在方括号中)。

FixedString(N)

固定长度的N字节字符串(既不是字符也不是码点)。

要声明FixedString类型的列,请使用以下语法:

<column_name> FixedString(N)

Map(key, value)

Map(key, value) 数据类型存储 key:value 键值对。

Date

自1970-01-01以来的天数存储在两个字节中(unsigned)。允许在Unix时代开始后将值存储到编译阶段的常量(目前,这是在2149年之前,但最终完全支持的年份为2148)。

支持的取值范围:[1970-01-01,2149-06-06]

存储日期值时不带时区。

Date32

一个日期。支持与DateTime64相同的日期范围。以本机字节顺序存储为有符号32位整数,其值表示自1970-01-01以来的天数(0表示1970-01-01,负值表示1970年之前的天数)。

DateTime

允许存储瞬间的时间,可以表示为日历日期和一天的时间。

DateTime([timezone])

支持的取值范围:[1970-01-01 00:00:00,2106-02-07 06:28:15]

精度:1秒。

使用摘要

时间点被保存为Unix时间戳,与时区或夏令时无关。时区影响DateTime类型的值如何以文本格式显示,以及如何解析指定为字符串的值(’ 2020-01-01 05:00:01 ')

与时区无关的Unix时间戳存储在表中,时区用于在数据导入/导出期间将其转换为文本格式或返回文本格式,或者用于对值进行日历计算(例如:toDate, toHour函数等)。时区不存储在表的行中(或结果集中),而是存储在列元数据中

支持的时区列表可以在IANA时区数据库中找到,也可以通过SELECT * FROM system.time_zones查询。这份列表也可以在维基百科上找到。

在创建表时,可以显式地为DateTime类型列设置时区。例如:DateTime('UTC')。如果没有设置时区,ClickHouse将使用服务器设置或ClickHouse服务器启动时操作系统设置中的时区参数值。

如果在初始化数据类型时没有显式设置时区,则clickhouse-client默认应用服务器时区。要使用客户端时区,请使用--use_client_time_zone参数运行clickhouse-client

ClickHouse根据date_time_output_format设置的值输出值。默认为YYYY-MM-DD hh:mm:ss文本格式。此外,还可以使用formatDateTime函数更改输出。

在向ClickHouse插入数据时,可以根据date_time_input_format设置的值,使用不同格式的日期和时间字符串。

DateTime64

允许存储时间上的瞬间,可以表示为日历日期和一天的时间,具有定义的亚秒精度

精度大小(precision):10^-precision精度秒。取值范围:[0,9]。通常使用- 3(毫秒),6(微秒),9(纳秒)。

DateTime64(precision, [timezone])

在内部,将数据存储为自epoch start (1970-01-01 00:00:00 UTC)以来的一些’ ticks '作为Int64。刻度分辨率由precision参数决定。此外,DateTime64类型可以存储整个列相同的时区,这会影响DateTime64类型的值如何以文本格式显示,以及如何解析指定为字符串的值(’ 2020-01-01 05:00:01.000 ')。时区不存储在表的行中(或结果集中),而是存储在列元数据中。具体请参见DateTime。

支持的取值范围:[1900-01-01 00:00:00,2299-12-31 23:59:59.99999999]

注:最大值精度为8。如果使用9位(纳秒)的最大精度,则支持的最大值为UTC时间的222-04-11 23:47:16

Enum

由命名值(named values)组成的枚举类型。

命名值可以声明为'string' = integer 对或'string'名称。ClickHouse仅存储数字,但支持通过名称对值进行操作。

ClickHouse支持:

  • 8 bit Enum。最多可以包含256个[- 128,127]范围内的枚举值。
  • 16-bit Enum。它最多可以包含65536个在[-32768,32767]范围内枚举的值。

ClickHouse在插入数据时自动选择Enum类型。您还可以使用Enum8Enum16类型来确定存储的大小。

用例

下面我们创建一个列类型为Enum8('hello' = 1, 'world' = 2)的表:

CREATE TABLE t_enum
(
    x Enum('hello' = 1, 'world' = 2)
)
ENGINE = TinyLog

类似地,您可以省略数字。ClickHouse将自动分配连续的数字。默认从1开始分配号码。

CREATE TABLE t_enum
(
    x Enum('hello', 'world')
)
ENGINE = TinyLog

您还可以为名字指定合法的起始编号。

CREATE TABLE t_enum
(
    x Enum('hello' = 1, 'world')
)
ENGINE = TinyLog

CREATE TABLE t_enum
(
    `x` Enum8('hello' = -129, 'world')
)
ENGINE = TinyLog

Query id: d68d56f5-1aa9-4d5b-8b34-a9dfef6b84a6


Elapsed: 0.287 sec. 

Received exception from server (version 24.2.1):
Code: 69. DB::Exception: Received from localhost:9000. DB::Exception: Value -129 for element 'hello' exceeds range of Enum8. (ARGUMENT_OUT_OF_BOUND)

x只能存储类型定义中列出的值:'hello''world'。如果您尝试保存任何其他值,ClickHouse将引发异常。自动选择此Enum的8位大小

INSERT INTO t_enum VALUES ('hello'), ('world'), ('hello')
INSERT INTO t_enum FORMAT Values

Query id: b73e8f46-02e5-4196-832f-17f5353eecfe

Ok.
Exception on client:
Code: 691. DB::Exception: Unknown element 'a' for enum: while executing 'FUNCTION if(isNull(_dummy_0) : 3, defaultValueOfTypeName('Enum8(\'hello\' = 1, \'world\' = 2)') :: 2, _CAST(_dummy_0, 'Enum8(\'hello\' = 1, \'world\' = 2)') :: 4) -> if(isNull(_dummy_0), defaultValueOfTypeName('Enum8(\'hello\' = 1, \'world\' = 2)'), _CAST(_dummy_0, 'Enum8(\'hello\' = 1, \'world\' = 2)')) Enum8('hello' = 1, 'world' = 2) : 1': While executing ValuesBlockInputFormat: data for INSERT was parsed from query. (UNKNOWN_ELEMENT_OF_ENUM)

当从表中查询数据时,ClickHouse从Enum中输出字符串值。

SELECT * FROM t_enum

在这里插入图片描述
如果需要看到行的对应数字,则必须将Enum值强制转换为整数类型。

SELECT CAST(x, 'Int8') FROM t_enum

在这里插入图片描述
要在查询中创建Enum值,还需要使用CAST

SELECT toTypeName(CAST('a', 'Enum(\'a\' = 1, \'b\' = 2)'))

一般规则及用法

每个值被分配一个范围在-128…127用于Enum8 或在-32768…32767用于Enum16。所有的字符串和数字必须是不同的。允许使用空字符串。如果指定了这种类型(在表定义中),则数字可以按任意顺序排列。然而,顺序并不重要。

Enum中的字符串和数字值都不能为NULL。

Enum可以包含为Nullable类型。因此,如果使用查询创建一个表

CREATE TABLE t_enum_nullable
(
    x Nullable( Enum8('hello' = 1, 'world' = 2) )
)
ENGINE = TinyLog

不仅可以存储'hello''world',还可以存储NULL

INSERT INTO t_enum_nullable Values('hello'),('world'),(NULL)

在RAM中,Enum列的存储方式与对应数值的Int8Int16相同。

当以文本形式读取时,ClickHouse将值解析为字符串,并从Enum值集合中搜索相应的字符串。如果没有找到,则抛出异常。当以文本格式读取时,将读取字符串并查找相应的数值。如果没有找到,将抛出异常。当以文本形式写入时,它将值写入相应的字符串。如果列数据包含垃圾(不是来自有效集合的数字),则抛出异常。当以二进制形式读写时,它的工作方式与Int8和Int16数据类型相同。隐式默认值是数字最小的值

ORDER BYGROUP BYINDISTINCT等操作期间,Enum 的行为与相应的数字相同。例如,ORDER BY按数字排序。相等和比较操作符在enum上的工作方式与在底层数值上的工作方式相同。

枚举值不能与数字进行比较。枚举可以与常量字符串进行比较。如果比较的字符串不是Enum的有效值,则会引发异常。IN操作符支持左边的Enum和右边的一组字符串。字符串是对应Enum的值。

大多数数值和字符串操作不是为Enum值定义的,例如向Enum中添加数字或将字符串连接到Enum中。然而,Enum有一个自然的toString函数来返回它的字符串值。

枚举值也可以使用toT函数转换为数字类型,其中T是数字类型。当T对应于枚举的底层数字类型时,这种转换是零代价的。如果只更改了一组值,则可以使用ALTER零代价更改Enum类型。可以使用ALTER添加和删除Enum的成员(只有当被删除的值从未在表中使用过时,删除是安全的)。作为保护措施,更改先前定义的Enum成员的数值将引发异常。

使用ALTER,可以将Enum8更改为Enum16,反之亦然,就像将Int8更改为Int16一样。

Nullable(T)

允许存储特殊标记(NULL),表示“缺失值”,与T允许的正常值一起。例如,Nullable(Int8)类型列可以存储Int8类型的值,而没有值的行将存储NULL

T不能是任何复合数据类型Array, Map和Tuple,但复合数据类型可以包含Nullable类型值,例如Array(Nullable(Int8))

Nullable类型字段不能包含在表索引中。

NULL是任何Nullable类型的默认值,除非在ClickHouse服务器配置中另有指定。

存储特点

为了在表列中存储Nullable类型的值,ClickHouse除了使用带值的普通文件外,还使用带NULL掩码的单独文件。掩码文件(masks file)中的条目允许ClickHouse区分每个表行对应数据类型的NULL和默认值。由于有一个额外的文件,Nullable列比类似的普通列消耗更多的存储空间。

使用Nullable几乎总是会对性能产生负面影响,在设计数据库时请记住这一点。

Finding NULL

可以通过使用null子列来查找列中的NULL值,而无需读取整个列。如果对应的值为NULL,则返回1,否则返回0

例子:

CREATE TABLE nullable (`n` Nullable(UInt32)) ENGINE = MergeTree ORDER BY tuple();

INSERT INTO nullable VALUES (1) (NULL) (2) (NULL);

SELECT n.null FROM nullable;

在这里插入图片描述

Array(T)

T类型项的数组,起始数组索引为1T可以是任何数据类型,包括数组。

Creating an Array

你可以使用一个函数来创建一个数组:

array(T)

也可以使用方括号。

[]

例子:

SELECT array(1, 2) AS x, toTypeName(x)

在这里插入图片描述

SELECT [1, 2] AS x, toTypeName(x)

在这里插入图片描述

使用

在动态创建数组时,ClickHouse自动将参数类型定义为可以存储所有列出的参数的最窄的数据类型。如果存在任何Nullable或文字NULL值,则数组元素的类型也变为Nullable。

如果ClickHouse不能确定数据类型,它会生成一个异常。例如,当尝试同时创建字符串和数字的数组时(SELECT array(1, 'a'))就会发生这种情况。
在这里插入图片描述

自动数据类型检测的示例:

SELECT array(1, 2, NULL) AS x, toTypeName(x)

在这里插入图片描述

数组大小

可以通过使用size0子列来查找数组的大小,而无需读取整个列。对于多维数组,您可以使用sizeN -1,其中N是所需的维度。

例子:

CREATE TABLE t_arr (`arr` Array(Array(Array(UInt32)))) ENGINE = MergeTree ORDER BY tuple();

INSERT INTO t_arr VALUES ([[[12, 13, 0, 1],[12]]]);

SELECT arr.size0, arr.size1, arr.size2 FROM t_arr;

在这里插入图片描述

UUID

UUID (Universally Unique Identifier)是一个16字节的值,用于标识记录。有关uuid的详细信息,请参见Wikipedia。

虽然存在不同的UUID变体(请参阅此处),但ClickHouse并不验证插入的UUID是否符合特定的变体。UUIDs 在内部被视为16个随机字节的序列,在SQL级别具有8-4-4-4-12表示。

UUID值示例:

61f0c404-5cb3-11e7-907b-a6006ad3dba0

默认UUID为全零。例如,当插入一条新记录但没有指定UUID列的值时,使用它:

00000000-0000-0000-0000-000000000000

生成UUID

ClickHouse提供generateUUIDv4函数来生成随机的UUID版本4值。

使用示例

Example 1:
这个示例演示了如何创建一个包含UUID列的表,以及如何向表中插入一个值。

CREATE TABLE t_uuid (x UUID, y String) ENGINE=TinyLog

INSERT INTO t_uuid SELECT generateUUIDv4(), 'Example 1'

SELECT * FROM t_uuid

在这里插入图片描述
Example 2:
在本例中,插入记录时没有指定UUID列值,即插入默认的UUID值:

INSERT INTO t_uuid (y) VALUES ('Example 2')

SELECT * FROM t_uuid

在这里插入图片描述

限制

UUID数据类型只支持String数据类型也支持的函数(例如min、max和count)。

算术运算(例如abs)或聚合函数(例如sum和avg)不支持UUID数据类型。

Float32, Float64

如果您需要精确的计算,特别是如果您处理需要高精度的财务或业务数据,则应该考虑使用Decimalfloat可能导致不准确的结果,如下所示:
CREATE TABLE IF NOT EXISTS float_vs_decimal
(
my_float Float64,
my_decimal Decimal64(3)
)Engine=MergeTree ORDER BY tuple()


INSERT INTO float_vs_decimal SELECT round(randCanonical(), 3) AS res, res FROM system.numbers LIMIT 1000000; # Generate 1 000 000 random number with 2 decimal places and store them as a float and as a decimal


SELECT sum(my_float), sum(my_decimal) FROM float_vs_decimal;
500279.56300000014 500279.563


SELECT sumKahan(my_float), sumKahan(my_decimal) FROM float_vs_decimal;
500279.563 500279.563

别名:

  • Float32FLOAT, REAL, SINGLE.
  • Float64DOUBLE, DOUBLE PRECISION.

在创建表时,可以设置浮点数的数值参数(例如FLOAT(12)FLOAT(15,22)DOUBLE(12)DOUBLE(4,18)),但ClickHouse会忽略它们。

使用浮点数

使用浮点数进行计算可能会产生舍入误差。

SELECT 1 - 0.9

在这里插入图片描述

  • 计算结果取决于计算方法(计算机系统的处理器类型和体系结构)。
  • 浮点计算可能会产生诸如无穷大(Inf)和“非数字”(NaN)之类的数字。在处理计算结果时应考虑到这一点。
  • 从文本解析浮点数时,结果可能不是最接近的机器可表示的数字。

NaN and Inf

与标准SQL相比,ClickHouse支持以下类型的浮点数:

  • Inf – Infinity.
SELECT 0.5 / 0

在这里插入图片描述

  • -Inf — Negative infinity.
SELECT -0.5 / 0

在这里插入图片描述

  • NaN — Not a number.
SELECT 0 / 0

在这里插入图片描述

Bool

bool类型在内部存储为UInt8。可能的值是true (1), false(0)。

select true as col, toTypeName(col);

在这里插入图片描述

select true == 1 as col, toTypeName(col);

在这里插入图片描述

CREATE TABLE test_bool
(
    `A` Int64,
    `B` Bool
)
ENGINE = Memory;

INSERT INTO test_bool VALUES (1, true),(2,0);

在这里插入图片描述

JSON

这个特性是实验性的,还不能用于生产。如果您需要使用JSON文档,请考虑使用本指南。

在单列中存储JavaScript对象表示法(JSON)文档。

JSON is an alias for Object('json').

JSON数据类型是一个过时的特性。不要使用它。如果您想使用它,请设置allow_experimental_object_type = 1。

Example 1:

创建一个带有JSON列的表,并将数据插入其中:

CREATE TABLE json
(
    o JSON
)
ENGINE = Memory

INSERT INTO json VALUES ('{"a": 1, "b": { "c": 2, "d": [1, 2, 3] }}')

SELECT o.a, o.b.c, o.b.d[3] FROM json

在这里插入图片描述
Example 2:
为了能够创建有序的MergeTree族表,必须将排序键提取到其列中。例如,插入一个JSON格式的HTTP访问日志压缩文件:

CREATE TABLE logs
(
    timestamp DateTime,
    message JSON
)
ENGINE = MergeTree
ORDER BY timestamp

INSERT INTO logs
SELECT parseDateTimeBestEffort(JSONExtractString(json, 'timestamp')), json
FROM file('access.json.gz', JSONAsString)

显示JSON列

在显示JSON列时,ClickHouse默认只显示字段值(因为在内部,它被表示为一个元组)。你也可以通过设置output_format_json_named_tuples_as_objects = 1来显示字段名:

SET output_format_json_named_tuples_as_objects = 1

SELECT * FROM json FORMAT JSONEachRow

在这里插入图片描述

Map(key, value)

Map(key, value) 数据类型存储 key:value 键值对.

参数

  • key — The key part of the pair. String, Integer, LowCardinality, FixedString, UUID, Date, DateTime, Date32, Enum.
  • value — The value part of the pair. Arbitrary type, including Map and Array.

要从a Map('key', 'value')列中获取值,请使用a['key']语法。这种查找现在以线性复杂度工作。

例子

考虑表:

CREATE TABLE table_map (a Map(String, UInt64)) ENGINE=Memory;
INSERT INTO table_map VALUES ({'key1':1, 'key2':10}), ({'key1':2,'key2':20}), ({'key1':3,'key2':30});

选择所有的key2值:

SELECT a['key2'] FROM table_map;

在这里插入图片描述
如果Map()列中没有这样的``,查询将为数值返回零、空字符串或空数组。

insert into table_map values ({'key1':4, 'key2': 40})
insert into table_map values ({'key1':4, 'key3': 40})

select a['key2'] from table_map

在这里插入图片描述

将元组转换为映射类型

你可以使用CAST函数将Tuple()转换为Map():

SELECT CAST(([1, 2, 3], ['Ready', 'Steady', 'Go']), 'Map(UInt8, String)') AS map;

在这里插入图片描述

Map.keysMap.values 子列

为了优化Map列处理,在某些情况下可以使用keysvalues 子列,而不是读取整个列。

Example:

CREATE TABLE t_map (`a` Map(String, UInt64)) ENGINE = Memory;

INSERT INTO t_map VALUES (map('key1', 1, 'key2', 2, 'key3', 3));

SELECT a.keys FROM t_map;

SELECT a.values FROM t_map;

在这里插入图片描述
在这里插入图片描述

Related content

Blog: Building an Observability Solution with ClickHouse - Part 2 - Traces

LowCardinality

将其他数据类型的内部表示更改为字典编码。

LowCardinality(data_type)
  • data_type - StringFixedStringDateDateTime和数字(Decimal除外)。LowCardinality对于某些数据类型不是有效的,请参见 allow_suspicious_low_cardinality_types 设置说明。

LowCardinality是改变数据存储方法和数据处理规则的上层结构。ClickHouse对LowCardinality-columns应用字典编码。对许多应用程序来说,使用字典编码的数据可以显著提高SELECT查询的性能。

使用LowCardinality数据类型的效率取决于数据多样性如果字典包含少于10,000个不同的值,那么ClickHouse通常显示出更高的数据读取和存储效率。如果字典包含超过100,000个不同的值,那么与使用普通数据类型相比,ClickHouse的性能可能会更差。

在处理字符串时,考虑使用LowCardinality而不是EnumLowCardinality在使用中提供了更大的灵活性,并且通常显示相同或更高的效率。

例子

创建一个LowCardinality列的表:

CREATE TABLE lc_t
(
    `id` UInt16,
    `strings` LowCardinality(String)
)
ENGINE = MergeTree()
ORDER BY id

相关设置和函数

Settings:

  • low_cardinality_max_dictionary_size
  • low_cardinality_use_single_dictionary_for_part
  • low_cardinality_allow_in_native_format
  • allow_suspicious_low_cardinality_types
  • output_format_arrow_low_cardinality_as_dictionary

Functions:

  • toLowCardinality
    将输入参数转换为相同数据类型的LowCardinality版本。

要从LowCardinality数据类型转换数据,请使用CAST函数。例如,CAST(x as String)

toLowCardinality(expr)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/429377.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB知识点:while-end循环语句

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 除了for-end语…

解决win10系统cmd命令无法使用ssh问题

目录 问题说明&#xff1a;在使用ssh命令连接虚拟机地址时&#xff0c;出现了以下报错&#xff1a;​编辑 解决方法如下&#xff1a; 1.打开Windows设置&#xff0c;搜索点击添加可选功能&#xff1a; 2.点击添加功能&#xff1a; 3.安装Open SSH客户端和Open SSH服务器: …

Kube-Prometheus 监控Istio

推荐 Istio 多集群监控使用 Prometheus&#xff0c;其主要原因是基于 Prometheus 的分层联邦&#xff08;Hierarchical Federation&#xff09;。 通过 Istio 部署到每个集群中的 Prometheus 实例作为初始收集器&#xff0c;然后将数据聚合到网格层次的 Prometheus 实例上。 网…

大模型学习笔记五:RAG

文章目录 一、RAG介绍1)局限性2)通过检索增强生成二、RAG系统的基本搭建流程1)搭建流程简介2)文档的加载和切割3)检索引擎4)LLM接口封装5)prompt模板6)RAG Pipeline初探7)关键字检索局限性三、向量检索1)文本向量2)向量相似度计算3)向量数据库4)基于向量检索的RAG…

【MATLAB源码-第156期】基于matlab的OFDM系统多径信道下BPSK,4QAM和16QAM三种调制方式误码率对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM&#xff08;Orthogonal Frequency Division Multiplexing&#xff0c;正交频分复用&#xff09;是一种高效的无线信号传输技术&#xff0c;广泛应用于现代通信系统&#xff0c;如Wi-Fi、LTE和5G。OFDM通过将宽带信道划分…

【力扣hot100】刷题笔记Day21

前言 快乐周日&#xff0c;做了个美梦睡了个懒觉&#xff0c;组会前刷刷栈的题吧 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 辅助栈 class Solution:def isValid(self, s: str) -> bool:dic {):(,]:[,}:{}st []for c in s:if st and c in dic:if dic[c] …

SqlServer 默认值约束示例

创建表&#xff0c;创建时指定 money 字段默认值为0.00&#xff1b; create table t_24 ( account varchar(19) not null, id_card char(18) not null, name varchar(20) not null, money decimal(16,2) default 0.00 not null ); 录入2条记录&#xff0c;money字…

Unity之街机捕鱼

目录 &#x1f62a;炮台系统 &#x1f3b6;炮口方向跟随鼠标 &#x1f3b6;切换炮台 &#x1f62a;战斗系统 &#x1f3ae;概述 &#x1f3ae;单例模式 &#x1f3ae;开炮 &#x1f3ae;子弹脚本 &#x1f3ae;渔网脚本 &#x1f3ae;鱼属性信息的脚本 &#x1f6…

08. Nginx进阶-Nginx动静分离

简介 什么是动静分离&#xff1f; 通过中间件将动态请求和静态请求进行分离。分离资源&#xff0c;减少不必要的请求消耗&#xff0c;减少请求延时。 动静分离的好处 动静分离以后&#xff0c;即使动态服务不可用&#xff0c;静态资源仍不受影响。 动静分离示意图 动静分离…

【学习心得】网站运行时间轴(爬虫逆向)

一、网站运行时间轴 掌握网站运行时间轴&#xff0c;有助于我们对“请求参数加密”和“响应数据加密”这两种反爬手段的深入理解。 二、从网站运行的时间轴角度来理解两种反爬手段 1、加载HTML&#xff1a; 这是浏览器访问网站时的第一步&#xff0c;服务器会返回基础…

bashplotlib,一个有趣的 Python 数据可视化图形库

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站AI学习网站。 目录 前言 什么是Bashplotlib库&#xff1f; 安装Bashplotlib库 使用Bashplotlib库 Bashplotlib库的功能特性 1. 绘…

Git 指令深入浅出【2】—— 分支管理

Git 指令深入浅出【2】—— 分支管理 分支管理1. 常用分支管理指令2. 合并分支合并冲突合并模式 3. 实战演习 分支管理 1. 常用分支管理指令 # 查看本地分支 git branch# 查看远程分支 git branch -r# 查看全部分支 git branch -aHEAD 指向的才是当前的工作分支 # 查看当前分…

LabVIEW高温摩擦磨损测试系统

LabVIEW高温摩擦磨损测试系统 介绍了一个基于LabVIEW的高温摩擦磨损测试系统的软件开发项目。该系统实现高温条件下材料摩擦磨损特性的自动化测试&#xff0c;通过精确控制和数据采集&#xff0c;为材料性能研究提供重要数据支持。 项目背景 随着材料科学的发展&#xff0c;…

数据分析之Logistic回归分析(二元逻辑回归、多元有序逻辑回归、多元无序逻辑回归)

1、Logistic回归分类 在研究X对于Y的影响时&#xff1a; 如果Y为定量数据&#xff0c;那么使用多元线性回归分析&#xff1b;如果Y为定类数据&#xff0c;那么使用Logistic回归分析。 结合实际情况&#xff0c;可以将Logistic回归分析分为3类&#xff1a; 二元Logistic回归…

【办公类-21-08】三级育婴师 多个二级文件夹的docx合并成PDF

背景需求: 前期制作了单题文件夹 【办公类-21-07】新建文件夹 三级育婴师操作参考题目-CSDN博客文章浏览阅读439次&#xff0c;点赞7次&#xff0c;收藏10次。【办公类-21-07】新建文件夹 三级育婴师操作参考题目https://blog.csdn.net/reasonsummer/article/details/1363360…

SpringCloud(19)之Skywalking应用上篇

一、Skywalking概述 随着互联网架构的扩张&#xff0c;分布式系统变得日趋复杂&#xff0c;越来越多的组件开始走向分布式化&#xff0c;如微服务、消 息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用&#xff0c;这些组件共同构成了繁杂的分布式网络。 思考以下…

使用Julia语言及R语言进行格拉布斯检验

在日常的计量检测工作中经常会处理各种数据&#xff0c;在处理数据之前会提前使用格拉布斯准则查看数据中是否存在异常值&#xff0c;如果存在异常值的话应该重新进行计量检测&#xff0c;没有异常值则对数据进行下一步操作。判断异常值常用的格拉布斯方法基于数据来自正态分布…

深度学习系列61:在CPU上运行大模型

1. 快速版 1.1 llamafile https://github.com/Mozilla-Ocho/llamafile 直接下载就可以用&#xff0c;链接为&#xff1a;https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4.llamafile?downloadtrue 启动&#xff1a;./llava-v1.5-7b-q4.lla…

shell 小数比较大小

shell 小数比较大小 #!/bin/bash num15.9 result$(echo "$num1 > 5" | bc) #$num1 > 5 时返回0&#xff0c;$num1 < 5 时返回1 echo $result if [ $result -gt 0 ]; then echo ">>>>>>> $1 $2 数据异常: $hive_num" else e…

适用于 Windows 的 5 款最佳免费数据恢复软件榜单

每个计算机用户都曾经历过数据丢失的情况。很容易错误地删除重要的文件和文件夹&#xff0c;当发生这种情况时&#xff0c;可能会导致不必要的心痛和压力。值得庆幸的是&#xff0c;可以恢复 Windows PC 上丢失的数据。在本文中&#xff0c;我们将分享您可以使用的五种最佳 Win…