最新要闻
- GeFore GPU杀进手机市场 联发科、NVIDIA合作旗舰级处理器:回应来了
- 研究发现人在打盹时最具创造力:创造性比清醒受试者多78%
- 是谁推高了榴莲价格?网友吐槽吃不起 动辄三四百块一个 有人热衷开盲盒-速读
- 佛山南海:明年6月底前完成全区初高中在校学生脊柱侧弯全员筛查 天天信息
- 环球讯息:人类一败涂地 60万年薪的高级工作可被AI取代:成本只要2000多
- 机票价格仅919元 国产大飞机C919首航在即:万亿航空市场开启|天天日报
- 方力钧画袁老后续处理结果 个人简历家庭背景最贵的画价值多少具体情况详细内容介绍 全球新要闻
- 热点在线丨出门倒车疑油门当刹车倒进村河 一家4口不幸身亡:网友叹息
- 32GB DDR5只要400多 内存要跌破成本了 最快7月反转 全球新要闻
- 天天快看点丨特斯拉CEO马斯克:比亚迪的产品极具竞争力
- 世界动态:苹果7月关闭我的照片流服务:用户需尽快迁移iCloud
- 《崩坏:星穹铁道》营收超《原神》!上线10日吸金1亿美元|当前速讯
- 亚运走进三江源 携手辉映生态之光 天天观点
- AI也有焦虑症?专家:微调模型AI可供医生研究“精神病人” 每日短讯
- 当前播报:专家:印度人口将是中国三倍 成全球第一人口大国
- 余承东:华为必须造车 是和车企一起造最好的车 快看点
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
Doris(二) -- 基本概念和数据表模型
字段类型
数据类型 | 字节 | 范围 |
---|---|---|
TINYINT | 1 字节 | -2^7 + 1 ~ 2^7 - 1 |
SMALLINT | 2 字节 | -2^15 + 1 ~ 2^15 - 1 |
INT | 4 字节 | -2^31 + 1 ~ 2^31 - 1 |
BIGINT | 8 字节 | -2^63 + 1 ~ 2^63 - 1 |
LARGEINT | 16 字节 | -2^127 + 1 ~ 2^127 - 1 |
FLOAT | 4 字节 | 支持科学计数法 |
DOUBLE | 12 字节 | 支持科学计数法 |
DECIMAL[(precision, scale)] | 16 字节 | 保证精度的小数类型。默认是DECIMAL(10, 0) ,precision: 1 ~ 27 ,scale: 0 ~ 9,其中整数部分为 1 ~ 18,不支持科学计数法 |
DATE | 3 字节 | 0000-01-01 ~ 9999-12-31 |
DATETIME | 8 字节 | 0000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
CHAR[(length)] | 定长字符串。长度范围:1 ~ 255。默认为 1 | |
VARCHAR[(length)] | 变长字符串。长度范围:1 ~ 65533 | |
BOOLEAN | 与 TINYINT 一样,0 代表 false,1 代表 true | |
HLL | 1~16385 个字节 | hll 列类型,不需要指定长度和默认值,长度根据数据的聚合程度系统内控制,并且 HLL 列只能通过 配套的hll_union_agg、Hll_cardinality、hll_hash 进行查询或使用 |
BITMAP | bitmap 列类型,不需要指定长度和默认值。表示整型的集合,元素最大支持到 2^64 - 1 | |
STRING | 变长字符串,0.15 版本支持,最大支持 2147483643 字节(2GB-4),长度还受 be 配置string_type_soft_limit , 实际能存储的最大长度取两者最小值。只能用在 value 列,不能用在 key列和分区、分桶列 |
表的基本概念
行和列
一张表包括行(Row)和列(Column);Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。doris中的列分为两类:key列和value列key列在doris中有两种作用:聚合表模型中,key是聚合和排序的依据其他表模型中,key是排序依据
数据表模型
Doris 的数据模型主要分为3类:•Aggregate 聚合模型•Unique 唯一模型•Duplicate 明细模型
Aggregate 模型
是相同key的数据进行自动聚合的表模型。表中的列按照是否设置了 AggregationType
,分为 Key(维度列)和 Value(指标列),没有设置AggregationType
的称为 Key,设置了 AggregationType
的称为 Value。当我们导入数据时,对于 Key 列相同的行会聚合成一行,而 Value 列会按照设置的AggregationType
进行聚合。AggregationType
目前有以下五种聚合方式:
(资料图片)
- SUM:求和,多行的 Value 进行累加。
- REPLACE:替代,下一批数据中的 Value 会替换之前导入过的行中的 Value。
- REPLACE_IF_NOT_NULL :当遇到 null 值则不更新。
- MAX:保留最大值。
- MIN:保留最小值。
有如下场景:需要创建一个表,来记录公司每个用户的每一次消费行为信息,有如下字段:而且,公司对这份数据,特别关心一个报表每一个用户最后一次访问我们页面的时间,用户消费的总金额,用户停留在我们页面上的最大最小时长每次要看这个报表,都需要在“明细表”上运行一个统计sql
Select user_id,data,city,age,gender, max(visit_data) as last_visit_data, sum(cost) as cost, max(dwell_time) as max_dwell_time, min(dwell_time) as min_dwell_timeFrom tGroup by user_id,data,city,age,gender -- 对应的是聚合模型型key
聚合模型
-- 这是一个用户消费和行为记录的数据表CREATE TABLE IF NOT EXISTS test.ex_user( `user_id` LARGEINT NOT NULL COMMENT "用户 id", `date` DATE NOT NULL COMMENT "数据灌入日期时间", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `sex` TINYINT COMMENT "用户性别", `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间", `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费", `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间", `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间" )ENGINE=olapAGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)-- 分桶 创建表时必须指定分桶 分桶的概念下面说DISTRIBUTED BY HASH(`user_id`) BUCKETS 1;-- 插入数据insert into test.ex_user values\(10000,"2017-10-01","北京",20,0,"2017-10-01 06:00:00",20,10,10),\(10000,"2017-10-01","北京",20,0,"2017-10-01 07:00:00",15,2,2),\(10001,"2017-10-01","北京",30,1,"2017-10-01 17:05:45",2,22,22),\(10002,"2017-10-02","上海",20,1,"2017-10-02 12:59:12",200,5,5),\(10003,"2017-10-02","广州",32,0,"2017-10-02 11:20:00",30,11,11),\(10004,"2017-10-01","深圳",35,0,"2017-10-01 10:00:15",100,3,3),\(10004,"2017-10-03","深圳",35,0,"2017-10-03 10:20:22",11,6,6);
查看数据的时候发现,数据只剩下6条了,就是因为再key相同的时候,将后面的结果聚合了
UNIQUE 模型
是相同key的数据进行自动去重的表模型。在某些多维分析场景下,用户更关注的是如何保证 Key 的唯一性,即如何获得 Primary Key 唯一性约束。因此,引入了 Uniq 的数据模型。该模型本质上是聚合模型的一个特例,也是一种简化的表结构表示方式。
-- 创建表drop table if exists test.user;CREATE TABLE IF NOT EXISTS test.user(-- key列 `user_id` LARGEINT NOT NULL COMMENT "用户 id", `username` VARCHAR(50) NOT NULL COMMENT "用户昵称", -- value列 `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `sex` TINYINT COMMENT "用户性别", `phone` LARGEINT COMMENT "用户电话", `address` VARCHAR(500) COMMENT "用户地址", `register_time` DATETIME COMMENT "用户注册时间" )UNIQUE KEY(`user_id`, `username`)DISTRIBUTED BY HASH(`user_id`) BUCKETS 1;-- 插入数据insert into test.user values\(10000,"zss","北京",18,0,12345678910,"北京朝阳区 ","2017-10-01 07:00:00"),\(10000,"zss","北京",19,0,12345678910,"北京顺义区 ","2018-10-01 07:00:00"),\(10000,"lss","北京",20,0,12345678910,"北京海淀区","2017-11-15 06:10:20");insert into test.user1 values\(10000,"zss","北京",18,0,12345678910,"北京朝阳区 ","2017-10-01 07:00:00"),\(10000,"zss","北京",19,0,12345678910,"北京顺义区 ","2018-10-01 07:00:00"),\(10000,"lss","北京",20,0,12345678910,"北京海淀区","2017-11-15 06:10:20");
查询结果后发现,相同的数据就会被替换掉
Duplicate 模型
就是存明细数据的表模型,既不做聚合也不做去重。在某些多维分析场景下,数据既没有主键,也没有聚合需求。Duplicate 数据模型可以满足这类需求。数据完全按照导入文件中的数据进行存储,不会有任何聚合。即使两行数据完全相同,也都会保留。 而在建表语句中指定的 DUPLICATE KEY,只是用来指明底层数据按照那些列进行排序。
-- 创建表CREATE TABLE IF NOT EXISTS test.log_detail( `timestamp` DATETIME NOT NULL COMMENT "日志时间", `type` INT NOT NULL COMMENT "日志类型", `error_code` INT COMMENT "错误码", `error_msg` VARCHAR(1024) COMMENT "错误详细信息", `op_id` BIGINT COMMENT "负责人 id", `op_time` DATETIME COMMENT "处理时间" )DUPLICATE KEY(`timestamp`, `type`) -- key用作排序使用DISTRIBUTED BY HASH(`timestamp`) BUCKETS 1;-- 插入数据insert into test.log_detail values\("2017-10-01 08:00:05",1,404,"not found page", 101, "2017-10-01 08:00:05"),\("2017-10-01 08:00:05",1,404,"not found page", 101, "2017-10-01 08:00:05"),\("2017-10-01 08:00:05",2,404,"not found page", 101, "2017-10-01 08:00:06"),\("2017-10-01 08:00:06",2,404,"not found page", 101, "2017-10-01 08:00:07");
数据模型的选择
数据模型在建表时就已经确定,且无法修改;所以,选择一个合适的数据模型非常重要。
Aggregate 模型可以通过预聚合,极大地降低聚合查询时所需扫描的数据量和查询的计算量,非常适合有固定模式的报表类查询场景。
Uniq 模型针对需要唯一主键约束的场景,可以保证主键唯一性约束。但是无法利用 ROLLUP 等预聚合带来的查询优势(因为本质是 REPLACE,没有 SUM 这种聚合方式)。
Duplicate 适合任意维度的查询。虽然同样无法利用预聚合的特性,但是不受聚合模型的约束,可以发挥列存模型的优势(只读取相关列,而不需要读取所有 Key 列)
分区与分桶
- partition(分区):是在逻辑上将一张表按行(横向)划分
- tablet(又叫bucket,分桶):在物理上对一个分区再按行(横向)划分
分区(Partition)
•Partition 列可以指定一列或多列,在聚合模型中,分区列必须为 KEY 列。•不论分区列是什么类型,在写分区值时,都需要加双引号。•分区数量理论上没有上限。•当不使用 Partition 建表时,系统会自动生成一个和表名同名的,全值范围的 Partition。该 Partition 对用户不可见,并且不可删改。•创建分区时不可添加范围重叠的分区。
Range 分区
单列分区
drop table if exists test.expamle_range_tbl;CREATE TABLE IF NOT EXISTS test.expamle_range_tbl( `user_id` LARGEINT NOT NULL COMMENT "用户id", `date` DATE NOT NULL COMMENT "数据灌入日期时间", `timestamp` DATETIME NOT NULL COMMENT "数据灌入的时间戳", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `sex` TINYINT COMMENT "用户性别")ENGINE=OLAPDUPLICATE KEY(`user_id`, `date`) -- 表模型-- 分区的语法PARTITION BY RANGE(`date`) -- 指定分区类型和分区列( -- 指定分区名称,分区的上界 前闭后开 PARTITION `p201701` VALUES LESS THAN ("2017-02-01"), PARTITION `p201702` VALUES LESS THAN ("2017-03-01"), PARTITION `p201703` VALUES LESS THAN ("2017-04-01"))DISTRIBUTED BY HASH(`user_id`) BUCKETS 1;
•分区列通常为时间列,以方便的管理新旧数据。•Partition 支持通过 VALUES LESS THAN (...) 仅指定上界,系统会将前一个分区的上界作为该分区的下界,生成一个左闭右开的区间。同时,也支持通过 VALUES[...) 指定上下界,生成一个左闭右开的区间。•通过 VALUES ...) 同时指定上下界比较容易理解。这里举例说明,当使用 VALUES LESS THAN (...) 语句进行分区的增删操作时,分区范围的变化情况:如上 expamle_range_tbl 得建表语句中可以看到,当建表完成后,会自动生成如下3个分区:
-- 查看表中分区得情况SHOW PARTITIONS FROM test.expamle_range_tbl \G;-- 增加一个分区ALTER TABLE test.expamle_range_tbl ADD PARTITION p201705 VALUES LESS THAN ("2017-06-01");--删除分区ALTER TABLE test.expamle_range_tbl DROP PARTITION p201703;-- 此时的分区状态如下:-- p201701: [MIN_VALUE, 2017-02-01)-- p201702: [2017-02-01, 2017-03-01)-- p201705: [2017-04-01, 2017-06-01)-- 出现了一个空洞:[2017-03-01, 2017-04-01)-- 如果导入的数据范围在这个空洞范围内,是无法导入的
多列分区
PARTITION BY RANGE(`date`, `id`) 前闭后开( PARTITION `p201701_1000` VALUES LESS THAN ("2017-02-01", "1000"), PARTITION `p201702_2000` VALUES LESS THAN ("2017-03-01", "2000"), PARTITION `p201703_all` VALUES LESS THAN ("2017-04-01")-- 默认采用id类型的最小值)-- 当用户插入数据时,分区列值会按照顺序依次比较,最终得到对应的分区
List分区
•分区列支持 BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, DATE, DATETIME, CHAR, VARCHAR 数据类型,分区值为枚举值。只有当数据为目标分区枚举值其中之一时,才可以命中分区。
•Partition 支持通过 VALUES IN (...) 来指定每个分区包含的枚举值。
-- 单列CREATE TABLE IF NOT EXISTS test.expamle_list_tbl( `user_id` LARGEINT NOT NULL COMMENT "用户id", `date` DATE NOT NULL COMMENT "数据灌入日期时间", `timestamp` DATETIME NOT NULL COMMENT "数据灌入的时间戳", `city` VARCHAR(20) NOT NULL COMMENT "用户所在城市", `age` SMALLINT NOT NULL COMMENT "用户年龄", `sex` TINYINT NOT NULL COMMENT "用户性别", `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间", `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费", `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间", `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间")ENGINE=olapAGGREGATE KEY(`user_id`, `date`, `timestamp`, `city`, `age`, `sex`)PARTITION BY LIST(`city`)( PARTITION `p_cn` VALUES IN ("Beijing", "Shanghai", "Hong Kong"), PARTITION `p_usa` VALUES IN ("New York", "San Francisco"), PARTITION `p_jp` VALUES IN ("Tokyo"))-- 指定分桶的语法DISTRIBUTED BY HASH(`user_id`) BUCKETS 1PROPERTIES( "replication_num" = "3");-- 多列PARTITION BY LIST(`id`, `city`)( PARTITION `p1_city` VALUES IN (("1", "Beijing",), ("2", "Shanghai")), PARTITION `p2_city` VALUES IN (("2", "Beijing"), ("1", "Shanghai")), PARTITION `p3_city` VALUES IN (("3", "Beijing"), ("4", "Shanghai")))
分桶(Bucket)
- 如果使用了 Partition,则 DISTRIBUTED ... 语句描述的是数据在各个分区内的划分规则。如果不使用 Partition,则描述的是对整个表的数据的划分规则。
- 分桶列可以是多列,但必须为 Key 列。分桶列可以和 Partition 列相同或不同。
- 分桶列的选择,是在 查询吞吐 和 查询并发 之间的一种权衡:
- 如果选择多个分桶列,则数据分布更均匀。如果一个查询条件不包含所有分桶列的等值条件,那么该查询会触发所有分桶同时扫描,这样查询的吞吐会增加,单个查询的延迟随之降低。这个方式适合大吞吐低并发的查询场景。
- 如果仅选择一个或少数分桶列,则对应的点查询可以仅触发一个分桶扫描。此时,当多个点查询并发时,这些查询有较大的概率分别触发不同的分桶扫描,各个查询之间的IO影响较小(尤其当不同桶分布在不同磁盘上时),所以这种方式适合高并发的点查询场景。
- 分桶的数量理论上没有上限
关于 Partition 和 Bucket的数量和数据量的建议。
- 一个表的 Tablet 总数量等于 (Partition num * Bucket num)。
- 一个表的 Tablet 数量,在不考虑扩容的情况下,推荐略多于整个集群的磁盘数量。
- 单个 Tablet 的数据量理论上没有上下界,但建议在 1G - 10G 的范围内。如果单个 Tablet 数据量过小,则数据的聚合效果不佳,且元数据管理压力大。如果数据量过大,则不利于副本的迁移、补齐,且会增加 Schema Change 或者 Rollup 操作失败重试的代价(这些操作失败重试的粒度是 Tablet)。分桶应该控制桶内数据量 ,不易过大或者过小
- 当 Tablet 的数据量原则和数量原则冲突时,建议优先考虑数据量原则。
- 在建表时,每个分区的 Bucket 数量统一指定。但是在动态增加分区时(ADD PARTITION),可以单独指定新分区的 Bucket 数量。可以利用这个功能方便的应对数据缩小或膨胀。
- 一个 Partition 的 Bucket 数量一旦指定,不可更改。所以在确定 Bucket 数量时,需要预先考虑集群扩容的情况。比如当前只有 3 台 host,每台 host 有 1 块盘。如果 Bucket 的数量只设置为 3 或更小,那么后期即使再增加机器,也不能提高并发度。
注:表的数据量可以通过 SHOW DATA命令查看,结果除以副本数,即表的数据量。
复合分区与单分区的选择
复合分区•第一级称为 Partition,即分区。用户可以指定某一维度列作为分区列(当前只支持整型和时间类型的列),并指定每个分区的取值范围。•第二级称为 Distribution,即分桶。用户可以指定一个或多个维度列以及桶数对数据进行 HASH 分布。
以下场景推荐使用复合分区•有时间维度或类似带有有序值的维度,可以以这类维度列作为分区列。分区粒度可以根据导入频次、分区数据量等进行评估。地域、时间•历史数据删除需求:如有删除历史数据的需求(比如仅保留最近N 天的数据)。使用复合分区,可以通过删除历史分区来达到目的。也可以通过在指定分区内发送 DELETE 语句进行数据删除。•改善数据倾斜问题:每个分区可以单独指定分桶数量。如按天分区,当每天的数据量差异很大时,可以通过指定分区的分桶数,合理划分不同分区的数据,分桶列建议选择区分度大的列。用户也可以不使用复合分区,即使用单分区。则数据只做 HASH 分布。
PROPERTIES
在建表语句的最后,可以用 PROPERTIES 关键字来设置一些表的属性参数(参数有很多)
PROPERTIES( "参数名" = "参数值")
分片副本数(replication_num)
每个 Tablet 的副本数量。默认为 3,建议保持默认即可。在建表语句中,所有 Partition中的 Tablet 副本数量统一指定。而在增加新分区时,可以单独指定新分区中 Tablet 的副本数量。
副本数量可以在运行时修改。强烈建议保持奇数。
最大副本数量取决于集群中独立 IP 的数量(注意不是 BE 数量)。Doris 中副本分布的原则是,不允许同一个 Tablet 的副本分布在同一台物理机上,而识别物理机即通过 IP。所以,即使在同一台物理机上部署了 3 个或更多 BE 实例,如果这些 BE 的 IP 相同,则依然只能设置副本数为 1。对于一些小,并且更新不频繁的维度表,可以考虑设置更多的副本数。这样在 Join 查询时,可以有更大的概率进行本地数据 Join。
存储介质 和 热数据冷却时间
•storage_medium•storage_cooldown_time建表时,可以统一指定所有 Partition 初始存储的介质及热数据的冷却时间,如:
"storage_medium" = "SSD"-- 要在当前时间之后,并且是一个datetime类型 "storage_cooldown_time" = "2023-04-20 00:00:00"-- 默认初始存储介质可通过 fe 的配置文件 fe.conf 中指定 default_storage_medium=xxx,如果没有指定,则默认为 HDD。如果指定为 SSD,则数据初始存放在 SSD 上。没设storage_cooldown_time,则默认 30 天后,数据会从 SSD 自动迁移到 HDD上。如果指定了 storage_cooldown_time,则在到达 storage_cooldown_time 时间后,数据才会迁移。
注意,当指定 storage_medium 时,如果 FE 参数 enable_strict_storage_medium_check 为False 该参数只是一个“尽力而为”的设置。即使集群内没有设置 SSD 存储介质,也不会报错,而是自动存储在可用的数据目录中。 同样,如果 SSD 介质不可访问、空间不足,都可能导致数据初始直接存储在其他可用介质上。而数据到期迁移到 HDD 时,如果 HDD 介质不 可 访 问 、 空 间 不 足 , 也 可 能 迁 移 失 败 ( 但 是 会 不 断 尝 试 ) 。 如 果 FE 参 数enable_strict_storage_medium_check 为 True 则当集群内没有设置 SSD 存储介质时,会报错Failed to find enough host in all backends with storage medium is SSD。
关键词:
-
Doris(二) -- 基本概念和数据表模型
字段类型|数据类型|字节|范围||||||TINYINT|1字节|-2^7+1~2^7-1||SMALLINT|2字节|-2^15+1~2^15-1||INT|4字
来源: Doris(二) -- 基本概念和数据表模型
GeFore GPU杀进手机市场 联发科、NVIDIA合作旗舰级处理器:回应来了
研究发现人在打盹时最具创造力:创造性比清醒受试者多78%
是谁推高了榴莲价格?网友吐槽吃不起 动辄三四百块一个 有人热衷开盲盒-速读
佛山南海:明年6月底前完成全区初高中在校学生脊柱侧弯全员筛查 天天信息
低代码的“钱景”——专业的事交给专业的人来做
composer的安装
connection reset by peer 发生了什么?|每日简讯
环球讯息:人类一败涂地 60万年薪的高级工作可被AI取代:成本只要2000多
机票价格仅919元 国产大飞机C919首航在即:万亿航空市场开启|天天日报
方力钧画袁老后续处理结果 个人简历家庭背景最贵的画价值多少具体情况详细内容介绍 全球新要闻
热点在线丨出门倒车疑油门当刹车倒进村河 一家4口不幸身亡:网友叹息
32GB DDR5只要400多 内存要跌破成本了 最快7月反转 全球新要闻
天天快看点丨特斯拉CEO马斯克:比亚迪的产品极具竞争力
世界动态:苹果7月关闭我的照片流服务:用户需尽快迁移iCloud
世界短讯!如何通过Python将JSON格式文件导入redis?
《崩坏:星穹铁道》营收超《原神》!上线10日吸金1亿美元|当前速讯
亚运走进三江源 携手辉映生态之光 天天观点
全球热点!Linux工作原理1简介
3W字吃透:微服务网关SpringCloud gateway底层原理和实操
红黑树_每日资讯
未来边缘计算:趋于分布式智能
AI也有焦虑症?专家:微调模型AI可供医生研究“精神病人” 每日短讯
当前播报:专家:印度人口将是中国三倍 成全球第一人口大国
余承东:华为必须造车 是和车企一起造最好的车 快看点
环球热文:接连失效!西丽、西乡旧改都未获批!
x86游戏逆向之实战游戏线程发包与普通发包的逆向 快看
全球热门:理解JS中数组的常见应用
索引与分片|今日看点
泺怎么读什么意思(泺怎么读)
头条:司机担心违法被拍拒给救护车让路 回应扣分怎么办引热议:网友吵翻
韩方称要做好亚运会不公平待遇准备 国内选手吐槽:不配说公平 韩服笑死人
环球热消息:科技股票十年回报率:英伟达105倍第一 马斯克四字回应
23 Windows Sever 201服务器系统的安装以及远程控制的设置与使用
特斯拉车顶维权女车主回应败诉:有一案胜诉 获赔2万元
很是震撼!古人吃剩的螺蛳壳堆成一座山 13个足球场大小
世界通讯!杨紫琼版观音菩萨引热议!《西游ABC》差评不断:豆瓣已5.6分
全球即时:越南大牌:Lipo柠檬味面包干8.9元/包抄底
夏日炎炎过夏“神裤”!匹克冰丝裤2.6折狂促:到手64-每日热讯
当前最新:蚂蚁庄园支付宝问答:钙片含钙量越高补钙效果越好吗
《安富莱嵌入式周报》第313期:搬运机器人,微软出的C语言手册,开源生物信号采集板,开源SMD回流焊,开源SDR无线电,汽车级机器人评估板|天天即时
天天要闻:13-分频器-奇分频
天天热点评!中国手机市场连续5个季度暴跌 越来越多手机卖不动!为啥年轻人不换新手机了?
每日时讯!4G成熟 你会升5G吗?中国移动喊话不缩减5G投入:华为等中新集采大单
定边县冯地坑镇冯地坑村扶贫互助资金协会 天天时讯
在这片生态走廊,孩子们探究生物多样性…… 即时
环球微资讯!Go 语言 map 如何顺序读取?
全球信息:DataGridView完美解决复制粘贴功能
每日热门:【环球财经】美财长把最早债务违约日期推迟到6月5日
万吨海上巨无霸!渤海湾首个千亿方大气田中心平台建成
35岁模特患厌食症去世时仅23公斤:都是为控制体重 世界播报
【天天速看料】首发3999元!小米电视音响5.1.4发布:200W低音炮、杜比全景声
当前热点-半年都不消停?你的湿疹“不一般”
获取门禁记录方式-实时获取|世界时快讯
《狂飙》片方没有为高启强报名“最佳男主角”引热议:影迷直呼可惜 到底为啥? 环球最资讯
林志颖车祸后再度开法拉利赛车 网友大赞心理素质真强大
垃圾分类全覆盖-环球聚焦
iPhone 15系列四款机模上手:全系USB-C 接口、标配灵动岛-环球滚动
SQL进阶教程读后总结与感想|全球讯息
希荻微:子公司拟减持NVTS股票-环球热讯
mol是什么单位等于多少毫克_mol是什么单位
一季度全球汽车销冠出炉:特斯拉史无前例!Model Y力压丰田卡罗拉
惠普战66六代上手:2.5k 120Hz屏真香|每日信息
全球短讯!日本人把安卓手机做成了翻盖!极致工匠 只要100多元
2018年菲尔兹奖得主:中国这么大 需要至少50个清华-当前速递
NVIDIA市值无限逼近1万亿美元!老黄一夜赚了65亿刀 世界新消息
世界热讯:中位数怎么求_中位数
微速讯:阿扎尔换凯恩!皇马热刺重磅互换,本泽马接班人敲定,扎球王走人
世界看热讯:三亚一刑释人员砍伤2人潜逃 现已被抓获归案
2023王源演唱会重庆站直播时间+入口
证券期货业网络和数据安全实验室今日授牌 全球新资讯
乐享云南|美景·西双版纳原始森林公园
世界焦点!Node翻译i18n多语言文件,1分钟生成100种语言包
因高度计算出错 导致日本“白兔号”撞上月球摔个稀碎
著名演员罗京民老师因病去世 曾出演高分电视剧《士兵突击》
舅舅党爆料 微软Xbox将在未来推出《星空》主题限定手柄与无线耳机
育碧天猫旗舰店将于6月7号停止运营 不再经营国内的衍生品销售业务
五月天演唱会于今日晚间在鸟巢举行 不少歌迷在场外听起演唱会
湖北多地遭遇暴雨 一高校学生宿舍内居然有鱼儿出没
特斯拉或向其他制造商开放部分汽车操作系统代码 与谷歌和苹果展开竞争
米哈游《崩坏:星穹铁道》手机版全球总营收已超1亿美元 超过《原神》
印度一新郎临阵脱逃 新娘狂追到20多公里外找到新郎
路过的小学生顺手把火灭了 网友:点赞机智勇敢的小少年
环球热门:骁龙影像旗舰“百花齐放”:哪一款是你的菜?
热消息:索尼Xperia 1 V为何不用一英寸主摄?背后原因揭开
环球热消息:桌面版RTX 4060 Ti啥水平?实测表现差强人意
《英雄联盟手游今日更新4.2版本 无限火力模式正式上线
《魔戒咕噜》Steam多半差评 首日仍有800人在线受苦
高精度加法(含代码)|天天快播报
《国家水网建设规划纲要》要点速览_全球微资讯
理想L系列车型推送更新:“小主人模式”上线 通讯
【聚看点】满意率超99%!小米13 Ultra站稳高端:雷军摆庆功宴
瑞松科技因信息披露违规等违规行为被上海证券交易所采取监管措施|新动态
PC、手机生态融合!Intel、腾讯一起找到了最好的路子
AMD RX 7600公版卡小翻车:6+2针电源线插不上 全球热点
99元 联想拯救者M5鼠标上架:8000 DPI、5档调节
00后折叠男孩首次手术成功:矫正脊柱至少90度
【新要闻】真人《芭比》曝美女足部特写:暴雪高管不淡定了
神马股份: 神马股份关于向不特定对象发行可转换公司债券2023年跟踪评级结果的公告
机械硬盘可以淘汰了 梵想4TB SSD硬盘1099元(满血性能+国产闪存)|每日视点