07 2016 档案

摘要:一.问题引入 问题:从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径——最短路径。解决最短路的问题有以下算法,Dijkstra算法,Bellman-Ford算法,Floyd算法和SPFA算法;二.Dijkstra算法 Dijkstra(迪杰斯特拉)算法是典型的最短路径路 阅读全文
posted @ 2016-07-31 18:48 简单爱_wxg 阅读(1454) 评论(0) 推荐(0)
摘要:背包问题是一个经典的算法问题,可以用动态规划,贪心法,分支界限法等方法解决。问题描述:有n个物品,编号1,2,3,、、n,其中第 i 个物品重量为Wi 价值 Vi ,有一个容量为W的背包。在容量允许范围内,如何选择物品,可以得到最大的价值。(为了简单起见,假设物品的重量 Wi 和价值Vi 都是正数) 阅读全文
posted @ 2016-07-30 20:22 简单爱_wxg 阅读(413) 评论(0) 推荐(0)
摘要:一.问题描述 如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。 注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。二.最长公共子序列的结构 最长公共子序列的结构有如下表示: 设序列X=<x1, x2, …, xm>和Y=<y1, y2, 阅读全文
posted @ 2016-07-30 16:49 简单爱_wxg 阅读(2043) 评论(0) 推荐(0)
摘要:线程的基本概念 引入进程是为了使多道程序并发执行,以提高资源利用率和系统吞吐量;引入线程,则是为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,由线程ID、程序计数器、寄存器集合和堆栈组成。线程是进程中的一个实体,是被 阅读全文
posted @ 2016-07-30 11:00 简单爱_wxg 阅读(290) 评论(0) 推荐(0)
摘要:进程的概念 进程是一个活动的实体为了使参与并发执行的程序(含数据)能独立地运行,必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block, PCB)。系统利用PCB来描述进程的基本情况和运行状态,进而控制和管理进程。相应地,由程序段、相关数据段和PCB三部分构成了进 阅读全文
posted @ 2016-07-30 10:38 简单爱_wxg 阅读(385) 评论(0) 推荐(0)
摘要:谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无 阅读全文
posted @ 2016-07-29 19:26 简单爱_wxg 阅读(318) 评论(0) 推荐(0)
摘要:我们可以将JAVA中各种操作共享数据分为5类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。 不可变:在JAVA语言中,不可变对象一定是线程安全的。只要一个不可变对象被正确的构建出来(没有发生this逃逸的情况),那其外部的可见状态永远也不会改变。保证对象行为不影响自己状态途径的途径有很多 阅读全文
posted @ 2016-07-29 16:10 简单爱_wxg 阅读(551) 评论(0) 推荐(0)
摘要:概述 由于计算机的运算速度和它的存储和通讯子系统的速度差距巨大,大部分时间都花在IO,网络和数据库上。为了压榨CPU的运算能力,需要并发。另外,优秀的并发程序对于提高服务器的TPS有重要的意义。 硬件的效率和一致性 由于运算速度的差距,CPU和存储设备间加入多层的cache。同时也引入了缓存一致性的 阅读全文
posted @ 2016-07-29 15:03 简单爱_wxg 阅读(332) 评论(0) 推荐(0)
摘要:打开慢查询日志 慢查询日志,顾名思义就是记录执行比较慢查询的日志。查看是否开启慢查询日志: 打开慢查询日志。修改MySQL的配置文件my.cn一般是在/etc目录下面,加上面三行配置后重启MySQL。 slow_launch_time只能精确到秒,如果需要更精确可以使用一些第三方的工具比如后面介绍的 阅读全文
posted @ 2016-07-27 22:11 简单爱_wxg 阅读(1245) 评论(0) 推荐(0)
摘要:什么是视图 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数 阅读全文
posted @ 2016-07-27 21:48 简单爱_wxg 阅读(396) 评论(0) 推荐(0)
摘要:概述 所谓bitmap就是用一个bit位来标记某个元素对应的value,而key即是这个元素。由于采用bit为单位来存储数据,因此在可以大大的节省存储空间。 算法思想 32位机器上,一个整形,比如int a;在内存中占32bit,可以用对应的32个bit位来表示十进制的0-31个数,bitmap算法 阅读全文
posted @ 2016-07-27 20:38 简单爱_wxg 阅读(444) 评论(0) 推荐(0)
摘要:物理机的执行引擎是由硬件实现的,和物理机的执行过程不同的是虚拟机的执行引擎由于自己实现的。所有的执行引擎的基本一致:输入:字节码文件 处理:字节码解析 输出:执行结果。 运行时栈帧结构 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中虚拟机栈的栈元素。每个栈帧都包括了一 阅读全文
posted @ 2016-07-27 18:41 简单爱_wxg 阅读(352) 评论(0) 推荐(0)
摘要:JVM把class文件加载的内存,并对数据进行校验、转换解析和初始化,最终形成JVM可以直接使用的Java类型的过程就是类加载机制。在java语言,类型的加载、连接和初始化都是在程序运行期间完成的。JAVV动态加载和动态连接的特性为程序提供了高度的灵活性。 类从被加载到虚拟机内存中开始,到卸载出内存 阅读全文
posted @ 2016-07-27 15:22 简单爱_wxg 阅读(279) 评论(0) 推荐(0)
摘要:一.final关键字的基本用法 在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。 1.修饰类 当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行 阅读全文
posted @ 2016-07-27 10:34 简单爱_wxg 阅读(366) 评论(0) 推荐(0)
摘要:处理器内存模型 顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响 阅读全文
posted @ 2016-07-27 09:49 简单爱_wxg 阅读(252) 评论(0) 推荐(0)
摘要:与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则: 下面,我们通过一些示例性的代码来分别说明这两个规则: public class FinalExample { int i; //普通变量 final int j 阅读全文
posted @ 2016-07-27 09:33 简单爱_wxg 阅读(281) 评论(0) 推荐(0)
摘要:图的生成树是它的一棵含有所有顶点的无环连通子图。一幅加权无向图的最小生成树是它的一棵权值(树中所有边的权值之和)最小的生成树。 原理: 用一条边连接树中任意两个顶点都会产生一个新的环; 从树中删去一条边都会得到两棵独立的树; 切分定理 图的一种切分是将图的所有顶点分为两个非空的且不重复的两个集合。横 阅读全文
posted @ 2016-07-26 21:25 简单爱_wxg 阅读(378) 评论(0) 推荐(0)
摘要:有向图的基本定义:由一组顶点和一组有向边组成,每条有向边连接着有序的一对顶点。 import java.util.InputMismatchException; import java.util.NoSuchElementException; public class Digraph { priva 阅读全文
posted @ 2016-07-26 18:53 简单爱_wxg 阅读(1333) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/dm_vincent/article/details/7655764 本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,称为Union-Find。更多的信息可以参考Algorithms 一书的Section 1.5,实际上本文也 阅读全文
posted @ 2016-07-26 15:01 简单爱_wxg 阅读(9573) 评论(0) 推荐(0)
摘要:锁的释放-获取建立的happens before关系 锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码: class MonitorExample { int a = 0; public synchron 阅读全文
posted @ 2016-07-25 18:14 简单爱_wxg 阅读(413) 评论(0) 推荐(0)
摘要:volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码: class Volatile 阅读全文
posted @ 2016-07-25 16:49 简单爱_wxg 阅读(264) 评论(0) 推荐(0)
摘要:数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序。 当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确 阅读全文
posted @ 2016-07-25 11:29 简单爱_wxg 阅读(258) 评论(0) 推荐(0)
摘要:数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型: 名称 代码示例 说明 写后读 a = 1;b = a; 写一个变量之后,再读这个位置。 写后写 a = 1;a = 2; 写一个变量之后,再写这个变量。 读后写 a = 阅读全文
posted @ 2016-07-25 11:17 简单爱_wxg 阅读(231) 评论(0) 推荐(0)
摘要:并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写 阅读全文
posted @ 2016-07-25 11:16 简单爱_wxg 阅读(280) 评论(0) 推荐(0)
摘要:spring的管理的事务可以分为如下2类: 逻辑事务:在spring中定义的事务通常指逻辑事务,提供比物理事务更抽象,方便的事务配置管理,但也基于物理事务 物理事务:特定于数据库的事务 spring中支持一下2中事务声明方式 编程式事务:当系统需要明确的,细粒度的控制各个事务的边界,应选择编程式事务 阅读全文
posted @ 2016-07-24 22:26 简单爱_wxg 阅读(2898) 评论(0) 推荐(0)
摘要:JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception1.request对象 request 对象是 javax.servlet.httpServletRequ 阅读全文
posted @ 2016-07-24 21:45 简单爱_wxg 阅读(271) 评论(0) 推荐(0)
摘要:http://www-igm.univ-mlv.fr/~lecroq/string/node14.html http://www.cs.utexas.edu/users/moore/publications/fstrpos.pdf BM算法 后缀匹配,是指模式串的比较从右到左,模式串的移动也是从左到 阅读全文
posted @ 2016-07-24 16:51 简单爱_wxg 阅读(26553) 评论(3) 推荐(0)
摘要:问题背景 问题可以描述成:给定一个字符串文本T,要从中找出是否含有某个子串P。我们把P叫做模式字符串。这个问题最直接的解法就是逐个匹配:先将T和P左对齐,从头开始依次比较P中的每个字符是否和T中对应的字符相同。例如,T 为“a a b a c a b a b c a b a c a b”,P为“a 阅读全文
posted @ 2016-07-24 15:39 简单爱_wxg 阅读(551) 评论(0) 推荐(0)
摘要:1.简介 暴力字符串匹配(brute force string matching)是子串匹配算法中最基本的一种,它确实有自己的优点,比如它并不需要对文本(text)或模式串(pattern)进行预处理。然而它最大的问题就是运行速度太慢,所以在很多场合下暴力字符串匹配算法并不是那么有用。我们需要一些更 阅读全文
posted @ 2016-07-24 10:34 简单爱_wxg 阅读(1213) 评论(0) 推荐(0)
摘要:一.有限自动机定义及基本术语: 一个有限自动机 M 是一个5元组(Q, ,A, Σ, δ),其中: Q 是所有状态的有限集合; ∈ Q (属于)是初始状态; A ⊆ Q (子集)是接受状态的集合; Σ 是有限输入字母表; δ 是从Q * Σ的转移函数,称为有限自动机M的转移函数; 记号与术语: Σ* 阅读全文
posted @ 2016-07-23 18:42 简单爱_wxg 阅读(1694) 评论(0) 推荐(0)
摘要:1、 概述 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。Trie一词来自retrieve,发音为/tri:/ “tree”,也有人读为/traɪ/ “try”。Trie树可以利用字符串的公共前缀来节约存储 阅读全文
posted @ 2016-07-23 12:41 简单爱_wxg 阅读(1137) 评论(0) 推荐(0)
摘要:Stack简介 Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表。当然,我们也可以将LinkedList当作栈来 阅读全文
posted @ 2016-07-20 19:38 简单爱_wxg 阅读(676) 评论(0) 推荐(0)
摘要:Java中的Iterator非常方便地为所有的数据源提供了一个统一的数据读取(删除)的接口,但是在使用的时候容易报如下错误ConcurrentModificationException,原因是在使用迭代器时候底层数据被修改,最常见于数据源不是线程安全的类,如HashMap & ArrayList等。 阅读全文
posted @ 2016-07-20 19:16 简单爱_wxg 阅读(556) 评论(0) 推荐(0)
摘要:第1部分 TreeSet介绍 TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSet抽象类,实现了NavigableSet<E>, Cloneable, java.io.Serializable接口。TreeSet 继承于AbstractSet,所以它是一个 阅读全文
posted @ 2016-07-20 18:44 简单爱_wxg 阅读(392) 评论(0) 推荐(0)
摘要:状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状 阅读全文
posted @ 2016-07-20 11:02 简单爱_wxg 阅读(988) 评论(0) 推荐(1)
摘要:原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是原型模式的用意。原型模式的结构 原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建新的对 阅读全文
posted @ 2016-07-19 12:48 简单爱_wxg 阅读(1538) 评论(0) 推荐(0)
摘要:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 从击鼓传花谈起 阅读全文
posted @ 2016-07-19 11:12 简单爱_wxg 阅读(344) 评论(0) 推荐(0)
摘要:观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对 阅读全文
posted @ 2016-07-19 10:37 简单爱_wxg 阅读(403) 评论(0) 推荐(0)
摘要:Collection接口 Collection接口主要包含以下方法: Iterable<T>接口 实现这个接口允许对象成为 "foreach" 语句的目标。该接口只包含一个方法:iterator():Iterator<E>。返回一个在一组 T 类型的元素上进行迭代的迭代器。 Iterator<E>接 阅读全文
posted @ 2016-07-18 10:53 简单爱_wxg 阅读(556) 评论(0) 推荐(0)
摘要:1.Collection<E>、Iterable<T>和Iterator<E>接口 2.ArrayList源码分析 3.LinkedList源码解析 4.Vector的浅析 5.Java中HashMap源码分析 6.JAVA的HashSet源码分析 7.ConcurrentHashMap源码解析 8 阅读全文
posted @ 2016-07-18 10:24 简单爱_wxg 阅读(191) 评论(0) 推荐(0)
摘要:合成模式属于对象的结构模式,有时又叫做“部分——整体”模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。 合成模式 合成模式把部分和整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由它们复合而成的合成对象同等看待 阅读全文
posted @ 2016-07-18 10:04 简单爱_wxg 阅读(446) 评论(0) 推荐(0)
摘要:迭代子模式又叫游标(Cursor)模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(internal representation)。 聚集和JAVA聚集 多个对象聚在一起形成的总体称之为聚集(Aggregate),聚集对象是能够包容一组对象的容器对象。聚集依 阅读全文
posted @ 2016-07-17 22:00 简单爱_wxg 阅读(1348) 评论(1) 推荐(0)
摘要:命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式的结构 命令模式是对命令的封装。命令模 阅读全文
posted @ 2016-07-17 21:24 简单爱_wxg 阅读(674) 评论(0) 推荐(0)
摘要:桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。 桥梁模式的用意 桥梁模式虽然不是一个使用频率很高的模式,但是熟悉这 阅读全文
posted @ 2016-07-17 20:15 简单爱_wxg 阅读(549) 评论(0) 推荐(0)
摘要:建造者模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 产品的内部表象 一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常 阅读全文
posted @ 2016-07-17 19:38 简单爱_wxg 阅读(368) 评论(0) 推荐(0)
摘要:模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。 模板方法模式的结构 模板方法模式是所有模式中最为常见的几个模 阅读全文
posted @ 2016-07-16 21:59 简单爱_wxg 阅读(377) 评论(0) 推荐(0)
摘要:1.阻塞模式实例 NIOUtil类,用来通过SOcket获取BufferedReader和PrintWriter。 package IO; import java.io.BufferedReader; import java.io.IOException; import java.io.InputS 阅读全文
posted @ 2016-07-16 13:17 简单爱_wxg 阅读(4728) 评论(0) 推荐(0)
摘要:Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 No Blockin 阅读全文
posted @ 2016-07-14 12:05 简单爱_wxg 阅读(388) 评论(0) 推荐(0)
摘要:Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢? 那么这两种方式有什么相同和不同呢? new操作符的本 阅读全文
posted @ 2016-07-13 12:08 简单爱_wxg 阅读(252) 评论(0) 推荐(0)
摘要:调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。 为什么需要调停者 如下图所示,这个示意 阅读全文
posted @ 2016-07-13 10:40 简单爱_wxg 阅读(1015) 评论(0) 推荐(0)
摘要:门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职 阅读全文
posted @ 2016-07-13 09:58 简单爱_wxg 阅读(431) 评论(0) 推荐(0)
摘要:一个JAVA文件可以定义多个类,但是只能有一个是public(也可以没有public类),并且该public的类的名称和JAVA文件名称相同。同时一个java文件可以有多个main方法,只有和java文件名相同的那个类的main方法才是程序的入口。在编译的时候,多个类会被分别编译成不同的.class 阅读全文
posted @ 2016-07-12 11:41 简单爱_wxg 阅读(339) 评论(0) 推荐(0)
摘要:1.计算机不能直接理解高级语言,只能理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。(计算机只能执行机器语言:我们要执行高级语言编的代码,就只能用编译器把它变成机器语言) 2.翻译有两种方式:a.编译b.解释。两种方式主要是发生的时间不同。 3.编译语言:编译型语 阅读全文
posted @ 2016-07-12 11:22 简单爱_wxg 阅读(1027) 评论(0) 推荐(0)
摘要:理解抽象工厂模式包括要注意以下几个方面: 抽象工厂模式的含义 根据上面的图,我们可以对比一下工厂方法:工厂方法模式中,通过抽象工厂创建的是抽象产品,对于一个良好的工厂方法设计,一个抽象工厂创建的是一个抽象产品角色。因此需要多个抽象工厂,这种效果在实际应用上比较繁锁。而抽象工厂创建的工作下放到子类,而 阅读全文
posted @ 2016-07-12 10:09 简单爱_wxg 阅读(333) 评论(0) 推荐(0)
摘要:工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 那么工厂方法模式是在什么场景下使用呢,下面就以本人的理解举例说明: 阅读全文
posted @ 2016-07-12 10:08 简单爱_wxg 阅读(314) 评论(0) 推荐(0)
摘要:简单工厂模式解释: 简单工厂模式(Simple Factory Pattern)属于类的创建型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 简单工厂模式的UML图: 简单工厂模式 阅读全文
posted @ 2016-07-12 09:36 简单爱_wxg 阅读(243) 评论(0) 推荐(0)
摘要:多例模式实际上就是单例模式的推广,多例模式又划分为有上限多例模式和无上限多例模式两种,有上限多例模式中的多例类的实例是有上限的,当这个多例类中的上限数值上等于 1 时,此时,多例类退化回到了单例类;而对于无上限多例模式中的多例类,它的上限是没有限制的,也就是说它的上限数值是不确定的,这个多例类并不一 阅读全文
posted @ 2016-07-12 09:18 简单爱_wxg 阅读(767) 评论(0) 推荐(0)
摘要:编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多。本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Java 中经常遇到的几种编码格式的区别;Java 中经常需要编码的场景;出现中文问题的原因分析;在开发 Jav 阅读全文
posted @ 2016-07-11 21:47 简单爱_wxg 阅读(399) 评论(0) 推荐(0)
摘要:PipedInputStream类与PipedOutputStream类用于在应用程序中创建管道通信.一个PipedInputStream实例对象必须和一个PipedOutputStream实例对象进行连接而产生一个通信管道.PipedOutputStream可以向管道中写入数据,PipedIntp 阅读全文
posted @ 2016-07-11 11:10 简单爱_wxg 阅读(1765) 评论(0) 推荐(0)
摘要:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类 单例模式的结构 单例模式的特点: • 单例类只能有一个实例。 • 单例类必须自己创建自己的唯一实例。 • 单例类必须给所有其他对象提供这一实例。饿汉式单例类 public class Ea 阅读全文
posted @ 2016-07-11 10:43 简单爱_wxg 阅读(213) 评论(0) 推荐(0)
摘要:1.java IO详尽解析 2.深入分析 Java I/O 的工作机制 3.InputStream类详解 4.OutputStream类详解 5.JAVA的节点流和处理流 6.FileInputStream和FileOutputStream详解 7.JAVA IO中的设计模式 8.PipedInpu 阅读全文
posted @ 2016-07-10 20:03 简单爱_wxg 阅读(243) 评论(0) 推荐(0)
摘要:区别一:throw 是语句抛出一个异常;throws 是方法抛出一个异常; throw语法:throw <异常对象> 在方法声明中,添加throws子句表示该方法将抛出异常。如果一个方法会有异常,但你并不想处理这个异常,就在方法名后面用throws,这样这个异常就会抛出,谁调用了这个方法谁就要处理这 阅读全文
posted @ 2016-07-10 16:06 简单爱_wxg 阅读(3711) 评论(0) 推荐(0)
摘要:UML类图 创建者模式 单例模式 多例模式 简单工厂模式 工厂方法模式 抽象工厂模式 建造者(Builder)模式 原型(Prototype)模式 结构型模式 适配器模式 装饰器模式 代理模式 门面(Facade)模式 桥梁模式(Bridge Pattern) 合成(composite)模式 行为型 阅读全文
posted @ 2016-07-10 14:18 简单爱_wxg 阅读(314) 评论(0) 推荐(0)
摘要:所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式类图如下: 在代理模式中的角色: 抽象对象角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使 阅读全文
posted @ 2016-07-10 13:20 简单爱_wxg 阅读(555) 评论(0) 推荐(0)
摘要:在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)泛化(Generalization) 【泛化关系】:是一种继承关 阅读全文
posted @ 2016-07-10 12:52 简单爱_wxg 阅读(519) 评论(0) 推荐(0)
摘要:JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升。JVM如果不显式指定是-Server模式还是-client模式,JVM能够根据下列原则进行自动判断(适用于Java5版本或者Java以上版本)。 前段时间有 阅读全文
posted @ 2016-07-09 16:14 简单爱_wxg 阅读(1860) 评论(0) 推荐(0)
摘要:本系列文章主要记录自己在学习《深入理解Java虚拟机-JVM高级特性与最佳实践》的知识点总结,文章内容都是基于周志明所著书籍的总结。 1.Java内存区域与溢出 2.垃圾收集器与内存分配策略 3.HotSpot算法实现 4.垃圾收集器 5.内存分配与回收策略 6.JVM调优总结:分代垃圾回收详述 7 阅读全文
posted @ 2016-07-09 14:51 简单爱_wxg 阅读(214) 评论(0) 推荐(0)
摘要:为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连 接,这类 阅读全文
posted @ 2016-07-09 14:40 简单爱_wxg 阅读(380) 评论(0) 推荐(0)
摘要:Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。 对象的内存分配,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地在栈上分配),对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上 阅读全文
posted @ 2016-07-09 14:13 简单爱_wxg 阅读(1487) 评论(0) 推荐(0)
摘要:垃圾收集器 前面的垃圾收集算法是理论,垃圾收集器则是具体的实现。下图是HotSpot里的收集器,中间的横线表示分代,有连线表示可以组合使用。虚拟机所处的区域表示它是属于新生代收集器还是老年代收集器。 Serial 收集器 是一个单线程的收集器,只能使用一个CPU或一条线程去完成垃圾收集;在进行垃圾收 阅读全文
posted @ 2016-07-09 11:35 简单爱_wxg 阅读(387) 评论(0) 推荐(0)
摘要:1.枚举根节点 可达性分析中从GC Roots节点找引用,可作为GC Roots的节点主要是全局性的引用与执行上下文中,如果要逐个检查引用,必然消耗时间。另外可达性分析对执行时间的敏感还体现在GC停顿上,因为这项分析工作必须在一个能确保一致性的快照中进行——这里的“一致性”的意思是指整个分析期间整个 阅读全文
posted @ 2016-07-09 10:38 简单爱_wxg 阅读(671) 评论(0) 推荐(0)
摘要:策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 策略模式的结构 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的 阅读全文
posted @ 2016-07-09 09:48 简单爱_wxg 阅读(533) 评论(0) 推荐(0)
摘要:在java语言 I/O库的设计中,使用了两个结构模式,即装饰模式和适配器模式。 在任何一种计算机语言中,输入/输出都是一个很重要的部分。与一般的计算机语言相比,java将输入/输出的功能和使用范畴做了很大的扩充。因此输入输出在java语言中占有极为重要的位置。java语言采用流的机制来实现输入/输出 阅读全文
posted @ 2016-07-07 14:11 简单爱_wxg 阅读(25963) 评论(9) 推荐(5)
摘要:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得 阅读全文
posted @ 2016-07-07 11:50 简单爱_wxg 阅读(640) 评论(0) 推荐(0)
摘要:装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加 阅读全文
posted @ 2016-07-06 19:57 简单爱_wxg 阅读(469) 评论(0) 推荐(0)
摘要:一.引子 文件,作为常见的数据源。关于操作文件的字节流就是 FileInputStream & FileOutputStream。它们是Basic IO字节流中重要的实现类。二、FileInputStream源码分析 FileInputStream源码如下: /** * FileInputStrea 阅读全文
posted @ 2016-07-06 18:52 简单爱_wxg 阅读(7416) 评论(0) 推荐(0)
摘要:节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader. 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。 JAVA常用的节点 阅读全文
posted @ 2016-07-06 16:51 简单爱_wxg 阅读(12904) 评论(1) 推荐(4)
摘要:主要内容包括OutputStream及其部分子类,以分析源代码的方式学习。关心的问题包括:每个字节输出流的作用,各个流之间的主要区别,何时使用某个流,区分节点流和处理流,流的输出目标等问题。 OutputStream的类树如下所示,其中,ObjectOutputStream和PipedOutputS 阅读全文
posted @ 2016-07-06 16:09 简单爱_wxg 阅读(17993) 评论(0) 推荐(0)
摘要:InputStream这个抽象类是所有基于字节的输入流的超类,抽象了Java的字节输入模型。在这个类中定义了一些基本的方法。看一下类的定义: 首先这是一个抽象类,实现了Closeable接口,也Closeable接口又拓展了AutoCloseable接口,因此所有InputStream及其子类都可以 阅读全文
posted @ 2016-07-06 15:33 简单爱_wxg 阅读(29208) 评论(0) 推荐(0)
摘要:I/O 问题可以说是当今互联网 Web 应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动。这个流动的过程中都涉及到 I/O 问题,可以说大部分 Web 应用系统的瓶颈都是 I/O 瓶颈。本文的目的正是分析 I/O 的内在工作机制,你将了解到:Java 的 I/O 类库的基 阅读全文
posted @ 2016-07-06 14:57 简单爱_wxg 阅读(592) 评论(0) 推荐(1)
摘要:流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类 根据处理数据类型的不同分为:字符流和字节流。根据数据流向不同分为:输入流和输出流 字符流和 阅读全文
posted @ 2016-07-05 11:10 简单爱_wxg 阅读(979) 评论(0) 推荐(1)
摘要:OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。完成中继功能的节点通常称为中继系统。一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路 阅读全文
posted @ 2016-07-04 20:37 简单爱_wxg 阅读(65042) 评论(4) 推荐(13)
摘要:什么是HTTP协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器 。目前我们使用的是HTTP/1.1 版本。 Http协议是无状态协议。在Http/1.1使 阅读全文
posted @ 2016-07-04 18:44 简单爱_wxg 阅读(3006) 评论(0) 推荐(1)
摘要:内存的动态分配与内存回收技术已经相当成熟,一切看起来都进入了“自动化”时代,那为什么我们还要去了解GC和内存分配呢?答案很简单:当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。对象已死 堆中存放着Java所有的对 阅读全文
posted @ 2016-07-02 15:51 简单爱_wxg 阅读(518) 评论(0) 推荐(0)
摘要:引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种: 直接使用 阅读全文
posted @ 2016-07-02 12:01 简单爱_wxg 阅读(35288) 评论(8) 推荐(8)
摘要:2.1 运行时数据区域 Java虚拟机在执行Java程序的过程中把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。如下图所示: 2.1.1 程序计数器 程序计数器是一块较小的内 阅读全文
posted @ 2016-07-01 21:04 简单爱_wxg 阅读(1728) 评论(0) 推荐(0)
摘要:域名系统概述 域名系统DNS(Domain Name System)是英特网使用的命名系统,用于把便于人们使用机器名字转化为IP地址。 为什么机器在处理IP数据报时要使用IP地址而不使用域名呢?IP地址长度固定,而域名长度不固定,机器处理起来比较困难。 域名系统采用层次树状结构的命名方法,并使用分布 阅读全文
posted @ 2016-07-01 16:11 简单爱_wxg 阅读(1592) 评论(0) 推荐(0)