java
FireCoder
这个作者很懒,什么都没留下…
展开
-
java finalize 方法引发的内存泄露
java finalize 方法引发的内存泄露Posted: Mon, 11 Mar 2013java 内存dump 内存dump后,大量的内存(>5G) 被 java.lang.ref.Finalizer hold 住(见图1)。 而这些内存是BDB占用,怀疑是BDB有内存泄露(见图2)。java finalizer 机制 为什么会是 java原创 2013-03-12 18:44:42 · 11141 阅读 · 0 评论 -
Java ThreadPoolExecutor 线程池 tips 3:动态调整线程池
动态调整线程池统计Sliding windows 统计原创 2011-08-03 17:51:49 · 2895 阅读 · 1 评论 -
Java ThreadPoolExecutor 线程池 tips 2:偷借线程
SEDA (Staged event-driven architecture)原创 2011-07-31 20:18:32 · 1735 阅读 · 0 评论 -
Apache Torque的关键配置参数 (DBCP)
起因频繁的connection close/open.DBA点名:有个component从3个礼拜前突然开始频率的打开/关闭db的connection,大大抵消了使用connection pool的好处调查经探索发现,该component使用Torque来进行db connect原创 2011-07-19 14:51:59 · 2627 阅读 · 0 评论 -
Java ThreadPoolExecutor 线程池 tips 1:单线程吞吐量来估计系统的线程数目
The thread pool model is as below4 job producer for different carrier (Sprint, Sprint Demo, Nextel, At&t)1 job queue as a buffer (although t原创 2011-07-24 21:53:20 · 5742 阅读 · 0 评论 -
Maven Vs Ant
Declarative (Maven) and Imperative (Ant) Convention and configuration (Maven) over configuration andscripting (Ant)Maven Good for ModularizationDependency management Not easy for beginner to understandBugs and issues are hard to track (understand the co原创 2011-05-05 07:25:00 · 2987 阅读 · 0 评论 -
JAX-WS Provider (JAXB) 的加载顺序
Problem项目中使用JAX-WS 2.1.4,抛出以下错误 Caused by: java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.internal.bind.api.JAXBRIContext at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.(SOAPFaultBuilder.java原创 2011-05-21 05:35:00 · 13457 阅读 · 0 评论 -
Introduction to JAXB (1)
从Hearbeat说起NOC的兄弟要求所有component有个heartbeat,要求很简单:1) 提供一个http url2) 这个http url 返回xmlServer[ok|fail]Errormsgheartbeat需要check哪些内容,这里不作讨论。我看过的telenav code中,有以下实现:打开一个socket端口(非web app),如果server ok, 返回一个OK的xml字符串。如果失败,返回fail的xml字符串。String ok = '' ...原创 2011-01-28 17:59:00 · 3322 阅读 · 0 评论 -
A generic JAXB marshal/unmarshal XmlType
引子xsd中的complexType在JAXB中对应XmlType,element在JAXB中对应XmlRootElement。而xml序列化(marshal)和反序列化(unmarshal)的对象是element而不是type,所以在JAXB中XmlType无法被直接序列化,只能通过xsd定义element或者如通过Annotation声明XmlRootElement来完成。比如,我们的xsd中定义为原创 2011-01-20 13:20:00 · 4230 阅读 · 0 评论 -
Jmock
The principle (物种起源)JMock is a library that supportstest-driven development ofJava code withmock objects.TDDUnit tests are so named because they each test one unitof code. Whether a module of code has hundreds of unit tests or only five is irrelevant.原创 2011-01-08 21:50:00 · 4831 阅读 · 0 评论 -
web 开发 - 编译工具1
在项目开始编程的第一天就发布你的HelloWorld.我们编写的程序最终需要发布,我的建议是在项目的第一天就建立好的你的发布脚步,在开发的过程中随时发布最新的进展到dev服务器上。每次项目会议时,demo演示环节,访问服务器而不是开发人员的本机。保证每个项目的开发人员都可以一键发布,新加入的开发人员可快速在本机进行部署。江南白衣在四种软件开发实践中建议每三个礼拜就发布一次。我认为在项目开发开始后,每个礼拜都进行软件的发布,每三个礼拜进行一次内部开发版本的增加(0.00~0.01)。每个开发人员都知道原创 2010-11-12 00:26:00 · 996 阅读 · 0 评论 -
七种武器:apache commons : commons-lang
前言有人说apache 就是丐帮,各种开源项目鱼龙混杂,参差不起。今天试着梳理下commons包,首先是commons-lang。看了一眼之后,一个字:杂,有如瑞士军刀,无数用途。如何organize这种类JDK util代码?1) the most interesting in design or implementation2) the most useful 3) see how other developer uses, wrap, rewrite JDK正文 lang.builder.*解决了一个原创 2011-01-02 12:41:00 · 7665 阅读 · 0 评论 -
maven java.lang.NoClassDefFoundError: org/codehaus/plexus/util/DirectoryScanner
org/codehaus/plexus/util/DirectoryScanner在反复搜索无果之后,我将本来的repository plexus-utils 进行了清空/home/lee/.m2/repository/org/codehaus/plexus/plexus-utils然后一切OKmvn install我对plexus 究竟是啥很好奇,搜了一下,原来是另外一个IOC容器http://www.bluedash.net/spaces/Plexus,Spring之外的IoC容器提到IOC,不得不说号原创 2010-12-24 21:46:00 · 8623 阅读 · 1 评论 -
设计中的控制反转(Inverse of Control)
WTF IOC?java面试中经常会碰到如下情景:问:“你用过Spring吗?”答:“用过” 问:"Spring有啥特点“?答:”IOC和AOP" 问:"AOP是啥?怎么实现AOP"?答:"AOP就是面向切面编程,将像log, transaction,原创 2011-08-15 22:36:25 · 2863 阅读 · 0 评论 -
神秘的java Https (1)
说起网络安全,最基本的策略就是走https。https仿佛一条神秘通道,有了它,万事无忧。究竟什么是https?如何实现https? 本文将揭开https的神秘面纱。WTF https万事皆有源头。什么是https?首先从安全性需求说起,5大安全需求原创 2011-08-19 20:21:49 · 1847 阅读 · 0 评论 -
Java GC 调试手记
摘要本文记录GC调试的一次实验过程和结果。GC知识要点回顾问题1:为什么要调试GC参数?在32核处理器的系统上,10%的GC时间导致75%的吞吐量损失。所以在大型系统上,调试GC是以小博大的不错选择。'small improvements in reducing such a bottleneck can produce large gains in performance.'原创 2012-02-02 13:45:09 · 33992 阅读 · 1 评论 -
My Hadoop: Hadoop 0.23 setup
1 Download choose a mirror http://www.apache.org/dyn/closer.cgi/hadoop/core/download from renren for 0.23 version: hadoop-0.23.0.tar.gz 1.1 untar tar zxfv hadoop-0.23.0.tar.gz2 Run first had原创 2011-12-27 14:14:44 · 3168 阅读 · 0 评论 -
axis2 client memory leak
axis2 client memory leak,还有比axis2 更坑人的开源项目吗Axis2 client memory leakView more presentations from Alexander Lee原创 2012-01-16 16:39:54 · 1528 阅读 · 0 评论 -
A story of OS file cache in MySql
问题在一次Sql语句的测试中,我们发现一个有趣的现象:同一个测试数据集,第一次run相当的慢(average超过100ms);第二次及后面的run都很快,而且也很稳定(average 4ms)。sql 如下select * from table where node_index in (?, ?. ...?)每次测试跑10k条上面的sql,不同的参数wh原创 2012-01-11 16:55:59 · 1195 阅读 · 0 评论 -
Hilbert 曲线
问题一POI(Point of Interest)数据库每天都有增量的数据更新进来,对每个新增的poi必须进行dedup(去重)。即在已有库中查找是否有匹配的poi。解决找是否匹配的POI,当然不可能把所有的数据(几千万的点)全部取出来一一匹配。所以通用的做法是按距离进行过滤,只取当前点一定范围内的点。这是一个典型的空间索引的问题(Spatial index)。空间索引有R-Tree,原创 2012-01-09 16:33:33 · 11061 阅读 · 3 评论 -
Happy Apache Cassandra 3: Monitor
http://wiki.apache.org/cassandra/Operations#Monitoringbin/cassandra-cli -h hostbin/nodetool -h host cfstatsbin/nodetool -h host tpstatsJMXJConsole/JVisuialVM host:7199 (MBean)MX4原创 2011-12-14 17:02:38 · 1478 阅读 · 0 评论 -
为什么java如此招人厌恶-Quora版
http://article.yeeyan.org/view/86510/233518Sergei Turin, EECS student at Cal (引用了很多其他人的话)199 votes by Shaan Batra, Hiroshi Ono, Horia Tu, (more)java中难以看到优雅的代码实现,有时你遍读源码,只能发现一个优雅的函数,只是一翻译 2011-12-04 16:04:00 · 2075 阅读 · 0 评论 -
Happy Apache Cassandra 2: File Store Format
h3. Model ReviewCassandra data modelColumn FamilySuper Column Familyh3. File Formath4. KeyspaceEach Keyspace(Eg. Lobs)in separated directoryEach ColumnFamily(Eg. obje原创 2011-11-28 14:37:57 · 7016 阅读 · 0 评论 -
Happy Apache Cassandra 1: Setup
Cassandra SetupSetup CassandraGettingStartedSingle NodeDownload tar xvf cassandra-*.tar.gz conf/cassandra.yamldata_file_directories: ./datacommitlog_directory: ./commitlogsaved_cache原创 2011-11-25 21:19:42 · 1296 阅读 · 0 评论 -
Cassandra 源码解析 6: Storage Engine (DB Layer)
原理http://thoss.org.cn/mediawiki/index.php/Cassandra_data_modelhttp://labs.google.com/papers/bigtable.html cassandra 的存储模型来自google的bigtable。bigtable data modelbigtable 是一个key-value map,其key原创 2010-07-13 14:10:00 · 5133 阅读 · 1 评论 -
java generic super/extends (java 泛型中的super/extends)
在最新的ConcurrentHashMap中有这么一个方法声明 @SuppressWarnings("unchecked") public V computeIfAbsent(K key, MappingFunction mappingFunction) { if (key == null || mappingFunction == null)原创 2011-11-18 11:08:02 · 2648 阅读 · 0 评论 -
产品issue 诊断:Java CPU/Memory- Caused by JAX-WS Client
Background我们有个组件使用JAX-WS client来call另外一个组件的web service。新的release发布后,立马出现了cpu issue。Cpu issue截图如下(来自Cacti)经调查发现,是因为我们的Stub对象创建过于频繁所致。每次API调用,都会新建一个Stub对象(创建代码如下)。而JAX-WS Stub对象的创建是cpu-s原创 2011-11-15 18:14:56 · 1958 阅读 · 0 评论 -
An introduction to Java-concurrency
An introduction to Java-concurrencyEffective java - concurrencyView more presentations from leefs原创 2011-10-10 17:42:34 · 750 阅读 · 0 评论 -
java Atomic 包实现
AtomicIntegergetAndSet:设置为新值,返回设置之前的值。此方法为原子性操作,即保证在得到当前值与设置新值之间,没有任何其他更新操作。 public final int getAndSet(int newValue) { for原创 2011-08-24 23:12:46 · 1992 阅读 · 0 评论 -
Hell to Spring AOP : performance Jamon
前言 公司一项目为web型项目,其中一个页面打开花上8-9seconds。要优化,必须的。 首先要找到优化的点所在。在方法开始和结尾处分别使用System.currentTimeMillis(),然后相减固然能得到函数的调用时间。 或者使用cassandra中的latency tracker,都可以。 大哥,你是知道的,我喜欢玩点花活,刚好项目中使用了Spring,所以考虑到了AOP Action JamonPerformanceMonitorInterceptor spring中已经有tra原创 2010-12-24 17:32:00 · 4755 阅读 · 0 评论 -
树的前序与后序遍历 (Pre-order Post-order Traversal)
引子公司里一项目使用work flow, 使用的是JBoss jBPM.存储为xml格式,需求如下1) xml文档和business model: node class 实例之间的相互转换2) 检查整个tree的高度和宽度,避免用户创建太深或者太宽的work flow3) 检查node的名称,不容许有重复的命名xml 样例原创 2010-12-18 14:46:00 · 5603 阅读 · 0 评论 -
java 访问 microsoft access database
前言<br />again, 公司一项目需要中国城市-地区的行政划分表<br /> <br />从网上搜得数据库如下:全国省份城市access版本数据库<br /> <br />转换到我们自己定义的数据库中Actiondb design<br />将三张表(province, city, area)直接合并成一张表<br /> <br />district_def<br />| id | district_id | name | parent_district_id|Data Import<br /><br原创 2010-12-19 17:19:00 · 1131 阅读 · 0 评论 -
Cassandra 源码解析 4: GMS 集群管理
集群管理要做哪些事情:节点的添加。通知大家,I join the group. 引起部分hash空间的重新分布,需要做数据传输(bootstrap);什么时候,新的节点开始响应request?所有group memeber视图一致时。部分节点更新了member视图,部分节点没有更新,如果这时读写数据会有什么结果?节点的删除(宕机)。原则上数据会有N个备份,一台宕机,则会要找寻下一台存放备份节点重启. 不能因为重启而导致rebalancing of the partition 节点之间的heartbeat:检原创 2010-07-01 17:34:00 · 4759 阅读 · 1 评论 -
Cassandra 源码解析 3: 分布式hashtable(DHT) 和 Locator
原理cassandra DHT使用的是consistent hash目的:在增加节点或者减少节点时,避免因为rehash(比如采用取模hash,两个节点时%2, 三个节点时%3,大部分key的hash值随着节点的数目变化而变化)而引起的server 震荡。实现:将hash空间固定,0~2^32,每个node(主机)生成一个hash值,将node映射到hash空间。给定的key,计算其hash值,沿着hash顺时针找到第一个node即使目标主机(如下图,借图一幅)添加节点:很显然,添加一个节点,hash空间的原创 2010-06-30 18:47:00 · 6221 阅读 · 0 评论 -
Cassandra 源码解析 1:网络通信
org.apache.cassandra.thrift - Server 端入口CassandraDaemon: 启动类CassandraServer implements org.apache.cassandra.thrift.Cassandra.Iface : 接口类,类似于web service中的skeletonCustomTThreadPoolServer extends org.apache.thrift.server.TServer :监听类,监听thrift client请求原创 2010-06-29 09:20:00 · 6996 阅读 · 0 评论 -
Cassandra 源码解析 2: 文件流传输 对象序列化
java文件流传输发起端:读文件,写入socket:FileChannel.transferTo SocketChannel //FileStreamTaskSocketChannel channel = SocketChannel.open();// force local binding on correctly specified interface. channel.socket().bind(new InetSocketAddress(FBUtilities.getLoc原创 2010-06-29 17:31:00 · 4756 阅读 · 2 评论 -
java how to
http://www.rgagnon.com/howto.html1. get default charset encodingSystem.out.println(System.getProperty("file.encoding"));System.out.println(java.nio.charset.Charset.defaultCharset().name());原创 2010-06-24 22:34:00 · 709 阅读 · 0 评论 -
Web service message view tool: TCPMon
https://tcpmon.dev.java.net/http://ws.apache.org/commons/tcpmon/tcpmontutorial.html Deploy serviceDeploy a server a local host, e.g, http://127.0.0.1:8080/axis2/ Start TCPMON (As a Expl原创 2010-04-25 08:24:00 · 753 阅读 · 0 评论 -
The evolution of j2EE (1)
http://www.ibm.com/developerworks/websphere/techjournal/0805_knutson/0805_knutson.htmlDate: 14 May 2008 Java EE technologies, present and futureThe remainder of this article looks at转载 2010-04-23 21:57:00 · 769 阅读 · 0 评论 -
The evolution of java
Evolution of JAVA http://en.wikipedia.org/wiki/Java_version_history J2SE 1.4 (Merlin,February 6, 2002)CodenameMerlin. This was the first release of the Java platfo转载 2010-04-23 21:55:00 · 883 阅读 · 0 评论