- 博客(53)
- 收藏
- 关注
原创 Java基础之理解Annotation
Java基础之理解Annotation 一、概念 Annontation是Java5开始引入的新特征。中文名称一般叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。 更通俗的意思是为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,...
2016-12-09 15:08:15 154
原创 类加载机制
类加载机制问题:1、什么是类加载?什么时候进行类加载?2、什么是类初始化?什么时候进行类初始化?3、什么时候会为变量分配内存?4、什么时候会为变量赋默认初值?什么时候会为变量赋程序设定的初值?5、类加载器是什么?6、如何编写一个自定义的类加载器?类加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它...
2016-09-01 11:16:43 162
原创 java基础之泛型
泛型的定义:泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。 泛型的特点: Java语言中的泛型则不一样,它只在程序源码中存在,在编译后的字节码文件中...
2016-08-31 13:54:36 158
原创 HierarchicalBeanFactory:分层的Bean工厂
Sub-interface implemented by bean factories that can be part of a hierarchy. HierarchicalBeanFactory 表示的是这些 Bean 是有继承关系的,也就是每个Bean 有可能有父 Bean public interface HierarchicalBeanFactory extend...
2016-08-30 15:47:14 1202 2
原创 BeanFactory:bean的管理者
public interface Aware {//Aware类超接口标记,表明这个bean能够被spring容器框架的回调式方法通知,//有且只能有一个方法,并且方法参数只能有一个且没有返回值(void)//所有BeanFactory的实现类应该支持尽量支持生命周期中的接口} BeanFactory是Spring实现依赖注入的核心接口.提供应用的统一配置注册功能,实...
2016-08-30 15:38:17 174
原创 MVC中Push与Pull模式
MVC中Push与Pull模式 In case of Push-MVC the data (Model) is constructed and given to the view layer by the Controllers by putting it in the scoped variables like request or session. Typical example is...
2016-08-19 18:16:03 381
原创 gof23种设计模式之总结
总体来说设计模式分为三大类:创建型模式:共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式:共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式:共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 以作用划分:创...
2016-07-28 15:12:20 200
原创 快速排序算法
快速排序算法 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。 一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i...
2016-07-28 15:11:37 111
原创 插入、冒泡、直接选择排序算法
插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到...
2016-07-28 15:11:17 104
原创 堆排序
二叉树的存储结构 二叉树是非线性结构,即每个数据结点至多只有一个前驱,但可以有多个后继。它可采用顺序存储结构和链式存储结构。1.顺序存储结构 二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法从树根起,自上层至下层,每层自左至右地给所有结点...
2016-07-28 15:06:58 161
原创 分配排序 桶排序与基数排序
基本演化顺序是:分配排序——桶排序——基数排序分配排序是最基本的为所有可能都分配一个存储位置的方法桶排序是在分配排序的基础上为相同元素或在同一个范围内的元素分配同一个桶,因此每个桶可以看做一个变长的链表基数排序是将元素分等级从最次级到最高级不断进行递进的排序过程 桶排序(在这里与分配排序一致:因为不存在重复元素且不划分范围)这是迄今为止最快的一种排序法,其时间复杂...
2016-07-28 09:41:39 201
原创 归并算法排序
归并算法排序 算法思想1.简单地将原始序列划分为两个子序列2.分别对每个子序列递归排序3.最后将排好序的子序列合并为一个有序的序列,即归并过程 归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1;否则将第二个有序表中的元素a[j]复制到r[k]中,并令j和k分别加上1,...
2016-07-26 15:20:53 95
原创 Shell算法
希尔排序(Shell Sort) 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算...
2016-07-26 11:32:42 231
原创 Java中创建对象的5种方式
Java中创建对象的5种方式Java中有5种创建对象的方式,下面给出它们的例子还有它们的字节码 如果你运行了末尾的的程序,你会发现方法1,2,3用构造函数创建对象,方法4,5没有调用构造函数。1、使用new关键字这是最常见也是最简单的创建对象的方式了。通过这种方式,我们可以调用任意的构造函数(无参的和带参数的)。Employee emp1 = new Employee...
2016-07-22 15:36:19 95
原创 Synchronized深入理解
深入理解 Synchronized 原理前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案...
2016-06-17 17:18:41 239
原创 thread之join
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。或者说join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行。方法:t.join(); //使调用线程 t 在此之前执行完毕。t.join(1000); //等待 t 线程,等待...
2016-06-16 16:57:00 117
原创 设计原则之Hollywood principle
单一职责原则(Single Responsibility Principle)定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T...
2016-06-15 16:35:15 690
原创 设计模式基础之类关系
类与类之间的表示关系 依赖关系 :简单的理解,依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖。表现在代码层面,为类B作为参数被类A在某个method方法中使用。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。 关联关系 :关联体现的...
2016-05-23 16:23:52 101
原创 设计模式之Reactor(Dispatcher、Notifier)
[align=center][size=x-large]Reactor设计模式[/size][/align]reactor设计模式,是一种基于事件驱动的设计模式。将一个或多个客户的服务请求分离(demultiplex)和调度(dispatch)给应用程序。[img]http://dl2.iteye.com/upload/attachment/0111/7402/18cd3423-f0f...
2016-05-20 14:10:27 790
原创 基于注解驱动的 Spring MVC之Controller
概述继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能。现在你无须让 Controller 继承任何接口,无需在 XML 配置文件中定义请求和 Controller 的映射关系,仅仅使用注解就可以让一个 POJO 具有 Controller 的绝大部分功能 —— Spring MVC...
2016-05-19 13:34:51 106
原创 设计模式之观察者模式之源-监听器(Source/Listener)模式
观察者模式 源-监听器(Source/Listener)模式 事件监听器模式重要的三个概念:事件+事件监听器+事件源 $("#div").addEventListener("click",function(event){}); 事件源:$("#div") 即id = div的html元素 事件:click事件对应的对象 事件监听器:function(event...
2016-05-19 10:12:32 389
原创 设计模式之中介者模式
中介者模式假如没有总经理,下面六个个部门,财务部、市场部、研发部,财务部要发工资,让大家核对公司需要跟市场部和研发部都通气,市场部要接个新项目,需要研发部门处理技术,需要财务部出资金,市场部跟各个部门打交道,虽然只有六个个部门,但是关系非常乱实际上,公司有总经理,各个部门有什么事情都通报给总结里,总经理再通知各个相关部门这就是一个典型的’中介者模式“,总经理起到一个中介、协调的作...
2016-05-19 10:09:42 69
原创 设计模式之责任链模式
责任链模式场景: 公司里面,报销个单据需要经过流程;申请人填单申请,申请给经理;小于1000,经理审核;超过1000,交给总经理审批总经理审批通过;结构抽象处理者角色(Handler:Approver):定义一个处理请求的接口,和一个后继连接(可选)具体处理者角色(ConcreteHandler:President):处理它所负责的请求,可以访问后继者...
2016-05-19 09:25:43 111
原创 设计模式之访问者模式Visitor
访问者模式 实现思路:向对象结构类中添加元素,然后定义多种访问者,使用对象结构类去接受访问者即可。 六个角色:抽象访问者(Visitor):抽象出访问元素的动作,该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色,这样访问者就可以通过元素角色给具体访问的具体元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它具体访问者(ConcreteV...
2016-05-19 09:24:47 113
原创 设计模式之观察者模式Observer
场景网站上很多人订阅了 java 主题的新闻,当有这个主题新闻时,就会将这些新闻发给所有订阅的人把多个订阅者或客户称之为观察者;需要同步给多个订阅者的数据封装到对象中,称之为目标观察者模式主要用于 1:N 的通知,当一个对象(目标对象Subject或Observable)的状态变化时,他需要及时告知一系列对象(观察者对象,Observer),令他们做出响应通知...
2016-05-18 09:29:29 97
原创 设计模式之原型模式
原型模式 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式就是java中的克隆技术,以某个对象为原型,复制出新的对象,显然,新的对象具备原型对象的特点优势有:效率高可以直接克隆,避免了重新执行构造过程步骤克隆类似于new,但是不同于new。nei创建新的对象属性采用的是默认值,克隆出的对象的属性值完全和原型对象相同,并且克隆出的新对象改变不会影...
2016-05-18 09:28:46 93
原创 设计模式之适配器模式Adapter
适配器模式Adapter什么是适配器模式?将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作 模式中结构(以电脑和键盘为例)目标接口Target:客户所期待的接口,目标可以是具体或抽象的类,也可以是接口(USB)需要适配的类Adaptee:需要适配的类或适配者类 (键盘)适配器Adapt...
2016-05-18 09:28:17 130
原创 设计模式之工厂模式
工厂模式本质实例化对象,用工厂方法代替new操作将选择实现类,创建对象同意管理和控制,从而将调用者跟我们的实现类解耦 实现创建者和调用者的分离三种工厂方式简单工厂模式:用来生产同一等级结构中的任意产品,对于增加的新产品,需要修改已有代码工厂方法模式:用来生产同一等级结构中的固定产品,支持增加任意产品抽象工厂模式:用来生产不同产品族的全部产品,对于增加新...
2016-05-18 09:27:14 75
原创 设计模式之创建者模式Builder
创建者模式场景我们要建造一个复杂的产品,比如:神州飞船、Iphone。这个复杂的产品的创建,有这样一个问题需要处理装配这些字子组件是不是有个步骤问题实际开发中,我们所需要的对象构建是,也非常复杂,有很多步骤需要处理时 建造模式的本质 分离了对象子组件的单独构造(有Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象,这个模式适用于...
2016-05-18 09:27:13 83
原创 设计模式之单例模式
单例模式核心作用保证一个类中只有一个实例,并且提供一个访问该实例的全局访问点 项目中的配置文件,一般也只有一个对象,没必要每次都都new一遍,配置文件不容易改变Spring中bean的加载,以及控制器对象也是单例模式 单例模式五种实现方式饿汗式:编程安全,调用效率高。但是不能延时加载懒汉式:线程安全,调用效率不高,但是可以延时加载双重检测锁式(由于...
2016-05-17 14:08:22 80
原创 设计模式之桥接模式bridge
设计模式之桥接模式bridge 场景商城系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售的问题?这个场景中有两个变化维度:电脑类型、电脑品牌 多层继承结构实现问题 扩展性问题(个数膨胀问题)如果要增加一个新的电脑类型智能手机,则要增加各个品牌下面的类如果要增加一个新的品牌,也要增加各种电脑类型的类违反单一职责原则一个类:联想笔记...
2016-05-17 14:07:38 145
原创 设计模式之外观模式Facade
外观模式核心 为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用 代码public class Client { //服务员直接就给充好咖啡,放到面前。这就是享受生活 public static void main(String[] args) { Waiter wait = new...
2016-05-17 14:07:13 92
原创 设计模式之备忘录模式memento
备忘录模式 就是保存某个对象内部状态的拷贝,这样以后就可以将对象恢复到原先的状态结构 源发器类originator:就是我们的业务模型,它本身可能有非常多的字段(或叫做变量)。一个字段的值发生了改变,我们可以认为Originator的状态就发生了变化。Originator里面有一个IMemento类型的字段用来记录状态的变化(它相当于一个记事本,用来备忘的)备忘录类M...
2016-05-17 14:06:44 86
原创 设计模式之装饰者模式Decorator
装饰者模式职责动态的为一个对象增加新的功能装饰模式是一种用于代替继承的技术,无须通过类继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀 装饰者模式隐含的是通过一条条装饰链去实现具体对象,每一条装饰链都始于一个Componet对象,每个装饰者对象后面紧跟着另一个装饰者对象,而对象链终于ConcreteComponet对象...
2016-05-17 14:06:10 84
原创 观察者模式与发布/订阅模式区别
观察者模式与发布/订阅模式区别 在翻阅资料的时候,有人把观察者(Observer)模式等同于发布(Publish)/订阅(Subscribe)模式,也有人认为这两种模式还是存在差异,而我认为确实是存在差异的,本质上的区别是调度的地方不同。观察者模式比较概念的解释是,目标和观察者是基类,目标提供维护观察者的一系列方法,观察者提供更新接口。具体观察者和具体目标继承各自的基类,...
2016-05-15 23:09:42 92
原创 java基础之小数问题
1.关于取整运算 private static void getInt() { double i=2, j=2.1, k=2.5, m=2.9; System.out.println("------------------取整-------------------"); System.out.println("舍掉小数取整:Math.floor...
2016-05-12 15:11:42 105
原创 设计模式之组合模式composite
组合模式内容把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象 核心 抽象构件(Component)角色:定义了叶子和容器构件的共同点叶子(Leaf)构件角色:无子节点容器(Composite)构件角色:有容器特征,可以包含子节点结构图: 组合模式工作流程分析组合模式为处理树形结构提供了...
2016-05-10 13:57:53 80
原创 设计模式之享元模式
场景:内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的对象,我们可以通过享元模式,节省内存核心享元对象能够做到共享的关键是区分了内部状态和外部状态内部状态:可以共享,不会随环境变化而改变外部状态:不可以共享,会随环境的变化而改变 简单享元结构 抽象享元角色:为具体享元角色规定了必须实现的方法,而外蕴状态就是以参数的形式通过此方法传入。在Jav...
2016-05-10 10:56:51 65
原创 设计模式之迭代器模式
迭代器模式提供一种可以遍历聚合对象的方式,又称cursor模式。迭代器模式(Iterator)就是分离了聚合对象的遍历行为,抽象出一个迭代器来负责这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部数据。聚合对象:存储数据迭代器:遍历数据 结构图聚合抽象类一般以内部类的方式存储 /** * 定义迭代器接口 */public i...
2016-05-09 17:02:35 83
原创 设计模式之中介者模式
中介者模式假如没有总经理,下面三个部门,财务部、市场部、研发部,财务部要发工资,让大家核对公司需要跟市场部和研发部都通气,市场部要接个新项目,需要研发部门处理技术,需要财务部出资金,市场部跟各个部门打交道,虽然只有三个部门,但是关系非常乱 假如没有总经理,六个部门的关系非常混乱,实际上公司都总结里,各个部门有什么事情都通报到总经理这里,总经理再通知各个相关部门,我们可以引入...
2016-05-09 10:51:42 91
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人