当前位置: 首页 > news >正文

笔记【尚硅谷】大数据Canal教程丨Alibaba数据实时同步神器

  1. 视频教程:【尚硅谷】大数据Canal教程丨Alibaba数据实时同步神器
  2. 教程资料:https://pan.baidu.com/s/1VhGBcqeywM6jyXJxtytd1w?pwd=6666,提取码:6666
  3. 本套教程以Canal的底层原理展开讲解,细致地介绍了Canal的安装部署及常见应用,详细讲解了如何实现MySQL数据的采集,并将数据分别发送至Kafka,同时使用TCP模式深层解析封装的数据,并实现自定义数据格式。

  1. 官方文档:Home · alibaba/canal Wiki · GitHub 
  2. MySQL如何实时同步数据到ES?试试这款阿里开源的神器! - 简书
  3. 阿里的数据同步神器——Canal_阿里canal_恒哥~Bingo的博客-CSDN博客

目录

P01【01-尚硅谷-大数据采集技术-Canal(课程介绍)】

P02【02-尚硅谷-大数据采集技术-Canal(什么是Canal)】

P03【03-尚硅谷-大数据采集技术-Canal(MySQL Binlog介绍)】

P04【04-尚硅谷-大数据采集技术-Canal(工作原理)】

P05【05-尚硅谷-大数据采集技术-Canal(使用场景)】

P06【06-尚硅谷-大数据采集技术-Canal(MySQL 环境准备)】

P07【07-尚硅谷-大数据采集技术-Canal(下载与安装)】

P08【08-尚硅谷-大数据采集技术-Canal(TCP模式 创建项目&Canal封装数据格式分析)】

P09【09-尚硅谷-大数据采集技术-Canal(TCP模式 代码编写 创建连接&拉取数据)】

P10【10-尚硅谷-大数据采集技术-Canal(TCP模式 代码编写 解析结果数据并打印)】

P11【11-尚硅谷-大数据采集技术-Canal(TCP模式 代码测试)】

P12【12-尚硅谷-大数据采集技术-Canal(Kafka模式 配置文件修改)】

P13【13-尚硅谷-大数据采集技术-Canal(Kafka模式 案例测试)】


P01【01-尚硅谷-大数据采集技术-Canal(课程介绍)】

canal:实时采集mysql中变化的数据,新增、修改、删除,使用canal实时监控到修改的数据,并将修改的数据写到消息队列供实时计算框架(spark streaming、flink)使用。

前置知识:

  1. Kafka:将采集到的实时数据写入消息队列中,大数据领域最为主流的消息队列kafka。
  2. Zookeeper:kafka的搭建及运行依赖于kafka。
  3. MySQL:canal实时抓取mysql中的写数据变化。
  4. Java:案例代码。

尚硅谷大数据技术之Canal

  1. 第1章 Canal入门
  2. 第2章 MySql的准备
  3. 第3章 Canal的下载和安装
  4. 第4章 实时监控测试
    1. TCP模式测试
    2. Kafka模式测试

P02【02-尚硅谷-大数据采集技术-Canal(什么是Canal)】

Canal是用Java 开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。canal:采集日志。

Canal主要支持了MySQL的Binlog解析,解析完成后才利用Canal Client来处理获得的相关数据。(数据库同步需要阿里的Otter中间件,基于Canal)。

P03【03-尚硅谷-大数据采集技术-Canal(MySQL Binlog介绍)】

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

P04【04-尚硅谷-大数据采集技术-Canal(工作原理)】

P05【05-尚硅谷-大数据采集技术-Canal(使用场景)】

P06【06-尚硅谷-大数据采集技术-Canal(MySQL 环境准备)】

CREATE TABLE user_info(`id` VARCHAR(255),`name` VARCHAR(255),`sex` VARCHAR(255)
);[root@node1 ~]# mysql -V
mysql  Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using  EditLine wrapper
[root@node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@node1 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.29 MySQL Community Server (GPL)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| gmall-2021         |
| hive3              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)mysql> use gmall-2021;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> 
mysql> show tables;
+----------------------+
| Tables_in_gmall-2021 |
+----------------------+
| user_info            |
+----------------------+
1 row in set (0.00 sec)mysql> select * from user_info;
+------+------+------+
| id   | name | sex  |
+------+------+------+
| 001  | aaa  | 男   |
| 002  | bbb  | 女   |
+------+------+------+
2 rows in set (0.00 sec)mysql> 

ERROR 1193 (HY000): Unknown system variable ‘validate_password_policy‘

CREATE TABLE user_info(`id` VARCHAR(255),`name` VARCHAR(255),`sex` VARCHAR(255)
);
INSERT INTO user_info VALUES('1001','zhangsan','male');SET GLOBAL validate_password_length=4;SHOW VARIABLES LIKE 'validate_password%';ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';INSTALL PLUGIN validate_password SONAME 'validate_password.so';SELECT plugin_name, plugin_status FROM information_schema.plugins WHERE plugin_name LIKE 'validate%';SHOW VARIABLES LIKE 'validate_password%';SET GLOBAL validate_password_policy=0;SET GLOBAL validate_password_length=4;SET GLOBAL validate_password_policy=0;GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal' ;
[root@node1 ~]# sudo vim /etc/my.cnf
[root@node1 ~]# sudo systemctl restart mysqld
[root@node1 ~]# cd /var/lib/mysql
[root@node1 mysql]# ll
总用量 188508
-rw-r----- 1 mysql mysql       56 2月  23 11:43 auto.cnf
-rw------- 1 mysql mysql     1680 2月  23 11:43 ca-key.pem
-rw-r--r-- 1 mysql mysql     1112 2月  23 11:43 ca.pem
-rw-r--r-- 1 mysql mysql     1112 2月  23 11:43 client-cert.pem
-rw------- 1 mysql mysql     1680 2月  23 11:43 client-key.pem
drwxr-x--- 2 mysql mysql       62 3月   1 16:00 gmall@002d2021
drwxr-x--- 2 mysql mysql     8192 2月  23 22:02 hive3
-rw-r----- 1 mysql mysql      683 3月   1 16:10 ib_buffer_pool
-rw-r----- 1 mysql mysql 79691776 3月   1 16:10 ibdata1
-rw-r----- 1 mysql mysql 50331648 3月   1 16:10 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 2月  23 11:43 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 3月   1 16:10 ibtmp1
drwxr-x--- 2 mysql mysql     4096 2月  23 11:43 mysql
-rw-r----- 1 mysql mysql      154 3月   1 16:10 mysql-bin.000001
-rw-r----- 1 mysql mysql       19 3月   1 16:10 mysql-bin.index
srwxrwxrwx 1 mysql mysql        0 3月   1 16:10 mysql.sock
-rw------- 1 mysql mysql        6 3月   1 16:10 mysql.sock.lock
drwxr-x--- 2 mysql mysql     8192 2月  23 11:43 performance_schema
-rw------- 1 mysql mysql     1676 2月  23 11:43 private_key.pem
-rw-r--r-- 1 mysql mysql      452 2月  23 11:43 public_key.pem
-rw-r--r-- 1 mysql mysql     1112 2月  23 11:43 server-cert.pem
-rw------- 1 mysql mysql     1680 2月  23 11:43 server-key.pem
drwxr-x--- 2 mysql mysql     8192 2月  23 11:43 sys
[root@node1 mysql]# ll
总用量 188508
-rw-r----- 1 mysql mysql       56 2月  23 11:43 auto.cnf
-rw------- 1 mysql mysql     1680 2月  23 11:43 ca-key.pem
-rw-r--r-- 1 mysql mysql     1112 2月  23 11:43 ca.pem
-rw-r--r-- 1 mysql mysql     1112 2月  23 11:43 client-cert.pem
-rw------- 1 mysql mysql     1680 2月  23 11:43 client-key.pem
drwxr-x--- 2 mysql mysql       62 3月   1 16:00 gmall@002d2021
drwxr-x--- 2 mysql mysql     8192 2月  23 22:02 hive3
-rw-r----- 1 mysql mysql      683 3月   1 16:10 ib_buffer_pool
-rw-r----- 1 mysql mysql 79691776 3月   1 16:12 ibdata1
-rw-r----- 1 mysql mysql 50331648 3月   1 16:12 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 2月  23 11:43 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 3月   1 16:12 ibtmp1
drwxr-x--- 2 mysql mysql     4096 2月  23 11:43 mysql
-rw-r----- 1 mysql mysql      452 3月   1 16:12 mysql-bin.000001
-rw-r----- 1 mysql mysql       19 3月   1 16:10 mysql-bin.index
srwxrwxrwx 1 mysql mysql        0 3月   1 16:10 mysql.sock
-rw------- 1 mysql mysql        6 3月   1 16:10 mysql.sock.lock
drwxr-x--- 2 mysql mysql     8192 2月  23 11:43 performance_schema
-rw------- 1 mysql mysql     1676 2月  23 11:43 private_key.pem
-rw-r--r-- 1 mysql mysql      452 2月  23 11:43 public_key.pem
-rw-r--r-- 1 mysql mysql     1112 2月  23 11:43 server-cert.pem
-rw------- 1 mysql mysql     1680 2月  23 11:43 server-key.pem
drwxr-x--- 2 mysql mysql     8192 2月  23 11:43 sys

P07【07-尚硅谷-大数据采集技术-Canal(下载与安装)】

tar -zxvf canal.deployer-1.1.2.tar.gz -C /opt/module/canal

P08【08-尚硅谷-大数据采集技术-Canal(TCP模式 创建项目&Canal封装数据格式分析)】

P09【09-尚硅谷-大数据采集技术-Canal(TCP模式 代码编写 创建连接&拉取数据)】

修改Linux虚拟机的IP地址

package com.atguigu;import com.alibaba.otter.canal.client.CanalConnector;
import com.alibaba.otter.canal.client.CanalConnectors;
import com.alibaba.otter.canal.protocol.Message;import java.net.InetSocketAddress;public class CanalClient {public static void main(String[] args) {//TODO 获取连接//1.获取canal连接对象CanalConnector canalConnector =CanalConnectors.newSingleConnector(newInetSocketAddress("test001", 11111), "example", "", "");while (true) {//TODO 连接canalConnector.connect();//TODO 订阅数据库canalConnector.subscribe("gmall-2021.*");//TODO 获取数据Message message = canalConnector.get(100);}}
}

P10【10-尚硅谷-大数据采集技术-Canal(TCP模式 代码编写 解析结果数据并打印)】

idea快速获取变量名:

  1. .var
  2. ctrl+v
package com.atguigu;import com.alibaba.fastjson.JSONObject;
import com.alibaba.otter.canal.client.CanalConnector;
import com.alibaba.otter.canal.client.CanalConnectors;
import com.alibaba.otter.canal.protocol.CanalEntry;
import com.alibaba.otter.canal.protocol.Message;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;import java.net.InetSocketAddress;
import java.util.List;public class CanalClient {public static void main(String[] args) throws InterruptedException, InvalidProtocolBufferException {//TODO 获取连接//获取canal连接对象CanalConnector canalConnector =CanalConnectors.newSingleConnector(newInetSocketAddress("test001", 11111), "example", "", "");while (true) {//TODO 连接canalConnector.connect();//TODO 订阅数据库canalConnector.subscribe("gmall-2021.*");//TODO 获取数据Message message = canalConnector.get(100);//TODO 获取Entry集合List<CanalEntry.Entry> entries = message.getEntries();//TODO 判断集合是否为空,如果为空,则等待一会儿继续拉取数据if (entries.size() <= 0) {System.out.println("当次抓取没有数据,休息一会儿...");Thread.sleep(1000);} else {//TODO 遍历entries,单条解析for (CanalEntry.Entry entry : entries) {//1.获取表名String tableName = entry.getHeader().getTableName();//2.获取类型CanalEntry.EntryType entryType = entry.getEntryType();//3.获取序列化后的数据ByteString storeValue = entry.getStoreValue();//4.判断当前entryType类型是否为ROWDATAif (CanalEntry.EntryType.ROWDATA.equals(entryType)) {//5.反序列化数据CanalEntry.RowChange rowChange = CanalEntry.RowChange.parseFrom(storeValue);//6.获取当前事件的操作类型CanalEntry.EventType eventType = rowChange.getEventType();//7.获取数据集List<CanalEntry.RowData> rowDataList = rowChange.getRowDatasList();//8.遍历rowDataList,并打印数据集for (CanalEntry.RowData rowData : rowDataList) {JSONObject beforeData = new JSONObject();List<CanalEntry.Column> beforeColumnsList = rowData.getBeforeColumnsList();for (CanalEntry.Column column : beforeColumnsList) {beforeData.put(column.getName(), column.getValue());}JSONObject afterData = new JSONObject();List<CanalEntry.Column> afterColumnsList = rowData.getAfterColumnsList();for (CanalEntry.Column column : afterColumnsList) {afterData.put(column.getName(), column.getValue());}//数据打印System.out.println("Table:" + tableName +",EventType:" + eventType +",Before:" + beforeData +",After:" + afterData);}} else {System.out.println("当前操作类型为:" + entryType);}}}}}
}

P11【11-尚硅谷-大数据采集技术-Canal(TCP模式 代码测试)】

启动canal服务端

连接成功
Last login: Thu Mar  2 14:43:07 2023 from 192.168.88.1
[root@node1 ~]# cd /opt/module/canal/bin
[root@node1 bin]# cd ../
[root@node1 canal]# ll
总用量 4
drwxr-xr-x 2 root root   76 3月   1 16:43 bin
drwxr-xr-x 5 root root   93 3月   1 16:49 conf
drwxr-xr-x 2 root root 4096 3月   1 16:43 lib
drwxrwxrwx 2 root root    6 11月 26 2018 logs
[root@node1 canal]# bin/startup.sh 
cd to /opt/module/canal/bin for workaround relative path
LOG CONFIGURATION : /opt/module/canal/bin/../conf/logback.xml
canal conf : /opt/module/canal/bin/../conf/canal.properties
CLASSPATH :/opt/module/canal/bin/../conf:/opt/module/canal/bin/../lib/zookeeper-3.4.5.jar:/opt/module/canal/bin/../lib/zkclient-0.10.jar:/opt/module/canal/bin/../lib/spring-tx-3.2.18.RELEASE.jar:/opt/module/canal/bin/../lib/spring-orm-3.2.18.RELEASE.jar:/opt/module/canal/bin/../lib/spring-jdbc-3.2.18.RELEASE.jar:/opt/module/canal/bin/../lib/spring-expression-3.2.18.RELEASE.jar:/opt/module/canal/bin/../lib/spring-core-3.2.18.RELEASE.jar:/opt/module/canal/bin/../lib/spring-context-3.2.18.RELEASE.jar:/opt/module/canal/bin/../lib/spring-beans-3.2.18.RELEASE.jar:/opt/module/canal/bin/../lib/spring-aop-3.2.18.RELEASE.jar:/opt/module/canal/bin/../lib/snappy-java-1.1.7.1.jar:/opt/module/canal/bin/../lib/slf4j-api-1.7.12.jar:/opt/module/canal/bin/../lib/simpleclient_pushgateway-0.4.0.jar:/opt/module/canal/bin/../lib/simpleclient_httpserver-0.4.0.jar:/opt/module/canal/bin/../lib/simpleclient_hotspot-0.4.0.jar:/opt/module/canal/bin/../lib/simpleclient_common-0.4.0.jar:/opt/module/canal/bin/../lib/simpleclient-0.4.0.jar:/opt/module/canal/bin/../lib/scala-reflect-2.11.12.jar:/opt/module/canal/bin/../lib/scala-logging_2.11-3.8.0.jar:/opt/module/canal/bin/../lib/scala-library-2.11.12.jar:/opt/module/canal/bin/../lib/rocketmq-remoting-4.3.0.jar:/opt/module/canal/bin/../lib/rocketmq-logging-4.3.0.jar:/opt/module/canal/bin/../lib/rocketmq-common-4.3.0.jar:/opt/module/canal/bin/../lib/rocketmq-client-4.3.0.jar:/opt/module/canal/bin/../lib/protobuf-java-3.6.1.jar:/opt/module/canal/bin/../lib/oro-2.0.8.jar:/opt/module/canal/bin/../lib/netty-tcnative-boringssl-static-1.1.33.Fork26.jar:/opt/module/canal/bin/../lib/netty-all-4.1.6.Final.jar:/opt/module/canal/bin/../lib/netty-3.2.2.Final.jar:/opt/module/canal/bin/../lib/mysql-connector-java-5.1.40.jar:/opt/module/canal/bin/../lib/metrics-core-2.2.0.jar:/opt/module/canal/bin/../lib/lz4-java-1.4.1.jar:/opt/module/canal/bin/../lib/logback-core-1.1.3.jar:/opt/module/canal/bin/../lib/logback-classic-1.1.3.jar:/opt/module/canal/bin/../lib/kafka-clients-1.1.1.jar:/opt/module/canal/bin/../lib/kafka_2.11-1.1.1.jar:/opt/module/canal/bin/../lib/jsr305-3.0.2.jar:/opt/module/canal/bin/../lib/jopt-simple-5.0.4.jar:/opt/module/canal/bin/../lib/jctools-core-2.1.2.jar:/opt/module/canal/bin/../lib/jcl-over-slf4j-1.7.12.jar:/opt/module/canal/bin/../lib/jackson-databind-2.9.6.jar:/opt/module/canal/bin/../lib/jackson-core-2.9.6.jar:/opt/module/canal/bin/../lib/jackson-annotations-2.9.0.jar:/opt/module/canal/bin/../lib/ibatis-sqlmap-2.3.4.726.jar:/opt/module/canal/bin/../lib/httpcore-4.4.3.jar:/opt/module/canal/bin/../lib/httpclient-4.5.1.jar:/opt/module/canal/bin/../lib/h2-1.4.196.jar:/opt/module/canal/bin/../lib/guava-18.0.jar:/opt/module/canal/bin/../lib/fastsql-2.0.0_preview_644.jar:/opt/module/canal/bin/../lib/fastjson-1.2.28.jar:/opt/module/canal/bin/../lib/druid-1.1.9.jar:/opt/module/canal/bin/../lib/disruptor-3.4.2.jar:/opt/module/canal/bin/../lib/commons-logging-1.1.3.jar:/opt/module/canal/bin/../lib/commons-lang3-3.4.jar:/opt/module/canal/bin/../lib/commons-lang-2.6.jar:/opt/module/canal/bin/../lib/commons-io-2.4.jar:/opt/module/canal/bin/../lib/commons-compress-1.9.jar:/opt/module/canal/bin/../lib/commons-codec-1.9.jar:/opt/module/canal/bin/../lib/commons-beanutils-1.8.2.jar:/opt/module/canal/bin/../lib/canal.store-1.1.2.jar:/opt/module/canal/bin/../lib/canal.sink-1.1.2.jar:/opt/module/canal/bin/../lib/canal.server-1.1.2.jar:/opt/module/canal/bin/../lib/canal.protocol-1.1.2.jar:/opt/module/canal/bin/../lib/canal.prometheus-1.1.2.jar:/opt/module/canal/bin/../lib/canal.parse.driver-1.1.2.jar:/opt/module/canal/bin/../lib/canal.parse.dbsync-1.1.2.jar:/opt/module/canal/bin/../lib/canal.parse-1.1.2.jar:/opt/module/canal/bin/../lib/canal.meta-1.1.2.jar:/opt/module/canal/bin/../lib/canal.instance.spring-1.1.2.jar:/opt/module/canal/bin/../lib/canal.instance.manager-1.1.2.jar:/opt/module/canal/bin/../lib/canal.instance.core-1.1.2.jar:/opt/module/canal/bin/../lib/canal.filter-1.1.2.jar:/opt/module/canal/bin/../lib/canal.deployer-1.1.2.jar:/opt/module/canal/bin/../lib/canal.common-1.1.2.jar:/opt/module/canal/bin/../lib/aviator-2.2.1.jar:/opt/module/canal/bin/../lib/aopalliance-1.0.jar:/opt/module/canal/bin/../lib/aliware-apache-rocketmq-cloud-1.0.jar:.:/export/server/jdk1.8.0_241/lib/dt.jar:/export/server/jdk1.8.0_241/lib/tools.jar
cd to /opt/module/canal for continue
[root@node1 canal]# jps
44804 Jps
44284 CanalLauncher
[root@node1 canal]# 

P12【12-尚硅谷-大数据采集技术-Canal(Kafka模式 配置文件修改)】

P13【13-尚硅谷-大数据采集技术-Canal(Kafka模式 案例测试)】

kafka依赖zookeeper,启动kafka之前先启动zookeeper。

kafka启动消费者:bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic canal_test

单条sql

多条sql

一个entry可能包含多条数据,操作数据不方便,做数据分析搞单行数据处理,需要将一行数据拆分为两行数据。

相关文章:

笔记【尚硅谷】大数据Canal教程丨Alibaba数据实时同步神器

视频教程&#xff1a;【尚硅谷】大数据Canal教程丨Alibaba数据实时同步神器教程资料&#xff1a;https://pan.baidu.com/s/1VhGBcqeywM6jyXJxtytd1w?pwd6666&#xff0c;提取码&#xff1a;6666本套教程以Canal的底层原理展开讲解&#xff0c;细致地介绍了Canal的安装部署及常…...

如何重定向命令行日志信息到指定txt文件?

如果你想把命令行的输出重定向到指定的txt文件&#xff0c;你可以使用一些符号来实现。例如&#xff0c;你可以在命令后面加上>或>>符号&#xff0c;然后指定文件名。例如&#xff1a; command > output.txt 这样就会把command的标准输出保存到output.txt文件中&…...

物理机不能访问虚拟机kali的web服务解决方案记录

目录 环境 问题描述 解决方案 知识补充 效果测试 其他思路 环境 kali&#xff08;nat模式&#xff09;&#xff0c;物理机&#xff0c;可互ping 问题描述 kali的web服务器不能在物理机上访问。 1.本机能ping通虚拟机 2.虚拟机也能ping通本机 3.虚拟机能访问自己的web …...

服务器配置 | 在Windows本地显示远程服务器绘图程序

文章目录方法1&#xff1a;在MobaXterm的终端输入指令方法2&#xff1a;在Pycharm中运行前提概要&#xff0c;需要在本地Windows端显示点云的3d可视化界面 对于点云的3d可视化一般有两种方法&#xff0c;open3d显示或者是mayavi显示。这两个库都可以使用pip install来实现安装…...

高级信息系统项目管理(高项 软考)原创论文——质量管理(2)

<...

从0开始学python -47

Python CGI编程 -2 GET和POST方法 浏览器客户端通过两种方法向服务器传递信息&#xff0c;这两种方法就是 GET 方法和 POST 方法。 使用GET方法传输数据 GET方法发送编码后的用户信息到服务端&#xff0c;数据信息包含在请求页面的URL上&#xff0c;以"?"号分割…...

【数据结构】八大经典排序总结

文章目录一、排序的概念及其运用1.排序的概念2.常见排序的分类3.排序的运用二、常见排序算法的实现1.直接插入排序1.1排序思想1.2代码实现1.3复杂度及稳定性1.4特性总结2.希尔排序2.1排序思想2.3复杂度及稳定性2.4特性总结3.直接选择排序3.1排序思想3.2代码实现3.3复杂度及稳定…...

BI的能力边界:能解决的企业问题和不擅长的领域

数字化转型本就需要借助信息化相关技术、思想来完成&#xff0c;所以说信息化建设同样是数字化转型过程中非常重要的一环&#xff0c;而这就是商业智能BI和数字化转型的关系 BI 能解决的企业问题 数据是企业的重要资产&#xff0c;也是企业商业智能BI的核心要求。通常&#x…...

金三银四面试必备,“全新”突击真题宝典,阿里腾讯字节都稳了

前言招聘旺季就到了&#xff0c;不知道大家是否准备好了&#xff0c;面对金三银四的招聘旺季&#xff0c;如果没有精心准备那笔者认为那是对自己不负责任&#xff1b;就我们Java程序员来说&#xff0c;多数的公司总体上面试都是以自我介绍项目介绍项目细节/难点提问基础知识点考…...

MYSQL 基础篇 | 02-MYSQL基础应用

文章目录1 MySQL概述2 SQL2.1 SQL通用语法2.2 SQL分类2.3 DDL2.3.1 数据库操作2.3.2 表操作2.4 DML2.4.1 添加数据2.4.2 修改数据2.4.3 删除数据2.5 DQL2.5.1 基础查询2.5.2 条件查询2.5.3 聚合查询2.5.4 分组查询2.5.5 排序查询2.5.6 分页查询2.5.7 综合练习2.6 DCL2.6.1 管理…...

CSS实现checkbox选中动画

前言 &#x1f44f;CSS实现checkbox选中动画&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义css变量&#xff0c;–checked&#xff0c;表示激活选中色值 :root {--checked: orange; }创建父容器&#xf…...

工业机器人编程调试怎么学

很多人觉得工业机器人很难学学&#xff0c;实际上机器人涉及的知识远比PLC要少。现简单说明一下初学者学习工业机器人编程调试的流程&#xff0c;以AUBO机器人为例&#xff1a; 首先我们需要知道工业机器人的调试学起来不难&#xff0c;远比编程更简单&#xff0c;示教器上的编…...

Java并发包提供了哪些并发工具类?

第19讲 | Java并发包提供了哪些并发工具类&#xff1f; 通过前面的学习&#xff0c;我们一起回顾了线程、锁等各种并发编程的基本元素&#xff0c;也逐步涉及了 Java 并发包中的部分内容&#xff0c;相信经过前面的热身&#xff0c;我们能够更快地理解 Java 并发包。 今天我要…...

systemctl 启动/停止/重新加载 nginx

systemctl 启动/停止/重新加载 nginx 一、新建nginx.service脚本 sudo vim /usr/lib/systemd/system/nginx.service然后按iii进入编辑模式&#xff0c;粘贴如下内容&#xff0c;其中/usr/local/nginx/是进行make && make install之后的文件夹路径&#xff0c;需要根据…...

SSRF学习 3

目录 <1> 什么是SSRF&#xff1f; <2> 通常SSRF会发生在哪些位置&#xff1f; <3> 测试流程 <4> Weblogic-ssrf 复现 (1) 漏洞存在点 (2) 注入HTTP头&#xff0c;利用Redis反弹shell (3) 修复方案 <1> 什么是SSRF&#xff1f; SSRF(Serv…...

Mysql(数据库基础篇)

&#x1f44c; 棒棒有言&#xff1a;也许我一直照着别人的方向飞&#xff0c;可是这次&#xff0c;我想要用我的方式飞翔一次&#xff01;人生&#xff0c;既要淡&#xff0c;又要有味。凡事不必太在意&#xff0c;一切随缘&#xff0c;缘深多聚聚&#xff0c;缘浅随它去。凡事…...

一种全新的图像变换理论的实验(五)——研究目的替代DCT和小波

一、前言 目前在大量的灰度图像测试下&#xff0c;基本确定变换系数ratio取值0-25之间时&#xff0c;逆变化后的图还能基本保障效果&#xff0c;而且越接近0效果越好。本文还是以lenna.bmp灰度图为例&#xff0c;实验不再逆变换&#xff0c;而是把变换后的数据直接输出为bmp的…...

vue3、vite、pinia 快速入门

准备 开发工具及插件IDE:vscode,WebStorm插件&#xff1a;Auto Close Tag、Auto Rename Tag、Live Server通过“&#xff01;”快速生成html模板正式学习安装vue通过CDN的方式导入vue<script src"" target"_blank">https://unpkg.com/vue3/dist/vue.…...

第六章 effect.scheduler功能实现

effect.scheduler功能实现 主要先了解scheduler需要实现什么样的需求&#xff0c;有一下四点&#xff1a; 1 通过 effect 的第二个参数给定一个 scheduler 的 fn 2 effect 第一次执行的时候 还会执行 fn 3 当 响应式对象 set update 不执行fn 而是执行 scheduler 4 如果说…...

软件测试之zentao

禅道 1. 禅道介绍 1.1 禅道项目管理软件是做什么的&#xff1f; 禅道&#xff0c;国产开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体&#xff0c;是一款专业的研发项目管理软件&#xff0c;完整覆盖了研发项目管理的核心流程。禅…...

美颜sdk动态贴纸的实现流程

随着移动互联网时代的到来&#xff0c;各式各样的 APP层出不穷&#xff0c;从最初的微信、 QQ到如今的抖音、快手等等&#xff0c;再到如今的微博、小红书等等&#xff0c;各式各样的 APP不断涌现。从最开始简单的图片展示到视频聊天&#xff0c;再到现如今丰富多样的各种动态贴…...

Web连接器

分模块编写爬虫&#xff08;一&#xff09; 连接器模块基本思路&#xff1a; 输入&#xff1a;url连接输出&#xff1a;url对应的html文本步骤&#xff1a; 定义url和user-agent获取网页的requests对象捕获异常&#xff1a; 403&#xff1a;禁止访问404&#xff1a;页面失效5…...

插上数据的翅膀,开启我升职加薪的梦想之旅

我是麦思思&#xff0c;大学毕业后就进入大厂工作并担任电子消费行业业务部门的数据分析师&#xff0c;对于一个数据分析师而言&#xff0c;Excel是必备技能&#xff0c;函数公式我能随手就来&#xff0c;几十M的文件处理那都是轻轻松松。但是&#xff0c;近几年随着企业业务发…...

来香港饮茶吹水先,免费报名Zabbix Meetup香港站!

Zabbix Meetup 来到香港啦&#xff01; 春暖花开&#xff0c;Zabbix计划5月来到香港&#xff0c;和你一起饮茶吹水&#xff01; 时间&#xff1a;5月某日&#xff0c;周几方便&#xff1f; 预计14:00-17:00 形式&#xff1a;线下交流会&#xff0c;免费&#xff0c;线下&…...

李群李代数求导-常用求导公式

参考 A micro Lie theory for state estimation in robotics manif issues 116 常用求导公式 Operation左雅克比右雅克比X−1\mathcal{X}^{-1}X−1JXX−1−I\mathbf{J}_{\mathcal{X}}^{\mathcal{X}^{-1}}\mathbf{-I}JXX−1​−IJXX−1−AdX\mathbf{J}_{\mathcal{X}}^{\mathc…...

IIS之web服务器的安装、部署以及使用教程(图文详细版)

WEB服务器的部署 打开虚拟机后查看已经开放的端口&#xff0c;可以看到没有TCP 80、TCP 443&#xff0c;说明HTTP服务端口没有打开 打开我的电脑—双击CD驱动器 选择安装可选的Windows组件 选择应用程序服务器—打开Internet信息服务—选择万维网服务和FTP服务 一路确…...

进程的介绍

文章目录一.进程的概念1.1概念1.2进程的组成1.2.1 PCB中描述进程的特征二.进程的虚拟地址空间三.进程间的通信引入线程一.进程的概念 1.1概念 百科的介绍: 换句话说,一个跑起来的程序,就是一个进程,也就是在操作系统中运行的exe程序就是一个进程,如下图的进程列表 进程是操…...

hadoop shell 练习题

hadoop shell 练习题: 利用Hadoop提供的Shell命令完成以下任务(路径中的xxx替换为自己的用户名)&#xff1a; 1、显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息&#xff1b; 示例: hdfs dfs -ls / 2、从HDFS中下载指定文件&#xff1b; 示例: hdfs dfs -get /…...

优化Linux系统性能的必杀技:调整进程优先级!学会使用nice命令,让你的系统飞一般的顺畅!

文章目录前言一. nice命令介绍1.1 nice的介绍1.2 cpu资源的调度1.3 nice是控制内核吗&#xff1f;二. 语法格式及常用选项三. 参考案例3.1 将ls命令的优先级调整为最高3.2 将 find 命令的优先级调整为最低3.3 如何查看nice值四. nice和renice的区别总结前言 大家好&#xff0c…...

fastdds router-3.开始

1. 项目概述 DDS路由器是由eProsima开发的跨平台非图形化应用程序&#xff0c;由Fast DDS提供支持&#xff0c;允许创建一个通信桥&#xff0c;连接两个DDS网络&#xff0c;否则将被隔离。DDS路由器的主要用途是通信两个物理或虚拟分离的DDS网络&#xff0c;这些网络属于不同的…...

wordpress手机自适应/上海seo关键词优化

2019年电商行业发生了诸多变化&#xff0c;体现在&#xff1a;社群运营、私域流量、多渠道会员通三个关键词&#xff0c;即所谓的“私域会员”&#xff0c;无论对于品牌商还是对于中小电商卖家来说“私域会员体系”已经越来越重要了&#xff0c;重要到如果缺了它&#xff0c;后…...

网站建设经营范围/公众号排名优化软件

PropertyDescriptor类&#xff1a; PropertyDescriptor类表示JavaBean类通过存储器导出一个属性。主要方法&#xff1a;   1. getReadMethod()&#xff0c;获得用于读取属性值的方法   2. getWriteMethod()&#xff0c;获得用于写入属性值的方法 注&#xff1a;…...

做网站找谁/世界排名前十位

AngularJS是为了克服html在构建应用上的不足而设计的。HTML是一门很好的为静态文本展示设计的声明式语言&#xff0c;但要构建WEB应用的话它就显得乏力了。 AngularJS使用了不同的方法&#xff0c;它尝试去补足HTML本身在构建应用方面的缺陷。AngularJS通过使用我们称为标识符(…...

织梦欧美网站模板/友情链接的定义

1、先在机器上安装了VMWare&#xff0c;版本为VMware-workstation-4.0.5-6030&#xff0c;可以到其官方网站去下载&#xff0c;然后在下载一个注册机或注册码&#xff0c;我用的注册码为&#xff1a;M1ER8-HRW45-N0HFP-4U0JM 。VMWare的安装没有什么可说的&#xff0c;按照提示…...

门户类网站有哪些/谷歌google官网

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼得到X,Y的数据点后&#xff0c;我尝试用origin7.5的analysis-fit sigmoidal功能拟合出曲线&#xff0c;由于方程太复杂&#xff0c;用公式计算很困难&#xff0c;我想用origin直接对这条曲线求出曲率最大的点&#xff0c;望高人指点…...

如何做旅游网站推销/培训网站推荐

本文讲的是CCF系列奖获奖名单公布&#xff0c;鲍虎军、周志华获CCF王选奖 | CNCC 2017&#xff0c;由中国计算机学会&#xff08;CCF&#xff09;主办&#xff0c;福州市人民政府、福州大学承办&#xff0c;福建师范大学、福建工程学院协办的2017中国计算机大会&#xff08;CNC…...