一看就会的Mysql 集群技术

news2024/11/15 13:29:37

目录

一、Mysql介绍

1.1什么是MySQL

1.2MySQL的优势

1.3MySQL的常用语句

二、MySQL源码安装

三、实验练习

3.1MySQL部署

实验环境

实验步骤

1.创建用户,数据目录,更改权限

2.修改文件

3.初始化,会生成一个密码,将其保存在文件里

4.启动,并设置为开机自启动

5.数据库安全初始化

6.测试

3.2MySQL主从复制

实验环境

实验步骤

1.配置mastesr

2.进入数据库配置用户权限

3.查看二进制日志

4.配置salve(从数据库)

5.进入数据库配置

6.测试查看主数据库的数据会不会同步到从数据库上去

3.3延迟复制

实验环境

实验步骤

1.在创建一台虚拟机,和前面同样操作作为从MySQL slave2

2.slave2中数据库设置延迟复制

3.测试

3.4慢查询日志

实验环境

实验步骤

1.开启慢查询日志

2.测试

3.5mysql的并行复制

实验环境

实验步骤

1.查看slave1中的线程信息

2.在slaves中设定

3.测试查看

3.6启动半同步模式

实验环境

实验步骤

1.在master端配置启用半同步模式

2.安装半同步插件

3.打开半同步功能

4.在slave端开启半同步功能

5.测试

3.7mysql负载均衡(mysql路由)

实验环境

实验步骤

1.安装软件包(上传后rpm安装)

2.配置数据库路由

3.测试

3.8实现mysql组复制

实验环境

实验步骤

1.关闭所有主机数据库服务,写上域名解析

2.在mysql-node1中配置操作

3. 20,30主机修改配置文件

4.在mysql-node2,3中配置操作

5.查看是否全部加入组

6.测试在每个节点都可以完成读写,且数据同步

3.8 MHA部署实施

实验环境

实验步骤

1. 搭建主两从架构

2.安装MHA所需要的软件

3.生成配置目录和配置文件


一、Mysql介绍

1.1什么是MySQL

MySQL官网:

https://www.mysql.com/icon-default.png?t=N7T8https://www.mysql.com/

 MySQL的定义:

MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。

MySQL的起源:

MySQL的起源可以追溯到1995年‌,当时瑞典开发者Michael Widenius和David Axmark开始创建一个名为MySQL的轻量级数据库系统。最初,MySQL仅支持少量数据类型和表,但它因其高度可靠性和性能优势,在Linux和其他UNIX操作系统上得到了广泛应用。随着时间的推移,MySQL不断改进并扩展其功能,成为一个完全免费的开源数据库,其性能、可靠性和扩展性都得到了显著提升。由于互联网的普及,MySQL越来越受到开发者的青睐,逐渐成为Web应用程序的主流数据库之一。2000年,MySQL AB公司成立,旨在为MySQL数据库提供商业支持和服务,通过推广MySQL数据库,吸引了大量的用户和开发者,使得MySQL在业界更加广泛地应用。在2008年,Sun Microsystems收购了MySQL AB公司,这一举动使得MySQL得到了更加广泛的认可,并吸引了更多企业用户的关注。随后,在2010年,甲骨文(Oracle)收购了Sun Microsystems,MySQL随之被纳入Oracle的管理体系之中。在Oracle的管理下,MySQL的发展方向发生了变化,不仅加强了商业化开发,也积极推广MySQL的社区版,使得用户和开发者得到了更多的选择和支持,同时也加快了MySQL的开发和更新。随着时间的推移,MySQL不断改进和更新,推出了更加高效、安全和可靠的版本,支持云数据库、大数据等领域的应用,成为更加全面的数据库管理系统。今天,MySQL已经成为Web应用程序和企业应用的主流数据库之一,拥有数百万的用户和开发者,支持各种语言和平台‌。

1.2MySQL的优势

一、开源免费

MySQL 是开源软件,这意味着你可以免费使用它,无需支付高昂的授权费用。对于个人开发者、小型企业以及预算有限的项目来说,这是一个巨大的优势。它降低了软件开发和部署的成本,使得更多的人能够轻松地使用数据库管理系统。

二、性能卓越

  1. 快速的数据处理能力:MySQL 能够高效地处理大量的数据。它采用了优化的存储引擎和查询处理机制,能够快速地执行各种查询操作,包括简单的 SELECT 查询、复杂的 JOIN 操作和聚合函数计算等。
  2. 高并发支持:MySQL 可以同时处理多个客户端的连接请求,适用于高并发的应用场景。它通过优化连接管理、查询缓存和事务处理等方面,确保在高并发情况下的性能和稳定性。
  3. 可扩展性强:随着数据量的增长和业务的扩展,MySQL 可以通过增加硬件资源(如内存、磁盘空间和处理器)或使用分布式架构来扩展其性能和存储容量。它支持主从复制、集群等技术,可以轻松地实现数据库的水平扩展和高可用性。

三、功能丰富

  1. 多种存储引擎:MySQL 提供了多种存储引擎,如 InnoDB、MyISAM、Memory 等。每种存储引擎都有其特定的优势和适用场景。例如,InnoDB 支持事务处理、行级锁定和外键约束,适用于对数据完整性要求较高的应用;MyISAM 则具有较高的查询性能,适用于只读或以读为主的应用。
  2. 强大的 SQL 支持:MySQL 支持标准的 SQL 语言,并提供了丰富的扩展功能。它可以执行各种复杂的查询、插入、更新和删除操作,还支持存储过程、触发器、视图等高级数据库对象。
  3. 安全可靠:MySQL 提供了多种安全机制,包括用户认证、访问控制、数据加密等。它可以确保只有授权用户能够访问数据库,保护数据的安全性和隐私性。此外,MySQL 还具有数据备份和恢复功能,可以在发生故障或数据丢失时快速恢复数据。

四、跨平台性

MySQL 可以在多种操作系统上运行,包括 Windows、Linux、Unix 等。这使得它具有很高的灵活性,可以适应不同的开发环境和部署需求。无论你是在开发桌面应用、Web 应用还是移动应用,都可以使用 MySQL 作为数据库管理系统。

五、社区活跃

MySQL 拥有庞大的用户社区和开发者社区。这意味着你可以很容易地找到相关的文档、教程和技术支持。社区成员还积极参与 MySQL 的开发和改进,不断推出新的功能和优化。如果你在使用过程中遇到问题,可以通过社区论坛、邮件列表等渠道获得帮助。

1.3MySQL的常用语句

语句类型具体语句作用举例
数据查询SELECT * FROM table_name;从指定表中查询所有列的数据。

SELECT * FROM employees;

查询 employees 表中的所有数据。

SELECT column1, column2 FROM table_name;从指定表中查询特定列的数据。

SELECT name, age FROM students;

查询 students 表中的 name 和 age 列数据。

SELECT column_name FROM table_name WHERE condition;根据条件查询特定列的数据。

SELECT id FROM orders WHERE status='completed';

查询 orders 表中状态为 “completed” 的订单 id。

数据插入INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...);向表中插入新的数据行。

INSERT INTO users (username, password) VALUES ('user1', '123456');

向 users 表中插入一个新用户。

数据更新UPDATE table_name SET column1 = value1, column2 = value2,... WHERE condition;更新表中符合条件的数据行。

UPDATE employees SET salary = salary + 1000 WHERE department = 'sales';

将 sales 部门员工的工资增加 1000。

数据删除DELETE FROM table_name WHERE condition;删除表中符合条件的数据行。

DELETE FROM products WHERE expired_date <CURDATE ();

删除过期日期早于当前日期的产品。

创建表CREATE TABLE table_name (
column1 datatype1,
column2 datatype2,
...
);
创建一个新的表。

CREATE TABLE books (id INT, title VARCHAR (255), author VARCHAR (100));

创建一个存储书籍信息的表。

添加列ALTER TABLE table_name ADD column_name datatype;向已有的表中添加新的列。

ALTER TABLE customers ADD phone_number VARCHAR (20);

在 customers 表中添加一个电话号码列。

删除列ALTER TABLE table_name DROP COLUMN column_name;从表中删除指定的列。

ALTER TABLE products DROP COLUMN old_price;

删除 products 表中的旧价格列。

修改列ALTER TABLE table_name MODIFY COLUMN column_name new_datatype;修改表中指定列的数据类型。

ALTER TABLE students MODIFY COLUMN age SMALLINT;

将 students 表中的 age 列数据类型修改为 SMALLINT。

表约束CREATE TABLE table_name (
column1 datatype1 CONSTRAINT constraint_name PRIMARY KEY,
column2 datatype2 CONSTRAINT constraint_name FOREIGN KEY REFERENCES other_table(other_column),
...
);
设置表的主键、外键等约束。

CREATE TABLE orders (
order_id INT CONSTRAINT pk_order_id PRIMARY KEY,
customer_id INT CONSTRAINT fk_customer_id FOREIGN KEY REFERENCES customers(customer_id)
);

创建 orders 表,设置 order_id 为主键,customer_id 为外键关联 customers 表。

二、MySQL源码安装

和之前博客源码安装的步骤一样。官网下载需要的MySQL版本,使用wget命令下载,解压,编译,编译通过后make && make install。详细的步骤可以参考一下连接:

http://t.csdnimg.cn/mCeo7icon-default.png?t=N7T8http://t.csdnimg.cn/mCeo7

三、实验练习

3.1MySQL部署

实验环境

两台红帽7主机,10和20。

实验步骤

1.创建用户,数据目录,更改权限

2.修改文件

3.初始化,会生成一个密码,将其保存在文件里

4.启动,并设置为开机自启动

5.数据库安全初始化

6.测试

3.2MySQL主从复制

实验环境

相同。

实验步骤

1.配置mastesr
[root@mysql-node1 mysql]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
log-bin=mysql-bin
server-id=1
[root@mysql-node1 mysql]# /etc/init.d/mysqld restart

2.进入数据库配置用户权限

查看,这里的名称和id到时候要在从数据库添加:

3.查看二进制日志

4.配置salve(从数据库)
[root@mysql-node2 ~]# vim /etc/my.cnf

[mysqld]

datadir=/data/mysql

socket=/data/mysql/mysql.sock

symbolic-links=0

server-id=2

[root@mysql-node2 ~]# /etc/init.d/mysqld restart

5.进入数据库配置
[root@mysql-node2 ~]# mysql -plee

6.测试查看主数据库的数据会不会同步到从数据库上去

3.3延迟复制

实验环境

相同。

实验步骤

1.在创建一台虚拟机,和前面同样操作作为从MySQL slave2

2.slave2中数据库设置延迟复制

 

修改后在master中写入数据后过了延迟时间才能被查询到,删除也是同样效果 。

3.测试

 60秒后:

3.4慢查询日志

实验环境

相同。

实验步骤

1.开启慢查询日志

2.测试

 

3.5mysql的并行复制

实验环境

相同。

实验步骤

1.查看slave1中的线程信息

默认情况下slave中使用的是sql单线程回放
在master中时多用户读写,如果使用sql单线程回放那么会造成组从延迟严重
开启MySQL的多线程回放可以解决上述问题

2.在slaves中设定

3.测试查看

 此时sql线程转化为协调线程,16个worker负责处理sql协调线程发送过来的处理请求

3.6启动半同步模式

实验环境

相同。

实验步骤

1.在master端配置启用半同步模式
[root@mysql-node1 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
server-id=1
log-bin=mysql-bin
gtid_mode=ON
enforce-gtid-consistency=ON
rpl_semi_sync_master_enabled=1 #开启半同步功能
symbolic-links=0

2.安装半同步插件

3.打开半同步功能

 

4.在slave端开启半同步功能
[root@mysql-node2 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
server-id=1
log-bin=mysql-bin
gtid_mode=ON
enforce-gtid-consistency=ON
rpl_semi_sync_master_enabled=1 #开启半同步功能
symbolic-links=0

 

slave2同样操作。
5.测试
从数据库好的时候主数据库写入很快,但是从数据库挂了,就会卡着写不了。这也是半同步的作用:就算不能写入,也不能让数据不同步

好的时候:

 停用从数据库,模拟故障:

 

重启从数据库后:  

3.7mysql负载均衡(mysql路由)

实验环境

相同。

实验步骤

我们需要在所有的数据库主机之外再开一台主机mysql-router,这里直接用mysql-node1来充当就好了,先关闭数据库服务。
1.安装软件包(上传后rpm安装)

2.配置数据库路由

 

 

3.测试

启动数据库,创建测试用户:

 

查看调度,负载均衡:

 

 

 

 

3.8实现mysql组复制

实验环境

相同。

实验步骤

1.关闭所有主机数据库服务,写上域名解析

三台主机都要操作

 

 

2.在mysql-node1中配置操作

 

 

初始化数据库:

 

修改数据库密码:

 

登入数据库操作:

 

 

 

查看是否加入组:

 

将配置文件传给20,30:

 

3. 20,30主机修改配置文件

 20:

30:

 

4.在mysql-node2,3中配置操作

和mysql-node1操作一样:
先初始数据库;
修改密码;
登入数据库操作,所加参数也一致; 

5.查看是否全部加入组

任一主机可查看:

 

6.测试在每个节点都可以完成读写,且数据同步

mysql-node1中创建表,写入数据:

mysql-node2中:

 mysql-node3中:

回到mysql-node1查看数据同步:  

 

3.8 MHA部署实施

实验环境

相同。

实验步骤

1. 搭建主两从架构
[root@mysql-node1 ~]# /etc/init.d/mysqld stop
[root@mysql-node1 ~]# rm -fr /data/mysql/*
[root@mysql-node1 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
server-id=1
log-bin=mysql-bin
gtid_mode=ON
log_slave_updates=ON
enforce-gtid-consistency=ON
symbolic-links=0
[root@mysql-node1 ~]# mysqld --user mysql --initialize
[root@mysql-node1 ~]# /etc/init.d/mysqld start
[root@mysql-node1 ~]# mysql_secure_installation
[root@mysql-node1 ~]# mysql -p
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'lee';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Query OK, 0 rows affected (0.02 sec)
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
Query OK, 0 rows affected (0.00 sec)

#在slave中
[root@mysql-node2 ~]# /etc/init.d/mysqld stop
[root@mysql-node2 ~]# rm -fr /data/mysql/*
[root@mysql-node2 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
server-id=1
log-bin=mysql-bin
gtid_mode=ON
log_slave_updates=ON
enforce-gtid-consistency=ON
symbolic-links=0
[root@mysql-node2 ~]# mysqld --user mysql --initialize
[root@mysql-node2 ~]# /etc/init.d/mysqld start
[root@mysql-node2 ~]# mysql_secure_installation
[root@mysql-node2 ~]# mysql -p
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl',
MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Query OK, 0 rows affected (0.01 sec)
mysql> SET GLOBAL rpl_semi_sync_slave_enabled =1;
Query OK, 0 rows affected (0.00 sec)
mysql> STOP SLAVE IO_THREAD;
Query OK, 0 rows affected (0.00 sec)
mysql> START SLAVE IO_THREAD;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW STATUS LIKE 'Rpl_semi_sync%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON |
+----------------------------+-------+
1 row in set (0.01 sec)

#node3同样操作
2.安装MHA所需要的软件
[root@mysql-mha ~]# unzip MHA-7.zip
[root@mysql-mha MHA-7]# ls
mha4mysql-manager-0.58-0.el7.centos.noarch.rpm perl-Mail-Sender-0.8.23-
1.el7.noarch.rpm
mha4mysql-manager-0.58.tar.gz perl-Mail-Sendmail-0.79-
21.el7.noarch.rpm
mha4mysql-node-0.58-0.el7.centos.noarch.rpm perl-MIME-Lite-3.030-
1.el7.noarch.rpm
perl-Config-Tiny-2.14-7.el7.noarch.rpm perl-MIME-Types-1.38-
2.el7.noarch.rpm
perl-Email-Date-Format-1.002-15.el7.noarch.rpm perl-Net-Telnet-3.03-
19.el7.noarch.rpm
perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm perl-Parallel-ForkManager-1.18-
2.el7.noarch.rpm
[root@mysql-mha MHA-7]# yum install *.rpm -y
[root@mysql-mha MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm
root@172.25.254.10:/mnt
[root@mysql-mha MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm
root@172.25.254.20:/mnt
[root@mysql-mha MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm
root@172.25.254.30:/mnt

#在sql-node中
[root@mysql-node1 ~]# yum install /mnt/mha4mysql-node-0.58-
0.el7.centos.noarch.rpm -y

#node2,3同样操作

3.生成配置目录和配置文件
#生成配置文件
[root@mysql-mha ~]# mkdir /etc/masterha
[root@mysql-mha MHA-7]# tar zxf mha4mysql-manager-0.58.tar.gz
[root@mysql-mha MHA-7]# cd mha4mysql-manager-0.58/samples/conf/
[root@mysql-mha conf]# cat masterha_default.cnf app1.cnf >
/etc/masterha/app1.cnf

#编辑配置文件
[root@mysql-mha ~]# vim /etc/masterha/app1.cnf
[server default]
user=root 
password=lee 
ssh_user=root 
repl_user=repl 
repl_password=lee 
master_binlog_dir= /data/mysql 
remote_workdir=/tmp 
secondary_check_script= masterha_secondary_check -s 172.25.254.10 -s
172.25.254.11
ping_interval=3 
manager_workdir=/etc/masterha 
manager_log=/var/etc/masterha/manager.log 

[server1]
hostname=172.25.254.10
candidate_master=1 
check_repl_delay=0 

[server2]
hostname=172.25.254.20
candidate_master=1 
check_repl_delay=0
[server3]
hostname=172.25.254.30
no_master=1 

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

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

相关文章

没有人会窃取你的想法,关键在于执行

没有人会窃取你的想法&#xff0c;关键在于执行 引言 当我第一次读到 Pieter Levels 的创业故事时&#xff0c;我感到无比激动和鼓舞。那种看到未来无限可能的感觉&#xff0c;让我充满了希望与奋斗的力量。他的经历不仅让我明白了创意的价值&#xff0c;更重要的是让我深刻感…

内网穿透的几种方法

内网穿透的几种方法 随着网络技术和应用的不断发展&#xff0c;越来越多的企业和个人需要实现内外网之间的数据交互和服务访问。然而&#xff0c;由于防火墙、NAT&#xff08;网络地址转换&#xff09;等安全措施的存在&#xff0c;直接从外部访问内部网络中的服务器或设备变得…

Linux基础软件-dns(一)

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux进阶部分又分了很多小的部分,我们刚讲完了Linux日常运维。讲的那些东西都算是系统自带的&#xff0c;但是Linux作为一个…

Nvidia驱动莫名其妙不好使了?nvidia-smi报错?如何解决?已解决!!

文章目录 一、报错提示二、解决方案2.1 原因1的解决办法2.2 原因2的解决方案 一、报错提示 Ubuntu20.04出现Failed to initialize NVML: Driver/library version mismatch问题NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver. 二、解决方案 …

深入探究linux文件IO

一、原子操作和竞争条件 所有系统调用都是以原子操作方式执行的。之所以这么说&#xff0c;是指内核保证了某系统调用中的所有步骤会作为独立操作而一次性加以执行&#xff0c;其间不会为其他进程或线程所中断。 以独占方式创建一个文件 结合 O_CREAT 和 O_EXCL 标志来一次性…

AI学习记录 - 怎么理解 torch 的 torch.nn.BatchNorm2d

画图不易&#xff0c;有用就点个赞 这里创建了一个随机张量&#xff0c;形状为 (4, 3, 4, 4)&#xff0c;分别对应 形状为 (batch_size, num_channels, height, width) batch_size&#xff1a;批次 num_channels&#xff1a; 通道&#xff08;什么是通道看上一章节&#xff0…

串口和RS485通信

一、 定义串口收发数据结构体 /*COM Received Data Structure*/ typedef struct {uint8_t ubr_EndFlag; //Received data end flag uint8_t ubr_buffer[300]; //Received data bufferuint8_t ubr_bufferTemp[300]; //Received data bu…

K-medoids算法原理及Python实践

一、原理 K-medoids算法是一种聚类算法&#xff0c;它的原理与K-Means算法相似&#xff0c;但关键区别在于它使用数据集中的实际点&#xff08;称为medoids&#xff09;作为簇的中心点&#xff0c;而不是像K-Means那样使用簇内所有点的平均值。以下是K-medoids算法的主要原理&…

如何在算家云搭建模型Stable-Fast-3D(3D模型生成)

一、模型介绍 Stable-Fast-3D 具有 UV 展开和照明解缠的稳定快速 3D 网格重建&#xff0c;它是一种从单个图像进行快速前馈 3D 网格重建的最先进的开源模型。 二、模型搭建流程 基础环境最低要求说明&#xff1a; 环境名称版本信息1Ubuntu22.04.4 LTSCudaV12.1.105Python3.…

【项目日记】高并发内存池 ---项目介绍及组件定长池的实现

余生还长&#xff0c;你别慌&#xff0c;也别回头&#xff0c;别念旧. --- 余华 --- 1 高并发内存池简介 高并发内存池项目是实现一个高并发的内存池&#xff0c;他的原型是google的一个开源项目tcmalloc&#xff0c;tcmalloc全称Thread-Caching Malloc&#xff0c;即线程缓存…

快速排序与其例题

一、快速排序 1、简单介绍&#xff1a;快速排序&#xff08;Quick Sort&#xff09;是一种高效的排序算法&#xff0c;由计算机科学家Tony Hoare在1960年提出。它是基于分治法的排序算法&#xff0c;其基本思想和步骤如下&#xff1a; 基本概念 快速排序的核心思想是将待排序…

一种商业模式既解决引流又解决复购 你想了解一下嘛?

欢迎各位&#xff0c;我是你们的电商策略顾问&#xff0c;吴军。今天&#xff0c;我将向大家介绍一种新颖的商业模式——循环购物模式。这种模式有何独特之处&#xff1f;商家真的在进行慷慨的赠金活动吗&#xff1f;消费者在购物的同时还能获得额外收益&#xff1f;甚至可以将…

Python控制流:条件语句(if, elif, else)①

文章目录 前言1. 基本条件语句1.1 if 语句1.2 else 语句1.3 elif 语句1.4 嵌套条件语句 2. 条件表达式3. 多条件判断4. 比较运算符和逻辑运算符5. 常见错误和最佳实践5.1 常见错误5.2 最佳实践 6. 综合详细的例子&#xff1a;学生成绩管理系统6.1 类和方法Student 类 6.2 主函数…

LD/T698.45 协议解析(新)

通信架构 客户机和服务器在开始通信前&#xff0c;通信信道必须先完成预连接。预连接建立后&#xff0c;默认具有一个最低权限的应用连接&#xff0c;客户机和服务器之间可直接进行数据交换。当客户机需要得到更高权限的服务器服务时&#xff0c;客户机必须发起建立更高权限的…

浦发银行不良堆积,新任领导的无奈

撰稿|芋圆 浦发银行在2023年进行了一波董监高人员大变动&#xff0c;董事长和行长两位掌舵人双双离职&#xff0c;在其任内&#xff0c;浦发银行自2020年起的营收、利润状况和资产质量就一直难有起色。 目前&#xff0c;距新任领导班子上任已差不多过去一年之久。在这一年里&a…

Redis(面试题【速记】)

Redis简介 Redis 是一个开源(BSD 许可)内存数据结构存储用作数据库、缓存、消息代理和流引擎。Redis 提供数据结构&#xff0c;例如 字符串、散列、列表、集合、带范围查询的排序集合、位图、超日志、地理空间索引和流。Redis 内置了复制、Lua 脚本、LRU 驱逐、事务和不同级别的…

【Linux —— 线程同步 - 条件变量】

Linux —— 线程同步 - 条件变量 条件变量的概念互斥量与条件变量的关系条件变量的操作代码示例 条件变量的概念 条件变量是一种用于线程间同步的机制&#xff0c;主要用于协调线程之间的执行顺序&#xff0c;允许线程在某个条件不满足时进入等待状态&#xff0c;直到其他线程通…

【Linux I/O】万字长文带思维导图,一文彻底掌握Linux I/O:深入解析操作系统数据交互的艺术

Linux I/O Linux I/O&#xff08;输入/输出&#xff09;是操作系统与外部设备进行数据交互的过程。在Linux系统中&#xff0c;I/O操作的管理和优化对于系统性能有着至关重要的影响。本文将详细介绍Linux中的各种I/O模型&#xff0c;包括它们的工作原理、优缺点以及适用场景&am…

ImportError: DLL load failed while importing _ssl: 找不到指定的模块。

windonw cmd下的输出&#xff1a; (python3.9) PS D:\git\ImageAnalysisService\core\medical_bills> python Python 3.9.19 (main, May 6 2024, 20:12:36) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or …

计算机基础知识总结(八股文--计算机网络、操作系统、数据库、c++、数据结构与算法)

一、操作系统 0.内存管理 01.什么是虚拟内存&#xff1f;为什么需要虚拟内存&#xff1f; 虚拟内存为程序提供比实际物理内存更大的内存空间&#xff0c;同时提高内存管理的灵活性和系统的多任务处理能力。虚拟地址空间就是进程所能看到的内存空间&#xff0c;这段空间是连续…