从思考, 到创造
热门搜索:docker nuxtjs

什么情况下会发生死锁,如何解决死锁

🔒锁的概念锁是事务对某个数据库中的资源的控制权,若一个事务获取得到锁,在该事务释放前,其它事务都不能更新此数据。数据库锁的分类共享锁:S锁或者读锁,共享锁数据对象仍然可以被其它事务读取,但不能修改。当该对象数据被读取完毕时,释放锁。排他锁:又叫X锁或者写锁,当数据对象被加上排他锁,一个事务必须得到...

· 10 小时前

聚簇索引与非聚簇索引

理解索引结构把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。一句话总结:聚集还是非聚集的区别是B+Tree叶结点存的是指针还是数据...

· 3 天前

悲观锁与乐观锁

悲观锁与乐观锁的定义悲观锁(Pessimistic Lock)每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。乐观锁(Optimistic Lo...

· 3 天前

Happens-Before原则

先行发生原则(Happens-Before)是判断数据是否存在竞争、线程是否安全的主要依据。先行发生是Java内存,模型中定义的两项操作之间的偏序关系,如果操作A先行发生于操作B,那么操作A产生的影响能够被操作B观察到。口诀:如果两个操作之间具有happen-before关系,那么前一个操作的结果就...

· 4 天前

数据库事务隔离级别及优缺点

什么是数据库事务数据库事务transaction是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。为什么InnoDB是默认选项最主要的原因是因为 MyIasm 的锁粒度是表锁,会降低 ...

· 4 天前

== 和 equals() 的区别

==简单来说,==比较的是两个对象的内存地址。对于基本数据类型(byte,short,char,int,float,double,long,boolean)来说,他们是作为常量在方法区中的常量池里面以HashSet策略存储起来的,对于这样的字符串 "123"也是相同的道理,在常量池中,一个常量只会对...

· 5 天前

集合类中的 List 和 Map 的线程安全版本是什么

🤲 List线程安全版本Vector一个线程安全的List版本🙆‍♂️原理底层方法基本都添加了synchronized,比如下面两个常见的方法。🍐 Map 的线程安全版本参见这篇文章:HashMap 与 ConcurrentHashMap 的实现原理...

· 5 天前

唯一索引与普通索引的区别是什么?谈谈优缺点

🚽什么是索引一个索引是存储的表中一个特定列的值数据结构(最常见的是B-Tree)。索引是在表的列上创建。所以,要记住的关键点是索引包含一个表中列的值,并且这些值存储在一个数据结构中,索引是一种数据结构,一般是B-TREE。🕝普通索引普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快...

· 6 天前

java变量表示范围及精度问题

各类型变量的表示范围先来个总结看一下各类型的表示范围类型储存需求取值范围和的表示方法与其它四种不太一样让我先来了解下面这个公式符号位:指数位:尾数位:符号位:最高位位为符号位表示整个浮点数的正负为正为负;指数位:位共位为指数位这里指数的底数规定为取值范围:。这一部分的最终结果格式为:−即范围。另外标...

· 7 天前

数据库

汇总唯一索引与普通索引的区别是什么?谈谈优缺点MySQL 为什么使用 B+ 树来作索引...

· 7 天前

MySQL 为什么使用 B+ 树来作索引

👩‍🔬 为什么是B+树?在MySQL中,无论是Innodb还是MyIsam,都使用了B+树作索引结构(这里不考虑hash等其他索引),那么为什么不选择其它类型的数据结构呢?① 二叉搜索树:不平衡二叉搜索树(BST,Binary Search Tree),也叫二叉排序树,在二叉树的基础上,需要满足...

· 8 天前

线程间的通信方式

通用代码:import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors; /** * Created by Edison Xu on 2017/3/2. */public enum Helper {...

· 8 天前

ThreadLocal实现原理

ThreadLocal是什么ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。ThreadLocal和Synchonized都用于...

· 9 天前

简述动态代理与静态代理

什么是代理给某一个对象提供一个代理,以此来控制对这个对象的访问。委托类和代理类有着共同的父类或者是父接口,这样的话,在任何使用委托类对象的地方都能够用代理对象来替代。代理类负责请求的预处理、过滤、把请求分派给委托类处理、以及委托类执行完请求后的后续处理。① 静态代理由程序员创建代理类或特定工具自动生...

· 10 天前

简述 JVM 的内存模型

Jvm 内存模型1、内存结构还是运行时数据区?要解答本篇上面的这些问题,我们首先需要了解一下 Java 虚拟机的内存结构。从某一角度来说,Java 虚拟机的内存结构 == 运行时数据区,在《Java 虚拟机规范》中用的是【运行时数据区】术语的,并没有内存结构这么一说法。内存结构只是听着更加贴切,更加...

· 11 天前

Java垃圾回收机制

Java垃圾回收机制(如何判断一个对象是否该回收)Java语言和C、C++语言的一个比较大的区别就是,Java语言不用关心它的内存开辟与释放,而是交给JVM去处理;所以要好好理解它的回收机制,当出现问题时才能上手分析;如何判断对象已死1.引用计数法给对象增加一个计数器,当有引用它时,计数器就加一,当...

· 12 天前

Synchronized 关键字详解

Synchronized 关键字底层是如何实现的?线程安全,我认为更多的是描述一种风险。在堆内存中的数据由于可以被任何线程访问到,在没有任何限制的情况下存在被意外修改的风险。而synchronized是通过对共享资源加锁的方式,使同一时间只能有一个线程能够访问到临界区(也就是共享资源),共享资源包括...

· 13 天前

Volatile关键字解决了什么问题,它的实现原理是什么?

① 🧵volatile的作用在并发编程中Synchronized与volatile都扮演着重要的角色,volatile是轻量级的Synchronized,它在并发编程中保证了共享变量的可见性。可见性的意思是:当一个线程修改了一个共享变量,另外一个线程可以立即读到这个修改的值。线程对变量的所有操作都...

· 15 天前

HashMap 与 ConcurrentHashMap 的实现原理

🥤HashMap 与CurrentHashMap在讨论ConcurrentHashMap之前,我们有必要先了解一下HashMap这个东东。哈希表(hash table)也叫散列表,是一种非常重要的数据结构,在java开发过程中,小🔥伴免不了要与HashMap接触,但是可能仅限于接触,对底层的知识...

· 16 天前
Copyright 2018-2021 Siques