-
线程的五大状态,以及线程之间的通信与协作
在Java面试的时候,经常会问到Java并发编程相关的多线程、线程池、线程锁、线程通信等面试必考点,比如: Java线程池的使用方式,及核心运行原理 4种常用Java线程锁的特点,性能比较、使用场景 CountDownLatch、Semaphore等4大并发工具类详解 ConcurrentHashMap的实现原理(含JDK1.7和JDK1.8的区别) 史上最强多线程面试44题和答案:线程锁+线程池…... -
Minor GC、Major GC、Full GC的区别
Java面试过程,JVM属于必考题系列: 深入详解JVM内存模型与JVM参数详细配置 JVM的4种垃圾回收算法、垃圾回收机制与总结 7种JVM垃圾收集器特点,优劣势、及使用场景 JVM性能调优的6大步骤,及关键调优参数详解 深入剖析G1收集器、及回收流程、与推荐用例 今天主要谈谈JVM GC的类型和策略,特别是大家经常混淆的Minor GC、Major GC、Full GC,年轻代GC、老年代GC…... -
深入剖析G1收集器、及回收流程、与推荐用例
金三银四马上到了,即将进入面试的高峰期。在BAT面试中,JVM基本都是必考的系列。你至少需要掌握JVM内存模型与JVM参数详细配置,JVM的4种垃圾回收算法、垃圾回收机制与总结,以及今天重点谈到的JVM垃圾回收算法的实现:JVM垃圾收集器。 我先从JVM收集器的发展过程谈起,然后再聚焦在G1收集器,从G1的内存模型,再到G1的回收流程,最后再谈谈G1的实际应用场景。 JVM垃圾收集器发展历程 JV…... -
3大Java Web安全漏洞防御详解:XSS、CSRF、以及SQL注入解决方案
随着互联网的普及,网络安全变得越来越重要。Java等程序员需要掌握基本的web安全知识,防患于未然,下面列举一些常见的安全漏洞,以及对应的防御解决方案。 常见的Web安全问题 1.前端安全 XSS 漏洞 CSRF 漏洞 2.后端安全 SQL 注入漏洞 XSS漏洞 1.XSS简介 跨站脚本(cross site script)简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web…... -
最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁
在Java并发场景中,会涉及到各种各样的锁,比如:4种常用Java线程锁的特点,性能比较、使用场景,这些锁有对应的种类:公平锁,乐观锁,悲观锁等等,这篇文章来详细介绍各种锁的分类: 公平锁/非公平锁 可重入锁 独享锁/共享锁 乐观锁/悲观锁 分段锁 自旋锁 乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对应的实际应用。 1.…... -
4大JVM性能分析工具详解,及内存泄漏分析方案
今天主要分享JVM性能调优工具,文末有详细的JVM调优方法和步骤。 什么场景需要JVM调优 OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 这些问题出现的时候常常通过重启服务器或者调大内存来临时解决,实际情况,还需要尽量还原当时的业务场景,并分析内存、线程等数据,通过分析找到最终的解决方案,这就会涉及到性能分析工…... -
史上最强多线程面试44题和答案:线程锁+线程池+线程同步等
1、并发编程三要素? 1)原子性 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。 2)可见性 可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。 实现可见性的方法: synchronized或者Lock:保证同一个时刻只有一个线程获取锁执行代码,锁释放之前把最新的值刷新到主内存,实现可见性。…... -
NIO、BIO、AIO的区别,及NIO的应用和框架选型
谈到并发编程就不得不提到NIO,以及相关的Java NIO框架Netty等,并且在很多面试中也经常提到NIO和AIO、同步和异步、阻塞和非阻塞等的区别。我先简短介绍下几个NIO相关的概念,然后再谈NIO重点掌握内容,以及Java NIO框架选型。 AIO、BIO、NIO的区别 IO模型主要分类: 同步(synchronous) IO和异步(asynchronous) IO 阻塞(blockin…... -
JVM性能调优的6大步骤,及关键调优参数详解
JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC 会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收,所以比较慢,因此应该尽可能减少Full GC的次数。 2.导致Full GC的原因 1)年老代(Tenured)被写满 调优时尽量让对象在新生代GC时被回收、让对象在新生代多存活一段时…... -
ConcurrentHashMap实现原理(含JDK1.7和JDK1.8的区别)
ConcurrentHashMap 的实现原理基本都是BAT面试必考内容,深入探讨HashMap的底层结构、原理、扩容机制,深入谈过hashmap的实现原理以及在JDK 1.8的实现区别,今天主要谈ConcurrentHashMap的实现原理,以及在JDK1.7和1.8的区别。 为了彻底搞清楚ConcurrentHashMap的实现机制,我会先从它的底层数据实现:哈希表谈起。 内容目录: 1.哈希…...