
Java
文章平均质量分 94
ZhangShuoo
这个作者很懒,什么都没留下…
展开
-
【Java】集合源码 - HashMap
HashMap概述1. 类2. 属性概述基于哈希表实现了 Map 接口, 提供了所有 map 的操作无序, 且不能保证次序保持不变提供时间复杂度为常数的操作性能, 具体性能受初始容量和负载因子两个参数影响当哈希表中的元素数量超过了负载因子和哈希表容量的乘积时, 哈希表将会被rehash, 底层数组容量会被扩容, 每次扩容大小为2倍默认的负载因子 0.75 在时间和空间成本之间提供了...原创 2019-11-03 22:35:32 · 304 阅读 · 0 评论 -
【Java】集合源码 - LinkedList
LinkedList概述1. 类2. 属性3. 方法无参构造有参构造add() addLast() linkLast()addFirst() linkFirst()addAll()remove() unlink()indexOf()概述LinkedList 是 List 的一个实现, 底层使用双向链表, 支持 O(1) 获取头节点和尾节点底层使用双向链表, 因此插入, 删除速度较快, 查询较...原创 2019-10-31 21:26:34 · 233 阅读 · 0 评论 -
【Java】集合源码 - ArrayList
ArrayList1. 概述2. 类3. 属性4. 方法构造方法add()add(index)remove()removeAll()retainAll()batchRemove()indexOf()get(int)set(int, E)1. 概述ArrayList 是 List 的一个实现, 其底层使用数组来存储元素, 且支持数组动态扩容因为底层使用数组, 所以 ArrayList 的查找较...原创 2019-10-31 19:07:19 · 287 阅读 · 0 评论 -
【Java】JVM内存区域
JVM内存区域运行时数据区域程序计数器运行时数据区域Java虚拟机在执行Java程序时会把它所管理的内存划分为若干的不同的数据区域, 根据《Java虚拟机规范(Java SE 7版)》规定Java内存包括如图所示的几个运行时数据区域。程序计数器程序计数器是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。 字节码解释器...原创 2019-06-10 20:10:23 · 198 阅读 · 0 评论 -
【Java】内存溢出异常
内存溢出异常虚拟机参数设置设置打印信息Java堆溢出虚拟机栈和本地方法栈溢出内存溢出异常即OutOfMemoryError, 在Java虚拟机规范中规定, 除程序计数器以外, 其他内存区域都有可能出现OutOfMemoryError下面就针对不同区域出现的异常进行分析.虚拟机参数设置为了能够简单模拟内存溢出异常, 需要给JVM添加堆栈大小, 打印GC堆等参数.下面是一些常用参数设置-...原创 2019-08-05 11:34:12 · 232 阅读 · 0 评论 -
【Java】JVM垃圾回收算法
JVM垃圾回收算法哪些内存需要回收什么时候回收引用计数法Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙, 墙外面的人想进去, 墙里面的人想出来。哪些内存需要回收Java运行时内存区域中,程序计数器, 虚拟机栈, 本地方法栈为线程私有, 大小在分配栈帧时基本已经确定,因此这几个区域不需要过多考虑回收问题。堆和方法区不同于上述区域, 因为只有在运行时才能确定要创建哪些对象,...原创 2019-08-05 17:18:06 · 248 阅读 · 0 评论 -
【Java】内存模型
内存模型概述主内存与工作内存内存间的交互操作volatile变量的规则原子性、可见性和有序性概述C/C++等语言直接使用物理硬件和操作系统的内存, 因此在不同平台上运行会产生差异, 导致一些并发访问经常出错。Java虚拟机规范中试图定义一种Java内存模型,主要目标是定义程序中各个变量的访问规则, 用来屏蔽掉各种硬件和操作系统间的内存访问差异, 让Java程序能够正常地在各个平台运行,并且避...原创 2019-08-08 14:42:54 · 157 阅读 · 0 评论 -
【Java】JVM垃圾收集器
JVM垃圾回收算法概述SerialParNewParallel ScavengeSerial OldParallel OldCMS(Concurrent Mark Sweep)G1收集器概述垃圾收集算法是垃圾回收的方法论, 垃圾回收器则是垃圾回收的具体实现。各个厂商差异较大, 这里只讨论常用的HotSpot虚拟机。HotSpot垃圾收集器可搭配使用的关系图。为了应对不同的场景和需求,需...原创 2019-08-06 11:07:17 · 186 阅读 · 0 评论 -
【Java】JVM类加载机制和类加载器
类加载机制和类加载器概述类的生命周期类加载的过程加载连接验证准备解析初始化初始化的条件 -- 主动使用类加载器双亲委派机制概述虚拟机把描述类的数据从Class文件加载到内存, 并对数据进行校验, 准备, 解析和初始化, 最终形成可以被虚拟机使用的Java类型, 这就是类加载机制类的生命周期如上图, 类的生命周期从这个类被加载到内存中开始, 到卸载出内存位置, 整个生命周期包括: 加载. ...原创 2019-08-07 19:59:04 · 302 阅读 · 0 评论 -
【Java】Serializable序列化
序列化和反序列化概念定义用途实现JDK类库SerializableserialVersionUID序列化方法概念定义序列化将对象转换为字节序列的过程反序列化将字符序列转换成对象的过程用途将内存中的对象持久化到硬盘中, 并之后能再次从磁盘中读取.如web服务器中的会话session对象都要存储在内存中, 如果某一时间段session对象过多, 则会导致服务器内存不够用的...原创 2019-05-31 17:50:50 · 467 阅读 · 0 评论 -
【Java】环境变量配置
环境变量(environment variables)Path : 系统要运行一个程序,在不知道该程序的完整路径时,系统不但会在当前目录下寻找,还会到Path指定的路径下寻找,设置Java环境变量方便系统更好的运行Java。例: 当你想要编译一个.Java文件时,打开黑框调用Javac命令编译,这时编译器不在当前目录里,系统会去Path里找,等找到完整路径后运行编译器编译文件。J...原创 2018-07-27 19:37:57 · 232 阅读 · 0 评论 -
【Java】继承
继承概念继承:从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并扩展新的能力。继承避免了对一般类和特殊类之间共同特征进行的重复描述。关键字extends表示继承,如 A extends B 则表示A继承B,A获取B的属性和行为。A称为 子类(subclass) 、 派生类(derived class)或 孩子类(child class)。B称为 超类(supercla...原创 2018-08-06 11:26:43 · 371 阅读 · 0 评论 -
【Java】异常
异常简介程序运行时, 会发生不被期望的错误,它的发生阻止了程序的正常运行,这就是异常。异常发生时,是任由程序自生自灭,中途退出,输出错误给用户?还是采取其他行为处理错误?或是像C语言,用函数返回值作为执行状态?如果因为异常而造成的数据丢失,那会带来很严重的后果,所以处理异常应至少做到以下几点:向用户通告错误保存所有的工作结果允许用户以妥善的形式退出程序Java提供了优良...原创 2018-08-15 19:30:21 · 214 阅读 · 0 评论 -
【数据结构】计算器
Java数据结构计算器先看看效果表达式计算平常我们数学中所计算的表达式 :1.5+2*3+(5-6/2)= ?如果在计算机中,应该如何计算该表达式?涉及以下问题根据运算符优先级,确定运算顺序。应先算括号里面的,后算括号外的,先算次方开方,后算乘除,最后算加减。处理表达式错误问题,如出现其他字符,或者括号不匹配功能完备,加入计算小数,负数,超大数的功能。...原创 2018-08-16 11:53:18 · 3261 阅读 · 1 评论 -
【Java】异常(转)
原文出处: 代码钢琴家简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽...转载 2018-08-16 19:33:50 · 157 阅读 · 0 评论 -
【Java】JDK
Java —– JDK ,JRE 和 JVMJVM(Java Virtual Machine) JVM虚拟机,即一个“虚拟的计算机”,Java程序都运行在JVM之上JRE(Java Runtime Environmen)Java运行环境,即要运行Java程序所需的配置,其中包括JVM虚拟机,函数库和其他运行Java程序时所需的文件JDK(Java Development K...原创 2018-07-27 16:34:22 · 335 阅读 · 0 评论