- 博客(11)
- 收藏
- 关注
原创 2021-07-21
进程与线程什么是进程,什么是线程?进程和线程有什么区别?进程:进程是程序的一次执行,是系统进行资源分配和调度的独立单位,他的作用是是程序能够并发执行提高资源利用率和吞吐率。线程:多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。区别:进程是资源分配的最小单位,线程是CPU调度的最小单位。由于进程是资源分配和调度的基本单位,因为进程的创建、销毁、切换产生大量的
2021-07-21 00:42:24 102
原创 MySQL 并发控制
数据库并发基础事务的四大特性ACID原子性(Atomicity):是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。比如在同一个事务中的SQL语句,要么全部执行成功,要么全部执行失败。一致性(consistency):事务必须使数据库从一个一致性状态变换到另外一个一致性状态。以转账为例子,A向B转账,假设转账之前这两个用户的钱加起来总共是2000,那么A向B转账之后,不管这两个账户怎么转,A用户的钱和B用户的钱加起来的总额还是2000。隔离性(Isolation)
2021-05-26 17:08:02 200
原创 Mysql 优化之查询截取分析
查询优化1. 小表驱动大表MySQL 只支持循环嵌套算法,因此驱动结果集越大,所需要的循环就越多,那么被驱动表的访问次数也就越多,而每次访问表,都会产生 IO 访存,因此循环次数越多,IO 访存也越多,并且每次循环都要消耗 CPU。因此我们应该尽量选择更小的驱动表,也即小表驱动大表。现有表A(员工表),B(部门表),id 为部门 id。因此 A 中有很多列,为大表,B 中的列较少,为小表。表 A 与表 B 的 id 字段建立了索引。#-------1.in---------- select *
2021-05-24 15:57:56 87
原创 Mysql 索引优化
前驱知识1.Explain关键词:Mysql优化之Explain2.联合索引结构:现有 people 表数据如下:如下面 SQL 语句建立索引:create index idx_lnameFnameDob on people(last_name, first_name, dob);其索引结构为:对于表中的每一行数据,联合索引包含了 last_name,,first_name 和 dob 列的值。对于相同 last_name 的值,则根据 first_name 来排序,对于相同的 last_
2021-05-18 20:52:10 78
原创 Mysql优化之Explain
Explain 关键词使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的。分析你的查询语句或是表结构的性能瓶颈。Explain有十大参数,分别为:idselect_typetabletypepossible_keyskeykey_lenrefrowsExtraidid 是select 查询的序列号,包含一组数字,表示查询中执行 select 子句或操作表的顺序。ta
2021-05-05 22:53:35 87
原创 Mysql索引
索引基本知识索引是什么?索引(Index)是帮助 Mysql 高效获取数据的数据结构。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指针指向)数据。这样就可以在这些数据结构上实现高级查找算法。这种数据结构就是索引,可以理解为索引是排好序的快速查找数据结构。一般来说,索引本身也很大,不可能全部存在内存中,因此索引往往以索引文件的方式存储在磁盘上。我们平时所说的索引,一般都指B树(多路搜索树)组织的索引。其中聚集索引、复合索引、前缀索引、唯一索引都是使用B+树索引
2021-05-04 13:21:01 126
原创 Redis基础知识总结
Redis中的数据类型常用五大数据类型StringString是二进制安全的(以二进制形式存储),value最大值512MB底层结构:简单动态字符串(Simple DynamicString,缩写SDS),类似于Java的ArrayList,扩容:当字符串长度小于1M时,每次扩容增加一倍,大于1M时,每次扩容增加1M,最大为512MBList简单的字符串链表,按照插入顺序,可以从头或尾插入,底层结构为双链表底层结构:快速链表quickList+压缩列表zipList扩容:当列表元素
2021-04-29 20:20:56 217 1
原创 线程池的底层原理
常用的三种线程池三种常用线程池的创建方法如下:import java.util.concurrent.Executors;import java.util.concurrent.ExecutorService;public class ThreadPool { public static void main(String[] args){ //固定线程数目线程池 newFixedThreadPool ExecutorService es0 = Executo
2021-04-28 09:06:36 141
原创 阻塞队列的种类与核心方法
什么是阻塞队列?当阻塞队列为空时,从队列中获取元素被阻塞;当阻塞队列为满时,从队列中添加元素被阻塞;阻塞队列的优点不需要关心线程安全问题如线程安全的生产者消费者模型中,多线程:(叫卖)生产者线程与消费者线程需要不断的使用wait()/notify() 来保证线程安全问题。阻塞队列:(商店)产者生产产品放入商店(对应:线程将元素放入阻塞队列),消费者在商店中消费产品(对应:线程从阻塞队列中获取元素);当商店中的产品消费空了,消费者无法再在商店中消费产品(对应:阻塞队列为空时,线程无法从阻塞队
2021-04-26 19:37:41 124
原创 类初始化与实例初始化过程
类初始化过程先初始化main()方法所在类,如果该类继承父类,先初始化父类。被static修饰的变量、方法、代码块属于该类,在类加载时被初始化,因此在类初始化时按代码顺序初始化static变量、方法、代码块。实例初始化过程如果有父类先调用父类构造器按代码顺序非静态初始化变量、方法、代码块最后初始化构造器这是一个类似于递归的过程,如果一个类有父类,调用父类构造器实例化父类,再返回子类。演示代码:public class Father { private i
2021-04-25 11:27:11 80
原创 单例设计模式
什么是单例模式单例设计模式(Singleton):在整个系统中只能有一个实例可以被获取和使用的代码模式。对一个单例类创建两个对象,这两个对象返回的地址相同,即这两个对象是同一个对象。单例模式中的核心思想是构造器私有化,将构造器私有化,静止其他类调用构造器,自行创建实例,其他类通过该实列调用该类方法,以实现单列模型。Singleton的几种形式及实现方法饿汉式:类初始化时创建对象,无线程安全问题直接实例化public class Singleton { public static fin
2021-04-24 17:21:03 358 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人