【数据库开发】DataX开发环境的安装部署(Python、Java)

news2024/11/15 15:58:55

文章目录

  • 1、简介
    • 1.1 DataX简介
    • 1.2 DataX功能
    • 1.3 支持的数据通道
  • 2、DataX安装配置
    • 2.1 DataX
    • 2.2 Java
    • 2.3 Python
  • 3、DataX Web安装配置
    • 3.1 mysql
    • 3.2 DataX Web
      • 3.2.1 简介
      • 3.2.2 架构图
      • 3.2.3 依赖环境
      • 3.2.4 安装
  • 4、入门使用
    • 4.1 DataX自带打印示例测试
    • 4.2 DataX生成任务模板文件
    • 4.3 DataX-Web创建任务
  • 5、FAQ
    • 5.1 DataX-Web连接不上MySQL
    • 5.2 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数?
    • 5.3 触发任务报错Cannot run program "python": error=2, No such file or directory
    • 5.4 基于代码重新打包DataX
  • 结语

1、简介

DataX是阿里云DataWorks数据集成的开源版本。下载即可用,支持linux和windows,只需要短短几步骤就可以完成数据的传输。

官网地址:
https://github.com/alibaba/DataX

在这里插入图片描述

1.1 DataX简介

DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
在这里插入图片描述

1.2 DataX功能

DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。
在这里插入图片描述
DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。

  • Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。
  • Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。
  • Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。

1.3 支持的数据通道

DataX目前支持数据如下:

类型数据源Reader(读)Writer(写)文档
RDBMS 关系型数据库MySQL读 、写
Oracle读 、写
OceanBase读 、写
SQLServer读 、写
PostgreSQL读 、写
DRDS读 、写
Kingbase读 、写
通用RDBMS(支持所有关系型数据库)读 、写
阿里云数仓数据存储ODPS读 、写
ADB
ADS
OSS读 、写
OCS
Hologres
AnalyticDB For PostgreSQL
阿里云中间件datahub读 、写
SLS读 、写
图数据库阿里云 GDB读 、写
Neo4j
NoSQL数据存储OTS读 、写
Hbase0.94读 、写
Hbase1.1读 、写
Phoenix4.x读 、写
Phoenix5.x读 、写
MongoDB读 、写
Cassandra读 、写
数仓数据存储StarRocks读 、写
ApacheDoris
ClickHouse读 、写
Databend
Hive读 、写
kudu
selectdb
无结构化数据存储TxtFile读 、写
FTP读 、写
HDFS读 、写
Elasticsearch
时间序列数据库OpenTSDB
TSDB读 、写
TDengine读 、写

2、DataX安装配置

https://github.com/alibaba/DataX/blob/master/userGuid.md

2.1 DataX

  • 下载DataX的源代码进行编译
wget https://codeload.github.com/alibaba/DataX/zip/master
git clone git@github.com:alibaba/DataX.git

或者

  • 下载DataX的二进制安装包(本文采用的方法)
# wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz

在这里插入图片描述
解压如下:

tar -zxvf datax.tar.gz

在这里插入图片描述
查看文件夹/home/tomcat如下:
在这里插入图片描述
查看文件夹/home/tomcat/datax/bin如下:
在这里插入图片描述
查看文件夹/home/tomcat/datax/job如下:
在这里插入图片描述

2.2 Java

输入命令检查java是否已安装。

java -version

在这里插入图片描述
说明java没有安装。
安装java环境,输入如下代码如下:

apt-get install openjdk-11-jre-headless openjdk-11-jdk-headless

在这里插入图片描述
在这里插入图片描述

2.3 Python

输入命令检查python是否已安装。

python -v

在这里插入图片描述

python3 -v

在这里插入图片描述

3、DataX Web安装配置

3.1 mysql

下载mysql数据库的安装包:

mkdir mysql
cd mysql
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar

在这里插入图片描述
解压mysql数据库的安装包:

tar xvf mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar

在这里插入图片描述

依次安装如下文件:

 libmysqlclient20_5.7.31-1ubuntu18.04_amd64.deb
 libmysqlclient-dev_5.7.31-1ubuntu18.04_amd64.deb
 libmysqld-dev_5.7.31-1ubuntu18.04_amd64.deb
 mysql-client_5.7.31-1ubuntu18.04_amd64.deb
 mysql-common_5.7.31-1ubuntu18.04_amd64.deb
 mysql-community-client_5.7.31-1ubuntu18.04_amd64.deb
 mysql-community-server_5.7.31-1ubuntu18.04_amd64.deb
 mysql-community-source_5.7.31-1ubuntu18.04_amd64.deb
 mysql-server_5.7.31-1ubuntu18.04_amd64.deb
 #mysql-testsuite_5.7.31-1ubuntu18.04_amd64.deb
 #mysql-community-test_5.7.31-1ubuntu18.04_amd64.deb

比如命令如下:

sudo apt-get install ./mysql-server_5.7.31-1ubuntu18.04_amd64.deb

在这里插入图片描述

测试是否安装成功如下:

mysql -V

在这里插入图片描述
安装完成后查看mysql服务:

netstat -tap | grep mysql

在这里插入图片描述

修改 root 密码和 host:

mysql
use mysql
update user set host = '%' where user = 'root' 
SET PASSWORD FOR 'root'@'%' = PASSWORD('XXXXXXXX');
FLUSH PRIVILEGES;
select user,host from user;
FLUSH PRIVILEGES;

在这里插入图片描述
测试mysql是否能登录成功。
在这里插入图片描述
查看mysql数据库情况:

show databases;

在这里插入图片描述

use dataweb;
show tables;

在这里插入图片描述
执行如下操作,使得远程可以连接mysql数据库。

# 查看监听
netstat -an |grep 3306
# 前监听的是本地回环地址:tcp 0 0 127.0.0.1:3306  0.0.0.0:* LISTEN 
# 远程客户端无法访问

# 修改MySQL的本地监听地址
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

修改bind-address 的值为 bind-address = 0.0.0.0保存退出。
也可以修改为本机ip,例如:bind-address = 192.168.111.10

# 重启mysql数据库
sudo service mysql restart

# 在远程客户端机器上测试下网络,telnet成功说明网络没问题
telnet 192.168.111.10 3306

# 注意:阿里云服务器有端口限制,需要去配置下端口访问规则开放3306端口
网址:[https://homenew.console.aliyun.com/](https://homenew.console.aliyun.com/)

在这里插入图片描述
数据库的基本操作命令:

# 直接登陆mysql
mysql -u用户名 -p密码 数据库名
# 例如: 
mysql -uroot -p123456 mysql

# 先登陆后面再输入密码和选择数据库
mysql -u root -p
Enter password:  “root用户密码”
mysql> use mysql # 选择要操作的数据库

# 切换数据库
use 数据库名;

# 查看所有数据库
show databases;  

# 查看登陆数据库中所有的表
show tables;  

# 查看数据表结构
desc 表名;

# 查看登陆用户名 
select user();  

# 查看登陆数据库库名
select database();

# 查看版本
select version();

# 显示当前时间
select now();

# 查看所有用户的 用户名、可登陆主机、身份验证插件、密码  
select user,host,plugin,authentication_string from user;

# 查看当前登录用户权限
show grants;

# 查看任意用户权限(后面说权限的具体含义)
show grants for root@localhost;

数据库的备份及恢复:

# 备份所有数据库:
mysqldump -uroot -p --all-databases > all.db

# 备份指定数据库:
mysqldump -uroot -p pydb > test1.db

# 备份指定数据库的某些表
mysqldump -uroot -p pydb 表名1 表名2 表名n > test2.db

# 备份指定数据库排除某些表(排除表1 和 表2)
mysqldump -uroot -p pydb --ignore-table=pydb.表1 --ignore-table=pydb.表2 > test3.db

# 创建test数据库
create database test charset=utf8; 

# 恢复备份数据,导入的数据库必须存在
mysql -u root -p test < test1.db

卸载mysql:

# 卸载mysql:
1.sudo apt-get autoremove mysql* --purge
2.sudo apt-get remove mysql-server
3.sudo apt-get remove mysql-common

# 清理残留数据 
sudo dpkg -l |grep mysql|awk '{print $2}' |sudo xargs dpkg -P 
sudo rm -rf /etc/mysql/ 
sudo rm -rf /var/lib/mysql

# 检查是否删除完毕
whereis mysql
sudo find / -name mysql

3.2 DataX Web

https://github.com/WeiYe-Jing/datax-web

3.2.1 简介

DataX集成可视化页面,选择数据源即可一键生成数据同步任务,支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源,批量创建RDBMS数据同步任务,集成开源调度系统,支持分布式、增量同步数据、实时查看运行日志、监控执行器资源、KILL运行进程、数据源信息加密等。

3.2.2 架构图

在这里插入图片描述

3.2.3 依赖环境

  • Language: Java 8(jdk版本建议1.8.201以上)
  • Python2.7(支持Python3需要修改替换datax/bin下面的三个python文件,替换文件在doc/datax-web/datax-python3下)
  • Environment: MacOS, Windows,Linux
  • Database: Mysql5.7

3.2.4 安装

https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md
在这里插入图片描述

https://pan.baidu.com/s/13yoqhGpD00I82K4lOYtQhg
提取码:cpsk
  • 1)解压安装包
    在选定的安装目录,解压安装包
tar -zxvf datax-web-{VERSION}.tar.gz
  • 2)执行一键安装脚本
    进入解压后的目录,找到bin目录下面的install.sh文件,如果选择交互式的安装,则直接执行
./bin/install.sh
  • 3)数据库初始化
    如果你的服务上安装有mysql命令,在执行安装脚本的过程中则会出现以下提醒:
Scan out mysql command, so begin to initalize the database
Do you want to initalize database with sql: [{INSTALL_PATH}/bin/db/datax-web.sql]? (Y/N)y
Please input the db host(default: 127.0.0.1): 
Please input the db port(default: 3306): 
Please input the db username(default: root): 
Please input the db password(default: ): 
Please input the db name(default: exchangis)
    1. 配置
      在项目目录下/modules/datax-execute/bin/env.properties 指定PYTHON_PATH的路径
vi ./modules/{module_name}/bin/env.properties

### 执行datax的python脚本地址
PYTHON_PATH=

### 保持和datax-admin服务的端口一致;默认是9527,如果没改datax-admin的端口,可以忽略
DATAX_ADMIN_PORT=

此文件中包括一些默认配置参数,例如:executor.port,json.path,data.path等,具体请查看文件。

检查文件bootstrap.properties:

cd ./datax-web
vi ./modules/datax-admin/conf/bootstrap.properties

在这里插入图片描述
datax-web-server分为2模块:admin 、executor。
检查admin配置修改:

cd ./datax-web
sudo vi ./modules/datax-admin/bin/env.properties
# 修改server port、邮件、java_home等信息

在这里插入图片描述
检查executor 配置修改:


cd ./datax-web
sudo vi ./modules/datax-executor/bin/env.properties

在这里插入图片描述

  • 5)启动服务
    运行bin目录下start-all.sh (或者分别启动admin、executor)。
    一键启动所有服务
./bin/start-all.sh

一键取消所有服务

./bin/stop-all.sh

汇总命令如下:

./bin/start-all.sh # 启动
./bin/stop-all.sh # 停止
 
# 启动后jps,可以看到admin和executor进程
jps
  • 6)查看服务
    在Linux环境下使用JPS命令,查看是否出现DataXAdminApplication和DataXExecutorApplication进程,如果存在这表示项目运行成功;
    如果项目启动失败,请检查启动日志:modules/datax-admin/bin/console.out或者modules/datax-executor/bin/console.out;
    在这里插入图片描述

  • 7)运行
    部署完成后,在浏览器中输入 http://ip:port/index.html 就可以访问对应的主界面(ip为datax-admin部署所在服务器ip,port为为datax-admin 指定的运行端口);

http://192.168.1.123:9527/index.html

输入用户名 admin 密码 123456 就可以直接访问系统;

在这里插入图片描述

4、入门使用

4.1 DataX自带打印示例测试

输入DataX的测试命令如下:

python3 datax.py ../job/job.json

在这里插入图片描述
命令行结果输出:
在这里插入图片描述
初步测试成功。

4.2 DataX生成任务模板文件

通过命令生成datax任务的模板json文件。

cd  ./datax/bin/
python datax.py -r mysqlreader -w mysqlwriter > mysql2mysql.json

在这里插入图片描述
查看文件mysql2mysql.json如下:
在这里插入图片描述

cat mysql2mysql.json

准备数据表如下:
t_user:
在这里插入图片描述
t_user2:
在这里插入图片描述

根据各自需求,按照模板修改文件mysql2mysql.json:

{
   "job": {
       "content": [
            {
               "reader": {
                   "name":"mysqlreader",
                   "parameter": {
                       "column": ["user_id"],
                       "connection": [
                            {
                               "jdbcUrl": ["jdbc:mysql://192.168.36.130:3306/test?useSSL=false"],
                               "table": ["t_user"]
                            }
                        ],
                       "password":"123456",
                       "username":"root"
                    }
                },
               "writer": {
                   "name":"mysqlwriter",
                   "parameter": {
                       "column": ["user_id"],
                       "connection": [
                            {
                               "jdbcUrl":"jdbc:mysql://192.168.36.130:3306/test?useSSL=false",
                               "table": ["t_user2"]
                            }
                        ],
                       "password":"123456",
                       "username":"root",
                       "writeMode":"insert"
                    }
                }
            }
        ],
       "setting": {
           "speed": {
               "channel":"1"
            }
        }
    }
}

①select中字段个数和writer节点上“column”的个数需保持一致,如果能确保 select中的字段与目标表保持一致,可在writer节点的配置上去掉“column”相关配置。
②writer节点的jdbcUrl,不可以同reader节点那样用“[]”括起来。

启动datax同步任务:

python ./datax.py ./mysql2mysql.json

在这里插入图片描述
在这里插入图片描述
修改mysql2mysql.json中的字段数据如下:

"column": ["user_id", "name"],

再次执行命令如下:

python ./datax.py ./mysql2mysql.json

数据表结果更新如下:
在这里插入图片描述

4.3 DataX-Web创建任务

  • 创建项目
    在这里插入图片描述

  • 创建执行器
    在这里插入图片描述

  • 创建数据源
    在这里插入图片描述

  • 创建任务模板
    此步骤是主要是为了后边构建任务的时候,为任务指定执行器。
    在这里插入图片描述

  • 创建任务
    在这里插入图片描述

  • 生成任务json文件
    在这里插入图片描述

  • 管理任务,执行任务
    在这里插入图片描述

  • 查看日志
    在这里插入图片描述

5、FAQ

5.1 DataX-Web连接不上MySQL

在这里插入图片描述

  • 问题:
    Code:[MYSQLErrCode-02], Description:[数据库服务的IP地址或者Port错误,请检查填写的IP地址和Port或者联系DBA确认IP地址和Port是否正确。如果是同步中心用户请联系DBA确认idb上录入的IP和PORT信息和数据库的当前实际信息是一致的]. - 具体错误信息为:com.mysql.jdbc.excep

  • 回答:
    不建议在没有服务器身份验证的情况下建立SSL连接,根据MySQL 5.5.45+、5.6.26+和5.7.6+的要求,如果没有设置显式选项,则必须默认建立SSL连接。为了符合不使用SSL的现有应用程序,verifyServerCertificate属性被设置为“false”。您需要通过设置useSSL=false显式禁用SSL,或者设置useSSL=true并为服务器证书验证提供信任存储。

很简单,在连接数据库的url后面加上参数即可,例如:

jdbc:mysql://localhost:3306/testdb?useSSL=false

使用上述标红的URL,即可解决该警告,标红参数前面为你数据库连接URL,如果有多个参数记得用&连接,例如:

jdbc:mysql://localhost:3306/testdb?characterEncoding=utf-8&useSSL=false

在这里插入图片描述

5.2 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数?

解决办法:
修改文件datax/conf/core.json:

"core": {
        "dataXServer": {
            "address": "http://localhost:7001/api",
            "timeout": 10000,
            "reportDataxLog": false,
            "reportPerfLog": false
        },
        "transport": {
            "channel": {
                "class": "com.alibaba.datax.core.transport.channel.memory.MemoryChannel",
                "speed": {
                    "byte": 2000000,
                    "record": -1
                },
                "flowControlInterval": 20,
                "capacity": 512,
                "byteCapacity": 67108864
            },
            "exchanger": {
                "class": "com.alibaba.datax.core.plugin.BufferedRecordExchanger",
                "bufferSize": 32
            }
        },
}

修改core -> transport -> channel -> speed -> “byte”: 2000000,将单个channel的大小改为2MB即可。
在这里插入图片描述

5.3 触发任务报错Cannot run program “python”: error=2, No such file or directory

解决办法:
因为Ubuntu自带的python没有/usr/bin/python该目录,data-web源码中默认调用/usr/bin/python,解决方法可以搭建软连接

ln -s /usr/bin/python3 /usr/bin/python

或者若安装了python2也可以

ln -s /usr/bin/python2 /usr/bin/python

5.4 基于代码重新打包DataX

  • 代码下载地址
    https://github.com/taosdata/DataX

datax和datax web可以使用maven进行编译源码和打包,因此需要先安装maven。
在Linux系统中,可以使用以下命令安装maven:

sudo apt-get install maven

在这里插入图片描述

mvn -v

在这里插入图片描述

进入datax源代码目录,执行以下命令进行编译:

mvn clean package assembly:assembly -Dmaven.test.skip=true 

其中,-Dmaven.test.skip=true表示跳过测试。
(1)找不到依赖包:
[ERROR] Failed to execute goal on project hdfsreader: Could not resolve dependencies for project com.alibaba.datax:hdfsreader:jar:0.0.1-SNAPSHOT: Could not find artifact org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde in nexus-aliyun (https://maven.aliyun.com/repository/central) -> [Help 1]

解决方法:从提示上看,是hdfsreader的包缺失,相应的hdfswriter也应该是不行的。因为我用不到这两个组件,于是在pom.xml中注释掉。
在这里插入图片描述
(2)问题:提示disk空间too little,实际空间有很大?
解决方法:实际是/tmp目录小于默认的1G,设置小一点就好了。配置文件minimalTmpDirGB设置小一点就正常了。
logdir datadir tmpdir 都有自己的min value,在/etc/taos/taos.cfg指定。
然后重启一下涛思服务。

启动服务进程: systemctl start taosd
停止服务进程: systemctl stop taosd
重启服务进程: systemctl restart taosd
查看服务状态: systemctl status taosd

编译完成后,会在target目录下生成datax.tar.gz文件。
将datax.tar.gz文件解压到任意目录,例如/home/datax:

tar -zxvf datax.tar.gz -C /home/

进入datax目录,编辑job目录下的job.json文件,配置datax的运行参数。

安装maven并切换阿里镜像源。不然编译的时候会找不到第三方依赖项。
修改为国内阿里镜像源,找到/usr/share/maven/conf/settings.xml文件,打开并修改以下:

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

settings.xml文件可能会显示只读。需要修改下权限再保存它。

sudo chmod 777 /usr/share/maven/conf/settings.xml

打包成功后的DataX包位于 {DataX_source_code_home}/target/datax/datax/ 。
在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

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

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

相关文章

配置开启Docker2375远程连接与解决Docker未授权访问漏洞

一、配置开启Docker远程连接 首先需要安装docker,参考我这篇文章&#xff1a;基于CentOS7安装配置docker与docker-compose 配置开启Docker远程连接的步骤&#xff1a; //1-编辑/usr/lib/systemd/system/docker.service 文件 vim /usr/lib/systemd/system/docker.service //2…

Linux socket编程(1):套接字、字节序和地址结构体

套接字(socket)是一种使用标准Unix文件描述符与其他程序进行通信的方式&#xff0c;它在实际的应用中都十分常用。所以从这一篇文章开始&#xff0c;我将详细介绍一下Linux环境下的socket的用法。本篇文章将介绍套接字、字节序和地址结构体的相关知识。 文章目录 1 什么是套接字…

深入理解指针(一)

目录 内存和地址 内存 如何理解编址 指针变量和地址 取地址操作符&#xff08;&&#xff09; 指针变量和解引用操作符&#xff08;*&#xff09; 指针变量 如何拆解指针类型 解引用操作符 指针变量的大小 ​编辑 指针变量类型的意义 指针的解引用 指针-整…

sass 封装媒体查询工具

背景 以往写媒体查询可能是这样的&#xff1a; .header {display: flex;width: 100%; }media (width > 320px) and (width < 480px) {.header {height: 50px;} }media (width > 480px) and (width < 768px) {.header {height: 60px;} }media (width > 768px) …

【Java】定时任务 - Timer/TimerTask 源码原理解析

一、背景及使用 日常实现各种服务端系统时&#xff0c;我们一定会有一些定时任务的需求。比如会议提前半小时自动提醒&#xff0c;异步任务定时/周期执行等。那么如何去实现这样的一个定时任务系统呢&#xff1f; Java JDK提供的Timer类就是一个很好的工具&#xff0c;通过简单…

【Qt】撤销/恢复的快捷键

使用Qt的时候&#xff0c;有时需要撤销修改的代码&#xff0c;但可能回撤过头了。 下面提供2个快捷键&#xff0c;当撤销过头时&#xff0c;可恢复撤销内容。 撤销的快捷键是 CtrlZ 恢复/向前的快捷键是 CtrlShiftZ 我们可以自定义快捷键。 点击【工具】->【选项】 点击…

基于XML的声明式事务

场景模拟 参考基于注解的声明式事务 修改Spring的配置文件 将Spring配置文件中去掉tx:annotation-driven标签&#xff0c;并添加配置&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org…

解决VSCode中文乱码问题

解决VSCode乱码问题 1.问题描述&#xff1a;2.原因分析&#xff1a;3.解决方案&#xff1a;1&#xff09;解决步骤2&#xff09;深入分析 4.总结 1.问题描述&#xff1a; 最近用vscode的时候突然发现中文字符出现乱码。在网上找了好几种方法都不行&#xff0c;用各种编码格式打…

【机器学习】八、规则学习

知识图谱与基本概念 基本概念 规则学习定义&#xff1a;从训练数据中学习出一组能用于对未见示例进行判别的规则。 规则定义&#xff1a;规则一般是&#xff1a;语义明确、能描述数据分布所隐含的客观规律或领域概念。 逻辑规则定义&#xff1a;⊕←?1⋀?2⋀?3…⋀??⊕…

file2Udp增量日志转出Udp简介

https://gitee.com/tianjingle/file2udp 很多时候服务产生的日志需要进行汇总&#xff0c;这种统一日志处理的方式有elb&#xff0c;而且很多日志组件也支持日志转出的能力。但是从广义上来说是定制化的&#xff0c;我们需要一个小工具实现tail -f的能力&#xff0c;将增量日志…

2024最新基于物联网单片机毕业设计选题汇总(合集)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

大数据技术与原理实验报告(MapReduce 初级编程实践)

MapReduce 初级编程实践 验环境&#xff1a; 操作系统&#xff1a;Linux&#xff08;建议Ubuntu16.04&#xff09;&#xff1b; Hadoop版本&#xff1a;3.2.2&#xff1b; &#xff08;一&#xff09;编程实现文件合并和去重操作 对于两个输入文件&#xff0c;即文件 A 和…

upload-labs关卡8(基于黑名单的点绕过)通关思路

文章目录 前言一、回顾上一关知识点二、靶场第八关通关思路1、看源代码2、点绕过3、验证文件是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随意去尚未授权的网站做渗透测试&am…

用示波器测量高压电

示波器本身是不可以测试几千v的高压电电路的&#xff0c;一般自带的探头衰减倍数不够&#xff0c;需要使用高压差分探头或者高压探棒&#xff0c;将测试信号衰减到合适的范围再接入示波器。 普通探头能测差分电压吗&#xff1f;差分探头和普通探头有什么区别&#xff1f;全网最…

使用SQL分析数据科学职业发展趋势

大家好&#xff0c;在数据成为新石油的今天&#xff0c;了解数据科学职业的细微差别比以往任何时候都更加重要。无论你是正在寻找机会的数据爱好者&#xff0c;还是资深数据专家&#xff0c;使用SQL都可以让你深入了解数据科学就业市场。 本文可以带你了解哪些数据科学职位最具…

C语言精选练习题:(10)字幂数

每日一言 信心这个东西&#xff0c;什么时候都像个高楼大厦&#xff0c;但是里面会长白蚁。 --沉默的大多数 题目 打印1~100000之间的所有的字幂数&#xff0c;中间用空格分隔 (字幂数是指一个数的位数的n次方之和等于这个数本身) 如&#xff1a;370 3 ^ 3 7 ^ 3 0 ^ 3&…

CCC数字钥匙设计 --数字钥匙数据结构

1、数字钥匙是什么&#xff1f; 汽车数字钥匙&#xff0c;将传统实体钥匙数字化&#xff0c;用卡片、手机等智能设备来做数字钥匙的载体。 从而实现无钥匙进入/启动、为他人远程钥匙授权、个性化的车辆设置等功能。 目前市场上流行的数字钥匙方案是通过NFC、BLE、UWB通信技术…

C51--串口发送中断请求

在串口通信寄存器中有T1&#xff1a;发送中断请求标志位 换行 &#xff1a;\r\n #include "reg52.h" #include <intrins.h>sfr AUXR 0x8E;//串口初始化 void UartInit(void) //9600bps11.0592MHz {PCON & 0x7F; //波特率不倍速SCON 0x50; //8位数…

eNSP毕业设计系列-《大型企业网》-BGP网络无nat

客户主要需求&#xff1a;需要有三栋楼&#xff0c;每栋楼有三个业务。 又新增了要求&#xff0c;要双核心、双防火墙。 所以我根据客户的需求&#xff0c;完成了如下组网设计。 主要技术&#xff0c;MSTPVRRP链路聚合OSPF传统纵网&#xff0c;&#xff08;万金油组合&#…

AI 绘画 | Stable Diffusion WebUI的基本设置和插件扩展

前言 Stable Diffusion WebUI是一个基于Gradio库的浏览器界面&#xff0c;用于配置和生成AI绘画作品&#xff0c;并且进行各种精细地配置。它支持目前主流的开源AI绘画模型&#xff0c;例如NovelAI/Stable Diffusion。 在基本设置方面&#xff0c;Stable Diffusion WebUI的默…