自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JH灰色的博客

一个不放弃的努力技术员

  • 博客(326)
  • 收藏
  • 关注

原创 【mysql是怎样运行的】-EXPLAIN详解

在包含 UNION 或者 UNION ALL 的大查询中 ,如果各个小查询都依赖于外层查询,则除了最左边的那个小查询之外 ,其余小查询的 select_type值就是 DEPENDENT UNlON。,而且查询优化器决定采用将该子查询物化的方案来执行该子查询时,该子查询的第一个SELECT 关键字代表的那个查询的 select_type 就是SUBQUERY。:在包含派生表的查询中,如果是以物化派生表的方式执行查询,则派生表对应的子查询的 select_type 就是 DERIVED。

2023-08-26 22:12:24 569

原创 【mysql是怎样运行的】-B+树索引深入理解

各个数据页可以组成一个,而每个数据页中的记录会按照主键值从小到大的顺序组成一个。

2023-04-12 07:59:21 682 1

原创 【mysql是怎样运行的】-InnoDB数据页结构

页a、页b、页c…页n这些页可以不在物理结构上相连,只要通过双向链表相关联即可。每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应的分组中的记录即可快速找到指定的记录。

2023-03-04 22:26:38 608

原创 【mysql是怎样运行的】-InnoDB行格式

Innodb行格式

2023-03-04 18:40:46 1073 3

原创 【mysql是怎样运行的】-mysql字符集

在启动服务器程序时,可以通过启动选项或者在服务器程序运行过程中使用SET语句来修改这两个变量的值启动选项:过程中set:2. 数据库级别我们在创建和修改数据库时可以指定该数据库的字符集和比较规则具体语法:如:查看在数据库的创建语句中也可以不指定字符集和比较规则,如这样这将默认使用服务器级别的字符集和比较规则作为数据库的字符集和比较规则·我们也可以在创建和修改表的时候指定表的字符集和比较规则具体语法:如:如果创建表的语句中没有指明字符集和比较规则 ,则使用该表所在数据库的字符集和

2022-12-04 18:05:38 476

原创 【mysql是怎样运行的】- 启动项、系统变量、状态变量(mysql客户端连接就是一个会话连接)

mysql启动项、系统变量、状态变量

2022-11-27 18:26:03 572

原创 【mysql是怎样运行的】-客户端与服务器连接

mysql服务器与客户端连接方式

2022-11-27 17:11:20 664

原创 Kafka生产者:学习记录总结

图例:步骤:java生产者代码可能需要:kafka默认就是异步发送生产者案列测试:2.2 带回调函数的异步发送区别在于多了个callback回调函数回调函数会在 producer 收到 ack 时调用,为异步调用,该方法有两个参数,分别是元数据信息(RecordMetadata) 和异常信息(Exception),如果 Exception 为 null,说明消息发送成功,如果 Exception 不为 null,说明消息发送失败3. 同步发送 API只需在异步发送的基础上,再调用一下

2022-06-04 18:26:13 243

原创 【kafka面试精华】--“精华篇“

1. 为什么需要kafka?Kafka 是一个分布式的基于发布/订阅模式的消息队列。消息队列是一种先进先出的数据结构。队列是一种先进先出的数据结构,分布式消息队列可以看做将这种数据结构部署到独立的服务器上,应用程序可以通过远程访问接口使用分布式消息队列,进行消息存取操作,进而实现分布式的异步调用。消息生产者应用程序通过远程访问接口将消息推送给消息队列服务器,消息队列服务器将消息写入本地内存队列后立即返回成功后响应给消息生产者。消息队列服务器根据消息订阅列表查找订阅该消息的消息消费者应用程序,将消息队列

2022-05-21 22:37:58 622

原创 【设计模式】工厂模式3种

文章目录1. 简单工厂模式2. 工厂模式3. 抽象工厂模式1. 简单工厂模式简单工厂模式是属于创建型模式,是工厂模式的一种。 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式.改造前:如果要新增一个类,必须在里面加逻辑如:else if (orderType.equals("chi

2022-04-04 20:45:30 217

原创 【设计模式】单例模式的8种方式

文章目录1. 饿汉式(静态常量)2. 饿汉式(静态代码块)3. 懒汉式(线程不安全)4. 懒汉式(线程安全,同步方法)5. 懒汉式(线程安全,同步代码块)6. 双重检查7. 静态内部类8. 枚举饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒汉式(线程安全,同步代码块)双重检查静态内部类枚举1. 饿汉式(静态常量)步骤如下:构造器私有化 (防止 new )类的内部创建对象向外暴露一个静态的公共方法。 getInstance代码实现

2022-04-04 16:42:55 84

原创 【设计模式】设计模式7大原则

文章目录1. 单一职责2. 接口隔离原则3.依赖倒转原则4.里氏替换原则1. 单一职责对类来说一个类只负责一项职责,或者一个方法只负责一个职责。如果类A负责两个不同职责:职责1,职责2,如果职责1需求变更改变类A时,造成职责2执行错误,所以需要将类A的职责拆解A1,A2。单一职责举例package com.atguigu.principle.singleresponsibility;public class SingleResponsibility3 { public static voi

2022-03-06 23:45:08 240

原创 redis通关面试宝典

redis面试宝典

2022-01-01 23:19:18 1949 3

原创 idea的快捷键及修改快捷键

如果快捷键冲突,需要重新设置快捷键在Settings–>Keymap设置重要的快捷键:删除光标所在行代码  Ctrl+X复制光标所在行代码,或者鼠标选中的代码  Ctrl+D切换代码大小写   Ctrl+Shift+U关闭当前代码窗   Ctrl+F4快速回到上一次编辑的位置或下一次   Ctrl+Alt+左右键全局快速搜索任何东西(Replace in path)   Ctrl+Shift+R全局快速搜索任何东西(find in

2021-11-28 15:39:33 11447

原创 mysql通关面试宝典

文章目录1.mysql事务的常见异常和隔离级别2.mysql的B树索引,B+树索引,哈希索引原理。2.mysql的引擎3.mysql中为什么用B+树4.讲一讲索引,最左匹配原则(最佳左前缀)5.什么是SQL注入,怎么预防6.你对mysql了解有多少(讲了innodb、myiasm两个引擎的区别,隔离级别,索引,使用B+树的优势,最左匹配原则,MVCC)7.怎么对sql进行分析(explain和show profile)7.1 explain的字段7.2 show profile9.数据库全局锁10.索引优化

2021-11-07 21:49:01 2874 1

原创 MySQL锁机制

文章目录1、锁的分类2、表锁 (MyIsam)3、行锁(InnoDB)锁机制 :解决因资源共享 而造成的并发问题。示例:买最后一件衣服XA: X 买 : X加锁 ->试衣服…下单…付款…打包 ->X解锁B: X 买:发现X已被加锁,等待X解锁, X已售空1、锁的分类操作类型:a.读锁(共享锁): 对同一个数据(衣服),多个读操作可以同时进行,互不干扰。b.写锁(互斥锁): 如果当前写操作没有完毕(买衣服的一系列操作),则无法进行其他的读操作、写操作操作范围:

2021-11-07 20:55:08 177

原创 【sql】分析海量数据

文章目录1、模拟海量数据2、分析海量数据1、模拟海量数据1、建表:create database testdata ;use testdatacreate table dept( dno int(5) primary key default 0, dname varchar(20) not null default '', loc varchar(30) default '')engine=innodb default charset=utf8;create tabl

2021-11-07 16:53:37 172

原创 SQL排查--慢查询日志

文章目录1、慢查询日志的开启2、慢查询阈值的开启3、示例慢查询日志:MySQL提供的日志记录,用于记录MySQL中响应时间超过阀值的SQL语句 (long_query_time默认10秒)慢查询日志默认是关闭的;建议:开发调优时打开,而 最终部署时关闭。1、慢查询日志的开启1、检查是否开启了 慢查询日志 : show variables like ‘%slow_query_log%’ ;2、临时开启:mysql已关闭就关闭了set global slow_query_log = 1 ;

2021-11-07 16:50:16 2647

原创 其他SQL优化方法(抛开索引优化)

文章目录1、exist 和 in选择2、order by 优化1、exist 和 in选择这里没有考虑索引,只看效率:​ 如果主查询的数据集大,则使用In , 效率高。​ 如果子查询的数据集大,则使用exist, 效率高。select ..from table where exist (子查询);-- 括号内是子查询select ..from table where 字段 in (子查询);exist语法: 将主查询的结果,放到子查询结果中进行条件校验(看子查询是否有数据,如果有数据 则校

2021-11-07 16:43:33 427

原创 【sql优化】避免索引失效的原则

文章目录1、复合索引:a.复合索引,不要跨列或无序使用(最佳左前缀)先a,再b再c ,(a,b,c)b.复合索引,尽量使用全索引匹配 (a,b,c)2、不要在索引上进行任何操作(计算、函数、类型转换),否则索引失效select ..where A.x = .. ; --假设A.x是索引 不要:select ..where A.x*3 = .. ;-- 不然索引失效 explain select * from book where authorid = 1 and typeid =

2021-11-07 16:39:12 510 1

原创 【sql优化案例】索引优化

文章目录引入案例1、单表优化案例1、加索引优化2、根据SQL实际解析的顺序,调整索引的顺序3、再次调整索引顺序2、双表优化案例3、三表优化案例引入案例create table test01 ( a1 int(4) not NULL, a2 int(4) not NULL, a3 int(4) not NULL, a4 int(4) not NULL);alter table test01 add index idx_a1_a2_a3_a4(a1,a2,a3,a4);①explai

2021-11-07 16:32:42 407

原创 【SQL性能问题】explain系列

文章目录explain1、explain之id、table2、explain之select_type 查询类型3、explain之type 索引类型4、explain之possible_keys、key5、explain之key_len6、explain之ref、rows7、explain之Extraexplaina.分析SQL的执行计划(人为优化) : explain ,可以模拟SQL优化器执行SQL语句,从而让开发人员 知道自己编写的SQL状况b.MySQL查询优化其会干扰我们的优化(系统优

2021-11-07 12:35:07 201

原创 【SQL-索引介绍】

文章目录1、SQL编写和SQL解析2、主要优化索引1、索引介绍及优劣2、索引结构(B+树)3、索引分类4、索引创建、删除、查看(DDL表结构层面操作,会自动提交commit)刚开始时,SQL的数据量还非常少,开发人员更注重功能的实现,到后期的数据量越来越大,SQL语句的性能就会出现影响,比如出现如下的情况:性能低,执行时间和等待时间偏长,还有引发的索引失效等问题。1、SQL编写和SQL解析编写过程:select distinct…from…join…on…where…group by…having…

2021-11-07 10:44:52 156

原创 【mysql-存储过程】

文章目录一、创建语法二、调用语法1.空参列表2.创建带in模式参数的存储过程3.创建out 模式参数的存储过程4.创建带inout模式参数的存储过程三、删除存储过程四、查看存储过程的信息存储过程和函数存储过程和函数:类似于java中的方法好处:1、提高代码的重用性2、简化操作存储过程含义:一组预先编译好的SQL语句的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率一、创建语法CREATE PROCEDURE 存

2021-11-06 23:17:09 204

原创 【mysql-函数】

文章目录1. 函数1.1 创建语法1.2 调用语法1. 函数含义:一组预先编译好的SQL语句的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率区别:存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新函数:有且仅有1 个返回,适合做处理数据后返回一个结果1.1 创建语法CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型BEGIN 函数体END注意:1.参数列表 包含

2021-11-06 23:09:08 88

原创 【mysql-变量】

文章目录变量1. 系统变量1.1 全局变量1.2 会话变量2. 自定义变量2.1 用户变量2.2 局部变量2.3 用户变量和局部变量的对比变量系统变量: 全局变量 会话变量自定义变量: 用户变量 局部变量1. 系统变量说明:变量由系统定义,不是用户定义,属于服务器层面注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别使用步骤:1、查看所有系统变量show global|【session】variables;2、查看满足条件的

2021-11-06 22:58:21 96

原创 【mysql-流程控制结构】

文章目录1. 分支结构1.1 if 函数1.2 case 结构1.3 if 结构2. 循环结构2.1 while2.2 loop2.3 repeat流程控制结构顺序、分支、循环1. 分支结构1.1 if 函数语法:if(条件,值1,值2) 功能:实现双分支 应用在begin end中或外面1.2 case 结构语法:情况1:类似于switchcase 变量或表达式when 值1 then 语句1;when 值2 then 语句2;...else 语句n;end 情况2:ca

2021-11-06 22:43:30 85

原创 【mysql-事务和视图】

文章目录1. 事务2. 视图2.1 创建视图2.2 视图的修改2.3 删除视图2.4 查看视图2.5 视图的更新(DML)1. 事务Transaction Control Language 事务控制语言事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。案例:转账张三丰 1000郭襄 1000update 表 set 张三丰的余额=500 where name='张三丰'意外update 表 set 郭襄的余额=1500 where name

2021-11-06 22:23:46 87

原创 【mysql-常见约束】

文章目录1. 常见约束2. 创建表时添加约束3. 修改表时添加约束1. 常见约束含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性分类:六大约束NOT NULL:非空,用于保证该字段的值不能为空比如姓名、学号等DEFAULT:默认,用于保证该字段有默认值比如性别PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空比如学号、员工编号等UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空比如座位号CHECK:检查约束【mysql中不支持】比如年龄

2021-11-06 21:54:55 185

原创 【MySQL-库表管理】

文章目录一、库的管理1、库的创建2、库的修改3、库的删除二、表的管理1.表的创建2.表的修改3.表的删除4.表的复制数据定义语言库和表的管理一、库的管理创建、修改、删除二、表的管理创建、修改、删除创建: create修改: alter删除: drop·一、库的管理1、库的创建语法: create database [if not exists]库名;#案例:创建库BooksCREATE DATABASE IF NOT EXISTS books ;2、库的修改REN

2021-11-06 20:14:16 255

原创 【mysql-数据类型】

文章目录1. 常见的数据类型2. 数值型2.1 整型2.2 小数3. 字符型4. 日期型1. 常见的数据类型数值型:整型小数:定点数浮点数字符型:较短的文本:char、varchar较长的文本:text、blob(较长的二进制数据)日期型:2. 数值型2.1 整型分类:tinyint、smallint、mediumint、int/integer、bigint1 2 3 4 8特点:① 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号(大于0的整数),需要

2021-11-03 23:05:26 227

原创 【mysql-DML】01. insert + update + delete

文章目录1. insert 插入语句1.1 方式一:经典的插入1.2 方式二 set1.3 两种方式大pk2. update修改语句2.1 修改单表2.2 修改多表3. delete删除语句3.1 delete3.2 truncate语句3.3 delete pk truncate#DML语言数据操作语言:插入:insert修改:update删除:delete1. insert 插入语句1.1 方式一:经典的插入语法:insert into 表名(列名,...) values(值1,.

2021-10-07 22:21:58 96

原创 【mysql-DQL】07.分页查询+联合查询

应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求语法: select 查询列表 from 表 【join type join 表2 on 连接条件 where 筛选条件 group by 分组字段 having 分组后的筛选 order by 排序的字段】 limit 【offset,】size; offset要显示条目的起始索引(起始索引从0开始) size 要显示的条目个数特点: ①limit语句放在查询语句的最后 ②公式 要显示的页数 page,每页的

2021-10-07 21:55:38 121

原创 【mysql-DQL】06.子查询

文章目录1、where或having后面2. select后面3. from后面4. exists后面(相关子查询)含义:出现在其他语句中的select语句,称为子查询或内查询外部的查询语句,称为主查询或外查询分类:1.按子查询出现的位置: select后面: 仅仅支持标量子查询 from后面: 支持表子查询 where或having后面:★ 标量子查询(单行) √ 列子查询 (多行) √ 行子查询 exists后面(相关子查询) 表子查询

2021-10-07 21:53:09 67

原创 【mysql-DQL】05.sql99连接(join)

文章目录1. sql99连接1.1 内连接1.2 外连接1. sql99连接语法: select 查询列表 from 表1 别名 【连接类型】 join 表2 别名 on 连接条件 【where 筛选条件】 【group by 分组】 【having 筛选条件】 【order by 排序列表】 分类:内连接(★):inner外连接 左外(★):left 【outer】 右外(★):right 【outer】 全外:full【outer】交叉连接:cross 1.1

2021-10-07 21:29:17 86

原创 【mysql-DQL】04.排序查询+分组查询+sql92连接查询

文章目录1. 排序查询2. 分组查询3. 连接查询1. 排序查询语法:select 查询列表from 表名【where 筛选条件】order by 排序的字段或表达式;特点:1、asc代表的是升序,可以省略desc代表的是降序2、order by子句可以支持 单个字段、别名、表达式、函数、多个字段3、order by子句在查询语句的最后面,除了limit子句#1、按单个字段排序SELECT * FROM employees ORDER BY salary DESC;#2

2021-10-07 20:45:11 119

原创 【mysql-DQL】03.函数

文章目录1. 单行函数1.1 字符函数1.2 数学函数1.3 日期函数1.4 其他函数1.5 流程控制函数2. 分组函数函数概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名好处:1、隐藏了实现细节 2、提高代码的重用性调用:select 函数名(实参列表) 【from 表】;特点:①叫什么(函数名)②干什么(函数功能)分类:1、单行函数如 concat、length、ifnull等2、分组函数功能:做统计使用,又称为统计函数、聚合函数、组函数1. 单行函数

2021-10-07 19:09:44 145

原创 【mysql-DQL】02.基础查询+条件查询

文章目录1.基础查询2. 条件查询2.1 按条件表达式筛选2.2 按逻辑表达式筛选2.3 模糊查询1.基础查询语法:select 查询列表 from 表名;类似于:System.out.println(打印东西);特点:1、查询列表可以是:表中的字段、常量值、表达式、函数2、查询的结果是一个虚拟的表格USE myemployees;#1.查询表中的单个字段SELECT last_name FROM employees;#2.查询表中的多个字段SELECT last_name,

2021-10-07 16:32:06 445

原创 【mysql】01.基本概念

文章目录1.基本概念1.基本概念1、DB:数据库,保存一组有组织的数据的容器2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据,常见的DBMS包括 MySQL、 Oracle、 DB2、 SqlServer等3、SQL:结构化查询语言,用于和DBMS通信的语言DQL:select语句;DML(Data Manipulation Language):数据操纵语句,用于添加、删除、修改、查询数据库记录,并检查数据完整性;DDL(Data Definition Lang

2021-10-07 14:15:19 84

原创 后端controller层请求参数注解:@RequestParam、@QueryParam、@PathParam、@PathVariable

1、四个请求参数的注解关系:作用@RequestParam == @QueryParam 两个注解作用相同;@PathParam == @PathVariable 两个注解作用相同;2、每个注解对应的请求路径@RequestParam 一般在前端请求路径上 用 ?和& 或者 表单请求如果controller层使用该注解,一般默认为参数必填,所以前端必须要传参数进入后端支持以下四个参数defaultValue 如果本次请求没有携带这个参数,或者参数为空,那么就会启用默认值nam

2021-08-29 15:03:16 6664 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除