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

Netty

NIO基础non-blocking io 非阻塞IO三大组件Channel & BufferChannel 类似于stream,读写数据的双向通道,可以从Channel将数据读入buffer,也可以将buffer的数据写入channel,而之前的stream要么是输入,要么是输出,chann...

· 5 个月前

InnoDB中的锁

本节将介绍InnoDB中所使用的锁的类型。共享和互斥锁意向锁记录锁间隙锁next-key 锁插入意向锁自增锁空间索引的Predicate Locks共享与互斥锁—行级锁InnoDB引擎通过共享(s)锁与互斥(x)锁实现行级锁的功能。持有共享锁的事务允许读取一行数据持有互斥锁的事务允许更新或删除一行数...

· 6 个月前

InnoDB中的行级锁

锁的类型InnoDB实现了两种标准的行级锁:共享锁(S Lock):允许事务读取数据。排他锁(X Lock):允许事务删除或者更新一行数据。锁的算法InnoDB引擎有三种行锁的算法设计,分别是:Record Lock:单个行记录上的锁Gap Lock:间隙锁,锁定一个范围,但不包含记录本身。Next...

· 6 个月前

一致性非锁定读操作

一致性非锁定读操作是指InnoDB储存引擎通过多版本并发控制的方式来读取当前执行时间数据库中的行的数据。如果读取的行正在执行DELETE或者UPDATE操作,这时读取操作不会因此等待行释放锁,而是会去读取一个快照数据。快照数据是指该行之前的版本,该实现是通过Undo日志来实现的。Undo用来在事务中...

· 6 个月前

简述 Java 的逃逸分析机制

逃逸分析什么是逃逸?方法逃逸:当一个对象在方法里面被定义之后,他可能会被外部方法所引用,例如作为参数传递到其他方法,也及对象逃离了方法的作用范围,这种行为被称为方法逃逸。线程逃逸:当被定义的对象赋值给可以被其他线程所访问的对象时,被称为线程逃逸。从不逃逸到方法逃逸直至线程逃逸的过程,称为对象由低到高...

· 6 个月前

简述标记清除算法的流程

最早出现也是最基础的垃圾收集算法就是标记清除算法(mark-sweep)。字如其名,算法分为标记和清除两个阶段;标记需要清除的对象统一回收被标记的对象之所以被称为最基础的垃圾回收算法,是因为后续的大多数算法都是以标记清除算法为基础,不断改正其缺点演进后得到的。缺点执行效率不稳定,如果java堆中包含...

· 6 个月前

二进制原码补码

在java中,假设有一个int类型的数字,值为5,那么他在计算机中的表示为00000000 00000000 00000000 00000101那么负数该如何表示呢?在计算机中,正数是直接用原码来表示的,例如单字节5,表示为0000 0101-5使用补码来表示,为1111 1011那么什么是补码呢?...

· 6 个月前

Mysql范式与反范式

范式的优缺点优点范式化的更新操作通常更快范式化的冗余数据更少,所以只需要修改少量的数据范式化的表通常更小,可以更好的放在内存中,所以执行速度更快很少有冗余数据意味着检索列表更少需要DISTINCT或者GROUP BY缺点范式化设计的schema的缺点是通常需要关联。稍微复杂的查询语句在范式化设计的中...

· 6 个月前

Integer到底占用多大的空间

在Java开发中我们经常会接触到Integer这个包装类,我们经常说Integer占用4个字节,32比特,其数据的表示范围是-2^31 ~ 2^31-1之间,但是作为一个实例对象存在时,真实情况只是这样吗?这里我们需要用到一个工具,JProfile。一个空对象的大小这里请尝试运行下面的代码这次得到的...

· 7 个月前

ThreadLocal的散列算法

ThreadLocal在原理篇已经进行过简单介绍,在创建ThreadLocal对象后尝试设置变量副本时,会先判断当前线程的threadLocalMap是否为空,否则进行初始化操作。观察下面ThreadLocal源码:因此当我们调用任意对象的set方法int i = key.threadLocalHa...

· 7 个月前

Java中栈队列双端队列方法总结

Stackjava中的后入先出的栈结构,继承自Vector因此是一个线程安全的容器类方法stack的方法非常简单,只有下面五种方法push:调用 Vector的addElement方法,将新元素 obj 插入到 Vector 维护的 elementData[] 数组中elementData[elem...

· 7 个月前

类加载与字节码技术

1. 类文件结构一个简单的 HelloWorld.java根据jvm规范,类文件结构如下 u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool[constant_p...

· 7 个月前

JVM

未命名文档在这里开始书写之旅...

· 7 个月前

快速排序的空间复杂度是多少

快速排序的空间复杂度是多少?主要是递归造成的栈空间的使用,最好情况,递归树的深度为 log2​n空间复杂度也就为 O(logn)最坏情况,需要进行n‐1递归调用,其空间复杂度为O(n),平均情况,空间复杂度也为O(logn)。时间复杂度的最好最坏的情况是多少,有哪些优化方案?在最优的情况下快速排序算...

· 7 个月前

简述主从复制以及读写分离的使用场景

一、什么是主从复制、读写分离、为什么要使用主从复制:是一种数据备份的方案。简单来说,是使用两个或两个以上相同的数据库,将一个数据库当做主数据库,而另一个数据库当做从数据库。在主数据库中进行相应操作时,从数据库记录下所有主数据库的操作,使其二者一模一样。读写分离:是一种让数据库更稳定的的使用数据库的方...

· 7 个月前

AQS

什么是AQS全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架,AQS使用一个先入先出的队列表示排队等待锁的线程,队列头节点称作哨兵节点或者哑节点,它不与任何线程关联。其他的节点与等待线程关联。AQS中还有一个表示状态的字段state,例如Reentra...

· 7 个月前

Java类加载过程

类加载阶段加载将类的字节码载入方法区中,内部采用 C++ 的 instanceKlass 描述 java 类,它的重要 field 有:_java_mirror 即 java 的类镜像,例如对 String 来说,就是 String.class,作用是把 klass 暴 露给 java 使用_sup...

· 7 个月前

Java字节码技术

编译期处理所谓的 语法糖 ,其实就是指 java 编译器把 *.java 源码编译为 *.class 字节码的过程中,自动生成 和转换的一些代码,主要是为了减轻程序员的负担,算是 java 编译器给我们的一个额外福利(给糖吃嘛。另外, 编译器转换的结果直接就是 class 字节码,只是为了便于阅读,...

· 7 个月前

JVM垃圾回收

垃圾回收算法标记清除算法通过GC Root 可达性分析算法可以对堆中的对象进行分析,对不可达对象进行标记,并且在下次垃圾回收时回收这些对象,其缺点是不能对内存碎片进行整理,优点是回收速度快。标记整理算法通过可达性分析算法从GC Root出发对堆中所有对象的可达性进行分析,对于不可达的对象进行标记,在...

· 7 个月前
Copyright 2018-2021 Siques