- 博客(17)
- 收藏
- 关注
原创 java原理篇之GC
1、垃圾收集器回收种类GC算法(引用计数/复制/标清/标整)是内存回收的方法论,垃圾收集器就是算法落地实现。因为目前为止还没有完美的收集器出现,更加没有万能的收集器,只是针对具体应用最合适的收集器,进行分代收集4种主要垃圾收集器SerialParallelCMSG12、串行并行并发G1四大垃圾回收方式串行垃级回收器(Serial) -它为单线程环境设计且只使用一个线程进行垃圾收集,会暂停所有的用户线程,只有当垃圾回收完成时,才会重新唤醒主线程继续执行。所以不适合服务器环境。
2021-08-11 15:07:17
151
原创 java原理篇之JVM
1、JVM体系结构概览java gc 主要回收的是 方法区 和 堆中的内容2、常见的垃圾回收算法1.引用计数2.复制Java堆从GC的角度还可以细分为: 新生代(Eden 区、From Survivor 区和To Survivor 区)和老年代。MinorGC的过程(复制->清空->互换):a. Eden、SurvivorFrom复制到SurvivorTo,年龄+1 首先,当Eden区满的时候会触发第一次GC,把还活着的对象拷贝到SurvivorFrom区,当Ede
2021-07-22 14:34:11
787
原创 java原理篇之死锁编码及定位分析
概念死锁是指两个或多个以上的进程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力干涉那他们都将无法推进下去。如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。产生死锁的原因系统资源不足进程运行推进的顺序不对资源分配不当死锁产生的四个必要条件互斥解决方法:把互斥的共享资源封装成可同时访问占有且等待解决方法:进程请求资源时,要求它不占有任何其它资源,也就是它必须一次性申请到所有的资源,这种方式会导致资源效率
2021-07-21 11:33:17
105
原创 java原理篇之线程池
前言获取多线程的方法,我们都知道有三种,还有一种是实现Callable接口实现Runnable接口实现Callable接口实例化Thread类使用线程池获取1、线程池使用及优势线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。它的主要特点为:线程复用,控制最大并发数,管理线程。优点:1.降低资源消耗。通过重复利用己创建的线程降低线程创建和销毁
2021-07-16 13:53:23
279
原创 java原理篇之阻塞队列
文章目录1.阻塞队列接口结构和实现类2.阻塞队列api之抛出异常组3.阻塞队列api之返回布尔值组4.阻塞队列api之阻塞和超时控制5.阻塞队列之同步SynchronousQueue队列1.阻塞队列接口结构和实现类概念队列:队列就可以想成是一个数组,从一头进入,一头出去,排队买饭阻塞队列BlockingQueue 阻塞队列,排队拥堵,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示:线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素当阻塞队列是空时,从队列中获取元素
2021-07-12 15:27:53
372
原创 java原理篇之CountDownLatch、CyclicBarrier、Semaphore
文章目录1.CountDownLatch1.CountDownLatch概念让一线程阻塞直到另一些线程完成一系列操作才被唤醒。CountDownLatch主要有两个方法(await(),countDown())。当一个或多个线程调用await()时,调用线程会被阻塞。其它线程调用countDown()会将计数器减1(调用countDown方法的线程不会阻塞),当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续执行。场景假设一个自习室里有7个人,其中有一个是班长,班长的主要职责
2021-07-09 17:31:15
260
原创 java原理篇之java锁
文章目录1.Java锁之公平锁和非公平锁2.java锁之可重入锁和递归锁理论知识3. java锁之可重入锁和递归锁代码验证1.Java锁之公平锁和非公平锁概念公平锁:是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列非公平锁:是指多个线程获取锁的顺序,并不是按照申请锁的顺序,有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程(也就是某个线程一直得不到锁)如何创建并发包中ReentrantLock的创建可以
2021-07-09 11:03:14
150
原创 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
283
原创 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
299
转载 2021-07-06
预览 并发 问题详解请谈谈你对volatile的理解linkCAS你知道吗?link原子类Atomiclnteger的ABA问题谈谈?原子更新引用知道吗?link我们知道ArrayList是线程不安全,请编码写一个不安全的案例并给出解决方案link公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解?请手写一个自旋锁linkCo...
2021-07-06 15:07:47
2362
原创 Java面试题详解[JAVA原理篇(跟着阳哥学习篇)]之valotile篇
JAVA原理篇(跟着阳哥学习篇)1.请你谈谈对于valotile的理解valotile是Java虚拟机提供的轻量级同步机制①保证可见性②不保证原子性③禁止指令重排序2.JMM内存模型之可见性JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JMM关于同步的规定:线程解锁前,必须把共享变量的值刷新回主内存线程加锁前,必
2021-07-05 17:04:18
740
2
原创 Java四年面试总结
1.为什么工作中常用String拼接字符串,而不用StringBuffer/StringBuilder?2.string是不可变对象,在后面拼接字符串不会重新创建对象;而用StringBuffer的话,太多就会占用过多的内存,特别是循环添加时,主要是考虑JVM内存才用的String。 读取一个有100万条数据的文件,并且把着100万条数据插入数据库需要注意些什么?1)JVM是否可以承受住这么大...
2019-12-10 17:31:01
314
原创 springcloud服务的降级自定义异常类出现spring cloud Feign : java.util.concurrent.TimeoutException: null
服务的降级自定义异常类出现spring cloud Feign : java.util.concurrent.TimeoutException: null异常信息:java.util.concurrent.TimeoutException: null at com.netflix.hystrix.AbstractCommand.handleTimeoutViaFallback(Abstrac...
2019-11-13 18:17:17
676
原创 连接mysql数据库报错java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized...解决方法(碰见好
连接mysql数据库报错java.sql.SQLException: The server time zone value ‘�й���ʱ��’ is unrecognized…解决方法(碰见好几次了,总结一下)springboot项目中整合mybatis时:配置yml文件如下:spring: datasource: #driver-class-name: com.mysql.jdbc...
2019-11-13 15:28:42
1061
原创 springboot和springcloud的面试
springboot和springcloud的面试1.什么是springboot用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(propertites或yml文件)创建独立的spring引用程序main方法运行嵌入的tomcat无需部署war文件简化maven配置自动配置spring 添加对应功能starter自动化配置2.springboot常用...
2019-08-16 15:32:03
96
原创 java面试总结
面试题基础总结JVM结构原理、GC工作机制详解对RabbitMQ的个人理解新的改变事物传播行为介绍JVM结构原理、GC工作机制详解对RabbitMQ的个人理解新的改变事物传播行为介绍@Transactional(propagation=Propagation.REQUIRED)如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)@Transactional(propagati...
2019-08-13 18:25:30
182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人