存储引擎和锁 1、MySQL存储引擎1.1、MySQL的体系结构 12345678# MySQL Server的组成部分1. Connection Pool 连接池组件2. Management Services & Utilities 管理服务和工具组件3. SQL Interface SQL接口组件4. Parser 2021-01-20 #数据库
索引 MySQL索引1、什么是索引123456789101112# 官方定义: 一种帮助mysql提高查询效率的数据结构 index# 索引的数据结构 B+树# 索引的优点 大大加快了数据的查询速度# 索引的缺点 维护索引需要耗费数据库的资源 索引需要占用磁盘空间 当对表的数据进行增删改的时候,因为要维护索引,速度会受到影响,因为会对底层结构重排序 2、 索引分类12345678910111 2021-01-20 #数据库
运行时数据区 1.什么是运行时数据区 Java虚拟机在执行Java程序的过程中,会涉及的数据划分到不同的内存区域去管理,而这部分区域就是运行时数据区。 运行时数据区有5个区域。分别是:方法区,虚拟机栈,本地方法栈,堆,程序计数器。 其中:这5个区域可以分成两类:线程私有,线程共享 线程私有:虚拟机栈,本地方法栈,程序计数器 线程共享:方法区,堆 线程共享和线程私有的区别是:线程私有是跟随线程的启动而 2021-01-06 #Java #JVM
Volatile Volatilevloatile关键字是Java虚拟机提供的最轻量级的同步机制,本文介绍volatile的作用和底层实现原理。 1、volatile解决线程安全性问题我们说过,在多线程中存在竟态条件,会出现线程安全性问题 volatile关键字作用是保证可见性和有序性,并不会保证原子性。 volatile可以解决可见性问题 2021-01-03 #Java #多线程
多线程中的几个概念 多线程中的几个概念1、 线程的进程的区别 12345每个正在运行系统上运行的程序都是一个进程。每个进程中包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序中独立执行。也可以把它理解为代码运行的上下文。因此线程基本上是轻量级的进程,它负责在单个程序中执行多任务。进程是所有线程的集合,每一个线程是进程中的一条执行路径。 2、 并发(Concurrency)和并行(Paral 2020-12-20 #Java #多线程
生产者消费者问题 生产者消费者问题生产者与消费者问题是多线程同步问题的经典案例。也称有限缓冲问题。 1234# 什么是生产者消费者问题该问题描述了共享固定大小缓冲区的线程,生产者的主要作用是生成一定量的数据放到缓冲区,消费者也在缓冲区消耗这些数据。这类问题的关键在于保证生产者不会在缓冲区满时加入数据,消费者也不会下缓冲区空时消耗数据。 12345# 如何解决这类问题生产者在缓冲区满时休眠,等到下次消费者消耗缓 2020-12-05 #Java #多线程
创建线程的方式 创建线程的方式1、Thread类构造方法1234// Thread类源码private void init(ThreadGroup g, Runnable target, String name, long stackSize, AccessControlContext acc, boolean inheritThreadLocals) 1234567我们解释在初始化方法中的参数:Threa 2020-10-05 #Java #多线程
单例模式 单例模式单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象,一个最好的办法就是,让类自身负责保存它的唯一实例,这个类可以保证没有其他实例可以被创建。并且它可以提供一个访问该实例的方法。 单例模式使用场景: 需要频繁的进行创建和销毁对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到对象、工 2020-10-05 #设计模式
线程的通信 线程的其他方法1. 终止线程一般来说线程的执行完毕就会结束,无需手动关闭。但当我们需要手动杀死一个正在运行的线程。可以通过一些方法。 stop方法(废弃)12345# stop()方法不推荐使用因为stop()方法太暴力,会强制杀死线程。这就类似于: 你正在写文档,突然停电,文档没有保存。在程序运行过程中,强制杀死线程,线程还没有来得及保存上下文就结束了。 12345678910111213 2020-10-05 #Java #多线程
线程池 线程池1、为什么使用线程池Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行的任务的程序都可以使用线程池。 线程池的使a用能够带来三个好处: 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,会消耗资源,降低系统的稳定性。 2、线 2020-10-05 #Java #多线程