Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

本文转自:不可不说的Java“锁”事 前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。 Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷...
Java

本文涉及集合类知识以及面试常问知识点 OverView集合类分为List,Map,Set. 先上张图 Map包括HashMap, LinkedHashMap, HashTable, TreeMap 和 WeakHashMap, ConcurrentHashMap HashMap 不是线程安全,最多允许一条键为null的记录 LinkedHashMap 保存了记录的插入顺序 Con...
Java

Java常量池分为字符串常量池,class常量池和运行时常量池。本文主要讲class常量池。 什么是class常量池顾名思义,class常量池就是class文件中对应的常量池,那什么是class文件呢,就是将java文件编译得到的字节码文件,jvm所处理的也正是这种字节码文件。而class常量池,指的就是这个字节码文件中对应的一部分内容。 class文件结构为了进一步了解class文件,我们...
Java

NIO(Non-Blocking IO,非阻塞同步IO)是Jdk 1.4后提出的新技术,为什么要提出这个技术呢?是为了解决什么问题呢? 要回答这个问题,就要从传统的阻塞式IO说起。 何为同步异步,何为阻塞非阻塞对IO来说, 同步:API调用返回时就已经知道执行结果了 异步:API调用返回时还不知道执行结果,需要过一会儿才能知道 阻塞:当没有数据读或者写时,它就一直等啊等,等到有数据来 非阻...
Java

写这篇文章主要想讲两个问题: 什么是反射 反射存在的意义 反射能做哪些事 什么是反射反射,简单的来讲,是一种在程序运行时生成对象的技术。为什么说是运行时呢,相比我们平时写代码时创建对象,比如: 123public static void main(){ Object obj = new Object();} 我们创建对象的代码是事先写好的,那么程序在编译的时候...
Java

OverViewHashMap工作原理1. jdk 1.7数据结构: 看一下Entry的结构: 1234final K key;V value;Entry<K,V> next;int hash; put方法: 12345678910111213141516171819202122public V put(K key, V value) { if (ta...
Java

synchronized关键字可以用来修饰方法,也可以用来修饰代码块,但是底层的实现有所不同。对于同步方法,JVM采用ACC_SYNCHRONIZED标记符来实现同步。 对于同步代码块。JVM采用monitorenter、monitorexit两个指令来实现同步。 Q1: synchronized关键字如何实现原子性? ​ 通过moniterenter和moniterexit两个指令保...
java

最近买了个vultr,特此记录以下安装小飞机的过程: 123wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.shchmod +x shadowsocks.sh./shadowsocks....

深入理解Java类加载器(ClassLoader)2017年06月26日 09:34:08 zejian_ 阅读数:115126 版权声明:本文为博主原创文章,请尊重原创,未经博主允许禁止转载,保留追究权 https://blog.csdn.net/javazejian/article/details/73413292 【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)h...
Java

乐观锁和悲观锁 悲观锁 悲观锁对数据修改持有悲观态度,认为数据很容易被修改,所以在修改数据前会先给加锁,效率较低。 乐观锁 乐观锁假设一般情况下不会造成数据冲突,所它只在事务提交更新的时候,才去检测是否有冲突。如果冲突了则给用户返回一定的信息让用户自己去处理。 乐观锁并不是真正的加锁,通常,它可以通过版本号,或者时间戳等来判断是否发生了冲突。比如添加版本号,每次修改数据时都会带上版本号,如...