
java面试
文章平均质量分 87
java探索者
Java探索者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java原理篇之GC
1、垃圾收集器回收种类 GC算法(引用计数/复制/标清/标整)是内存回收的方法论,垃圾收集器就是算法落地实现。 因为目前为止还没有完美的收集器出现,更加没有万能的收集器,只是针对具体应用最合适的收集器,进行分代收集 4种主要垃圾收集器 Serial Parallel CMS G1 2、串行并行并发G1四大垃圾回收方式 串行垃级回收器(Serial) -它为单线程环境设计且只使用一个线程进行垃圾收集,会暂停所有的用户线程,只有当垃圾回收完成时,才会重新唤醒主线程继续执行。所以不适合服务器环境。原创 2021-08-11 15:07:17 · 169 阅读 · 0 评论 -
java原理篇之死锁编码及定位分析
概念 死锁是指两个或多个以上的进程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力干涉那他们都将无法推进下去。如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。 产生死锁的原因 系统资源不足 进程运行推进的顺序不对 资源分配不当 死锁产生的四个必要条件 互斥 解决方法:把互斥的共享资源封装成可同时访问 占有且等待 解决方法:进程请求资源时,要求它不占有任何其它资源,也就是它必须一次性申请到所有的资源,这种方式会导致资源效率原创 2021-07-21 11:33:17 · 124 阅读 · 0 评论 -
java原理篇之线程池
前言 获取多线程的方法,我们都知道有三种,还有一种是实现Callable接口 实现Runnable接口 实现Callable接口 实例化Thread类 使用线程池获取 1、线程池使用及优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。 它的主要特点为:线程复用,控制最大并发数,管理线程。 优点: 1.降低资源消耗。通过重复利用己创建的线程降低线程创建和销毁原创 2021-07-16 13:53:23 · 298 阅读 · 0 评论 -
java原理篇之CountDownLatch、CyclicBarrier、Semaphore
文章目录1.CountDownLatch 1.CountDownLatch 概念 让一线程阻塞直到另一些线程完成一系列操作才被唤醒。 CountDownLatch主要有两个方法(await(),countDown())。 当一个或多个线程调用await()时,调用线程会被阻塞。其它线程调用countDown()会将计数器减1(调用countDown方法的线程不会阻塞),当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续执行。 场景 假设一个自习室里有7个人,其中有一个是班长,班长的主要职责原创 2021-07-09 17:31:15 · 274 阅读 · 0 评论 -
java原理篇之java锁
文章目录1.Java锁之公平锁和非公平锁2.java锁之可重入锁和递归锁理论知识3. java锁之可重入锁和递归锁代码验证 1.Java锁之公平锁和非公平锁 概念 公平锁:是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列 非公平锁:是指多个线程获取锁的顺序,并不是按照申请锁的顺序,有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程(也就是某个线程一直得不到锁) 如何创建 并发包中ReentrantLock的创建可以原创 2021-07-09 11:03:14 · 171 阅读 · 0 评论 -
JAVA原理篇之集合类不安全
文章目录1.集合类不安全之并发修改异常2.集合类不安全之写时复制 1.集合类不安全之并发修改异常 我们知道arrayList是线程不安全的,请编写一个不安全的案例以及给出解决方案 import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.UUID; import java.util.Vector; public class ArrayListNotSafeDemo {原创 2021-07-08 14:25:52 · 298 阅读 · 0 评论 -
JAVA原理篇之CAS篇
1.CAS是什么 概念 CAS的全称是Compare-And-Swap,即比较并替换,它是CPU并发原语 它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的 CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这是一种完全依赖于硬件的功能,通过它实现了原子操作,再次强调,由于CAS是一种系统原语,原语属于操作系统用于范畴,是由若干条指令组成,用于完成某个功能的一个过程,并且原语原创 2021-07-07 10:32:48 · 338 阅读 · 0 评论 -
Java面试题详解[JAVA原理篇(跟着阳哥学习篇)]之valotile篇
JAVA原理篇(跟着阳哥学习篇) 1.请你谈谈对于valotile的理解 valotile是Java虚拟机提供的轻量级同步机制 ①保证可见性 ②不保证原子性 ③禁止指令重排序 2.JMM内存模型之可见性 JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。 JMM关于同步的规定: 线程解锁前,必须把共享变量的值刷新回主内存 线程加锁前,必原创 2021-07-05 17:04:18 · 768 阅读 · 2 评论 -
Java四年面试总结
1.为什么工作中常用String拼接字符串,而不用StringBuffer/StringBuilder? 2.string是不可变对象,在后面拼接字符串不会重新创建对象;而用StringBuffer的话,太多就会占用过多的内存,特别是循环添加时,主要是考虑JVM内存才用的String。 读取一个有100万条数据的文件,并且把着100万条数据插入数据库需要注意些什么? 1)JVM是否可以承受住这么大...原创 2019-12-10 17:31:01 · 336 阅读 · 0 评论 -
java面试总结
面试题基础总结JVM结构原理、GC工作机制详解对RabbitMQ的个人理解新的改变事物传播行为介绍 JVM结构原理、GC工作机制详解 对RabbitMQ的个人理解 新的改变 事物传播行为介绍 @Transactional(propagation=Propagation.REQUIRED) 如果有事务, 那么加入事务, 没有的话新建一个(默认情况下) @Transactional(propagati...原创 2019-08-13 18:25:30 · 204 阅读 · 0 评论 -
springboot和springcloud的面试
springboot和springcloud的面试 1.什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(propertites或yml文件) 创建独立的spring引用程序main方法运行 嵌入的tomcat无需部署war文件 简化maven配置 自动配置spring 添加对应功能starter自动化配置 2.springboot常用...原创 2019-08-16 15:32:03 · 123 阅读 · 0 评论