自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 MySQL 各种锁

22 锁事务一致性问题出现并发事务对同一数据进行读写、写写时会出现一致性问题,对于写写情况,多个未提交的事务对于同一记录进行改动时,需要串行执行,实现的方式是对记录进行加锁。写写情况事务对记录进行修改时,查看内存中是否有锁结构与该记录关联,锁的基本 信息有trx信息(与锁关联的事务)、is_waitting(标志是否等待),持有锁的事务提交后,会唤醒等待中事务。读写情况不同隔离级别下可以解决不同的事务并发问题,MySQL的可重复读隔离级别下,很大程度解决了幻读,MySQL解决脏读、不可

2022-02-11 09:05:24 541

原创 MySQL MVCC原理

21 事务隔离级别与MVCC事务并发执行的问题事务的并发执行会出现一致性问题,解决方法有让事务串行执行,这种方式会严重影响到系统吞吐量、资源利用率,还有可串行化执行,对访问相同数据的事务进行限制,多个事务对同一个数据进行读写、写写情况的访问时,才会出现一致性问题。一致性问题脏写:事务修改了另一个未提交事务中的数据脏读:事务t1修改了数据,t2访问了未提交t1修改的数据后,t1终止,t2访问的数据是不正确的不可重复读:t1读取数据后,t2修改了未提交事务读取的数据,t1再次读取的数据与第一次读

2022-02-11 09:05:16 179

原创 MySQL undo日志

20 undo日志事务的回滚需求事务需要保证原子性,如果事务的执行过程,服务器发生了错误,就需要将事务进行回滚(对部分语句进行回滚,对整个事务进行回滚)。InnoDB把为了回滚而记录的东西称为undo日志,对数据库进行改动(insert、delete、update)操作时,就需要进行记录,不同的操作类型产生的undo日志的格式是不一样的。插入操作,记录主键值回滚时只需要根据主键值将相应的记录删除删除操作,把记录的内容记录,回滚时把删除前记录的内容重新插入事务Id分配Id的时机读写

2022-02-10 20:39:25 803

原创 MySQL redo日志

19 redo日志数据库的事务有一个特性是持久性,对于一个已提交的事务,事务对数据库的修改应该是永久的,即使数据库发生故障,这个事务对数据库的修改也不应该丢失。我们知道在对数据库的时间进行访问(增删改查)时,需要将对应的页面加载到缓冲区中,对数据进行的修改也是在内存中对页面进行修改,这个修改过的页面不会立刻被刷新到磁盘中。持久性为了让提交的事务对数据库的修改时永久的(即使系统发生故障,也可以在重启后进行恢复),可以把修改的内容记录写入磁盘(记录某个页面的某个偏移量进行了某个修改,刷新到磁盘),这么

2022-02-10 20:38:52 627

原创 MySQL 事务相关总结

18 事务数据库状态反映的是现实世界的状态,数据库的状态改变应该要符合现实世界的规则事务应该具有的特性是:原子性隔离性一致性持久性原子性事务是一个不可分割的操作单位,要么执行,要么不执行(事务包含一个或多个数据库的操作,数据库进行操作时,可能发生错误)隔离性事务之间应该是隔离的,不应该干扰其他事务(事务并发问题)一致性事务对数据库的修改是从一个一致性状态转换为另一个一致性状态。(一致性,数据库的数据应该要满足现实世界的约束)数据库提供一部分的一致性,但更多的一致性

2022-02-10 20:38:25 418

原创 MySQL 缓冲区

17 InnoDB缓冲区缓存对于InnoDB存储引擎来说,我们存储的用户数据及索引(聚簇索引、普通索引)、各种的系统数据都是以页的形式存储在表空间中,而表空间是InnoDB对文件的抽象,这些数据实际都是存储到磁盘中的。我们知道跟CPU的速度相比,磁盘的速度是很慢的,所以InnoDB在处理客户端的请求时(比如查看记录),需要将磁盘中的对应的页加载到内存中,将整个页加载到内存后,进行读写操作,完成操作后并不会立刻将这个页对应的内存空间释放掉,而是缓存起来,当下一次访问到这个页面时,也就可以直接访问内存中

2022-02-10 20:37:20 1744

原创 MySQL Explain 执行计划详细信息

15 Explain表结构-- auto-generated definitioncreate table single_table ( id int auto_increment primary key, key1 varchar(100) null, key2 int null, key3 varchar(100) null, key_part1 varchar(10

2022-02-10 20:36:55 768

原创 MySQL 优化 基于规则优化

14 基于规则的优化​ MySQL会基于一些规则重写我们写的语句,使得查询的执行更加高效表的结构# 表single_tableCREATE TABLE single_table ( id int not null auto_increment, key1 VARCHAR(100), key2 int, key3 varchar(100), key_part1 varchar(100),

2022-02-10 20:26:50 539

原创 MySQL统计数据

13 统计数据表结构CREATE TABLE single_table ( id int not null auto_increment, key1 VARCHAR(100), key2 int, key3 varchar(100), key_part1 varchar(100), key_part2 varchar(100), key_part3 varchar

2022-02-10 20:25:19 694

原创 MySQL 优化 基于查询成本的优化

12 基于查询成本的优化表结构CREATE TABLE single_table ( id int not null auto_increment, key1 VARCHAR(100), key2 int, key3 varchar(100), key_part1 varchar(100), key_part2 varchar(100), key_part3 va

2022-02-10 20:24:06 470

原创 MySQL表的连接

11 连接原理表的结构create table t1( m1 int, n1 char(1));create table t2( m2 int, n2 char(1));insert into t1values (1, 'a'), (2, 'b'), (3, 'c');insert into t2values (2, 'b'), (3, 'c'), (4, 'd');两表连接select

2022-02-10 20:23:01 1882

原创 MySQL的单表访问方法

10 单表访问方法表的结构CREATE TABLE single_table ( id int not null auto_increment, key1 VARCHAR(100), key2 int, key3 varchar(100), key_part1 varchar(100), key_part2 varchar(100), key_part3 varc

2022-02-10 20:21:57 535

原创 JVM Class文件结构2

访问标志标志名称标志值含义ACC_PUBLIC0x0001标志为public类型ACC_FINAL0x0010标志被声明为final,只有类可以设置ACC_SUPER0x0020标志允许使用invokespecial字节码指令的新语义,JDK1.0.2之后编译出来的类的这个标志默认为真。(使用增强的方法调用父类方法)ACC_INTERFACE0x0200标志这是一个接口ACC_ABSTRACT0x0400是否为abstract类型,对于接口

2021-09-15 08:48:50 80

原创 JVM Class文件结构1

魔数每个Class文件开头的4个字节的无符号整数称为魔数(Magic Number)作用:确定这个文件是否为一个能被虚拟机接受的有效合法的文件,魔数是class文件的标识符魔数固定值:0xCAFEBABEClass文件版本紧接着魔数的4个字节存储的是Class文件的版本号。同样也是4个字节第5、6个字节所代表的含义:编译的副版本号minor_version第7、8个字节:编译的主版本号major_version共同构成了class文件的格式版本号,譬如某个Class文件的

2021-09-15 08:48:48 85

原创 JVM指令1

解析class文件javap是jdk自带的反解析工具,它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息。有些信息(如本地变量表、指令和代码行偏移量映射表、常量池中方法的参数名称等等)需要在使用javac编译成class文件时,指定参数才能愉出,如果你使用javac -g xx.java就可以生成所有相关信息了使用的eclipse.则默认情况下,eclipse在编译时会帮你生成局部变量表、指令和代码行偏

2021-09-15 08:48:40 218

原创 JVM指令2

类型转换指令类型转换指令可以将两种不同的数值类型进行相互转换转换操作一般用于实现用户代码中的显式类型转换操作,或者用来处理字节码指令集中数据类型相关指令无法与数据类型一一对应的问题宽化类型转换整型: i2l、i2f、i2d长整型:l2f、l2d浮点型:f2d精度损失浮点数值是根据IEEE754最接近含入模式所得到的正确整数值int、long类型数值转换到float或long类型数值转换到double时,可能发生精度丢失(几个最低有效位上的值)宽化类型转换可能发生精度丢失

2021-09-15 08:48:30 73

原创 JVM类加载过程

类加载过程在Java中数据类型分为基本数据类型和引用数据类型,基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载加载(Loading)加载就是将Java类的字节码文件加载到机器内存中,并在内存中构建出Java类的原型一一类模板对象模板对象:Java类在JVM内存中的一个快照,JVM将从字节码文件中解析出的常量池、类字段、类方法等信息存储到类模板中,这样JVM在运行期便能通过类模板而获取Java类中的任意信息,能够对Java类的成员变量进行遍历,也能进行Java方法的调用反射的机制

2021-09-15 08:48:24 82

原创 JVM类的使用

类的使用任何一个类型在使用之前都必须经历过完整的加载、链接、初始化3个类加载步骤一旦一个类型成功经历过这3个步骤之后,等着开发者使用了开发人员可以在程序中访问和调用它的静态类成员信息(静态字段、静态方法),或者使用new关键字为其创建对象实例卸载(Unloading)类、类的加载器、类的实例之间的引用关系在类加载器的内部实现中,用一个Java集合来存放所加载类的引用一个Class对象总是会引用它的类加载器,调用Class对象的getClassLoader方法,就能获得它

2021-09-15 08:48:18 154

原创 JVM双亲委派模型

双亲委派模型类加载器用来把类加载到Java虚拟机中,从JDK1.2版本开始,类的加载过程采用双亲委派机制,这种机制能更好地保证Java平台的安全定义:如果一个类加载器在接到加载类的请求时,它首先不会自己尝试去加载这个类,而是把这个请求任务委托给父类加载器去完成,依次递归,如果父类加载器可以完成类加载任务,就成功返回,只有父类加载器无法完成此加载任务时,才自己去加载本质:规定了类加载的顺序是:引导类加载器先加载,若加载不到,由扩展类加载器加载,若还加载不到,才会由系统类加载器或自定义的类加载器进行加载

2021-09-15 08:48:07 225

原创 JVM Class文件总体介绍

Class文件源代码经过编译器编译之后便会生成一个字节码文件字节码是一种二进制的类文件,它的内容是JVM的指令不是C、C++经由编译器直接生成机器码概述字节码文件的跨平台性Java语言跨平台语言Java源代码编译为字节码文件在不同平台上运行,不需要重新编译其他语言有编译器,跨平台优势不明显了跨平台似乎快成了一门语言必有的特性跨语言的平台——JVMJava虚拟机不和包括Java在内的任何语言绑定它只与Class文件,特定的二进制文件格式所关联只要能将源文件编译为正确的Cl

2021-09-14 19:17:30 68

原创 JVM执行引擎

执行引擎Java虚拟机核心组成部分物理机的执行引擎直接建立在处理器、缓存、指令集和系统层面上虚拟机的执行引擎是由软件自行实现的,不受物理条件限制地定制指令集、执行引擎的结构体系,能够执行不被硬件直接支持的指令集格式理解字节码JVM主要任务是装载字节码到其内部字节码不能够直接运行在操作系统上,字节码指令并非等价于本地机器指令、内部包含的仅仅是能够被JVM识别的字节码指令、符号表、其他辅助信息执行引擎将字节码指令解释或编译为对应平台dd阿本地机器指令才能运行程序(执行引擎将高级语言翻译

2021-09-14 19:12:42 61

原创 JVM垃圾回收器

垃圾回收器概述垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本从不同角度分析垃圾收集器,可以将GC分为不同的类型分类线程数串行垃圾回收器:同一时间段内只允许有一个CPU用于执行垃圾回收操作,此时工作线程被暂停,直至垃圾收集工作结束单CPU处理器、较小的应用内存等硬件平台不是特别优越的场合,串行回收器的性能表现可以超过并行回收器和并发回收器。串行回收默认被应用在客户端的Clie

2021-09-14 19:04:11 59

原创 JVM垃圾回收

垃圾运行程序没有任何指针指向的对象不及时对内存中的垃圾进行清理,垃圾对象占用的内存空间一直保留到程序结束,占用空间无法被其他对象使用,甚至出现内存溢出GC对于高级语言来讲,如果不进行垃圾回收,内存迟早被消耗完释放没有用的对象,可以让JVM整理出内存分配给新的对象应用程序应付的业务越来越大,没有GC不能保证程序的正常运行早期的垃圾回收人工进行内存申请、内存释放开发人员频繁申请、释放忘记回收内存,会造成内存泄漏Java垃圾回收自动内存管理降低内存泄漏、内存溢出的风险开发人

2021-09-14 19:02:56 72

原创 JVM字符串常量池

String声明为final实现了Serializable、Comparable(可序列化、比较大小)内部结构JDK8:char[]JDK9:byte[],节省资源,StringBuffer、StringBuilder也发生改变代表不可变序列,具有不可变性对字符串重新赋值,需要重新指定内存空间赋值,不使用原来的value进行赋值通过字面量给字符串进行赋值,字符串声明在字符串常量池中String.intern方法可将字符串存放至字符串常量池字符串常量池不会存储相同内容的字符串

2021-09-14 19:01:12 71

原创 JVM方法区

方法区方法区存储了每个类的结构信息,运行时常量池、属性、方法信息、构造器和方法的代码(即时编译器编译后的代码缓存?)、类、实例、接口初始化的特殊方法类型信息:类、接口、注解、枚举的全限定类名、直接父类的全限定类名、public、abstract等修饰符的某个子集,实现接口的有序列表域信息:名称、类型、修饰符方法信息:名称、返回值、参数数量和类型、修饰符、字节码、操作数栈、局部变量表及大小、异常表(异常处理的开始、解释位置、代码在程序计数器的偏移地址、被捕获的异常类的常量池索引)非final的类变

2021-09-14 18:58:38 80

原创 JVM 堆

堆核心概述内存细分Java8设置大小Java堆的大小在JVM启动时就设定好-Xms:设置堆的起始内存-Xmx:堆的最大内存通常将起始内存、最大内存设置成相同,这使得Java垃圾回收机制清理堆区后不重新分配计算堆区的大小,提升性能年轻代与老年代Java对象分为两类:生命周期较短的、创建和消亡都非常迅速生命周期长,甚至与JVM生命周期保持一致的Java堆区进一步划分为年轻代(Young Gen)EdenSurvivor0Survivor1老年代(Old G

2021-09-14 18:53:40 75

原创 JVM 程序计数器、虚拟机栈、本地方法栈

运行时数据区程序计数器存储指向下一条指令的地址,由执行引擎读取下一条指令PC计数器不是广义上的物理寄存器每一个线程都有一份存储当前线程正在执行的Java方法的JVM指令地址,如果执行的是native方法,则未指定(undefined)字节码解释器通过改变计数器的值来选取下一条需要执行的字节码指令唯一一个在JVM规范中没有规定任何OutOfMemoryError情况的区域其他CPU不停地切换线程,需要记录线程执行的位置,JVM字节解释器需要通过改变计数器的值来选取下一条需要执行的字节

2021-09-14 18:51:31 140

原创 JVM介绍

虚拟机虚拟计算机,分为系统虚拟计算机、程序虚拟机(Java虚拟机)Java虚拟机运行在操作系统上,Java虚拟机平台可以运行非Java语言编写的程序,它只关心字节码文件,只要其他编程语言的编译结果满足并包含Java虚拟机的内部指令集、符号表、其他辅助信息,字节码文件就能被虚拟机识别并装载。java程序运行在Java虚拟机内部作用二进制字节码的运行环境,负责装载字节码文件、解释、编译为对应平台的机器指令执行,每条Java指令在Java虚拟机都有规范特点一次编译、到处运行内存自动管理、垃圾回

2021-09-14 18:49:14 56

原创 JVM类的加载

类加载子系统负责从文件系统、网络获取class文件,文件开头有特定标识(0xCAFEBABE)类加载器只负责加载加载的类信息存放在方法区的内存空间,方法区还存放运行时常量池信息,可能包含字符串字面量、数字常量(class文件中常量池部分的内存映射)类加载过程加载通过全限定类名获得定义此类的二进制字节流将字节流所代表的静态存储结构转换为方法区的运行时数据结构在内存中生成代表这个类的Class对象,在方法区中作为这个类的各种数据的访问接口加载class文件方式本地系统获取网络

2021-09-14 18:47:23 63

原创 Spring等题目

SpringIOCIOC:控制反转,把对象的创建、调用交给Spring进行管理利用xml解析、工厂模式、反射

2021-09-04 10:34:20 81

原创 数据结构

队列public class ArrayQueue { private int head; private int tail; private final int[] nums; private final int maxSize; public ArrayQueue(int maxSize) { this.maxSize = maxSize + 1; nums = new int[this.maxSize]; }

2021-08-03 11:13:59 86

原创 排序算法 查找算法 其他算法

排序算法冒泡public static void sort(int[] nums) { int temp; boolean finished = true; int count = 0; //交换次数 for (int i = 1; i < nums.length; i++) { //交换的范围 for (int j = 0; j < nums.length -

2021-08-03 10:09:29 111

原创 Spring Boot

启动过程创建SpringApplication保存关键组件在spring.factories中得到以下组件保存到SpringApplication.BootstrapperApplicationContextInitializerApplicationListener

2021-07-08 16:37:07 68

原创 Mybatis

关于Maven项目maven项目配置,解决静态资源被过滤<!--解决maven静态资源过滤问题,配置文件无法导出到代码编译路径使用--> <build> <resources> <resource> <directory>src/main/java</directory> <includes>

2021-06-20 19:02:51 78

原创 SpringMVC

SpringMVCMVC架构Model:数据模型,提供要展示的数据View:负责模型展示,用户看到的页面Controller:接受请求交给模型处理,并把结果返回为视图SpringMVC执行 <!--处理器映射器--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!--处理器适配器--> <bean cla

2021-06-20 16:48:14 97

原创 Spring

配置XML使用Spring<bean id="user1" class="com.o11eH.demo1.bean.User" scope="prototype"/><!--scope设置为原型,获得的bean不是同一个对象--> <bean id="user2" class="com.o11eH.demo1.bean.User"> <!--完成依赖注入--> <property name="name" val

2021-05-26 18:58:01 92

原创 Web

HTML 文档对象模型(DOM:HTML Document Object ModelJQuery使开发更便捷操作文档对象选择 DOM 元素制作动画效果事件处理使用 Ajax 以及其他功能JQuery查询得到的对象是JQuery对象(包装了DOM的集合)页面加载事件$(function () { });window.onload=function(){};浏览器内核解析完页面的标签创建好 DOM 对象之后就会马上执行JQuery,而原生的onload需要等待标签的资

2021-04-05 09:17:33 51

原创 JDBC

JDBC(Java Database Connectivity)独立于特定数据库系统,通用的SQL数据库存储、操作的接口JAVA通过JDBC接口可以更方便操作不同的数据库优点开发人员不需要了解数据库细节数据库厂商只需提供标准的实现Statement弊端没有对SQL语句检查,会出现SQL注入问题存在拼串批量插入效率低PreparedStatement优点解决SQL注入、拼串问题(预编译、语法检查)支持Blob类型变量批量插入效率高(预编译代码被缓存,下一次调用不需要编译,只需要

2021-03-29 19:30:19 49

原创 设计模式

设计模式核心思想把应用中可能发生变化的代码独立出来,不将与不需要变化的代码混合。设计模式原则单一职责原则接口隔离原则依赖倒置原则里氏替换原则开闭原则迪米特原则(最少之道原则)合成复用原则...

2021-03-08 19:22:15 264

原创 数据库

数据库相关概念DB:Database长期储存在计算机内,有组织、可共享的大量数据集合特点数据按一定数据模型组织、描述、储存可以为各种用户共享冗余度较小数据独立性高易扩展DBMS:Database Management System用户与操作系统之间的数据库管理软件用途科学地组织、存储数据,高效地获取、维护数据SQL:Structured Query Language数据:数据库存储的基本单位,数据与其语义不可分功能数据定义功能提供数据定义语言(DDL,Data

2021-02-22 22:57:37 467

空空如也

空空如也

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

TA关注的人

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