自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 数据库索引学习总结

任何数据结构都是满足特定的需求而出现的。数据库表的数据在存储时,可能是无序的,分散的,这样的好处是灵活,利用率高。然后却不利于查询,为了在查询的时候,为了大大的提高查询效率,就需要有一个特定的数据结构满足查找的特点,这种数据结构就是数据库索引。这个学习笔记不描述聚簇,唯一等索引的概念,主要关注数据结构。但也不记录严格的数据结构的形状、定理等,主要还是从理解角度进行总结。1.二叉树 二叉树不直接作为

2016-08-22 17:20:34 611

原创 分布式基础之二-分布式桥梁zookeeper

想一想在自己单位开发的系统,属于比较传统的系统,是不是没有用到分布式呢?其实不然,系统之间的调用已经非常多了,比如ILOG的调用,征信系统的查询,信贷管理系统,账务系统的调用,都是系统间的调用,做一个项目、一个应用,涉及到这么多系统,把这些接口都看做服务的话,这肯定是属于分布式的。 只是,从感觉上,这“很不分布式”。为什么?因为:1.我们的视角,是按“系统”这个层面去划分,而不是按“服务”这个层面去

2016-07-26 22:46:17 580

原创 分布式-基础之一-分布式系统调用

在独立环境中,系统的功能调用,就是自然的直接调用,一个模块调用另一个模块,这个我们都能理解。但如果是在分布式环境下,涉及到系统之间的调用,那么问题就来了。 这个是我目前学习时接触到的概念又多,又混乱,又重叠的一个基础知识,网上的释义和帖子大多也不完整,有些简直的引人入坑….. 整整耗费了自己两个星期的时间,查阅比对资料,阅读程序,最终总结出来的成果如下,虽然可能也不完全正确,但是我相信至少在整体方

2016-05-13 09:58:39 5501

原创 设计模式(12)--State状态模式&Strategy策略模式

一个对象根据不同的状态,执行不同的行为。我们如何去编写执行行为的方法呢?用逻辑判断语句判断状态不同而执行不同的代码?显然不会选择这种耦合的复杂的逻辑。解耦是显而易见的,即把不同状态下的执行代码分离开来。从而便有了状态模式。 状态模式的要点: 1.把不同状态的行为处理抽象为Handle方法,并在抽象出的状态类中设置这个方法。 2.对象必须持有这个状态类,并设置一个初始的具体状态类,例如Con

2016-02-25 16:44:28 788

原创 设计模式(11)--Mediator中介者模式&Observer观察者模式

一、中介者模式理解起来很简单,即多个对象之间需要交互,那么这些对象间的交互就会形成网状结构。引入中介者,各对象根本不知道其它对象的存在,他们只需要把信息发送给中介者,由中介者来控制吧信息传递给哪些对象。所以,就变成了一个星形的结构。 中介者模式的目的很明显,就是为了解耦,但是缺点,也是比较明显,那就是中介者类本身会变得复杂,牵扯过多。所以,如果网状结构不是非常复杂,那么就不一定要考虑中介者。一旦使

2016-02-24 17:17:36 1312

原创 设计模式(10)--Command命令模式

从本篇开始进入到行为类型的设计模式。 行为类型的模式有一些先简略带过。比如很复杂的解释器模式,这个在实际应用中出现的较少。 另外一个是职责链模式,模式本身是很容易理解的,一系列的处理类遵循一样的接口,都有者其后继处理类successor和自己的处理方法。对于客户端调用,由职责链的第一个类开始执行处理方法,判断自己是否能够执行或者传给下一个successor.客户端和链上的任何一个类只需要知道把请

2016-02-19 16:46:37 476

原创 设计模式(9)--Proxy代理模式

代理模式是一个很重要的模式,因为大名鼎鼎的AOP,以及Webservice等都与代理模式有关系。代理模式的实质,是通过代理类来隐藏实际类(或者叫委托类),从而控制实际对象的访问。代理模式的用处,可以用来封装webservice形式的远程地址调用;可以用来预置对象的外观,避免直接加载大对象的耗时(有兴趣可以仔细研究浏览器代理);可以用于权限安全控制;再就是AOP切面增强。 PS:WebServic

2016-02-16 17:27:08 445

原创 设计模式(8)--flyweight 享元模式

flyweight意为轻量,但是用在设计模式的翻译中变成了享元。这个单词名字确实不好取。这两个意思,其实都能表达该模式的意义。 flyweight模式,实际上的目的就是控制对象的数目。我们已经见识过很多控制对象数目的方法,例如池化,单例,缓存,常量表等等。 flyweight主要是通过将共性的行为和状态共享,来达到控制对象的目的,现在即可以明白轻量和享元这两个词的意思了。 flyweigh

2016-02-15 17:17:03 468

原创 设计模式(7)--Decorator 装饰模式

装饰模式也是一种日常编码中经常会不自觉采用的设计模式。其核心理念是:一个类有自己的核心功能和职责,且这个类的代码相对已经固定,不希望改动维护。现在要为这个类加入一谢额外的功能,这些功能不是一定必须的,而且可能是动态添加的,根据实际要求加入某一种或几种。但是不管加入什么额外功能,客户眼中始终还是在操作这个核心功能类。这个时候,我们的处理方式就是,为每种动态的功能,单独的提供一个类,来完成对核心类的“装

2016-02-02 17:15:39 541

原创 设计模式(6)--Bridge 桥接模式

这个模式在实际开发中应该是使用非常多的,不知不觉中我们就使用了桥接模式。我们拿电脑举例(Apple)除外。如果让你动手攒一个台式机,你可以上京东,在电脑产品体系里选择各种配件,组装出一台电脑。那么这个各种配件和电脑之间,是什么关系呢?显然是has-a而不是is-a的关系。这个道理即是如果能使用合成则优先考虑合成而非继承,除非确实是is-a的关系。 假如你用继承is-a的关系来表示整个电脑的产品体系,

2016-02-01 15:16:54 515

原创 设计模式(5)--Adapter 适配器

前面4种模式都是与创建对象相关,适配器开始,是与程序结构相关的模式,即以合理的结构组织程序达到设计模式准则。 从前,Adaptee实现的是OldTarget接口,实现了SpecialRequest()方法,Adaptee工作的很好。突然,改变来了,新的软件版本发布,集合的遍历器变成了新的iterator。接口也变成了Target,Target接口里给出的是request方法。 从新软件版本使

2016-01-29 16:40:18 474

原创 设计模式(4)--Builder 建造者(构建器)

Builder和工厂模式一样,都是创建对象类型的模式。同样是创建类型的模式,其区别在于:Builder是应用于更为复杂的对象创建过程。举例说明:生产一辆玩具车,一个工厂一个方法就搞定了。而要生产一辆汽车,那部件太多了,部件不能少,且把所有这些部件组装在一起,也要有一套非常繁琐的流程和顺序。这个时候,工厂模式中的工厂接口,就不是只写一个创建产品的抽象方法就够了。你必须考虑到使这个接口里具备一系列必不可

2016-01-28 16:51:31 613

原创 设计模式(3)--Prototype 原型模式

受spring配置文件bean的属性非单例即prototype的影响,老是不自觉的认为两种模式是对立的。。。事实上,单例的对象确实和原型模式冲突,但是原型模式的重点绝不是单例模式的对立面。原型模式的重点在于:指定一个类型作为原型,并使用Clone()方法去创建这个类型的对象实例。和工厂模式一样,也是一种创建对象的方式。在实际应用中,原型模式经常是结合工厂等模式出现,比如在factory的实现中使用c

2016-01-25 17:05:11 533

原创 设计模式(2)--工厂模式

工厂指的是创建对象的工厂,工厂模式是一种创建对象的模式,使用factory.createXXX你就能获得想要的对象。那么为什么要使用工厂模式呢?有很多足够重要的理由:实际开发中很多情况并不能只用一句new就能得到想要的对象。熟悉的比如spring中各种bean之间的相互依赖,你要得到一个service,不光只new service,还需要new 业务逻辑对象,new dao对象。所以spring使

2016-01-21 17:22:22 421

原创 Java 注解 Annotation

注解和类,接口一样,也是一种java元素。只是注解比较特殊,其并不会改变程序的语义逻辑,只是当做一种注解,来提供一些支持辅助的作用。那么注解到底有什么用?最常用的功能有两个:1.规范代码写法,结合IDE工具等可以预防一些错误。2.结合反射实现一些代码控制目的。还有一个功能:3.使用注解对代码进行文档化(不能说不重要,但是在实际工作中往往会忽略)。我们先来看最常用的一个注解@override,这个注解

2016-01-07 16:24:07 326

原创 Java 泛型

泛型即为类、方法、变量等提供“类型参数”,都是使用<>包括起来。意思是告诉系统我需要定义一些类型参数了,接下来我会使用这些类型参数。基础知识不再详细列出,仅列出一些值得注意和较难理解的问题。为什么要使用泛型? Java中,使用泛型最主要的原因是增加类型的安全性,以及简化代码避免显式的强制类型转换。 从性能上说Java泛型并没有加快,这里涉及到运行时擦除概念和编译器默认加入的类型转换。 所以说Ja

2015-12-14 18:12:34 350

原创 设计模式(1)--单例模式(singleton)

单例模式是面试中问到的最多的模式问题之一。什么是单例,为什么要用单例,单例模式的不合理的实现方法问题,这里就不讨论了。下面将深入学习单例模式的一些理解记录下来(详细的解释我觉得这篇文章写的很好深入浅出单例模式):1.有一个问题在写单例代码的时候一定要记住,那就是不管什么写法,必须写私有的构造函数,否则你无法真正阻止类被意外的实例化。私有构造函数也防止了继承的存在。2.synchronized,vol

2015-12-01 18:07:31 534

转载 JVM(3)--垃圾收集

垃圾收集设计到算法和源码,这里只在概念上进行总结: 根据上一篇文章的内容,我们知道方法区和堆是垃圾收集的对象。这其中,方法区是类信息,堆是对象数据。对堆的收集更为频繁和有效,而方法区中的垃圾收集条件严格,收集的成功率也不高。但是方法区中的类信息,由于现在的J2EE大量使用反射,自定义ClassLoader等,使得方法区的信息频繁的加载,所以卸载也是必须的!垃圾收集的思路老的思路是计

2015-11-26 16:38:44 501

转载 JVM(1)--JVM的概念明确以及JVM生命周期

在深入了解JVM之前,必须先把一些概念搞清楚以免在学习理解时出现偏差和困扰。 *JVM有自己的规范,设计者抽象出JVM的体系结构并加以规范的定义,而实现者必须遵从这些规范来完成JVM的具体实现。有很多种JVM的实现,这里不展开了。 *我们常说的JVM是指一种具体的JVM实现,比如自己的一台机器安装了一个JVM环境,就是一个具体的实现。 *Java虚拟机实例。一定要明白这个概念,在运行时,JVM

2015-11-25 14:24:03 430

转载 JVM (2)-- JVM内存模型

本内容由学习《深入JAVA虚拟机》一书和众多博文归纳而成,引用《深入JAVA虚拟机》中的图例,JAVA虚拟机可以描述成如下的体系结构 class文件由ClassLoader(系统实现或自定义)装载进行JVM。根据初始化各个步骤在方法区,堆,Java栈,PC寄存器(又叫程序计数器)放置相应的数据。随后通过执行引擎来执行Java程序。在执行过程中如果要使用native方法,那么jvm就去连接并直接

2015-11-24 19:42:22 452

原创 Java中的位运算

要搞清楚移位运算,首先要搞清楚字节数。Jvm保证了原始类型的字节数不受操作系统影响,无论是16位,32位或64位操作系统。 boolean 1 位,char 16 位 我们常说的一个字符占两个字节,byte 8 位 即一个字节short 16 位,int 32 位,long 64 位,float 32 位,double 64 位。 一般数值都是带符号的,从左往右数,数值类型的第一位是表示正负的,

2015-11-24 13:51:25 551

原创 Java内部类学习总结

内部类即在一个类的内部编写额外的class。编写完以后会生成OutterClassName$InnerClassName(匿名内部类用数字递增)的文件。外部类只能使用public,final,默认修饰符。但是内部类还可以使用private,static,protected等等修饰符。内部类也是一种编程方式,为什么要使用内部类呢? *把相互有关联的对象组织到一起,而且外部用不到的对象又可以完全

2015-11-23 16:49:36 445

原创 Java 回调的概念

回调是一种代码的编写方法。我们最正常的编码逻辑是: 类A需要调用类B的方法b,根据b的返回值,类A再去做一系列赋值啊处理啊之类的工作。 而使用回调的写法: 类A可以把这些后续处理写成一个方法a,然后把A的引用传递给方法b,方法b在做完工作后,就可以直接用A.a来完成A后续的处理工作。为什么要使用回调呢?下面举一些例子: 1.ajax的写法中我们经常会看到callback,因为发送ajax的请

2015-11-23 15:30:12 514

原创 Java零散知识点学习记录

1.label标签:标签结合continue和break使用,表示跳至标签所指示的位置继续执行代码。常见在嵌套循环中,if判断后跳过某些语句等。2.方法的重载是不能通过返回值的不同来实现的,虽然可以通过参数顺序的不同来实现,但是这不是一种推荐的做法。3.我们知道原始类型会有默认的固定的初始化值。比如int i; i会有默认值0。 这个规则只在作为类成员时生效。如果在其他的代码中定义了原始类型但未初始

2015-11-20 16:39:36 574

原创 Java对象的创建,持有Java对象,区分对象和类。

首先弄清楚两个关键字: static静态。可以修饰内部类,成员变量,方法,代码块。static和实例化是互斥的,因为他表示独一份。不管是内部类,变量,方法,还是代码块,都只存在一份于Java虚拟机中,不依附对象的实例化而存在。(代码块的意义是只执行一次,不是说存在于虚拟机中) final不可修改。final在修饰原始数据类型时即表示这个类型是个常量了,不会变。在修饰其它类型的变量时,实际上是表

2015-11-19 16:59:11 1049

原创 Java中的抽象(Abstract)学习总结

抽象Abstract:在Java程序设计中,利用Abstract关键字来进行抽象,抽象的目的或者说好处,是1.把对象的共性抽取出来,使得代码编写简洁,容易维护。2.定义一系列规范(方法),继承抽象类的实体类必须满足这些规范(实现抽象方法),这是复杂系统的基础。3.好的抽象应该就是现实世界的反映,把共性封装成抽象类,但又不存在于现实世界所以不可能实例化。

2015-11-19 15:46:14 8590 1

空空如也

空空如也

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

TA关注的人

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