- 博客(18)
- 收藏
- 关注
Netty长连接的事件处理顺序问题
最近的一个线上项目(认证服务器)老是出现服务延迟的情况。具体的问题描述:(1)客户端发送一个请求A(长连接),在服务器端的业务层需要20秒以上才能接收到。(2)客户端发送一个请求B(端连接),在服务器端的业务层可以迅速接收到。从现象大致知道问题出在服务器端的网络接收层,大量通过长连接发送过来的请求都堵塞在网络层得不到处理(在网络层排队,还没到应用层)。(友情提示:本博文章欢迎转...
2012-05-10 22:09:41
265
原创 线上应用故障排查之二:高内存占用
前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查。搞Java开发的,经常会碰到下面两种异常:1、java.lang.OutOfMemoryError: PermGen space 2、java.lang.OutOfMemoryError: Java heap space 要详细解释这两种异常,需要简单重提下Java内存模型。(友情提示:本博文章欢...
2012-05-10 22:07:10
3852
1
原创 线上应用故障排查之一:高CPU占用
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hankchen)以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。通过ps aux |...
2012-05-10 22:05:06
1946
原创 线上应用故障排查系列
线上应用的故障排查能力是一个高级软件开发人员的必修课,也最能体现一个技术人员的工作经验和能力。所以,这也是我面试别人的一个必考题目之一。我打算把自己在这方面的实际经验写成系列文章,主要包括下面这些内容: 1、线上应用故障排查之一:高CPU占用2、线上应用故障排查之二:高内存占用3、线上应用故障排查之三:高I/O占用,包括磁盘I/O、网络I/O、数据库I/O等。4、线上应...
2012-05-10 22:02:06
234
使用Netty实现通用二进制协议的高效数据传输
Netty是一个高性能的NIO通信框架,提供异步的、事件驱动的网络编程模型。使用Netty可以方便用户开发各种常用协议的网络程序。例如:TCP、UDP、HTTP等等。 Netty的最新版本是3.2.7,官网地址是:http://www.jboss.org/netty 本文的主要目的是基于Netty实现一个通用二进制协议的高效数据传输。协议是通用的二进制协议,高效并且扩展性很好。 一个好的协议有两个...
2012-02-04 16:33:00
291
原创 想深入了解Java高性能开发,大家推荐个开源项目研究下
从毕业到现在已有两年,最近对Java服务器开发很感兴趣。这一块对性能要求比较高,不像之前从事的Web开发。涉及的技术也比较广泛:多线程、网络编程、NIO等等。个人觉得要想深入理解这些知识,必须研究相关开源项目的源代码。请大家推荐一到两个,一起学习下。...
2010-06-04 22:42:42
144
linux下Memcached安装步骤详解
Linux下Memcached安装步骤详解(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hankchen)1. 首先下载memcached 和 libevent 包。 Memcached用到了libevent这个库用于Socket的处理。下面是下载的两个包文件:libevent-1.4.12-stable....
2010-01-04 13:32:00
144
jQuery Ajax应用总结
(友情提示:本博文章欢迎转载,但请注明出处:陈新汉,http://www.blogjava.net/hankchen) jQuery提供了简单而强大的选择器功能,同时对Ajax操作也给出了很好的支持。在Ajax方面,jQuery除了提供底层的jQuery.ajax()方法外,也提供了下面的简单方法:(1) jQuery.get(url, [data], [callback], ...
2010-01-04 13:27:00
127
Java 5.0 高性能程序开发总结(不断补充)
(友情提示:本博文章欢迎转载,但请注明出处:陈新汉,http://www.blogjava.net/hankchen)一、并发集合类的选择 同步的集合类Hashtable和Vector,以及同步的包装器类Collections.synchronizedMap和Collections.synchronizedList,为Map和List提供了基本的有条件的线程安全的实现。然而,某些因素使得...
2009-12-30 16:54:00
103
一道Java多线程面试题的解答
最近看到一道面试题,比较有意思:有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC…由于线程执行的不确定性,要保证这样有序的输出,必须控制好多线程的同步。线程同步有两种基本方法:(1) synchronized(2) wait,notify,notifyAll现在分别采用这两种方法来解答这道题目。/*** @author...
2009-12-29 20:58:00
122
Webharvest网络爬虫应用总结
Web-Harvest是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。其实现原理是,根据预先定义的配置文件用httpclient获取页面的全部内容(关于httpclient的内容,本博有些文章已介绍),然后运用XPath、XQuery、正则表达式等这些技术来实现对text/xml的内容筛选操作,选取精确的数据。前两年比较火的垂直搜索(比如:酷讯...
2009-09-22 11:58:00
156
设计模式重构应用---Decorator模式
先简单介绍Decorator 模式(装饰模式)的内容和应用场景。 装饰模式可以动态地给一个对象添加额外的职责。虽然,利用子类继承也可以实现这样的功能,但是装饰模式提供了一个更灵活的方式。因为继承会为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。 下面是标准Decorator 模式的UML结构图: ...
2009-09-19 10:52:00
97
设计模式重构应用---Template Method模式
先简单介绍Template Method模式的内容和应用场景。 Template Method模式也叫模板方法模式,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。 在作为抽象类的父类里,定义了一个具有固定算法并可以细分为多个步骤的模板方法(public),Template Method模式把这些可以被细分的可变步骤抽象为可以被子类...
2009-09-18 16:22:00
130
《重构与模式》读后感
刚刚看完《重构与模式》这本书,收获很多。确实有该书序言所说的“打通重构与模式任督二脉”的感觉。设计模式的书籍看过不少,从经典的GOF的《设计模式》、《设计模式解析》,到《Java与模式》,再到《Head First Design Pattern》等等。重构方面的书看过《重构:改善既有代码的设计》。但是,《重构与模式》这本书的收获最大。《重构与模式》一书,最大的特点是:例...
2009-09-18 16:11:00
232
利用httpclient模拟站点的登录发帖回复
本文采用 HttpClient 来模拟站点的登录发帖回复,介绍 HttpClient 的用法和常见问题的解决方案。 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供支持 HTTP 协议的客户端编程工具包,模拟浏览器的行为。它提供了很多的方法来简化网络的访问,虽然大部分的功能可以使用较底层的 java.net.HttpURLConnection...
2009-09-17 08:42:00
413
JS操作JSON总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不需要任何特殊的 API 或工具包。本文主要是对JS操作JSON的方法做下总结。在JSON中,有两种结构:对象和数组。 1. 一个对象...
2009-09-15 21:58:00
174
数据库批量数据插入问题分析
在数据库的相关开发中,经常会遇到数据的批量插入问题。本文主要是通过实验的方式探讨批量数据插入的瓶颈,以及优化建议。以10w条记录的插入作为实验对象,采用下面的几种方法插入:1. 普通插入:普通的一条条插入2. 普通插入+手动提交:setAutoCommit(false)、commit()3. 普通插入+手动提交+ prepareStatement方式...
2009-09-01 12:57:00
136
开博说明
其实,我算是一个喜欢总结和归纳的人,工作一年来,写了一些技术文章和工作感悟。但多半是以Word的形式存档起来,或者仅仅是发布在QQ的个人空间。我一直欣赏一个前辈的话:经验在于积累,而不在于年限。要提升自己的功力,除了不断的学习之外,就是不断的自我总结和归纳。今天,我突然发现,其实还有一条:就是分享!所以,我要把自己的感悟和总结晒出来,大家一起学习,一起进步。...
2009-08-31 11:53:00
116
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人