mycat读写分离实现、企业架构MySQL读写分离

news2024/9/22 11:32:45

一、mycat读写分离实现

1. 添加一个新的虚拟主机,设置ip为10.1.1.60,主机名为mycat.yuanyu.zhangmin.关闭防火墙 SELinux NetworkManager
2. 上传jdk和mycat安装包
3. 解压并且添加到指定的位置
[root@mycat ~]# ls
anaconda-ks.cfg
frp
initserver.sh
jdk1.8.0_192
jdk-8u192-linux-x64.tar.gz
mycat
Mycat-server-1.6.5-release-
20180122220033-linux.tar.gz
[root@mycat ~]# cp -r jdk1.8.0_192/
/usr/local/jdk
[root@mycat ~]# cp -r mycat/ /usr/local/
4. 查看并且配置jdk环境
[root@mycat ~]# ls /usr/local/jdk/
bin man
COPYRIGHT README.html
include release
javafx-src.zip src.zip
jre THIRDPARTYLICENSEREADMEJAVAFX.txt
lib
THIRDPARTYLICENSEREADME.txt
LICENSE
[root@mycat ~]# sed -i '$aexport
JAVA_HOME=/usr/local/jdk' /etc/profile
[root@mycat ~]# source /etc/profile
[root@mycat ~]# $JAVA_HOME
-bash: /usr/local/jdk: 是一个目录
[root@mycat ~]# sed -i '$aexport
PATH=$PATH:$JAVA_HOME/bin' /etc/profile
[root@mycat ~]# source /etc/profile
[root@mycat ~]# $PATH
-bash:
/usr/local/sbin:/usr/local/bin:/usr/sbin:
/usr/bin:/root/bin:/usr/local/jdk/bin: 没
有那个文件或目录
5. 测试启动myca就可以了
[root@mycat ~]# ls /usr/local/mycat/
bin catlet conf lib logs version.txt
[root@mycat ~]# ll /usr/local/mycat/
总用量 12
drwxr-xr-x. 2 root root 190 8月 15 15:18
bin
drwxr-xr-x. 2 root root 6 8月 15 15:18
catlet
drwxr-xr-x. 4 root root 4096 8月 15 15:18
conf
drwxr-xr-x. 2 root root 4096 8月 15 15:18
lib
drwxr-xr-x. 2 root root 6 8月 15 15:18
logs
-rwxr-xr-x. 1 root root 219 8月 15 15:18
version.txt
[root@mycat ~]# ls /usr/local/mycat/bin/
dataMigrate.sh mycat
startup_nowrap.sh wrapper-linux-x86-
32
init_zk_data.sh rehash.sh wrapperlinux-ppc-64 wrapper-linux-x86-64
[root@mycat ~]#
/usr/local/mycat/bin/mycat console
Running Mycat-server...
wrapper | --> Wrapper Started as Console
wrapper | Launching a JVM...
jvm 1 | Java HotSpot(TM) 64-Bit Server
VM warning: ignoring option
MaxPermSize=64M; support was removed in
8.0
jvm 1 | Wrapper (Version 3.2.3)
http://wrapper.tanukisoftware.org
jvm 1 | Copyright 1999-2006 Tanuki
Software, Inc. All Rights Reserved.
jvm 1 |
jvm 1 | log4j:WARN No appenders could
be found for logger
(io.mycat.memory.MyCatMemory).
jvm 1 | log4j:WARN Please initialize
the log4j system properly.
jvm 1 | log4j:WARN See
http://logging.apache.org/log4j/1.2/faq.h
tml#noconfig for more info.
jvm 1 | MyCAT Server startup
successfully. see logs in logs/mycat.log
6. 找到server.xml和schema.xml
7. 配置server.xml
93 <user name="zhangmin"
defaultAccount="true">
94 <property
name="password">zhangmin</property>
95 <property
name="schemas">test</property>
96
97 <!-- 表级 DML 权限设置
-->
98 <!--
99 <privileges
check="false">
100 <schema
name="TESTDB" dml="0110" >
101
<table name="tb01" dml="0000"></table>
102
<table name="tb02" dml="1111"></table>
103 </schema>
104 </privileges>
105 -->
106 </user>
107 <!--
108 <user name="user">
109 <property
name="password">user</property>
110 <property
name="schemas">TESTDB</property>
111 <property
name="readOnly">true</property>
112 </user>
113 -->

8.配置schema.xml
9. 启动服务
/usr/local/mycat/bin/mycat start
10. 检查启动的是否成功
[root@mycat ~]# netstat -lnput|grep 8066
tcp6 0 0 :::8066
:::* LISTEN
4547/java
11. 连接测试
anaconda-ks.cfg echo frp initserver.sh
mysql-8.0.33-linux-glibc2.12-x86_64
[root@client ~]# cd mysql-8.0.33-linuxglibc2.12-x86_64/
[root@client mysql-8.0.33-linuxglibc2.12-x86_64]# cd bin/
[root@client bin]# ./mysql -h10.1.1.60 -
P8066 -uzhangmin -pzhangmin

二、企业架构MySQL读写分离

1、读写分离的目的
数据库负载均衡
当数据库请求增多时,单例数据库不能够满足业务需求。需要进行数据库实例的扩容。多台数据库同时相应请求。也就是说需要对数据库的请求,进行负载均衡 但是由于数据库服务特殊原因,数据库扩容基本要求为:数据的一致性和完整性。所以要保证多台数据库
实例的数据一致性和完整性,以MySQL为例来说,官方提供了主从复制机制。
读写分离:
数据库的负载均衡不同于其他服务的负载均衡,数据要求一致性。基于主从复制的基础上,常见的数据库负载均衡使用的是读写分离方式。写入主数据库,读取到从数据库。可以认为数据库读写分离,是一种特殊的负载均衡实现。
实际业务中,读写分离存在的一个问题,不够实时性。
对于要求实时性高的业务
①缓存 写主库 写缓存 读缓存
②可以读主
③添加完数据之后,有一个跳转等待的时间(5s),数据正在审核中
2、读写分离常见的实现方式
①业务代码的读写分离
需要在业务代码中,判断数据操作是读还是写,读连接从数据服务器操作,写连接主数据库服务器操作以当前LNMP为例,需要通过PHP代码实现读写分离
②中间件代理方式的读写分离
在业务代码中,数据库的操作,不直接连接数据库,而是先请求到中间件服务器(代理)
由代理服务器,判断是读操作去从数据服务器,写操作去主数据服务器

也就是如下图示架构
主从复制的原理 :主服务器开启bin-log(记录了写操 作) 从服务器获取到主服务器的bin-log 记到relay-log中。从服务器在通过异步的线程方式,对于relay-log进行重放操作。

1、master配置
①在master服务器授权,slave服务器replication
slave权限
slave是通过MySQL连接登录到master上来读取二进制日志的,因此需要在 master上给slave配置权限
mysql > grant replication slave on *.* to
'slave'@'192.168.17.%'identified by
'123456';
②master服务器打开bin-log日志,并标识server-id
shell > vim /etc/my.cnf
配置文件内容
[mysqld]
log-bin = mysql-index
server-id = 1
注意重启mysql使配置生效
③制作一个完整的备份
如果确认主从的数据库,默认开始数据是一致的,可以不做备份
shell > mysqldump -uroot -p'123456' --alldatabases > /root/mysql.sql
④查看master上的bin-log及其position位置
mysql > show master status;
查看并记录File的值,Position的值。之后需要在从服务器上,指向这些信息
2、slave配置
①恢复备份文件
如果slave和master的数据本身就是相同的,可以不选择备份和导入
②配置server-id,标识服务器
shell > vim /etc/my.cnf
配置文件内容
[mysqld]
server-id=2
由于是克隆获取的MySQL实例,所以auto.conf里记录的UUID一样,需要删除/usr/local/mysql/data/auto.conf文件,否则主从无法识别互相身份,重启自动生成新的 即可。
③配置slave replication
mysql > stop slave;
mysql> change master to
master_host='192.168.17.101'
,master_user='sl
ave1'
,master_password='123456'
,master_log_fi
le='mysql-bin.000002'
,master_log_pos=333;
mysql > start slave;
④启动replication,并检查结果
mysql > show slave status\G;
查看到两个yes,主从复制成功。否则,查看显示最下面信息,通过error信息进行排查问题。
1、简单业务代码实现
示例语法代码:
<?php
//创建类
class Mysql {
//构造方法
//当类被实例化时,会触发此方法
public function __construct(){
$this->master = @new
mysqli('192.168.17.100'
,
'tp5shop'
,
'$Abc3721'
,
'tp5shop');
$this->slave = @new
mysqli('192.168.17.105'
,
'tp5shop'
,
'$Abc3721'
,
'tp5shop');
// 如果从连接报错,就连接主
if($this->slave->connect_errno){
$this->slave=$this->master;
}
}
// SQL执行方法
public function query($sql){
//判断语句中是否存在selete
if(strpos($sql,
'select') !== false){
//这是查询操作
$rs = $this->slave->query($sql);
}else{
$rs = $this->master->query($sql);
}
return $rs;
}
}
$mysql = new Mysql();
$sql = "select * from tpshop_goods";
$rs = $mysql->query($sql);
while($row = $rs->fetch_assoc()){
var_dump($row['goods_name']);
}
将此代码上传到web服务器,测试是否可以实现读写分离。注意修改对应的连接地址、用户名称、密码等信息。
#命令行执行php代码的方式
#php需要提前配置环境变量 xxx.php为需要执行的php
脚本文件
shell > php xxx.php
2、框架配置实现读写分离
①通过查看thinkphp5手册找到处理方案
②修改项目配置文件
一定要先去确定主从数据库的数据一致(tp5shop),用户名称和密码可以进行登录使用
shell > vim
/usr/local/nginx/html/tp5shop/application/da
tabase.php
配置文件示例
return [
// 数据库类型
'type' => 'mysql'
,
// 服务器地址
// 1、主从数据库的连接地址 主在前 从在后
'hostname' =>
'192.168.17.100,192.168.17.105'
,
// 2、主从数据库的名称、用户、密码一样的话,只
配置一份即可。如果不一样,按照先后顺序,逗号分隔
// 数据库名
'database' => 'tp5shop'
,
// 用户名
'username' => 'tp5shop'
,
// 密码
'password' => '$Abc3721'
,
// 端口
'hostport' => '3306'
,
// 连接dsn
'dsn' => ''
,
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8'
,
// 数据库表前缀
'prefix' => 'tpshop_'
,
// 数据库调试模式
'debug' => true,
// 3、项目框架的业务代码实现读写分离,使用的是
分布式(主从服务器) 配置为1
// 数据库部署方式:0 集中式(单一服务器),1 分布
式(主从服务器)
'deploy' => 1,
// 4、数据库读写分离是业务代码实现的,配置为
true
// 数据库读写是否分离 主从式有效
'rw_separate' => true,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => ''
,
// 是否严格检查字段是否存在
测试down主库,看从库是否可以访问。thinkphp5中,如果slave宕机,master提供读服务。
MyCAT实现读写分离
准备一台服务器,作为数据库的中间件服务器,配置基本环境,网卡、FQDN Mycat 数据库中间件
国内最活跃的、性能最好的开源数据库中间件!
官方网址:http://www.mycat.io/ https://github.com/MyCATApache/MyCAT-Server/
因为mycat是由java语言开发,必须使用java的运行环境才能进行启动和操作
3.2、jdk安装
java 静态编译的编程语言 代码编译成机器码 执行机器码输出结果。
编译jdk javac 编译java代码运行 jre 编译好的机器码(可以执行文件) java
问:公司服务器部署的java环境是jdk还是jre?
答:jre java解析运行环境 一般情况编译过的可执行的java程序 ,jre就够用了。jdk javac 编译的环境 如果服务器上传是源代码文件 就可以编译,之后再执行。实际业务环境中,如果存在需要编译的情况,就选择jdk。
①下载安装jdk
https://www.oracle.com/technetwork/java/javase/do
wnloads/jdk8-downloads-2133151.html
选择下载x64架构.tar.gz包
上传mycat和jdk到soft目录下
shell > tar xvf jdk-8u192-linux-x64.tar.gz
shell > mv jdk1.8.0_192 /usr/local/java
②配置环境变量
#追加环境变量
shell > echo
"PATH=/usr/local/java/bin:$PATH" >>
/etc/profile
shell > source /etc/profile
#检测java环境变量 如果看到版本信息即为成功
shell > java -version
3.3、mycat安装和测试启动
①解压安装MyCAT
shell > tar xvf Mycat-server-1.6.5-release-
20180122220033-linux.tar.gz -C /usr/local
实际解压到目录即可,无需安装
②软件目录介绍
③启动mycat
默认情况下启动mycat是可以启动的
#通过控制台 进行前端启动 可以看到执行过程
shell > /usr/local/mycat/bin/mycat console
注意如果启动不成功,可能是由于没有解析主机名称。需要在hosts文件中进行解析。
3.4、配置读写分离
读写分离的配置文件:
Mycat是由java开发,java开发的软件大部分配置文件是xml格式。注意它的基本格式。
xml格式注意点:
1、xml声明信息
2、具有一个根标签
3、双标签和单标签格式
4、注意闭合标签
5、注释格式为
①查看server.xml
默认server.xml可以不用修改
shell > /usr/local/mycat/conf
shell > vim server.xml
修改server.xml
配置mycat对外的使用用户信息
②修改schema.xml
schema标签里配置name的server.xml里的虚拟数据库名称,dataNode 填写后面使用的dataNode名称
dataNode标签和dataHost指定配置使用
dataHost标签里配置writeHost和readHost(密码,地址,用户名称)
schema=>dataNode=>dataHost=>writeHost=>rea
dHost
可以使用给大家精简过的配置文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema
xmlns:mycat="http://io.mycat/">
<!-- 1、TESTDB和server.xml配置文件中的映射
的数据库名称要一致 dataNone填写下面的dataNode名
称 -->
<schema name="TESTDB"
checkSQLschema="false" sqlMaxLimit="100"
dataNode="dn3"></schema>
<!-- 2、dataNode name和上面的一致
dataHost填写下面的dataHost的name名称 database
填写后端真实数据库名称-->
<dataNode name="dn3"
dataHost="localhost1" database="tp5shop" />
<!-- 3、可以配置负载均衡、读写分离算法 暂时
可以不用动-->
<dataHost name="localhost1"
maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql"
dbDriver="native" switchType="1"
slaveThreshold="100">
<!-- 对后端数据库服务器 发送的心跳检测 --
>
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<!-- 4、配置后端真实数据库的相关登录信息
-->
<writeHost host="hostM1"
url="192.168.17.100:3306" user="tp5shop"
password="$Abc3721">
<!-- can have multi read hosts -
->
<readHost host="hostS2"
url="192.168.17.105:3306" user="tp5shop"
password="$Abc3721" />
</writeHost>
<!-- <writeHost host="hostS1"
url="localhost:3316" user="root"
password="123456" />-->
<!-- <writeHost host="hostM2"
url="localhost:3316" user="root"
password="123456"/> -->
</dataHost>
</mycat:schema>
注意修改第7行,真实数据库的名称
③启动mycat服务
shell > /usr/local/mycat/bin/mycat start
#确认mycat是否真的启动,查看它的端口 9066 8066
shell > netstat -lntp|grep 8066
Tip:如果配置之后,启动mycat,不能够启动通过查看/usr/local/mycat/logs/wrapper.log
3.5、mycat客户端
连接mycat客户端
shell > mysql -h127.0.0.1 -uroot -p123456 -
P8066
执行查询命令测试结果
mysql > show databases;
mysql > use TESTDB;
mysql > show tables;
3.6、mycat管理端
连接mycat管理端
shell > mysql -h127.0.0.1 -uroot -p123456 -
P9066
执行管理命令查看
mysql > show @@help; //查看管理监控端的所有帮助
命令
mysql > show @@heartbeat; //查看服务器状态
业务代码配置
使用数据库中间件服务器实现读写分离和后端真实数据库的管理。对于前端业务来说,数据操作需要连接的是数据库中间件服务器。操作连接的是数据库中间件服务器,而不直接连接多实例的真实服务器了。
①修改项目数据库配置文件
shell > vim
/usr/local/nginx/html/tp5shop/application/da
tabase.php
配置文件示例
return [
// 数据库类型
'type' => 'mysql'
,
// 服务器地址
// 1、连接mycat数据库中间件服务器
'hostname' => '192.168.17.106'
,
// 2、mycat对外映射的数据库名称
// 数据库名
'database' => 'TESTDB'
,
// 3、mycat对外映射的用户
// 用户名
'username' => 'root'
,
// 4、mycat对外映射的密码和端口
// 密码
'password' => '123456'
,
// 端口
'hostport' => '8066'
,
// 连接dsn
'dsn' => ''
,
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8'
,
// 数据库表前缀
'prefix' => 'tpshop_'
,
// 数据库调试模式
'debug' => true,
// 5、使用数据库中间件,对于前端业务服务器来
说,属于使用集中式单一服务器 配置为0
// 数据库部署方式:0 集中式(单一服务器),1 分布
式(主从服务器)
'deploy' => 0,
// 6、集中式单一服务器 不在业务代码进行读写分
离,交由数据库中间件去做 配置为false
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => ''
,
// 是否严格检查字段是否存在
②测试访问
mycat默认writeHost和readHost,如果writeHost不可用,则readHost也不可用。用两个writeHost,从的writeHost变成可写的了,要在slave服务器上设置readonly
3.8、balance属性和writeType属性
balance 属性
负载均衡类型,目前的取值有 3 种:
1、balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
2、balance="1", 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当
双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
3、balance="2", 所有读操作都随机的在writeHost、readhost 上分发。
4、balance="3", 所有读请求随机的分发到writerHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3没有。
writeType 属性
负载均衡类型,目前的取值有 3 种:
1、writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个
writeHost,重新启动后已切换后的为准.
2、writeType="1",所有写操作都随机的发送到配置的writeHost,1.5 以后废弃不推荐
switchType 属性
1. 表示不自动切换
2. 默认值,自动切换2 基于 MySQL 主从同步的状态决定是否切换

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

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

相关文章

24暑假算法刷题 | Day30 | 贪心算法 IV | LeetCode 452. 用最少数量的箭引爆气球,435. 无重叠区间,763. 划分字母区间

目录 452. 用最少数量的箭引爆气球题目描述题解 435. 无重叠区间题目描述题解 763. 划分字母区间题目描述题解 452. 用最少数量的箭引爆气球 点此跳转题目链接 题目描述 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中…

【Docker】Elasticsearch 8.12 安装与搭建

由于工作过程中硬件资源未能达到要求&#xff0c;现将使用 Elasticsearch 取代原 Redis MySQL Milvus 技术栈&#xff0c;在重新搭建的同时记录一下搭建过程&#xff08;由于之前也分享过 Docker 版本 Elasticsearch 5.x 和 Elasticsearch 7.x 的部署方法&#xff0c;因此本文…

横看成岭侧成峰,远近高低各不同 —— 深入探讨Obfs4流量识别:特征、方法与应用

目录 引言 Obfs4流量特征 数据包大小与分布 时间间隔&#xff08;IAT&#xff09; 流量方向 加密特征 Obfs4流量识别方法 深度学习模型识别 示例代码 基于部分数据的多级剪枝方法 方法步骤 深度包检测与机器学习结合 应用场景 网络安全监控 Tor网络访问优化 匿…

分层神经网络(DNN)知多少?

分层神经网络作为深度学习的核心架构&#xff0c;已经彻底改变了我们处理复杂问题的方式。本文将带我们走进神经网络的基础知识&#xff0c;揭开GPT这些强大模型的神秘面纱。希望通过本文的介绍&#xff0c;我们不仅能够理解神经网络的基本构成&#xff0c;还能洞察到它们是如何…

OpenCV图像处理——轮廓的面积与弧长计算(C++/Python)

概述 轮廓面积与轮廓周长是图像分析中的两项核心统计特征&#xff0c;它们为理解和量化图像中的形状提供了基础。 轮廓面积&#xff1a;这代表了轮廓所界定区域的像素数量&#xff0c;是衡量区域大小的直接指标。面积的计算结果以像素平方为单位&#xff0c;为我们提供了一个量…

Wireshark_DNS_v7.0

Wireshark_DNS_v7.0 一、 nslookup 前置 nslookup 是一个网络命令行工具&#xff0c;用于查询域名系统&#xff08;DNS&#xff09;中的域名解析记录。通过使用 nslookup&#xff0c;你可以获取某个域名的IP地址&#xff0c;或者获取与某个IP地址关联的域名信息。 查看域名…

学校医院NTP电子钟让时间管理更加智能

在学校和医院这样的重要场所&#xff0c;时间的精确管理至关重要。每一分每一秒都可能关系到教学的进度、医疗的效果以及师生和患者的体验。而 NTP 电子钟的出现&#xff0c;为学校和医院的时间管理带来了全新的智能化变革。 一、NTP 电子钟在学校应用 NTP 电子钟&#xff0c;…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第五篇 文件系统构建篇-第七十八章 离线构建Yocto系统

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【HarmonyOS】鸿蒙应用蓝牙功能实现 (一)

【HarmonyOS】鸿蒙应用蓝牙功能实现 前言 蓝牙技术是一种无线通信技术&#xff0c;可以在短距离内传输数据。它是由爱立信公司于1994年提出的&#xff0c;使用2.4 GHz的ISM频段&#xff0c;可以在10米左右的距离内进行通信。可以用于连接手机、耳机、音箱、键盘、鼠标、打印机…

工厂流水线MES报工一体机改善生产管理效率

作为智能制造的重要组成部分&#xff0c;MES系统&#xff08;制造执行系统&#xff09;在优化生产流程、提高生产效率、降低生产成本等方面发挥着不可替代的作用。而MES报工一体机作为MES系统的重要组成部分&#xff0c;更是帮助企业实现生产管理效率提升的利器。 一、MES报工一…

为何有了云计算,还需要边缘计算?EasyCVR视频平台助力数据高效汇聚与管理

在当今数字化的时代&#xff0c;云计算可谓是大名鼎鼎&#xff0c;它为我们的生活和工作带来了巨大的便利。但你有没有想过&#xff0c;既然有了强大的云计算&#xff0c;为什么还会出现边缘计算呢&#xff1f; 一、云计算与边缘计算&#xff1a;相辅相成的科技双雄 先来说说…

船员考证题库刷题

1、船舶主配电板系统&#xff0c;设有地气灯、配电板式兆欧表和低绝缘报警装置&#xff0c;及船舶照明分配电箱&#xff0c;当发生单相接地故障时而进行排查时&#xff0c;______设备是不能随意断电的。 A、厨房用电 B、卫星基站 C、起重机用电 答案&#xff1a;B 2、燃油…

修复或更换:螺杆机支撑座磨损后的处理选择

螺杆机后端支撑座磨损&#xff0c;主要是由于长期使用&#xff0c;润滑不足或使用劣质润滑油等原因导致的。当螺杆机支撑座出现磨损时&#xff0c;其承载能力会逐渐下降&#xff0c;加速磨损&#xff0c;导致设备运行不稳定&#xff0c;噪音增大&#xff0c;严重时还会导致设备…

老照片一键修复怎么做?6个软件帮助你快速进行老照片修复

老照片一键修复怎么做&#xff1f;6个软件帮助你快速进行老照片修复 老照片修复可以让陈旧、褪色或损坏的照片恢复到原有的光彩和清晰度。以下是六款方便好用的软件&#xff0c;能够帮助你快速进行老照片修复&#xff0c;且许多都支持一键操作。 智能修复老照片 这是一款专…

【Linux】守护进程:containerd的使用教程

这里写目录标题 前言一. ctr1.1 ctr CLI1.2 ctr 调试 二、 创建 container2.1 进入 NewContainer2.2 ContainerService().Create 前言 介绍了 kubelet 通过 cri 接口和 containerd 交互的过程&#xff0c;containerd 源码分析&#xff1a;启动注册流程 介绍了 containerd 作为…

屏幕防拍照技术:防止屏幕被拍照的方法有哪些?答案超乎想象!

“防身立命&#xff0c;安内攘外。” 在数字化时代&#xff0c;信息安全已成为企业乃至个人不可忽视的重要议题。 屏幕作为信息展示的主要窗口&#xff0c;其安全性尤为关键。 然而&#xff0c;随着拍照技术的日益普及与精进&#xff0c;屏幕内容被轻易捕捉并泄露的风险也随…

暗区突围辅助攻略:VMOS云手机硬核辅助!农场地图攻略大全!

在《暗区突围》中&#xff0c;了解地图和撤离点的分布对于游戏的胜利至关重要。使用VMOS云手机进行游戏辅助&#xff0c;可以为你带来显著的优势。VMOS云手机专门针对《暗区突围》进行了定制&#xff0c;内置游戏安装包&#xff0c;无需重新下载安装游戏。它能够实现24小时云端…

您看这篇就够了:ComfyUI 新手指南

欢迎来到 ComfyUI 的神奇世界&#xff0c;这是 Stable Diffusion 的一个强大而灵活的图形用户界面。无论你是数字艺术的新手&#xff0c;还是希望将你的图像创作提升到新高度的老手&#xff0c;ComfyUI 都能满足你的需求。在这篇全面的指南中&#xff0c;我们将带你穿越 ComfyU…

初识C++ · IO流

前言&#xff1a; IO流&#xff0c;启动&#xff01;因笔者对于IO流的理解不是很深刻&#xff0c;所以这里进行简单的介绍即可。 1 IO流 IO流是我们从学习C开始就一直会使用的东西&#xff0c;我们先了解一下CIO流的一套继承体系&#xff1a; 整个IO体系的基类是ios_base&…

ArkTs基础语法

ArkTs基础语法 声明变量声明常量声明自动类型推断 类型基础类型NumberBooleanString 引用类型VoidObjectArrayEnumUnionAliases 语句if语句switch语句条件表达式 ?:for语句for of语句while语句do while语句breakcontinuethrow和try catch finally语句 函数函数声明可选参数Res…