- 浏览: 525834 次
- 性别:
- 来自: 杭州
最新评论
-
liuwuhen:
...
Pushlet的工作原理 -
fbwfbi:
fengchuizhuming 写道楼主的完全正确。鉴定完毕楼 ...
硬件同步原语(CAS)理论 -
passerby_whu:
uule 写道这个测试后结果为:“testPageConten ...
FutureTask的使用方法和使用实例 -
fengchuizhuming:
楼主的完全正确。鉴定完毕
硬件同步原语(CAS)理论 -
edwardjuice:
FutureTask的使用方法和使用实例
文章列表
今天终于有所斩获,发现了Sun Hotspot JVM GC最全的参数调整列表:
http://blogs.sun.com/watt/resource/jvm-options-list.html
http://www.cnblogs.com/totti19841106/archive/2009/01/12/1374274.html
有关JVM默认值的参考资料如下:
https://gist.github.com/827140
http://hg.openjdk.java.net/jdk6/jdk6/hotspot/file/tip/src/share/vm/runtime/ ...
Java的内存使用完之后,是通过JVM的GC进行回收的。
1 概述
垃圾收集的目的在于清除不再使用的对象。gc通过确定对象是否被活动对象引用来确定是否收集该对象。gc首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象引用遍历。
1.1引用计数(Reference Counting)
通过引用的次数来判断对象是否需要被回收。因为在循环引用时,容易出问题,因此在较新的JVM中被抛弃,这种策略只是在早期的JVM中使用过。
由下图可以看出,
Interger P = new Integer(); Integer对象的引用计数为1.
...
选择排序的基本思想是,每一趟在n-i(i=0....,n-1)个记录中选取关键字最小的记录作为有序序列中的第i个记录。
更加具体的描述如下:
假设有5个待排元素需要升序排列:
第一趟排序,把5个元素中最小的元素拿出来,并把它放在第一个位置上,此时第一个元素的位置已经排好,不需要再排列
第二趟排序,把除掉第一个元素的其它四个元素的最小值求出,并把它放在第二个位置上
。。。。。
直到最后一次为止
选择排序算法的优点
相对于冒泡算法,选择算法减少了交换的次数,由n(n-1)/2到n-1次,但是元素之间的比较次数并没有改变: n(n-1)/2
...
1.排序算法的简要介绍
排序是非常重要的的并且是非常耗时的,所以它已经成为一个计算机科学中广泛研究的课题,而且人们已经研究出了一些非常成熟的算法。目前最简单的排序算法包括:冒泡排序、选择排序和插入排序。每一个算法都由一个实例说明。更加复杂的排序算法包括:希尔排序和快速排序。尽管简单排序算法执行速度相对慢一些,但是仍然值得学习。比如,对于小规模的文件以及基本有序的文件,插入排序算法能比快速排序算法更加有效,实际上,插入排序通常会作为快速排序算法实现的一部分。
2.排序-冒泡排序算法
冒泡排序运行起来非常慢,但在概念上是排序算法中最简单的。
冒泡排序算法描述 ...
1.简介
现摘录一段Java5内存管理白皮书中的一段话:
One strength of the Java™ 2 Platform, Standard Edition (J2SE™) is that it performs automatic memory
management, thereby shielding the developer from the complexity of explicit memory management.
由上面我们可以知道,Java平台采用了自动的内存管理方式,那么JVM是如何进行内存管理的呢?
Java的内存管理实 ...
“生产者-消费者-仓储”模型,包含三种角色:
1.生产者
2.消费者
3.仓库
离开了仓储,生产者消费者模型就显得没有说服力了。
对于此模型,应该明确一下几点:
1、生产者仅仅在仓储未满时候生产,仓满则停止生产。
2、消费者仅仅在仓储有产品时候才能消费,仓空则等待。
3、当消费者发现仓储没产品可消费时候会通知生产者生产。
4、生产者在生产出可消费产品时候,应该通知等待的消费者去消费。
下面的三个类分别代表了生产者,消费者和仓库
package producerconsumer;
/**
* <p>Description: Test&l ...
1.队列的基本知识
和栈相反,队列是一种先进先出(First In First Out,缩写为FIFO)的线性表,它只允许一端进行插入,而在另外一端删除元素。这和我们日常生活中的排队是一致的,最早进入队列的元素最早离开。在队列中,允许插入的一端叫做队尾(rear),允许删除的一端称之为队头(front)。
2.队列的基本操作
InitQueue:构造一个空队列
DestroyQueue:销毁队列
ClearQueue:清空队列
QueueEmpty:判断队列是否为空
QueueLength:队列长度
GetHead:获取队列头部元素
EnQ ...
在网页开发过程中,Keep-Alive是HTTP协议中非常重要的一个属性。大家知道HTTP构建在TCP之上。在HTTP早期实现中,每个HTTP请求都要打开一个socket连接。这种做效率很低,因为一个Web 页面中的很多HTTP请求都指向同一个服务器。例如,很多为Web页面中的图片发起的请求都指向一个通用的图片服务器。持久连接的引入解决了多对已请求服务器导致的socket连接低效性的问题。它使浏览器可以再一个单独的连接上进行多个请求。浏览器和服务器使用Connection头ilai指出对Keep-Alive的支持。
笔者在去年遇到一个跟Keep-Alive的问题:
问题现象:
...
疑难杂症类别是总结了笔者这么多年来开发的经验总结
2006年开发公司里的一个产品时,发现了一个很难解决的问题:
问题现象:Tomcat跑一天Perm Space 报outofMemory的错误,后来就调整JVM的PermSize,调大后,一天稍长时间又出现这个错误,有点晕了。
环境:JDK1.5,Tomcat5,Hibernate+Spring
问题解决:想了半天,原来Hibernate 采用CGLib实现了lasy load的功能,其间要生成新的class,这些class,如果GC不回收,Perm Space当然迟早会溢出。后来一查果然是这个问题CGLib有个b ...
当下面两种情况的SSL,用HttpClient建立连接时,需要使用自定义SSL:
Ability to accept self-signed or untrusted SSL certificates. This
is highlighted by an SSLException
with the message
Unrecognized SSL handshake
(or similar) being thrown when a
connection attempt is made.
You want to use a third ...
栈是重要的数据结构,从数据结构角度看,栈也是线性表,其特殊性在栈的基本操作是线性表的子集。Stack作为最基本的数据结构,在JDK代码中,也有它的实现,java.util.Stack类是继承了Vector类,来实现了栈的基本功能。
1.栈的基本原理
栈(Stack)是限定仅在表尾进行插入或者删除操作的线性表。因此,对于栈来说,表尾端有特殊含义,成为栈顶,表头称之为栈底。
由下图可以看出,栈的最基本的特征是LIFO(Last In First Out),因此栈又被称为后进先出
的线性表。
2.栈的基本操作
InitStack(&S)-- ...