java进阶
文章平均质量分 81
WLNSSSSSS
这个作者很懒,什么都没留下…
展开
-
模式设计-单例模式
1.什么是单例模式单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。注意:1、单例类只能有一个实例。2、单例类必须自己创建自...原创 2018-03-27 19:41:23 · 161 阅读 · 0 评论 -
模式设计-代理模式
1.什么是代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)来解决.这就是代理思想在现...原创 2018-03-27 19:10:07 · 119 阅读 · 0 评论 -
模式设计-装饰者模式
1.什么是装饰者模式装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。2.装饰者模式的特点(1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。(2) 装饰对象包含一个真实对象的引用(reference)(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。...原创 2018-03-26 16:53:44 · 120 阅读 · 0 评论 -
设计模式-策略模式
1.什么是策略模式策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式的优点有:策略模式提供了管理相关的算法族的办法、策略模式提供了可以替换继承关系的办法、使用策略模式可以避免使用多重条件转移语句。2.策略模式的组成—抽象策略角色: 策略类,通常由一个接口或者抽象类实现。—具体策略角色:包装了相关的算法和行为。—环境...原创 2018-03-25 10:25:17 · 137 阅读 · 0 评论 -
设计模式-简单工厂
1.什么是简单工厂简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。2.简单工厂的基本职责该模式中包含的角色及其职责工厂(Creator)角色简单工厂模式的核心,它负责实现...原创 2018-03-24 09:46:34 · 142 阅读 · 0 评论 -
字符串(一)——JAVA
字符串操作是计算机程序设计中最常见的行为1.不可变的StringString对象是不可变的。String类中每一个看起来会修改String值的方法,实际上都只是简单粗暴的创建一个全新的String对象,而最初的String对象是丝毫不动的。示例:package thinkingstring; public class NoChangeStringTest { public static v...原创 2018-02-24 11:01:27 · 170 阅读 · 0 评论 -
Java8增强的工具类-Arrays
Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组。让我们看看JDK文档是怎么说的:public class Arrays extends Object 此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出...原创 2018-03-10 10:38:16 · 123 阅读 · 0 评论 -
Java内部类与lambda表达式
最复习的时候发现内部类已经有部分知识开始遗忘了。所以特地抽出时间学习内部类。1.为什么需要使用内部类大部分的时候,类被定义成一个独立的程序单元。内部类就是把一个类放在另一个类的内部,包含内部类的类也被称为外部类。内部类主要有以下作用:a.内部类提供更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类.b.内部类成员可以直接访问外部类私有数据,因为内部类被当做其外部类成员,同一...原创 2018-03-10 10:23:30 · 1074 阅读 · 0 评论 -
Java泛型(一)
1.前言一般的类和方法,只能使用具体的类型;要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。在面向对象编程语言中,多态算是一种泛化机制可有的时候,多态对程序的约束还是太强了。因为一旦指明了接口,他就要求代码必须实现。正因为多态并不是很好的解决问题,,JavaSE5引入了泛型的概念有很多原因促成泛型的出现,而最引人注目的一个原因,就是为了创造...原创 2018-03-01 11:04:07 · 122 阅读 · 0 评论 -
Java虚拟机(四)-HotSpot的算法实现
前面介绍了对象存活判定算法和垃圾收集算法,而在HotSpot虚拟机上实现这些算法时,必须对算法的执行效率有严格的考量,才能保证高效运行。1.枚举根节点从可达分析中从GC Roots节点找引用链这个操作为例,可作为GC Roots的节点主要在全局性引用于执行上下文,现在很多应用仅仅方法区就有数百M,如果要逐个检查必定会消耗很多时间。另外,可达性分析对执行时间的敏感还体现在GC停顿上,这个分析工作必须...原创 2018-03-08 09:40:47 · 163 阅读 · 0 评论 -
Java虚拟机(三)-垃圾收集算法
前面讲了如何定位要回收的对象,那问题来了,怎么回收对象也是一个问题。1.标记-清除算法这是最基础的收集算法,这就和他的名字,分为“标记”和“清除”两个阶段;首先标记出所有需要回收的对象,在标记完成后统一进行回收,他是最基础的算法,后续的算法都会在这种思维上进行优化改进。他的不足有两个,一个是效率问题,标记和清除效率都不高,第二个是空间问题,标记清除之后会残生大量不连续的内存碎片,空间碎片太多可能会...原创 2018-03-07 12:15:16 · 122 阅读 · 0 评论 -
Java虚拟机(一)-Java内存区域详解(转载)
一 jvm运行时数据区有哪些我们先来看一张图 JVM运行时数据区分类 1. JVM栈 (Java Virtual Machine Stacks) 2. 堆内存 (Heap Memory) 3. 方法区 (Method Area) 4. 本地方法栈 (Native Method Stacks) 5. 程序计数器 (Program Counter (PC) Register)二 详解数据区2.1 JV...转载 2018-03-07 11:09:17 · 121 阅读 · 0 评论 -
Java虚拟机(二)-垃圾收集器与内存分配策略
1.概述垃圾收集器,大部分人都会觉得这项技术当做Java语言的伴生产物。但是事实上GC的历史比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。GC主要需要完成下面三件事情:1.哪些内存需要回收?2.什么时候回收?3.如何回收?当前似乎垃圾回收技术已经十分成熟了,那我们还需要学习吗?答案是肯定的,当需要排除各种内存溢出,内存泄露问题时,当垃圾收集成为系...原创 2018-03-07 10:14:49 · 137 阅读 · 0 评论 -
Java枚举类
1.什么是枚举枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型 。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。2.早期的枚举和它所存在的问题/* * @author WLNSSS * @time 2018.1.18 * */ public class Test原创 2018-01-18 22:59:19 · 904 阅读 · 1 评论 -
java注解一篇就够了
1.什么是注解注解,可以看作是对 一个 类/方法 的一个扩展的模版,每个 类/方法 按照注解类中的规则,来为 类/方法 注解不同的参数,在用到的地方可以得到不同的 类/方法 中注解的各种参数与值注解也就是Annotation,相信不少人也和我之前一样以为和注释和doc一样,是一段辅助性的文字,其实注解不是这样的。从JDK5开始,java增加了对元数据(描述数据属性的信息)的支持。其实说白就是代码里原创 2018-01-17 21:49:04 · 278 阅读 · 0 评论 -
java内部类
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正。 一转载 2018-01-03 10:43:49 · 151 阅读 · 0 评论 -
树-孩子兄弟表示法的实现
1.什么是树 树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树; 图解(灵魂画师) 2.树的相关知识 节点的原创 2017-12-26 20:08:05 · 3664 阅读 · 1 评论 -
Java序列化整合教程
1.什么是序列化 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。简而言之就是Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。2.为什么需要序列化与反序列化 我们知道,...原创 2018-06-15 16:11:39 · 182 阅读 · 0 评论