自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

轻描淡写

蜗牛赛跑

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

原创 mysql事务

事务特性事务的定义执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成四大特性原子性(Atomicity)对数据库的一系列的操作,要么都是成功,要么都是失败,不可能出现部分成功或者部分失败的情况。以转账的场景为例,一个账户的余额减少,对应一个账户的增加,这两个一定是同时成功或者同时失败的隔离性(Isolation)数据库的完整性约束没有被破坏,事务执行的前后都是合法的数据状态。比如主键必须是唯一的,字段长度符合要求持久性(Durability)在数据库里面会有很多的事务同时

2021-07-27 21:59:59 69

原创 mysql通过delete 操作删除表数据,为什么表空间的数据文件大小不变

表空间对于运行很长时间的数据库来说,往往会出现表占用存储空间过大的问题,可是将许多没用的表删除之后,表文件的大小并没有改变,想解决这个问题,就需要了解 InnoDB 如何回收表空间的。对于一张表来说,占用空间重要分为两部分,表结构和表数据。通常来说,表结构定义占用的空间很小。所以空间的问题主要和表数据有关。在 MySQL 8.0 前,表结构存储在以 .frm 为后缀的文件里。在 8.0,允许将表结构定义在系统数据表中。表数据的存放可以将表数据存在共享表空间,或者单独的文件中,通过 innodb_fi

2021-07-24 11:36:18 999

原创 mysql数据存储结构分析

二分查找算法折半查找考虑用有序数组作为索引的数据结构有序数组的等值查询和比较查询效率非常高,但是更新数据时可能要挪动大量的数据(index),所以只适合存储静态的数据为了支持频繁的修改,比如插入数据,我们需要采用链表。链表的话,如果是单链表,它的查找效率还是不够高…二叉查找树BST(Binary Search Tree) BTREE特点:左子树所有的节点都小于父节点,右子树所有的节点都大于父节点。投影到平面以后,就是一个有序的线性表左子树节点 < 父节点右子树节点 &gt

2021-07-22 22:09:39 842

原创 mysql索引的本质

索引的本质索引基本概念:是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询、更新数据库表中数据。理解要点:首先数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址。如果没有索引的话,要从 500 万行数据里面检索一条数据,只能依次遍历这张表的全部数据(全盘扫描),直到找到这条数据。但是有了索引之后,只需要在索引里面去检索这条数据就行了,因为它是一种特殊的专门用来快速检索的数据结构,我们找到数据存放的磁盘地址以后,就可以拿到数据了。索引类型与创建唯一索引(Unique):键

2021-07-22 21:28:16 167

原创 mysql存储引擎

存储引擎存储引擎(表类型)详情请看官方介绍https://dev.mysql.com/doc/refman/5.7/en/innodb-storage-engine.html查看所有存储引擎show engines;SELECT * FROM INFORMATION_SCHEMA.ENGINES;-- 查看数据库(tiger_db)中存在表的储存引擎show table status from `tiger_db`;插件式的存储引擎,修改存储引擎ALTER TABLE t

2021-07-10 10:47:02 83

原创 mysql执行流程

执行流程大概分成7个步骤客户端发sql请求查询缓存很鸡肋,高版本中已经废弃解析器Parser:对语句基于 SQL 语法进行词法和语法分析和语义的解析词法解析:把一个完整的 SQL 语句打碎成一个个的单词语法解析:语法分析会对 SQL 做一些语法检查,比如单引号有没有闭合,然后根据 MySQL 定义的语法规则,根据 SQL 语句生成一个数据结构。这个数据结构我们把它叫做解析树(select_lex)任何数据库的中间件,比如 Mycat,Sharding-JDBC(用到了 Druid Par

2021-07-10 10:44:36 145

原创 mysql发展简史

发展历史时间里程碑1996 年MySQL 1.0 发布。它的历史可以追溯到 1979 年,作者 Monty 用 BASIC 设计的一个报表工具1996 年10 月 3.11.1 发布。MySQL 没有 2.x 版本2000 年ISAM 升级成 MyISAM 引擎。MySQL 开源2003 年MySQL 4.0 发布,集成 InnoDB 存储引擎2005 年MySQL 5.0 版本发布,提供了视图、存储过程等功能2008 年MySQL AB 公司

2021-07-10 10:43:29 2375

原创 HashMap

HashMap散列表也叫哈希表,是存储Key-Value映射的集合。对于某一个Key,散列表可以在接近O(1)的时间内进行读写操作寻址方式对key按一定的计算规则,算出hash值,并对数组长度进行取模// 取模代价远远高于位操作代价,因此 Array.length等于二的幂index = HashCode (Key) % Array.length 哈希冲突当插入的Entry越来越多时,不同的Key通过哈希函数获得的下标有可能是相同的。例如002936这个Key对应的数组下标是2;0029

2021-07-03 23:20:18 116 1

原创 线程池-ThreadPoolExecutor

线程池-ThreadPoolExecutor使用场景想要频繁的创建和销毁线程的时候线程池的概念线程池就是提前创建若干个线程,如果有任务需要处理,线程池里的线程就会处理任务,处理完之后线程并不会被销毁,而是等待下一个任务。由于创建和销毁线程都是消耗系统资源的线程池的优势降低创建线程和销毁线程的性能开销提高响应速度,当有新任务需要执行是不需要等待线程创建就可以立马执行合理的设置线程池大小(限流)可以避免因为线程数超过硬件资源瓶颈带来的问题Api ExecutorsnewFixedTh

2021-07-03 20:49:22 115

原创 BlockingQueue

BlockingQueue堵塞队列,有两种情况会堵塞队列满时,入队线程会被堵塞队列空时,出对线程会被堵塞操作Throws ExceptionSpecial ValueBlocksTimes Out添加add(o)offer(o)put(o)offer(0,timeout,timeunit)移除remove(o)poll()take()poll(timeout,timeunit)检查element()peek()...

2021-07-03 10:01:55 180

原创 Fork/Join

Fork/Join用于并行执行任务,将大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。使用工作窃取算法,某个线程从其他队列里窃取任务来执行fork:将大任务切割成若干个子任务并行执行join:合并子任务的执行结果得到大任务的结果…局限性不能执行I/O操作(读写数据文件)不能抛出检查异常,必须通过必要的代码来处理他们任务只能使用fork和join操作来作为同步机制,如果使用其他同步机制,那么执行任务时,工作线程就不能执行其他任务import lombok.e

2021-07-03 09:36:01 108

原创 FutureTask

FutureTask多线程执行任务时,有比较耗时操作,但又需要其返回结果时,可以使用FutureTaskpublic class FutureTaskDemo { public static void main(String[] args) throws Exception { FutureTask<String> futureTask = new FutureTask<String>(() -> { log.info("d

2021-07-03 09:35:01 123

空空如也

空空如也

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

TA关注的人

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