2. Doris数据导入与导出

一. Doris数据导入

导入方式使用场景支持的文件格式导入模式
Stream Load导入本地文件或者应用程序写入csv、json、parquet、orc同步
Broker Load从对象存储、HDFS等导入csv、json、parquet、orc异步
Routine Load从kakfa实时导入csv、json异步

1. Stream Load

基本原理

在使用 Stream Load 时,需要通过 HTTP 协议发起导入作业给 FE 节点,FE 会以轮询方式,重定向(redirect)请求给一个 BE 节点以达到负载均衡的效果。也可以直接发送 HTTP 请求作业给指定的 BE 节点。在 Stream Load 中,Doris 会选定一个节点作为 Coordinator 节点。Coordinator 节点负责接受数据并分发数据到其他节点上。

下图展示了 Stream Load 的主要流程:
在这里插入图片描述

  1. Client 向 FE 提交 Stream Load 导入作业请求。
  2. FE 会轮询选择一台 BE 作为 Coordinator 节点,负责导入作业调度,然后返回给 Client 一个 HTTP 重定向。
  3. Client 连接 Coordinator BE 节点,提交导入请求。
  4. Coordinator BE 会分发数据给相应 BE 节点,导入完成后会返回导入结果给 Client。
  5. Client 也可以直接通过指定 BE 节点作为 Coordinator,直接分发导入作业。
数据导入
  1. 本次导入文件为CSV格式,共9个字段,文件部分内容如下:

    [root@hadoop3 dns_data]# head -5 input.csv
    85.0.144.47,V2-vOd.kwAiCDn.cOM.,20220729005737,106.120.158.110,0,1,v2-vod.kwaicdn.com.w.cdngslb.cOM.,"",123.59.182.42
    111.0.40.49,apPle.COm.,20220729005737,17.253.144.10,0,1,"","",123.59.182.42
    211.0.172.212,SzMINORSHORT.WEIxin.Qq.com.,20220729005737,157.148.59.242,0,1,"","",123.59.182.42
    111.0.68.81,WWW.BILIbIlI.CoM.,20220729005737,61.156.196.6,0,1,a.w.bilicdn1.CoM.,"",123.59.182.42
    211.0.21.16,www.wAsU.cn.,20220729005737,103.15.99.89,0,1,www.wasu.cn.w.kunlunpi.com.,"",123.59.182.42
    
  2. 在Doris创建目标表

    mysql> use testdb;
    Database changed
    mysql> create table dns_data(
    	    client_ip varchar(1000),
    	    domain varchar(1000),
    	    time varchar(1000),
    	    target_ip varchar(1000),
    	    rcode varchar(1000),
    	    query_type varchar(1000),
    	    authority_record varchar(10000),
    	    add_msg varchar(1000),
    	    dns_ip varchar(1000)
        ) DUPLICATE KEY(client_ip, domain, time, target_ip)
        DISTRIBUTED BY HASH(client_ip) BUCKETS 20;
    
  3. 启动导入作业

    # 本次导入的数据量为500w
    [root@hadoop3 dns_data]# wc -l sample.csv
    5000000 sample.csv
    
    [root@hadoop3 dns_data]# curl --location-trusted -u admin:admin123 \
        -H "Expect:100-continue" \
        -H "column_separator:," \
        -H "columns:client_ip,domain,time,target_ip,rcode,query_type,authority_record,add_msg,dns_ip" \
        -T sample.csv \
        -XPUT http://10.0.49.2:8050/api/testdb/dns_data/_stream_load
    
  4. 查看导入结果

    mysql> select count(*) from dns_data;
    +----------+
    | count(*) |
    +----------+
    |  5000000 |
    +----------+
    1 row in set (0.32 sec)
    

2. Broker Load

基本原理

用户在提交导入任务后,FE 会生成对应的 Plan 并根据目前 BE 的个数和文件的大小,将 Plan 分给 多个 BE 执行,每个 BE 执行一部分导入数据。

BE 在执行的过程中会从 Broker 拉取数据,在对数据 transform 之后将数据导入系统。所有 BE 均完成导入,由 FE 最终决定导入是否成功。

在这里插入图片描述
从上图中可以看到,BE 会依赖 Broker 进程来读取相应远程存储系统的数据。之所以引入 Broker 进程,主要是用来针对不同的远程存储系统,用户可以按照 Broker 进程的标准开发其相应的 Broker 进程,Broker 进程可以使用 Java 程序开发,更好的兼容大数据生态中的各类存储系统。由于 broker 进程和 BE 进程的分离,也确保了两个进程的错误隔离,提升 BE 的稳定性。

数据导入
  1. 清理dns_data表的数据,并将要导入的文件上传到HDFS

    mysql> truncate table dns_data;
    Query OK, 0 rows affected (4.32 sec)
    # 本次待导入的数据共计1.2亿
    [root@hadoop3 dns_data]# wc -l input.csv
    121936657 input.csv
    
    [root@hadoop3 dns_data]# hdfs dfs -put input.csv /test
    
  2. 启动导入作业

    mysql> LOAD LABEL hdfs_load_2025_01_13
    	(
    	    DATA INFILE("hdfs://10.0.49.4:9000/test/input.csv")
    	    INTO TABLE dns_data
    	    COLUMNS TERMINATED BY ","
    	    FORMAT AS "CSV"
    	    (client_ip,domain,time,target_ip,rcode,query_type,authority_record,add_msg,dns_ip)
    	)
    	with HDFS
    	(
    	    "fs.defaultFS" = "hdfs://10.0.49.4:9000",
    	    "hadoop.username" = "root"
    	)
    	PROPERTIES
    	(
    	    "timeout" = "3600"
    	);
    
  3. 查看导入任务

    mysql> show load;
    +-------+----------------------+---------+-------------+--------+---------+------------------------------------------------------------------------------+----------+---------------------+---------------------+---------------------+---------------------+----------------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+--------------+-------+---------+
    | JobId | Label                | State   | Progress    | Type   | EtlInfo | TaskInfo                                                                     | ErrorMsg | CreateTime          | EtlStartTime        | EtlFinishTime       | LoadStartTime       | LoadFinishTime | URL  | JobDetails                                                                                                                                                                                                                                                | TransactionId | ErrorTablets | User  | Comment |
    +-------+----------------------+---------+-------------+--------+---------+------------------------------------------------------------------------------+----------+---------------------+---------------------+---------------------+---------------------+----------------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+--------------+-------+---------+
    | 16265 | hdfs_load_2025_01_13 | LOADING | 0.00% (0/3) | BROKER | NULL    | cluster:hdfs_cluster; timeout(s):3600; max_filter_ratio:0.0; priority:NORMAL | NULL     | 2025-01-13 07:46:53 | 2025-01-13 07:47:20 | 2025-01-13 07:47:20 | 2025-01-13 07:47:20 | NULL           | NULL | {"Unfinished backends":{"58e66f688844d74-afb60b4ad54e4987":[10040,10059,10078]},"ScannedRows":3255264,"TaskNumber":1,"LoadBytes":546907629,"All backends":{"58e66f688844d74-afb60b4ad54e4987":[10040,10059,10078]},"FileNumber":1,"FileSize":16123485004} | 2290          | {}           | admin |         |
    +-------+----------------------+---------+-------------+--------+---------+------------------------------------------------------------------------------+----------+---------------------+---------------------+---------------------+---------------------+----------------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+--------------+-------+---------+
    1 row in set (0.12 sec)
    
  4. 查看导入结果

    mysql> select count(*) from dns_data;
    +----------+
    | count(*) |
    +----------+
    |121936657 |
    +----------+
    1 row in set (0.04 sec)
    

3. Routine Load

基本原理

Routine Load 会持续消费 Kafka Topic 中的数据,写入 Doris 中。
在 Doris 中,创建 Routine Load 作业后会生成一个常驻的导入作业,包括若干个导入任务:

  • 导入作业(load job):一个 Routine Load Job 是一个常驻的导入作业,会持续不断地消费数据源中的数据。
  • 导入任务(load task):一个导入作业会被拆解成若干个导入任务进行实际消费,每个任务都是一个独立的事务。

Routine Load 的导入具体流程如下图展示:
在这里插入图片描述

  1. Client 向 FE 提交创建 Routine Load 作业请求,FE 通过 Routine Load Manager 生成一个常驻的导入作业(Routine Load Job)。

  2. FE 通过Job Scheduler 将Routine Load Job 拆分成若干个 Routine Load Task,由 Task Scheduler 进行调度,下发到 BE 节点。

  3. 在 BE 上,一个 Routine Load Task 导入完成后向 FE 提交事务,并更新 Job 的元数据。

  4. 一个 Routine Load Task 提交后,会继续生成新的 Task,或对超时的 Task 进行重试。

  5. 新生成的 Routine Load Task 由 Task Scheduler 继续调度,不断循环。

数据导入
  1. 清理dns_data表的数据

    mysql> truncate table dns_data;
    Query OK, 0 rows affected (4.32 sec)
    
  2. 在kafka中创建topic

    [root@hadoop1 kafka-3.6.0]# bin/kafka-topics.sh --create --bootstrap-server 10.0.49.4:9092 --replication-factor 3 --partitions 3 --topic test
    
  3. 启动导入作业

    mysql> CREATE ROUTINE LOAD testdb.example_routine_load_csv ON dns_data
    COLUMNS TERMINATED BY ",",
    COLUMNS(client_ip, domain, time, target_ip, rcode, query_type,authority_record,add_msg,dns_ip)
    FROM KAFKA(
        "kafka_broker_list" = "10.0.49.4:9092",
        "kafka_topic" = "test",
        "property.kafka_default_offsets" = "OFFSET_BEGINNING"
    );
    
  4. 向kafka topic中注入测试数据(自己写程序实现,很简单)

    # 导入数据500w
    [root@hadoop3 dns_data]# wc -l sample.csv
    5000000 sample.csv
    
    # 调用程序向topic test写入测试数据
    [root@hadoop3 dns_data]# java -jar mock_data.jar 10.0.49.2:9092,10.0.49.3:9092,10.0.49.4:9092 test  sample.csv
    
  5. 查看导入任务

    mysql> show routine load\G;
    *************************** 1. row ***************************
                      Id: 16361
                    Name: example_routine_load_csv
              CreateTime: 2025-01-13 08:17:23
               PauseTime: NULL
                 EndTime: NULL
                  DbName: default_cluster:testdb
               TableName: dns_data
            IsMultiTable: false
                   State: RUNNING
          DataSourceType: KAFKA
          CurrentTaskNum: 3
           JobProperties: {"max_batch_rows":"200000","timezone":"Europe/London","send_batch_parallelism":"1","load_to_single_tablet":"false","column_separator":"','","line_delimiter":"\n","current_concurrent_number":"3","delete":"*","partial_columns":"false","merge_type":"APPEND","exec_mem_limit":"2147483648","strict_mode":"false","jsonpaths":"","max_batch_interval":"10","max_batch_size":"104857600","fuzzy_parse":"false","partitions":"*","columnToColumnExpr":"client_ip,domain,time,target_ip,rcode,query_type,authority_record,add_msg,dns_ip","whereExpr":"*","desired_concurrent_number":"5","precedingFilter":"*","format":"csv","max_error_number":"0","max_filter_ratio":"1.0","json_root":"","strip_outer_array":"false","num_as_string":"false"}
    DataSourceProperties: {"topic":"test","currentKafkaPartitions":"0,1,2","brokerList":"10.0.49.4:9092"}
        CustomProperties: {"kafka_default_offsets":"OFFSET_BEGINNING","group.id":"example_routine_load_csv_df6ba034-d178-4d05-bfb1-ad3635da7231"}
               Statistic: {"receivedBytes":0,"runningTxns":[2339,2340,2341],"errorRows":0,"committedTaskNum":3,"loadedRows":0,"loadRowsRate":0,"abortedTaskNum":0,"errorRowsAfterResumed":0,"totalRows":0,"unselectedRows":0,"receivedBytesRate":0,"taskExecuteTimeMs":30309}
                Progress: {"0":"OFFSET_BEGINNING","1":"OFFSET_BEGINNING","2":"OFFSET_BEGINNING"}
                     Lag: {"0":2,"1":2,"2":2}
    ReasonOfStateChanged:
            ErrorLogUrls:
                OtherMsg:
                    User: admin
                 Comment:
    1 row in set (0.07 sec)
    
    ERROR:
    No query specified
    
  6. 查看导入结果

    mysql> select count(*) from dns_data;
    +----------+
    | count(*) |
    +----------+
    |  5000000 |
    +----------+
    1 row in set (0.04 sec)
    

二. Doris数据导出

SELECT INTO OUTFILEEXPORT
同步/异步同步异步(提交 EXPORT 任务后通过 SHOW EXPORT 命令查看任务进度)
支持任意 SQL支持不支持
导出指定分区支持支持
导出指定 Tablets支持不支持
并发导出支持且并发高(但取决于 SQL 语句是否有 ORDER BY 等需要单机处理的算子)支持且并发高(支持 Tablet 粒度的并发导出)
支持导出的数据格式Parquet、ORC、CSVParquet、ORC、CSV
是否支持导出外表支持部分支持
是否支持导出 View支持支持
支持的导出位置S3、HDFSS3、HDFS

SELECT INTO OUTFILE
适用于以下场景:

  • 导出数据需要经过复杂计算逻辑的,如过滤、聚合、关联等。
  • 适合执行同步任务的场景。

EXPORT
适用于以下场景:

  • 大数据量的单表导出、仅需简单的过滤条件。
  • 需要异步提交任务的场景。

1. SELECT INTO OUTFILE

  1. 查看待导出表的数据

    mysql> select count(*) from dns_data;
    +----------+
    | count(*) |
    +----------+
    |  5000000 |
    +----------+
    1 row in set (0.04 sec)
    
  2. 启动导出作业

    mysql> SELECT * FROM dns_data
    INTO OUTFILE "hdfs://10.0.49.4:9000/doris/result_"
    FORMAT AS CSV
    PROPERTIES
    (
        "fs.defaultFS" = "hdfs://10.0.49.4:9000",
        "hadoop.username" = "root",
    	"column_separator" = ","
    );
    
    +------------+-----------+-----------+-----------------------------------------------------------------------+
    | FileNumber | TotalRows | FileSize  | URL                                                                   |
    +------------+-----------+-----------+-----------------------------------------------------------------------+
    |          1 |   5000000 | 660546528 | hdfs://10.0.49.4:9000/doris/result_c1f1268d26b547f6-a906f9570e7bfa04_ |
    +------------+-----------+-----------+-----------------------------------------------------------------------+
    1 row in set (23.04 sec)
    
    
  3. 查看导出结果

    [root@hadoop3 dns_data]# hdfs dfs -get /doris/result_c1f1268d26b547f6-a906f9570e7bfa04_0.csv  a.csv
    [root@hadoop3 dns_data]# wc -l a.csv
    5000000 a.csv
    

2. EXPORT

  1. 查看待导出表的数据

    mysql> select count(*) from dns_data;
    +----------+
    | count(*) |
    +----------+
    |  5000000 |
    +----------+
    1 row in set (0.04 sec)
    
  2. 启动导出作业

    mysql> EXPORT TABLE dns_data
    TO "hdfs://10.0.49.4:9000/doris/export_" 
    PROPERTIES
    (
        "line_delimiter" = "\n",
    	"column_separator" = ","
    )
    with HDFS ("fs.defaultFS"="hdfs://10.0.49.4:9000","hadoop.username" = "root");
    
  3. 查看导出作业

    mysql> show export \G;
    *************************** 1. row ***************************
          JobId: 15099
          Label: export_39314fdb-3962-40a5-aefa-463a56b33675
          State: CANCELLED
       Progress: 0%
       TaskInfo: {"partitions":["*"],"max_file_size":"","delete_existing_files":"","columns":"","format":"csv","broker":"HDFS","column_separator":"\t","line_delimiter":",","db":"default_cluster:testdb","tbl":"tbl","tablet_num":0}
           Path: hdfs://doris/export/export_
     CreateTime: 2025-01-12 15:44:57
      StartTime: 2025-01-12 15:45:21
     FinishTime: 2025-01-12 15:45:51
        Timeout: 7200
       ErrorMsg: type:RUN_FAIL; msg:errCode = 2, detailMessage = (10.0.49.2)[INTERNAL_ERROR]create dir failed. (BE: 10.0.49.2) namenode: hdfs://hadoop1:9000 path: hdfs://doris/export, err: (22), Invalid argument), reason: IllegalArgumentException: Wrong FS: hdfs://doris/export, expected: hdfs://hadoop1:9000
    OutfileInfo: NULL
    *************************** 2. row ***************************
          JobId: 15100
          Label: export_7e593913-3369-4138-91b1-b219d011e55c
          State: CANCELLED
       Progress: 0%
       TaskInfo: {"partitions":["*"],"max_file_size":"","delete_existing_files":"","columns":"","format":"csv","broker":"HDFS","column_separator":"\t","line_delimiter":",","db":"default_cluster:testdb","tbl":"tbl","tablet_num":0}
           Path: hdfs://doris/export/export_
     CreateTime: 2025-01-12 15:49:12
      StartTime: 2025-01-12 15:49:21
     FinishTime: 2025-01-12 15:49:49
        Timeout: 7200
       ErrorMsg: type:RUN_FAIL; msg:errCode = 2, detailMessage = (10.0.49.4)[INTERNAL_ERROR]create dir failed. (BE: 10.0.49.4) namenode: hdfs://10.0.49.4:9000 path: hdfs://doris/export, err: (22), Invalid argument), reason: IllegalArgumentException: Wrong FS: hdfs://doris/export, expected: hdfs://10.0.49.4:9000
    OutfileInfo: NULL
    *************************** 3. row ***************************
    ...
    
  4. 查看导出结果

    [root@hadoop3 dns_data]# hdfs dfs -ls /doris
    Found 1 items
    -rw-r--r--   3 root supergroup  660546528 2025-01-13 08:47 /doris/export_27d22e086e5e4ba8-b7d27eb2428844e2_0.csv
    [root@hadoop3 dns_data]# hdfs dfs -get /doris/export_27d22e086e5e4ba8-b7d27eb2428844e2_0.csv a.csv
    [root@hadoop3 dns_data]# wc -l a.csv
    5000000 a.csv
    

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

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

相关文章

30_Redis哨兵模式

在Redis主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中,不仅需要人为干预,而且还会造成一段时间内服务器处于不可用状态,同时数据安全性也得不到保障,因此主从模式的可用性…

把PX4及子仓库添加到自己的gitee

导入主仓库 此处以导入PX4为例 先用gitee导入仓库然后clone gitee仓库先checkout到v1.11,git submodule update --init --recursive,确保可以make之后再新建branchgit checkout -b my1.11.0按照提示连接到origin改代码然后三件套就行了git add ./*git …

解决:ubuntu22.04中IsaacGymEnv保存视频报错的问题

1. IsaacGymEnvs项目介绍 IsaacGymEnvs:基于NVIDIA Isaac Gym的高效机器人训练环境 IsaacGymEnvs 是一个基于 NVIDIA Isaac Gym 的开源 Python 环境库,专为机器人训练提供高效的仿真环境。Isaac Gym 是由 NVIDIA 开发的一个高性能物理仿真引擎&#xf…

ELK日志分析实战宝典之ElasticSearch从入门到服务器部署与应用

目录 ELK工作原理展示图 一、ElasticSearch介绍(数据搜索和分析) 1.1、特点 1.2、数据组织方式 1.3、特点和优势 1.3.1、分布式架构 1.3.2、强大的搜索功能 1.3.3、数据处理与分析 1.3.4、多数据类型支持 1.3.5、易用性与生态系统 1.3.6、高性…

android 自定义SwitchCompat,Radiobutton,SeekBar样式

纯代码的笔记记录。 自定义SwitchCompat按钮的样式 先自定义中间的圆球switch_thumb_bg.xml <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"android:shape"oval&q…

【学习路线】Python自动化运维 详细知识点学习路径(附学习资源)

学习本路线内容之前&#xff0c;请先学习Python的基础知识 其他路线&#xff1a; Python基础 >> Python进阶 >> Python爬虫 >> Python数据分析&#xff08;数据科学&#xff09; >> Python 算法&#xff08;人工智能&#xff09; >> Pyth…

【URDF和SDF区别】

URDF&#xff08;Unified Robot Description Format&#xff0c;统一机器人描述格式&#xff09;和SDF&#xff08;Simulation Description Format&#xff0c;仿真描述格式&#xff09;是两种常用的机器人和仿真环境建模格式。虽然它们在许多方面有相似之处&#xff0c;但也存…

【翻译】2025年华数杯国际赛数学建模题目+翻译pdf自取

保存至本地网盘 链接&#xff1a;https://pan.quark.cn/s/f82a1fa7ed87 提取码&#xff1a;6UUw 2025年“华数杯”国际大学生数学建模竞赛比赛时间于2025年1月11日&#xff08;周六&#xff09;06:00开始&#xff0c;至1月15日&#xff08;周三&#xff09;09:00结束&#xff…

springboot vue uniapp 仿小红书 1:1 还原 (含源码演示)

线上预览: 移动端 http://8.146.211.120:8081/ 管理端 http://8.146.211.120:8088/ 小红书凭借优秀的产品体验 和超高人气 目前成为笔记类产品佼佼者 此项目将详细介绍如何使用Vue.js和Spring Boot 集合uniapp 开发一个仿小红书应用&#xff0c;凭借uniapp 可以在h5 小程序 app…

VS2015 + OpenCV + OnnxRuntime-Cpp + YOLOv8 部署

近期有个工作需求是进行 YOLOv8 模型的 C 部署&#xff0c;部署环境如下 系统&#xff1a;WindowsIDE&#xff1a;VS2015语言&#xff1a;COpenCV 4.5.0OnnxRuntime 1.15.1 0. 预训练模型保存为 .onnx 格式 假设已经有使用 ultralytics 库训练并保存为 .pt 格式的 YOLOv8 模型…

css盒子水平垂直居中

目录 1采用flex弹性布局&#xff1a; 2子绝父相margin&#xff1a;负值&#xff1a; 3.子绝父相margin:auto&#xff1a; 4子绝父相transform&#xff1a; 5通过伪元素 6table布局 7grid弹性布局 文字 水平垂直居中链接&#xff1a;文字水平垂直居中-CSDN博客 以下为盒子…

qt QPainter setViewport setWindow viewport window

使用qt版本5.15.2 引入viewport和window目的是用于实现QPainter画出来的内容随着窗体伸缩与不伸缩两种情况&#xff0c;以及让QPainter在widget上指定的区域(viewport)进行绘制/渲染&#xff08;分别对应下方demo1&#xff0c;demo2&#xff0c;demo3&#xff09;。 setViewpo…

深度学习-算法优化与宇宙能量梯度分布

在当今迅速发展的科技世界中&#xff0c;算法优化和能量分布问题已成为研究的热点&#xff0c;尤其是在人工智能、机器学习和物理科学领域。算法优化通常涉及提高计算效率和降低资源消耗&#xff0c;而宇宙能量梯度分布则涉及宇宙中能量的分布和流动方式。两者看似是完全不同的…

Linux驱动学习之第三个驱动程序(两个按键的驱动程序-读取按键值)

程序框架说明(和之前的LED驱动进行对比) 这个程序的框架与之前学习的第二个驱动程序(控制LED)的框架基本一致&#xff0c;第二个驱动程序的链接如下&#xff1a; https://blog.csdn.net/wenhao_ir/article/details/144973219 所以如果前两这个LED驱动程序的框架掌握得很清楚了…

KMP前缀表 ≈ find() 函数——28.找出字符串中第一个匹配项的下标【力扣】

class Solution { public: //得到前缀表void getNext(int *next,string needle){int j0;for(int i1;i<needle.size();i){while(j>0 && needle[j]!needle[i]) jnext[j-1];//**j>0**>j0是出口if(needle[i]needle[j]) j;next[i]j;//若写入if中&#xff0c;则该…

vulnhub靶场【IA系列】之Tornado

前言 靶机&#xff1a;IA-Tornado&#xff0c;IP地址为192.168.10.11 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.2 都采用虚拟机&#xff0c;网卡为桥接模式 本文所用靶场、kali镜像以及相关工具&#xff0c;我放置在网盘中&#xff0c;可以复制后面链接查看 htt…

【优选算法篇】:模拟算法的力量--解决复杂问题的新视角

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;优选算法篇–CSDN博客 文章目录 一.模拟算法二.例题1.替换所有的问号2.提莫攻击3.外观数列4…

云集电商:数据库的分布式升级实践|OceanBase案例

电商行业对数据库有哪些需求 云集电商作为一家传统电商企业&#xff0c;业务涵盖了美妆个护、服饰、水果生鲜、健康保健等多个领域&#xff0c;在创立四年后在纳斯达克上市&#xff08;股票代码&#xff1a;YJ&#xff09;。与京东、淘宝、拼多多等电商平台不同&#xff0c;云…

Kibana操作ES基础

废话少说&#xff0c;开干&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;截图更清晰&#xff0c;复制在下面 #库操作#创建索引【相当于数据库的库】 PUT /first_index#获…

AI大模型赋能!移远通信打造具有“超能力”的AI智能玩具解决方案

随着无线通信、先进算法以及AI大模型等前沿技术的蓬勃发展&#xff0c;许多玩具已经从简单的互动设备进化为集教育、陪伴和娱乐功能于一身的AI智能玩具&#xff0c;在儿童群体中日渐风靡。不仅如此&#xff0c;因其能提供满满的情绪价值&#xff0c;在成年人和老年人市场中也展…