Java
文章平均质量分 93
Forget_Sky
这个作者很懒,什么都没留下…
展开
-
Java集合
1. 概述List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口Set下有HashSet,LinkedHashSet,TreeSetList下有ArrayList,Vector,LinkedListMap下有Hashtable,LinkedHashMap,HashMap,TreeMapCollection接口下还有个Queue接口,有PriorityQueue类2.Connection接口List 有序,可重复ArrayList优点: .原创 2021-03-08 20:09:42 · 115 阅读 · 0 评论 -
Java线程池
创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用请求的时间和资源要多的多。如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足。这就引入了线程池概念。线程池的优点:1.重用线程池中的线程,减少因对象创建,销毁所带来的性能开销;2.能有效的控制线程的最大并发数,提高系统资源利用率,同时避免过多的资源竞争,避免堵塞;3.能够多线程进行简单的管理,使线程的使用简单、高效。1. 线程池框架Executorjava中的线程原创 2021-03-08 16:42:40 · 70 阅读 · 0 评论 -
java多线程同步,线程安全--一网打尽
线程同步的基础是java内存模型,如果对java内存模型还不了解,需要先了解一下1. volatilevolatile的特性Java内存模型对volatile专门定义了一些特殊的访问规则,当一个变量定义为volatile之后,它将具备两种特性。保证此变量对所有线程的可见性,即当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。而普通变量不能做到这一点,普通变量的值在线程间传递均需要通过主内存来完成,例如,线程A修改一个普通变量的值,然后向主内存进行回写,另外一条线程B在线程A回原创 2021-03-08 01:11:22 · 287 阅读 · 1 评论 -
java线程--一网打尽
1. 概述进程与线程几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程。当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程。进程:进程是指处于运行过程中的程序,并且具有一定的独立功能。进程是系统进行资源分配和调度的一个单位。当程序进入内存运行时,即为进程。进程的三个特点:1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问其他进程的地址空间。.原创 2021-03-03 18:43:31 · 105 阅读 · 1 评论 -
java垃圾回收
1. 为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。2.怎么定义垃圾既然我们要做垃圾回收,首先我们得搞清楚垃圾的定义是什么,哪些内存是需要回收的。引用计数算法引用计数算法(Reachability Counting)是通过在对象头中分配一个空间来保存该对象被引用的次数(Reference Count)。如果该对象被其它对象引用,则它的引用计数加.原创 2021-03-03 18:08:31 · 325 阅读 · 1 评论 -
java内存模型
Java内存模型(Java Memory Model,JMM)是Java虚拟机规范定义的,用来屏蔽掉Java程序在各种不同的硬件和操作系统对内存的访问的差异。常常和Java内存结构混淆,这是两个不同的概念。Java内存结构是指 JVM运行时将数据分区域存储 ,简单的说就是不同的数据放在不同的地方。通常又叫运行时数据区域。1、为什么要有Java内存模型?简单的说是屏蔽硬件的差异。Java虚拟机规范中试图定义一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异。——《深入理解Ja.原创 2021-03-03 16:57:38 · 176 阅读 · 1 评论 -
java内存结构
Java内存结构是指 JVM运行时将数据分区域存储 ,简单的说就是不同的数据放在不同的地方。1.8 之前:JDK1.8(含)之后:区别就是 1.8有一个元数据区替代方法区了。JDK 1.7 其实是并没完全移除方法区,但是不会像1.6以前报 “java.lang.OutOfMemoryError: PermGen space”,而是报 java.lang.OutOfMemoryError: Java heap space1.7部分内容(比如 常量池、静态变量有方法区转移到了堆)原创 2021-03-03 15:56:12 · 213 阅读 · 1 评论 -
java类加载机制
1. 什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且提供了访问方法区内的数据结构的接口。类加载器并不需要等到某个类被“首次主动使用”时再加载它,JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.class文件缺失...原创 2021-03-01 11:46:51 · 143 阅读 · 2 评论 -
JAVA IO框架
IO简介数据流是一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。 流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。因此,Java中的流分为两种:1) 字节流:数据流中最小的数据单元是字节2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、R原创 2020-12-02 20:39:38 · 165 阅读 · 0 评论 -
ThreadLocal的原理与使用
ThreadLocal的原理与使用一、ThreadLocal是什么ThreadLocal,它不是一个线程,而是线程的一个本地化对象。ThreadLocal是为了解决多个线程同时访问一个变量时的并发问题,在多线程环境下,当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程分配一个独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影...原创 2018-03-29 13:58:24 · 293 阅读 · 1 评论 -
JAVA知识目录
1. 类与对象(1)Classloader类加载机制 双亲委派模型一看你就懂,超详细java中的ClassLoader详解ClassLoader工作机制Java 对象生命周期和类生命周期(2)反射Java 反射详解(3)详解重写equals()方法就必须重写hashCode()方法的原因(4)内部类, 静态内部类, 局部类, 匿名内部类的解析...原创 2020-11-04 14:55:02 · 166 阅读 · 0 评论 -
ArrayList和LinkedList区别及使用场景
ArrayList和LinkedList区别及使用场景1. LinkedList和ArrayList的差别主要来自于Array和LinkedList数据结构的不同。ArrayList是基于数组实现的,LinkedList是基于双链表实现的。另外LinkedList类不仅是List接口的实现类,可以根据索引来随机访问集合中的元素,除此之外,LinkedList还实现了Deque接口,Deque接...原创 2018-09-07 18:51:40 · 95413 阅读 · 5 评论 -
Ubuntu下JDK,SDK, Gradle配置
配置之前下载好需要的版本,解压到自定义目录下,然后在 .bashrc文件中添加如下内容,注意替换自己的文件目录:#export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64export JAVA_HOME=/usr/lib/jvm/java-8-oracleexport JRE_HOME=${JAVA_HOME}/jreexport CLASS...原创 2018-07-30 18:02:53 · 384 阅读 · 0 评论 -
Java抽象类和接口的异同
相同点:(1)接口和抽象类都不能被实例化,都位于继承树的顶端,用于被其他类实现或继承。(2)接口和抽象类都可以包含抽象方法,实现接口和继承抽象类的普通子类都必须实现这些抽象方法。区别:(1)在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法。所以接口里不能定义静态方法,而抽象类中可以。(2)一个类只能继...原创 2018-05-21 14:20:08 · 558 阅读 · 0 评论