系统学习Linux-MySQL主从复制及读写分离(五)

news2024/11/18 19:30:18

部署MySQL主从异步复制

在MySQL Master上的配置NTP时间同步服务器

[root@localhost ~]# rpm -q ntp

ntp-4.2.6p5-28.el7.centos.x86_64

[root@localhost ~]# vim /etc/ntp.conf #添加两行

server 127.127.1.0

fudge 127.127.1.0 stratum 8

启动NTP服务

[root@localhost ~]# systemctl enable ntpd
[root@localhost ~]# systemctl start ntpd

在2个Slave节点上配置与Master进行时间同步

[root@localhost ~]# rpm -q ntpdate
ntpdate-4.2.6p5-28.el7.centos.x86_64
[root@localhost ~]# ntpdate 192.168.1.1
31 Jul 10:13:21 ntpdate[9548]: adjust time server 192.168.200.111 offset -0.045710 sec

所有机器上的操作

[root@localhost ~]# yum -y install mariadb mariadb-devel mariadb-server

配置MySQL Master服务器

1、在/etc/my.cnf中修改或者增加如下内容:

[root@localhost ~]# vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-binlog
log-slave-updates=true

 重启MySQL服务器

[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# netstat -lnpt | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      10073/mysqld

2、创建Replication用户

[root@localhost ~]# mysql -uroot -p123456
MariaDB [(none)]> grant replication slave on *.* to 'myslave'@'192.168.1.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

3、获得Master DB的相关信息

供slave连接使用,记录下File和Position的值。

[root@localhost ~]# mysql -uroot -p'123456'
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 104
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show master status;
+---------------------+----------+--------------+------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------+------------------+
| mysql-binlog.000001 |   516864 |              |                  |
+---------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> 

4、备份Master原有数据

如果在生产环境中Master服务器已经运行一段时间,或者Master服务器上已经存在数据,为了保证所有数据的一致性,需要先将Master目前已有的数据全部导给Slave服务器。

备份的方法有很多,可以直接备份数据文件,也可以使用mysqldump工具。全新搭建的环境不存在数据备份问题。

[root@mysql-master ~]# mysqldump -uroot --all-databases > /root/alldbbackup.sql
[root@mysql-master ~]# scp /root/ alldbbackup.sql root@192.168.1.2:/root/
[root@mysql-master ~]# scp /root/ alldbbackup.sql root@192.168.1.3:/root/

5、在MySQL Slave上的配置

导入Master的备份脚本

[root@localhost ~]# systemctl start mariadb

[root@localhost ~]# mysql -uroot -p < /root/alldbbackup.sql

从库连接主库进行测试,如果连接成功说明主库配置成功

[root@localhost ~]# mysql -u myslave -p123456 -h 192.168.200.1

6.修改MySQL配置文件

配置多个从服务器时依次设置server-id号

[root@localhost ~]# vim /etc/my.cnf
[mysqld]
server-id=2
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index、

修改完后重启数据库
[root@localhost ~]# systemctl restart mariadb

7.在Slave服务器授权,启动从库,进行主从库数据同步

参数说明:

CHANGE MASTER TO

MASTER_HOST='master_host_name', #主服务器的IP地址

MASTER_USER='replication_user_name', #主服务器授权的用户

MASTER_PASSWORD='replication_password', #主服务器授权的密码

MASTER_LOG_FILE='recorded_log_file_name', #主服务器二进制日志的文件名

MASTER_LOG_POS=recorded_log_position; #日志文件的开始位置

[root@localhost ~]# mysql -uroot -p123456
MariaDB [(none)]>  stop slave;

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.200.1',MASTER_USER='myslave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-binlog.000001',MASTER_LOG_POS=516864;

MariaDB [(none)]> start slave;

MariaDB [test1]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.1
                  Master_User: myslave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-binlog.000001
          Read_Master_Log_Pos: 516864
               Relay_Log_File: relay-log-bin.000002
                Relay_Log_Pos: 1894
        Relay_Master_Log_File: mysql-binlog.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 516864
              Relay_Log_Space: 2186
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
1 row in set (0.02 sec)

MariaDB [test1]> 

8.测试复制是否成功

在Master服务器上创建一个数据库或者表,到Slave服务器上查看,如果配置成功就可以成功同步


在Amoeba主机上安装java环境

因为Amoeba是基于jdk1.5版本开发的,所以官方推荐使用1.5或者1.6版本,高版本不建议使用。

 安装并配置Amoeba

[root@localhost ~]# mkdir /usr/local/amoeba

拉进来一个tar安装包
[root@localhost ~]# '//tmp/VMwareDnD/PBHaKE/amoeba-mysql-binary-2.2.0.tar.gz' ^C
[root@localhost ~]# mv /tmp/VMwareDnD/PBHaKE/amoeba-mysql-binary-2.2.0.tar.gz ~
[root@localhost ~]# tar xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
[root@localhost ~]# chmod -R 755 /usr/local/amoeba/

配置Amoeba读写分离,两个Slave读负载均衡

在Master、Slave1、Slave2服务器中配置Amoeba的访问授权

master主机添加授权
MariaDB [(none)]> grant all on *.* to 'test'@'192.168.1.%' identified by '123.com';
Query OK, 0 rows affected (0.00 sec)

server1从数据库添加授权
MariaDB [(none)]> grant all on *.* to 'test'@'192.168.1.%' identified by '123.com';
Query OK, 0 rows affected (0.00 sec)

server2从数据库添加授权
MariaDB [(none)]> grant all on *.* to 'test'@'192.168.1.%' identified by '123.com';
Query OK, 0 rows affected (0.00 sec)

刷新授权
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

回到Amoeba服务机修改配置文件

编辑amoeba.xml配置文件

vim /usr/local/amoeba/conf/amoeba.xml

[root@localhost ~]# vim /usr/local/amoeba/conf/amoeba.xml 


 30                                         <property name="user">amoeba</property>
 31 
 32                                         <property name="password">123456</property>

下翻至115行把注释掉的删除

115                 <property name="defaultPool">master</property>
116 
117 
118                 <property name="writePool">master</property>
119                 <property name="readPool">slaves</property>

编辑dbServer.xml配置文件

vim /usr/local/amoeba/conf/dbServers.xml

 23                         <property name="schema">test</property>
 24 
 25                         <!-- mysql user -->
 26                         <property name="user">test</property>
 27 
 28                         <!--  mysql password-->
 29                         <property name="password">123.com</property>

 45         <dbServer name="master"  parent="abstractServer">
 46                 <factoryConfig>
 47                         <!-- mysql ip -->
 48                         <property name="ipAddress">192.168.1.1</property>
 49                 </factoryConfig>
 50         </dbServer>
 51 
 52         <dbServer name="slave1"  parent="abstractServer">
 53                 <factoryConfig>
 54                         <!-- mysql ip -->
 55                         <property name="ipAddress">192.168.1.2</property>
 56                 </factoryConfig>
 57         </dbServer>
 58 
 59         <dbServer name="slave2"  parent="abstractServer">
 60                 <factoryConfig>
 61                         <!-- mysql ip -->
 62                         <property name="ipAddress">192.168.1.3</property>
 63                 </factoryConfig>
 64         </dbServer>
 65 
 66         <dbServer name="slaves" virtual="true">
 67                 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
 68                         <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=    HA-->
 69                         <property name="loadbalance">1</property>
 70 
 71                         <!-- Separated by commas,such as: server1,server2,server1 -->
 72                         <property name="poolNames">slave1,slave2</property>
 73                 </poolConfig>
 74         </dbServer>
 75 
 76 </amoeba:dbServers>
 1 <?xml version="1.0" encoding="gbk"?>
  2 
  3 <!DOCTYPE amoeba:dbServers SYSTEM "dbserver.dtd">
  4 <amoeba:dbServers xmlns:amoeba="http://amoeba.meidusa.com/">
  5 
  6                 <!-- 
  7                         Each dbServer needs to be configured into a Pool,
  8                         If you need to configure multiple dbServer with load balancing     that can be simplified by the following configuration:
  9                          add attribute with name virtual = "true" in dbServer, but the     configuration does not allow the element with name factoryConfig
 10                          such as 'multiPool' dbServer   
 11                 -->
 12 
 13         <dbServer name="abstractServer" abstractive="true">
 14                 <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectio    nFactory">
 15                         <property name="manager">${defaultManager}</property>
 16                         <property name="sendBufferSize">64</property>
 17                         <property name="receiveBufferSize">128</property>
 18 
 19                         <!-- mysql port -->
 20                         <property name="port">3306</property>
21 
 22                         <!-- mysql schema -->
 23                         <property name="schema">test</property>
 24 
 25                         <!-- mysql user -->
 26                         <property name="user">test</property>
 27 
 28                         <!--  mysql password-->
 29                         <property name="password">123.com</property>
 30 
 31                 </factoryConfig>
 32 
 33                 <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
 34                         <property name="maxActive">500</property>
 35                         <property name="maxIdle">500</property>
 36                         <property name="minIdle">10</property>
 37                         <property name="minEvictableIdleTimeMillis">600000</property>
 38                         <property name="timeBetweenEvictionRunsMillis">600000</property    >
 39                         <property name="testOnBorrow">true</property>
 40                         <property name="testOnReturn">true</property>
41                         <property name="testWhileIdle">true</property>
 42                 </poolConfig>
 43         </dbServer>
 44 
 45         <dbServer name="master"  parent="abstractServer">
 46                 <factoryConfig>
 47                         <!-- mysql ip -->
 48                         <property name="ipAddress">192.168.1.1</property>
 49                 </factoryConfig>
 50         </dbServer>
 51 
 52         <dbServer name="slave1"  parent="abstractServer">
 53                 <factoryConfig>
 54                         <!-- mysql ip -->
 55                         <property name="ipAddress">192.168.1.2</property>
 56                 </factoryConfig>
 57         </dbServer>
 58 
 59         <dbServer name="slave2"  parent="abstractServer">
 60                 <factoryConfig>
 61                         <!-- mysql ip -->
 62                         <property name="ipAddress">192.168.1.3</property>
 63                 </factoryConfig>
 64         </dbServer>
 65 
 66         <dbServer name="slaves" virtual="true">
 67                 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
 68                         <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=    HA-->
 69                         <property name="loadbalance">1</property>
 70 
 71                         <!-- Separated by commas,such as: server1,server2,server1 -->
 72                         <property name="poolNames">slave1,slave2</property>
 73                 </poolConfig>
 74         </dbServer>
 75 
 76 </amoeba:dbServers>
 

配置无误后,启动Amoeba软件,默认端口是TCP协议8066

/usr/local/amoeba/bin/amoeba start &

netstat -lnpt | grep 8066

netstat -anpt | grep 3306

[root@localhost ~]# /usr/local/amoeba/bin/amoeba start &
[1] 61989
[root@localhost ~]# log4j:WARN log4j config load completed from file:/usr/local/amoeba/conf/log4j.xml
2023-07-29 02:37:21,333 INFO  context.MysqlRuntimeContext - Amoeba for Mysql current versoin=5.1.45-mysql-amoeba-proxy-2.2.0
log4j:WARN ip access config load completed from file:/usr/local/amoeba/conf/access_list.conf
2023-07-29 02:37:21,472 INFO  net.ServerableConnectionManager - Amoeba for Mysql listening on 0.0.0.0/0.0.0.0:8066.
2023-07-29 02:37:21,472 INFO  net.ServerableConnectionManager - Amoeba Monitor Server listening on /127.0.0.1:28891.

[root@localhost ~]# netstat -lnpt | grep 8066
tcp6       0      0 :::8066                 :::*                    LISTEN      61989/java          
[root@localhost ~]# 

[root@localhost ~]# netstat -anpt | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      59177/mysqld        
tcp6       0      0 192.168.1.4:38582       192.168.1.2:3306        ESTABLISHED 61989/java          
tcp6       0      0 192.168.1.4:40164       192.168.1.3:3306        ESTABLISHED 61989/java          
tcp6       0      0 192.168.1.4:49912       192.168.1.1:3306        ESTABLISHED 61989/java          
[root@localhost ~]#

测试连通性

在Client上进行访问测试

yum -y install mariadb mariadb-devel

访问代理阿米巴

mysql -uamoeba -p123456 -h 192.168.200.114 -P 8066


测试阿米巴代理

mysql主服务器创建数据库、数据表

MariaDB [(none)]> create database test1;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use test1;
Database changed
MariaDB [test1]> create table student(id int(10),name varchar(10),daaress varchar(20));
Query OK, 0 rows affected (0.03 sec)

MariaDB [test1]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test1              |
+--------------------+
6 rows in set (0.00 sec)

Slave1与Slave2测试是否同步

同步成功

Slave服务器1
[root@localhost ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 70
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test1              |
+--------------------+
6 rows in set (0.01 sec)

MariaDB [(none)]> use test1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [test1]> show tables;
+-----------------+
| Tables_in_test1 |
+-----------------+
| student         |
+-----------------+
1 row in set (0.00 sec)

MariaDB [test1]> 

Slave服务器2
[root@localhost ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 70
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test1              |
+--------------------+
6 rows in set (0.01 sec)

MariaDB [(none)]> use test1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [test1]> show tables;
+-----------------+
| Tables_in_test1 |
+-----------------+
| student         |
+-----------------+
1 row in set (0.00 sec)

MariaDB [test1]> 

回到mysql主服务器创建数据信息

依次在slave两台服务器创建一条新的数据信息

mysql主服务器创建数据信息
MariaDB [test1]> insert into student values('1','zhangsan','master');
Query OK, 1 row affected (0.01 sec)

MariaDB [test1]> 

slave服务器1创建数据信息
MariaDB [test1]> insert into student values('2','lisi','slave1');
Query OK, 1 row affected (0.00 sec)

MariaDB [test1]> 

slave服务器1创建数据信息
MariaDB [test1]> insert into student values('3','wangwu','slave2');
Query OK, 1 row affected (0.00 sec)

MariaDB [test1]> 

在client测试机上测试阿米巴代理读写分离功能

两台读取服务器为slave1、slave2轮流读取服务器搭建成功

查看是否从主服务器同步过来test1
MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lwj                |
| mysql              |
| performance_schema |
| test               |
| test1              |
+--------------------+
6 rows in set (0.01 sec)

指定数据库
MySQL [(none)]> use test1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

查看数据表
MySQL [test1]> show tables;
+-----------------+
| Tables_in_test1 |
+-----------------+
| student         |
+-----------------+
1 row in set (0.01 sec)

第一次查看数据
MySQL [test1]> select * from student;
+------+----------+---------+
| id   | name     | daaress |
+------+----------+---------+
|    1 | zhangsan | master  |
|    2 | lisi     | slave1  |
+------+----------+---------+
2 rows in set (0.01 sec)

第二次查看数据
MySQL [test1]> select * from student;
+------+----------+---------+
| id   | name     | daaress |
+------+----------+---------+
|    1 | zhangsan | master  |
|    3 | wangwu   | slave2  |
+------+----------+---------+
2 rows in set (0.01 sec)

第三次查看数据
MySQL [test1]> select * from student;
+------+----------+---------+
| id   | name     | daaress |
+------+----------+---------+
|    1 | zhangsan | master  |
|    2 | lisi     | slave1  |
+------+----------+---------+
2 rows in set (0.01 sec)

MySQL [test1]> 

测试写操作:

在Client上插入一条语句

在client插入数据信息
MySQL [test1]> insert into student values('4','zhaoliu','client');
Query OK, 1 row affected (0.01 sec)

slave1与2看不到数据信息只有master能看到

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

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

相关文章

pytorch(续周报(1))

文章目录 2.1 张量2.1.1 简介2.1.2 创建tensor2.1.3 张量的操作2.1.4 广播机制 2.2 自动求导Autograd简介2.2.1 梯度 2.3 并行计算简介2.3.1 为什么要做并行计算2.3.2 为什么需要CUDA2.3.3 常见的并行的方法&#xff1a;网络结构分布到不同的设备中(Network partitioning)同一层…

C++入门篇2---类和对象(上)

看前须知:何为面向对象&#xff1f; 面向对象&#xff08;Object-oriented&#xff09;是一种计算机编程的方法论和编程范式。面向对象的核心思想是将数据&#xff08;对象&#xff09;和操作&#xff08;方法&#xff09;封装在一起&#xff0c;形成一个相互关联和相互作用的…

Diffusion mdoel: Denoising Diffusion Probabilistic Models论据解读及实现(一)

论文地址&#xff1a;https://arxiv.org/pdf/2006.11239.pdf 1 正向加噪推导 **核心公式1 ** x t α ˉ t ∗ x 0 1 − α ˉ t z t x_t\sqrt{\bar \alpha_t}*x_{0}\sqrt{1-\bar \alpha_t}z_t xt​αˉt​ ​∗x0​1−αˉt​ ​zt​ 证明如下&#xff1a; α t 1 − β…

芯片制造详解.刻蚀原理.学习笔记(五)

本篇笔记是看完原视频后的整理和补充&#xff0c;建议各位观看原视频&#xff0c;这里附上地址。 如何雕刻芯片&#xff1a;刻蚀原理&#xff5c;芯片制造详解05 芯片制造详解.刻蚀原理.学习笔记 五 一、刻蚀技术的分类二、刻蚀中三个关键指标2.1 刻蚀速率2.2 选择比2.3 方向性…

linux配置固定ip

为什么要固定ip&#xff1f; 虚拟机是利用DHCP&#xff08;动态获取ip&#xff09;&#xff0c;ip地址会频繁变化&#xff0c;不利于远程连接linux&#xff0c;同时会改变映射关系。 VMware 第一步&#xff1a;在workstation中配置IP地址网关和网段 1.点击虚拟网络编辑器 …

RISCV - 4 ISA 扩展名命名约定

RISCV - 4 ISA 扩展名命名约定 1 Case Sensitivity2 Base Integer ISA3 Instruction-Set Extension Names4 Version Numbers5 Underscores6 Additional Standard Extension Names7 Supervisor-level Instruction-Set Extensions8 Hypervisor-level Instruction-Set Extensions9…

28_计算机网络(Computer Networks)基础

本篇介绍计算机网络的基础知识。 文章目录 1. 计算机网络历史2. 以太网" (Ethernet)2.1 以太网" (Ethernet)的简单形式及概念2.2 指数退避解决冲突问题2.3 利用交换机减少同一载体中设备2.4 互联网&#xff08;The Internet&#xff09;2.5 路由(routing)2.6 数据包…

【Spring AOP + 自定义注解 + 动态数据源 实现主从库切换读写分离】—— 案例实战

&#x1f4a7; S p r i n g A O P 主从数据源切换 读写分离 自定义注解案例实战&#xff01; \color{#FF1493}{Spring AOP 主从数据源切换 读写分离 自定义注解 案例实战&#xff01;} SpringAOP主从数据源切换读写分离自定义注解案例实战&#xff01;&#x1f4a7; …

第三课:运算符

1.算数运算符 int a 20; int b 10; System.out.println(a b); // 30 System.out.println(a - b); // 10 System.out.println(a * b); // 200 System.out.println(a / b); // 2 System.out.println(a % b); // 0 --->模运算相当于数学中除法的余数 ⚠关于/除法 public s…

QEMU源码全解析19 —— QOM介绍(8)

接前一篇文章&#xff1a;QEMU源码全解析18 —— QOM介绍&#xff08;7&#xff09; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 特此致谢&#xff01; 上一回讲到了Q…

2023 云原生编程挑战赛火热报名中!导师解析 Serverless 冷启动赛题

大赛介绍 第四届云原生编程挑战赛&#xff0c;是由阿里云主办&#xff0c;云原生应用平台、天池联合承办的云原生著名品牌赛事。 自 2015 年开始&#xff0c;大赛已经成功举办了八届&#xff0c;并从 2020 年开始升级为首届云原生编程挑战赛&#xff0c;共吸引了超过 53000 支…

python爬虫基本功(三)--爬虫所需网络协议知识超详细总结(下)

前言 大家好&#xff0c;这里是Kaiser&#x1f44f;。本文内容是衔接 &#x1f449;python爬虫基本功(二)—爬虫所需网络协议知识超详细总结&#xff08;上&#xff09;&#x1f448; 一文&#xff0c;为达更好的阅读效果&#xff0c;以及防止知识点出现“断层”&#xff0c;使…

Java方法的使用(重点:形参和实参的关系、方法重载、递归)

目录 一、Java方法 * 有返回类型&#xff0c;在方法体里就一定要返回相应类型的数据。没有返回类型&#xff08;void&#xff09;&#xff0c;就不要返回&#xff01;&#xff01; * 方法没有声明一说。与C语言不同&#xff08;C语言是自顶向下读取代码&#xff09;&#…

数电基础知识学习笔记

文章目录&#xff1a; 一&#xff1a;逻辑门 1.逻辑门电路的分类 1.1 按逻辑&#xff08;逻辑门&#xff09; 1.1.1 逻辑定义 1.1.2 常见数字电路相关符号 1.1.3 电路图表示 1.1.4 逻辑门电路图像符号 1.2 按电路结构 1.3 按功能特点 2.高低电平的含义 3.常见的门…

给定长度值length,把列表切分成每段长度为length的N段列表,Kotlin

给定长度值length&#xff0c;把列表切分成每段长度为length的N段列表&#xff0c;Kotlin import kotlin.random.Randomfun main(args: Array<String>) {var source mutableListOf<String>()val end Random.nextInt(30) 1for (i in 0 until end) {source.add(i.…

[SV] 文件操作

Verilog 提供了很多对文件进行操作的系统任务。经常使用的系统任务主要包括&#xff1a; 文件开、闭&#xff1a;​$fopen​, ​$fclose​, ​$ferror​文件写入&#xff1a;​$fdisplay​, ​$fwrite​, ​$fstrobe​, ​$fmonitor​字符串写入&#xff1a;​$sformat​, ​$…

python结合tesseract-ocr识别汉字的训练库过程

一、安装python 例如&#xff0c;安装路径为&#xff1a;C:\rtkapp\python-3.8.0 二、安装opencv 三、安装tesseract-ocr 安装完成后&#xff0c;在系统环境变量path中&#xff0c;添加安装路径C:\rtkapp\Tesseract-OCR 四、打开python安装pytesseract 五、安装java运行环境…

TenserRT(四)在 PYTORCH 中支持更多 ONNX 算子

第四章&#xff1a;在 PyTorch 中支持更多 ONNX 算子 — mmdeploy 0.12.0 文档 PyTorch扩充。 PyTorch转换成ONNX&#xff1a; PyTorch有实现。PyTorch可以转化成一个或者多个ONNX算子。ONNX有相应算子。 如果即没有PyTorch实现&#xff0c;且缺少PyTorch与ONNX的映射关系&…

太猛了,靠“吹牛”过顺丰一面,月薪30K

说在前面 在40岁老架构师尼恩的&#xff08;50&#xff09;读者社群中&#xff0c;经常有小伙伴&#xff0c;需要面试美团、京东、阿里、 百度、头条等大厂。 下面是一个5年小伙伴成功拿到通过了顺丰面试&#xff0c;拿到offer&#xff0c;月薪30K。 现在把面试真题和参考答…

一起学算法(插入排序篇)

概念&#xff1a; 插入排序&#xff08;inertion Sort&#xff09;一般也被称为直接插入排序&#xff0c;是一种简单的直观的排序算法 工作原理&#xff1a;将待排列元素划分为&#xff08;已排序&#xff09;和&#xff08;未排序&#xff09;两部分&#xff0c;每次从&…