大数据技术之 Maxwell(1.29.2版本)(最新最全教程)

2023-11-10

 1   Maxwell 概述

1.1 Maxwell 定义

Maxwell  是由美国  Zendesk  开源,用  Java  编写的  MySQL  实时抓取软件。 实时读取MySQL 二进制日志 Binlog,并生成 JSON格式的消息,作为生产者发送给  KafkaKinesisRabbitMQRedisGoogle Cloud Pub/Sub、文件或其它平台的应用程序。

官网地址:Maxwell's Daemon

1.2 Maxwell 工作原理

1.2.1 MySQL 主从复制过程

Master 主库将改变记录,写到二进制日志(binary log)

Slave 从库向 mysql  master 发送 dump 协议,将 master 主库的 binary  log  events 拷贝到它的中继日志(relay log)

Slave 从库读取并重做中继日志中的事件,将改变的数据同步到自己的数据库。

1.2.3 MySQL  binlog 

(1) 什么是 binlog

MySQL 的二进制日志可以说 MySQL 最重要的日志了,它记录了所有的 DDL  DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL 的二进制日志是事务安全型的。一般来说开启二进制日志大概会有 1%的性能损耗。二进制有两个最重要的使用场景:

其一:MySQL Replication  Master 端开启 binlogMaster 把它的二进制日志传递给 slaves 来达到 master-slave 数据一致的目的。

其二:自然就是数据恢复了,通过使用 mysqlbinlog 工具来使恢复数据。二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的 DDL  DML(除了数据查询语句)语句事件。

(2) binlog 的开启

找到 MySQL 配置文件的位置

Linux: /etc/my.cnf 如果/etc 目录下没有,可以通过 locate my.cnf 查找位置

Windows: \my.ini

 mysql 的配置文件下,修改配置在[mysqld]  区块,设置/添加   log-bin=mysql-bin这个表示 binlog 日志的前缀是 mysql-bin,以后生成的日志文件就是  mysql-bin.000001的文件后面的数字按顺序生成,每次 mysql 重启或者到达单个文件大小的阈值时,新生一个文件,按顺序编号。

(3) binlog 的分类设置

mysql binlog 的格式有三种,分别是 STATEMENT,MIXED,ROW。在配置文件中可以选择配binlog_format= statement|mixed|row

三种格式的区别:

statement

语句级,binlog 会记录每次一执行写操作的语句。相对 row 模式节省空间,但是可能产生不一致性,比如update test set create_date=now();如果用 binlog 日志进行恢复,由于执行时间不同可能产生的数据就不同。优点:  节省空间   缺点:  有可能造成数据不一致。

row

行级,  binlog 会记录每次操作后每行记录的变化。优点:保持数据的绝对一致性。因为不管 sql 是什么,引用了什么函数,他只记录执行后的效果。缺点:占用较大空间。

mixed

混合级别,statement  的升级版,一定程度上解决了 statement 模式因为一些情况而造成的数据不一致问题。默认还是 statement,在某些情况下,譬如:当函数中包含  UUID()  时;包含  AUTO_INCREMENT  字段的表被更新时;执  INSERT DELAYED  语句时;  UDF  时;会按照  ROW 的方式进行处理  优点:节省空间,同时兼顾了一定的一致性。缺点:还有些极个别情况依旧会造成不一致,另外 statement  mixed 对于需要对binlog 监控的情况都不方便。

综合上面对比,Maxwell 想做监控分析,选择 row 格式比较合适

1.3 Maxwell  Canal 的对比

对比

Canal

Maxwell

语言

java

java

数据格式

格式自由

json

采集数据模式

增量

全量/增量

数据落地

定制

支持 kafka 等多种平台

HA

支持

支持

 2   Maxwell 使用

2.1 Maxwell 安装部署

2.1.1  安装地址

(1Maxwell 官网地址:http://maxwells-daemon.io/

(2)文档查看地址:Quick Start - Maxwell's Daemon

2.1.2  安装部署

(1)软件基础,读者需要提前安装好 kafka  MySQL,此文档不再赘述。

(2)上传 maxwell-1.29.2.tar.gz /opt/software 

3)解压 maxwell-1.29.2.tar.gz 的安装包到/opt/module 

[atguigu@hadoop102 software]$ tar -zxvf maxwell-1.29.2.tar.gz -C   /opt/module/

2.1.3 MySQL 环境准备

(1)修改 mysql 的配置文件,开启 MySQL  Binlog 设置

atguigu@hadoop102   software]$   sudo   vim   /etc/my.cnf
在[mysqld]模块下添加一下内容
[mysqld]
server_id=1
log-bin=mysql-bin
binlog_format=row
#binlog-do-db=test_maxwell

并重启 Mysql 服务
[atguigu@hadoop102   software]$   sudo   systemctl   restart   mysqld

登录 mysql 并查看是否修改完成
[atguigu@hadoop102   ~]$   mysql   -uroot   -p123456
mysql>   show   variables   like   '%binlog%';
查看下列属性
binlog_format	|   ROW

(2)进入/var/lib/mysql 目录,查看 MySQL 生成的 binlog 文件 

[atguigu@hadoop102   ~]$   cd   /var/lib/mysql
[atguigu@hadoop102   mysql]$   sudo   ls   -l
总用量  188500
-rw-r-----.   1   mysql   mysql	154   11 月  17   16:30   mysql-
bin.000001
-rw-r-----.   1   mysql   mysql	19   11 月  17   16:30   mysql-
bin.index

注:MySQL 生成的 binlog 文件初始大小一定是 154 字节,然后前缀是 log-bin 参数配置的,后缀是默从.000001,然后依次递增。除了 binlog 文件文件以外,MySQL 还会额外生产一个.index 索引文件用来记录当前使用的 binlog 文件。 

2.1.4  初始化 Maxwell 元数据库

(1)在 MySQL 中建立一个 maxwell 库用于存储 Maxwell 的元数据
[atguigu@hadoop102   module]$   mysql   -uroot   -p123456
mysql>   CREATE   DATABASE   maxwell;
(2)设置 mysql 用户密码安全级别
mysql>   set   global   validate_password_length=4;
mysql>   set   global   validate_password_policy=0;
(3)分配一个账号可以操作该数据库
mysql> GRANT ALL	ON maxwell.* TO 'maxwell'@'%' IDENTIFIED BY '123456';
(4)分配这个账号可以监控其他数据库的权限
mysql> GRANT SELECT ,REPLICATION SLAVE , REPLICATION CLIENT ON
*.*   TO   maxwell@'%';
(5)刷新 mysql 表权限
mysql>   flush   privileges;

2.1.5 Maxwell 进程启动

Maxwell 进程启动方式有如下两种:

(1)使用命令行参数启动 Maxwell 进程

 [atguigu@hadoop102 maxwell-1.29.2]$ bin/maxwell --user='maxwell' --password='123456' --host='hadoop102' --producer=stdout

--user  连接 mysql 的用户

--password  连接 mysql 的用户的密码

--host mysql 安装的主机名

--producer  生产者模式(stdout:控制台 kafka:kafka 集群)

2)修改配置文件,定制化启动 Maxwell 进程 

[atguigu@hadoop102 maxwell-1.29.2]$ cp config.properties.example   config.properties

[atguigu@hadoop102   maxwell-1.29.2]$   vim   config.properties

[atguigu@hadoop102 maxwell-1.29.2]$ bin/maxwell --config   ./config.properties

2.2 Maxwell 入门案例

2.2.1  监控 Mysql 数据并在控制台打印

1)实现步骤:

1)运行 maxwell 来监控 mysql 数据更新

[atguigu@hadoop102 maxwell-1.29.2]$ bin/maxwell --user='maxwell' --password='123456' --host='hadoop102' --producer=stdout

2)向 mysql  test_maxwell 库的 test 表插入一条数据,查看 maxwell 的控制台输出

mysql>   insert   into   test   values(1,'aaa');

{
  "database":   "test_maxwell",	--库名
  "table":   "test",	--表名
  "type":   "insert",	--数据更新类型
  "ts":   1637244821,	--操作时间
  "xid":   8714,	--操作 id
  "commit":   true,	--提交成功
  "data":   {	--数据
      "id":   1,
      "name":   "aaa"
     }
}

(3)向 mysql  test_maxwell 库的 test 表同时插入 3 条数据,控制台出现了 3  json日志,说明 maxwell 是以数据行为单位进行日志的采集的。 

mysql>   INSERT   INTO   test   VALUES(2,'bbb'),(3,'ccc'),(4,'ddd');

{"database":"test_maxwell","table":"test","type":"insert","ts"
:1637245127,"xid":9129,"xoffset":0,"data":{"id":2,"name":"bbb"
}}
{"database":"test_maxwell","table":"test","type":"insert","ts"
:1637245127,"xid":9129,"xoffset":1,"data":{"id":3,"name":"ccc"
}}
{"database":"test_maxwell","table":"test","type":"insert","ts"
:1637245127,"xid":9129,"commit":true,"data":{"id":4,"name":"dd
d"}}

mysql>   update   test   set   name='zaijian'   where   id   =1;

{"database":"test_maxwell","table":"test","type":"update","ts"
:1631618614,"xid":535,"commit":true,"data":{"id":1,"name":"zai
jian"},"old":{"name":"nihao"}}

4)修改 test_maxwell 库的 test 表的一条数据,查看 maxwell 的控制台输出 

mysql>   update   test   set   name='abc'   where   id   =1;

{
"database":   "test_maxwell",
"table":   "test",
"type":   "update",
"ts":   1637245338,
"xid":   9418,
"commit":   true,
"data":   {	--修改后的数据
"id":   1,
"name":   "abc"
},
"old":   {	--修改前的数据
"name":   "aaa"
}
}

 5)删除 test_maxwell 库的 test 表的一条数据,查看 maxwell 的控制台输出

mysql>   DELETE   FROM   test   WHERE   id   =1;
{
"database":   "test_maxwell",
"table":   "test",
"type":   "delete",
"ts":   1637245630,
"xid":   9816,
"commit":   true,
"data":   {
"id":   1,
"name":   "abc"
}
}

2.2.2  监控 Mysql 数据输出到 kafka

1)实现步骤:

(1)启动 zookeeper  kafka

[atguigu@hadoop102   bin]$   jpsall
===============   hadoop102   ===============
3511   QuorumPeerMain
4127   Kafka
===============   hadoop103   ===============
1885   Kafka
1342   QuorumPeerMain
===============   hadoop104   ===============
1345   QuorumPeerMain
1886   Kafka

2)启动 Maxwell 监控 binlog

atguigu@hadoop102 maxwell-1.29.2]$ bin/maxwell --user='maxwell' --password='123456' --host='hadoop102' --producer=kafka --kafka.bootstrap.servers=hadoop102:9092   --kafka_topic=maxwell

3)打开 kafka 的控制台的消费者消费 maxwell 主题

[atguigu@hadoop102 ~]$ kafka-console-consumer.sh --bootstrap-server   hadoop102:9092   --topic   maxwell

4)向 test_maxwell 库的 test 再次插入一条数据

mysql>   insert   into   test   values   (5,'eee');

5)通过 kafka 消费者来查看到了数据,说明数据成功传入 kafka 

{"database":"test_maxwell","table":"test","type":"insert","ts":1637245889,"xid":10155,"commit":true,"data":{"id":5,"name":"eee"}}

2kafka 主题数据的分区控制

在公司生产环境中,我们一般都会用 maxwell 监控多个 mysql 库的数据,然后将这些数据发往  kafka  的一个主题  Topic,并且这个主题也肯定是多分区的,为了提高并发度。那么如何控制这些数据的分区问题,就变得至关重要,实现步骤如下:在公司生产环境中,我们一般都会用 maxwell 监控多个 mysql 库的数据,然后将这些数据发往  kafka  的一个主题  Topic,并且这个主题也肯定是多分区的,为了提高并发度。那么如何控制这些数据的分区问题,就变得至关重要,

实现步骤如下: 

(1)修改 maxwell 的配置文件,定制化启动 maxwell 进程

[atguigu@hadoop102   maxwell-1.29.2]$   vim   config.properties

#   tl;dr   config
log_level=info
producer=kafka
kafka.bootstrap.servers=hadoop102:9092

#   mysql   login   info
host=hadoop102
user=maxwell
password=123456
#	***   kafka   ***
#   list   of   kafka   brokers
#kafka.bootstrap.servers=hosta:9092,hostb:9092
#   kafka   topic   to   write   to
#   this   can   be   static,   e.g.   'maxwell',   or   dynamic,   e.g.
namespace_%{database}_%{table}
#   in   the   latter   case   'database'   and   'table'   will   be   replaced
with   the   values   for   the   row   being   processed
kafka_topic=maxwell3

#	***   partitioning   ***
#   What   part   of   the   data   do   we   partition   by?
#producer_partition_by=database   #   [database,   table,
primary_key,   transaction_id,   column]
producer_partition_by=database

#   控制数据分区模式,可选模式有  库名,表名,主键,列名
#   specify   what   fields   to   partition   by   when   using
producer_partition_by=column
#   column   separated   list.
#producer_partition_columns=name

#   when   using   producer_partition_by=column,   partition   by   this
when
#   the   specified   column(s)   don't   exist.
#producer_partition_by_fallback=database

2)手动创建一个 3 个分区的 topic,名字就叫做 maxwell3

[atguigu@hadoop102 maxwell-1.29.2]$ kafka-topics.sh  --zookeeper hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka   --create --replication-factor   2   --partitions   3   --topic   maxwell3

 3)利用配置文件启动 Maxwell 进程

 [atguigu@hadoop102 maxwell-1.29.2]$ bin/maxwell --config   ./config.properties

4)向 test_maxwell 库的 test 再次插入一条数据

mysql>   insert   into   test_maxwell.test   values   (6,'fff');

5)通过 kafka  tool 工具查看,此条数据进入了 maxwell3 主题的 1 号分区

(6)向 test 库的 aaa 插入一条数据

mysql>   insert   into   test_maxwell2.test   values   (23,'dd');

(7)通过 kafka  tool 工具查看,此条数据进入了 maxwell3 主题的 0 号分区,说明库名会对数据进入的分区造成影响。

 2.2.3  监控 Mysql 指定表数据输出控制台

(1)运行 maxwell 来监控 mysql 指定表数据更新

2)向 test_maxwell.test 表插入一条数据,查看 maxwell 的监控

3)向 test_maxwell.test2 表插入一条数据,查看 maxwell 的监控

本次没有收到任何信息

说明 include 参数生效,只能监控指定的 mysql 表的信息

注:还可以设置 include:test_maxwell.*通过此种方式来监控 mysql 某个库的所有表,也就是说过滤整个库。读者可以自行测试。

2.2.4  监控 Mysql 指定表全量数据输出控制台,数据初始化

Maxwell  进程默认只能监控   mysql      binlog  日志的新增及变化的数据,但是Maxwell 是支持数据初始化的,可以通过修改 Maxwell 的元数据,来对 MySQL 的某张表进行数据初始化,也就是我们常说的全量同步。具体操作步骤如下:需求:将 test_maxwell 库下的 test2 表的四条数据,全量导入到 maxwell 控制台进行打印。

(1)修改 Maxwell 的元数据,触发数据初始化机制,在 mysql  maxwell 库中 bootstrap表中插入一条数据,写明需要全量数据的库名和表名。

mysql> insert into maxwell.bootstrap(database_name,table_namevalues('test_maxwell','test2');

2)启动 maxwell 进程,此时初始化程序会直接打印 test2 表的所有数据

[atguigu@hadoop102	maxwell-1.29.2]$	bin/maxwell	--
user='maxwell'	--password='123456'	--host='hadoop102'	--
producer=stdout

Using   kafka   version:   1.0.0
23:15:38,841   WARN	MaxwellMetrics   -   Metrics   will   not   be
exposed:   metricsReportingType   not   configured.
23:15:39,110   INFO	Maxwell   -   Maxwell   v1.22.0   is   booting
(StdoutProducer),   starting   at   Position[BinlogPosition[mysql-
bin.000004:611096],   lastHeartbeat=1637248429242]
23:15:39,194   INFO	MysqlSavedSchema   -   Restoring   schema   id   6
(last   modified   at   Position[BinlogPosition[mysql-
bin.000004:517625],   lastHeartbeat=1637246435111])
23:15:39,299   INFO	MysqlSavedSchema   -   Restoring   schema   id   1
(last   modified   at   Position[BinlogPosition[mysql-
bin.000004:158612],   lastHeartbeat=0])
23:15:39,342   INFO	MysqlSavedSchema   -   beginning   to   play
deltas...
23:15:39,343   INFO	MysqlSavedSchema   -   played   5   deltas   in   1ms
{"database":"test_maxwell","table":"test2","type":"bootstrap-
start","ts":1637248539,"data":{}}
23:15:39,367   INFO	SynchronousBootstrapper   -   bootstrapping
started   for   test_maxwell.test2
23:15:39,369 INFO BinlogConnectorReplicator - Setting initial
binlog   pos   to:   mysql-bin.000004:611096
{"database":"test_maxwell","table":"test2","type":"bootstrap-
insert","ts":1637248539,"data":{"id":1,"name":"aa"}}
{"database":"test_maxwell","table":"test2","type":"bootstrap-
insert","ts":1637248539,"data":{"id":2,"name":"bb"}}
{"database":"test_maxwell","table":"test2","type":"bootstrap-
insert","ts":1637248539,"data":{"id":3,"name":"cc"}}
{"database":"test_maxwell","table":"test2","type":"bootstrap-
insert","ts":1637248539,"data":{"id":4,"name":"dd"}}
{"database":"test_maxwell","table":"test2","type":"bootstrap-
complete","ts":1637248539,"data":{}}
23:15:39,387   INFO	SynchronousBootstrapper   -   bootstrapping
ended   for   #8   test_maxwell.test2
23:15:39,465   INFO	BinaryLogClient   -   Connected   to
hadoop102:3306 at mysql-bin.000004/611096 (sid:6379, cid:108)
23:15:39,465 INFO   BinlogConnectorLifecycleListener - Binlog
connected.

3  当数据全部初始化完成以后,Maxwell 的元数据会变化

is_complete  字段从 0 变为 1

start_at  字段从 null 变为具体时间(数据同步开始时间)

complete_at  字段从 null 变为具体时间(数据同步结束时间)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大数据技术之 Maxwell(1.29.2版本)(最新最全教程) 的相关文章

  • 如何在Android移动网站中强制使用数字键盘

    我有一个移动网站 它有一些 HTMLinput其中的元素 如下所示
  • 为什么 PayPal 无法在 WinRT WebView 控件内工作

    我正在编写一个 Windows 8 应用程序 用户可以在其中进行应用内购买 我们的客户为我们提供了 REST API 基本上 我从这个 REST API 获取产品信息 如果用户选择购买产品 我会告诉 REST API 开始交易 因此 我收到
  • WebView 上传 HTML 不起作用[重复]

    这个问题在这里已经有答案了 可能的重复 WebView中的文件上传 https stackoverflow com questions 5907369 file upload in webview 我希望这个问题有一个简单的答案 我的应用程
  • 从 TypeScript 调用 Android 方法

    Android 将 JS 接口注入到 Web 视图中 JavaScriptInterface javaScriptInterface new JavaScriptInterface this browser addJavascriptInt
  • Android 上带有 asynctask 的 Webview

    我想做的是进度对话框等待加载项目webview 我该怎么做dialog dismiss 事件取决于加载项目webview public class asynctask extends AsyncTask
  • 为什么我在使用 WifiP2pManager 时总是显示 BUSY?

    我正在尝试使用 Wi Fi Direct 连接两个 Android 设备 在我的 HTC 手机 One SV 上它似乎可以工作 但在我的第二台设备 LG Optimus 4xhd 上它不起作用 在我的 onResume 函数中 我启动以下线
  • Android WebViewClient url重定向(Android URL加载系统)

    我尝试使用以下方法拦截 webview 请求 ShouldInterceptRequest 里面我用了HttpUrlConnection为了从服务器获取数据 我将其设置为遵循重定向 这对 webviewclient 是透明的 这意味着当我返
  • Android < 4.3 WebView https 错误:回退到 SSLv3,因为主机不容忍 TLS

    我的应用程序包含一个WebView加载 httpsurl 我注意到 Android 版本 gt 4 3一切正常 但在较低版本上我收到此错误 external chromium net http http stream factory imp
  • 如何在WebView中隐藏滚动条?

    我切换到WKWebView因为UIWeb视图Apple 不再建议使用 使用以下代码从 WebView 中的容器加载 HTML 文件 let webview myWKWebViewClass webview for Bundle main f
  • 如何在 Android WebView 中从远程 URL 访问本地资源?

    要加载 HTML 中的资源 我使用 URLfile android asset my image png 当我在本地加载 HTML 时 它可以工作 例如 使用WebView loadData method 但是 我无法从远程网站加载本地资源
  • Webview 不显示带有颜色的文本

    在我的应用程序中 我在 webview 中显示一些 Html 内容 String webViewConent this is some span style color 2ecc71 sample span string webView l
  • 如何在 1 个活动 (android) 中显示 2 个视图?

    假设我打开了一个网络视图 public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R layout ma
  • 如何在Webview中保存用户名和密码

    目前 我还在学习Android开发的过程中 所以如果我的这个问题对你来说不太容易理解 请原谅 我创建了一个 Android 应用程序 它使用 RecyclerView 显示一组列表 当用户单击列表中的每个名称时 它会将它们重定向到一组不同的
  • JavaFX 中 WebView 的性能

    我有一个 HTML5 UI 和一个 Java 后端 并且希望避免在纯 java 中重建 HTML ui 所以我的想法是运行本地 Web 服务器并使用 WebView 在 本机 窗口中呈现它 解决方案似乎是使用可以嵌入到 swing 中的 J
  • 在webview android中加载本地html文件

    我正在尝试在 android 的 webview 中加载 html 文件的内容 但是 它给了我 网页不可用错误 如果我尝试使用谷歌或雅虎等网站 它们就会起作用 html文件位于src gt main gt assests gt index
  • Web 视图未在 Android 中加载本地 html 文件

    I am integrating html in android I have created a web view But i am not able load local html page Surprisingly web view
  • 在 WebView 中注入 Javascript 桥

    我想从 Android 网页中提取一些内容 我知道有一些库可以解析 HTML 但我想也许我可以稍微作弊一下 这就是我正在做的 使用应用程序上下文以编程方式创建 WebView 因此不必在 UI 中显示它 加载网页 附上JS接口 注入一些 J
  • Android WebView setCertificate 问题 SSL 问题

    我看过很多关于 SSL 错误的帖子和信息 并且我自己也偶然发现了一个 我尝试使用 GlobalSign CA BE 证书通过 Android WebView 访问网页 但收到不受信任的错误 对于大多数手机来说 处理这个问题效果很好 只需告诉
  • 关闭特定url上的AngularJS窗口

    我是 angularjs 的新手 所以这个问题对于经验者来说可能看起来很愚蠢 但我真的无法执行此操作 任何人都可以告诉我如何在到达特定网址后从 webview 返回到应用程序 就像我正在打开一个浏览器中的窗口用于支付过程 所以我需要的是 当
  • 如何使用onDraw(Canvas)获取WebView的位图快照(Android)

    我曾经使用 capturePicture 方法来制作 WebView 的快照 此方法在 API 级别 19 中已弃用 该文档说 使用 onDraw Canvas 获取 WebView 的位图快照 但我真的不知道它是什么意思 你能教我如何解决

随机推荐

  • matlab相机标定知识整理

    matlab相机标定知识整理 单目相机标定 单目相机标定 内参矩阵 cameraParams Intrinsics K 或者 cameraParams K 旋转矩阵 cameraParams RotationMatrices 有待确定 ca
  • ElasticSearch6.8.4&kibana6.8.4 安装教程

    引言 客户机装的 ElasticSearch 6 8 4 所以本地安装单机测试使用 故而记录一下 虚拟机内的Linux版本为 centos7 依赖环境配置 安装JDK 安装JDK教程 可看我这篇文章 https blog csdn net
  • CSS 中过渡动画(transition)的使用

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 前言 通过模仿进度条进度 来练习使用过渡动画 HTML代码如下
  • 【云原生】k8s的集群调度

    k8s中的list watch机制 1 1 list watc机制的概念运用 Kubernetes 是通过 List Watch 的机制进行每个组件的协作 保持数据同步的 每个组件之间的设计实现了解耦 用户是通过 kubectl 根据配置文
  • Pandas处理Excel超简单

    前言 前几天有朋友咨询我关于学习 Python 和 VBS 的疑问 因为他想要将自己繁杂的 Excel 操作自动化 他了解到通过 Python 和 VBS 都可以达到他的目的 所以他在纠结到底学哪个 因为我就是搞 Python 得嘛 所以我
  • 使用matlab写二维数字波束形成程序并输出

    使用 MATLAB 写二维数字波束形成程序的步骤是 1 使用离散傅立叶变换 DFT 计算输入信号的频谱 2 计算波束形成器的权重矩阵 3 使用矩阵乘法计算输出信号的频谱 4 使用逆离散傅立叶变换 IDFT 计算输出信号 最后 输出信号就是二
  • 多态的概念、定义以及实现

    多态的概念 1 多态 多态的概念 通俗来说 就是多种形态 具体点就是去完成某个行为 当不同的对象去完成时会产生出不同 的状态 2 举个栗子 比如买票这个行为 当普通人买票时 是全价买票 学生买票时 是半价买票 军人买票时是优 先买票 再举个
  • OBCP考试经验分享

    1 考试大纲 2 考试范围 官方文档 教材 视频 obcp模拟试题 2题左右 实验手册 3 考试总结 备份恢复占比很少 1道题左右 分布式事务 2道题左右 参与者 协调者 分布式架构 4道题左右 租户 资源池 unit创建扩容 Sql引擎
  • tril--下三角矩阵的抽取

    功能简介 抽取下三角矩阵 语法格式 L tril X k 抽取矩阵中第k条对角线及其以下的元素 k 0指主对角线 k gt 0指主对角线以上的第k条对角线 k lt 0指主对角线以下的第k条对角线 格式变体 L tril X 返回矩阵的下三
  • FFMPEG转码后得到的MP4必须要加载完才能播放的问题

    使用videoview时出现提示 不适合在此设备上播放 但是下载之后又可以播 百思不解 还是看下高人的解决方法 FFMpeg转码由此得到的mp4文件中 meta信息是在文件尾部的 而 videoview 在没有得到meta信息前不会播放文件
  • c++ decltype推导类型

    一 decltype关键字简介 在C 11中 decltype 是一个操作符 用于查询表达式的数据类型 而不会计算实际执行表达式的值 其语法如下 decltype expression var decltype 分析表达式并推导出其类型 它
  • Java中的String,这一篇就够了

    目录 1 String的重要性 2 常用语法 2 1字符串构造 2 2 String对象的比较 2 3 字符串查找 2 4 转化 2 5字符串替换 2 6字符串拆分 示例1 实现字符串的拆分处理 示例2 字符串的部分拆分 示例3 拆分IP地
  • python爬虫从入门到精通

    目录 一 正确认识Python爬虫 二 了解爬虫的本质 1 熟悉Python编程 2 了解HTML 3 了解网络爬虫的基本原理 4 学习使用Python爬虫库 三 了解非结构化数据的存储 1 本地文件 2 数据库 四 掌握各种技巧 应对特殊
  • Vue3中如何点击外部button进行van-form表单验证

    Vue3中如何点击外部button进行表单验证 1 html页面 1 1 代码 1 2 注意项 2 JS部分核心代码 1 html页面 1 1 代码
  • Echarts双x轴不等分堆叠柱状图加折线

    效果图 核心配置 在指定x轴显示柱状图 1 series data数据格式 value x轴名称 117 第一项代表在x轴显示的下标位置 117为数据量 每个柱状图都显示单独的名称 1 在首组数据前再添加一项数据 数据量为0 视图就无法显示
  • Biggest Number深搜

    Description You have a maze with obstacles and non zero digits in it You can start from any square walk in the maze and
  • 【设计模式】装饰器模式

    装饰器模式 Decorator Pattern 允许向一个现有的对象添加新的功能 同时又不改变其结构 这种类型的设计模式属于结构型模式 它是作为现有的类的一个包装 装饰器模式通过将对象包装在装饰器类中 以便动态地修改其行为 这种模式创建了一
  • Ogre:Hardwarebuffer

    Ogre Hardwarebuffer 分类 OGRE 2012 07 03 15 56 1097人阅读 评论 0 收藏 举报 buffer float byte 存储 图形 upload Ogre中的硬件缓存是指在显卡上的存储 这和在内存
  • matlab小问题

    编了一个MATLAB小程序 遇到这样的问题 首先代码如下 filename strcat 00 int2str i jpg n i 1 filename 问题为 Subscripted assignment dimension mismat
  • 大数据技术之 Maxwell(1.29.2版本)(最新最全教程)

    第 1 章 Maxwell 概述 1 1 Maxwell 定义 Maxwell 是由美国 Zendesk 开源 用 Java 编写的 MySQL 实时抓取软件 实时读取MySQL 二进制日志 Binlog 并生成 JSON格式的消息 作为生