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

mycat介绍与操作步骤

文章目录

    • 1.分库分表
    • 2.mycat 入门
      • 2.1 概述
      • 2.2 案例:水平分表
        • 1)准备工作
        • 2)配置
        • 3)启动并测试
    • 3.mycat 配置详解
      • 3.1 schema.xml
      • 3.2 rule.xml
      • 3.3 server.xml
    • 4.mycat 分片:垂直拆分
      • 1)准备工作
      • 2)配置
      • 3)启动并测试
      • 4)全局表
    • 5.mycat 分片:水平拆分
    • 6.mycat 管理和监控
      • 6.1 9066管理端口
      • 6.2 mycat-web
    • 7.mycat 读写分离
      • 7.1 一主一从
      • 7.2 双主双从

1.分库分表

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

分库分表带来的问题

在这里插入图片描述

2.mycat 入门

2.1 概述

官网:http://www.mycat.org.cn/

在这里插入图片描述

在这里插入图片描述

注:先安装JDK,再解压mycat即可

在这里插入图片描述

在这里插入图片描述

注:lib中有mysql的jar包,需要根据mysql的版本进行更换

在这里插入图片描述

注:mycat在逻辑上进行分片处理,并不储存真正的数据

2.2 案例:水平分表

在这里插入图片描述

在这里插入图片描述

1)准备工作

准备三台mysql服务器,并创建同名的数据库,只建库,不要建表

在这里插入图片描述

在其中一台服务器上安装mycat(也可以再准备一台虚拟机进行操作)

  • 安装jdk
  • 配置环境变量
  • 解压mycat
2)配置

编辑以下两个配置文件

在这里插入图片描述

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100"><table name="student" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /></schema><dataNode name="dn1" dataHost="dataHost1" database="testdb" /><dataNode name="dn2" dataHost="dataHost2" database="testdb" /><dataNode name="dn3" dataHost="dataHost3" database="testdb" /><dataHost name="dataHost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc"><heartbeat>select user()</heartbeat><writeHost host="master" url="jdbc:mysql://192.168.9.3:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="123456"></writeHost></dataHost><dataHost name="dataHost2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc"><heartbeat>select user()</heartbeat><writeHost host="master" url="jdbc:mysql://192.168.9.8:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="123456"></writeHost></dataHost><dataHost name="dataHost3" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc"><heartbeat>select user()</heartbeat><writeHost host="master" url="jdbc:mysql://192.168.9.9:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="123456"></writeHost></dataHost>
</mycat:schema>

在这里插入图片描述

3)启动并测试

配置完毕,启动mycat。启动后,可查看日志

在这里插入图片描述

在这里插入图片描述

连接mycat与连接mysql基本一样

在这里插入图片描述

在这里插入图片描述

# 建表
create table STUDENT (id bigint(20) not NULL ,name varchar(50) not NULL,sex char(1) not NULL,primary key (id)
) engine=innodb default charset=utf8;# 此时分别查看三个真实数据库,会发现已创建好了相同的表结构

插入数据测试

# 插入三条数据
insert into STUDENT (id,name,sex) values(1,'tom','M');
insert into STUDENT (id,name,sex) values(2,'marry','F');
insert into STUDENT (id,name,sex) values(3,'jack','M');

在这里插入图片描述

插入三条数据后分别查看三个真实数据库,发现可能只在其中一个库中插入了数据
这是由 schema.xml 中配置的 rule=“auto-sharding-long” 分片规则决定的
这个分片规则定义在 rule.xml 中,追踪到 autopartition-long.txt 文件

在这里插入图片描述

插入新数据id为 5000001,则会插入到对应的物理数据库中,如果超过1500M后,则会报异常

在这里插入图片描述

3.mycat 配置详解

在这里插入图片描述

3.1 schema.xml

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.2 rule.xml

在这里插入图片描述

3.3 server.xml

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.mycat 分片:垂直拆分

在这里插入图片描述

1)准备工作

在上例的基础上进行配置,在三台mysql服务器上创建同名的数据库 appdb,只建库,不要建表。

数据库表说明:

  • ad_promotion:首页轮播图广告位
  • app_info:app信息
  • app_category:app类别
  • app_version:app版本
  • data_dictionary:数据字典
  • backend_user:后台用户
  • dev_user:开发者用户

2)配置

分片说明

  • 数据节点1:
    • app_info :app信息
    • app_category :app类别
    • app_version :app版本
    • data_dictionary :数据字典
  • 数据节点2:
    • backend_user :后台用户
    • dev_user :开发者用户
  • 数据节点3:
    • ad_promotion :首页轮播图广告位

schema.xml

在这里插入图片描述

在这里插入图片描述

#APPDB表示库名
<schema name="APPDB" checkSQLschema="true" sqlMaxLimit="100">
<table name="app_info" dataNode="dn1" primaryKey='id'/>
<table name="app_category" dataNode="dn1" primaryKey='id'/>
<table name="app_version" dataNode="dn1" primaryKey='id'/><table name="data_dictionary" dataNode="dn1" primaryKey='id'/><table name="backend_user" dataNode="dn2" primaryKey='id'/>
<table name="dev_user" dataNode="dn2" primaryKey='id'/><table name="ad_promotion" dataNode="dn3" primaryKey='id'/>
</schema>
#appdb表示连接的数据库名
<dataNode name="dn1" dataHost="dataHost1" database="appdb" />
<dataNode name="dn2" dataHost="dataHost2" database="appdb" />
<dataNode name="dn3" dataHost="dataHost3" database="appdb" />

server.xml

在这里插入图片描述

<user name="root" defaultAccount="true"><property name="password">123456</property><property name="schemas">APPDB</property><!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 --><!-- 表级 DML 权限设置 --><!--            <privileges check="false"><schema name="TESTDB" dml="0110" ><table name="tb01" dml="0000"></table><table name="tb02" dml="1111"></table></schema></privileges>           --></user><user name="user"><property name="password">123456</property><property name="schemas">APPDB</property><property name="readOnly">true</property></user>

3)启动并测试

在mycat端,统一用脚本建表、导入数据

如果在虚拟机里执行app_table.sql需要把脚本上传到某个目录下

如:opt目录下

xxx表示脚本目录的地址 如:source /opt/app_table.sql

# 建表
mysql> source /xxx/app_table.sql
# 导入数据
mysql> source /xxx/app_data.sql

测试以下sql语句

# 查询数据字典表
SELECT * FROM DATA_DICTIONARY;# 连接查询,查询app信息
SELECT a.id,softwareName,APKName,valueName
FROM APP_INFO a
INNER JOIN DATA_DICTIONARY d
ON a.status = d.valueId
WHERE d.typeCode= 'APP_STATUS';# 连接查询,查询管理员信息,报错截图如下
SELECT u.id,userCode,u.creationDate,valueName
FROM BACKEND_USER u
INNER JOIN DATA_DICTIONARY d
ON u.userType = d.valueId
WHERE d.typeCode= 'USER_TYPE';

在这里插入图片描述

4)全局表

如果连接查询的表处于不同的分片,则会报错

比如数据字典表,其他表可能都会引用它,则应该把它设置为全局表,让它在每个分片上都存在

重新配置后,重启mycat,还需要把物理数据库中的表全部删除,重新执行建库脚本,再进行测试

在这里插入图片描述

编辑 schema.xml

在这里插入图片描述

<table name="data_dictionary" dataNode="dn1,dn2,dn3" primaryKey='id' type="global"/>

注意:

  • 修改 schema.xml 后,重启mycat
  • 删除每个分片上的数据表,重新执行建库脚本等
  • 对全局表进行更新等操作后,其他分片上的全局表也会进行同步

5.mycat 分片:水平拆分

在这里插入图片描述

在这里插入图片描述

在上一个案例的基础上完成

schema.xml ,mod-long:通过对id取模运算把数据均匀的分散到分片上

在这里插入图片描述

server.xml ,让 root 也可以管理此逻辑库

在这里插入图片描述

重启mycat,测试略

6.mycat 管理和监控

6.1 9066管理端口

在这里插入图片描述

6.2 mycat-web

在这里插入图片描述

在这里插入图片描述

zookeeper

下载地址:https://archive.apache.org/dist/zookeeper/

安装步骤:

# 解压
tar -xf zookeeper-3.4.6.tar.gz -C /usr/local/# 创建数据存放目录
mkdir /usr/local/zookeeper-3.4.6/data# 配置文件 
cp /usr/local/zookeeper-3.4.6/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.6/conf/zoo.cfg# 修改配置文件
vim /usr/local/zookeeper-3.4.6/conf/zoo.cfg
# 第12 行
dataDir=/usr/local/zookeeper-3.4.6/data#启动
/usr/local/zookeeper-3.4.6/bin/zkServer.sh start
# 查看状态
/usr/local/zookeeper-3.4.6/bin/zkServer.sh status

安装 mycat-eye

# 解压
tar -xf Mycat-web.tar.gz -C /usr/local/# 启动
cd /usr/local/mycat-web/
sh start.sh# 网页访问
http://192.168.9.3:8082/mycat/

在这里插入图片描述

启动 zookeeper、mycat-eye,访问网页

在这里插入图片描述

在这里插入图片描述

7.mycat 读写分离

7.1 一主一从

两台虚拟机,先配置好一主一从,再配置 mycat

  • 配置好一主一从后,在主库的DDL操作会同步到从库中
  • 在主库测试建库、建表、插入数据

mycat 配置说明

  • writeHost 节点、readHost 节点
  • balance 属性(一般设置为1或3,在一主一从配置中1和3都一样)
  • 读写分离的配置中不用配置逻辑表,默认会加载物理数据库中的所有表为逻辑表

在这里插入图片描述

在这里插入图片描述

配置 schema.xml

在这里插入图片描述

writeHost 和eadHost 节点中的 name 不要相同

在这里插入图片描述

server.xml

在这里插入图片描述

重启mycat,登录并测试

  • 连接 mycat,测试新增,主库和从库中都会有新增的数据
  • 用navicat在从库中修改一条数据,在mycat 中测试查询,以验证读写是否分离
  • 如果 schema.xml 中的负载均衡策略为2,则会随机查询到两个节点的数据
  • 如果主库宕机了,查询操作正常,新增、修改、删除都会失败(一主一从并没有高可用)

7.2 双主双从

介绍

在这里插入图片描述

准备和规划

在这里插入图片描述

主机master1

  • server-id:唯一值
  • binlog-do-db:指定一个需要同步的库做测试即可,如 db01
  • log-slave-updates

在这里插入图片描述

vim /etc/my.cnfserver-id=1
log-bin=mysql-bin
#选择要同步的数据库名  只能在这个数据库进行同步
#不写就是全部数据库
binlog-do-db=mytest
log-slave-updates
#重启数据库
systemctl restart mysqld

主机master2

  • 和 master1 对比,也就是 server-id 不同
vim /etc/my.cnfserver-id=3
log-bin=mysql-bin
#选择要同步的数据库名  只能在这个数据库进行同步
#不写就是全部数据库
binlog-do-db=mytest
log-slave-updates
#重启数据库
systemctl restart mysqld

在这里插入图片描述

分别在两台主库上都创建同名的用户,用于主从复制,查看主库状态(记录 binlog文件和位置)

在这里插入图片描述

#登录mysql
mysql -uroot -p
# 创建用户,并授予主从复制权限
mysql> create user 'my'@'%' identified with mysql_native_password by 'Bdqn_8888';mysql> grant replication slave on *.* to 'my'@'%';mysql> SHOW MASTER STATUS;

从机slave1

  • 只需要配置 server-id

在这里插入图片描述

vim /etc/my.cnf#从机id
server-id=2#重启数据库
systemctl restart mysqld

从机slave2

  • 和 slave1对比,也就是server-id不同

在这里插入图片描述

vim /etc/my.cnf#从机id
server-id=4#重启数据库
systemctl restart mysqld

分别在两台从库上设置其关联的主库

在这里插入图片描述

#登录从库mysql
mysql -uroot -p#分别在两台从库上设置其关联的主库
mysql> CHANGE MASTER TO
master_host='192.168.9.6',
master_user='my',
master_password='Bdqn_8888',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=591;mysql> START SLAVE;mysql> SHOW SLAVE STATUS\G;

分别在两台主库上配置互相复制

在这里插入图片描述

两台主机进行复制    1号机连接3号机    3号机连接1号机
mysql> CHANGE MASTER TO
master_host='192.168.9.4',
master_user='my',
master_password='Bdqn_8888',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=591;mysql> START SLAVE;mysql> SHOW SLAVE STATUS\G;

测试(在navicat中测试即可)

在这里插入图片描述

  • 在 master1 执行建库、建表语句,会自动同步到其他三台服务器

  • 在 master2 执行新增语句,会自动同步到其他三台服务器


# 建库建表添加数据
mysql> create database mytest;mysql> use mytest;mysql> create table person(id int(10) primary key not null auto_increment,name varchar(50) not null,gender char(1) not null
)engine=innodb default charset=utf8mb4;mysql> insert into person values (null,'tom','m'),(null,'jack','m'),(null,'marry','f');

此时双主双从搭建完毕,下面在 mycat 进行读写分离的配置

#先安装JDK在解压mycat  
tar -xf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz -C /usr/local

schema.xml

#schema.xml配置文件位置
cd /usr/local/mycat/conf
#备份
cp schema.xml schema.xml.bakvim schema.xml

在这里插入图片描述

在这里插入图片描述

 <!--mytest --><schema name="MYTEST" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1" ></schema><dataNode name="dn1" dataHost="dataHost1" database="mytest" /><dataHost name="dataHost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100" ><heartbeat>select user()</heartbeat><writeHost host="master1" url="jdbc:mysql://192.168.9.3:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="Bdqn_8888"><readHost host="slave1" url="jdbc:mysql://192.168.9.4:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="Bdqn_8888"></readHost></writeHost><writeHost host="master2" url="jdbc:mysql://192.168.9.5:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="Bdqn_8888"><readHost host="slave2" url="jdbc:mysql://192.168.9.7:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="Bdqn_8888"></readHost></writeHost></dataHost>

server.xml

vim server.xml

在这里插入图片描述

<user name="root" defaultAccount="true"><property name="password">123456</property><property name="schemas">MYTEST</property><!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 --><!-- 表级 DML 权限设置 --><!--            <privileges check="false"><schema name="TESTDB" dml="0110" ><table name="tb01" dml="0000"></table><table name="tb02" dml="1111"></table></schema></privileges>           --></user><user name="user"><property name="password">123456</property><property name="schemas">MYTEST</property><property name="readOnly">true</property></user>

开启mycat

/usr/local/mycat/bin/mycat start

日记检测

tail -f /usr/local/mycat/logs/wrapper.log

重启mycat服务测试

测试1:

  • 修改 slave1 的数据、修改 slave2 的数据,在 mycat 中 select 看看效果,会发现显示的数据来源于master2、slave1、slave2。

  • 在 mycat 中 insert ,会发现都进行了数据同步。

测试2:

  • 停止 master1 的 mysql 服务,在 mycat 中测试查询,会发现显示的数据来源于slave2。

  • 在 mycat 中测试 insert,看能否执行写入,会发现数据写入了 master2、slave2。

相关文章:

mycat介绍与操作步骤

文章目录 1.分库分表2.mycat 入门2.1 概述2.2 案例&#xff1a;水平分表1&#xff09;准备工作2&#xff09;配置3&#xff09;启动并测试 3.mycat 配置详解3.1 schema.xml3.2 rule.xml3.3 server.xml 4.mycat 分片&#xff1a;垂直拆分1&#xff09;准备工作2&#xff09;配置…...

【Go】:图片上添加水印的全面指南——从基础到高级特性

前言 在数字内容日益重要的今天&#xff0c;保护版权和标识来源变得关键。为图片添加水印有助于声明所有权、提升品牌认知度&#xff0c;并防止未经授权的使用。本文将介绍如何用Go语言实现图片水印&#xff0c;包括静态图片和带旋转、倾斜效果的文字水印&#xff0c;帮助您有…...

R语言的语法糖

R语言的语法糖 引言 在编程语言中&#xff0c;所谓的“语法糖”是指那些使得程序员能够以更简洁、直观的方式书写代码的语法形式。R语言作为一种用于统计分析和数据可视化的编程语言&#xff0c;具有丰富的功能和灵活的语法。本文将深入探讨R语言中的语法糖&#xff0c;帮助读…...

乙游的尽头是虚拟偶像吗?

眼花了&#xff0c;竟然看到二次元乙游男主角走红毯了。 12月20日&#xff0c;某国际知名奢侈品品牌宣布&#xff0c;《恋与深空》四位男主将受邀出席品牌在上海举办的TF戏瘾之夜活动&#xff0c;并公开了四位男主的红毯照片。 没有真人实体的乙游男主走红毯&#xff1f;这是…...

【源码+文档+调试讲解】农产品研究报告管理系统

摘 要 农产品研究报告管理系统是一个旨在收集、整理、存储和分析农产品相关研究数据的综合性平台。农产品研究报告管理系统通常包含一个强大的数据库&#xff0c;它能够处理大量的研究数据&#xff0c;并对这些数据进行有效的管理和备份。农产品研究报告管理系统是现代农业科学…...

SQL UNION 操作符

SQL UNION 操作符 SQL UNION 操作符用于合并两个或多个 SELECT 语句的结果集。它将多个结果集组合成一个单独的结果集&#xff0c;并去除重复的行。为了使用 UNION&#xff0c;每个 SELECT 语句必须具有相同的列数&#xff0c;并且对应列的数据类型必须兼容。 语法 SELECT c…...

springboot vue uniapp 仿小红书 1:1 还原 (含源码演示)

线上预览: 移动端 http://8.146.211.120:8081/ 管理端 http://8.146.211.120:8088/ 小红书凭借优秀的产品体验 和超高人气 目前成为笔记类产品佼佼者 此项目将详细介绍如何使用Vue.js和Spring Boot 集合uniapp 开发一个仿小红书应用&#xff0c;凭借uniapp 可以在h5 小程序 app…...

扩散模型学习

扩散模型学习 DDPM&#xff08;参考1&#xff09; DDIM&#xff08;参考1&#xff0c;参考2&#xff09;...

【面试】MySQL 最左匹配原则

MySQL的最左匹配原则是在使用联合索引时非常重要的概念&#xff0c;理解并合理运用该原则能显著提升查询性能。以下从多个方面详细介绍&#xff1a; 1. 联合索引结构基础 联合索引是对多个列创建的索引。在MySQL中&#xff0c;联合索引以多列值的组合形式&#xff0c;按照创建…...

Mac 删除ABC 输入法

参考链接&#xff1a;百度安全验证 Mac下删除系统自带输入法ABC&#xff0c;正解&#xff01;_mac删除abc输入法-CSDN博客 ABC 输入法和搜狗输入法等 英文有冲突~~ 切换后还会在英文状态&#xff0c;可以删除 &#xff1b;可能会对DNS 输入有影响&#xff0c;但是可以通过复…...

Nginx代理同域名前后端分离项目的完整步骤

前后端分离项目&#xff0c;前后端共用一个域名。通过域名后的 url 前缀来区别前后端项目。 以 vue php 项目为例。直接上 server 模块的 nginx 配置。 server{ listen 80; #listen [::]:80 default_server ipv6onlyon; server_name demo.com;#二配置项目域名 index index.ht…...

21、Transformer Masked loss原理精讲及其PyTorch逐行实现

1. Transformer结构图 2. python import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_printoptions(precision3, sci_modeFalse)if __name__ "__main__":run_code 0batch_size 2seq_length 3vocab_size 4logits torch.randn(batch…...

CNN张量输入形状和特征图

CNN张量输入形状和特征图 这个是比较容易理解的张量的解释&#xff0c;比较直观 卷积神经网络 在这个神经网络编程系列中&#xff0c;我们正在逐步构建一个卷积神经网络&#xff08;CNN&#xff09;&#xff0c;所以让我们看看CNN的张量输入。 ​ ​ 在最后两篇文章中&…...

RK3399开发板Linux实时性改造

本次测试基于NanoPC-T4开发板&#xff08;国产化处理器RK3399&#xff09;&#xff0c;4.19.111内核Xenomai实时性改造测试。 Xenomai下载网站&#xff1a;https://xenomai.org/downloads/ NanoPC-T4网站&#xff1a;https://wiki.friendlyarm.com/wiki/index.php/NanoPC-T4/z…...

ASP.NET Core 中的高效后台任务管理

一、引言 在当今快速发展的 Web 开发领域&#xff0c;ASP.NET Core 凭借其卓越的性能、强大的功能和高度的灵活性&#xff0c;已然成为众多开发者构建现代 Web 应用程序的首选框架。它不仅能够高效地处理各种复杂的业务逻辑&#xff0c;还为开发者提供了丰富多样的工具和功能&…...

Spring Boot 2 学习指南与资料分享

Spring Boot 2 学习资料 Spring Boot 2 学习资料 Spring Boot 2 学习资料 在当今竞争激烈的 Java 后端开发领域&#xff0c;Spring Boot 2 凭借其卓越的特性&#xff0c;为开发者们开辟了一条高效、便捷的开发之路。如果你渴望深入学习 Spring Boot 2&#xff0c;以下这份精心…...

知识追踪模型DKT,DLKT详解及代码复现

定义与应用 知识追踪是一种 教育技术领域的重要方法 ,旨在通过分析学生的学习行为和表现,预测其掌握特定知识点的程度。这种方法的核心在于建立能够反映学习者认知状态的动态模型,从而实现对学生学习进度的实时监控和个性化指导。 DKT模型 DKT模型 是最早的知识追踪模型之…...

一类特殊积分的计算

一类特殊积分的计算 前言一、第一个引理二、第二个引理三、积分的计算后记 前言 今天讨论的这类积分是十分有趣的&#xff0c;在 Mathematics Stack Exchange 看见后&#xff0c;便打算在此将其中的计算过程完善一下。在本篇文章中&#xff0c;我们重点考虑求解如下积分&#…...

VScode 配置 C语言环境

遇到的问题集合 mingw官方下载网站&#xff08;https://sourceforge.net/projects/mingw-w64/files/&#xff09;更新之后&#xff0c;与网上大多数教程上写的界面不同了。 网上大多数教程让下载这个&#xff1a; 但是现在找不到这个文件。 写hello.c文件时&#xff0c;报错&…...

spring mvc源码学习笔记之十一

pom.xml 内容如下 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…...

小结:路由器和交换机的指令对比

路由器和交换机的指令有一定的相似性&#xff0c;但也有明显的区别。以下是两者指令的对比和主要差异&#xff1a; 相似之处 基本操作 两者都支持类似的基本管理命令&#xff0c;比如&#xff1a; 进入系统视图&#xff1a;system-view查看当前配置&#xff1a;display current…...

ffmpeg7.0 aac转pcm

#pragma once #define __STDC_CONSTANT_MACROS #define _CRT_SECURE_NO_WARNINGSextern "C" { #include "libavcodec/avcodec.h" }//缓冲区大小&#xff08;缓存5帧数据&#xff09; #define AUDIO_INBUF_SIZE 40960 /*name depthu8 8s16 …...

C#读取本地网络配置信息全攻略

一、引言 在当今数字化时代&#xff0c;网络已深度融入我们生活与工作的方方面面。对于软件开发而言&#xff0c;掌握本地计算机的网络配置信息显得尤为关键。想象一下&#xff0c;你正在开发一款网络诊断工具&#xff0c;需要精准定位网络连接问题&#xff0c;此时 IP 地址、…...

解决aerich init -t xx 报错ModuleNotFoundError: No module named ‘tomli_w‘

今天在学习fastapi的时候&#xff0c;发现一款数据库迁移工具&#xff0c;通过这个工具可以根据模型类来对数据库做出改变。 随跟着学: 在执行 aerich init -t settings.TORTOISE_ORM的时候&#xff0c; 彼其娘之。。 报了一些错误&#xff1a; Traceback (most recent ca…...

python检测gitlab中某个标签在一个月内添加和移除了多少次

可以通过 Python 脚本和 GitLab API 检测一个标签在一个月内被添加和移除的次数。以下是实现的步骤和示例代码&#xff1a; 步骤 获取 GitLab API 访问令牌&#xff1a;在 GitLab 中生成一个 Personal Access Token。设置时间范围&#xff1a;确定一个月的时间范围。调用 Git…...

学习模板之一

学习目标&#xff1a; 提示&#xff1a;这里可以添加学习目标 例如&#xff1a; 一周掌握 Java 入门知识 学习内容&#xff1a; 提示&#xff1a;这里可以添加要学的内容 例如&#xff1a; 搭建 Java 开发环境掌握 Java 基本语法掌握条件语句掌握循环语句 学习时间&#x…...

2025-微服务—SpringCloud-1~3

2025-微服务—SpringCloud 第一章、从Boot和Cloud版本选型开始说起1、Springboot版本2、Springcloud版本3、Springcloud Alibaba4、本次讲解定稿版 第二章 关于Cloud各种组件的停更/升级/替换1、微服务介绍2、SpringCloud是什么&#xff1f;能干吗&#xff1f;产生背景&#xf…...

centos7.6 安装nginx 1.21.3与配置ssl

1 安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel2 下载Nginx wget http://nginx.org/download/nginx-1.21.3.tar.gz3 安装目录 mkdir -p /data/apps/nginx4 安装 4.1 创建用户 创建用户nginx使用的nginx用户。 #添加www组 # groupa…...

PL/SQL语言的数据库交互

PL/SQL语言的数据库交互 引言 在当今的信息化时代&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;在各行各业中扮演着至关重要的角色。为了高效地与数据库进行交互&#xff0c;许多程序员、数据库管理员和系统分析师选择使用PL/SQL&#xff08;Procedural Language/…...

ARP欺骗

文章目录 ARP协议ARP欺骗原理断网攻击ARP欺骗(不断网) ARP协议 在局域网中&#xff0c;网络传输的是帧&#xff0c;帧里面有目标主机的MAC地址。arp协议负责将IP地址解析成对应的MAC地址 ARP欺骗原理 即通过伪造IP地址和MAC地址实现ARP欺骗&#xff0c;能够在网络中产生大量…...

Genymotion配套VirtualBox所在地址

在 Genymotion打开虚拟机前需要先打开VirtualBox中的虚拟机 C:\Program Files\Oracle\VirtualBox\VirtualBox.exe 再开启genymotion中的虚拟机开关...

TPS61022 PFM的机制以及TPS61xxx转换器的PFM与PWM之间的负载阈值

引言 TI 的大多数 TPS61xxx 低压升压转换器都配备了 PSM&#xff08;省电模式&#xff09;&#xff0c;以帮助提高轻负载效率。但是&#xff0c;当它处于重负载状态时&#xff0c;输出纹波通常会高于 PWM。此外&#xff0c;PSM 和 PWM 之间的负载电流阈值不会直观地写入数据表中…...

1. npm 常用命令详解

npm 常用命令详解 npm&#xff08;Node Package Manager&#xff09;是 Node.js 的包管理工具&#xff0c;用于安装和管理 Node.js 应用中的依赖库。下面是 npm 的一些常用命令及其详细解释和示例代码。 镜像源 # 查询当前使用的镜像源 npm get registry# 设置为淘宝镜像源 …...

黑马linux入门笔记(01)初始Linux Linux基础命令 用户和权限 实用操作

B站 黑马程序员 的视频 BV1n84y1i7td 黑马程序员新版Linux零基础快速入门到精通&#xff0c;全涵盖linux系统知识、常用软件环境部署、Shell脚本、云平台实践、大数据集群项目实战等 增强自控力 冥想慢呼吸绿色锻炼充分休息减少决策次数优先做重要的事情(早晨)融入强自控群控…...

Markdown中甘特图的使用

Markdown中甘特图的使用 1. 前言2. 语法详解2.1 甘特图语法 3. 使用场景及实例4. 小结5. 其他文章快来试试吧&#x1f58a;️ Markdown中甘特图的使用 &#x1f448;点击这里也可查看 1. 前言 Markdown 的原生语法不支持绘制图形&#xff0c;但通过扩展模块&#xff0c;我们可…...

Django创建数据表、模型、ORM操作

1、创建项目 django-admin startproject PersonInfosProject 2、创建项目应用&#xff0c;进入PersonInfosProject文件夹&#xff0c;新建index应用&#xff0c;使用命令 cd PersonInfosProject python manage.py startapp 新建完成之后的目录结构 3、新建数据模型&#xf…...

No. 31 笔记 | Web安全-SQL手工注入技术学习 Part 2

一、研究背景 背景介绍 SQL注入是一种常见且高危的Web安全漏洞。攻击者可以通过构造恶意SQL查询语句来绕过验证机制&#xff0c;执行未授权操作&#xff0c;如获取敏感信息、篡改数据库内容甚至控制服务器。 研究内容 本笔记探讨以下数据库的手工注入技术&#xff1a; MySQLAc…...

Spring Boot中的扫描注解如何使用

在 Spring Boot 中&#xff0c;扫描注解是指通过注解来告诉 Spring 框架应该扫描哪些包、哪些类或哪些特定的组件&#xff0c;并将其作为 Spring 容器中的 bean 进行管理。Spring Boot 主要通过以下几种注解来实现自动扫描&#xff1a; ComponentScanSpringBootApplicationCom…...

用 Python 从零开始创建神经网络(十九):真实数据集

真实数据集 引言数据准备数据加载数据预处理数据洗牌批次&#xff08;Batches&#xff09;训练&#xff08;Training&#xff09;到目前为止的全部代码&#xff1a; 引言 在实践中&#xff0c;深度学习通常涉及庞大的数据集&#xff08;通常以TB甚至更多为单位&#xff09;&am…...

深入探讨 Vue.js 的动态组件渲染与性能优化

Vue.js 作为一款前端领域中备受欢迎的渐进式框架&#xff0c;以其简单优雅的 API 和灵活性受到开发者的喜爱。在开发复杂应用时&#xff0c;动态组件渲染是一项极其重要的技术&#xff0c;它能够在页面中动态地加载或切换组件&#xff0c;从而显著提升应用的灵活性与用户体验。…...

qml TextArea、TextEdit、TextField、TextInput的区别于联系

在 QML 中&#xff0c;TextArea、TextEdit、TextField 和 TextInput 都是用来接收用户输入的控件&#xff0c;但它们之间有一些区别和联系。 区别&#xff1a; TextArea&#xff1a;用于多行文本输入&#xff0c;可以接收多行文本输入。TextEdit&#xff1a;也用于多行文本输入…...

《探索 PC 端的开源神经网络多模态模型宝藏》

《探索 PC 端的开源神经网络多模态模型宝藏》 一、多模态模型&#xff1a;开启智能交互新纪元二、主流 PC 端开源多模态模型大赏1. Obsidian&#xff1a;轻量级多模态先锋2. GLM-Edge 系列&#xff1a;移动端与 PC 端的全能选手3. Minicpm-llama3-v2.6&#xff1a;紧凑高效的多…...

centos 搭建nginx+配置域名+windows访问

准备工作&#xff1a;一个完整的centos环境&#xff0c;nginx安装包(可以从官网下载)nginx: download 一&#xff1a;centos可能有精简版&#xff0c;部分环境没有相关依赖包&#xff0c; 需要检查以下项&#xff1a; 1.gcc检查&#xff1a;gcc -v&#xff08;回车后应当有版…...

docker的数据卷和自定义镜像

docker的数据卷&#xff1a; 容器与宿主机之间&#xff0c;或者容器和容器之间的数据共享&#xff08;目录&#xff09;。 创建容器的时间&#xff0c;通过指定目录&#xff0c;实现容器于宿主机之间&#xff0c;或者容器和容器之间的数据共享。 容器的生命周期有限&#xff0c…...

在 Linux 下Ubuntu创建同权限用户

我是因为不小心把最开始创建的用户的文件夹颜色搞没了&#xff0c;再后来全白用习惯了&#xff0c;就不想卸载了&#xff0c;像创建一个和最开始创建的用户有一样的权限可以执行sudo -i进入root一样的用户 如图这是最原始的样子 第一步 创建新用户&#xff0c;我这里是因为之前…...

计算机视觉算法实战——面部特征点检测

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​​​​​​​​​​​​​​​​ 1. 领域介绍✨✨ 面部特征点检测&#xff08;Facial Landmark Detection&#xff09;是计算机视觉中…...

电力场景红外测温图像均压环下的避雷器识别分割数据集labelme格式2436张1类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;2436 标注数量(json文件个数)&#xff1a;2436 标注类别数&#xff1a;1 标注类别名称:["arrester"] 每个类别标注的框数&am…...

4种革新性AI Agent工作流设计模式全解析

文章目录 导读&#xff1a;AI Agent的四种关键设计模式如下&#xff1a;1. 反思2. 工具使用3. 规划4. 多Agent协作 总结内容简介&#xff1a; 导读&#xff1a; AI Agent是指能够在特定环境中自主执行任务的人工智能系统&#xff0c;不仅接收任务&#xff0c;还自主制定和执行…...

C#基础 枚举 Enumeration从基础到进阶

目录 一、入门篇&#xff1a;枚举基础1. 枚举类型的定义2. 枚举类型的优点3. 枚举的基本使用3.1 枚举的类型转换3.2 遍历枚举成员3.3 判断枚举值是否有效3.4枚举的比较 4. 枚举的设计规范 二、深入底层篇&#xff1a;存储、值与继承限制1. 枚举的存储与表示2. 枚举底层类型选择…...

SOME/IP 协议详解——服务发现

文章目录 1. Introduction &#xff08;引言&#xff09;2. SOME/IP Service Discovery (SOME/IP-SD)2.1 General&#xff08;概述)2.2 SOME/IP-SD Message Format2.2.1 通用要求2.2.2 SOME/IP-SD Header2.2.3 Entry Format2.2.4 Options Format2.2.4.1 配置选项&#xff08;Co…...