当前位置: 首页 > news >正文

Spark Doris Connector 可以支持通过 Spark 读取 Doris 数据类型不兼容报错解决

1、版本介绍:

  • doris版本: 1.2.8
  • Spark Connector for Apache Doris 版本: spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOT
  • spark版本:spark-3.3.1

2、Spark Doris Connector

Spark Doris Connector - Apache Doris

目前最新发布版本: Release Apache Doris Spark Connector 1.3.0 Release · apache/doris-spark-connector · GitHub

2.1、Spark Doris Connector概述

Spark Doris Connector 可以支持通过 Spark 读取 Doris 中存储的数据,也支持通过Spark写入数据到Doris。

代码库地址:GitHub - apache/doris-spark-connector: Spark Connector for Apache Doris

  • 支持从Doris中读取数据
  • 支持Spark DataFrame批量/流式 写入Doris
  • 可以将Doris表映射为DataFrame或者RDD,推荐使用DataFrame
  • 支持在Doris端完成数据过滤,减少数据传输量。

2.2、Doris 和 Spark 列类型映射关系​

Doris TypeSpark Type
NULL_TYPEDataTypes.NullType
BOOLEANDataTypes.BooleanType
TINYINTDataTypes.ByteType
SMALLINTDataTypes.ShortType
INTDataTypes.IntegerType
BIGINTDataTypes.LongType
FLOATDataTypes.FloatType
DOUBLEDataTypes.DoubleType
DATEDataTypes.DateType
DATETIMEDataTypes.StringType1
DECIMALDecimalType
CHARDataTypes.StringType
LARGEINTDecimalType
VARCHARDataTypes.StringType
TIMEDataTypes.DoubleType
HLLUnsupported datatype
BitmapUnsupported datatype
  • 注:Connector 中,将DATETIME映射为String。由于Doris底层存储引擎处理逻辑,直接使用时间类型时,覆盖的时间范围无法满足需求。所以使用 String 类型直接返回对应的时间可读文本。

3、doris所有所有类型测试与报错解决方案

3.1、doris建表并插入数据语句如下:

CREATE TABLE spark_connector_test_decimal_v1 (
c1 int NOT NULL, 
c2 VARCHAR(25) NOT NULL, 
c3 VARCHAR(152),
c4 boolean,
c5 tinyint,
c6 smallint,
c7 bigint,
c8 float,
c9 double,
c10 datev2,
c11 datetime,
c12 char,
c13 largeint,
c14 varchar,
c15 decimalv3(15, 5)
)
DUPLICATE KEY(c1)
COMMENT "OLAP"
DISTRIBUTED BY HASH(c1) BUCKETS 1
PROPERTIES (
"replication_num" = "1"
);insert  into spark_connector_test_decimal_v1 values(10000,'aaa','abc',true, 100, 3000, 100000, 1234.567, 12345.678, '2022-12-01','2022-12-01 12:00:00', 'a', 200000, 'g', 1000.12345);
insert into spark_connector_test_decimal_v1 values(10000,'aaa','abc',true, 100, 3000, 100000, 1234.567, 12345.678, '2022-12-01','2022-12-01 12:00:00', 'a', 200000, 'g', 1000.12345);
insert into spark_connector_test_decimal_v1 values(10001,'aaa','abc',false, 100, 3000, 100000, 1234.567, 12345.678, '2022-12-01','2022-12-01 12:00:00', 'a', 200000, 'g', 1000.12345);
insert into spark_connector_test_decimal_v1 values(10002,'aaa','abc',True, 100, 3000, 100000, 1234.567, 12345.678, '2022-12-01','2022-12-01 12:00:00', 'a', 200000, 'g', 1000.12345);
insert into spark_connector_test_decimal_v1 values(10003,'aaa','abc',False, 100, 3000, 100000, 1234.567, 12345.678, '2022-12-01','2022-12-01 12:00:00', 'a', 200000, 'g', 1000.12345);

3.2、spark-sql中创建临时视图,读取数据

spark-sql 中建表:CREATE
TEMPORARY VIEW  spark_connector_test_decimal_v1
USING doris
OPTIONS("table.identifier"="ods.spark_connector_test_decimal_v1","fenodes"="172.xxx.99.199:8030","user"="syncxxx","password"="xxxxx"
);select * from spark_connector_test_decimal_v1;
3.2.1、报错如下:
spark-sql (default)> select * from spark_connector_test_decimal_v1;
17:42:13.979 [task-result-getter-3] ERROR org.apache.spark.scheduler.TaskSetManager - Task 0 in stage 1.0 failed 4 times; aborting job
org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 4 times, most recent failure: Lost task 0.3 in stage 1.0 (TID 7) (hadoop4 executor 1): org.apache.spark.util.TaskCompletionListenerException: nullPrevious exception in task: null
3.2.2、通过yarn页面追查错误log,具体报错如下:
Log Type: stdoutLog Upload Time: Wed Jan 10 14:54:47 +0800 2024Log Length: 200041Showing 4096 bytes of 200041 total. Click here for the full log..spark.exception.ConnectedFailedException: Connect to Doris BE{host='172.xxx.yyyy.10', port=9060}failed.at org.apache.doris.spark.backend.BackendClient.openScanner(BackendClient.java:153) ~[spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOT]at org.apache.doris.spark.rdd.ScalaValueReader.$anonfun$openResult$1(ScalaValueReader.scala:138) ~[spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOT]at org.apache.doris.spark.rdd.ScalaValueReader.org$apache$doris$spark$rdd$ScalaValueReader$$lockClient(ScalaValueReader.scala:239) ~[spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOT]at org.apache.doris.spark.rdd.ScalaValueReader.<init>(ScalaValueReader.scala:138) ~[spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOT]at org.apache.doris.spark.sql.ScalaDorisRowValueReader.<init>(ScalaDorisRowValueReader.scala:32) ~[spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOT]... 20 more
13:58:50.002 [Executor task launch worker for task 0.3 in stage 7.0 (TID 29)] ERROR org.apache.spark.executor.Executor - Exception in task 0.3 in stage 7.0 (TID 29)
org.apache.spark.util.TaskCompletionListenerException: nullPrevious exception in task: null

3.3、报错查找,定位为spark读取doris类型问题

直接查,报错,是spark-doris-connector连接器的类型转换问题:
https://github.com/apache/doris-spark-connector/issues/101
https://github.com/apache/doris-spark-connector/issues/101#issuecomment-1563765357

3.4、查看数据的该doris表底层字段列存储情况:

select * FROM information_schema.`columns` where TABLE_NAME='spark_connector_test_decimal_v1'

TABLE_CATALOG |TABLE_SCHEMA |TABLE_NAME                   |COLUMN_NAME |ORDINAL_POSITION |COLUMN_DEFAULT |IS_NULLABLE |DATA_TYPE       |CHARACTER_MAXIMUM_LENGTH |CHARACTER_OCTET_LENGTH |NUMERIC_PRECISION |NUMERIC_SCALE |DATETIME_PRECISION |CHARACTER_SET_NAME |COLLATION_NAME |COLUMN_TYPE      |COLUMN_KEY |EXTRA |PRIVILEGES |COLUMN_COMMENT |COLUMN_SIZE |DECIMAL_DIGITS |GENERATION_EXPRESSION |SRS_ID |
--------------|-------------|-----------------------------|------------|-----------------|---------------|------------|----------------|-------------------------|-----------------------|------------------|--------------|-------------------|-------------------|---------------|-----------------|-----------|------|-----------|---------------|------------|---------------|----------------------|-------|
internal      |ods       |spark_connector_test_decimal_v1 |c1          |1                |               |NO          |int             |                         |                       |10                |0             |                   |                   |               |int(11)          |DUP        |      |           |               |10          |0              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c2          |2                |               |NO          |varchar         |25                       |100                    |                  |              |                   |                   |               |varchar(25)      |           |      |           |               |25          |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1  |c3          |3                |               |YES         |varchar         |152                      |608                    |                  |              |                   |                   |               |varchar(152)     |           |      |           |               |152         |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c4          |4                |               |YES         |tinyint         |                         |                       |                  |0             |                   |                   |               |tinyint(1)       |           |      |           |               |            |0              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c5          |5                |               |YES         |tinyint         |                         |                       |3                 |0             |                   |                   |               |tinyint(4)       |           |      |           |               |3           |0              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1  |c6          |6                |               |YES         |smallint        |                         |                       |5                 |0             |                   |                   |               |smallint(6)      |           |      |           |               |5           |0              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c7          |7                |               |YES         |bigint          |                         |                       |19                |0             |                   |                   |               |bigint(20)       |           |      |           |               |19          |0              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c8          |8                |               |YES         |float           |                         |                       |7                 |7             |                   |                   |               |float            |           |      |           |               |7           |7              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c9          |9                |               |YES         |double          |                         |                       |15                |15            |                   |                   |               |double           |           |      |           |               |15          |15             |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c10         |10               |               |YES         |date            |                         |                       |                  |              |                   |                   |               |datev2           |           |      |           |               |            |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c11         |11               |               |YES         |datetime        |                         |                       |                  |              |                   |                   |               |datetime         |           |      |           |               |            |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c12         |12               |               |YES         |char            |1                        |4                      |                  |              |                   |                   |               |char(1)          |           |      |           |               |1           |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c13         |13               |               |YES         |bigint unsigned |                         |                       |39                |              |                   |                   |               |largeint         |           |      |           |               |39          |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c14         |14               |               |YES         |varchar         |1                        |4                      |                  |              |                   |                   |               |varchar(1)       |           |      |           |               |1           |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c15         |15               |               |YES         |decimal         |                         |                       |15                |5             |                   |                   |               |decimalv3(15, 5) |           |      |           |               |15          |5              |                      |       |

3.5、Dbeaver 修改doris表的字段类型:

修改doris表的字段类型:
在 1.2.0 版本之后, 开启 "light_schema_change"="true" 选项时,可以支持修改列名。alter table ods.spark_connector_test_decimal_v1 MODIFY COLUMN c15 DECIMAL(15,5);alter table ods.spark_connector_test_decimal_v1 MODIFY COLUMN c10 datetime;

在 1.2.0 版本之后, 开启 "light_schema_change"="true" 选项时,可以支持修改列名。

建表成功后,即可对列名进行修改,语法:

alter table ods.spark_connector_test_decimal_v1 RENAME COLUMN c10 c100; insert into spark_connector_test_decimal_v1 values(10003,'aaa','abc',False, 100, 3000, 100000, 1234.567, 12345.678, '2022-12-01','2022-12-01 12:00:00', 'a', 200000, 'g', 1000.12345);

3.6、修改字段类型的后doris表字的column_type取值

select * FROM information_schema.`columns` where TABLE_NAME='spark_connector_test_decimal_v1'TABLE_CATALOG |TABLE_SCHEMA |TABLE_NAME                      |COLUMN_NAME |ORDINAL_POSITION |COLUMN_DEFAULT |IS_NULLABLE |DATA_TYPE       |CHARACTER_MAXIMUM_LENGTH |CHARACTER_OCTET_LENGTH |NUMERIC_PRECISION |NUMERIC_SCALE |DATETIME_PRECISION |CHARACTER_SET_NAME |COLLATION_NAME |COLUMN_TYPE   |COLUMN_KEY |EXTRA |PRIVILEGES |COLUMN_COMMENT |COLUMN_SIZE |DECIMAL_DIGITS |GENERATION_EXPRESSION |SRS_ID |
--------------|-------------|--------------------------------|------------|-----------------|---------------|------------|----------------|-------------------------|-----------------------|------------------|--------------|-------------------|-------------------|---------------|--------------|-----------|------|-----------|---------------|------------|---------------|----------------------|-------|
internal      |ods       |spark_connector_test_decimal_v1 |c1          |1                |               |NO          |int             |                         |                       |10                |0             |                   |                   |               |int(11)       |DUP        |      |           |               |10          |0              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c2          |2                |               |NO          |varchar         |25                       |100                    |                  |              |                   |                   |               |varchar(25)   |           |      |           |               |25          |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c3          |3                |               |YES         |varchar         |152                      |608                    |                  |              |                   |                   |               |varchar(152)  |           |      |           |               |152         |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c4          |4                |               |YES         |tinyint         |                         |                       |                  |0             |                   |                   |               |tinyint(1)    |           |      |           |               |            |0              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c5          |5                |               |YES         |tinyint         |                         |                       |3                 |0             |                   |                   |               |tinyint(4)    |           |      |           |               |3           |0              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c6          |6                |               |YES         |smallint        |                         |                       |5                 |0             |                   |                   |               |smallint(6)   |           |      |           |               |5           |0              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c7          |7                |               |YES         |bigint          |                         |                       |19                |0             |                   |                   |               |bigint(20)    |           |      |           |               |19          |0              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c8          |8                |               |YES         |float           |                         |                       |7                 |7             |                   |                   |               |float         |           |      |           |               |7           |7              |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c9          |9                |               |YES         |double          |                         |                       |15                |15            |                   |                   |               |double        |           |      |           |               |15          |15             |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c10         |10               |               |YES         |datetime        |                         |                       |                  |              |                   |                   |               |datetime      |           |      |           |               |            |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c11         |11               |               |YES         |datetime        |                         |                       |                  |              |                   |                   |               |datetime      |           |      |           |               |            |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c12         |12               |               |YES         |char            |1                        |4                      |                  |              |                   |                   |               |char(1)       |           |      |           |               |1           |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c13         |13               |               |YES         |bigint unsigned |                         |                       |39                |              |                   |                   |               |largeint      |           |      |           |               |39          |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c14         |14               |               |YES         |varchar         |1                        |4                      |                  |              |                   |                   |               |varchar(1)    |           |      |           |               |1           |               |                      |       |
internal      |ods       |spark_connector_test_decimal_v1 |c15         |15               |               |YES         |decimal         |                         |                       |15                |5             |                   |                   |               |decimal(15,5) |           |      |           |               |15          |5              |                      |       |

3.7、删除视图成功后,再次创建视图,即可查询成功

修改表类型之后,需要删除视图,重新建视图,否则直接查,会报如下错误:

Caused by: java.lang.RuntimeException: Error while encoding: java.lang.RuntimeException: java.lang.String is not a valid external type for schema of date

spark-sql (default)> drop view spark_connector_test_decimal_v1;
Response code
Time taken: 0.039 secondsspark-sql (default)> select * from spark_connector_test_decimal_v1;
c1    c2    c3    c4    c5    c6    c7    c8    c9    c10    c11    c12    c13    c14    c15
10000    aaa    abc    true    100    3000    100000    1234.567    12345.678    2022-12-01 00:00:00    2022-12-01 12:00:00    a    200000    g    1000.12345
10001    aaa    abc    false    100    3000    100000    1234.567    12345.678    2022-12-01 00:00:00    2022-12-01 12:00:00    a    200000    g    1000.12345
10002    aaa    abc    true    100    3000    100000    1234.567    12345.678    2022-12-01 00:00:00    2022-12-01 12:00:00    a    200000    g    1000.12345
10003    aaa    abc    false    100    3000    100000    1234.567    12345.678    2022-12-01 00:00:00    2022-12-01 12:00:00    a    200000    g    1000.12345
Time taken: 0.233 seconds, Fetched 4 row(s)
spark-sql (default)> 

参考:

Spark Doris Connector - Apache Doris

Release Apache Doris Spark Connector 1.3.0 Release · apache/doris-spark-connector · GitHub

[Bug] ConnectedFailedException: Connect to Doris BE{host='xxx', port=9060}failed · Issue #101 · apache/doris-spark-connector · GitHub

相关文章:

Spark Doris Connector 可以支持通过 Spark 读取 Doris 数据类型不兼容报错解决

1、版本介绍&#xff1a; doris版本&#xff1a; 1.2.8Spark Connector for Apache Doris 版本&#xff1a; spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOTspark版本&#xff1a;spark-3.3.1 2、Spark Doris Connector Spark Doris Connector - Apache Doris 目…...

深入理解 go chan

go 里面&#xff0c;在实际程序运行的过程中&#xff0c;往往会有很多协程在执行&#xff0c;通过启动多个协程的方式&#xff0c;我们可以更高效地利用系统资源。 而不同协程之间往往需要进行通信&#xff0c;不同于以往多线程程序的那种通信方式&#xff0c;在 go 里面是通过…...

java+vue基于Spring Boot的渔船出海及海货统计系统

该渔船出海及海货统计系统采用B/S架构、前后端分离进行设计&#xff0c;并采用java语言以及springboot框架进行开发。该系统主要设计并完成了管理过程中的用户注册登录、个人信息修改、用户信息、渔船信息、渔船航班、海货价格、渔船海货、非法举报、渔船黑名单等功能。该系统操…...

Linux第25步_在虚拟机中备份“ST官方的TF-A源码”

TF-A是ARM公司提供的&#xff0c;ST公司通过修改它&#xff0c;做了一个自己的TF-A代码。因为在后期开发中&#xff0c;若硬件被改变了&#xff0c;我们需要通过修改"ST官方的TF-A源码"就可以自己的TF-A代码了。为了防止源文件被误改了&#xff0c;我们需要将"S…...

统计学-R语言-4.1

文章目录 前言编写R函数图形的控制和布局par函数layout函数 练习 前言 安装完R软件之后就可以对其进行代码的编写了。 编写R函数 如果对数据分析有些特殊需要&#xff0c;已有的R包或函数不能满足&#xff0c;可以在R中编写自己的函数。函数的定义格式如下所示&#xff1a; …...

C++(1) —— 基础语法入门

目录 一、C初识 1.1 第一个C程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 二、数据类型 2.1 整型 2.2 sizeof 关键字 2.3 实型&#xff08;浮点型&#xff09; 2.4 字符型 2.5 转义字符 2.6 字符串型 2.7 布尔类型 bool 2.8 数据的输入 三…...

构建基于RHEL8系列(CentOS8,AlmaLinux8,RockyLinux8等)的支持63个常见模块的PHP8.1.20的RPM包

本文适用&#xff1a;rhel8系列&#xff0c;或同类系统(CentOS8,AlmaLinux8,RockyLinux8等) 文档形成时期&#xff1a;2023年 因系统版本不同&#xff0c;构建部署应略有差异&#xff0c;但本文未做细分&#xff0c;对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力…...

Vue-插槽(Slots)

1. 介绍 在Vue.js中&#xff0c;插槽是一种强大的功能&#xff0c;它允许你创建可重用的模板&#xff0c;并在使用该模板的多个地方插入自定义内容。 插槽为你提供了一种方式&#xff0c;可以在父组件中定义一些“插槽”&#xff0c;然后在子组件中使用这些插槽&#xff0c;插…...

新火种AI|GPT-5前瞻!GPT-5将具备哪些新能力?

作者&#xff1a;小岩 编辑&#xff1a;彩云 Sam Altman在整个AI领域&#xff0c;乃至整个科技领域都被看作是极具影响力的存在&#xff0c;而2023年OpenAI无限反转的宫斗事件更是让Sam Altman刷足了存在感&#xff0c;他甚至被《时代》杂志评为“2023年度CEO”。 也正因此&…...

安防视频监控系统EasyCVR设备分组中在线/离线数量统计的开发与实现

安防视频监控EasyCVR系统具备较强的兼容性&#xff0c;它可以支持国标GB28181、RTSP/Onvif、RTMP&#xff0c;以及厂家的私有协议与SDK&#xff0c;如&#xff1a;海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。EasyCVR平台可覆盖多类型的设备接入&am…...

spring cloud之集成sentinel

写在前面 源码 。 本文一起看下spring cloud的sentinel组件的使用。 1&#xff1a;准备 1.1&#xff1a;理论 对于一个系统来说&#xff0c;最重要的就是高可用&#xff0c;那么如何实现高可用呢&#xff1f;你可能会说&#xff0c;集群部署不就可以了&#xff0c;但事实并…...

让车辆做到“耳听八方”,毫米波雷达芯片与系统设计

摘要: 毫米波雷达,是指工作在毫米波波段(一般为30~300GHz频域,波长1~10mm)探测的雷达。毫米波雷达体积小、质量轻、空间分辨率高,穿透“雾烟灰”的能力强,还具备全天候全天时工作的优势。在智能网联汽车体系中,毫米波雷达是系统感知层不可或缺的重要硬件,能让智能驾…...

Python如何实现数据驱动的接口自动化测试

大家在接口测试的过程中&#xff0c;很多时候会用到对CSV的读取操作&#xff0c;本文主要说明Python3对CSV的写入和读取。下面话不多说了&#xff0c;来一起看看详细的介绍吧。 1、需求 某API&#xff0c;GET方法&#xff0c;token,mobile,email三个参数 token为必填项mobil…...

高级分布式系统-第15讲 分布式机器学习--联邦学习

高级分布式系统汇总&#xff1a;高级分布式系统目录汇总-CSDN博客 联邦学习 两种常见的架构&#xff1a;客户-服务器架构和对等网络架构 联邦学习在传统的分布式机器学习基础上的变化。 传统的分布式机器学习&#xff1a;在数据中心或计算集群中使用并行训练&#xff0c;因为…...

小程序基础学习(事件处理)

原理&#xff1a;组件内部设置点击事件&#xff0c;然后冒泡到页面捕获点击事件 在组件内部设置点击事件 处理点击事件&#xff0c;并告诉页面 页面捕获点击事件 页面处理点击事件 组件代码 <!--components/my-info/my-info.wxml--> <view class"title"…...

网络协议与攻击模拟_01winshark工具简介

一、TCP/IP协议簇 网络接口层&#xff08;没有特定的协议&#xff09; 物理层&#xff1a;PPPOE宽带拨号&#xff08;应用场景&#xff1a;宽带拨号&#xff0c;运营商切网过来没有固定IP就需要拨号&#xff0c;家庭带宽一般都采用的是拨号方式&#xff09;数据链路层网络层…...

【linux学习笔记】网络

目录 【linux学习笔记】网络检查、监测网络ping-向网络主机发送特殊数据包traceroute-跟踪网络数据包的传输路径netstat-检查网络设置及相关统计数据 通过网络传输文件ftp 【linux学习笔记】网络 检查、监测网络 ping-向网络主机发送特殊数据包 最基本的网络连接命令就是pin…...

JUC-线程中断机制和LockSupport

线程中断机制 概念 java提供了一种用于停止线程的协商机制-中断。称为中断标识协商机制。 常用API public void interrupt() 仅仅让线程的中断标志位设置为true。不进行其他操作。public boolean isInterrupted() 获取中断标志位的状态。public static boolean interrupted…...

哈希表与哈希算法(Python系列30)

在讲哈希表数据结构和哈希算法之前&#xff0c;我想先刨析一下数组和python中的列表 首先来讲一下数组&#xff0c;我想在这提出一个疑问&#xff1a; 为什么数组通过索引查询数据的时间复杂度为O(1)&#xff0c;也就是不管数组有多大&#xff0c;算法的执行时间都是不变的。…...

『 C++ 』AVL树详解 ( 万字 )

&#x1f988;STL容器类型 在STL的容器中,分为几种容器: 序列式容器&#xff08;Sequence Containers&#xff09;: 这些容器以线性顺序存储元素&#xff0c;保留了元素的插入顺序。 支持随机访问&#xff0c;因此可以使用索引或迭代器快速访问任何位置的元素。 主要的序列式…...

温度场与锂枝晶生长的相场电势场及浓度场耦合仿真研究

comsol 锂枝晶仿真——耦合温度场 在相场&#xff0c;电势场和浓度场的基础上耦合了温度场&#xff0c;可以看不同温度对锂枝晶的影响指尖的金属晶体在电解液中野蛮生长&#xff0c;就像寒冬玻璃上的冰花。当我们盯着显微镜观察锂枝晶时&#xff0c;常忽略了一个重要变量——温…...

从 Agent 到 Skill:揭秘 AI 产品经理进阶的真正关键!

文章深入探讨了 AI 产品经理应如何理解和应用 Agent 与 Skill。文章指出&#xff0c;当前许多 AI 产品经理将注意力过度集中于 Agent&#xff0c;而忽略了 Skill 的重要性。实际上&#xff0c;Skill 是定义 Agent 在具体任务中行为、标准和质量的关键。文章详细阐述了 Skill 的…...

终极TypeScript类型安全指南:LiveTerm接口定义与类型检查最佳实践

终极TypeScript类型安全指南&#xff1a;LiveTerm接口定义与类型检查最佳实践 【免费下载链接】LiveTerm &#x1f4bb; Build terminal styled websites in minutes! 项目地址: https://gitcode.com/gh_mirrors/li/LiveTerm LiveTerm是一个基于Next.js的终端风格网站构…...

OpenMS实战指南:如何用开源工具解决质谱数据分析三大难题

OpenMS实战指南&#xff1a;如何用开源工具解决质谱数据分析三大难题 【免费下载链接】OpenMS The codebase of the OpenMS project 项目地址: https://gitcode.com/gh_mirrors/op/OpenMS 你是否正在为复杂的质谱数据分析而烦恼&#xff1f;面对海量的LC-MS数据&#xf…...

资深大模型工程师详细讲解:RAG召回率优化三重微调实战

✅ 一、核心策略再解构&#xff1a;从“三层次”到“五维协同链路”原有“数据-索引-查询”三层结构非常精准&#xff0c;但为了更贴近企业级复杂场景&#xff0c;我们进一步抽象为 五维协同链路&#xff1a;维度关键目标是否可微调微调切入点1. 数据生成质量构建高质量正负样本…...

关键词点击排名工具可以提高网站流量吗_关键词点击排名工具分析结果如何应用到SEO优化

关键词点击排名工具可以提高网站流量吗 在现代数字营销中&#xff0c;关键词点击排名工具已经成为许多网站和SEO专家的必备工具。它们提供了有关关键词的搜索量、竞争程度等重要数据&#xff0c;有助于网站优化和流量提升。但究竟这些工具能否真正提高网站流量&#xff0c;我们…...

AI辅助开发C语言项目,让快马平台智能生成学生成绩管理系统

最近尝试用AI辅助开发一个C语言的学生成绩管理系统&#xff0c;整个过程比想象中顺利很多。这个项目虽然不算复杂&#xff0c;但涉及模块化设计、文件操作、指针管理等知识点&#xff0c;正好可以验证AI在辅助开发中的实际效果。下面分享我的具体实践过程&#xff1a; 需求分析…...

BetterNCM安装器终极指南:3分钟搞定网易云音乐插件管理

BetterNCM安装器终极指南&#xff1a;3分钟搞定网易云音乐插件管理 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer BetterNCM安装器是一款专为PC版网易云音乐用户设计的强大插件管理器…...

解锁流媒体世界:如何用N_m3u8DL-RE轻松下载加密视频与直播内容

解锁流媒体世界&#xff1a;如何用N_m3u8DL-RE轻松下载加密视频与直播内容 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8…...

D3KeyHelper深度评测:5大实战技巧提升暗黑破坏神3操作效率

D3KeyHelper深度评测&#xff1a;5大实战技巧提升暗黑破坏神3操作效率 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑破坏神3中复杂的技能…...