JAVA
文章平均质量分 83
「已注销」
这个作者很懒,什么都没留下…
展开
-
JVM-三色标记算法
JVM-三色标记算法三色标记算法是一种垃圾回收的标记算法。它可以让JVM不发生或仅短时间发生STW(Stop The World),从而达到清除JVM内存垃圾的目的。JVM中的CMS、G1垃圾回收器 所使用垃圾回收算法即为三色标记法。三色标记过程:黑色:代表该对象以及该对象下的属性全部被标记过了。(程序需要用到的对象,不应该被回收)灰色:对象被标记了,但是该对象下的属性未被完全标记。(需要在该对象中寻找垃圾)白色:对象未被标记(需要被清除的垃圾)三色标记存在的问题:对象漏标:如果原创 2021-10-20 22:40:26 · 4039 阅读 · 2 评论 -
网络IO模型
网络IO基础知识:TCP协议:面向连接的可靠的网络协议三次握手:客户端向 服务端发起请求 seq, 服务端收到请求后 向服务端返回 seq + ack ,客户端收到服务端发回的请求后 向服务端发送 ack。自此三次握手完成,此后双方会开辟资源socket:一个四元组包含了 ClientIP + Cport + SserverIP + Sport 开辟资源后 会加上文件描述符IO层面的同步、异步、阻塞、非阻塞同步:read/write操作需要 application 进行操作原创 2021-10-19 20:28:29 · 180 阅读 · 0 评论 -
20211012面试题总结
1、synchornized与lock区别 ?从层级上看:synchronized是java内置关键字,在jvm层面lock是一个接口,有丰富的API,可以通过实现接口,如reentrantLock从扩展性上看:synchronized相对扩展性差点Lock更适合扩展:(1)锁粒度可以控制,可以灵活的调用方法释放锁(2)通过继承AQS进行对应业务的修改,扩展(3)synchronized无法判断是否获取到锁锁的性质:synchronized是可重入,不可中原创 2021-10-12 00:42:57 · 215 阅读 · 0 评论 -
java面试题总结
Java集合容器1、HashMap的实现原理、HashMap在JDK1.7和1.8中有哪些不同2、HashMap底层使用了红黑树、为什么不适用二叉平衡树?红黑树还有哪些你知道的应用场景Spring相关1.Spring的优缺点2.Spring框架中都用到了哪些设计模式3.什么是SpringIOC ,IOC有什么作用,实现机制是什么?4.BeanFactory 和 FactoryBean有什么区别,BeanFactory和ApplicationContext有什么区别5、@Autowired和@原创 2021-10-10 18:07:09 · 166 阅读 · 0 评论 -
Java基础-HashMap
HashMap针对部分源码进行分析,如果不感兴趣可以直接跳过到面试问题汇总重要的几个参数:loadFactor // 因子 用于判断是否需要扩容,默认0.75threashold = 因子*初始容量 DEFAULT_INITIAL_CAPACITY = 1 << 4 // 默认初始容量 16TREEIFY_THRESHOLD = 8 // UNTREEIFY_THRESHOLD = 6 // MIN_TREEIFY_CAPACITY = 64 jdk1.8final V原创 2021-09-24 11:07:21 · 69 阅读 · 0 评论 -
搞不拎清的锁
锁Java锁公平锁/非公平锁公平锁指多个线程按照申请锁的顺序来获取锁非公平锁指多个线程不按照顺序获取锁,有可能后申请的线程比先申请的线程先获得锁。吞吐量比公平锁大,但是有可能造成优先级翻转或者饥饿现象new ReentrantLock() // 非公平锁new ReentrantLock(true) // 公平锁synchronized // 非公平锁可重入锁又名递归锁,指同一个线程在外层方法获取锁的时候,进入内层方法会自动获取锁。ReentrantLock原创 2021-08-18 01:09:00 · 176 阅读 · 0 评论 -
JVM-垃圾回收(GC)
垃圾回收什么是垃圾:没有对象引用的就是垃圾 (= .=)红色部分由于没有对象引用,此时可以认为它是一坨垃圾如何找到垃圾:1.引用计数有一次引用,那么我们就将该对象引用次数+1.当引用数为0时,表明没有对象引用。无法解决循环引用的问题循环依赖,没有被外部引用。实质上他们已经是一堆垃圾了。2.根可达算法什么是根对象:线程栈对象、静态变量、常量池、JNI指针(C/C++本地方法用的变量)常用的垃圾回收算法:1、标记清除(mark-sweep)适合存活对象比较多原创 2021-08-02 00:58:59 · 146 阅读 · 0 评论 -
线程池知识
线程池1.深入理解线程池1.1 常用线程池体系结构Executor:线程池顶级接口ExecutorService:线程池次级接口AbstractExecutorService:抽象类,运用模板犯法设计模式实现了一部分算法ScheduledExecutorService:接口功能加强ForkJoinPool:新型线程池类,基于工作窃取理论实现,运用于大任务拆小任务,任务无限多的场景ThreadPoolExecutor:普通线程池类,包含最基本的一些线程池操作相关的方法ScheduledTh原创 2021-07-25 22:37:25 · 213 阅读 · 0 评论 -
多线程基础知识
多线程基础知识一、概念:什么是进程?什么是线程?什么是纤程/协程?1、什么是进程 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序,数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块包含进程的描述信息和控制信息,是进程存在的唯一标志。怎么理解?操作系统原创 2021-07-19 00:38:14 · 158 阅读 · 0 评论 -
JAVA父子类构造方法执行顺序的小实验
JAVA父子类构造方法执行顺序一、问题引入先看下面一段代码:public class T08_NEWCLASS {}很简单的一个类,当我们把它编译后再看class文件,会发现多了一个 构造方法(java类会默认继承Object 类)public class T08_NEWCLASS { public T08_NEWCLASS() { }}我们通过jclasslib可以看到这个类的一些内部细节...原创 2020-08-23 16:06:03 · 287 阅读 · 0 评论