MySQL-自带工具介绍

news2024/11/17 11:52:25

目录

🍁mysql

🍁mysqladmin


  🦐博客主页:大虾好吃吗的博客

  🦐MySQL专栏:MySQL专栏地址

        MySQL数据库不仅提供了数据库的服务器端应用程序,同时还提供了大量的客户端工具程序,如mysql,mysqladmin,mysqldump等等

        Mysql命令是用的最多的一个命令工具了,为用户提供一个命令行接口来操作管理MySQL 服务器。

        运行‘mysql --help’ 就可以获取mysql帮助信息,这里主要介绍运维过程中用到的选项,-e 这个参数可以在linux终端就可以对mysql数据库操作,这种方法多用于脚本的使用,格式如下:

[root@localhost ~]# mysql -uroot -p123 -e "show databases"             #在终端查看有哪些库

mysql

        例1: 通过binlog_cache_use 以及 binlog_cache_disk_use来分析设置的binlog_cache_size是否足够

[root@localhost ~]# mysql -uroot -p123 -e "show status like 'binlog_cache%'"
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| Binlog_cache_disk_use | 0     |
| Binlog_cache_use      | 0     |
+-----------------------+-------+

例2:通过脚本创建数据库、表及对表进行增、改、删、查操作。 脚本内容如下:

mysql1:192.168.8.1

mysql2:192.168.8.2

        打开两台mysql服务器,IP分别为8.1和8.2,执行脚本使mysql1主机远程访问mysql2,对其进行增、删、改、查操作。需要注意的是,执行脚本前mysql2需要提前创建一个远程用户‘z3’、密码‘123’,因为密码在终端显示,所以会有Warning,实验中不理会就可以了。

[root@localhost ~]# cat mysql1.sh
#!/bin/bash
HOSTNAME="192.168.8.2"
PORT="3306"
USERNAME="z3"
PASSWORD="123"
DBNAME="test_db"
TABLENAME="tb1"
​
#create database
create_db_sql="create database if not exists ${DBNAME}"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} -e "${create_db_sql}"
​
#create table
create_table_sql="create table if not exists ${TABLENAME} (name varchar(20),id int default 0)"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} ${DBNAME} -e "${create_table_sql}"
​
#insert data to table
insert_sql="insert into ${TABLENAME} values ('tom',1)"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} ${DBNAME} -e "${insert_sql}"
​
#select data
select_sql="select * from ${TABLENAME}"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"
​
#update data
update_sql="update ${TABLENAME} set id=3"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} ${DBNAME} -e "${update_sql}"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"
​
#delete data
delete_sql="delete from ${TABLENAME}"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} ${DBNAME} -e "${delete_sql}"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"

使用mysql1主机创建授予z3用户可以在指定的源登录

[root@mysql1 ~]# mysql -uroot -p123 -e "grant all on test_db.* to z3@'192.168.8.%' identified by '123'"

测试z3用户连接mysql服务器

[root@mysql ~]# mysql -uz3 -p123 -h 192.168.8.2
#省略部分内容

授予脚本执行权限

[root@mysql1 ~]# chmod +x /root/mysql1.sh               #给脚本执行权限
[root@mysql1 ~]# ./mysql1.sh                            #执行

        如果在连接时候使用了“-E, --vertical”参数,登入之后的所有查询结果都将以纵列显示,效果和我们在一条查询之后以“\G”结尾一样。

[root@mysql1 ~]# mysql -uroot -p123 -E
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.40 Source distribution
​
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
​
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
mysql> show databases;
*************************** 1. row ***************************
Database: information_schema
*************************** 2. row ***************************
Database: mysql
*************************** 3. row ***************************
Database: performance_schema
*************************** 4. row ***************************
Database: sys
4 rows in set (0.01 sec)

        “-H, --html”与“-X, --xml”,在启用这两个参数之后,select出来的所有结果都会按照“Html”与“Xml”格式来输出,在有些场合之下,比如希望Xml或者Html 文件格式导出某些报表文件的时候,是非常方便的。

[root@mysql1 ~]# mysql -X -uroot -p123 -e "show databases"
mysql: [Warning] Using a password on the command line interface can be insecure.
<?xml version="1.0"?>
​
<resultset statement="show databases
" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <row>
    <field name="Database">information_schema</field>
  </row>
​
  <row>
    <field name="Database">mysql</field>
  </row>
​
  <row>
    <field name="Database">performance_schema</field>
  </row>
​
  <row>
    <field name="Database">sys</field>
  </row>
</resultset>

        “--prompt=name”参数对于做运维的人来说是一个非常重要的参数选项,其主要功能是定制自己的mysql提示符的显示内容。在默认情况下,我们通过mysql登入到数据库之后,mysql的提示符只是一个很简单的内容”mysql>“,没有其他任何附加信息。非常幸运的是mysql通过“--prompt=name”参数给我们提供了自定义提示信息的办法,可以通过配置显示登入的主机地址,登录用户名,当前时间,当前数据库schema,MySQLServer 的一些信息等等。我个人强烈建议将登录主机名,登录用户名和所在的schema 这三项加入提示内容,因为当大家手边管理的MySQL 越来越多,操作越来越频繁的时候,非常容易因为操作的时候没有太在意自己当前所处的环境而造成在错误的环境执行了错误的命令并造成严重后果的情况。如果我们在提示内容中加入了这几项之后,至少可以更方便的提醒自己当前所处环境,以尽量减少犯错误的概率。

个人建议提示符定义:

"\u@\h : \d \r:\m:\s> "

显示效果:

[root@mysql1 ~]# mysql -uroot -p123 --prompt="\\u@\\h : \\d \\r:\\m:\\s> "
#省略部分内容
​
root@localhost : (none) 10:52:19> 

        提示符解释: \u 表示用户名, \h 表示主机名, \d 表示当前数据库,\r小时(12小时制),\m分种,\s秒,\R The current time, in 24-hour military time (0–23)

        “--tee=name”参数也是对运维人员非常有用的参数选项,用来告诉mysql,将所有输入和输出内容都记录进文件。在我们一些较大维护变更的时候,为了方便被查,最好是将整个操作过程的所有输入和输出内容都保存下来。 假如mysql命令行状态下,要进行大量的交互操作,其实可以把这些操作记录在log中进行审计,很简单

[root@mysql1 ~]# mysql -uroot -p123 --tee=/opt/my.log

        也可以在服务器上的/etc/my.cnf中的[client]加入 tee =/tmp/client_mysql.log即可. 注:若没有[client]就添加即可 或者在mysql>提示符下执行下面的命令> tee /opt/my.log,当登录mysql执行操作时,都将把数据保存到my.log文件内。

[root@mysql1 ~]# cat /opt/my.log 
#省略部分内容
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
​
mysql> exit

mysqladmin

        mysqladmin Usage: mysqladmin [OPTIONS] commandcommand ... mysqadmin,顾名思义,提供的功能都是与MySQL 管理相关的各种功能。如MySQL Server状态检查,各种统计信息的flush,创建/删除数据库,关闭MySQL Server 等等。mysqladmin所能做的事情,虽然大部分都可以通过mysql连接登录上MySQL Server 之后来完成,但是大部分通过mysqladmin来完成操作会更简单更方便。这里将介绍一下经常使用到的几个常用功能: ping 命令可以很容易检测MySQL Server 是否还能正常提供服务。

mysql本机上测试:

在其他主机上测试mysql server是否正常提供服务

注1:地址192.168.8.1是mysql1的ip

注2:mysql1的防火墙要允许3306/tcp通信

注3:在mysql1上创建授权用户

        mysqladmin其他参数选项可以通过执行“mysqladmin --help”或man mysqladmin得到帮助信息。 编写一个简单的mysql监控脚本,内容如下:

#!/bin/bash
USER=root
PWD=123
HOST=192.168.8.1
​
#监测服务是否正常
mysqladmin -u${USER} -p${PWD} -h${HOST} ping 2>/dev/null
if [  $? -ne 0 ];then
        echo "db down"
fi
​
#获取mysql当前状态值
mysqladmin -u${USER} -p${PWD} -h${HOST} status 2>/dev/null
​
#获取数据库当前连接信息
mysqladmin -u${USER} -p${PWD} -h${HOST} processlist 2>/dev/null
​
#获取数据库当前的连接数
mysql -u${USER} -p${PWD} -h${HOST} information_schema -BNe "select user,host,count(*) from processlist group by host,user"
​
#显示mysql的启动时长
mysql -u${USER} -p${PWD} -h${HOST} -NBe "show status like '%Uptime'" 2>/dev/null |awk '/^Uptime/{a=$NF/3600;print $(NF-1),a"hour"}'
​
#查看数据库所有库大小
mysql -u${USER} -p${PWD} -h${HOST} information_schema -e  "select TABLE_SCHEMA as db,concat(round((sum(DATA_LENGTH+INDEX_LENGTH))/1024/1024,2),'M') as total from tables group by TABLE_SCHEMA"
  1. Mysql的系统数据库

1)INFORMATION_SCHEMA数据字典:此数据库存贮了其他所有数据库的信息(元数据)。元数据是关于数据的数据,如database name或table name,列的数据类型,或访问权限等。

        INFORMATION_SCHEMA库的主要系统表 TABLES表:提供了关于数据库中的表和视图的信息。(Table_schema字段代表 数据表所属的数据库名)

        SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA='数据库名'; COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。

        SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='数据库名‘' AND TABLE_NAME='表名' TABLE_CONSTRAINTS表:存储主键约束、外键约束、唯一约束、check约束。各字段的说明信息SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA='数据库名' AND TABLE_NAME='表名' STATISTICS表:提供了关于表索引的信息。

        SELECT * FROM information_schema.STATISTICS WHERE TABLE_SCHEMA='数据库名’ AND TABLE_NAME=’表名’ 。

2)performance_schema性能字典,此数据库为数据库性能优化提供重要的参考信息。

3)MYSQL数据库: 该数据库也是个核心数据库,存储用户的权限信息与帮助信息。

4)MySQL5.7 提供了 sys系统数据库。 sys数据库里面包含了一系列的存储过程、自定义函数以及视图来帮助我们快速的了解系统的元数据信息。sys系统数据库结合了information_schema和performance_schema的相关数据,让我们更加容易的检索元数据。

  1. mysqldump: 这个工具其功能就是将MySQL Server中的数据以SQL 语句的形式从数据库中dump 成文本文件。mysqldump是做为MySQL 的一种逻辑备份工具

  2. mysqlbinlog mysqlbinlog程序的主要功能就是分析MySQL Server 所产生的二进制日志(也就是binlog)。通过mysqlbinlog,我们可以解析出binlog中指定时间段或者指定日志起始和结束位置的内容解析成SQL 语句。

  3. Mysqlslap性能测试MySQL二种存储引擎 mysqlslap是mysql自带的基准测试工具

        优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。mysqlslap为mysql性能优化前后提供了直观的验证依据,建议系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的掌握线上数据库支撑的用户流量上限及其抗压性等问题。

        现在看一下这个压力测试工具mysqlslap,关于他的选项手册上以及--help介绍的很详细。 这里解释一下一些常用的选项。

--concurrency代表并发数量,多个可以用逗号隔开。例如:concurrency=50,100,200 --engines代表要测试的引擎,可以有多个,用分隔符隔开。 
--iterations代表要运行这些测试多少次,即运行多少次后,得到结果。 
--auto-generate-sql 代表用系统自己生成的SQL脚本来测试。 
--auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed) 
--number-of-queries 代表总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算。比如倒数第二个结果2=200/100。 
--debug-info 代表要额外输出CPU以及内存的相关信息(注:只有在MySQL用--with-debug编译时可)。 
--number-int-cols 代表测试表中的INTEGER类型的属性有几个。 
--number-char-cols代表测试表的char类型字段的数量。 
--create-schema 代表自己定义的模式(在MySQL中也就是库即创建测试的数据库)。 
--query 代表自己的SQL脚本。 
--only-print如果只想打印看看SQL语句是什么,可以用这个选项。 
--csv=name 生产CSV格式数据文件 查看Mysql数据库默认最大连接数。

        可以看到mysql5.7.13默认是151,注:不同版本默认最大连接数不差别。一般生产环境是不够的,在my.cnf[mysqld]下添加 max_connections=1024 增加到1024,重启Mysql。 修改my.cnf文件并重启mysqld服务。

查看修改后的最大连接数

查看Mysql默认使用存储引擎,如下查看: mysql> show engines;

现在我们来看一下具体测试的例子 用自带的SQL脚本来测试:

[root@localhost ~]# mysqlslap --defaults-file=/etc/my.cnf --concurrency=100,200 --iterations=1 --number-int-cols=20 --number-char-cols=30 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=2000 -uroot -p123 --verbose

显示结果:

        测试说明:模拟测试两次读写并发,第一次100,第二次200,自动生成SQL脚本,测试表包含20个init字段,30个char字段,每次执行2000查询请求。测试引擎分别是myisam,innodb。

        测试结果说明: Myisam第一次100客户端同时发起增查用0.413/s,第二次200客户端同时发起增查用0.509/s Innodb第一次100客户端同时发起增查用0.692/s,第二次200客户端同时发起增查用0.617/s 由此可见MyISAM存储引擎处理性能是最好的,也是最常用的,但不支持事务。InonDB存储引擎提供了事务型数据引擎(ACID),在事务型引擎里使用最多的。具有事务回滚,系统修复等特点。

Mysqlslap测试工具生产CSV格式数据文件并转换成图表形式:

[root@localhost ~]# mysqlslap --defaults-file=/etc/my.cnf --concurrency=100,200 --iterations=1 --number-int-cols=20 --number-char-cols=30 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=2000 -uroot -p123 --csv=/root/a.csv

执行结果:

将a.csv拷贝到windows主机上,打开并生成图表。

        用我们自己定义的SQL 脚本或语句来测试 首先准备好要测试的数据库表,这里我们编写一个生成表的脚本去完成 脚本内容如下:

[root@mysql1 ~]# cat /root/mysql2.sh
#!/bin/bash
HOSTNAME="localhost"
PORT="3306"
USERNAME="root"
PASSWORD="123"
DBNAME="test1"
TABLENAME="tb1"
​
#create database
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} -e "drop database if exists ${DBNAME}"
create_db_sql="create database if not exists ${DBNAME}"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} -e "${create_db_sql}"
​
#create table
create_table_sql="create table if not exists ${TABLENAME}(stuid int not null primary key,stuname varchar(20) not null,stusex char(1) not null,cardid
varchar(20) not null,birthday datetime,entertime datetime,address varchar(100) default null)"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} ${DBNAME} -e"${create_table_sql}"
​
#insert data to table
i=1
while [ $i -le 20000 ]
do 
insert_sql="insert into ${TABLENAME} values($i,'zhangsan','1','1234567890123456','1999-10-10','2016-9-3','zhongguo beijingshi changpinqu')"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} ${DBNAME} -e"${insert_sql}" 
let i++ 
done
​
#select data
select_sql="select count(*) from ${TABLENAME}"
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"

授权脚本x执行权限

[root@mysql1 ~]# chmod +x /root/mysql2.sh

执行脚本mysql3.sh生成mysqlslap工具需要的测试表

[root@mysql1 ~]# /root/mysql2.sh

执行mysqlslap工具进行测试

[root@mysql1 ~]# mysqlslap --defaults-file=/etc/my.cnf --concurrency=10,20 --iterations=1 --create-schema='test1' --query='select * from test1.tb1' --engine=myisam,innodb --number-of-queries=2000 -uroot -p123 –verbose

显示结果:

mysqlslap: [Warning] Using a password on the command line interface can be insecure.
Benchmark
    Running for engine myisam
    Average number of seconds to run all queries: 1.947 seconds
    Minimum number of seconds to run all queries: 1.947 seconds
    Maximum number of seconds to run all queries: 1.947 seconds
    Number of clients running queries: 10
    Average number of queries per client: 200
​
Benchmark
    Running for engine myisam
    Average number of seconds to run all queries: 2.171 seconds
    Minimum number of seconds to run all queries: 2.171 seconds
    Maximum number of seconds to run all queries: 2.171 seconds
    Number of clients running queries: 20
    Average number of queries per client: 100
​
Benchmark
    Running for engine innodb
    Average number of seconds to run all queries: 1.777 seconds
    Minimum number of seconds to run all queries: 1.777 seconds
    Maximum number of seconds to run all queries: 1.777 seconds
    Number of clients running queries: 10
    Average number of queries per client: 200
​
Benchmark
    Running for engine innodb
    Average number of seconds to run all queries: 2.042 seconds
    Minimum number of seconds to run all queries: 2.042 seconds
    Maximum number of seconds to run all queries: 2.042 seconds
    Number of clients running queries: 20
    Average number of queries per client: 100

        注:通过mysqlslap工具对mysql server进行压力测试,可以通过--concurrency、--number-of-queries等选项的值查看每次测试的结果,通过反复测试、优化得出mysql server的最大并发数。

        如果mysqlslap工具输出结果为Segmentation fault (core dumped)基本表示走超出mysql server的负载。

 

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

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

相关文章

elasticsearch——自动补全

拼音分词器 当用户在搜索框输入字符时&#xff0c;我们应该提示出与该字符有关的搜索项&#xff0c;如图&#xff1a; 要实现根据字母做补全&#xff0c;就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。地址&#xff1a; GitHub - medcl/elasticse…

考研数二第十六讲 不定积分-换元积分和分部积分以及有理函数的积分

第一类换元积分法——凑微分法 假设现在我们要对一个复合函数f[g(x)] 求不定积分&#xff0c;但我只有∫f(x)dxF(x)\int f(x)dx F(x)∫f(x)dxF(x) 这一积分公式。这时候就要想&#xff0c;要是中括号里不是g(x) 而是 x该多好啊。 如果我直接令ug(x) &#xff0c;强行让原式变…

Redis 如何使用 Twemproxy 和 Sentinel 构建高可用集群架构?

文章目录Redis 如何使用 Twemproxy 和 Sentinel 构建高可用集群架构&#xff1f;配置环境构建 RedisSharding1安装 Redis配置 RedisSharding1构建 RedisSharding2安装 Redis配置 RedisSharding2构建 Sentinel Cluster配置 Sentinel启动 Sentinel构建 Twemproxy Cluster安装 Twe…

AI 腾讯云人脸核身之独立H5接入

一、概述 人脸识别&#xff0c;使用官方API&#xff1a;腾讯云人脸核身之独立H5接入。接口官方返回code 0 表示成功,其他code码值均为对应码值信息&#xff0c;详见错误码。 注意&#xff1a; 1.合作方上送身份信息的计算签名参数与启动人脸核身计算签名参数不一致&#xff0…

Python-DQN代码阅读(13)

目录 1.代码 1.1 代码阅读 1.2 代码分解 1.2.1 导入库 1.2.2 data np.loadtxt(performance.txt) 1.2.3 mva np.zeros((data.shape[0]), dtypenp.float) 1.2.4 mva[i] data[i,1]&#xff0c;mva[i] alpha * data[i,1] (1.0 - alpha) * mva[i-1] 1.2.5 plt.plot(data…

【C++项目】高并发内存池

前言&#xff1a; 本篇博客大致记录基于tcmalloc实现高并发内存池的思想与实现方案。 使用语言&#xff1a;C&#xff0c;编译器&#xff1a;vs2022&#xff0c;开始时间&#xff1a;2023/4/3&#xff0c;结束时间&#xff1a;2023/4/12。 项目源码地址&#xff1a;Cproject: 我…

第八天并发编程篇

一、简述线程、进程、程序的基本概念&#xff1f; 1.进程&#xff1a; 我们把运行中的程序叫做进程,每个进程都会占用内存与CPU资源,进程与进程之间互相独立. 2.线程&#xff1a; 线程就是进程中的一个执行单元&#xff0c;负责当前进程中程序的执行。一个进程可以包含多个线程…

【电子秤方案】LCD口袋秤芯片方案

LCD高精度口袋电子秤方案&#xff0c;即便携式称重仪&#xff0c;是一种应用于生活中的称重设备。便珠宝秤具有体积小、重量轻、功耗低、结构紧凑等特点。 LCD高精度口袋电子秤方案产品简介 口袋电子秤是一种体积小、重量轻、功耗低&#xff0c;可用于多种场合的电子秤。它通常…

如何检查 Linux 内存使用量是否耗尽?这5个命令堪称绝了!

在 Linux 操作系统中&#xff0c;内存是一个关键资源&#xff0c;用于存储正在运行的程序和操作系统本身的数据。如果系统的内存使用量过高&#xff0c;可能会导致性能下降、应用程序崩溃或者系统崩溃。因此&#xff0c;了解如何检查 Linux 内存使用量是否耗尽是非常重要的。下…

【网络安全】文件上传绕过思路

引言 分享一些文件上传绕过的思路&#xff0c;下文内容多包含实战图片&#xff0c;所以打码会非常严重&#xff0c;可多看文字表达&#xff1b;本文仅用于交流学习&#xff0c; 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人…

什么是划分子网?网络工程师划分子网有啥技巧?

随着互联网的快速发展&#xff0c;越来越多的组织和企业在其内部建立了复杂的网络系统来满足日常的信息传输和资源共享需求。而在这些网络系统中&#xff0c;划分子网&#xff08;也称为子网划分&#xff09;作为一种常见的网络管理方法&#xff0c;为组织和企业提供了更加灵活…

【面试】记一次安恒面试及总结

文章目录SQL 注入sql注入的原理&#xff1f;如何通过SQL注入判断对方数据库类型&#xff1f;补充一下其他方法判断数据库类型时间盲注的函数XPath注入抓不到http/https包&#xff0c;怎么办&#xff1f;app无自己的ssl证书app有自己的ssl证书-证书绑定(SSL pinning)逻辑漏洞有哪…

【学习笔记】滑动窗口

acwing.滑动窗口https://www.acwing.com/problem/content/156/ 给定一个大小为 n≤106≤106 的数组。 有一个大小为 k 的滑动窗口&#xff0c;它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子&#xff1a; …

Python使用Opencv进行图像人脸、眼睛识别实例演示

效果展示 下面使用 haarcasecade_eye.xml 进行人眼识别的效果图&#xff1a; 人脸识别是一种可以自动检测图像或视频中存在的人脸的技术。它可以用于各种应用&#xff0c;例如安全控制&#xff0c;自动标记照片和视频&#xff0c;以及人脸识别解锁设备等。在这篇博客中&#…

水声功率放大器模块基于通道接收和发射的水声通信机的应用

实验名称&#xff1a;基于多通道接收和发射的水声通信机 研究方向&#xff1a;水声通信 测试设备&#xff1a;数模转化器、ATA-ML180水声功率放大器模块、示波器、接收换能器、发射换能器等。 图&#xff1a;实验原理 一、发射机的双通道发送实验&#xff1a; 实验过程&#xf…

Redis与本地缓存组合使用(IT枫斗者)

Redis与本地缓存组合使用 前言 我们开发中经常用到Redis作为缓存&#xff0c;将高频数据放在Redis中能够提高业务性能&#xff0c;降低MySQL等关系型数据库压力&#xff0c;甚至一些系统使用Redis进行数据持久化&#xff0c;Redis松散的文档结构非常适合业务系统开发&#xf…

探索六西格玛在医疗行业的应用,提升医疗企业的市场竞争力

六西格玛是一种基于数据的管理方法&#xff0c;旨在通过对医疗流程和服务进行量化分析和改进&#xff0c;以优化医疗企业的运营和管理。它能够有效地解决医疗企业面临的各种问题和挑战&#xff0c;提高医疗服务的质量和效率&#xff0c;降低医疗成本和风险&#xff0c;增强医疗…

Linux: 性能分析之内存增长和泄漏

文章目录1. 前言2. 背景3. 内存增长和泄漏分析方法3.1 跟踪 malloc(), free() 等接口3.1.1 用 perf 采样3.1.2 用 ebpf 来跟踪3.2 跟踪 brk() 调用3.2.1 使用 perf 跟踪 brk()3.2.2 使用 ebpf 跟踪 brk()3.3 跟踪 mmap() 调用3.3.1 使用 perf 跟踪 mmap()3.3.2 使用 ebpf 跟踪 …

【FPGA】多功能ALU

目录 实验要求 源代码 顶层模块 数据输入模块 ALU运算模块 结果处理模块 扫描数码管模块 扫描数码管顶层 分频器 数码管显示 仿真代码 结构层图 管脚配置 实验板卡&#xff1a;xc7a100tlc sg324-2L&#xff0c;共20个开关 实验要求 通过高低位控制&#xff0c;实现32位数…

74-快速排序——一路快排

快速排序是影响二十世纪最伟大的排序算法之一。 JDK的双轴快速排序就是对快排的优化&#xff0c;本质还是快排。 从待排序区间选择一个数&#xff0c;作为基准值/分区点&#xff08;pivot&#xff09;&#xff0c;此时默认选择数组的第一个元素作为比较的基准值。partition&a…