自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

勿念先生的博客

诸事万物皆有迹可循

  • 博客(75)
  • 收藏
  • 关注

原创 工厂方法模式

    工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。一、实现(一)抽象产品/** * 抽象人类,三个属性 * @author EX-S...

2018-05-09 17:11:45 305

原创 Java知识点总结

一、java基础(一)数据结构1.算法分析:数学基础、复杂度分析2.逻辑结构:表、栈、队列、优先队列(堆)、树、散列3.排序:冒泡排序、插入排序、快速排序、直接选择排序、希尔排序、堆排序、归并排序、桶式排序、外部排序4.查找:顺序查找、二分查找、二叉排序树查找5.算法设计与技巧:递推、递归、迭代、穷举、贪婪、分治、动态规划、随机化算法、回溯(二)高级语法1.语法基础:static、final、su...

2018-05-04 14:50:55 519

原创 建造者模式

    建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。    1)builder:为创建一个产品对象的各个部件指定抽象接口。    2)ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。    3)Director:构造一个使用Builder接口的对象。 ...

2018-04-13 18:46:07 245

原创 抽象工厂模式

    抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。一、实现(一)抽象产品1.定义人类接口,包含哭、笑、说话、性别四个属性/** * 抽象人类,四个属性 * @author EX-SONGTIANXI001 *...

2018-04-12 20:43:10 417

原创 多线程和并发的区别

    并发与多线程之间的关系就是目的与手段之间的关系。    并发(Concurrent)的反面是串行,串行好比多个车辆行驶在一股车道上,它们只能“鱼贯而行”。而并发好比多个车辆行驶在多股车道上,它们可以“并驾齐驱”。并发的极致就是并行(Parallel)。多线程就是将原本可能是串行的计算“改为”并发(并行)的一种手段、途径或者模型。    因此,有时我们也称多线程编程为并发编程。当然,目的与手...

2018-03-25 22:16:54 4993

原创 类加载案例分析

一、Tomca:正统的类加载器架构二、OSGi:灵活的类加载器架构

2018-03-25 19:33:29 227

原创 类加载机制

一、类加载的时机二、类加载的过程三、类加载器

2018-03-25 19:28:18 239

原创 内存分配和回收策略

    Java技术体系中所提倡的自动内存管理最终可以归结为两个问题:给对象分配内存和回收分配给对象的内存。对象的内存分配,大方向就是在堆上的分配(但也可能经过JIT编译后被拆散为标量类型并间接的栈上分配),对象主要分配在新生代上的Eden区,如果启动了本地分配缓冲,将按照线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,细节取决于当前使用哪一种垃圾收集器组合和虚拟机中与内存相关的参...

2018-03-25 19:25:15 219

原创 垃圾收集器

    如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。这里讨论的收集器基于JDK1.7Update14之后的HotSpot虚拟机,这个虚拟机包含的所有收集器如图所示:    如果收集器直接存在连线就说明可以搭配使用,重点分析CMS和G1这两款相对复杂的收集器。一、垃圾收集器类型(一)Serial收集器    Serial收集器是最基本、发展历史最悠久的收集器,它是一个单线...

2018-03-25 18:07:59 187

原创 垃圾收集算法

一、标记-清除算法    该算法分为标记和清除两个阶段:首先标记出所有需要回收的对象,然后在标记完成后统一回收所有被标记的对象。该算法有两个不足之处:一个是效率问题,标记和清除两个过程的效率不高,另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时候,无法找到足够的连续内存而不得不提现触发一次垃圾收集动作。二、复制算法    为了解...

2018-03-25 17:47:31 146

原创 如何判别对象已死?

    GC的历史比Java还有久远,我们在思考GC时候需要思考三个问题:哪些内存需要回收?什么时候回收?如何回收?    在Java中程序计数器、虚拟机栈、本地方法栈这三个区域随线程而生,随线程而灭:栈中的栈帧随着方法的调用和退出而有条不紊的进行着入栈和出栈的过程。每个栈帧分配多少内存在类结构确定下来时就已知的,方法结束或者线程结束内存自然跟着回收了。    而Java堆和方法区不一样,一个接口...

2018-03-25 17:44:08 696

原创 简单工厂模式

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。一、实现(一)抽象产品/** * 抽象人类,四个属性 * @author EX-SONGTIANXI001 ...

2018-03-20 11:19:01 187

原创 类图中常见的关系

    类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图中常见的关系有:1.关联关系(Association)2.继承(Inheritance)3.实现关系(Realization/Implementation)4.依赖关系(Dependency)5.聚合关系(Aggregation)6.复合关系(Composition)...

2018-03-20 10:26:26 1098

原创 JVM内存运行时区域中的OutOfMemoryError

    在Java虚拟机规范中,除了程序计数器外,虚拟机内存的其他几个运行时数据区域都有可能发生OutOfMemoryError异常的可能。一、Java堆溢出    Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么对象数量到达最大的容量限制后就会产生内存溢出异常。public class HeapOMM { s...

2018-03-19 23:17:15 373

原创 Java中New一个对象是个怎么样的过程?

    在语言层面创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(普通Java对象,不包括数组和Class对象等)的创建时一个怎么样的过程?一、对象的创建    当虚拟机遇到一条new指令时候,首先去检查这个指令的参数是否能在常量池中能否定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。   ...

2018-03-19 23:09:50 23490 2

原创 JVM内存模型

    对于Java程序员来说,在虚拟自动内存管理机制下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,会有虚拟机自动管理内存。不过,也正因为这样将内存的控制权利交给了Java虚拟机,所以一旦出现内存泄漏和内存溢出方面的问题,如果不了解虚拟机是如何管理内存的,那么排查问题将会成为一项异常艰难的工作。一、运行时数据区域(一)程序计数器(Progra...

2018-03-18 20:06:04 267

原创 JVM知识概要

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。    Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Jav...

2018-03-13 17:05:26 237

原创 TCP协议的3次握手与4次挥手

一、定义    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内, 另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上...

2018-03-12 13:54:14 348

原创 排序算法2:插入排序

一、定义    插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2),是稳定的排序方法。二、思路1.从第一个元素开始,该元素可以认为已经被排序。2.取出下一个元素,在已经排序的元素序列中从后向前扫描。3. 如果该元素(已排序)大于新元素,将该元素移到下一位置。4.重复步骤3,直到找到已排序的元素小于或...

2018-03-10 11:27:48 199

原创 排序算法1:冒泡排序

一、定义    它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。二、思路    1.比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。    2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这步做完后,最后的元素会是最大的数。    3.针对所有的元素重复以上的步骤...

2018-03-10 10:54:24 276

原创 LinkedList

一、定义(一)概要    List接口的双向循环链接列表实现(JDK1.6.0_20)。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,还实现了Deque接口,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法,这些操作允许将链接列表用作堆栈、队列或双端队列。(二)继承关系java.lang.Ob...

2018-01-25 10:33:20 370 1

原创 ArrayList

一、定义(一)概要   ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了Collection和List接口,灵活的设置数组的大小等好处。(二)继承关系// 类继承关系java.lang.Object java.util.AbstractCollection<E> java.util.Abstract...

2018-01-09 16:24:05 443

原创 Java四种引用类型

一、定义         总所周知, java不同于c/c++,它不需要程序员自已来管理内存(分配,释放内存),java 会自己来管理内存,比如销毁某些不再被使用的对象。这些操作都是在一个后台线程默默进行(Garbage Collector Thread),也就是垃圾收集器线程,根据jvm实现的策略来释放对象内存。但是程序编写者却无法控制这个后台线程,无法让它在你想要的时候开始释放内存,销毁对象,...

2018-01-05 17:17:58 375

原创 Java内部类

一、定义    内部类分为成员内部类、局部内部类、静态内部类、匿名内部类四种,使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。二、用法(一) 成员内部类    1.成员内部类也是最普通的内部类,它是外围类的一个成员,所以他是可以无限制的访问外围类的所有成员属性和方法,尽管是private的,但是外围类要访...

2018-01-05 17:15:25 183

原创 Java构造函数

一、定义    1.构造函数是一种特殊的函数。其主要功能是用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。构造函数与类名相同,可重载多个不同的构造函数。二、用法(一) 特点    1.构造方法的方法名必须与类名相同。    2.构造方法没有返回值类型,不能使用return语句。    3.构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时...

2018-01-05 17:12:33 296

原创 Java反射基本操作

一、定义    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。    JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以...

2018-01-05 16:49:51 355

原创 Java关键字volatile

一、定义    Volatile是java虚拟机提供的一种最轻量级的同步机制,用来确保将变量的更新操作到其他线程。当把变量声明成volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他的内存操作一起重排序。Volatile变量不会被缓存在寄存器或者其他处理器不可见的地方,因此在读取volatile类型的变量时候总会返回最新的写入值。二、属性(一) Volat...

2018-01-05 16:37:57 424

原创 Java关键字transient

一、定义(一)作用    1.java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中,换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化。二、用法(一) 如何使用    1.一旦变量被transient修饰,变量将不再是对象持久化的一...

2018-01-05 16:27:11 315

原创 Java关键字super与this

一、定义(一)super    1.子类可以继承父类的非私有变量和方法(不是以private或者final关键字修饰的)作为自己的变量和方法。但是,下列场景中,如果想在子类中访问父类方法或变量,就可以使用super关键字。      1)如果子类隐藏了父类的变量(静态变量或者实例变量【成员变量】)。      2)子类的静态方法隐藏了父类静态方法,当子类未转换成父类型时(当父类的引用指向子类的实例...

2018-01-05 16:20:21 811

原创 Java关键字static

一、定义(一)什么是static    1.static方法就是没有this的方法,在static方法内部不能调用非静态方法,反过来是可以的,而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。    2.被static修饰的成员变量和成员方法独立于该类的任何对象,也就是说,它不依赖类特定的实例,被类的所有实例共享,不要实例化就可以使用。    3.内存中独一份,在类加载时候...

2018-01-05 16:15:45 324

原创 Java关键字final

一、定义    final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。二、用法(一) 修饰类    1.当用final修饰一个类时,表明这个类不能被继承,而且其中的成员方法都会被隐式的指定为final方法,如String、Integer以及其他包装...

2018-01-05 16:09:22 309

原创 Java顶级父类Object

一、定义(一)什么是object类    1.Object类存储在java.lang包中,使用的时候无需显示导入,编译时由编译器自动导入。是所有java类(Object类除外)的终极父类(包括标准容器类,比如数组),不过接口不继承Object类。    2.可以使用类型为Object的变量指向任意类型的对象。Object类的变量只能用作各种值的通用持有者,要对他们进行任何专门的操作,都需要知道它们...

2018-01-05 16:03:54 3229

原创 Spring事物初识

1.概念1.1.事物是一组操作,这组操作要么一起成功,要么一起失败。2.事物特性2.1.原子性:事物是一个不可分割的单位,要么一起成功,要么一起失败。2.2.一致性:事物前后数据的完整性必须保证一致。2.3.隔离性:多个用户并发访问数据库时候,一个用户的事物不能被其他事物所干扰,多个并发事物之间数据要隔离。2.4.持久性:一个事物一旦被提交了,它对数据的改变是永久性的,即使数据库发生故障也不应该对...

2016-11-07 09:11:03 544 1

原创 Java设计模式之初识

    设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了代码复用,增加可维护性,让代码更容易被他人理解、保证代码可靠性。一、原则(一)开闭原则(Open ClosePrinciple)    开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了...

2016-10-19 16:49:33 376

原创 单例模式

    单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口...

2016-10-19 15:11:52 379

转载 软件工程和项目管理的区别

1.软件工程的定义1.1.软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。2.项目管理的定义2.1.项目管理是一个管理学分支的学科 ,指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望。项目管理是对一些与成功地达

2016-10-13 11:56:14 7715

原创 Struts基础之深入理解

1.访问Servlet API1.1.在Servlet中我们可以直接HttpServletRequest、HttpServletResponse这些API,而Struts2的Action中没有这些,三种方式访问API:1.1.1.ActionContext1.1.2.实现***Aware接口1.1.3.ServletActionContext2.Action的搜索2.1.Action的搜索顺序3....

2016-09-08 16:50:36 430

原创 Struts基础之工作原理和文件结构

1.工作原理1.1.工作原理图解1.1.1.过滤器:用户通过HttpServletRequet发出请求至过滤器,ActionContextCleanUp(可选过滤器主要用于和其他框架进行集成),FilterDispatcher(2.0到2.1.2版本替代为StrutsPrepareAndExecuteFilter)。为什么替代?是因为当我们自定义一个过滤器时候往往会放在最顶端,如果我们需要在执行A...

2016-09-08 12:12:02 931

原创 Struts2基础之最简单的案例

1.下载相关的jar包2.创建web项目2.1.New一个web项目选择Dynamic Web Project(动态的web项目)。3.创建并完善相关配置文件3.1.引入jar包3.2.在web.xml中配置添加<filter> <filter-name>struts2</filter-name> <filter-class>org....

2016-09-07 18:06:59 1072

原创 Struts2基础之概述

1.概念1.1.Struts(支架,支干),是流行和成熟的基于MVC设计模式的web应用程序框架。1.2.目的:为了帮助我们利用MVC模型来开发Web应用的时间。2.MVC模式(模型视图控制器)2.1.model12.2.model2(最典型的MVC模式)2.3.MVC流程3.Struts2的发展历史3.1.在2001发布Struts1是第一个MVC框架,在2007时候发布了Struts2(在we...

2016-09-07 16:00:18 396

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除