
java
文章平均质量分 96
jackson_fighting
java 任重道远
展开
-
JAVA系列-设计模式-抽象工厂模式
抽象工厂模式的理解:用抽象工厂来定义具体工厂的抽象,而由具体工厂来创建对象我们以创建一个动物打比喻:用抽象动物工厂(IAnimalFactory)来定义具体动物工厂的抽象(ICat、IDog),而由具体的动物工厂(BlackCat、BlackDog、WhiteCat、WhiteDog)来创建动物,这就是抽象工厂与工厂方法的不同,工厂方法中对象的创建是由工厂方法来确定的,创建的对象都是不分类原创 2013-11-09 10:16:41 · 1591 阅读 · 0 评论 -
JAVA系列-设计模式-模板模式
定义:定义一个操作中的算法的骨架,并将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。下面这段文字摘抄自:http://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然原创 2013-11-10 14:47:35 · 740 阅读 · 0 评论 -
数据结构与算法系列-算法的特征、要求、评价
算法的特性:输入:一个算法可以有0个或多个输入量输出:一个或多个输出量有穷性、确定性、可行性 算法的设计要求:正确性 、可读性、健壮性、高效性 算法的评价:时间效率:一个算法中语句重复执行的次数叫做语句频度算法中基本操作重复执行的次数依据算法中最大语句频度来计算,她是问题规模n的某个函数f(n),算法的时间量度记作T(n) = O(f(n)).成为时间复原创 2013-11-10 15:12:53 · 1092 阅读 · 0 评论 -
JAVA系列-设计模式-原型模式
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。package Prototype;/** * 声明一个克隆自身的接口。 * @author Administrator * */public class Prototype implements Cloneable { private String name; pub原创 2013-11-10 14:26:41 · 1087 阅读 · 1 评论 -
JAVA系列-设计模式-状态模式
定义:允许一个对象在其内部状改变时改变它的行为。看起来就像是改变了它的类一样。主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。package State;/** * 定义客户感兴趣的接口。 维护一个ConcreteState子类的实例,这个实例定义当前状态。 * @a原创 2013-11-10 14:40:28 · 882 阅读 · 0 评论 -
JAVA系列-设计模式-访问者模式
定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。package Visitor;import java.util.Collection;/** * 为该对象结构中ConcreteElement的每一个类声明一个Visit操作。 该操作的名字和特征标识了发送visit请求给该访问者的那个类。原创 2013-11-10 14:53:39 · 844 阅读 · 0 评论 -
JAVA系列-设计模式-设计模式的分类、源码下载
设计模式的分类1.1 创建型模式AbstractFactory ( 抽象工厂 ) FactoryMethod ( 工厂方法 ) Singleton ( 单态模式 ) Builder ( 建造者模式 ) Prototype 原型模式 ) 1.2 结构型模式Adapter 适配器模式Bridge ( 桥接模式) Composite ( 组合原创 2013-11-10 15:00:46 · 906 阅读 · 0 评论 -
数据结构与算法系列-线性表-线性表的应用
需求:线性表A、线性表B 都是循环链表存储结构,将B链表链接到A链表的后面,合并成一个链表。#include#includetypedef struct node{ int data; struct node *next;}NODE;NODE *create_circular(){ NODE *head,*q,*p; int a,n; head = (NODE *)m原创 2013-11-10 16:17:17 · 867 阅读 · 0 评论 -
数据结构与算法系列-线性表-数组(线性表的推广)
转载自 重庆邮电大学计算机学院 PPT数据元素可为结构类型的线性表数组是由一组具有相同特征的数据元素的组成的.如果数组元素只含有一个下标,则称为以为数组.若把数据元素的下标顺序变换成线性表的序号,则一维数组就是一个线性表.如果每个元素有两个下标,则称为二维数组,一个 m x n的矩阵就是一个二维数组.数组的ADT(抽象数据类型(Abstract Data Type))转载 2013-11-10 16:51:06 · 2311 阅读 · 0 评论 -
JAVA系列-设计模式-观察者模式
定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。package Observer;import java.util.ArrayList;import java.util.List;public abstract class Citizen { List pols; Strin原创 2013-11-10 14:21:48 · 1051 阅读 · 0 评论 -
JAVA系列-设计模式-代理模式
定义:为其他对象提供一种代理以控制对这个对象的访问。package Proxy;public interface Object { void action();}package Proxy;public class ObjectImpl implements Object { @Override public void action()原创 2013-11-10 14:29:21 · 1108 阅读 · 1 评论 -
数据结构与算法系列-线性表-线式存储结构、链式存储结构
线性表的定义:线性表是由N个数据元素组成的有限序列,N为数据元素的个数。线性表是一种非常典型的线性结构举例:26个英文字母(A,B,C……Z)就是一个线性表线性表的顺序存储结构称为顺序表,顺序表是将线性表中的数据元素按其逻辑顺序依次存放在内存中一组地址连续的存储单元中,即把线性表的相邻元素存在相邻的内存单元中。 顺序表的特点是逻辑上相邻的两个元素在物理位置也原创 2013-11-10 16:11:21 · 2131 阅读 · 1 评论 -
Java内存管理:Java内存区域 JVM运行时数据区
1、Java内存区域概述1-2、C/C++与Java程序开发的内存管理在内存管理领域,C/C++程序开发与Java程序开发有着完全不同的理念:1、C/C++程序开发自己管理内存是一项基础的工作;自已分配内存,但也得自己来及时回收;比较自由,但多了些工作量,且容易出现内存泄露和内存溢出等问题;2、Java程序开发JVM管理内存,不需要自...转载 2018-07-25 11:26:35 · 234 阅读 · 0 评论 -
Java 类加载机制
(1)阿里的面试官问我,可以不可以自己写个String类答案:不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了;(2)能否在加载类的时候,对类的字节码进行修改答案:可以,使用Java探针技术,可以参考:Java探针-Java Agent技术-阿里面试题阅读目录 什么是类加载器 类加载器与类的”相同“判断 类...转载 2019-02-22 11:29:49 · 273 阅读 · 0 评论 -
JAVA系列-设计模式-策略模式
定义:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。package Strategy;/** * 定义所有支持的算法的公共接口。Context使用这个接口来调用某ConcreteStrategy定义的算法。 * @author Administrator * */public abstract class St原创 2013-11-10 14:43:43 · 918 阅读 · 0 评论 -
JAVA系列-设计模式-单例模式
定义:保证一个类仅有一个实例,提供一个访问它的全局访问点。单例模式有一下特点:1、单例类只能有一个实例。2、单例类必须自己自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。package Singleton;/** * 单列模式的七种写法 * * @author Administrator * */// 1(懒汉,线程不原创 2013-11-10 14:33:39 · 900 阅读 · 0 评论 -
JAVA系列-设计模式-备忘录模式
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 这样以后就可将该对象恢复到原先保存的状态。类图: 图片来自http://blog.youkuaiyun.com/zhengzhb/article/details/7697549package Memento;/** * 备忘录存储原发起对象的内部状态。 * @author Admin原创 2013-11-09 12:07:38 · 945 阅读 · 0 评论 -
JAVA系列-设计模式-适配器模式
适配器举例相信很多人都知道什么是显卡,也有很多人知道显卡的本名——图形适配器。恩,是的,正好这回说说Apater模式,就拿显卡来例子来分析一下Adapter模式。我们知道显示器(Client)是用来显示图形的,它是不能显示数据,它只能够接受来自图形发送设备Target的信号。可是我们手头上只有CPU(Adaptee)这个产生各种描述图形的数据的数据发送器。我们需要将这些数据让显示器进行显示原创 2013-11-09 10:24:53 · 962 阅读 · 2 评论 -
JAVA系列-设计模式-桥接模式
主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。该模式的目标是通过把高层的抽象和底层的实现分开,分别构建自己的类层次结构,并通过实现部分的接口将两部分进行桥接,从而达到高层抽象和底层实现可以独立的方便扩展的目的。其核心是分离,和委托。package Bridge;public abstr原创 2013-11-09 10:38:14 · 855 阅读 · 0 评论 -
JAVA系列-设计模式-建造者模式
将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。package Builder;public class Man extends Person {}package Builder;/** * 表示被构造的复杂对象。 * ConcreteBuilder创建该产品的内部表示并定义它的装配过程。 包含定义组成部件的类,包原创 2013-11-09 10:46:35 · 794 阅读 · 0 评论 -
JAVA系列-设计模式-责任链模式
责任链模式定义:在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。下面代码中人事、项目组长、项目经理形成一条责任链。请求在这个链上传递,直到链上的某一个对象决定处理此请求pa原创 2013-11-09 10:55:12 · 1604 阅读 · 0 评论 -
JAVA系列-设计模式-命令模式
定义:将来自客户端的请求传入一个对象,无需了解这个请求激活的 动作或有关接受这个请求的处理细节。这是一种两台机器之间通讯联系性质的模式,类似传统过程语 言的 CallBack功能。优点:解耦了发送者和接受者之间联系。 发送者调用一个操作,接受者接受请求执行相应的动作,因为使用Command模式解耦,发送者无需知道接受者任何接口。代码:package原创 2013-11-09 11:06:43 · 875 阅读 · 0 评论 -
JAVA系列-设计模式-组合模式
定义:将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性。"package Component;import java.util.List;public abstract class Employer { public List employers; private String name; pu原创 2013-11-09 11:14:44 · 1198 阅读 · 2 评论 -
JAVA系列-设计模式-装饰者模式
这个比较好理解。定义:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。package Decorator;/** * 定义一个对象接口,可以给这些对象动态地添加职责。 * @author Administrator * */public interface Work{ public void insert();原创 2013-11-09 11:18:19 · 852 阅读 · 0 评论 -
JAVA系列-设计模式-工厂模式
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。这个我们平时接触的比较多了,直接看代码吧。 注意要区分和抽象工厂的区别。抽象工厂设计模式 http://blog.youkuaiyun.com/sdn_superuser/article/details/14643589package Factory;/** 定义工厂方法所创建的对象的接口。 * @author原创 2013-11-09 11:35:35 · 998 阅读 · 1 评论 -
JAVA系列-设计模式-解释器模式
定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。package Expression;/** * 声明一个抽象的解释操作,这原创 2013-11-09 11:22:16 · 912 阅读 · 0 评论 -
JAVA系列-设计模式-外观模式
定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这些子系统更加容易使用。概述:我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。例子1:一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所有电器设备,原创 2013-11-09 11:30:09 · 998 阅读 · 0 评论 -
JAVA系列-设计模式-享元模式
定义:运用共享技术有效地支持大量细粒度对象在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。在Flyweight模式中,由于要产生各种各样的对象,所以在Flyweight(享元)模式中常出现Factory模式。Flyweight的内部状态是用来共享的,Flyweight factory负责维护一个对象存储池(Flyweight Pool)来存放内原创 2013-11-09 11:45:45 · 984 阅读 · 0 评论 -
JAVA系列-设计模式-迭代器模式
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。我们的List遍历就是用迭代器模式实现的。类图package Iterator;/** * 迭代器定义访问和遍历元素的接口。 * @author Administrator * */public interface Iterator { Object next();原创 2013-11-09 11:51:13 · 1002 阅读 · 0 评论 -
JAVA系列-设计模式-中介者模式
定义:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。类图:举例:在一个公司里面,有很多部门、员工(我们统称他们互相为Colleague“同事”),为了完成一定的任务,“同事”之间肯定有许多需要互相配合、交流的过程。如果由各个“同事”频繁地到处去与自己有关的“同事”沟通,这样肯定会原创 2013-11-09 12:02:25 · 1588 阅读 · 0 评论 -
Alibaba开源的Java诊断工具-Arthas
在看Arthas之前, 我们先看以下一种场景, 比如 线上系统在大流量访问的情况下 系统变得卡顿, 这时候我们可以从以下几方面去排查问题1: ps -ef | grep java 查看我们程序的线程号。 假设pid 为 12342:jmap -heap 1234 查看我们JVM各代(Eden 、Old Generation、Perm Generation ) 的大小3:jma...原创 2019-02-26 14:32:49 · 570 阅读 · 0 评论