搭建 dataX

前置条件

  • JDK(1.8以上,推荐1.8)
  • Python(2或3都可以)
  • Apache Maven 3.x (Compile DataX)

下载 datax 编译好的包

https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz

进入目录,使用 powershell 打开

执行解压命令

tar -xzf datax.tar.gz

得到

配置 windows 命令行支持 utf-8

不配置这个命令,执行同步命令会出现中文乱码

先把日志“乱码”变成可读中文,最简单两步即可:

  1. 临时改当前窗口编码
    打开 cmd,先执行
chcp 65001

再运行

python datax.py C:\Users\longz\Downloads\1.json

日志就会以 UTF-8 输出,中文正常显示。

  1. 永久生效(可选)
    在 Windows 10/11 上可以把系统全局控制台编码改成 UTF-8:
    • 设置 → 时间和语言 → 区域 → 相关设置管理语言设置更改系统区域设置 → 勾选 “Beta: 使用 Unicode UTF-8 提供全球语言支持” → 重启。
      之后所有 cmd/PowerShell 窗口默认就是 UTF-8,不会再出现方块或乱码。

或者直接在控制面板找

把如下的复选框勾上

重启

准备测试数据

新建两个库,相同的表名,user

CREATE TABLE IF NOT EXISTS `user` (`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,`username` VARCHAR(50) NOT NULL,`password` VARCHAR(100) NOT NULL,`email` VARCHAR(100) NOT NULL,`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

在 test1 库,新增测试数据。

我这里用存储过程,直接调用即可生成测试数据。

DELIMITER $$CREATE PROCEDURE GenerateUserTestData(IN num_records INT)
BEGINDECLARE i INT DEFAULT 1;DECLARE v_username VARCHAR(50);DECLARE v_password VARCHAR(100);DECLARE v_email VARCHAR(100);WHILE i <= num_records DO-- 生成随机用户名(如 User_12345)SET v_username = CONCAT('User_', FLOOR(10000 + RAND() * 90000));-- 生成随机密码(简化示例,实际应加密)SET v_password = CONCAT('Pass_', FLOOR(100000 + RAND() * 900000));-- 生成随机邮箱(如 user12345@example.com)SET v_email = CONCAT('user', FLOOR(10000 + RAND() * 90000), '@example.com');INSERT INTO `user` (username, password, email)VALUES (v_username, v_password, v_email);-- 每1000条提交一次,避免事务过大IF i % 1000 = 0 THENCOMMIT;END IF;SET i = i + 1;END WHILE;
END$$DELIMITER ;

生成完成后,目标,使用 datax 同步 test1 库的数据到 test2 库

新建 datax 的同步脚本

{"job": {"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "root","connection": [{"jdbcUrl": ["jdbc:mysql://localhost:3306/test1"],"table": ["user"]}],"column": ["*"],"splitPk": ""}},"writer": {"name": "mysqlwriter","parameter": {"username": "root","password": "root","connection": [{"jdbcUrl": "jdbc:mysql://localhost:3306/test2","table": ["user"]}],"column": ["*"],"writeMode": "insert"}}}],"setting": {"speed": {"channel": 1}}}
}

执行同步命令

python datax.py D:\Information_Technology\worksapce_tool\datax-new\datax\job\test-user.json

执行完成

D:\Information_Technology\worksapce_tool\datax-new\datax\bin>python datax.py D:\Information_Technology\worksapce_tool\datax-new\datax\job\test-user.jsonDataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.2025-08-08 14:00:36.524 [main] INFO  MessageSource - JVM TimeZone: GMT+08:00, Locale: zh_CN
2025-08-08 14:00:36.526 [main] INFO  MessageSource - use Locale: zh_CN timeZone: sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
2025-08-08 14:00:36.536 [main] INFO  VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
2025-08-08 14:00:36.541 [main] INFO  Engine - the machine info  =>osInfo: Windows 10 amd64 10.0jvmInfo:        Oracle Corporation 1.8 25.341-b10cpu num:        16totalPhysicalMemory:    -0.00GfreePhysicalMemory:     -0.00GmaxFileDescriptorCount: -1currentOpenFileDescriptorCount: -1GC Names        [PS MarkSweep, PS Scavenge]MEMORY_NAME                    | allocation_size                | init_sizePS Eden Space                  | 256.00MB                       | 256.00MBCode Cache                     | 240.00MB                       | 2.44MBCompressed Class Space         | 1,024.00MB                     | 0.00MBPS Survivor Space              | 42.50MB                        | 42.50MBPS Old Gen                     | 683.00MB                       | 683.00MBMetaspace                      | -0.00MB                        | 0.00MB2025-08-08 14:00:36.552 [main] INFO  Engine -
{"content":[{"reader":{"name":"mysqlreader","parameter":{"username":"root","password":"****","connection":[{"jdbcUrl":["jdbc:mysql://localhost:3306/test1"],"table":["user"]}],"column":["*"],"splitPk":""}},"writer":{"name":"mysqlwriter","parameter":{"username":"root","password":"****","connection":[{"jdbcUrl":"jdbc:mysql://localhost:3306/test2","table":["user"]}],"column":["*"],"writeMode":"insert"}}}],"setting":{"speed":{"channel":1}}
}2025-08-08 14:00:36.565 [main] INFO  PerfTrace - PerfTrace traceId=job_-1, isEnable=false
2025-08-08 14:00:36.566 [main] INFO  JobContainer - DataX jobContainer starts job.
2025-08-08 14:00:36.566 [main] INFO  JobContainer - Set jobId = 0
Fri Aug 08 14:00:36 GMT+08:00 2025 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
2025-08-08 14:00:42.909 [job-0] INFO  OriginalConfPretreatmentUtil - Available jdbcUrl:jdbc:mysql://localhost:3306/test1?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true.
2025-08-08 14:00:42.910 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置存在一定的风险. 因为您未配置读取数据库表的列,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
Fri Aug 08 14:00:43 GMT+08:00 2025 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
2025-08-08 14:00:43.091 [job-0] INFO  OriginalConfPretreatmentUtil - table:[user] all columns:[
id,username,password,email,created_at
].
2025-08-08 14:00:43.091 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置信息存在风险. 因为您配置的写入数据库表的列为*,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
2025-08-08 14:00:43.092 [job-0] INFO  OriginalConfPretreatmentUtil - Write data [
insert INTO %s (id,username,password,email,created_at) VALUES(?,?,?,?,?)
], which jdbcUrl like:[jdbc:mysql://localhost:3306/test2?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true&tinyInt1isBit=false]
2025-08-08 14:00:43.093 [job-0] INFO  JobContainer - jobContainer starts to do prepare ...
2025-08-08 14:00:43.093 [job-0] INFO  JobContainer - DataX Reader.Job [mysqlreader] do prepare work .
2025-08-08 14:00:43.093 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] do prepare work .
2025-08-08 14:00:43.094 [job-0] INFO  JobContainer - jobContainer starts to do split ...
2025-08-08 14:00:43.094 [job-0] INFO  JobContainer - Job set Channel-Number to 1 channels.
2025-08-08 14:00:43.097 [job-0] INFO  JobContainer - DataX Reader.Job [mysqlreader] splits to [1] tasks.
2025-08-08 14:00:43.097 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] splits to [1] tasks.
2025-08-08 14:00:43.115 [job-0] INFO  JobContainer - jobContainer starts to do schedule ...
2025-08-08 14:00:43.117 [job-0] INFO  JobContainer - Scheduler starts [1] taskGroups.
2025-08-08 14:00:43.119 [job-0] INFO  JobContainer - Running by standalone Mode.
2025-08-08 14:00:43.124 [taskGroup-0] INFO  TaskGroupContainer - taskGroupId=[0] start [1] channels for [1] tasks.
2025-08-08 14:00:43.126 [taskGroup-0] INFO  Channel - Channel set byte_speed_limit to -1, No bps activated.
2025-08-08 14:00:43.127 [taskGroup-0] INFO  Channel - Channel set record_speed_limit to -1, No tps activated.
2025-08-08 14:00:43.136 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] attemptCount[1] is started
2025-08-08 14:00:43.140 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from user
] jdbcUrl:[jdbc:mysql://localhost:3306/test1?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
Fri Aug 08 14:00:43 GMT+08:00 2025 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Aug 08 14:00:43 GMT+08:00 2025 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Aug 08 14:00:43 GMT+08:00 2025 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
2025-08-08 14:00:43.179 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from user
] jdbcUrl:[jdbc:mysql://localhost:3306/test1?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2025-08-08 14:00:43.456 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] is successed, used[321]ms
2025-08-08 14:00:43.456 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] completed it's tasks.
2025-08-08 14:00:53.142 [job-0] INFO  StandAloneJobContainerCommunicator - Total 100 records, 5192 bytes | Speed 519B/s, 10 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
2025-08-08 14:00:53.142 [job-0] INFO  AbstractScheduler - Scheduler accomplished all tasks.
2025-08-08 14:00:53.142 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] do post work.
2025-08-08 14:00:53.143 [job-0] INFO  JobContainer - DataX Reader.Job [mysqlreader] do post work.
2025-08-08 14:00:53.143 [job-0] INFO  JobContainer - DataX jobId [0] completed successfully.
2025-08-08 14:00:53.144 [job-0] INFO  HookInvoker - No hook invoked, because base dir not exists or is a file: D:\Information_Technology\worksapce_tool\datax-new\datax\hook
2025-08-08 14:00:53.144 [job-0] INFO  JobContainer -[total cpu info] =>averageCpu                     | maxDeltaCpu                    | minDeltaCpu                 -1.00%                         | -1.00%                         | -1.00%[total gc info] =>NAME                 | totalGCCount       | maxDeltaGCCount    | minDeltaGCCount    | totalGCTime        | maxDeltaGCTime     | minDeltaGCTimePS MarkSweep         | 1                  | 1                  | 1                  | 0.016s             | 0.016s             | 0.016sPS Scavenge          | 1                  | 1                  | 1                  | 0.008s             | 0.008s             | 0.008s2025-08-08 14:00:53.144 [job-0] INFO  JobContainer - PerfTrace not enable!
2025-08-08 14:00:53.145 [job-0] INFO  StandAloneJobContainerCommunicator - Total 100 records, 5192 bytes | Speed 519B/s, 10 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
2025-08-08 14:00:53.146 [job-0] INFO  JobContainer -
任务启动时刻                    : 2025-08-08 14:00:36
任务结束时刻                    : 2025-08-08 14:00:53
任务总计耗时                    :                 16s
任务平均流量                    :              519B/s
记录写入速度                    :             10rec/s
读出记录总数                    :                 100
读写失败总数                    :                   0

搭建 datax-web

下载源码

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

创建数据库

执行bin/db下面的datax_web.sql文件(注意老版本更新语句有指定库名)

修改项目配置

1.修改datax_admin下resources/application.yml文件

#数据源datasource:username: rootpassword: rooturl: jdbc:mysql://localhost:3306/datax_web?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.jdbc.Driver

修改数据源配置,目前仅支持mysql

# 配置mybatis-plus打印sql日志
logging:level:com.wugui.datax.admin.mapper: errorpath: ./data/applogs/admin

修改日志路径path

  # datax-web emailmail:host: smtp.qq.comport: 25username: xxx@qq.compassword: xxxproperties:mail:smtp:auth: truestarttls:enable: truerequired: truesocketFactory:class: javax.net.ssl.SSLSocketFactory

修改邮件发送配置(不需要可以不修改)

2.修改datax_executor下resources/application.yml文件

# log config
logging:config: classpath:logback.xmlpath: ./data/applogs/executor/jobhandler

修改日志路径path

datax:job:admin:### datax-web admin addressaddresses: http://127.0.0.1:8080executor:appname: datax-executorip:port: 9999### job log pathlogpath: ./data/applogs/executor/jobhandler### job log retention dayslogretentiondays: 30executor:jsonpath: D:\\Information_Technology\\worksapce_tool\\tmp\\executor\\json\\pypath: D:\\Information_Technology\\worksapce_tool\\datax-new\\datax\\bin\\datax.py

修改datax.job配置

  • admin.addresses datax_admin部署地址,如调度中心集群部署存在多个地址则用逗号分隔,执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";
  • executor.appname 执行器AppName,每个执行器机器集群的唯一标示,执行器心跳注册分组依据;
  • executor.ip 默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 “执行器注册” 和 “调度中心请求并触发任务”;
  • executor.port 执行器Server端口号,默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
  • executor.logpath 执行器运行日志文件存储磁盘路径,需要对该路径拥有读写权限;
  • executor.logretentiondays 执行器日志文件保存天数,过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
  • executor.jsonpath datax json临时文件保存路径
  • pypath DataX启动脚本地址,例如:xxx/datax/bin/datax.py(这个路径是上面搭建 dataX 已经创建好的启动脚本)
    如果系统配置DataX环境变量(DATAX_HOME),logpath、jsonpath、pypath可不配,log文件和临时json存放在环境变量路径下。

启动项目

本地idea开发环境
  • 1.运行datax_admin下 DataXAdminApplication
  • 2.运行datax_executor下 DataXExecutorApplication
    在这里插入图片描述

admin启动成功后日志会输出三个地址,两个接口文档地址,一个前端页面地址

启动成功

启动成功后打开页面(默认管理员用户名:admin 密码:123456)
http://localhost:8080/index.html#/dashboard
在这里插入图片描述

实战

项目管理-添加项目

配置数据源

创建执行器

构建任务生成同步 json

点构建,会自动生成同步 datax 脚本,复制 json,回到菜单

创建任务

创建任务,按照如下填写,并把 json 贴过来,并把 byte 的值改为 0

执行成功

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PDF注释的加载和保存的实现

PDF注释功能文档 概述 本文档详细说明了PDF注释功能的实现&#xff0c;包括注释的加载和保存功能。该功能基于Android PDFBox库实现&#xff0c;支持Ink类型注释的读取和写入。 功能模块 1. 注释加载功能 (getAnnotation()) 功能描述 从PDF文件中加载已存在的注释&#xff0c;并…

Linux环境下实现简单TCP通信(c)

具体代码实现 server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>#define PORT 8080 #define BUFFER_SIZE 1024void handle_client(int client_s…

炫酷圆形按钮调色器

<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>圆形按钮颜色控制器</title><style>bod…

Vue 3 的编译时优化如何改写 DOM 操作规则

在现代前端开发中&#xff0c;框架级优化正悄然改变我们处理性能瓶颈的方式。与手动优化策略不同&#xff0c;Vue 3 的编译器在构建阶段就完成了关键性能改造&#xff0c;为 DOM 操作效率带来质的飞跃。一、虚拟DOM的隐藏成本虚拟DOM&#xff08;Virtual DOM&#xff09;通过内…

Angular初学者入门第二课——.ts、.d.ts、.state.ts的区别(精品)

初次接触 Angular 实际项目时&#xff0c;发现里边有很多不同后缀的文件&#xff0c;虽然没深入研究过&#xff0c;但根据其他编程语言的经验猜测这应该是通过后缀名来区分文件的作用。后来有时间研究了一下具体的细节和不同点&#xff0c;就有了今天这篇文章&#xff0c;这些知…

进程状态+进程优先级+进程上下文切换解读

一、进程状态 什么是进程状态&#xff1f;进程状态指的是在操作系统中进程在生命周期中所处的不同阶段。进程状态有哪些呢&#xff1f;我们可以看到上述图片 进程状态分为&#xff1a;创建状态、就绪状态、运行状态、阻塞状态和终止状态所有的操作系统在实现进程状态变化的时候…

Android 原生与 Flutter 通信完整实现 (Kotlin 版)

1. 项目配置 pubspec.yaml 添加依赖 dependencies:flutter:sdk: flutterprovider: ^6.0.52. Flutter 端实现 状态管理类 // settings_provider.dart import package:flutter/foundation.dart;class SettingsProvider with ChangeNotifier {String _themeColor blue;bool _dark…

数字图像处理3

图像线性滤波——目的就是滤去噪声&#xff0c;但是边缘会模糊&#xff0c;整体也模糊线性&#xff1a;邻域平均法&#xff08;4邻域平均和8邻域平均&#xff09;用当前运算点所在邻域的平均值来代替该点的平均值im_for_read"D:\AAAproject\PYproject\EXPERuse\zaosheng.j…

Linux发行版分类与Centos替代品

让centos7气的不轻&#xff0c;这玩意儿太老了&#xff0c;什么都不好配置。 目录Linux 发行版的大致分类1. Red Hat 系列&#xff08;RPM 系&#xff09;2. Debian 系列&#xff08;DEB 系&#xff09;3. Arch 系列4. SUSE 系列CentOS 7 的替代品推荐AlmaLinux 和 Rocky Linux…

大语言模型提示工程与应用:大语言模型对抗性提示安全防御指南

对抗性提示工程 学习目标 理解大语言模型中对抗性提示的风险与防御机制&#xff0c;掌握提示注入、提示泄露和越狱攻击的检测方法&#xff0c;培养安全防护意识。 相关知识点 对抗性攻击类型防御技术 学习内容 1 对抗性攻击类型 1.1 提示注入 提示注入旨在通过使用巧妙…

避不开的数据拷贝(2)

接着上周未完的话题 避不开的数据拷贝。 既然处理器是通用机器&#xff0c;就没有专属数据&#xff0c;所以数据都要从别处调来&#xff0c;这就涉及到了数据搬运&#xff0c;就有了外设的概念。由于不同外设和处理器一起共享数据存储&#xff0c;时间会花在两方面&#xff1a…

娃哈哈经销商“大洗牌”:砍掉年销300万以下经销商

文 | 大力财经据第一财经报道&#xff0c;娃哈哈在宗馥莉“铁腕”策略推动下&#xff0c;正经历经销商体系的重大变革&#xff0c;陆续砍掉年销低于300万元的经销商&#xff0c;方式有时颇为激进&#xff0c;“一刀切”的做法引发诸多争议&#xff0c;部分经销商反馈存在款项未…

drippingblues靶机通关练习笔记

前言 将靶机导入到vmware虚拟机上 靶机下载地址&#xff1a;https://download.vulnhub.com/drippingblues/drippingblues.ova 将网段都设置为nat 信息收集 ip端口扫描 netdiscover -r 192.168.25.1/24 --确定ip nmap -A -p- 192.168.25. kalid的ip&#xff1a;1…

QT第三讲- 机制、宏、类库模块

文章目录 🧩 一、Qt核心机制与类库 🔧 1. 元对象系统(Meta-Object System) ⚡ 2. 信号与槽(Signals & Slots) • 通信机制 📦 3. 属性系统(Property System) 动态属性 例程 类的附加信息 Q_CLASSINFO 例程 🌐 二、全局定义与容器 📝 1. 全局数据类型与函数…

(LeetCode 每日一题) 869. 重新排序得到 2 的幂 (哈希表+枚举)

题目&#xff1a;869. 重新排序得到 2 的幂 思路&#xff1a;哈希表枚举。先预处理出所有的2的幂数&#xff0c;用哈希表来存储。 C版本&#xff1a; class Solution { public:// 哈希表存储所有 2的幂数 按升序排列的形式unordered_set<string> st;// 预处理出所有的2…

WebAssembly技术详解:从浏览器到云原生的高性能革命

引言&#xff1a;WebAssembly的诞生与使命 2015年&#xff0c;当Mozilla、Google、Microsoft和Apple四大浏览器厂商联合发布WebAssembly&#xff08;Wasm&#xff09;技术预览时&#xff0c;业界尚未意识到这将开启Web性能的新纪元。作为继HTML、CSS、JavaScript之后的第四种We…

性能解析案例

异步io是内核fd与应用程序直接的关系io 多路复用1.检测io是否就绪2.read/write消息队列kafka&#xff1a;1.典型应用 &#xff1a;异步处理&#xff0c;系统解耦&#xff0c;流量削峰&#xff0c;日志处理2.核心原理&#xff1a;kafka体系结构以及读写流程3.具体操作&#xff1…

青龙峡拔韭菜

我们一年四季&#xff0c;除了冬天不往山里进&#xff0c;其余季节&#xff0c;只要天气允许&#xff0c;我们都会进山。在山里拔韭菜&#xff0c;是我们百做不烦的一件事。今年大旱&#xff0c;从五月份上山找韭菜&#xff0c;没有如愿。直到入秋后&#xff0c;我们再次去青龙…

5、docker镜像管理命令

1、命令总览命令&#xff08;含关键参数&#xff09;作用出现频率备注docker buildx build --platform … -t … --push .一次构建并推送多平台镜像高频需先 docker buildx create --usedocker buildx build -o typedocker,destxxx.tar .构建后离线导出 tar 包中频只导出单平台…

阿里云ECS云服务器临时升级带宽方法

阿里云ECS云服务器临时升级带宽方法一、背景与需求二、原理三、操作步骤步骤 0: 准备工作步骤 1: 创建弹性网卡 (ENI)步骤 2: 创建并绑定弹性公网IP (EIP)步骤 3: SSH登录ECS并切换到高速通道 (eth1)步骤 4: 执行你的高带宽任务步骤 5: 任务完成&#xff0c;切回默认网卡 (eth0…