摘要: 转自:JVM优化之逃逸分析(Escape Analysis)什么是逃逸分析(Escape Analysis)?在编程语言的编译优化原理中,分析指针动态范围的方法称之为逃逸分析。它跟静态代码分析技术中的指针分析和外形分析类似。通俗一点讲,当一个对象的指针被多个方法或线程引用时,我们称这个指针发生了逃逸。而用来分析这种逃逸现象的方法,就称之为逃逸分析。举个例子:Java代码 classA{publicstaticBb;publicvoidglobalVariablePointerEscape(){//给全局变量赋值,发生逃逸b=newB();}publicBmethodPointerEscape( 阅读全文
posted @ 2013-09-24 23:16 盖文 阅读(1711) 评论(1) 推荐(1) 编辑
摘要: 分布式环境中大多数服务是允许部分失败,也允许数据不一致,但有些最基础的服务是需要高可靠性,高一致性的,这些服务是其他分布式服务运转的基础,比如naming service、分布式lock等,这些分布式的基础服务有以下要求:高可用性高一致性高性能对于这种有些挑战CAP原则的服务该如何设计,是一个挑战,也是一个不错的研究课题,Apache的ZooKeeper也许给了我们一个不错的答案。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它暴露了一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。关于ZooKeeper更多信息可以参见官方文档ZooKeepe 阅读全文
posted @ 2013-06-10 15:00 盖文 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 分布式设计与开发中有些疑难问题必须借助一些算法才能解决,比如分布式环境一致性问题,感觉以下分布式算法是必须了解的(随着学习深入有待添加):Paxos算法一致性Hash算法Paxos算法1)问题描述分布式中有这么一个疑难问题,客户端向一个分布式集群的服务端发出一系列更新数据的消息,由于分布式集群中的各个服务端节点是互为同步数据的,所以运行完客户端这系列消息指令后各服务端节点的数据应该是一致的,但由于网络或其他原因,各个服务端节点接收到消息的序列可能不一致,最后导致各节点的数据不一致。举一个实例来说明这个问题,下面是客户端与服务端的结构图:当client1、client2、client3分别发出消 阅读全文
posted @ 2013-06-10 14:59 盖文 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 在IDF05(Intel Developer Forum 2005)上,Intel首席执行官Craig Barrett就取消4GHz芯片计划一事,半开玩笑当众单膝下跪致歉,给广大软件开发者一个明显的信号,单纯依靠垂直提升硬件性能来提高系统性能的时代已结束,分布式开发的时代实际上早已悄悄地成为了时代的主流,吵得很热的云计算实际上只是包装在分布式之外的商业概念,很多开发者(包括我)都想加入研究云计算这个潮流,在google上通过“云计算”这个关键词来查询资料,查到的都是些概念性或商业性的宣传资料,其实真正需要深入的还是那个早以被人熟知的概念------分布式。分布式可繁也可以简,最简单的分布式就是 阅读全文
posted @ 2013-06-10 14:58 盖文 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 首先,我觉得很有必要看一个图先,这个图很好得展示了Canopy聚类的过程。图来自http://picksesame.blogspot.com/2011/05/canopy-clustering.html可能要FQ。 图中有一个T1,一个T2,我们称之为距离阀值,显然T1>T2,这两个值有什么用呢?我们先确定了一个中心,然后计算其他点到这个中心间的距离,当距离大于T1时,小于T1大于T2时,小于T2时,对这个点的处理都是不一样的。http://micahlabrams.blogspot.com/2011/10/canopy-clustering.html这篇文章提供了一个很好的伪代码,我觉 阅读全文
posted @ 2013-05-17 14:39 盖文 阅读(490) 评论(0) 推荐(0) 编辑
摘要: epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE 1024表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这 阅读全文
posted @ 2013-05-13 01:01 盖文 阅读(845) 评论(0) 推荐(0) 编辑
摘要: /etc/sysctr.d/*/proc/sys/*command : sysctr 阅读全文
posted @ 2013-04-12 01:25 盖文 阅读(137) 评论(0) 推荐(0) 编辑
摘要: Apache Thrift - 可伸缩的跨语言服务开发框架黄 晓军, 实习生, IBM张 静, 软件工程师, IBM张 凯, 高级软件工程师, IBM简介:Apache Thrift 是 Facebook 实现的一种高效的、支持多种编程语言的远程服务调用的框架。本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构、开发和部署,并且针对不同的传输协议和服务类型给出相应的 Java 实例,同时详细介绍 Thrift 异步客户端的实现,最后提出使用 Thrift 需要注意的事项。发布日期:2012 年 1 月 16 日级别:中级访问情况 :20393 次浏览评论:6(查看|添 阅读全文
posted @ 2013-04-12 00:41 盖文 阅读(295) 评论(0) 推荐(0) 编辑
摘要: Apache Thrift简介作者:zsxwing更新: 2011-07-20 21:39:27 发布: 2011-07-20 21:39:27Thrift源于大名鼎鼎的facebook之手,在2007年facebook提交Apache基金会将Thrift作为一个开源项目,对于当时的facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传 输通信以及系统之间语言环境不同需要跨平台的特性。所以thrift可以支持多种程序语言,例如: C++, C#, Cocoa, Erlang, Haskell, Java, Ocami, Perl, PHP, Python, R 阅读全文
posted @ 2013-04-11 22:25 盖文 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 文章来自:http://www.qqread.com/java/w872354600.htmlJava技术与Java虚拟机 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:图1 Java四个方面的关系 运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件)。最后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执.. 阅读全文
posted @ 2013-04-08 13:52 盖文 阅读(168) 评论(0) 推荐(0) 编辑