- 博客(82)
- 资源 (8)
- 收藏
- 关注
原创 elasticsearch选举master
数据节点确定了master以后,会开启MasterPinger线程来与其保持心跳通信的逻辑如果通信过程中链接断开,会通过MasterNodeFailureListener监听器进行回调处理处理过程中会去调用ZenDiscovery类的handleMasterGone方法,以便选举出新的master进行通信master的选举逻辑主要是通过ZenDiscovery类findMaster方法来封装的,大
2015-12-21 10:06:37
8637
原创 将kafka工程转成maven项目
kafka默认提供的源码是通过sbt进行构建的,在向eclipse导入的时候不是很方便,所以可先将其转换成maven项目,pom.xml配置如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h
2015-12-05 01:20:30
5223
原创 Region拆分逻辑
Table of ContentsRegion拆分拆分前提获取拆分点执行拆分回滚操作Region拆分Region的拆分逻辑是通过CompactSplitThread线程的requestSplit方法来触发的,每当执行MemstoreFlush操作时都会调用该方法进行判断,看是否有必要对目标Region进行拆分。拆分前提Region可拆分的前提是需要满足如下约束条件:目标RegionServer的线
2015-08-28 10:21:20
7827
原创 HFile存储格式
Table of ContentsHFile存储格式Block块结构HFile存储格式HFile是参照谷歌的SSTable存储格式进行设计的,所有的数据记录都是通过它来完成持久化,其内部主要采用分块的方式进行存储,如图所示:每个HFile内部包含多种不同类型的块结构,这些块结构从逻辑上来讲可归并为两类,分别用于数据存储和数据索引(简称数据块和索引块),其中数据块包括:(1) DATA_BLOCK:
2015-08-21 14:10:00
9131
1
原创 RegionServer功能职责
Table of ContentsRegionServer功能职责租约管理Nonce管理堆内存监控健康检测RegionServer功能职责租约管理HBase的租约管理功能主要应用在scan查询上,如果客户端执行scan操作以后,在60秒内没有将Scanner进行关闭,也没有显示的将租约移除,这时查询租约将会过期,RegionServer会强行关闭与之对应的Scanner,来防止无效连接数过多的情况
2015-08-07 09:57:44
5748
原创 Region恢复逻辑
Table of ContentsRegion恢复逻辑配置参数Region恢复逻辑RegionServer出现宕机以后,其上部署的Region将会被Master重新分配处理,由于在宕机前,某些Region的memStore数据可能还没有做flush操作,因此,需要对这部分数据做还原处理,还原过程通过读取HLog文件来实现。截至到目前为止(1.
2015-07-31 10:15:24
3310
原创 RPC通信功能实现
Table of ContentsRPC通信功能实现配置参数调用方法RPC通信功能实现HBase的RPC通信功能主要基于Protobuf和NIO这两个组件来实现,在通信管道上选择的是protobuf对外声明的BlockingRpcChannel(阻塞式),其callBlockingMethod方法决定了客户端与服务端的交互行为,比如采用什么样的方
2015-07-24 12:53:50
11425
原创 Hive-On-Tez性能测试
Table of ContentsHive-On-Tez测试MRR计算模型测试MPJ计算模型测试Hive-On-Tez测试在MRR和MPJ计算模型的处理上,TEZ能够提升的性能较为明显,具体测试如下:MRR计算模型测试测试表格1.users(id,name,password): 数据总量1千万条
2015-07-21 06:04:50
7956
原创 two-phase commit
Two-phase commit(二段事务提交)是解决分布式事务的一种有效方式,当数据库由于数据量较大而进行垂直拆分时,需要引入分布式事务来确保数组整体的一致性和完整性顾名思义,事务的提交分成两个阶段:准备阶段和提交阶段1.准备阶段(Prepare Phase)准备阶段Slave所做事情1.从Master获取写操作请求并在本地执行,同时将执行记录写入redo日志文件,便于出错后
2013-08-10 10:37:02
3056
原创 参观者与组合模式
Demo背景实现类似于gwt框架的功能,通过java代码来编写界面组件,在将界面组件转换成浏览器可识别的UI元素设计思路:代码要实现两部分功能:1.编写界面组件代码,用java类定义出所需要的界面元素(Button、Label、Panel等)2.将java类组件进行语义转换,转换成界面引擎可识别的语法(json、html,js等)接口设计:界面组件的设计参考awt采
2013-07-17 16:41:48
3428
原创 Tapestry5.3使用总结
1.Tapestry框架的加载是通过Filter来完成的,需要在web.xml中加入以下配置: app org.apache.tapestry5.TapestryFilter app /*2.这里面,过滤器拦截了所有的URL,某些时候可能希望有一些URL不被拦截(比如Servlet的mapping-url)这时候需要通过构建IgnoredPathsFilter服务,把不需要拦
2013-07-17 10:16:30
12898
原创 Maven使用
一、生命周期整个build生命周期包含多个phrase默认的生命周期由以下phrase组成(按执行先后数序排列):validate:验证项目合法并具备了所有需要的信息initialize:初始化操作(创建目录结构)generate-sources:生成项目源代码process-source:处理项目源代码generate-resource:生成项目资源文件proce
2013-06-18 10:01:49
5529
原创 SpringSecurity个性化配置
应用场景现有的数据库中包含以下几张表格用于权限管理要求在此基础上集成SpringSecurity,将表格的数据作为数据源来完成登录和权限校验逻辑SpringSecurity的配置可通过两种方式呈现,基于自身的namespace配置和传统的基于Bean的配置。通过namespace来配置Security非常简洁,隐藏了很多繁琐的实现细节,但也不便于初学者进行理解,而如果要想对Se
2013-04-02 15:55:07
4547
1
原创 java使用xquery
在使用关系数据库时,我们通过sql语句来检索数据源,这没有任何问题,但是关系数据也存在着一定的局限性,只能存储结构化的数据当数据集是非结构化的时候该怎样存储呢,最简单的办法就是封装成xml。应用开发中我们经常使用xml作为数据源来存储一些非结构化的数据,然而是否存在一种语言可以像sql语句检索关系数据库一样来检索xml呢?答案就是xquery。xquery本身的语法结构并不复杂,x
2013-03-04 11:11:07
6638
原创 Hadoop之HDFS子框架
体系结构由图片可以看到HDFS主要包含这样几个功能组件Namenode:存储文档的元数据信息,还有整个文件系统的目录结构DataNode:存储文档块信息,并且文档块之间是有冗余备份的这里面提到了文档块的概念,同本地文件系统一样,HDFS也是按块存储的,只不过块的大小设置的相对大一些,默认为64M。如果一个文件不足64M,那么它只存储在一个块中,而且并不会占用64M的磁盘空间,
2013-02-19 15:51:17
5185
原创 hadoop的产生
大数据的概念最早是由麦肯锡这家公司提出的,他们指出:“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素,人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。”进入2012年,大数据的概念开始被越来越多的提及,甚至已经上了纽约时报和华尔街日报的专栏封面。随着系统信息化的建设,海量数据正呈现井喷式增长,如何消化和分析这些数据从中提炼出有价值的信息是企业所要面
2013-02-19 12:27:12
3272
原创 MapReduce执行流程
MapReduce的大体流程是这样的,如图所示:由图片可以看到mapreduce执行下来主要包含这样几个步骤1.首先对输入数据源进行切片2.master调度worker执行map任务3.worker读取输入源片段4.worker执行map任务,将任务输出保存在本地5.master调度worker执行reduce任务,reduce worker读取map任务的输出文件
2013-02-07 18:17:27
23824
原创 hadoop counter
hadoop计数器的主要价值在于可以让开发人员以全局的视角来审查程序的运行情况,及时做出错误诊断并进行相应处理hadoop内置了很多计数器,这些计数器大体上可分为三组,MapReduce相关、文件系统相关和作业调度相关,分别统计每一个环节的处理情况,计数详情可通过http://master:50030/jobdetails.jsp界面进行查看除了内置计数器,hadoop还提供自定义计数
2013-02-04 15:35:10
8315
原创 hive功能简介
Hive提供了类SQL语法的功能,可通过它来检索Hadoop存储数据,查询操作是基于MapReduce来完成的Hive功能1.通过select语句查询指定column的数据2.通过where语句过滤查询条件3.通过group by语句将查询结果进行分组4.执行join查询操作使用写有Join操作的查询语句时有一条原则:应该将条目少的表/子查询放在Join操作符的左边。原因是
2012-12-24 10:33:07
14137
1
原创 Virgo整合ECF
ECF框架是OSGI-RemoteService的声明实现,其依赖Bundle包括:org.eclipse.ecforg.eclipse.ecf.osgi.services.distributionorg.eclipse.ecf.osgi.services.remoteserviceadminorg.eclipse.ecf.osgi.services.remoteservicead
2012-12-11 09:36:22
3554
原创 FordFulkerson算法求网络最大流(java)
FordFulkerson算法3个核心的概念:残留网络、增广路径和流网络的割(详细介绍参考算法导论)所测试的网络结构图如图所示:第1次遍历在残留网络中找到S->V2->V1->V3->T这条增广路径(下图A),这时的网络流量如图B执行第2次遍历的时候在残留网络中找到S->V2->V4->T这条增广路径(下图A),这时的网络流量如图B执行第3次遍历的时候在残留网络中找到S
2012-12-10 11:34:08
7417
原创 匈牙利算法求二分图的最优匹配(java)
算法应用场景:农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术。不幸的是,由于工程问题,每个牛栏都不一样。第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们喜欢的那些牛栏中产奶。上个星期,农夫约翰刚刚收集到了奶牛们的爱好的信息(每头奶牛喜欢在哪些牛栏产奶)。一个牛栏只能容纳一头奶牛,当然,一头奶牛只能在一个牛栏中产奶。问如何匹配奶牛与牛栏以便
2012-12-06 11:22:56
7786
3
原创 Kruskal算法计算最小生成树(java)
最小生成树定义:每一个无向图可拆分成多个子图,在这些子图中,如果图的各个顶点没有形成回路,则是图的一颗生成树。最小生成树的意识是树的相邻节点距离之和最小。应用场景:张三被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。张三已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场
2012-12-04 17:15:53
10035
原创 Dijkstra算法求最短路径(java)
任务描述:在一个无向图中,获取起始节点到所有其他节点的最短路径描述Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表方式用OPEN,CLOSE表的方式,其采用的是贪心法的
2012-12-04 09:25:09
54317
3
原创 动态规划法求解硬币找零(Java)
算法描述:动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。基本思想也是将待求解问题分解成若干个子问题,先求解子问题,并将子问题的结果保存下来,然后从这些子问题的解得到原问题的解。动态规划实质上是一种以空间换时间的技术,它在实现的过程中,不得不存储产生过程中的各种状态,所以它的空间复杂度要大于其它的算法。问
2012-11-30 09:15:16
8554
原创 贪心法求解活动安排(java实现)
贪心法描述:贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。问题描述:现有一组活动由你安排,但要求你在最短的时间内安排尽可能多的活动。代码如下:Activity类用于封装活动对象,包括活动的开始时间和结束时间,另外实现
2012-11-29 10:07:04
5334
原创 java实现N皇后问题
N皇后问题描述:将 n 个皇后摆放在一个 n x n 的棋盘上,使得每一个皇后都无法攻击到其他皇后。深度优先遍历的典型案例。程序输入: n的个数(需>4) 棋盘上任意一个位置程序输出: 满足问题需求的棋盘坐标程序代码如下:Node类用于封装皇后的棋盘位置信息public class Node { private int x; p
2012-11-28 15:55:54
2866
原创 lucene高亮显示
Lucene针对高亮显示功能提供了两种实现方式,分别是Highlighter和FastVectorHighlighter顾名思义,FastVectorHighlighter较Highlighter速度更快,功能也更强大,但是有使用前提:创建索引时,需要存储Field的分词向量信息(TermVector.WITH_POSITIONS_OFFSETS),而Highlighter则不需要,如何在时间
2012-11-26 10:45:19
8752
原创 Spring JMS应用
JMS用于系统间的异步通信,在将系统功能进行纵向拆分时,是很好的解决方案,通过消息驱动来实现业务分离。消息中间件有很多,开源的有Apache的ActiveMQ,商业的有IBM MQ等,以下是基于ActiveMQ的spring配置<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://act
2012-11-08 11:40:55
3780
原创 ACL权限处理
ACL的全称是Access Control List,翻译成中文是访问控制列表,一般用来描述某一权限下的用户授权情况将权限信息封装成字节数组,通过位运算来处理授权和权限校验的业务逻辑,代码示例如下:public class PrivilegeService { /** * 权限字节数组 * 一个byte等于8bit,一个bit表示一个user的权限(0表示无权限,1表示有权限
2012-11-01 14:16:25
5175
1
原创 android视图组件之ListView
ListView是android系统中比较常用的视图组件,它的构建主要包含两方面信息:分别是UI组件的绘制和数据源的设置。UI组件和数据源之间通过适配器建立关联。这里的适配器充当媒人的角色,在为UI组件和数据源介绍亲事之前,媒人需要对双方有所了解,了解的内容包括:ListItem的布局信息和数据源的实体信息。常用的适配器有两种,分别是ArrayAdapter和SimpleAdapter
2012-10-18 09:00:30
1963
原创 android自定义分页组件
组件代码如下:public class PageControl extends LinearLayout implements OnClickListener{ private ImageButton firstImg; private ImageButton preImg; private ImageButton nextImg; private ImageButton endImg
2012-10-17 11:20:24
4564
原创 SpringAOP应用(AspectJ)
任务需求系统A的数据库中定义了一张document表,用来存放文档的基本信息,当用户对表数据执行增删改操作时,需要发送消息给系统B,通知其执行相应处理,消息内容包括文档变动类型和文档数据信息。需求实现我们能想到的最简单的处理方式如下:修改数据和发送消息本是两个独立的功能,doAction方法却将其耦合在了一起,方法的处理暂时不存在任何问题,然而随着时间的推移,需求的变动,如
2012-10-12 09:22:36
1516
原创 android应用之SQLite数据库
android系统内嵌了SQLite数据库,优点是处理速度快,占用内存少在android应用中,围绕着数据库的操作主要是通过SQLiteDatabase来完成的,该类封装了以下方法:方法用途execSQL(sql)执行sql脚本,通常用来创建或管理数据库表格rawQuery(sql,selectionArgs)执行select查询操作(sql
2012-10-09 10:52:09
2290
原创 云计算概念
百度百科定义:云计算是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。个人理解:通过网络共享计算资源,将基础设施、平台、软件等服务以租赁的方式提供给客户,以此获取相应的使用费用。云计算所带来的转变是将企业的资本性支出(购买机器)转向了运营支出(使用费用),在系统的早期部署阶段,这种转变是非常节约成本的。云计算特性:弹性和可扩展性:
2012-09-17 09:56:45
2380
原创 读Youku架构之体会
原文连接:http://www.docin.com/p-24581860.htmlyouku数据库架构演进历史:单机->主从复制->垂直拆分->水平切片感悟:互联网应用与企业应用的区别之一在于系统用户的不确定性。基于互联网的应用在早期的设计可能非常简单,数据库只是一台单机,访问量和数据量都非常的少,然而随着系统的受欢迎程度得到提升,会有越来越多的用户注册进来,所带来的问题便是数据库
2012-09-07 10:14:54
2202
原创 读淘宝数据库架构之体会
原文档下载地址:点击打开链接体会如下1.SQL语句复杂程度由繁到简多表关联查询致使应用的耦合性偏高,不利于数据的分布式拆分部署。在执行查询时,如遇代理对象,对数据的远程传递和缓存都会产生影响(代理对象无法序列化,代理方法执行时找不到session)。打散库表关系后,对数据库的访问主要通过主键ID来完成,其他查询方法可通过倒排索引库来操作。2.服务的拆分系统发展到
2012-09-04 14:38:02
9471
原创 Eclipse4平台服务
为了更大程度的实现模块松耦合以及组件重用,E4项目不在向以前一样基于单例模式来处理业务逻辑,而是以一种更为优雅的通过服务的方式来代替,这些服务通过EclipseContext进行管理,以依赖注入的方式嵌入到系统应用中去。可通过代码实例来体会Eclipse4和Eclipse3处理逻辑的不同,以显示透视图为例,Eclipse3通过如下代码进行处理IWorkbenchWindow window=
2012-08-22 14:15:49
3589
原创 Eclipse4系统模型
Eclipse4的系统模型是通过EMF来构建的,其元模型封装在org.eclipse.e4.ui.model.workbench这个Bundle里,开发人员可扩展该元模型用以添加新的模型节点或是在现有元模型的基础上添加新的属性信息。元模型主要定义了以下模型节点信息:MApplication描述系统工程MWindow描述系统工程的一个运行窗口MPe
2012-08-20 11:10:29
3698
原创 Eclipse4平台概述
Eclipse平台发展至今主要经历了3个阶段:第一阶段:1.0到2.1版本这个版本的Eclipse主要起到一个集成平台的作用,核心功能是将不同开发人员编写的插件汇集到一起,组成具有一定功能的系统应用。第二阶段:3.x版本从3.0版本开始,到目前的3.8,Eclipse开始基于OSGI平台构建,将系统应用的开发转移到面向组件和服务的架构中去,模块之间的解耦和性变的更高。第三阶段:
2012-08-17 15:42:49
2426
saxon的jar包
2013-03-04
TFS JavaAPI源码(附带JUinit测试用例)
2012-08-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人