- 浏览: 305565 次
- 性别:
- 来自: 北京
最新评论
-
kongdong88:
Netty简单应用与线上服 ...
用Netty实现的一个简单的HTTP服务器 -
phili1999:
兄弟,此乃Eclipse的bug,至今未解决,可见国人地位低啊 ...
eclipse的控制台在UTF-8编码下键盘输入BUG问题,请问有谁能解决 -
xiaguobing:
谢谢分享啊
MetaQ初探 -
ih0qtq:
...
java性能编码规范整理
文章列表
Inside-springframework
http://blog.csdn.net/dudutu/article/category/306140
ConcurrentHashMap之实现细节
http://www.iteye.com/topic/344876
hessian
http://www.iteye.com/topic/245238
http://agapple.iteye.com/blog/949266
http://blog.163.com/jekyll_zhou@126/blog/static/182047382012103033035925/
http ...
前段时间在一个项目的性能测试中又发生了一次OOM(Out of swap sapce),情形和以前网店版的那次差不多,比上次更奇怪的是,此次搞了几天之后啥都没调整系统就自动好了,死活没法再重现之前的OOM了!问题虽然蹊跷,但也趁此机会再次对JVM堆模型、GC垃圾算法等进行了一次系统梳理; 基本概念 堆/Heap JVM管理的内存叫堆;在32Bit操作系统上有4G的限制,一般来说Windows下为2G,而Linux 下为3G;64Bit的就没有这个限制。 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64但小于1G。 JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4但小 ...
mysql数据库备份与还原命令
- 博客分类:
- 数据库技术
还原一个数据库:mysql -h localhost -u root -p123456 www备份一个数据库:mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql其中WWW为数据库名//以下是在程序中进行测试//$command = “mysqldump –opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile”;$command=”mysqldump -h localhost -u root -p123456 ...
gc日志分析工具
- 博客分类:
- java技术
- java技术 jvm
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析。
Gc日志参数
通过在tomcat启动脚本中添加相关参数生成gc日志
-verbose.gc ...
为提高hash表查找性能,除了考虑选择合适的hash表表长和完美的hash函数外,还必须考虑hash表处理冲突的能力。当hash函数对两个不同的数据项产生了相同的hash值时,冲突就产生了。对于冲突的处理,通常采用的方法可以分为三类 ...
转 淘宝屏蔽百度的原因
- 博客分类:
- 生活随想
周末看的消息,搜狐博客和淘宝相继封了百度的爬虫,搜狐还封了google的蜘蛛,搜狐的目的,搜狐编辑博客已经说清了,就是要向facebook学习,不为别人做嫁衣,当然也是不让别人哪天封了自己,先下手为强,到时候让百度google被别人笑话,至于到时候是谁被笑话,现在还说不清楚,暂时不说这个。
昨天在新浪看到洪波先生的文章:淘宝封百度爬虫赌什么,洪波先生一向是我敬重的前辈,因此相当仔细看完了整篇文章,有一些想法想和洪波先生商榷。
我个人的看法,淘宝这次之所以屏蔽百度的爬虫,原因恐怕最主要的不见得是因为业务冲突。如果真的是因为业务冲突的话,那么要屏蔽百度的恐怕就不只是淘宝一家了,按照这个思路, ...
iterator与iterable关系
- 博客分类:
- 设计模式
用Iterator模式实现遍历集合Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。例如,如果没有使用Iterator,遍历一个数组的方法是使用索引:for(int i=0; i<array.size(); i++) { ... get(i) ... }而访问一个链表(LinkedList)又必须使用while循环:while((e=e.next())!=null) { ... e.data() ... }以上两种方法客户端都必须事先知道集合的内部结构,访问代码和集合本身是紧耦合,无法将访问逻辑从集 ...
ByteBuffer使用
- 博客分类:
- java技术
在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入缓冲区.缓冲区是定长的,基本上它只是一个列表,它的所有元素都是基本数据类型
java实现迭代遍历接口的队列(Queue)
- 博客分类:
- 设计模式
public class Queue<Item> implements Iterable<Item>{
private Node first;
private Node last;
private int N;
private class Node{
Item item;
Node next;
}
public boolean isEmpty(){ return first == null;}
public int size(){ return N;}
public void enqueue(Item item){
Node ...
//实现Iterable接口,实现迭代遍历
public class Stack<Item> implements Iterable<Item>{
private Node first;
private int N;
//定义内部类作为栈中的每一个节点
private class Node{
Item item;
Node next;
}
public boolean isEmpty(){
return first==null;
}
public int size(){
return N;
}
pu ...
缘起 (Motivation/intent)
JavaScript中可以遍历对象中的属性,但Java却没有这样的语言支持。例如一个普通POJO对象UserBean
public class UserBean {
private int id;
private String name;
private Date birthdate;
// getters & setters
}
现在想遍历对象中每个属性,获得如下的效果
UserBean user = new UserBean(1234, &q ...
和原型模式一样,迭代器模式也基本不需要自己实现了,Java中提供了Iterator接口,可直接实现迭代器。迭代器模式也非常简单,就是为不同的集合统一遍历接口。这里看下Java中迭代器的实现代码,以ArrayList为例
//ArrayList实现了List接口
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
//List继承了Collection
...
可能大家都没有注意,Collection接口的父接口是java.lang.Iterable在这个接口中定义的是iterator方法并且这个接口中指出 “实现这个接口允许对象成为 "foreach" 语句的目标”这就是说,所有的集合类都要实现iterator方法都可以返回一个Iterator对象,完成迭代功能下面写一个示例代码演示一下package iterator;
import java.util.Iterator;
/*
* Jimliu
*
* 这个例子为了试验java.lang.Iterable接口中提到的:
* 实现这个接口允许对象成 ...
Bloom Filter 总结
- 博客分类:
- 算法
1 Overview
Bloom filter最早由 Burton Howard Bloom提出,是一种用于判断成员是否存在于某个集合中的数据结构。 Bloom filter的判断基于概率论:
如果某个成员存在于集合中,那么Bloom filter不会返回假(即不存在),也就是说false negative是不可能的。
如果某个成员实际上不存在于集合中,Bloom filter可能返回真(即存在),这种情况被称为false positive。
Bloom filter通常被实现为一个包含 m 位的位数组(bit array),所有位的初始值都为0。 Bloom f ...
用java实现生产者和消费者问题 .
- 博客分类:
- java技术
package javaTest;
//测试类
public class ProCon{
public static void main(String[] args){
SyncQueue queue = new SyncQueue();
Consumer p = new Consumer(queue);
Producer c = new Producer(queue);
new Thread(p).start();
new Thread(c).start();
...