自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库索引-结构分析、创建使用以及性能分析

Mysql索引B+Tree 索引是大多数 MySQL 存储引擎的默认索引类型。因为不再需要进行全表扫描,只需要对树进行搜索即可,所以查找速度快很多。1.索引所需的数据结构B树和B+树因为创建索引会根据关键字构造B+树,所以会造成以下结果:在表中有大量数据的前提下,创建索引速度会很慢在索引创建完毕后,对表的查询性能会发幅度提升,但是写性能会降低(因为写入的时候会对B+树进行维护)1.1 B树B树就是一种平衡查找多叉树,因为数据库在查找中很多情况都是根据关键字查找的,例如找出所有年龄大于

2020-09-23 19:43:28 453

原创 数据库设计概要--函数依赖和范式

数据库设计函数依赖A -> B,称为 B 依赖于 A ,也可以称为 A 决定 B。例如:通过身份证号可以知道人的名字和住址,可以称为身份证号决定名字和住址。身份证号 -> (名字,住址)如果 A -> B,B -> C,则称为依赖的传递。可能引发的数据库异常如果在设计数据库字段的时候没有考虑全面,可能会造成一些异常:数据冗余修改异常删除异常插入异常表一(反面例子):student_idclass_idstudent_nameclass_n

2020-09-02 02:06:50 595

原创 算法笔记:排序算法-堆排序

排序算法-堆排序方法堆排序是基于大顶堆实现的排序算法。大顶堆就是一颗顺序存储的完全二叉树,并且每一个节点的值都大于自己两个子节点的值。通过定义可以知道,大顶堆的根节点,比所有堆中节点都要大,也就是堆中最大的数。这样一来,只要把一个数组变成大顶堆,那么堆的根节点就是这个数组中最大的数。我们拿到了最大的数,将其从堆中删除并记录这个数,此时堆中所有的数都比记录的这个值小。再次进行调整,让堆再一次变成大顶堆,然后删除堆的根节点并记录。不断重复这个操作,元素记录的顺序就是从大到小的排序。所以,要实现堆排序之前

2020-08-29 15:27:49 152

原创 算法笔记:排序算法-快速排序

排序算法-快速排序方法快速排序的主要实现思想是分治。需要在数组中先找到一个基准值,将小于等于基准值的数移动到基准值的左边,将大于等于基准值的数移动到基准值的右边。此时基准值左边的区间中没有比它大的数,右边的区间中没有比基准值小的数。然后我们再对基准值左边和右边的区间分别进行同样的操作。当递归结束后,整个数组就是有序的了。假设数组 arr 有n个无序元素。先将基准值base设为第一个元素arr[0]的值:base = arr[0] ; 然后设置两个指针i,j。i 的初始值为区间的第一个元素,j 的初

2020-08-24 11:54:51 155

原创 JAVA IO模型和NIO概念

JAVA IO模型和NIO概念IO表示 input/output,Java的 IO 帮助我们可以从文件、网络、内存等地方读取和写入数据。Java io 是以流为基础进行输入输出的,程序—数据流—数据源,数据源可以是文件、内存、网络等,数据通过数据流来到程序内存中,我们可以对其进行处理。A. IO 模型阻塞IO模型非阻塞IO模型多路复用IO模型信号驱动IO模型异步IO模型阻塞IO模型最传统的IO模型。内核一直处于等待状态直到数据就绪,在等待期间线程处于阻塞状态。当数据就绪之后,

2020-08-24 00:34:51 143

原创 算法笔记:排序算法-归并排序

排序算法-归并排序方法归并排序是基于归并操作实现的,归并操作比较简单,就是将两个有序的数组合并为一个有序的大数组。实现了归并操作之后,我们就要思考如何将一个大的数组分成两个有序的数组。只要能将一个大的数组变成两个有序数组,就能用归并操作完成排序了。因此,要排序一个数组,我们可以将其不断地拆分,当拆分到两个数组长度为一或零的时候,就可以直接对其进行归并操作了。归并后的数组变得有序,我们就不断将拆分的数组进行归并操作,最终就能得到一个有序的数组了。实现private static int[] aux;

2020-08-19 22:40:50 251

原创 算法笔记:排序算法-希尔排序

排序算法-希尔排序方法希尔排序是基于插入排序实现的,之前的博客分析过,插入排序在数组基本有序的时候,也就是倒置元素数量尽可能少的时候效率很高。希尔排序的思想就是,先在整个数组中划分出规模比较小的数组,将这些小的数组先进行插入排序,将小的数组变得有序。在将小的数组变得有序之后,整个数组的倒置元素数量变少了,此时再进行插入排序的效率也变高了。因此我需要先分成若干个规模小一点的数组,进行插入排序,之后再划分成若干个大一点规模的数组进行排序…直到划分成最终一整个数组,这样我们最终就能得到一个有序的数组了。具

2020-08-15 16:41:06 109

原创 算法笔记:排序算法-插入排序

排序算法-插入排序方法插入排序的方法就类似于:在斗地主发牌时,一张张牌地拿起并插入到自己手中的牌堆中。假设数组 arr 有n个无序元素。每一次的插入就是在区间 [0,i] 中找到 arr[i+1] 对应的位置并插入。 [0,i] 就相当于我们手中牌堆,arr[i+1] 就相当于下一张要插入的牌。直到没有下一个要插入的数,该数组就变得有序了。第1次将 arr[1] 插入到 [0,0] 区间的正确位置第2次将 arr[2] 插入到 [0,1] 区间的正确位置…第i次将 arr[i] 插入到 [0

2020-08-13 01:05:11 120

原创 JVM(三):类加载机制

1.JVM类加载的五个过程加载验证准备解析初始化A.加载加载有几步:通过类的全限定名获取该类的字节流在内存中生成一个这个类的Class对象将流储存到方法区中所加载类的来源有许多种:从Class文件中获取,也可以从jar或war包中获取,又或者在运行时通过动态代理生成,也可以从网络中获取,当然也可以是由JSP文件转换为对应的Class类。B.验证JVM会验证刚刚加载的类是否符合虚拟机的要求,是否有正确的内部结构,同时也是为了保护虚拟机。主要包括四种验证:文件格式的验证:

2020-08-03 21:26:12 170

原创 JVM(二):JVM内存和垃圾回收

1.JVM 运行时内存JVM 运行时内存可以分为:新生代(约占1/3堆空间)Eden区From Survivor区To Survivor区老年代(约占2/3堆空间)永久代(位于方法区)A.新生代(复制回收)新创建的对象会存放在这里,一般占1/3堆空间,因为运行时不断会有对象被创建,所以新生代会频繁地触发垃圾回收。新生代分为三个区。Eden区新创建的对象会存放在这个区域,当Eden区满的时候会触发 Minor GC进行垃圾回收,仍然存活的对象会被移动到From S

2020-07-13 23:20:18 102

原创 JVM(一):JVM基本概念和体系结构

JVM 全称是 Java Virtual Machine ,即Java虚拟机1.JVM 的体系结构字节码指令集 (由执行引擎负责执行)执行引擎(类似于计算机的CPU)垃圾回收 (GC,Garbage Collection)即时编译器内存区一组寄存器一个栈堆储存方法域(包括方法区和本地方法区)JVM 运行过程Java 源文件 -> Javac 编译器 -> .Class 字节码文件 -> JVM -> 机器码在这个过程中,.clas.

2020-07-11 00:16:52 134

原创 算法笔记:排序算法-选择排序

排序算法-选择排序方法假设数组有n个无序元素。首先在 [ 0, length-1 ] 中找到最小的元素,并将该元素与数组第 0 位进行交换。然后在 [ 1, length-1 ] 中找到最小的元素,并将该元素与数组第 1 位进行交换。…然后在 [ i, length-1 ] 中找到最小的元素,并将该元素与数组第 i 位进行交换。…最后在 [ length-1, length-1 ]...

2020-04-28 13:19:04 147

原创 动态代理的使用以及实现原理(基于 jdk10 的源码)

动态代理的使用以及实现原理(基于jdk10的源码)“Java动态代理实现了无侵入式的代码扩展”我们都知道,静态代理就是在代理类中持有一个被代理对象的引用,通过这个引用可以调用被代理类的方法,以此来实现代理行为。但是如果我需要代理许多不同的被代理类的时候,使用静态代理就需要我们创建非常多的代理类,这种方法显然是十分麻烦的,所以我们需要动态代理。A.动态代理的使用1.被代理类的接口以及实现...

2020-04-20 17:56:21 295

原创 Spring深入了解(一):Spring框架基本架构

Spring基本架构Spring有三个核心组件、若干个特性功能。特性功能:webTransactionAOPJDBCJMXOrm核心组件 :组件名所在包简介作用Beanorg.springframework.beans包装了 ObjectBean 的定义、创建和解析Contextorg.springframework.context作...

2020-04-15 11:26:29 186

原创 使用DOM和反射实现简单的依赖注入

    文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。使用它可以很方便地从xml文件中得到内容。    使用DOM从xml中得到内容,再使用反射就可以得到目标类了,可实现一个比较简单的依赖注入。   &nbs...

2019-12-05 22:23:07 575

原创 Servlet项目中路径和转发的问题

在使用servlet时经常发生404错误,那么很可能是路径发生了错误。这里主要分为两种:客户端发送请求服务器内部跳转超链接跳转:< a href=“url”>< /a >表单提交:< form action=“url”>...

2019-11-26 18:09:41 440

空空如也

空空如也

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

TA关注的人

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