自定义博客皮肤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——(五)MySQL事务

一、MySQL事务有什么特性?事务:逻辑上 的一组操作,要不全部成功,要不全部失败回滚如果一个数据库,声称支持事务的操作,那么该数据库必须具备四个特性(ACID)四个特征(ACID):原子性(atomic)(1)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚(2)因此事务的操作如果成功就必须要完全引用到数据库,如果操作失败则不能对数据库有任何的影响一致性(consistency)(1)事务必须使数据库,从一个一致性状态变换到另一个一致性状态(2)例如转账,用户A和用

2021-10-25 11:31:02 135

原创 MySQL——(四)聚簇索引和非聚簇索引有什么区别?

聚簇索引和非聚簇索引有什么区别?总览聚簇索引与非聚簇索引是从文件存储的角度进行划分:聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据(InnoDB)非聚簇索引:将数据和索引进行分开存储(MyISAM)一、聚簇索引一个表仅有一个聚簇索引,默认是主键聚簇索引性能最好而且具有唯一性,所以非常珍贵,必须慎重设置。一般要根据这个表最常用的SQL查询方式来进行选择,某个字段作为聚簇索引,或组合聚簇索引,这个要看实际情况。二级索引(辅助索引)聚簇索引的叶子节点存储了一行完整

2021-10-25 10:11:01 630

原创 MySQL——(三)索引的底层数据结构是什么?为什么这么设计?

索引的底层数据结构是什么?总览MySQL通过B+树来实现索引,有什么特点?为什么采用B+树,有什么好处?一、B+树1、n叉树,每一级可以存储多个节点,降低了树的高度2、非叶子节点只存储key,不存储数据3、叶子节点存储key和数据4、叶子节点的内部,存在多条数据,根据索引进行了有序排列,满足了范围查找5、叶子节点之间通过一个双向链表,进行相互连接6、索引失效的情况下,可以按照叶子节点进行顺序遍历二、索引数据以文件的形式保存在磁盘里,但需要查询的时候,先将磁盘里的文件内容放到内

2021-10-25 08:34:02 152

原创 MySQL——(二)什么是索引?MySQL有哪几种索引?

什么是索引?MySQL有哪几种索引?总览索引用于快速找出在某行的数据,如果不使用索引,MySQL必须从第一条记录开始读取整个表,直到找到相关的行表越大,查询数据所花费的时间就越多,通过索引MySQL能够快速到达某一行的位置去搜索数据文件,节省很大一部分的时间一、索引MySQL可以给任意字段设置索引创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加,当对表的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度占用一定的空间,我们知道数据表中

2021-10-24 17:06:03 2680

原创 MySQL——(一)MyISAM和InnoDB两种存储引擎有什么区别?

MyISAM和InnoDB两种存储引擎有什么区别?总览MyISAM是MySQL 5.5版本以前默认的数据库引擎InnoDB弥补了MyISAM的一些不足,在5.5版本以后称为数据库的默认引擎,逐渐取代了MyISAM一、MyISAMMyISAM强调性能,每次查询具有原子性,不提供事务支持只支持表级锁,select、update、delete、insert语句都会给表自动加锁。MyISAM在同一个表上的读锁和写锁是互斥的,如果既有读请求又有写请求,即使读请求先到,写请求优先级也会更高

2021-10-24 16:36:51 1984

原创 Java——JVM虚拟机(四)

JVM中有哪些常见的垃圾回收器?各自的特点是什么?Java发展至今,已经推出了好几代的垃圾回收器,包括Serial、ParNew、Parallel、CMS、G1以及Java11中最新的ZGC,每一代的GC都是堆上一代的改进和完善。新生代使用的垃圾回收器主要有:Serial串行收集器(1)单线程收集器,在单核CPU架构下,JDK3之前新生代的回收器的唯一选择。(2)它与应用线程的执行是串行的,也即是说,执行应用线程的时候,不会执行GC,执行GC的时候不会执行应用线程。(3)在CPU单核架构下

2021-10-23 13:43:19 66

原创 Java——JVM虚拟机(三)

对于堆内存,虚拟机如何进行分代管理?分代:JVM根据对象在内存中存活时间的长短,把堆内存分为新生代和老年代新生代:由Eden区+(S0+S1) Survivor区组成大部分情况下,对象优先分配到Eden区,如果对象实在太大,新生代整个都放不下的话,可直接放在老年代区当Eden区满时,JVM会触发一次Minor GC(回收速度快)Minor GC(1)当Eden满了之后,进行Minor GC,将需要保存的数据复制到S0中(2)当下一次Eden满了之后,进行Minor GC,将原来S0存

2021-10-23 12:08:31 75

原创 Java——JVM虚拟机(二)

1、JDK8后的虚拟机内存包含哪几个部分?做了哪些调整和改进?JDK8之前的架构堆堆是JVM内存管理的最大一块区域,主要目的是存放对象的实例所有新创建的对象实例和数组都会在堆上为其分配内存空间线程共享是垃圾收集器的主要管理区域,堆内存中可以存在物理上不连续的空间,只要逻辑上是连续的即可如果在堆中没有内存完成实例分配,将会抛出OutOfMemoryError栈Java栈也称为虚拟机栈,是线程私有的Java栈中存放的是一个个栈帧,没有栈帧对应一个被调用的方法,在栈帧中包括:·

2021-10-23 10:42:28 56

原创 Java——JVM虚拟机(一)

1、Java代码程序是如何运行起来的?jar包:将.class为后缀的Java程序代码打包为jar包,在服务器后台通过java -jar的命令运行程序;war包:将程序代码打包为war包,将其部署在例如Tomcat 的服务器上进行运行。(1)我们的Java程序是以.java为后缀的文件,会通过编译器将代码编译为.class后缀的字节码文件,以供JVM识别和运行;(2)Java的平台无关性,实现的基础就是虚拟机JVM和字节码存储格式。不同的操作系统可能对应不同版本的JVM,这些不同版本的JVM都可

2021-10-23 09:45:04 82

原创 Java设计模式——创建型模式(二)

创建型模式创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是new一个对象,然后set相关属性。但是在很多场景下,我们需要给客户端提供更加友好的创建对象的方式,尤其是那种我们定义了类,但是需要提供给其他开发者使用的时候。1、简单工厂模式定义:定义一个工厂类,可以根据参数的不同返回不同类型的实例,被创建的实例都具有共同的父类在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)。下面进行代码理解:

2021-10-17 21:53:06 148

原创 Java设计模式——设计原则(一)

设计原则和设计模式是两个不同的概念:设计模式:提供了一套软件开发过程中面临的一些问题的最佳解决方案,在实践中使用这些方案会使得你的代码然具有很好的可读性,可靠性,以便于优秀的代码可以直接被他人使用。设计原则:设计原则是设计模式最直接的体现,逻辑上更符合Java编程中追求的高内聚和低耦合的基本思想。具体设计原则如下:开闭原则依赖倒置原则单一职责原则接口隔离原则迪米特原则里氏替换原则合成复用原则1、开闭原则定义:一个软件实体,例如类、模块 、函数,应该对扩展是开放的,对修改是关闭的。

2021-10-17 14:32:15 96

原创 Java——线程池(二)

1、存在风险的线程池创建方式–慎用创建线程池的方式多种多样,但下面三种不用用在正式环境中,它们分别是:FixedThreadPool:固定大小的线程池SingleThreadExecutor:单个线程的线程池CachedThreadPool:可缓存的线程池这三种创建方式都在Executors工具类中这些创建线程池的方式都是基于原生创建线程池的方式衍生出来的,我们掌握了原生创建方式,这些创建方式自然也就明白了。2、Executors线程池工具类FixedThreadPool:固定大小

2021-10-14 18:55:00 113

原创 Java——线程池(一)

1、为什么要使用线程池?例如:当前我们有一个任务,任务内容为输出当前线程的名称,然后我们创建一个该任务,创建一个线程,将该任务交给该线程,然后启动线程。public class Task implements Runnable{ @Override public void run() { //输出当前线程的名称 System.out.println(Thread.currentThread().getName()); }}public cla

2021-10-14 17:53:46 2307

原创 Java基础——泛型

一、为什么需要泛型了解泛型之前,我们首先看一段代码:List list = new ArrayList();list.add("John");list.add("Mary");list.add("Lily");list.add(10000);Collections.sort(list);for(Object obj:list){ String name = (String) obj; System.out.println(name.toUpperCase());}你

2021-10-08 09:37:46 50

原创 多线程——死锁DeadLock

死锁当两个线程互相等待对方释放同步监视器时会发生死锁,应避免这种情况出现:避免多次锁定尽量避免同一个线程对多个同步监视器进行锁定;按相同的顺序加锁如果多个线程需要对多个同步监视器加锁,则因保证它们以相同的顺序请求加锁;可以使用超时释放发锁调用Lock对象的tryLock(time,unit)方法,当超过指定时间后它会自动释放锁。示例代码:package com.nefu;/** 死锁 */public class ThreadDemo08 { public static v

2021-10-07 09:20:26 132

原创 理解无参构造器和有参构造器

一、概念Java中构造器就是指一个类当中的构造方法,分为无参构造和有参构造:无参构造方法:与类名相同,无返回类型的方法,参数为空。有参构造方法:与类名相同,无返回类型的方法,带有参数。比如:一个Dao类,private Dao(){}这个就是无参构造方法。private Dao(String name){}就是有参构造方法。二、作用用来初始化Java类,提供类的初始化和实例化,以便调用,当我们new一个对象的时候要用到构造函数。例如:Hello hello = new Hello();这

2021-10-07 08:19:44 5074 1

空空如也

空空如也

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

TA关注的人

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