- 博客(207)
- 收藏
- 关注
原创 【转】什么是Reactor模式,或者叫反应器模式
Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些。通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或者叫召唤兽。 并发系统常使用reactor模式,代替常用的多线程的处理方式,节省系统的资源,提高系统的吞吐量。 先用比较直观的方式来介绍一下这种方式的优点,通过和常用的多线程方式比较一
2016-07-06 15:20:30 391
原创 【经验总结】NIO常见的陷阱解析
NIO编程很容易吗?不容易吗?很容易吗?不容易吗?……有些陷阱你需要知道 陷阱1:处理事件忘记移除key在select返回值大于0的情况下,循环处理Selector.selectedKeys 集合,每处理一个必须移除Iterator it=set.iterator();While(it.hasNext()){ SelectionKey key=it.nex
2016-07-06 15:20:23 580
原创 基于Spring_Batch大数据并行处理文章分享--建议大家多看看
请见附件!!! 以下链接是我以前写的一个简单例子,也能给大家提供帮助。http://flychao88.iteye.com/blog/1990520 另外同时也推荐给大家看看Apache chain责任链工具,这个非常好用,效率也较高。 基于Spring_Batch的大数据量并行处
2016-07-06 15:20:14 760
原创 开发者必备的 Chrome 扩展
Firebug:不用多介绍了吧https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifenchChromeSnifferPlus:Chrome 探测器,可以探测正在使用的开源软件或者 js 类库https://chrome.google.com/webstore/detail/chrome-sniffer-plus
2016-07-06 15:20:07 442
原创 32位jvm还是64位jvm?
在早期,JVM只有32位的,众所周知,32位有4G的内存限制。需要注意的是,32位jvm的堆内存实际可设的大小还受操作系统的限制。Hotspot VM,在Windows下,最大的堆内存大约在1.5G左右;在基于较新的linux kernel的Linux系统下,其限制在2.5到3G之间,在早前的linux kernel下,大约在2G左右;在Solaris下,为3.3G左右。64位的hotspot V
2016-07-06 15:20:00 2409 2
原创 【转】使用Netty实现多路复用的client
Netty只提供的异步传输数据的方式,但是并没有实现多路复用的client。一个分布式的客户端代码基本是这个样子的:?1234public Response sent(final Request request) { channel.writeAndFlush(request); return clien
2016-07-06 15:19:52 2394
原创 JAVA 线程池源码分析
java5之后为我们提供了线程池,只需要使用API,不用去考虑线程池里特殊的处理机制。Java5的线程池分好多种:固定尺寸的线程池、可变尺寸连接池等。常用的是ThreadPoolExecutor,它的继承关系如下: 下面详细说明一下自定义线程的使用:TreadPoolExecutor的常用构造方法如下:public ThreadPoolExecutor(int corePo
2016-07-06 15:19:45 500
原创 Redis分布式中间件TwemProxy
twemproxy,也叫nutcraker。是一个twtter开源的一个redis和memcache代理服务器。 redis作为一个高效的缓存服务器,非常具有应用价值。但是当使用比较多的时候,就希望可以通过某种方式 统一进行管理。避免每个应用每个客户端管理连接的松散性。同时在一定程度上变得可以控制。 搜索了不少的开源代理项目,知乎实现的python分片客户端。node的代理中间层,还有各种rest
2016-07-06 15:19:38 1319
原创 -淘宝HSF服务框源码解析
最近在学习淘宝HSF框架,目前已经看完60%左右的源码,为了与大家共享信息,先分享我看完的这部分源码。废话少说,来吧!!!! 一、背景 随着网站访问量增加,仅仅靠增加机器已不能满足系统的要求,于是需要对应用系统进行垂直拆分和水平拆分。在拆分之后,各个被拆分的模块如何通信?如何保证性能?如何保证各个应用都以同样的方式交互?这就需要一种负责各个拆分的模块间通信的高性能服务框架(H
2016-07-06 15:19:31 1418 2
原创 如何用Java编写一段代码引发内存泄露
本文来自StackOverflow问答网站的一个热门讨论:如何用Java编写一段会发生内存泄露的代码。 Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码。这个问题我一点思路都没有,好囧。A1:通过以下步骤可以很容易产生内存泄露(程序代码不能访问到某些对象,但是它们仍然保存在内存中) 1、应用程序创建一个长时间运行的线程(或者使用线程池,会更快
2016-07-06 15:19:24 1040
原创 【转】SharedHashMap是更低延迟无GC暂停的Map实现
SharedHashMap是开源工具OpenHFT一个子项目,SharedHashMap提供ConcurrentHashMap更低延迟无JVM的GC暂停的实现。两个特点是:1.所有元素都保存在Java heap之外,这样就不受GC影响,没有GC暂停。2.所有元素都在一个共享内存区域,对所有进程都是可视的。SharedHashMap采取的是"no-copy"模型,能够提供off-heap堆内存之外内
2016-07-06 15:19:16 512
原创 Hadoop RPC机制
RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。Hadoop底层的交互都是通过 rpc进行的。例如:datanode和namenode 、tasktracker和jobtracker、secondary namenode和namenode之间的通信都是通过rpc实现的。下面是rpc交
2016-07-06 15:19:07 344
原创 【转】AbstractQueuedSynchronizer的介绍和原理分析
简介提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式来操纵状态。然而多线程环境中对状态的操纵必须确保原子性,因此子类对于状态的把握,需要使用这个同步器
2016-07-06 15:18:58 323
原创 java UncaughtExceptionHandler 处理线程意外中止
Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个异常而被终止,导致这个线程的终结。最麻烦的是,在线程中抛出的异常即使使用try...catch也无法截获,因此可能导致一些问题出现,比如异常的时候无法回收一些系统资源,或者没有关闭当前的连接等等。 JDK5.0之前,不能为单独的Thread设置UncaughtExceptio
2016-07-06 15:18:48 484
原创 hbase源码系列(一)Balancer 负载均衡
备注: 我一个哥们最近一直在看Hbase源码,前几天他针对Hbase写了源码分析体会,我本来也是要写的,但是看到他写的比较好,所以我决定引用他的4篇系列文章到我们博客中。原文如下地址:http://www.cnblogs.com/cenyuhai/p/3650943.html 看源码很久了,终于开始动手写博客了,为什么是先写负载均衡呢,因为一个室友入职
2016-07-06 15:18:41 579
原创 本地调试Hbase源码详解
由于工作关系,近期需要对Hbase源码有一定了解,我想能够在本地调试hbase,于是乎下载源码开始干活,废话不多讲说干就干! 一、准备工作 本地环境:Windows7,Cygwin和Maven3。 IDE:IntelliJ IDEA12.1.4 HBase版本:0.94.16
2016-07-06 15:18:34 1439
原创 Hadoop添加节点datanode
1.部署hadoop和普通的datanode一样。安装jdk,ssh2.修改host和普通的datanode一样。添加namenode的ip3.修改namenode的配置文件conf/slaves添加新增节点的ip或host4.在新节点的机器上,启动服务[root@slave-004 hadoop]# ./bin/hadoop-daemon.sh start
2016-07-06 15:18:27 350
原创 linux加载大硬盘
lvcreate --name lv_data -l 100%FREE vg_root::::in /dev/fstab vi /etc/fstab /dev/mapper/vg_root-lv_data /hbase ext4 defaults 1 1mkfs -t ext4 /dev/mapper/vg_root-lv_datamk
2016-07-06 15:18:19 219
原创 Hbase安装常见问题总结
最近这段时间因为工作需要安装了hadoop+hbase集群,在安装的过程中总结了以下一些常见的问题,供大家参考。 一、问题1ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed. 1. 删除/tmp下hadoop 有关系的东西目录及文
2016-07-06 15:18:13 733
原创 Hbase shell常用命令
HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下:名称命令表达式创建表create '表名称', '列名称1','列名称2','列名称N'添加记录 put '表名称', '行名称', '列名称:', '值'查看记录get '表名称',
2016-07-06 15:18:04 411
原创 关于<mvc:default-servlet-handler/>报错问题的解决
在spring mvc中引用后启动程序异常如下: ERROR: org.springframework.web.servlet.DispatcherServlet - Context initialization failedorg.springframework.beans.factory.BeanCreationException:Error creating bean wit
2016-07-06 15:17:56 1627
原创 【转】细数JDK里的设计模式
原文出处: javacodegeeks 译文出处: deepinmind结构型模式:适配器模式:用来把一个接口转化成另一个接口。java.util.Arrays#asList()javax.swing.JTable(TableModel)java.io.InputStreamReader(InputStream)java.io.OutputStreamWrite
2016-07-06 15:17:49 233
原创 【转】Hbase性能优化四个要点
1 hbase.hregion.max.filesize应该设置多少合适 默认值:256M 说明:Maximum HStoreFile size. If any one of a column families' HStoreFiles has grown to exceed this value, the hosting HRegion is split in two. HSt
2016-07-06 15:17:21 326
原创 hadoop1.2.1+hbase集群详解
最近我由于工作原因,我要搭建一套hadoop+hbase集群的测试环境。目前有三台服务器,我计划就在这三台服务器中搭建一套环境,多余的话不说,大家往下看吧。 一、搭建前的准备工作 我有三台服务器,分别是192.168.1.97,192.168.1.98,192.168.1.99。 那我如何来命名呢,97对应的是master,98对应的是slave1
2016-07-06 15:17:14 284
原创 【转】面向程序员的数据库访问性能优化法则
特别说明:1、 本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识;2、 本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也可以参考,但许多观点不适合于KV数据库或内存数据库或者是基于SSD技术的数据库;3、 本文未深入数据库优化中最核心的执行计划分析技术。 读者对像:开发人员:如果你是做数据库开发,
2016-07-06 15:17:06 667
原创 Spring Batch实例详解
Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。 Spring Batch可以提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作业处理统计工作重新启动、跳过,和资源管理等重要功能。
2016-07-06 15:16:57 1063
原创 缓存淘汰算法--LRU算法
1. LRU1.1. 原理LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1.2. 实现最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3. 当链表
2016-07-06 15:16:49 454
原创 缓存淘汰算法--LFU算法
1. LFU类1.1. LFU1.1.1. 原理LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。1.1.2. 实现LFU的每个数据块都有一个引用计数,所有数据块按照引用计数排序,具有相同引用计数的数据块则按照时间排序。具体实现如下: 1. 新加入
2016-07-06 15:16:42 394
原创 【转】RAID磁盘阵列学习
RAID是“Redundant Array of Independent Disk”的缩写,中文意思是独立冗余磁盘阵列。简单地解释,就是将N台硬盘通过RAID Controller(分Hardware,Software)结合成虚拟单台大容量的硬盘使用。RAID的采用为存储系统(或者服务器的内置存储)带来巨大利益,其中提高传输速率和提供容错功能是最大的优点。 简单的说,RAID是一种
2016-07-06 15:16:35 368
原创 HashMap实现原理分析
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,H
2016-07-06 15:16:28 261
原创 LinkedHashMap实现最简单的LRU算法
LRU是Least Recently Used 近期最少使用算法。内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,Oracle会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。LinkedHashMap有一个removeEldestEntry(Map.Entry eldest)方法,通过覆盖这个方法,加入一定的条件,满足条件返回true。当pu
2016-07-06 15:16:20 519
原创 Struts2源码分析
struts2源码分析讲解一、struts2宏观示意图说明: struts2从宏观上来说分为上图所示的几大模块,主要包括数据流体系和控制流体系。 数据流体系包括:ActionContext和ValueStack。 控制流体系包括:Dispatcher,ActionProxy,ActionInvocation,Interceptor和
2016-07-06 15:16:13 268
原创 【转】FastDFS入门简介
1、背景FastDFS是一款开源的、分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发。该开源项目的主页是 http://code.google.com/p/fastdfs 。可以通过fastdfs.sourceforge.net 下载。FastDFS论坛是 http://www.csource.org ,目前是指向 ChinaUnix 开源项
2016-07-06 15:16:06 271
原创 FastDFS配置详解之Storage配置
1 基本配置disabled #func:该配置文件是否生效#valu:## true:无效## false:生效disabled=false group_name#func;本storage server所属组名group_name=group1 bind_addr#func:绑定本storage server的IPbind_addr=
2016-07-06 15:15:56 2107
原创 FastDFS配置详解之Tracker配置
1 基本配置disable#func:配置是否生效#valu:true、falsedisable=falsebind_addr#func:绑定IP#valu:IP地址bind_addr=192.168.6.102port#func:服务端口#valu:端口整数值port=22122connect_timeout#func:连接超时
2016-07-06 15:15:49 2765
原创 [FastDFS] FastDFS 配置文件详解(修订版1) 【转】
本帖最后由 happy_fish100 于 2012-11-04 20:26 编辑首先是 tracker.conf# is this config file disabled# false for enabled# true for disableddisabled=false# 这个配置文件是否不生效,呵呵(改成是否生效是不是会让人感觉好点呢?) false 为生效(否则不生效) true反之#
2016-07-06 15:15:42 602
原创 Nginx+Tomcat+FastDFS文件下载模块讲解
本文主要以示例的方式讲解,如何简单快速的搭建一个nginx+tomcat结合FastDFS文件系统,进行文件下载的文章,Nginx可以直接配置FastDFS下载,由于在实战中用处不是很大,所以暂时不讲。 1、首先下载nginx安装包,解压并运行。 关于nginx的安装详看http://flychao88.iteye.com/blog/1963365一文。
2016-07-06 15:15:34 646
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人