- 博客(18)
- 收藏
- 关注
原创 正则表达式的使用 与 Java按空格分割字符串
目录一、正则表达式1. 正则表达式简介2. 元字符2.1 锚点2.2 点运算符 `.`2.3 字符集2.4 重复次数2.5 `{}` 号2.6 `(...)` 特征标群2.7 `|` 或运算符2.8 转码特殊字符3. 简写字符集4. 零宽度断言(前后预查)4.1 `?=...` 正先行断言4.2 `?!...` 负先行断言4.3 `?<= ...` 正后发断言4.4 `?<!...` 负后发断言5. 标志5.1 忽略大小写 (Case Insensitive)5.2 全局搜索 (Global s
2021-12-06 15:07:04
5139
2
原创 连接查询的原理
一、连接简介先创建两个表,再插入数据:-- 创建表t1CREATE TABLE t1 ( m1 int, n1 char(1));-- 创建表t2CREATE TABLE t2 ( m2 int, n2 char(1));-- 插入数据INSERT INTO t1 VALUES(1, 'a'), (2, 'b'), (3, 'c');INSERT INTO t2 VALUES(2, 'b'), (3, 'c'), (4, 'd');-- 表t1+------
2021-10-15 14:43:03
846
原创 MySQL单表访问的方法
单表访问的方法单表访问的方法一、访问方法的概念二、访问方法的方式2.1 const2.2 ref2.3 ref_or_null2.4 range2.5 index2.6 all2.7. 索引合并2.7.1 Intersection索引合并2.7.2 Union索引合并2.7.3 Sort-Union索引合并单表访问的方法先创建一个表:CREATE TABLE single_table ( id INT NOT NULL AUTO_INCREMENT, key1 VARCHAR(100)
2021-10-15 14:38:36
219
原创 常见SQL语句总结
常见SQL语句总结登录和退出MySQL服务器基本语法建表约束主键约束唯一约束非空约束默认约束外键约束数据库的三大设计范式1NF2NF3NF查询练习准备数据基本查询语句分组计算平均成绩分组条件与模糊查询多表查询 - 1多表查询 - 2三表关联查询子查询加分组求平均分子查询 - 1子查询 - 2YEAR 函数与带 IN 关键字查询多层嵌套子查询多表查询子查询 - 3UNION 和 NOT IN 的使用ANY 表示至少一个 - DESC ( 降序 )表示所有的 ALL复制表的数据作为条件查询子查询 - 4条件加组
2021-10-14 14:37:06
164
原创 InnoDB表空间
InnoDB表空间前言一、数据页二、独立表空间结构2.1 区的概念2.2 段的概念2.3 区的分类2.4 XDES Entry结构2.4.1 XDES Entry链表问题一问题二2.4.2 链表基节点2.4.3 链表小结2.5 段的结构2.6 各类型页面详细情况2.6.1 FSP_HDR类型a. File Space Headerb. XDES Entry2.6.2 XDES 类型2.6.3 IBUF_BITMAP 类型2.6.4 INODE类型2.7 Segment Header结构的运用三、系统表空间3
2021-10-11 12:02:42
923
原创 MySQL的数据目录
MySQL的数据目录一、数据库与文件系统二、MySQL数据目录2.1 数据目录与安装目录2.2 数据目录的结构2.2.1 数据库在文件系统中的表示2.2.2 表在文件系统中的表示a. InnoDB如何存储表数据b. MyISAM如何存储表数据2.2.3 其他文件2.4 文件系统对数据库的影响2.5 MySQL系统数据库简介一、数据库与文件系统InnoDB 、MyISAM 这样的存储引擎都是把表存储在磁盘上的,而操作系统使用文件系统来管理磁盘。所以,也可以说,像 InnoDB 、 MyISAM 这样的存储
2021-10-09 13:58:23
136
原创 B+树索引使用的心得
B+树索引的使用一、B+树1.1 B+树的特点1.2 索引的代价二、B+树索引的应用2.1扫描区间与边界条件2.1.1概念2.1.2产生扫描区间的条件2.1.3联合索引执行查询时对应的扫描区间2.2索引用于排序2.2.1使用联合索引进行排序时的注意事项2.2.2不可以使用索引进行排序的几种情况2.2.3索引用于分组2.3回表的代价2.4更好的创建和使用索引一、B+树1.1 B+树的特点InnoDB存储引擎使用的是B+树索引,学完B+树索引后,需要明白B+树具有以下特点:每个索引都对应一棵B+ 树。
2021-10-08 20:15:02
144
原创 (MySQL)简单易懂的B+树索引介绍
B+树索引前言一、没有索引如何查找1.1 在一个页中的查找1.2 在很多页中的查找二、索引2.1 一个简单的索引方案2.1.1 主键值要求2.1.2 建立页的目录项2.2 InnoDB中的索引方案2.2.1 B+树索引的结构2.2.2 聚簇索引2.2.3 二级索引2.2.4 联合索引a.最左前缀原则b.索引下推2.3 InnoDB的B+树索引的注意事项2.3.1 根页面万年不动窝2.3.2 内节点中目录项记录的唯一性2.3.3 一个页面最少存储2条记录2.4 MyISAM中的索引方案简单介绍三、索引的创建与
2021-09-27 20:21:21
1774
原创 InnoDB数据页结构
一、页的简介页是InnoDB 管理存储空间的基本单位,一个页的大小一般是16KB 。为了不同的目的设计了不同的页,比如:存放表空间头部信息的页,存放Insert Buffer信息的页,存放undo 日志信息的页等等。这篇文章主要讲存放表中记录的那种类型的页——索引( INDEX )页。索引是一种为了提高查询速度而设计的数据结构,表中的记录就是数据,所以索引页也叫做数据页。二、数据页结构数据页代表的16KB 大小的存储空间可以被划分为多个部分,不同部分有不同的功能。如下:一个InnoDB 数据页的存
2021-09-26 12:31:41
1101
2
原创 一条记录的结构(行格式)
InnoDB行记录的结构前言一、InnoDB页简介二、InnoDB行格式2.1 指定行格式的语法2.2 COMPACT行格式2.2.1 记录的额外信息a. 变长字段长度列表b. NULL值列表c. 记录头信息2.2.2 记录的真实数据2.2.3 CHAR(M)列的存储格式2.3 REDUNDANT行格式2.3.1 与CPMPACT对比a. 字段长度偏移列表b. 记录头信息c. 1 byte_offs_flag 的值如何选择d. NULL 值的处理e. CHAR(M)列的存储格式2.4 行溢出数据2.5 Dy
2021-09-23 16:50:00
1269
原创 一条SQL更新语句是如何执行的
一条SQL查询语句执行流程前言一、sql语句执行流程1.查询语句执行流程2.更新语句执行流程二、redo log日志1.赊账例子2.redo log介绍2.1 WAL 技术2.2 简述更新语句执行流程2.3 redo log三、binlog日志1.有了redolog 为什么还要binlog?2.binlog与redolog的不同3.更新语句在执行器与InnoDB引擎中的执行流程4.两阶段提交四、数据库恢复与两阶段提交1. 如何恢复数据库数据?2.为什么要两阶段提交?五、总结六、扩展意外宕机后重启mysql数
2021-09-21 17:37:39
310
原创 Spring 代理模式
代理模式目录前言1.概念2.静态代理2.1 静态代理实现步骤2.2 实现例子3.动态代理(JDK 动态代理、CGLIB 动态代理)3.1 JDK动态代理3.1.1 JDK动态代理类实现步骤3.1.2 JDK动态代理实例3.2 CGLIB 动态代理3.2.1 方法拦截器——MethodInterceptor接口3.2.2 方法过滤器—— CallbackFilter接口4. JDK 动态代理和 CGLIB 动态代理对比5. 静态代理和动态代理的对比前言最近复习了一下Spring的代理模式,这篇文章简单记录
2021-09-18 20:17:41
79
原创 HashMap源码分析
目录一、简介二、底层结构1. JDK1.7 HashMap 由 **数组+链表** 组成2.JDK1.8 HashMap 由 **数组+链表+红黑树** 组成三、源码分析1.重要字段2.存储的数据---Node节点3.计算索引位置---hash() + 路由寻址3.1 hash()方法3.2 路由寻址公式4.哈希冲突5.构造方法6.插入节点---put()与putVal()方法7.获取节点值---get()与getNode()方法8.扩容机制---resize()方法8.1确定新数组的长度与新阈值8.2
2021-09-14 20:58:14
105
原创 MySQL基础架构
前言最近阅读林晓斌老师的《MySQL实战45讲》,感觉写的很好,但知识点有点杂乱,于是本人决定记录下学习这个专题的学习笔记。林老师这个专题写的蛮好的,推荐大家去阅读一下,丰富下自己的知识面。这篇博客,是关于老师实战45讲的第一讲 ——《基础架构:一条SQL查询语句是如何执行的?》的学习笔记,话不多说,开写。一、MySQL基本逻辑架构假如,有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时:mysql> select * from T where ID=10;我们看到的只是
2021-09-13 10:40:26
390
原创 大整数加、减法(Java实现)与debug找错
前言这篇文章主要内容涉及大整数加法的实现以及debug使用的简单记录。以前当我碰到程序报错时,总是想找别人帮忙,感觉debug太难了,自己根本看不懂。这次,自己在做一道算法题时,程序能够运行,结果却出错了。本来想找别人帮忙,但想着学习还是要脚踏实地,于是自己硬着头皮上了,先在网上了解如何debug,然后一步一步找到了错误所在。主要是想记录下第一次debug找到问题的快乐。一、大整数加法(java)今天做一道算法题-----大整数相加,题目描述如下:给定两个正整数(不含前导 0),计算它们的差,计算结
2021-09-12 14:56:46
1719
原创 JMM、Volatile及单例模式解析
文章目录前言一、并发编程三要素:原子性、可见性、有序性1.原子性2.可见性3.有序性二、锁的互斥和可见性三、CPU缓存架构四、Java内存模型(JMM)以及共享变量的可见性1.JMM内存模型:1)JMM数据原子操作2)缓存一致性协议(MESI)3)volatile实现原理五、volatile变量的特性1.保证可见性,不保证原子性2.禁止指令重排序(有序性)六、volatile不适用的场景七、单例模式为什么要加volatile前言volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种
2021-09-11 13:39:15
254
转载 LongAdder源码剖析
前言LongAdder与AtomicLong是高并发下常用的计数器。学习ConcurrentHashMap源码之前,有必要掌握LongAdder与HashMap源码的实现。学习LongAdder的源码,推荐观看小刘老师b站的视频:JDK8 新特性LongAdder源码深度讲解,保证让你学到很多硬核知识!,看完之后感觉确实很硬。复习的时候,可以参考这篇壹枝花大佬写的好文:面试官问我LongAdder,我惊了…,花大佬写的这篇文章,解决了我很多困惑,写的真的太好了。这篇文章算是对花大佬文章的转载,因为联系不到
2021-09-10 15:58:47
717
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人