网站建设费用 计入什么科目/武汉it培训机构排名前十
Maxscale介绍
MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换。
使用Maxscale无需对业务代码进行修改,其自带的读写分离模块,能够解析SQL语句,从而把对应的请求转发到对应的服务器上。
注:MaxScale需要MariaDB至少 10.3.1 以上版本的支持,版本过低可能导致部分功能无法使用。
MariaDB MaxScale 2.2版本,在支持原有读写分离的基础上,又添加了主从复制集群管理功能,
MariaDB MaxScale 2.5版本,实现了GUI图形化、可视化监控管理web页面。
环境说明
数据库:Mariadb10.3.37
Maxscale:2.5.4
名称 | 操作系统 | IP | 备注 |
---|---|---|---|
Maxscale代理 | Centos7 | 192.168.1.203 | 可以和应用服务器,也可由单独配置一台服务器 |
Master | Centos7 | 192.168.1.154 | 读写 |
Slave | Centos7 | 192.168.1.161 | 只读 |
架构图
客户端通过Maxscale把请求转发给Master或者Slave,如果Master连接出现故障,则把请求转发给Slave
配置主从服务器
在MariaDB中,只要开启了binlog,所有的DML和DDL都会形成事件并且写入其中,并且每一件事务都会生成全局唯一的事务ID:Global transaction ID(全局事务ID),简称GTID。
GTID是属于全局唯一,所以无需过多配置,从机可通过GTID同步主机binlog文件,从而形成主从架构,在实际生产环境中能够提高数据库容错率;
配置Master(192.168.1.154)服务器
Master-mariadb配置文件
复制配置文件到**/etc/my.cnf.d/**
目录下
#########################
# 配置binlog选项 #
########################## 开启binlog
log-bin# 开启副本记录binlog日志
log-slave-updates = ON# binlog记录方式为行
binlog_format=ROW# 30天内清理binlog日志
expire_logs_days = 30# 统一主从复制LOG名称,包含如下:log-bin, log-bin-index, relay-log, relay-log-index, general-log-file,
# log-slow-query-log-file, --log-error-file, and pid-file.
log-basename = master1# 开启记录binlog的库名,多个用,分割
# binlog-do-db = test#########################
# 以下为GTID主从复制选项#
########################## 开启半同步
# 10.3以插件方式安装
plugin-load = "rpl_semi_sync_master=semisync_master.so"
rpl-semi-sync-master-enabled = 1# 10.3之后集成到了系统内,只需开启插件即可
plugin_load_add = semisync_master
rpl_semi_sync_master_enabled = ON
rpl_semi_sync_master_wait_point=AFTER_SYNC # 开启半同步# 配置Master,ServerID,不能和Slave重复
server-id = 100# 开启Master记录Slave binlog日志,前提Slave需要开启binlog
log-slave-updates=1# 开启GTID严格模式
gtid_strict_mode=1
查看Master同步是否成功
SHOW VARIABLES LIKE 'rpl_semi_sync_master_enabled';
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| rpl_semi_sync_master_enabled | ON |
+------------------------------+-------+
1 row in set (0.001 sec)
配置Master监控账户
监控用于监控节点服务器工作状态,出现故障时可以自动迁移
CREATE USER 'maxscale_monitor'@'%' IDENTIFIED BY 'maxscale123456';
GRANT RELOAD,SUPER,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'maxscale_monitor'@'%';# 查看授权
SHOW GRANTS FOR 'maxscale_monitor'@'%';
配置Master路由账户
Maxscale需要对传入的客户请求进行后端身份验证,所以要创建一个特殊账户做验证。在代理服务器执行如下命令:
CREATE USER 'maxscale_route'@'%' IDENTIFIED BY 'maxscale123456';
GRANT SELECT ON mysql.user TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.db TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.tables_priv TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.columns_priv TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.procs_priv TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.proxies_priv TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.roles_mapping TO 'maxscale_route'@'%';
GRANT SHOW DATABASES ON *.* TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.* TO 'maxscale_route'@'%';# 查看授权
SHOW GRANTS FOR 'maxscale_route'@'%';
制作、恢复Slave备份
制作Master备份,用于恢复到Slave服务器,制作备份推荐使用**MariaDB-backup,**这样制作和恢复速度比较快,能节省非常多的时间
安装MariaDB-backup
在Master和Slave安装MariaDB-backup
yum install MariaDB-backup
开始创建Slave备份
在Master执行
# 创建备份文件
mariabackup --backup --target-dir=/backup/dbbak --user=root --password=test123456# 生成预恢复文件
mariabackup --prepare --target-dir=/backup/dbbak
参数说明:
–backup:创建指定动作为备份
–target-dir=/backup/dbbak:指定Master全备文件存放目录
–user=root --password=test123456:指定数据库用户名和密码
–prepare:指定动作为预恢复
–target-dir=/backup/dbbak :指定刚才创建的全备存放目录
复制备份文件到Slave从机
scp -r /backup/dbbak root@192.168.1.161:/home/user
恢复Master备份到Slave从机
恢复时需要停掉Slave mariadb服务,并且清空mariadb数据目录
在Slave执行
# 停止服务
systemctl stop mariadb# 清空目录rm -rf /home/mysql/*
锁Master库
在恢复从库时,为避免主库产生事务,导致GTID改变,需要锁住主库
在Master执行
FLUSH TABLES WITH READ LOCK;
开始Slave恢复
在Slave执行
mariabackup --copy-back --target-dir=/home/user/dbbak#重新授权
chown -R mysql:mysql /home/mysql/#启动服务
systemctl start mariadb
–copy-back : 指定动作为恢复备份,恢复时保留备份文件
–target-dir:指定恢复文件目录
解锁Master
待Slave恢复完成后,解锁Master
UNLOCK TABLES;
配置Slave(192.168.1.161)服务器
Master-mariadb配置文件
复制配置文件到**/etc/my.cnf.d/**
目录下
#########################
# 配置binlog选项 #
########################## 开启binlog
log-bin# 开启副本记录binlog日志
log-slave-updates = ON# binlog记录方式为行
binlog_format=ROW# 30天内清理binlog日志
expire_logs_days = 30# 统一主从复制LOG名称,包含如下:log-bin, log-bin-index, relay-log, relay-log-index, general-log-file,
# log-slow-query-log-file, --log-error-file, and pid-file.
log-basename = master1# 开启记录binlog的库名,多个用,分割
# binlog-do-db = test#########################
# 以下为GTID主从复制选项#
########################## 开启半同步
# 10.3以插件方式安装
plugin-load = "rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-slave-enabled = 1# 10.3之后集成到了系统内,只需开启插件即可
# 从库开启半同步
plugin_load_add = semisync_slave
rpl_semi_sync_slave_enabled=ON# 配置ServerID,不能和master重复
server-id = 200# 开启Master记录Slave binlog日志,前提Slave需要开启binlog
log-slave-updates=1# 开启GTID严格模式
gtid_strict_mode=1# 开启Slave并行复制
slave_parallel_threads=4# 开启Slave从Master读取binlog时进行完整校验
master-verify-checksum=1# 只允许读,不允许写
read only=1
配置Slave同步监控账户
由于主备配置文件已包含,此步可以掠过
配置Slave路由账户
由于主备配置文件已包含,此步可以掠过
查看Slave同步是否成功
出现**rpl_semi_sync_slave_enabled:ON**
,说明开启成功
SHOW VARIABLES LIKE 'rpl_semi_sync_slave_enabled';
+-----------------------------+-------+
| Variable_name | Value |
+-----------------------------+-------+
| rpl_semi_sync_slave_enabled | ON |
+-----------------------------+-------+
1 row in set (0.001 sec)
配置同步信息
配置同步信息,首先要获取Master的binlog名称、position点和最后一次的GTID号,可以在上面的备份文件**xtrabackup_info**
中获取到
# 在从库执行
cat /home/mysql/xtrabackup_info# 找到如下选项就是
binlog_pos = filename 'master1-bin.000009', position '598081860', GTID of the last change '0-100-2622'
在Slave配置同步Master的信息
# 登录mysql
mysql -u root -p# 在从库mysql执行
CHANGE MASTER TOMASTER_HOST='192.168.1.154',MASTER_USER='maxscale_monitor',MASTER_PASSWORD='maxscale123456',MASTER_PORT=3306,MASTER_LOG_FILE='master1-bin.000011',MASTER_LOG_POS=598081860,MASTER_USE_GTID=slave_pos,MASTER_CONNECT_RETRY=10;
启动Slave
# 登录mysql
mysql -u root -p# 启动从机
START SLAVE;# 查看从机工作状态
SHOW SLAVE STATUS \G
测试同步
测试数据增删改查
如果出现如下两个选项,说明Slave同步Master成功
# 出现如下两个选项说明启动成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
数据同步需要一些时间,长短关系到网速以及主库和从库之间的binlog数据偏移量;
在Master查看
MariaDB [mysql]> SHOW MASTER STATUS \G
*************************** 1. row ***************************File: master1-bin.000011Position: 64952Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.000 sec)
在Slave查看
如果
Master_Log_File: master1-bin.000011
Read_Master_Log_Pos: 64952
和主库里的一致,说明同步正常,接下来可以进行测试了
MariaDB [(none)]> SHOW SLAVE STATUS \G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.154Master_User: maxscale_monitorMaster_Port: 3306Connect_Retry: 10Master_Log_File: master1-bin.000011Read_Master_Log_Pos: 64952
在主库表里进行增删改查,查看从库表里数据是否正常,并且上面的参数主库和从库一致说明同步完全正常;
测试同步Binlog同步
在网上看到在配置Slave同步信息时,不要设置Master_Log_File,原因是:当主服务器切换记录binlog文件时,从服务器将无法切换到对应的文件,如果需要自动配置从库切换Binlog,则需要将Master_Log_File参数留空即可。
CHANGE MASTER TO MASTER_HOST='192.168.1.154',
MASTER_PORT=3306,
MASTER_USER='maxscale_monitor',
MASTER_PASSWORD='maxscale123456',
# MASTER_LOG_FILE='master1-bin.000011', # 此参数不要设置
MASTER_USE_GTID=slave_pos,
MASTER_CONNECT_RETRY=10;
在Master执行,切换binlog和查看binlog
# 手动切换LOG
MariaDB [vipshop]> FLUSH LOGS;
Query OK, 0 rows affected (0.015 sec)#查看Binlog名称和检查点
MariaDB [mysql]> SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| master1-bin.000012 | 389 | | |
+--------------------+----------+--------------+------------------+
1 row in set (0.000 sec)
在Slave执行查看是否和Master一致
MariaDB [(none)]> SHOW SLAVE STATUS \G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.154Master_User: maxscale_monitorMaster_Port: 3306Connect_Retry: 10Master_Log_File: master1-bin.000012Read_Master_Log_Pos: 389
然后再次在主库执行增删改查,查看从库和主库数据是否一致,如果一致则说明同步正常;
报错简单排查
如果未提示error connecting to master 'maxscale_monitor@192.168.1.154:3306
,请做如下检查:
- 防火墙是否关闭或者允许3306端口通行;
- 密码是否正确;
- 授权是否正确;
详细排错可以查看这篇文章:https://www.yingsoo.com/news/database/69306.html
安装maxscale
添加mariadb源
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-maxscale-version="2.5"
安装
如果maxscal和应用服务器一台,在应用服务器上安装即可,如果maxscale是单独的一台,在maxscal上安装即可
yum install maxscale -y
maxscale配置文件
maxscale的配置文件在/etc/根目录下
首先复制一份保留个备份
cp /etc/maxscale.cnf /etc/maxscale.cnf.bak
前面的英文注释为官方文档,不明白的可以去官方文档查看
# MaxScale documentation:
# https://mariadb.com/kb/en/mariadb-maxscale-25/# Global parameters
#
# Complete list of configuration options:
# https://mariadb.com/kb/en/mariadb-maxscale-25-mariadb-maxscale-configuration-guide/# 全局模块
# 开启maxscale线程,默认为1,最大为100;
# 如果maxscal为单独服务器,建议设置为auto;
# 如果maxscal和其他应用在同一服务器,建议设置为1,根据需求逐步添加;
[maxscale]
threads=1# 开启maxscale记录info信息
log_info=1# 关闭debug调试信息
# log_debug=0# 关闭消息扩展
log_augmentation=0# Server definitions
#
# Set the address of the server to the network
# address of a MariaDB server.
#
# 主机模块
# 定义主从服务器连接信息,有几台就配置几台
# 连接方式可以为ip:port或者使用socket[server1]
type=server
address=192.168.1.154
# 注意,socket 与 IP:PORT 冲突,只能选其一。同时需要注意MariaDB的GRANT配置。
# socket=/var/lib/mysql/mysql.sock
port=3306
protocol=MariaDBBackend[server2]
type=server
address=192.168.1.161
port=3306
protocol=MariaDBBackend# Monitor for the servers
#
# This will keep MaxScale aware of the state of the servers.
# MariaDB Monitor documentation:
# https://mariadb.com/kb/en/maxscale-25-monitors/# 配置故障转移模块
[MariaDB-Monitor]
type=monitor
module=mariadbmon
# 监控的服务器
servers=server1,server2
# 配置监控账号和密码
user=maxscale_monitor
password=maxscale123456
# 心跳检测,2000秒监测一次,也就是2秒
monitor_interval=2000# 启用自动故障转移,false为关闭,需要人工执行命令去做故障转移,通常为true
auto_failover=true
# 启用故障恢复后自动加入集群,false为关闭,需要人工在从库执行CHANGE MASTER TO NEW_MASTER, MASTER_USE_GTID = current_pos命令,通常为true
auto_rejoin=true# Service definitions# ReadConnRoute documentation:
# https://mariadb.com/kb/en/mariadb-maxscale-25-readconnroute/# 服务模块
# ReadWriteSplit documentation:
# https://mariadb.com/kb/en/mariadb-maxscale-25-readwritesplit/# 读写分离模块
# 基于statement SQL解析的方式
[Read-Write-Service]
type=service
router=readwritesplit
router_options=master,slave
servers=server1,server2
# 路由账号
user=maxscale_route
password=maxscale123456# root用户远程访问
# enable_root_user=1# 允许主服务器读,用于服务器少的情况下
master_accept_reads=true# 路由模块处理主服务器故障时的方法,默认主库出现故障时,此时有写请求,maxscale会断开连接;
# 值为error_on_write,当主库出现问题无法写入时,会提示客户端目前处于只读模式,
master_failure_mode=error_on_write
# 和上个参数配合,当主库恢复正常时,客户端有写请求,恢复正常
master_reconnection=true# 启用因果读取
# 例如主库上写入了一条数据,从库还没来得写入该记录。那么可以通过设置causal_reads=local,
# 此时客户端在从库上查询会hang住,直至等待causal_reads_timeout=10,10秒后请求会强制转发给master
causal_reads=local
causal_reads_timeout=10# Listener definitions for the services
#
# These listeners represent the ports the
# services will listen on.
## 配置监听模块
[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=MariaDBClient
# 应用连接这个端口
port=4006
启动服务
systemctl start maxscale
如果启动报错,可以查看maxscale文档
cat /var/log/maxscale/maxscale.log
测试
maxctrl操作命令
通过maxctrl后台管理命令查看主从复制集群状态信息,命令如下:
[root@loacl maxscale]# maxctrl list servers # 查看注册的主机
┌─────────┬───────────────┬──────┬─────────────┬─────────────────┬────────────┐
│ Server │ Address │ Port │ Connections │ State │ GTID │
├─────────┼───────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server1 │ 192.168.1.154 │ 3306 │ 0 │ Master, Running │ 0-100-2700 │
├─────────┼───────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server2 │ 192.168.1.161 │ 3306 │ 0 │ Slave, Running │ 0-100-2700 │
└─────────┴───────────────┴──────┴─────────────┴─────────────────┴────────────┘[root@203 maxscale]# maxctrl list services # 查看注册服务
┌────────────────────┬────────────────┬─────────────┬───────────────────┬──────────────────┐
│ Service │ Router │ Connections │ Total Connections │ Targets │
├────────────────────┼────────────────┼─────────────┼───────────────────┼──────────────────┤
│ Read-Write-Service │ readwritesplit │ 0 │ 0 │ server1, server2 │
└────────────────────┴────────────────┴─────────────┴───────────────────┴──────────────────┘
更多命令参考官方文档:https://kb-prod.mariadb.com/kb/en/mariadb-maxscale-6-maxctrl/
创建测试用户
在主库执行,创建程序连接用户名/密码
MariaDB [(none)]> CREATE USER test;
Query OK, 0 rows affected (0.004 sec)MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE,INDEX,CREATE VIEW, EXECUTE, SHOW VIEW, EVENT, TRIGGER ON test.* TO 'test'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.002 sec)MariaDB [(none)]> GRANT SELECT ON mysql.proc TO 'test'@'%';
Query OK, 0 rows affected (0.002 sec)
使用 Mysql 客户端到连接 MaxScale
开始测试
-P 4006:为maxscale的端口
# 登录maxscale
[root@203 maxscale]# mysql -u test -h 192.168.1.203 -P 4006 -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 1
Server version: 10.3.37-MariaDB-log MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.# 使用查询当前主机名字,发现为slave从库
MariaDB [(none)]> select @@hostname;
+------------+
| @@hostname |
+------------+
| slave |
+------------+
1 row in set (0.00 sec)# 开启事务
MariaDB [(none)]> start transaction;
Query OK, 0 rows affected (0.00 sec)# 查询当前主机名为master主库
MariaDB [(none)]> select @@hostname;
+------------+
| @@hostname |
+------------+
| pev.154 |
+------------+
1 row in set (0.01 sec)# 回滚事务
MariaDB [(none)]> rollback;
Query OK, 0 rows affected (0.00 sec)# 再次查询发现
MariaDB [(none)]> select @@hostname;
+------------+
| @@hostname |
+------------+
| slave |
+------------+
1 row in set (0.00 sec)
文章来源
https://www.cnblogs.com/backups/p/maridb_maxscale.html
官方文档:
https://mariadb.com/kb/en/mariadb-maxscale-25-setting-up-mariadb-maxscale/
https://mariadb.com/kb/en/mariadb-maxscale-25-mariadb-maxscale-configuration-guide/
主从常见错误:
https://www.yingsoo.com/news/database/69306.html
相关文章:

Maxscale读写分离实施文档
Maxscale介绍 MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换。 使用Maxscale无需对业务代码进行修改,其自带的读写分离模块,能够解析SQL语句&…...

websocket实现一个简单聊天框
websoket在客户端的使用 事件:open/message/error/close 方法:send/close var socket new WebSocket(url)// 服务连接成功时触发 socket.addEventListener(open, function() {console.log("连接成功了") })// 主动给websocket发消息 socket…...

Docker-安装应用
一、安装Tomcat 注意:新版Tomcat安装之后启动访问会出现404 修改:删除原有的webapps目录,修改webapps.dist为webapps 免修改版本:billygoo/tomcat8-jdk8 二、安装Mysql 1、安装 拉取镜像 docker pull mysql:5.7 运行镜像…...

Web3中的营销:如何在2023年获得优势
Mar. 2022, Daniel在过去的一年里,让人们对你的Web3项目或协议感兴趣已经变得越来越有挑战性。许多曾经充满希望的项目因为各种不同的原因,都在熊市中倒下了。然而,那些迄今为止幸存下来的项目都有一个共同点:强大的社区。Web3营销…...

Java中==和equals区别
文章目录Java中和equals区别1. Integer中和equals的问题1.1 Integer类型且不是通过new创建的比较1.2 手动new Integer()创建的比较1.3 Integer和int比较2. String中和equals的问题3. DemoJava中和equals区别 equals是方法,是运算符: 如果比较的对象是基…...

计算机科学导论笔记(三)
五、计算机组成 计算机组成部件可以分为三大类(子系统):中央处理单元(CPU)、主存储器和输入/输出子系统。 5.1 中央处理单元(CPU) 中央处理单元用于数据的运算,分为算术逻辑单元&a…...

Stream——数字类型的字符串排序
文章目录前言什么是数字类型的字符串一个简单的坑demo拯救坑代码对象集合中的数字类型排序(有坑)对象集合中的数字类型排序 解决扩展将数字类型字符串数组转换为Integer集合总结前言 想到给数据进行排序,一开始头脑中想到的就是sorted(),本篇文章重点说…...

.NET 8 预览版 1 发布!
.NET 8 是一个长期支持(LTS) 版本。这篇文章涵盖了推动增强功能优先级排序和选择开发的主要主题和目标。.NET 8 预览版和发布候选版本将每月交付一次。像往常一样,最终版本将在 11 月的某个时候在 .NET Conf 上发布。 .NET 版本包括产品、库、运行时和工具…...

WebGIS学习路线
7年经验的webgis码农在此文跟大家分享一些一路走来的所见所闻。希望能帮助刚刚跨入这个门槛的你。 入门之前我相信你已经搞清楚了以下几个问题: 1.什么是webgis? 2.webgis能够解决什么样的问题? 3.为什么你要学习webgis? 如果还没考虑清楚也没关系,可能你看完这篇文章…...

【独家】华为OD机试 - 停车场最大距离(C 语言解题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

12.typedef的使用与结构体定义
欢迎访问个人网络日志🌹🌹知行空间🌹🌹 文章目录1.基础介绍2.typedef 的常用的几种情况3.使用typedef可能出现的问题参考资料1.基础介绍 typedef是C/C语言中保留的关键字,用来定义一种数据类型的别名。 typedef并没有…...

宝塔+docker+jenkins部署vue项目(保姆级教程)
1.使用宝塔安装docker 在软件商城安装Docker管理器 2.使用docker下载jenkins镜像 使用命令行 docker pull jenkins/jenkins:lts //lts表示支持版本较长3.创建并且挂载jenkins目录并赋值 jenkins_home为我创建的目录 可以修改任意目录 mkdir -p /jenkins_home cho…...

JVM面试总结
1.java内存模型JMM是java的内存模型,JMM-也叫Java Memory Model,这里反应翻译成存储更好,因为工作内存指的不是内存.而是CPU寄存器,主内存才是内存.屏蔽了各种硬件和操作系统的内存访问差异-把硬件的细节封装起来,实现让java程序在各平台下都能达到一致的内存访问效果,它定义了…...

C语言——文件操作
文章目录0. 思维导图1. 为什么使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名3. 文件的打开和关闭3.1 文件指针3.2 文件的打开和关闭4. 文件的顺序读写4.1 字符/字符串写入(出)4.2 格式化写入(出)4.3 二进制输入&#…...

使用aim7测试内核性能变化
aim7是一个功能强大的性能测试套件,可以用来测试内核的性能变化情况,尤其是在修改内核源码后,用来测试补丁对内核性能的影响情况。aim7测试结果中有一个重要的统计项:jobs/min,即每分钟完成的任务数量,可以…...

C++——内存管理
一,为什么要有内存管理因为在C/C中各个内置类型或者是自定义类型的大小都不一样,而如何让各个类型在内存中合理分布就非常有必要,由此我们就需要有内存管理。我们来看看下面这个程序中的各个变量都是如何分布的int globalVar 1; static int …...

AOP的另类用法 (权限校验自定义注解)
👳我亲爱的各位大佬们好😘😘😘 ♨️本篇文章记录的为 AOP的另类用法 (权限校验&&自定义注解) 相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬🙉🙉…...

[数据结构]:12-快速排序(顺序表指针实现形式)(C语言实现)
目录 前言 已完成内容 快速排序实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-PSeqListFunction.cpp 04-SortCommon.cpp 05-SortFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容,除其中使用到C引用外,全为C语言代…...

运算符——“Python”
各位CSDN的uu们你们好呀,好久没有更新Python文章了,今天,小雅兰的内容就是Python中的操作符啦,那么现在,就让我们进入Python的世界吧 注释 注释是什么 注释的语法 注释的规范 输入输出 和用户交互 通过控制台输出 通…...

2022 IoTDB Summit:华为王超《Apache IoTDB 在华为云的实践》
12 月 3 日、4日,2022 Apache IoTDB 物联网生态大会在线上圆满落幕。大会上发布 Apache IoTDB 的分布式 1.0 版本,并分享 Apache IoTDB 实现的数据管理技术与物联网场景实践案例,深入探讨了 Apache IoTDB 与物联网企业如何共建活跃生态&#…...

C 语言网络编程 — PF_NETLINK sockets
目录 文章目录目录PF_NETLINK socketsPF_NETLINK sockets Linux 提供了 4 种 User Process 和 Kernel 之间进行通信的 IPC(Inter-Process Communicate,进程间通信)方式: /procioctlsysfsPF_NETLINK sockets(Netlink …...

广州银行冲刺A股上市:不良贷款规模突破100亿元,不良率飙升
又一家城商行平移申报IPO。近日,广州银行股份有限公司(下称“广州银行”)递交招股书,准备在深圳证券交易所主板上市。本次冲刺上市,广州银行计划募资约94.79亿元,国泰君安证券为其保荐机构。 截至目前&…...

【C++】bsearch函数的使用及二分法查找介绍
写程序的时候,肯定避免不了需要从集合中找到符合条件的元素,一般情况下,最简单也最常用的就是循环遍历元素,这种方法虽然写的简单,但是小数据量还行,但是数据过大的话,这样效率就低了。循环的时…...

分布式系统中的补偿机制设计问题
我们知道,应用系统在分布式的情况下,在通信时会有着一个显著的问题,即一个业务流程往往需要组合一组服务,且单单一次通信可能会经过 DNS 服务,网卡、交换机、路由器、负载均衡等设备,而这些服务于设备都不一…...

类成员的方法
初识对象 生活中或是程序中,我们都可以使用设计表格、生产表格、填写表格的形式组织数据进行对比,在程序中: 设计表格,称之为:设计类(class) 打印表格,称之为:创建对象 …...

华为OD机试真题Python实现【端口合并】真题+解题思路+代码(20222023)
端口合并 题目 有M(1<=M<=10)个端口组, 每个端口组是长度为N(1<=N<=100)的整数数组, 如果端口组间存在 2 个及以上不同端口相同, 则认为这 2 个端口组互相关联,可以合并 第一行输入端口组个数 M,再输入 M 行,每行逗号分隔,代表端口组。 输出合并后的端口组…...

自考本科计算机网络原理(04741)历年大题真题【18年10月-22年10月】
文章目录一、简答题(历年真题)18年10月-22年10月历年简答题出题情况分析2018年10月2019年4月2019年10月2020年8月2020年10月2021年4月2021年10月2022年4月2022年10月二、综合题(历年真题)2018年10月2019年4月2019年10月2020年8月2…...

计算机SCI期刊投稿,除了投稿信,还要做什么准备? - 易智编译EaseEditing
投稿信的准备 期刊的编辑往往需要一些有关作者及其论文的信息。 而作者也希望给编辑提供一些有助于其全文送审及决策的信息。 这些信息都应该包括在投稿信中。 投稿信应包括以下几方面的内容: 文题和所有作者的姓名;稿件适宜的栏目; 为什么此论文适合于在该刊而…...

Allegro如何刷新封装和库里的封装同步操作指导
Allegro如何刷新封装和库里的封装同步操作指导 在做PCB设计的过程中,有时会因为库里的封装有更新,所以PCB上使用到了这个封装时候需要和库里的同步,如下图 如何刷新,具体操作如下 点击Place点击Update Symbols...

基于Vue3手写选课组件(含时区切换,拖拽选择)
环境说明 基于vue3vite 无关联别的ui框架,组件化 初次使用vue3,技术菜,大佬勿喷 main.ts "moment": "^2.29.4","moment-timezone": "^0.5.41",import moment from moment; import momentTz from &…...