9、DataX安装部署

news2024/10/5 14:20:52

1、 DataX简介

1.1 DataX概述

DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。

源码地址:https://github.com/alibaba/DataX

1.2 DataX支持的数据源

DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入,目前支持数据如下图。

类型

数据源

Reader(读)

Writer(写)

RDBMS 关系型数据库

MySQL

Oracle

OceanBase

SQLServer

PostgreSQL

DRDS

通用RDBMS

阿里云数仓数据存储

ODPS

ADS

OSS

OCS

NoSQL数据存储

OTS

Hbase0.94

Hbase1.1

Phoenix4.x

Phoenix5.x

MongoDB

Hive

Cassandra

无结构化数据存储

TxtFile

FTP

HDFS

Elasticsearch

时间序列数据库

OpenTSDB

TSDB

2、DataX架构原理

2.1 DataX设计理念

为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。

 

2.2 、DataX框架设计

DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。

2.3、 DataX运行流程

下面用一个DataX作业生命周期的时序图说明DataX的运行流程、核心概念以及每个概念之间的关系。

 

 

2.4 、DataX调度决策思路

举例来说,用户提交了一个DataX作业,并且配置了总的并发度为20,目的是对一个有100张分表的mysql数据源进行同步。DataX的调度决策思路是:

1)DataX Job根据分库分表切分策略,将同步工作分成100个Task。

2)根据配置的总的并发度20,以及每个Task Group的并发度5,DataX计算共需要分配4个TaskGroup。

3)4个TaskGroup平分100个Task,每一个TaskGroup负责运行25个Task。

2.5、 DataX与Sqoop对比

功能

DataX

Sqoop

运行模式

单进程多线程

MR

分布式

不支持,可以通过调度系统规避

支持

流控

有流控功能

需要定制

统计信息

已有一些统计,上报需定制

没有,分布式的数据收集不方便

数据校验

在core部分有校验功能

没有,分布式的数据收集不方便

监控

需要定制

需要定制

3、DataX部署

1)下载DataX安装包并上传到hadoop102的/opt/software

下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

2)解压datax.tar.gz到/opt/module

[shuidi@hadoop102 software]$ tar -zxvf datax.tar.gz -C /opt/module/

3)自检,执行如下命令

[shuidi@hadoop102 ~]$ python /opt/module/datax/bin/datax.py /opt/module/datax/job/job.json

 出现如下内容,则表明安装成功

……
2021-10-12 21:51:12.335 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2021-10-12 21:51:02
任务结束时刻                    : 2021-10-12 21:51:12
任务总计耗时                    :                 10s
任务平均流量                    :          253.91KB/s
记录写入速度                    :          10000rec/s
读出记录总数                    :              100000
读写失败总数                    :                   0

4、DataX使用

4.1 DataX使用概述

4.1.1、 DataX任务提交命令

DataX的使用十分简单,用户只需根据自己同步数据的数据源和目的地选择相应的Reader和Writer,并将Reader和Writer的信息配置在一个json文件中,然后执行如下命令提交数据同步任务即可。

[shuidi@hadoop102 datax]$ python bin/datax.py path/to/your/job.json

4.2.2、 DataX配置文件格式

可以使用如下命名查看DataX配置文件模板。

[shuidi@hadoop102 datax]$ python bin/datax.py -r mysqlreader -w hdfswriter

配置文件模板如下,json最外层是一个job,job包含setting和content两部分,其中setting用于对整个job进行配置,content用户配置数据源和目的地。

Reader和Writer的具体参数可参考官方文档,地址如下:

DataX/README.md at master · alibaba/DataX · GitHub

4.2、 同步MySQL数据到HDFS案例

案例要求:同步gmall数据库中base_province表数据到HDFS的/base_province目录

需求分析:要实现该功能,需选用MySQLReader和HDFSWriter,MySQLReader具有两种模式分别是TableMode和QuerySQLMode,前者使用table,column,where等属性声明需要同步的数据;后者使用一条SQL查询语句声明需要同步的数据。

下面分别使用两种模式进行演示。

4.2.1、 MySQLReader之TableMode

1)编写配置文件

(1)创建配置文件base_province.json

[shuidi@hadoop102 ~]$ vim /opt/module/datax/job/base_province.json

(2)配置文件内容如下

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "column": [
                            "id",
                            "name",
                            "region_id",
                            "area_code",
                            "iso_code",
                            "iso_3166_2"
                        ],
                        "where": "id>=3",
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:mysql://hadoop102:3306/gmall"
                                ],
                                "table": [
                                    "base_province"
                                ]
                            }
                        ],
                        "password": "000000",
                        "splitPk": "",
                        "username": "root"
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "column": [
                            {
                                "name": "id",
                                "type": "bigint"
                            },
                            {
                                "name": "name",
                                "type": "string"
                            },
                            {
                                "name": "region_id",
                                "type": "string"
                            },
                            {
                                "name": "area_code",
                                "type": "string"
                            },
                            {
                                "name": "iso_code",
                                "type": "string"
                            },
                            {
                                "name": "iso_3166_2",
                                "type": "string"
                            }
                        ],
                        "compress": "gzip",
                        "defaultFS": "hdfs://hadoop102:8020",
                        "fieldDelimiter": "\t",
                        "fileName": "base_province",
                        "fileType": "text",
                        "path": "/base_province",
                        "writeMode": "append"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 1
            }
        }
    }
}

2)配置文件说明

(1)Reader参数说明

(2)Writer参数说明

 

注意事项:

HFDS Writer并未提供nullFormat参数:也就是用户并不能自定义null值写到HFDS文件中的存储格式。默认情况下,HFDS Writer会将null值存储为空字符串(''),而Hive默认的null值存储格式为\N。所以后期将DataX同步的文件导入Hive表就会出现问题。

解决该问题的方案有两个:

一是修改DataX HDFS Writer的源码,增加自定义null值存储格式的逻辑,可参考记Datax3.0解决MySQL抽数到HDFSNULL变为空字符的问题_datax nullformat_谭正强的博客-CSDN博客。

二是在Hive中建表时指定null值存储格式为空字符串(''),例如:

DROP TABLE IF EXISTS base_province;
CREATE EXTERNAL TABLE base_province
(
    `id`         STRING COMMENT '编号',
    `name`       STRING COMMENT '省份名称',
    `region_id`  STRING COMMENT '地区ID',
    `area_code`  STRING COMMENT '地区编码',
    `iso_code`   STRING COMMENT '旧版ISO-3166-2编码,供可视化使用',
    `iso_3166_2` STRING COMMENT '新版IOS-3166-2编码,供可视化使用'
) COMMENT '省份表'
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
    NULL DEFINED AS ''
    LOCATION '/base_province/';

 (3)Setting参数说明

3)提交任务

(1)在HDFS创建/base_province目录

使用DataX向HDFS同步数据时,需确保目标路径已存在

[shuidi@hadoop102 datax]$ hadoop fs -mkdir /base_province

(2)进入DataX根目录

[shuidi@hadoop102 datax]$ cd /opt/module/datax 

 (3)执行如下命令

[shuidi@hadoop102 datax]$ python bin/datax.py job/base_province.json 

4)查看结果

(1)DataX打印日志

2023-07-03 13:53:28.994 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2023-07-03 13:53:17
任务结束时刻                    : 2023-07-03 13:53:28
任务总计耗时                    :                 11s
任务平均流量                    :               66B/s
记录写入速度                    :              3rec/s
读出记录总数                    :                  32
读写失败总数                    :                   0

(2)查看HDFS文件

[shuidi@hadoop102 datax]$ hadoop fs -cat /base_province/* | zcat

3    山西    1    140000    CN-14    CN-SX
4    内蒙古    1    150000    CN-15    CN-NM
5    河北    1    130000    CN-13    CN-HE
6    上海    2    310000    CN-31    CN-SH
7    江苏    2    320000    CN-32    CN-JS
8    浙江    2    330000    CN-33    CN-ZJ
9    安徽    2    340000    CN-34    CN-AH
10    福建    2    350000    CN-35    CN-FJ
11    江西    2    360000    CN-36    CN-JX
12    山东    2    370000    CN-37    CN-SD
14    台湾    2    710000    CN-71    CN-TW
15    黑龙江    3    230000    CN-23    CN-HL
16    吉林    3    220000    CN-22    CN-JL
17    辽宁    3    210000    CN-21    CN-LN
18    陕西    7    610000    CN-61    CN-SN
19    甘肃    7    620000    CN-62    CN-GS
20    青海    7    630000    CN-63    CN-QH
21    宁夏    7    640000    CN-64    CN-NX
22    新疆    7    650000    CN-65    CN-XJ
23    河南    4    410000    CN-41    CN-HA
24    湖北    4    420000    CN-42    CN-HB
25    湖南    4    430000    CN-43    CN-HN
26    广东    5    440000    CN-44    CN-GD
27    广西    5    450000    CN-45    CN-GX
28    海南    5    460000    CN-46    CN-HI
29    香港    5    810000    CN-91    CN-HK
30    澳门    5    820000    CN-92    CN-MO
31    四川    6    510000    CN-51    CN-SC
32    贵州    6    520000    CN-52    CN-GZ
33    云南    6    530000    CN-53    CN-YN
13    重庆    6    500000    CN-50    CN-CQ
34    西藏    6    540000    CN-54    CN-XZ

4.2.2 MySQLReader之QuerySQLMode

1)编写配置文件

(1)修改配置文件base_province.json

[shuidi@hadoop102 ~]$ vim /opt/module/datax/job/base_province.json

(2)配置文件内容如下

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:mysql://hadoop102:3306/gmall"
                                ],
                                "querySql": [
                                    "select id,name,region_id,area_code,iso_code,iso_3166_2 from base_province where id>=3"
                                ]
                            }
                        ],
                        "password": "000000",
                        "username": "root"
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "column": [
                            {
                                "name": "id",
                                "type": "bigint"
                            },
                            {
                                "name": "name",
                                "type": "string"
                            },
                            {
                                "name": "region_id",
                                "type": "string"
                            },
                            {
                                "name": "area_code",
                                "type": "string"
                            },
                            {
                                "name": "iso_code",
                                "type": "string"
                            },
                            {
                                "name": "iso_3166_2",
                                "type": "string"
                            }
                        ],
                        "compress": "gzip",
                        "defaultFS": "hdfs://hadoop102:8020",
                        "fieldDelimiter": "\t",
                        "fileName": "base_province",
                        "fileType": "text",
                        "path": "/base_province",
                        "writeMode": "append"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 1
            }
        }
    }
}

2)配置文件说明

(1)Reader参数说明

3)提交任务

(1)清空历史数据

[shuidi@hadoop102 datax]$ hadoop fs -rm -r -f /base_province/*

 (2)进入DataX根目录

[shuidi@hadoop102 datax]$ cd /opt/module/datax 

(3)执行如下命令

[shuidi@hadoop102 datax]$ python bin/datax.py job/base_province.json

4)查看结果

(1)DataX打印日志

2023-07-03 13:58:23.037 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2023-07-03 13:58:11
任务结束时刻                    : 2023-07-03 13:58:23
任务总计耗时                    :                 11s
任务平均流量                    :               66B/s
记录写入速度                    :              3rec/s
读出记录总数                    :                  32
读写失败总数                    :                   0

(2)查看HDFS文件

[shuidi@hadoop102 datax]$ hadoop fs -cat /base_province/* | zcat

3    山西    1    140000    CN-14    CN-SX
4    内蒙古    1    150000    CN-15    CN-NM
5    河北    1    130000    CN-13    CN-HE
6    上海    2    310000    CN-31    CN-SH
7    江苏    2    320000    CN-32    CN-JS
8    浙江    2    330000    CN-33    CN-ZJ
9    安徽    2    340000    CN-34    CN-AH
10    福建    2    350000    CN-35    CN-FJ
11    江西    2    360000    CN-36    CN-JX
12    山东    2    370000    CN-37    CN-SD
14    台湾    2    710000    CN-71    CN-TW
15    黑龙江    3    230000    CN-23    CN-HL
16    吉林    3    220000    CN-22    CN-JL
17    辽宁    3    210000    CN-21    CN-LN
18    陕西    7    610000    CN-61    CN-SN
19    甘肃    7    620000    CN-62    CN-GS
20    青海    7    630000    CN-63    CN-QH
21    宁夏    7    640000    CN-64    CN-NX
22    新疆    7    650000    CN-65    CN-XJ
23    河南    4    410000    CN-41    CN-HA
24    湖北    4    420000    CN-42    CN-HB
25    湖南    4    430000    CN-43    CN-HN
26    广东    5    440000    CN-44    CN-GD
27    广西    5    450000    CN-45    CN-GX
28    海南    5    460000    CN-46    CN-HI
29    香港    5    810000    CN-91    CN-HK
30    澳门    5    820000    CN-92    CN-MO
31    四川    6    510000    CN-51    CN-SC
32    贵州    6    520000    CN-52    CN-GZ
33    云南    6    530000    CN-53    CN-YN
13    重庆    6    500000    CN-50    CN-CQ
34    西藏    6    540000    CN-54    CN-XZ

4.2.3 DataX传参

通常情况下,离线数据同步任务需要每日定时重复执行,故HDFS上的目标路径通常会包含一层日期,以对每日同步的数据加以区分,也就是说每日同步数据的目标路径不是固定不变的,因此DataX配置文件中HDFS Writer的path参数的值应该是动态的。为实现这一效果,就需要使用DataX传参的功能。

DataX传参的用法如下,在JSON配置文件中使用${param}引用参数,在提交任务时使用-p"-Dparam=value"传入参数值,具体示例如下。

1)编写配置文件

(1)修改配置文件base_province.json

[shuidi@hadoop102 ~]$ vim /opt/module/datax/job/base_province.json

(2)配置文件内容如下

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:mysql://hadoop102:3306/gmall"
                                ],
                                "querySql": [
                                    "select id,name,region_id,area_code,iso_code,iso_3166_2 from base_province where id>=3"
                                ]
                            }
                        ],
                        "password": "000000",
                        "username": "root"
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "column": [
                            {
                                "name": "id",
                                "type": "bigint"
                            },
                            {
                                "name": "name",
                                "type": "string"
                            },
                            {
                                "name": "region_id",
                                "type": "string"
                            },
                            {
                                "name": "area_code",
                                "type": "string"
                            },
                            {
                                "name": "iso_code",
                                "type": "string"
                            },
                            {
                                "name": "iso_3166_2",
                                "type": "string"
                            }
                        ],
                        "compress": "gzip",
                        "defaultFS": "hdfs://hadoop102:8020",
                        "fieldDelimiter": "\t",
                        "fileName": "base_province",
                        "fileType": "text",
                        "path": "/base_province/${dt}",
                        "writeMode": "append"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 1
            }
        }
    }
}

2)提交任务

(1)创建目标路径

[shuidi@hadoop102 datax]$ hadoop fs -mkdir /base_province/2020-06-14

(2)进入DataX根目录

[shuidi@hadoop102 datax]$ cd /opt/module/datax 

(3)执行如下命令

[shuidi@hadoop102 datax]$ python bin/datax.py -p"-Ddt=2020-06-14" job/base_province.json

3)查看结果

[shuidi@hadoop102 datax]$ hadoop fs -ls /base_province
Found 2 items
drwxr-xr-x   - shuidi supergroup          0 2023-07-03 14:05 /base_province/2020-06-14
-rw-r--r--   3 shuidi supergroup        532 2023-07-03 13:58 /base_province/base_province__641506f6_aea1_49de_ada7_4a43dc5fe8fc.gz

4.3 同步HDFS数据到MySQL案例

案例要求:同步HDFS上的/base_province目录下的数据到MySQL gmall 数据库下的test_province表。

需求分析:要实现该功能,需选用HDFSReader和MySQLWriter。

1)编写配置文件

(1)创建配置文件test_province.json

[shuidi@hadoop102 ~]$ vim /opt/module/datax/job/test_province.json

(2)配置文件内容如下

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "hdfsreader",
                    "parameter": {
                        "defaultFS": "hdfs://hadoop102:8020",
                        "path": "/base_province",
                        "column": [
                            "*"
                        ],
                        "fileType": "text",
                        "compress": "gzip",
                        "encoding": "UTF-8",
                        "nullFormat": "\\N",
                        "fieldDelimiter": "\t"
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "username": "root",
                        "password": "000000",
                        "connection": [
                            {
                                "table": [
                                    "test_province"
                                ],
                                "jdbcUrl": "jdbc:mysql://hadoop102:3306/gmall?useUnicode=true&characterEncoding=utf-8"
                            }
                        ],
                        "column": [
                            "id",
                            "name",
                            "region_id",
                            "area_code",
                            "iso_code",
                            "iso_3166_2"
                        ],
                        "writeMode": "replace"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 1
            }
        }
    }
}

2)配置文件说明

(1)Reader参数说明

 (2)Writer参数说明

3)提交任务

(1)在MySQL中创建gmall.test_province表

DROP TABLE IF EXISTS `test_province`;
CREATE TABLE `test_province`  (
  `id` bigint(20) NOT NULL,
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `region_id` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `area_code` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `iso_code` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `iso_3166_2` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

 (2)进入DataX根目录

[shuidi@hadoop102 datax]$ cd /opt/module/datax 

(3)执行如下命令

[shuidi@hadoop102 datax]$ python bin/datax.py job/test_province.json 

4)查看结果

(1)DataX打印日志

2023-07-03 14:25:05.695 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2023-07-03 14:24:54
任务结束时刻                    : 2023-07-03 14:25:05
任务总计耗时                    :                 11s
任务平均流量                    :              133B/s
记录写入速度                    :              6rec/s
读出记录总数                    :                  64
读写失败总数                    :                   0

(2)查看MySQL目标表数据

5、 DataX优化

5.1 速度控制

DataX3.0提供了包括通道(并发)、记录流、字节流三种流控模式,可以随意控制你的作业速度,让你的作业在数据库可以承受的范围内达到最佳的同步速度。

关键优化参数如下:

参数

说明

job.setting.speed.channel

并发数

job.setting.speed.record

总record限速

job.setting.speed.byte

总byte限速

core.transport.channel.speed.record

单个channel的record限速,默认值为10000(10000条/s)

core.transport.channel.speed.byte

单个channel的byte限速,默认值1024*1024(1M/s)

 

注意事项:

1.若配置了总record限速,则必须配置单个channel的record限速

2.若配置了总byte限速,则必须配置单个channe的byte限速

3.若配置了总record限速和总byte限速,channel并发数参数就会失效。因为配置了总record限速和总byte限速之后,实际channel并发数是通过计算得到的:

计算公式为:

min(总byte限速/单个channel的byte限速,总record限速/单个channel的record限速)

配置示例:

{
    "core": {
        "transport": {
            "channel": {
                "speed": {
                    "byte": 1048576 //单个channel byte限速1M/s
                }
            }
        }
    },
    "job": {
        "setting": {
            "speed": {
                "byte" : 5242880 //总byte限速5M/s
            }
        },
        ...
    }
}

5.2 内存调整

当提升DataX Job内Channel并发数时,内存的占用会显著增加,因为DataX作为数据交换通道,在内存中会缓存较多的数据。例如Channel中会有一个Buffer,作为临时的数据交换的缓冲区,而在部分Reader和Writer的中,也会存在一些Buffer,为了防止OOM等错误,需调大JVM的堆内存。

建议将内存设置为4G或者8G,这个也可以根据实际情况来调整。

调整JVM xms xmx参数的两种方式:一种是直接更改datax.py脚本;另一种是在启动的时候,加上对应的参数,如下:

python datax/bin/datax.py --jvm="-Xms8G -Xmx8G" /path/to/your/job.json

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

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

相关文章

基于高校图书馆的用户画像、可视化、模型预测、推荐算法项目实现

需要本项目的可以私信博主获取源码及项目!!! 本研究基于高校图书馆的借阅信息、馆藏图书信息、读者入馆信息、用户信息等多维度的数据表,首先将不同年份的数据拼接在一起,按照时间维度进行整合,并保证数据…

快慢指针专题

总体思想:详解为什么用一步两步快慢指针?三步四步可以吗 - 预言2018 - 博客园 (cnblogs.com) 1. 为什么快慢指针一定会相遇: 2. 为什么 quick 指针每次走两步,而不是3、4步骤,是因为 如上图所示,若走2步&a…

TDsql增量merge导入load_data

TDsql增量merge导入load_data 项目组最近用了腾讯的TencentDB分布式数据库作为传统关系型数据库来保存少量应用数据。因此需要开发相对应的ETL功能代码,根据新数据库特性,使用自带的工具load_data作为导入的工具 准备表 使用load_data导入的表&#xf…

Python运维自动化Paramiko模块

paramiko学习笔记 为什么要用到paramiko模块安装paramiko模块paramiko介绍SSHClient---连接服务器exec_command---执行命令SFTPClient---传输文件下载和上传文件其它方法 为什么要用到paramiko模块 工作中常用到Linux服务器需要更新开发的代码,之前一直是使用xshell…

Python_多任务:进程、线程、协程

目录 进程 实现多进程 进程池 实现进程池 线程 实现多线程 多线程的资源竞争问题 互斥锁解决资源竞争问题 死锁 协程 gevent 进程 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位&am…

“多”维演进:智能编码的深度进化

我们在追求怎样的编码未来? 无处不在的视频渗透、井喷式的流量增长、多元的场景技术需求、用户对视频体验的“不将就”……音视频行业的快速发展却伴随着“编码标准升级速度缓慢”、“硬件红利见底”、“编码复杂度带来的成本问题”等众多挑战。 视频编码还“卷”得…

SQL Server 2008 r2 修改sa密码 通过sql server 身份验证登陆

SQL Server的两种身份验证模式是Windows验证模式和SQL Server验证模式。 sql server 2008 r2 修改sa密码 通过sql server 身份验证登陆 【解决方法如下】 通过windows 身份验证登陆后,首先选中服务器(右键)->属性 ->安全性->服务器身份验证修改为"SQL SERVER和W…

浅谈电瓶车在线充电管理系统的设计与应用

安科瑞 华楠 摘要:基于ARM 硬件平台,研究了电瓶车充电技术,提出了一种智能型电瓶车在线安全充电系统,该系统可根据实际充电情况实现智能断电,同时提供给用户一种远程充电、断电的平台,目的是防止电瓶车过度…

港联证券|个人的分红要交税吗?

近年来,随着经济的快速发展,越来越多的人开始关注个人财务管理,其中一个重要的问题就是个人的分红是否需要缴纳税款。这个问题并不简单,需要从多个角度进行综合分析。 首先,我们需要明确一点,个人的分红属于…

浅谈数据中心机房动环监控系统可视化设计与研究

安科瑞电气股份有限公司 上海嘉定 201801 摘要:为了维护好数据中心机房动力环境,及时发现隐患和排除故障,降低管理成本控制能耗,提高运维效率,保障数据中心安全、高效、环保、稳定的运行,针对目前机房管理…

通过五点判断CRM系统是否好用

CRM管理系统在当今市场竞争中扮演着越来越重要的角色。因此,企业选择一款适合自己的CRM系统是非常关键的。那么,如何评价一款CRM系统是否好用? 1、功能是否全面 好用的CRM系统应该能够覆盖企业与客户交互的全过程,包括营销管理、…

【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据缓存不一致分析)

一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据缓存不一致问题分析) 数据不一致的原因逻辑失败导致的数据不一致物理失败导致的数据不一致 数据一致性的解决方案消费消息异步删除缓存主要流程如下图所示 订阅Binlog利用队列…

只出现一次的数字

题目链接 只出现一次的数字 题目描述 注意点 1 < nums.length < 30000-30000 < nums[i] < 30000除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次 解答思路 最初想到使用一种数据结构将元素存储起来&#xff0c;但是空间复杂度为O(n)&#xff0…

Linux(ubuntu)上安装vmware workstation虚拟机

Linux&#xff08;ubuntu&#xff09;上安装vmware workstation虚拟机 首先下载vmware workstation 官网下载地址&#xff1a;https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html 下滑至页面下方下载&#xff1a; 或者点击此处下载 下载完成后…

首发价11999元?华为智慧屏S3Pro电视7月10日上市

华为最新推出了两款全新的智慧屏 S3 Pro&#xff0c;分别是65英寸和75英寸版本&#xff0c;售价分别为5999元和7999元。除此之外&#xff0c;华为还推出了全新的S3 Pro 86英寸型号&#xff0c;首发价为11999元。这款电视将于7月10日上市&#xff0c;对于感兴趣的用户来说&#…

押注数字人,百度、科大讯飞“短兵相接”

配图来自Canva可画 近两年&#xff0c;小雀斑、柳夜熙、AYAYI等大量网红数字人的相继出现&#xff0c;以及虚拟数字技术在《指环王》和《阿凡达》以及《刺杀小说家》等电影中的广泛应用&#xff0c;还有北京冬奥会期间数字人在手语解说、节目直播等众多场合亮相&#xff0c;使…

2024浙大GMSCM提面第一场:全英文项目的生死选择题

本周末是今年浙大MBA非全英文项目GMSCM的第一场提前批面试&#xff0c;作为诸多方向中相对比较稳定的项目之一&#xff0c;GMSCM项目每年的提前批面试申请也都表现的比较稳健&#xff0c;而其目前主要的招生也是依托于提前批面试&#xff0c;根据这几年的情况&#xff0c;每年浙…

vue+cesium 获取鼠标浮动的经纬度

一、需求 是在地图中展示鼠标的经纬度 二、成果展示 三、思路和方法 html <div class"mouseMove" v-if"mouseMove.lat"><div v-if"mouseMove.lat">经度&#xff1a;{{ mouseMove.lng }}</div><div v-if"mouseMove…

关于研究SELECT * 是否会导致SQL查询效率变低的问题

引言 无论在工作还是面试中&#xff0c;关于SQL中不要用“SELECT *”的问题&#xff0c;经常会被大家用作讨论&#xff0c;虽说听烂了&#xff0c;但普遍理解还是在很浅的层面&#xff0c;并没有多少人去追根究底&#xff0c;探究其原理。 一、效率低的原因 先看一下最新《阿…

计算机网络_ 1.3 网络核心(数据交换_电路交换_多路复用)

计算机网络_数据交换_电路交换_多路复用 多路复用频分多路复用FDM时分多路复用TDM波分多路复用WDM码分多路复用CDM 多路复用 多路复用&#xff08;Multiplexing&#xff09;&#xff0c;简称复用&#xff0c;是通信技术的基本概念。 链路/网络资源&#xff08;如带宽&#x…