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&serverTimezone=Asia/Shanghai&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&serverTimezone=Asia/Shanghai&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&serverTimezone=Asia/Shanghai&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&serverTimezone=Asia/Shanghai&characterEncoding=utf8" user="root" password="Bdqn_8888"><readHost host="slave1" url="jdbc:mysql://192.168.9.4:3306?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8" user="root" password="Bdqn_8888"></readHost></writeHost><writeHost host="master2" url="jdbc:mysql://192.168.9.5:3306?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8" user="root" password="Bdqn_8888"><readHost host="slave2" url="jdbc:mysql://192.168.9.7:3306?useSSL=false&serverTimezone=Asia/Shanghai&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 案例:水平分表1)准备工作2)配置3)启动并测试 3.mycat 配置详解3.1 schema.xml3.2 rule.xml3.3 server.xml 4.mycat 分片:垂直拆分1)准备工作2)配置…...
【Go】:图片上添加水印的全面指南——从基础到高级特性
前言 在数字内容日益重要的今天,保护版权和标识来源变得关键。为图片添加水印有助于声明所有权、提升品牌认知度,并防止未经授权的使用。本文将介绍如何用Go语言实现图片水印,包括静态图片和带旋转、倾斜效果的文字水印,帮助您有…...
R语言的语法糖
R语言的语法糖 引言 在编程语言中,所谓的“语法糖”是指那些使得程序员能够以更简洁、直观的方式书写代码的语法形式。R语言作为一种用于统计分析和数据可视化的编程语言,具有丰富的功能和灵活的语法。本文将深入探讨R语言中的语法糖,帮助读…...
乙游的尽头是虚拟偶像吗?
眼花了,竟然看到二次元乙游男主角走红毯了。 12月20日,某国际知名奢侈品品牌宣布,《恋与深空》四位男主将受邀出席品牌在上海举办的TF戏瘾之夜活动,并公开了四位男主的红毯照片。 没有真人实体的乙游男主走红毯?这是…...
【源码+文档+调试讲解】农产品研究报告管理系统
摘 要 农产品研究报告管理系统是一个旨在收集、整理、存储和分析农产品相关研究数据的综合性平台。农产品研究报告管理系统通常包含一个强大的数据库,它能够处理大量的研究数据,并对这些数据进行有效的管理和备份。农产品研究报告管理系统是现代农业科学…...
SQL UNION 操作符
SQL UNION 操作符 SQL UNION 操作符用于合并两个或多个 SELECT 语句的结果集。它将多个结果集组合成一个单独的结果集,并去除重复的行。为了使用 UNION,每个 SELECT 语句必须具有相同的列数,并且对应列的数据类型必须兼容。 语法 SELECT c…...
springboot vue uniapp 仿小红书 1:1 还原 (含源码演示)
线上预览: 移动端 http://8.146.211.120:8081/ 管理端 http://8.146.211.120:8088/ 小红书凭借优秀的产品体验 和超高人气 目前成为笔记类产品佼佼者 此项目将详细介绍如何使用Vue.js和Spring Boot 集合uniapp 开发一个仿小红书应用,凭借uniapp 可以在h5 小程序 app…...
扩散模型学习
扩散模型学习 DDPM(参考1) DDIM(参考1,参考2)...
【面试】MySQL 最左匹配原则
MySQL的最左匹配原则是在使用联合索引时非常重要的概念,理解并合理运用该原则能显著提升查询性能。以下从多个方面详细介绍: 1. 联合索引结构基础 联合索引是对多个列创建的索引。在MySQL中,联合索引以多列值的组合形式,按照创建…...
Mac 删除ABC 输入法
参考链接:百度安全验证 Mac下删除系统自带输入法ABC,正解!_mac删除abc输入法-CSDN博客 ABC 输入法和搜狗输入法等 英文有冲突~~ 切换后还会在英文状态,可以删除 ;可能会对DNS 输入有影响,但是可以通过复…...
Nginx代理同域名前后端分离项目的完整步骤
前后端分离项目,前后端共用一个域名。通过域名后的 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张量输入形状和特征图 这个是比较容易理解的张量的解释,比较直观 卷积神经网络 在这个神经网络编程系列中,我们正在逐步构建一个卷积神经网络(CNN),所以让我们看看CNN的张量输入。 在最后两篇文章中&…...
RK3399开发板Linux实时性改造
本次测试基于NanoPC-T4开发板(国产化处理器RK3399),4.19.111内核Xenomai实时性改造测试。 Xenomai下载网站:https://xenomai.org/downloads/ NanoPC-T4网站:https://wiki.friendlyarm.com/wiki/index.php/NanoPC-T4/z…...
ASP.NET Core 中的高效后台任务管理
一、引言 在当今快速发展的 Web 开发领域,ASP.NET Core 凭借其卓越的性能、强大的功能和高度的灵活性,已然成为众多开发者构建现代 Web 应用程序的首选框架。它不仅能够高效地处理各种复杂的业务逻辑,还为开发者提供了丰富多样的工具和功能&…...
Spring Boot 2 学习指南与资料分享
Spring Boot 2 学习资料 Spring Boot 2 学习资料 Spring Boot 2 学习资料 在当今竞争激烈的 Java 后端开发领域,Spring Boot 2 凭借其卓越的特性,为开发者们开辟了一条高效、便捷的开发之路。如果你渴望深入学习 Spring Boot 2,以下这份精心…...
知识追踪模型DKT,DLKT详解及代码复现
定义与应用 知识追踪是一种 教育技术领域的重要方法 ,旨在通过分析学生的学习行为和表现,预测其掌握特定知识点的程度。这种方法的核心在于建立能够反映学习者认知状态的动态模型,从而实现对学生学习进度的实时监控和个性化指导。 DKT模型 DKT模型 是最早的知识追踪模型之…...
一类特殊积分的计算
一类特殊积分的计算 前言一、第一个引理二、第二个引理三、积分的计算后记 前言 今天讨论的这类积分是十分有趣的,在 Mathematics Stack Exchange 看见后,便打算在此将其中的计算过程完善一下。在本篇文章中,我们重点考虑求解如下积分&#…...
VScode 配置 C语言环境
遇到的问题集合 mingw官方下载网站(https://sourceforge.net/projects/mingw-w64/files/)更新之后,与网上大多数教程上写的界面不同了。 网上大多数教程让下载这个: 但是现在找不到这个文件。 写hello.c文件时,报错&…...
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…...
小结:路由器和交换机的指令对比
路由器和交换机的指令有一定的相似性,但也有明显的区别。以下是两者指令的对比和主要差异: 相似之处 基本操作 两者都支持类似的基本管理命令,比如: 进入系统视图:system-view查看当前配置:display current…...
ffmpeg7.0 aac转pcm
#pragma once #define __STDC_CONSTANT_MACROS #define _CRT_SECURE_NO_WARNINGSextern "C" { #include "libavcodec/avcodec.h" }//缓冲区大小(缓存5帧数据) #define AUDIO_INBUF_SIZE 40960 /*name depthu8 8s16 …...
C#读取本地网络配置信息全攻略
一、引言 在当今数字化时代,网络已深度融入我们生活与工作的方方面面。对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键。想象一下,你正在开发一款网络诊断工具,需要精准定位网络连接问题,此时 IP 地址、…...
解决aerich init -t xx 报错ModuleNotFoundError: No module named ‘tomli_w‘
今天在学习fastapi的时候,发现一款数据库迁移工具,通过这个工具可以根据模型类来对数据库做出改变。 随跟着学: 在执行 aerich init -t settings.TORTOISE_ORM的时候, 彼其娘之。。 报了一些错误: Traceback (most recent ca…...
python检测gitlab中某个标签在一个月内添加和移除了多少次
可以通过 Python 脚本和 GitLab API 检测一个标签在一个月内被添加和移除的次数。以下是实现的步骤和示例代码: 步骤 获取 GitLab API 访问令牌:在 GitLab 中生成一个 Personal Access Token。设置时间范围:确定一个月的时间范围。调用 Git…...
学习模板之一
学习目标: 提示:这里可以添加学习目标 例如: 一周掌握 Java 入门知识 学习内容: 提示:这里可以添加要学的内容 例如: 搭建 Java 开发环境掌握 Java 基本语法掌握条件语句掌握循环语句 学习时间&#x…...
2025-微服务—SpringCloud-1~3
2025-微服务—SpringCloud 第一章、从Boot和Cloud版本选型开始说起1、Springboot版本2、Springcloud版本3、Springcloud Alibaba4、本次讲解定稿版 第二章 关于Cloud各种组件的停更/升级/替换1、微服务介绍2、SpringCloud是什么?能干吗?产生背景…...
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语言的数据库交互 引言 在当今的信息化时代,数据库管理系统(DBMS)在各行各业中扮演着至关重要的角色。为了高效地与数据库进行交互,许多程序员、数据库管理员和系统分析师选择使用PL/SQL(Procedural Language/…...
ARP欺骗
文章目录 ARP协议ARP欺骗原理断网攻击ARP欺骗(不断网) ARP协议 在局域网中,网络传输的是帧,帧里面有目标主机的MAC地址。arp协议负责将IP地址解析成对应的MAC地址 ARP欺骗原理 即通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量…...
Genymotion配套VirtualBox所在地址
在 Genymotion打开虚拟机前需要先打开VirtualBox中的虚拟机 C:\Program Files\Oracle\VirtualBox\VirtualBox.exe 再开启genymotion中的虚拟机开关...
TPS61022 PFM的机制以及TPS61xxx转换器的PFM与PWM之间的负载阈值
引言 TI 的大多数 TPS61xxx 低压升压转换器都配备了 PSM(省电模式),以帮助提高轻负载效率。但是,当它处于重负载状态时,输出纹波通常会高于 PWM。此外,PSM 和 PWM 之间的负载电流阈值不会直观地写入数据表中…...
1. npm 常用命令详解
npm 常用命令详解 npm(Node Package Manager)是 Node.js 的包管理工具,用于安装和管理 Node.js 应用中的依赖库。下面是 npm 的一些常用命令及其详细解释和示例代码。 镜像源 # 查询当前使用的镜像源 npm get registry# 设置为淘宝镜像源 …...
黑马linux入门笔记(01)初始Linux Linux基础命令 用户和权限 实用操作
B站 黑马程序员 的视频 BV1n84y1i7td 黑马程序员新版Linux零基础快速入门到精通,全涵盖linux系统知识、常用软件环境部署、Shell脚本、云平台实践、大数据集群项目实战等 增强自控力 冥想慢呼吸绿色锻炼充分休息减少决策次数优先做重要的事情(早晨)融入强自控群控…...
Markdown中甘特图的使用
Markdown中甘特图的使用 1. 前言2. 语法详解2.1 甘特图语法 3. 使用场景及实例4. 小结5. 其他文章快来试试吧🖊️ Markdown中甘特图的使用 👈点击这里也可查看 1. 前言 Markdown 的原生语法不支持绘制图形,但通过扩展模块,我们可…...
Django创建数据表、模型、ORM操作
1、创建项目 django-admin startproject PersonInfosProject 2、创建项目应用,进入PersonInfosProject文件夹,新建index应用,使用命令 cd PersonInfosProject python manage.py startapp 新建完成之后的目录结构 3、新建数据模型…...
No. 31 笔记 | Web安全-SQL手工注入技术学习 Part 2
一、研究背景 背景介绍 SQL注入是一种常见且高危的Web安全漏洞。攻击者可以通过构造恶意SQL查询语句来绕过验证机制,执行未授权操作,如获取敏感信息、篡改数据库内容甚至控制服务器。 研究内容 本笔记探讨以下数据库的手工注入技术: MySQLAc…...
Spring Boot中的扫描注解如何使用
在 Spring Boot 中,扫描注解是指通过注解来告诉 Spring 框架应该扫描哪些包、哪些类或哪些特定的组件,并将其作为 Spring 容器中的 bean 进行管理。Spring Boot 主要通过以下几种注解来实现自动扫描: ComponentScanSpringBootApplicationCom…...
用 Python 从零开始创建神经网络(十九):真实数据集
真实数据集 引言数据准备数据加载数据预处理数据洗牌批次(Batches)训练(Training)到目前为止的全部代码: 引言 在实践中,深度学习通常涉及庞大的数据集(通常以TB甚至更多为单位)&am…...
深入探讨 Vue.js 的动态组件渲染与性能优化
Vue.js 作为一款前端领域中备受欢迎的渐进式框架,以其简单优雅的 API 和灵活性受到开发者的喜爱。在开发复杂应用时,动态组件渲染是一项极其重要的技术,它能够在页面中动态地加载或切换组件,从而显著提升应用的灵活性与用户体验。…...
qml TextArea、TextEdit、TextField、TextInput的区别于联系
在 QML 中,TextArea、TextEdit、TextField 和 TextInput 都是用来接收用户输入的控件,但它们之间有一些区别和联系。 区别: TextArea:用于多行文本输入,可以接收多行文本输入。TextEdit:也用于多行文本输入…...
《探索 PC 端的开源神经网络多模态模型宝藏》
《探索 PC 端的开源神经网络多模态模型宝藏》 一、多模态模型:开启智能交互新纪元二、主流 PC 端开源多模态模型大赏1. Obsidian:轻量级多模态先锋2. GLM-Edge 系列:移动端与 PC 端的全能选手3. Minicpm-llama3-v2.6:紧凑高效的多…...
centos 搭建nginx+配置域名+windows访问
准备工作:一个完整的centos环境,nginx安装包(可以从官网下载)nginx: download 一:centos可能有精简版,部分环境没有相关依赖包, 需要检查以下项: 1.gcc检查:gcc -v(回车后应当有版…...
docker的数据卷和自定义镜像
docker的数据卷: 容器与宿主机之间,或者容器和容器之间的数据共享(目录)。 创建容器的时间,通过指定目录,实现容器于宿主机之间,或者容器和容器之间的数据共享。 容器的生命周期有限,…...
在 Linux 下Ubuntu创建同权限用户
我是因为不小心把最开始创建的用户的文件夹颜色搞没了,再后来全白用习惯了,就不想卸载了,像创建一个和最开始创建的用户有一样的权限可以执行sudo -i进入root一样的用户 如图这是最原始的样子 第一步 创建新用户,我这里是因为之前…...
计算机视觉算法实战——面部特征点检测
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 1. 领域介绍✨✨ 面部特征点检测(Facial Landmark Detection)是计算机视觉中…...
电力场景红外测温图像均压环下的避雷器识别分割数据集labelme格式2436张1类别
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):2436 标注数量(json文件个数):2436 标注类别数:1 标注类别名称:["arrester"] 每个类别标注的框数&am…...
4种革新性AI Agent工作流设计模式全解析
文章目录 导读:AI Agent的四种关键设计模式如下:1. 反思2. 工具使用3. 规划4. 多Agent协作 总结内容简介: 导读: AI Agent是指能够在特定环境中自主执行任务的人工智能系统,不仅接收任务,还自主制定和执行…...
C#基础 枚举 Enumeration从基础到进阶
目录 一、入门篇:枚举基础1. 枚举类型的定义2. 枚举类型的优点3. 枚举的基本使用3.1 枚举的类型转换3.2 遍历枚举成员3.3 判断枚举值是否有效3.4枚举的比较 4. 枚举的设计规范 二、深入底层篇:存储、值与继承限制1. 枚举的存储与表示2. 枚举底层类型选择…...
SOME/IP 协议详解——服务发现
文章目录 1. Introduction (引言)2. SOME/IP Service Discovery (SOME/IP-SD)2.1 General(概述)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 配置选项(Co…...