
java基础
文章平均质量分 79
一code当先
择主之臣,得遇明主!
展开
-
JVM参数调优
1.前言①.在java8中,永久代已经被移除了,被一个称为元空间的区域所取代,元空间的本质和永久代类似;②.元空间和永久代之间最大的区别在于:永久代使用的是jvm的堆内存,但是java8以后的元空间并不在虚拟机中,而是使用本机物理内存;③.默认情况下,元空间的大小仅受本地(物理)内存的限制;类的元数据放入native memory(本地内存),字符串池和类的静态变量放入jvm堆中,这样可...原创 2019-12-02 01:55:26 · 281 阅读 · 0 评论 -
java中死锁定位分析
1.是什么?1>.死锁是指两个或者两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象若无外力干涉那他们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因为争夺有限资源而陷入死锁;2.死锁产生的主要原因①.系统资源不足②.进程推进的顺序不合适③.资源分配不当3.案例演示3.1.代码public class D...原创 2019-12-01 23:36:27 · 158 阅读 · 0 评论 -
Java线程池相关知识
1.简介线程池是指在初始化一个多线程应用程序过程中提供一个线程队列,队列中保存着所有处于等待状态的线程,在需要执行新的任务时重用这些线程而不是每次都新建一个线程,避免了创建和销毁线程的额外开销,提高响应速度.线程池中线程的数量通常完全取决于可用内存数量和应用程序的需求.然而,增加可用线程数量是可能的.线程池中的每个线程都有被分配一个任务,一旦任务已经完成了,线程回到池子中并等待下一次分配任务;...原创 2019-12-01 23:15:37 · 271 阅读 · 0 评论 -
HTTP协议相关知识
文章目录1.TCP/IP协议1.1.简介1.2.IP协议:用于计算机之间的通信1.3.TCP协议:应用程序之间的通信1.4.TCP三次握手(双向建立链接)#扩展:1.5.TCP协议四次挥手(双方关闭链接)#扩展:2.HTTP协议2.1.简介2.2.HTTP协议的主要特点2.3.HTTP协议报文格式2.3.1.HTTP请求报文格式2.3.2.HTTP响应报文格式2.4.HTTP协议中的状态码2.5....原创 2019-10-19 21:30:35 · 552 阅读 · 0 评论 -
Java中字段不能被重写
Java中为什么字段不能被重写?1>.先看一个例子:新建两个Sub对象,一个指向Sub类型的引用,一个指向 Super类型的引用输出结果:思考:我们创建了两个Sub对象,但是为什么第二个对象打印出来的结果是"Super"呢?隐藏字段代替了重写在java官方提供的tutorial有一段关于隐藏字段的明确定义:Within a class, a field that has t...原创 2019-09-17 17:45:55 · 454 阅读 · 0 评论 -
Java NIO
1.NIO概述①.NIO: New IO / 非阻塞式IO;②.Java NIO从Java 1.4开始引入.用来代替传统的IO;2.Java NIO 和 Java 传统IO的区别2.1.共同点无论是NIO还是传统的IO他们的目的都是一样的,都是用来进行数据传输的!2.2.不同点2.2.1.传统IO①.面向流,单向的;②.阻塞IO;2.2.2.NIO①.面向缓冲区,双...原创 2019-09-02 20:35:50 · 132 阅读 · 0 评论 -
JVM基础知识-GC垃圾回收
1.GC的作用域方法区,堆这些线程共享的运行时数据区域2.GC ROOTS2.1.什么是垃圾?简单来说就是内存中已经不再被使用的空间就是垃圾2.2.对象的可触及性2.2.1.可触及的对象从根节点可以触及到的对象2.2.2.可复活的对象一旦对象的引用被释放(暂时不可达),这个对象就是可复活状态,因为在finalize()中可能复活该对象2.2.3.不可触及的对象...原创 2019-08-26 23:49:08 · 204 阅读 · 0 评论 -
软引用,弱引用,强引用,虚引用
1.强引用(Reference,默认支持模式)1.1.简介1>.当内存不足时,JVM开始垃圾回收,对于强引用的对象,就算出现了OOM也不会对该对象进行垃圾回收,死都不回收2>.强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还"活着",垃圾收集器就不会碰这种对象.在java中最常见的就是强引用,把一个对象赋给一个引用变量(如:Object object=...原创 2019-08-25 19:12:48 · 113 阅读 · 0 评论 -
JVM基础知识
文章目录1.JVM启动流程2.JVM内存结构2.1.类加载器Class Loader2.1.1.类加载器的分类2.1.2.类机制机制2.1.3.双亲委派机制沙箱安全机制2.1.4.类缓存2.2.运行时数据区Runtime Data Area2.3.执行引擎Execution Engine2.4.本地接口Native Interface3.运行时数据区Runtime Data Area3.1.方法区...原创 2019-08-24 04:49:10 · 610 阅读 · 0 评论 -
基于JDK1.8的HashMap源码分析
基于JDK1.8.的HashMap源码分析HashMap底层数据结构如图:HashMap的底层数据结构及初始化参数源码:/*HashMap中位桶数组table的默认初始化容量,必须是2的幂次方*/static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16/*HashMap中位桶数组table的最大容量,值为(...原创 2019-08-05 02:57:17 · 187 阅读 · 0 评论 -
Synchronized同步关键字和Lock锁
1.Synchronized同步关键字1.1.Synchronized同步关键字简介synchronized是属于JVM层面的一个关键字,底层是通过一个monitor对象(/管程对象)来完成,由于wait()/notify()等方法也依赖于monitor对象,所以只有在同步的块或者方法中才能调用wait/notify等方法1.2.同步代码块中synchronized底层实现...原创 2019-07-26 01:03:59 · 396 阅读 · 0 评论 -
Java基础(一)
1.&和&&的区别&和&&都是逻辑运算符,都是判断两边同时为真则整个结果为真,否则为假;但是&&还有一个短路的功能,就是当第一个条件不成之后,后面的条件都不执行(/判断)了,而&则还是继续执行,直到整个条件语句执行完为止.2.使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?使用 final 关...原创 2019-07-21 23:59:30 · 112 阅读 · 0 评论 -
ThreadLocal 的误解
可能大部分人的想法和我当初的想法一样,都是以为在 ThreadLocal 里使用一个 Map,这个 Map 的键为 Thread,值为绑定的变量。其实如果这样做是有问题的:就是当线程回收时,该线程绑定的变量不能被自动的回收,因为变量存储在ThreadLocal 里,必须显式的去回收。如果此变量存储在线程里,那么线程回收时,这个变量没有被其他引用指向的话,它便随着线程一起回收。 另外不这样做还...原创 2019-06-09 23:56:38 · 183 阅读 · 0 评论