ClickHouse(六):Clickhouse数据类型-1

news2025/2/22 2:43:54

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容!

🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,Kerberos安全认证,大数据OLAP体系技术栈-CSDN博客

📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情!

👍点赞:赞同优秀创作,你的点赞是对我创作最大的认可!

⭐️ 收藏:收藏原创博文,让我们一起打造IT界的荣耀与辉煌!

✏️评论:留下心声墨迹,你的评论将是我努力改进的方向!


目录

1. Int

​​​​​​​2. Float

​​​​​​​3. Decimal

4. String

5. FixedString

​​​​​​​​​​​​​​6. UUID

​​​​​​​​​​​​​​7. Date

​​​​​​​8. DateTime

​​​​​​​​​​​​​​9. DateTime64

​​​​​​​10. 布尔类型


ClickHouse提供了许多数据类型,它们可以划分为基础类型、复合类型和特殊类型。我们可以在system.data_type_families表中检查数据类型名称以及是否区分大小写。这个表中存储了ClickHouse支持的所有数据类型。

 

select * from system.data_type_families limit 10;

SELECT *

FROM system.data_type_families

LIMIT 10



┌─name────────────┬─case_insensitive─┬─alias_to─┐

│ Polygon          │                    0 │            │

│ Ring              │                    0 │            │

│ MultiPolygon    │                    0 │            │

│ IPv6              │                    0 │            │

│ IntervalSecond  │                    0 │            │

│ IPv4              │                    0 │            │

│ UInt32            │                   0 │             │

│ IntervalYear     │                   0 │             │

│ IntervalQuarter │                   0 │             │

│ IntervalMonth    │                   0 │             │

└─────────────────┴──────────────────┴──────────┘



10 rows in set. Elapsed: 0.004 sec.

下面介绍下常用的数据类型,ClickHouse与Mysql、Hive中常用数据类型的对比图如下:

MySQL

Hive

ClickHouse(区分大小写)

byte

TINYINT

Int8

short

SMALLINT

Int16

int

INT

Int32

long

BIGINT

Int64

varchar

STRING

String

timestamp

TIMESTAMP

DateTime

float

FLOAT

Float32

double

DOUBLE

Float64

boolean

BOOLEAN

1. Int

ClickHouse中整形分为Int8、Int16、Int32、Int64来表示整数不同的取值范围,其末尾数字正好代表占用字节的大小(8位=1字节),整形又包含有符号整形和无符号整形,他们写法上的区别为无符号整形前面加“U”表示。

  • 有符号整型范围

类型

字节

范围

Int8

1

[-128:127]

Int16

2

[-32768:32767]

Int32

4

[-2147483648:2147483647]

Int64

8

[-9223372036854775808:9223372036854775807]

  • 无符号整形范围:

类型

字节

范围

UInt8

1

[0:255]

UInt16

2

[0:65535]

UInt32

4

[0:4294967295]

UInt64

8

[0:18446744073709551615]

​​​​​​​​​​​​​​2. Float

我们建议使用整数方式来存储数据,因为浮点类型数据计算可能导致四舍五入的误差。浮点类型包含单精度浮点数和双精度浮点数。

  • 单精度浮点数

类型

字节

有效精度位数

Float32

4

7

Float32从小数点后第8位起会发生数据溢出。

  • 双精度浮点数

类型

字节

有效精度位数

Float64

8

16

Float64从小数点后第17位起会发生数据溢出。

  • 示例
    • toFloat32(...) 用来将字符串转换成Float32类型的函数
    • toFloat64(...) 用来将字符串转换成Float64类型的函数
#浮点数有可能导致数据误差

node1 :) select 1-0.9



SELECT 1 - 0.9

┌───────minus(1, 0.9)─┐

│ 0.09999999999999998 │

└─────────────────────┘

1 rows in set. Elapsed: 0.021 sec.



#Float32类型,从第8位开始产生溢出,会四舍五入。

node1 :) select toFloat32(0.123456789);



SELECT toFloat32(0.123456789)



┌─toFloat32(0.123456789)─┐

│             0.12345679 │

└────────────────────────┘



1 rows in set. Elapsed: 0.004 sec. 



# Float64类型,从第17为开始产生数据溢出,会四舍五入

node1 :) select toFloat64(0.12345678901234567890);



SELECT toFloat64(0.12345678901234568)



┌─toFloat64(0.12345678901234568)─┐

│            0.12345678901234568 │

└────────────────────────────────┘



1 rows in set. Elapsed: 0.006 sec.

​​​​​​​3. Decimal

有符号的定点数,可在加、减和乘法运算过程中保持精度。ClickHouse提供了Decimal32、Decimal64、Decimal128、Decimal256几种精度的定点数,支持几种写法:

  • Decimal(P,S)
  • Decimal32(S),数据范围:(-1*10^(9-S),1*10^(9-S))
  • Decimal64(S),数据范围:(-1*10^(18-S),1*10^(18-S))
  • Decimal128(S),数据范围:(-1*10^(38-S),1*10^(38-S))
  • Decimal256(S),数据范围:(-1*10^(76-S),1*10^(76-S))

其中,P代表精度,决定总位数(整数部分+小数部分),取值范围是1~76。S代表规模,决定小数位数,取值范围是0~P。

根据P值的范围可以有如下对等写法,这里以小数点后2位举例:

P取值

原生写法示例

等同于

[1:9]

Decimal(9,2)

Decimal32(2)

[10:18]

Decimal(18,2)

Decimal64(2)

[19:38]

Decimal(38,2)

Decimal128(2)

[39:76]

Decimal(76,2)

Decimal256(2)

另外,Decimal数据在进行四则运算时,精度(总位数)和规模(小数点位数)会发生变化,具体规则如下:

  • 精度(总位数)对应规则:
  1. Decimal64(S1) 运算符 Decimal32(S2) -> Decimal64(S)
  2. Decimal128(S1) 运算符 Decimal32(S2) -> Decimal128(S)
  3. Decimal128(S1) 运算符 Decimal64(S2) -> Decimal128(S)
  4. Decimal256(S1) 运算符Decimal<32|64|128>(S2) -> Decimal256(S)

两个不同精度的数据进行四则运算时,结果数据的精度以最大精度为准。

  • 规模(小数点位数)对应规则:
  1. 加法|减法:S=max(S1,S2),即以两个数据中小数点位数最多的为准。
  2. 乘法:S=S1+S2(注意:S1精度>=S2精度),即以两个数据的小数位相加为准。
  3. 除法:规模以被除数的小数位为准。两数相除,被除数的小数位数不能小于除数的小数位数也就是触发的规模可以理解为与两个数据中小数点位数大的为准。举例:a/b ,a是被除数,与a的规模保持一致。
  • 示例:
  1. toDecimal32(value,S):将字符串value转换为Decimal32类型,小数点后有S位。
  2. toTypeName(字段):获取字段的数据类型函数。
#测试加法,S取两者最大的,P取两者最大的
node1 :) select
	toDecimal64(2,3) as x,
	toTypeName(x) as xtype,
	toDecimal32(2,2) as y,
	toTypeName(y) as ytype,
	x+y as z,
	toTypeName(z) as ztype;

#测试减法,S取两者最大的,P取两者最大的。
node1 :) select
	toDecimal64(2,3) as x,
	toTypeName(x) as xtype,
	toDecimal32(2,2) as y,
	toTypeName(y) as ytype,
	x-y as z,
	toTypeName(z) as ztype;

结果如下:

 

#测试乘法,S取两者最大的,P取两者小数位之和。
node1 :) select
	toDecimal64(2,3) as x,
	toTypeName(x) as xtype,
	toDecimal32(2,2) as y,
	toTypeName(y) as ytype,
	x*y as z,
	toTypeName(z) as ztype;

结果如下:

#测试除法,S取两者最大的,P取被除数的小数位数。
node1 :) select
	toDecimal64(2,3) as x,
	toTypeName(x) as xtype,
	toDecimal32(2,2) as y,
	toTypeName(y) as ytype,
	x/y as z,
	toTypeName(z) as ztype;

 结果如下:

 

node1 :) select 1-toDecimal64(0.9,1);
SELECT 1 - toDecimal64(0.9, 1)

┌─minus(1, toDecimal64(0.9, 1))─┐
│                           0.1       │
└───────────────────────────────┘

注意:在Clickhouse后续的新版本中,整数不再有2.000 小数位,即使保留了对应了小数位也不会保存。小数依然根据创建保留的小数位来保存设置。​​​​​​​

4. String

字符串可以是任意长度的。它可以包含任意的字节集,包含空字节。因此,字符串类型可以代替其他 DBMSs 中的VARCHAR、BLOB、CLOB 等类型。​​​​​​​

5. FixedString

固定长度N的字符串(N必须是严格的正自然数),一般在明确字符串长度的场景下使用,可以使用下面的语法对列声明为FixedString类型:

# N表示字符串的长度。

<column_name>  FixedString(N)

当向ClickHouse中插入数据时,如果字符串包含的字节数少于 N ,将对字符串末尾进行空字节填充。如果字符串包含的字节数大于N,将抛出Too large value for FixedString(N)异常。

当做数据查询时,ClickHouse不会删除字符串末尾的空字节。 如果使用WHERE子句,则须要手动添加空字节以匹配FixedString的值,新版本后期不需要手动添加。

  • 示例:
    • toFixedString(value,N):将字符串转换为N位长度,N不能小于value字符串实际长度。
#查看字符号串长度

node1 :) select toFixedString('hello',6) as a,length(a) as alength;

SELECT

    toFixedString('hello', 6) AS a,

    length(a) AS alength



┌─a─────┬─alength─┐

│ hello │       6   │

└───────┴─────────┘



node1 :) select toFixedString('hello world',6) as a,length(a) as alength;



SELECT

    toFixedString('hello world', 6) AS a,

length(a) AS alength



Received exception from server (version 20.8.3):

Code: 131. DB::Exception: Received from localhost:9000. DB::Exception: String too long for type FixedString(6).

​​​​​​​​​​​​​​6. UUID

UUID是一种数据库常见的主键类型,在ClickHouse中直接把它作为一种数据类型。UUID共有32位,它的格式为8-4-4-4-12,如果在插入新记录时未指定UUID列值,则UUID值将用0来填充(00000000-0000-0000-0000-000000000000)。

UUID类型不支持算术运算、聚合函数sum和avg。

  • 示例:
    • generateUUIDv4()随机生成一个32位的UUID。
# 使用mydb库

node1 :) use mydb;



#创建表t_uuid,指定x列为UUID类型,表引擎为TinyLog

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



#向表 t_uuid中插入一条数据

node1 :) INSERT INTO t_uuid SELECT generateUUIDv4(), 'Example 1';



#向表t_uuid中插入一条数据,这里不指定UUID的值,默认会生成0来填充

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



#查询结果

node1 :) select * from t_uuid;

SELECT *

FROM t_uuid

┌────────────────────────────────────x─┬─y─────────┐

│ 9c9f82dc-48a0-4749-b46a-cf6a1159c1fe │ Example 1 │

│ 00000000-0000-0000-0000-000000000000 │ Example 2 │

└──────────────────────────────────────┴───────────┘



2 rows in set. Elapsed: 0.003 sec.

​​​​​​​​​​​​​​7. Date

Date只能精确到天,用两个字节存储,表示从1970-01-01(无符号)到当前的日期值。日期中没有存储时区信息,不能指定时区。

  • 示例:
    • now() : 获取当前天日期,返回格式:yyyy-MM-dd HH:mm:ss
    • toDate(value) : 将字符串转成Date,只支持yyyy-MM-dd格式。
# 创建表t_date

node1 :) CREATE TABLE t_date (x date) ENGINE=TinyLog;



# 向表中插入两条数据

node1 :) INSERT INTO t_date VALUES('2021-06-01'),('2021-07-01');



# 查询结果

node1 :) SELECT x,toTypeName(x) FROM t_date;

SELECT

    x,

    toTypeName(x)

FROM t_date

┌──────────x─┬─toTypeName(x)─┐

│ 2021-06-01 │ Date            │

│ 2021-07-01 │ Date            │

└────────────┴───────────────┘

2 rows in set. Elapsed: 0.003 sec.



# 获取当前天日期时间及日期转换

node1 :) select now(),toDate(now()) as d,toTypeName(d) ;

SELECT

    now(),

    toDate(now()) AS d,

    toTypeName(d)

┌───────────────now()─┬──────────d─┬─toTypeName(toDate(now()))─┐

│ 2021-01-25 18:03:00 │ 2021-01-25 │ Date                          │

└─────────────────────┴────────────┴───────────────────────────┘

1 rows in set. Elapsed: 0.004 sec.

​​​​​​​8. DateTime

DateTime精确到秒,可以指定时区。用四个字节(无符号的)存储Unix时间戳。允许存储与日期类型相同的范围内的值。最小值为0000-00-00 00:00:00,时间戳类型值精确到秒。

时区使用启动客户端或服务器时的系统时区。默认情况下,客户端连接到服务的时候会使用服务端时区。您可以通过启用客户端命令行选项 --use_client_time_zone 来设置使用客户端时区。

  • 示例:
    • toDateTime(DateTimeValue) :将字符串转成DateTime,只支持yyyy-MM-dd HH:MI:SS。
    • toDateTime(DateTimeValue,时区) :同上,支持将数据转换为对应时区时间。
# 创建表 t_datetime

node1 :) CREATE TABLE t_datetime(`timestamp` DateTime) ENGINE = TinyLog;


# 向表中插入一条数据

node1 :) INSERT INTO t_datetime Values('2021-06-01 08:00:00');



# 查询数据

node1 :) SELECT timestamp,toTypeName(timestamp) as t FROM t_datetime;

SELECT

    timestamp,

    toTypeName(timestamp) AS t

FROM t_datetime

┌───────────timestamp─┬─t────────┐

│ 2021-06-01 08:00:00 │ DateTime │

└─────────────────────┴──────────┘

1 rows in set. Elapsed: 0.003 sec



# 转换时区查询

node1 :) SELECT  toDateTime(timestamp, 'Asia/Shanghai') AS column, toTypeName(column) AS x  FROM t_datetime;

SELECT

    toDateTime(timestamp, 'Asia/Shanghai') AS column,

    toTypeName(column) AS x

FROM t_datetime



┌──────────────column─┬─x─────────────────────────┐

│ 2021-06-01 08:00:00 │ DateTime('Asia/Shanghai') │

└─────────────────────┴───────────────────────────┘



1 rows in set. Elapsed: 0.003 sec.

​​​​​​​​​​​​​​9. DateTime64

DateTime64精确到毫秒和微秒,可以指定时区。在内部,此类型以Int64类型将数据存储。时间刻度的分辨率由precision参数确定。此外,DateTime64 类型可以像存储其他数据列一样存储时区信息,时区会影响 DateTime64 类型的值如何以文本格式显示,以及如何解析以字符串形式指定的时间数据 (‘2020-01-01 05:00:01.000’)。时区信息不存储在表的行中,而是存储在列的元数据中。

语法如下:

# precision 精度,timezone:时区

DateTime64(precision, [timezone])
  • 示例:
    • toDateTime64(timeStr,precision):将字符串转成DateTime64,精度为precision。支持yyyy-MM-dd HH:MI:SS.SSS时间格式。
    • toDateTime64(timeStr,precision,timezone):同上,只是可以将时间转换为对应时区时间。
#创建表

node1 :) CREATE TABLE dt(`timestamp` DateTime64(3, 'Europe/Moscow'),`event_id` UInt8) ENGINE = TinyLog



#插入数据

node1 :) INSERT INTO dt Values (1546300800000, 1), ('2019-01-01 00:00:00', 2),(1546300812345, 3)



#查询数据

node1 :) select * from dt;

SELECT *

FROM dt

┌───────────────timestamp─┬─event_id─┐

│ 2019-01-01 03:00:00.000 │        1   │

│ 2019-01-01 00:00:00.000 │        2   │

│ 2019-01-01 03:00:12.345 │        3   │

└─────────────────────────┴──────────┘

3 rows in set. Elapsed: 0.003 sec.



#使用toDateTime64转换时间

node1 :) select toDateTime64(timestamp,4) as t1,toDateTime64(timestamp,4,'Europe/London') as t2,event_id from dt;

SELECT

    toDateTime64(timestamp, 4) AS t1,

    toDateTime64(timestamp, 4, 'Europe/London') AS t2,

    event_id

FROM dt

┌───────────────────────t1─┬───────────────────────t2─┬─event_id─┐

│ 2019-01-01 03:00:00.0000 │ 2019-01-01 00:00:00.0000 │        1 │

│ 2019-01-01 00:00:00.0000 │ 2018-12-31 21:00:00.0000 │        2 │

│ 2019-01-01 03:00:12.3450 │ 2019-01-01 00:00:12.3450 │        3 │

└──────────────────────────┴──────────────────────────┴──────────┘

3 rows in set. Elapsed: 0.003 sec.

​​​​​​​10. 布尔类型

ClickHouse中没有单独的类型来存储布尔值。可以使用 UInt8 类型,取值限制为 0 或 1。具体参照枚举类型。


👨‍💻如需博文中的资料请私信博主。


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个类似Office用户界面的WPF库

博主介绍&#xff1a; &#x1f308;一个10年开发经验.Net老程序员&#xff0c;微软MVP、博客专家、CSDN/阿里云 .Net领域优质创作者&#xff0c;专注于.Net领域知识、开源项目分享&#xff01;&#x1f308; &#x1f6d5;文末获取&#xff0c;加入交流群&#x1f6d5; &#…

bitset优化例题

1. bitset 优化背包 https://loj.ac/p/515 题意&#xff1a; 给 n 个 < n 的数&#xff0c;每个数有取值范围 a[ i ] - b[ i ]&#xff0c;令 x 为 n 个数的平方和&#xff0c;求能构成的 x 的个数 样例&#xff1a; 5 1 2 2 3 3 4 4 5 5 6 26 思路&#xff1a; 背包d…

VUE之VueRouter页面跳转

参考资料&#xff1a; 参考视频 参考demo及视频资料 VUE之基本部署及VScode常用插件 VUE之基本组成和使用 VUE之Bootstrap和Element-UI的使用 VUE之axios使用&#xff0c;跨域问题&#xff0c;拦截器添加Token Vue Router官网 Vue Router说明&#xff1a; 说明&#xf…

SpringBoot接手JSP项目--【JSB项目实战】

SpringBoot系列文章目录 SpringBoot知识范围-学习步骤【JSB系列之000】 文章目录 SpringBoot系列文章目录[TOC](文章目录) SpringBoot技术很多很多工作之初&#xff0c;面临JSP的老项目我要怎么办环境及工具&#xff1a;项目里可能要用到的技术JSPjstl其它的必要知识 上代码WE…

数据结构:第六章 图

文章目录 一、图的基本概念1.1定义1.2有向图、无向图1.3顶点的度、入度、出度1.4顶点-顶点关系的描述1.5子图和生成子图1.6连通分量1.6强连通分量1.7生成树1.8生成森林1.9边的权、带权图/网1.10几种特殊的图1.11小结 二、图的存储及基本操作2.1邻接矩阵法2.1.1邻接矩阵存储不带…

29_互联网(The Internet)(IP数据包;UDP;TCP;DNS;OSI)

上篇介绍了计算机网络的基础知识&#xff0c;也提到互联网&#xff08;The Internet&#xff09;&#xff0c;本篇将会详细介绍互联网&#xff08;The Internet&#xff09;。 文章目录 1. 互联网&#xff08;The Internet&#xff09;组成及数据包传输过程2. IP 数据包的不足3…

【Spring Boot 源码学习】走近 AutoConfigurationImportSelector

AutoConfigurationImportSelector 源码解析 引言主要内容1. ImportSelector 接口2. DeferredImportSelector 接口3. AutoConfigurationImportSelector 功能概述 总结 引言 上篇博文我们了解了 EnableAutoConfiguration 注解&#xff0c;其中真正实现自动配置功能的核心实现者 …

手把手一起实现Visual Studio 2022本地工程提交(和克隆)Gitee

1、VS2022本地工程提交Gitee 登录Gitee&#xff0c;创建空仓库&#xff0c;如图&#xff1a; 新建仓库&#xff1a; 打开Visual Studio 2022创建的工程&#xff0c;点击创建Git存储库&#xff1a; 复制Gitee仓库URL&#xff1a; 将URL填入&#xff0c;点击创建并推送&#xff…

计算机基本硬件的内部结构

1.早期冯诺依曼机结构 世界上第一台计算机ENIAC是使用手动接线来控制计算&#xff0c;十分麻烦。 冯诺依曼提出“存储程序”的概念&#xff0c;是指将指令以二进制代码的形式事先输入计算机的主存储器&#xff08;内存&#xff09;&#xff0c;然后按照其在存储器中的首地址执…

【递归、搜索与回溯算法练习】day1

文章目录 一、面试题 08.06. 汉诺塔问题1.题目简介2.解题思路3.代码4.运行结果 二、21. 合并两个有序链表1.题目简介2.解题思路3.代码4.运行结果 三、206. 反转链表1.题目简介2.解题思路3.代码4.运行结果 总结 一、面试题 08.06. 汉诺塔问题 1.题目简介 面试题 08.06. 汉诺塔…

玩转LaTeX(二)【特殊字符、插图设置、表格、浮动体】

特殊字符&#xff1a; 导言区&#xff1a;&#xff08;添加几个宏包&#xff09; \usepackage{xltxtra} %\XeLaTeX(提供了针对XeTeX的改进并且加入了XeTeX的LOGO)\usepackage{texnames} %LOGO\usepackage{mflogo}\usepackage{ctex} 正文区&#xff1a; \begin{document}…

vue拖拽改变宽度

1.封装组件ResizeBox.vue <template><div ref"resize" class"resize"><div ref"resizeHandle" class"handle-resize" /><slot /></div> </template> <script> export default {name: Resi…

【八】mybatis 日志模块设计

mybatis 日志模块设计 简介&#xff1a;闲来无事阅读一下mybatis的日志模块设计&#xff0c;学习一下优秀开源框架的设计思路&#xff0c;提升自己的编码能力 模块设计 在Mybatis内部定义了4个级别&#xff1a;Error:错误 、warn:警告、debug:调试、trance&#xff0c;日志优…

C++STL序列式容器——vector容器详解

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 &#x1f4ac;文章目录 一.vector容器基本概念二.vector常用操作①vector构造函数②特性操作③元素操作④赋值操作⑤交换操作⑥比较操作⑦插入和删除操作 一.vector容器基…

MATLAB编程实践12、13

生命游戏 游戏的宇宙是无限可扩展的二维矩形网格&#xff0c;群体是那些标注为存活的网格的集合。群体可以依照称为代的离散时间步距进化。在每一步中&#xff0c;每个网格的命运由它周围最近的8个网格邻居的活度决定&#xff0c;规则如下&#xff1a; 如果一个存活的网格有两个…

想阻止BOT攻击?一起聚焦灵活有效的F5解决方案

伴随着突如其来的数字创新&#xff0c;使潜在的欺诈无处不在。现在&#xff0c;帮我们查找机票交易、位置理想的演唱会座位的 BOT技术正在为网络犯罪分子所利用。权威数据表示&#xff0c;在过去5年&#xff0c;撞库攻击已成为造成经济损失的最大原因之一&#xff0c;几乎每个企…

小研究 - 基于解析树的 Java Web 灰盒模糊测试(二)

由于 Java Web 应用业务场景复杂, 且对输入数据的结构有效性要求较高, 现有的测试方法和工具在测试Java Web 时存在测试用例的有效率较低的问题. 为了解决上述问题, 本文提出了基于解析树的 Java Web 应用灰盒模糊测试方法. 首先为 Java Web 应用程序的输入数据包进行语法建模创…

前端技术周刊 2023-07-30:Promise.withResolvers 进入 Stage3

项目地址&#xff1a;olivewind/weekly[1] 微信公众号&#xff1a;依赖注入 发布时间&#xff1a;2023.07.30 本周内容&#xff1a;资讯x2、开源x8、文章x4 动态 Promise.withResolvers 进入 Stage3 某些情况下需要在 Promise 外部获取 resolve 和 reject 句柄&#xff0c;我们…

【云原生】一文学会Docker存储所有特性

目录 1.Volumes 1.Volumes使用场景 2.持久将资源存放 3. 只读挂载 2.Bind mount Bind mounts使用场景 3.tmpfs mounts使用场景 4.Bind mounts和Volumes行为上的差异 5.docker file将存储内置到镜像中 6.volumes管理 1.查看存储卷 2.删除存储卷 3.查看存储卷的详细信息…

RWEQ模型参量提取

土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一&#xff0c;土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2&#xff0c;占国土总面积的16.7%&#xff0c;严重影响这些地区的资源开发和社会经…