- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 分布式-CAP与ACID原则
CAP、ACID对于深入理解分布式环境下技术方案设计选型有重要的知道作用,所以这里做了下整理。1. CAP原则 1.1 定义 CAP是“Consistency,Avalilability, Partition Tolerance”的一种简称,其内容分别是: (1)强一致性:即在分布式系统中的同一数据多副本情形下,对于数据的更新操作体现出的效果与
2015-03-29 15:27:09
6873
原创 日志传输工具-Flume实现原理及应用
Flume是Cloudera提供的一个分布式、可信任且弹性的系统,用于高效收集、汇聚和移动大规模日志信息从多种不同的数据源到一个集中的数据存储中心。所以可以把Flume当作一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统,支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。 Flume提供了从console、 RPC(Thrift,Avro)、text、tail(UNIX tail)、syslog(支持TCP和UDP等
2014-04-17 13:21:01
2851
原创 使用Maven创建web项目(tomcat热部署)
使用Eclipse构建Maven的SpringMVC项目1. 建立Maven项目创建后,添加src/main/webapp,如下:2. 配置Maven项目2.1 更改配置右键项目,Java Build Path -下面应该有4个文件夹。src/main/java,src/main/resources,src
2013-11-19 13:04:27
1779
原创 java reflect小记
以前都不知道反射到底有什么用处,最近查看下资料,发现反射在底层和框架中用的比较多,JAVA的反射是指,可以通过一个类名来探察这个类里面的信息,比如说类的属性名,属性名的修饰符,方法名,方法返回值,方法修饰符等等,反正除了方法体得不到,其他都可以用反射得到;反射还可以生成类的实例,通过这个实例定义属性,调用方法,特别是能调用私有的属性和私有的方法。下面用一个小例子来学下反射到底是怎么用的:先创建
2013-11-08 09:27:29
736
原创 eclipse项目打包,bat运行
Eclipse打包成jar,并用bat运行 以前用eclipse打包的时候,都是创建manifest文件,修改的时候比较麻烦,最近学到了一个比较好的方法,通过bat来运行,jar包升级的时候只要在外面替换就可以了,不需要重新打包,此次打包以lucene官网上的一个实例作为演示,具体步骤如下: 1.创建生成jar 搭建一个可以运行的java项目,在该
2013-11-08 09:24:32
5426
原创 探索--云计算是什么
1. 云计算是什么在我看来云计算就像如今的发电厂一样,向用户提供各种服务。我们都知道,我们用电、用水都是按使用量进行付款的,云计算也是这样,它可以按需向用户提供服务,收取一定得费用。从这里可以看出,与计算拥有两大特点:1. 提高用户体验以前我们使用软件的时候,需要从网上进行下载、安装,这非常的不方便,如今我们可以直接使用浏览器来进行使用这些软件,而且不用担心病毒等。在移动终端快速发
2013-11-08 09:20:15
829
原创 MySQL技术内幕--存储引擎
今日突然对于数据结构和索引感兴趣,所以研究了下mysql数据库, 参考书籍:MySql技术内幕--InnoDB存储引擎(Insinde Mysql:InnoDB Storage Engine) 参考文章:MySQL背后的数据结构和算法 http://www.cnblogs.com/rollenholt/articles/2424531.html目录: 1. My
2013-11-06 09:51:13
756
原创 JVM内存划分及管理
1. JAVA技术体系 我们可以把Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境。 另外,可把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment), JRE是支持Java程序
2013-11-06 09:42:18
736
原创 设计模式类型
设计模式分为创建模式、结构模式、行为模式这3种类型。1. 创建模式 1.1 Factory 1.2 Singleton 1.3 Builder 建造模式 1.4 Prototype 原型模式2. 结构模式 2.1 Facade 门面模式 2.2 Decorator 2.3 Composite 组合模式 2.4 Pro
2013-11-06 09:32:42
678
原创 elasticsearch中template介绍
template中规定了数据的存储格式、分片数量等信息,下边是一个elasticsearch中template例子:http://192.168.1.215:9200/_template/content_tplPUT{ "template" : "content_*", "settings" : { "number_of_shards" : 1
2013-11-05 12:43:45
14714
原创 elasticsearch基本概念
elasticsearch是一个分布式搜索框架,包含分布式搜索、分布式索引、零配置、自动分片、索引自动负载、自动发现、restful风格接口、准实时搜索。1. 名词解释 (1) 节点(node) 每一个运行实例称为一个节点,每一个运行实例既可以再同一台机器上,也可以在不同的机器上,所谓运行实例,就是一个服务器进程。在测试环境内,可以再一台服务器上运行多个服务器进程,在生产环
2013-11-05 12:37:24
1323
原创 WebService初识
Webservice是一个web服务体系,它为其他应用程序提供数据与服务,各应用程序通过网络协议和规定的一些标准数据格式来访问webservice。 webservice三种最普遍的实现方式是:远程过程调用(RPC) ---- 远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。其中RMI是RPC在java环境的一种实现形式。面向服
2013-11-05 12:28:10
812
原创 REST架构风格
1. REST概念介绍 REST是一种架构风格,由一组相互协作的架构约束来定义。可以参考下Fielding博士的论文《架构风格与基于网络的软件架构设计》。1.1 REST的5个关键词资源(Resource) 一种看待服务器的方式,将服务器看作是由很多离散的资源组成,由一个或多个URI来标识。资源的表述(Representation)一段对于资源在某个特定时刻的状态的描述,资源的
2013-11-05 12:26:39
1227
1
原创 OSGI初识
1. OSGI介绍1.1 OSGI概念 OSGI的英文全称是Open Service Gateway Initiative(开放式地服务网关协议),OSGI是一个标准,它致力于提供给java项目一个模块化的底层环境,以及一些列通用的服务,用户权限控制服务,登录服务,数据库查询服务。所以可以把这些服务做成一个个bundle,以便可以被重复使用。 和普通的JVM程序相比,OSGI的
2013-11-05 12:25:20
942
原创 对象分析方法
以下是对分析方法的一些说明:1. 一切都是对象 在面向对象的眼里,一切有名字的东西都是对象,都应当使用对象的观点来看待它、分析它,哪怕这个东西的名字叫某某业务流程,它也仍然应当看作是一个对象,而不是一个过程。这意味着,无论什么时候都应该采用接下讲述的一些观点和方法来看待和分析事物。2. 对象都是独立的 对象与对象之间是天然独立的,只是在某个特定的场景下,它们的某一个特定
2013-11-05 11:46:49
1684
原创 类图
1. 类图实例 下面这张UML图,比较形象的展示了各种类图关系: 2. 类与类之间的关系 各种关系的强弱顺序:泛化=实现>组合>聚合>关联>依赖。 (1) 泛化(Generalization) 这是一种继承关系,它指定了子类如何拥有父类的所有特征和行为。 (2) 实现(Realization)
2013-11-05 11:44:31
625
原创 UML
参考书籍《大象-Think in UML》1. 什么是UML UML是一种建模用的语言,它定义了一些建立模型所需要的、表达某种特定含义的基本元素,这些元素称为元模型,例如用例、类等。 另外,UML还定义了这些元模型互相之间关系的规则,以及如何用这些元素和规则绘制图形以建立模型来映射现实世界,这些规则和图形称为表示法或试图(View)。2. 从现实世界到业务模型
2013-11-05 11:42:49
824
原创 面向对象与面向过程
1. 面向过程与面向对象 很多人把面向过程归纳为结构化程序设计、DED图、ER模型、UC矩阵等,而面向对象则被归纳为继承、封装、多态、复用等技术。事实上,这些都只是人们在采用不同的方法来认识和描述这个世界时采用的工具。 面向对象大师,也是UML创始人之一的Grady Booch在2004年IBM Developer Works Live大会的访谈中讲过的一段流传甚广的话:
2013-11-05 11:36:18
889
原创 桥接模式
1.1 意图: 将抽象部分与实现部分分离,使它们都可以独立的变化。当一个抽象可能有多个实现时,通常用继承来协调他们。抽象类的定义对该抽象的接口。而具体的子类则用不同的方式加以实现,但是此方法有时不够灵活。继承机制将抽象部分与他的视线部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和充用。1.2 实用性:1) 你不希望在抽象和他的实现部分之间有一个固定的邦定
2013-11-05 11:33:31
674
原创 外观模式
意图:为子系统中的一组接口提供一个一致的界面,Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。结构:例子:假设你有一套杀手级的家庭影院系统,内含DVD播放器、投影仪、自动屏幕、环绕立体声等。那么当你想看一部DVD时,需要做哪些事情呢(用最土的方式)?1、将灯光调暗;2、放下屏幕;3、打开投影仪;4、将投影仪的输入切换到DVD;5、将投影
2013-11-05 11:33:02
659
原创 适配器模式
软件开发中经常遇到的问题:假设已有一个软件系统,你希望它能和一个新的厂商类库搭配使用,但是这个新厂商所设计出来的接口,不同于旧厂商的接口。如果你不想改变现有的代码,也不能改变厂商的代码,那么你该如何解决这个问题。方法其实很简单,就是写一个类,将新厂商的的接口转成你所期望的接口。如图 这就是适配器模式。意图:将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于
2013-11-05 11:31:48
666
原创 命令模式
背景:有时候我们需要对方法进行封装,通过对这些封装的方法进行调用,我们可以很好的处理一些事情。比如,记录日志,或者重复使用这些封装实现撤销功能。意图:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。结构:例子:这次我们将设计一个家电自动化遥控器的API需求分析:遥控器的图:1)、遥控器上具有七个可编程的插
2013-11-05 11:30:36
641
原创 单件模式
背景:有一些对象其实我们只需要一个,比方说:线程池(threadpool)、缓存(cache)、对话框、处理偏好设置和注册表(registry)的对象、日志对象,充当打印机、显卡等设备的驱动程序的对象。事实上,这类对象只能有一个实例,如果制造出多个实例,就会导致许多问题产生,例如:程序的行为异常、资源使用过量,或者是不一致的结果。因此,我们设计这种类时必须确保只有一个实例,单件模式应运而生。
2013-11-05 11:22:17
654
原创 工厂方法模式
意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。结构:实例:下面我们以Pizza店的例子来谈谈“工厂方法模式”的来龙去脉,我们学习的思路是“原始设计-->简单工厂-->工厂方法”。情景分析:假如你有一个Pizza店,那么你的Pizza订单可能会写成如下代码(这段代码写在PizzaStore类里面):pu
2013-11-05 11:20:43
720
原创 装饰者模式
意图:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。结构:例子:下面我们以星巴兹(Starbuzz)的订单系统为例加以说明。需求分析:1)、星巴兹的饮料(Beverage)种类繁多,主要有HouseBlend、DarkRoast、Decaf、Espresso。2)、星巴兹的调料很多,主要有Steamed Milk、Soy、Mocha、Wh
2013-11-05 11:03:53
666
原创 观察者模式
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。结构:例子:下面以模拟气象站系统来加以说明。需求分析:该系统的需求如下:1、气象站能够追踪目前的天气状况,包括温度、湿度、气压、2、气象站能够提供三种布告板,分别显示目前天气状况、气象统计和简单的预报。3、布告板上的数据必须实时更新。4、气象站必须
2013-11-05 11:03:07
653
原创 策略模式
先对策略模式有一个总体认识。意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。结构:下面通过鸭子模拟器的设计来具体介绍。公司需要设计一套鸭子模拟器系统,该系统的第一次需求为:鸭子能够戏水;鸭子能够呱呱叫。根据该需求系统设计如下:这个设计主要用了父类鸭子和子类绿头鸭、红头鸭,这样设计的目的是为了达到代码的复用。
2013-11-05 11:02:27
611
原创 设计模式原则
最近重新回顾了下设计模式,这里归档总结下,方便以后可以看看。设计模式总共有以下几个原则:1、封装变化。 找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起。2、针对接口编程,而不是针对实现编程。 假设有一个抽象类Animal,有两个具体的实现(Dog与Cat)继承Animal。“针对实现编程”的做法:Dog d =
2013-11-05 10:08:04
685
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人