博客园 - 跳刀的兔子
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=169385
2013-05-25T12:11:15Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
feed.cnblogs.com
https://www.cnblogs.com/shipengzhi/archive/2012/10/09/2716766.html
Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍 - 跳刀的兔子
一、http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。还可以测试HTTPS类的网站请求。下载地址:http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz安装#tar zxvf http_load-12mar2006.tar.gz#cd http_load-12mar2006#make && make install<!--more-->命令
2012-10-09T06:44:00Z
2012-10-09T06:44:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】一、http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。还可以测试HTTPS类的网站请求。下载地址:http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz安装#tar zxvf http_load-12mar2006.tar.gz#cd http_load-12mar2006#make && make install<!--more-->命令 <a href="https://www.cnblogs.com/shipengzhi/archive/2012/10/09/2716766.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2012/09/20/2695825.html
mysql 实战 or、in与union all 的查询效率 - 跳刀的兔子
OR、in和union all 查询效率到底哪个快。网上很多的声音都是说union all 快于 or、in,因为or、in会导致全表扫描,他们给出了很多的实例。但真的union all真的快于or、in?本文就是采用实际的实例来探讨到底是它们之间的效率。1:创建表,插入数据、数据量为1千万【要不效果不明显】。Sql代码droptableifEXISTSBT;createtableBT(IDint(10)NOTNUll,VNamevarchar(20)DEFAULT''NOTNULL,PRIMARYkey(ID))ENGINE=INNODB;该表只有两个字段 ID为主键【索引页
2012-09-20T11:39:00Z
2012-09-20T11:39:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】OR、in和union all 查询效率到底哪个快。网上很多的声音都是说union all 快于 or、in,因为or、in会导致全表扫描,他们给出了很多的实例。但真的union all真的快于or、in?本文就是采用实际的实例来探讨到底是它们之间的效率。1:创建表,插入数据、数据量为1千万【要不效果不明显】。Sql代码droptableifEXISTSBT;createtableBT(IDint(10)NOTNUll,VNamevarchar(20)DEFAULT''NOTNULL,PRIMARYkey(ID))ENGINE=INNODB;该表只有两个字段 ID为主键【索引页 <a href="https://www.cnblogs.com/shipengzhi/archive/2012/09/20/2695825.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2012/09/19/2694247.html
HttpClient4上传图片 - 跳刀的兔子
URI location = new URI(request.getLocationUri()); HttpRequestBase req = null; String responseBody = ""; req = new HttpPost(location); MultipartEntity reqEntity = new MultipartEntity(); for (Map.Entry<String, byte[]> file : uploadFile.entrySet())...
2012-09-19T12:16:00Z
2012-09-19T12:16:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】URI location = new URI(request.getLocationUri()); HttpRequestBase req = null; String responseBody = ""; req = new HttpPost(location); MultipartEntity reqEntity = new MultipartEntity(); for (Map.Entry<String, byte[]> file : uploadFile.entrySet())... <a href="https://www.cnblogs.com/shipengzhi/archive/2012/09/19/2694247.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2012/08/22/2650953.html
避免HttpClient的”javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常 - 跳刀的兔子
在开发https应用时,你的测试服务器常常没有一个(有效的)SSL证书。在你的客户端连接测试服务器时,如下的异常会被抛出:”javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”。我将讨论使用Apache HttpClient时,解决该问题的一种方法(http://hc.apache.org/httpcomponents-client/)。1. 代码片段通常,你会像下面那样来创建HttpClient:this.client = new DefaultHttpClient();我们将需要告诉client使用一个不同的Tr
2012-08-22T07:44:00Z
2012-08-22T07:44:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】在开发https应用时,你的测试服务器常常没有一个(有效的)SSL证书。在你的客户端连接测试服务器时,如下的异常会被抛出:”javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”。我将讨论使用Apache HttpClient时,解决该问题的一种方法(http://hc.apache.org/httpcomponents-client/)。1. 代码片段通常,你会像下面那样来创建HttpClient:this.client = new DefaultHttpClient();我们将需要告诉client使用一个不同的Tr <a href="https://www.cnblogs.com/shipengzhi/archive/2012/08/22/2650953.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2012/06/08/2541626.html
最固执的是人心 - 跳刀的兔子
1* 最固执的,是一个人的心。 你可以说服所有人,却说服不了自己的心。 你说你要放弃,你说你要忘记, 你说你过得很好,你总是笑颜如花, 连别人都觉得你是真的很开心, 那么你的心呢? 是真的快乐吗? 呵呵 没事,自己懂就好。 你很快乐,不是吗? 2* 好听的话谁都会说, 可是说完之后谁又记得, 谁说谁一直都在, 谁说谁不会离开, 可是现在呢? 谁在你身边说着不离? 你又在谁的身边说着不弃? 诺言之类只有听的人才会记得。 蒲色号一七一一三一五零五零 3* 这个世界上, 有喜欢你的人, 自然也有不喜欢你的人。 可是呢?有多少人在纠结着自己。 爱你...
2012-06-08T04:58:00Z
2012-06-08T04:58:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】1* 最固执的,是一个人的心。 你可以说服所有人,却说服不了自己的心。 你说你要放弃,你说你要忘记, 你说你过得很好,你总是笑颜如花, 连别人都觉得你是真的很开心, 那么你的心呢? 是真的快乐吗? 呵呵 没事,自己懂就好。 你很快乐,不是吗? 2* 好听的话谁都会说, 可是说完之后谁又记得, 谁说谁一直都在, 谁说谁不会离开, 可是现在呢? 谁在你身边说着不离? 你又在谁的身边说着不弃? 诺言之类只有听的人才会记得。 蒲色号一七一一三一五零五零 3* 这个世界上, 有喜欢你的人, 自然也有不喜欢你的人。 可是呢?有多少人在纠结着自己。 爱你... <a href="https://www.cnblogs.com/shipengzhi/archive/2012/06/08/2541626.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2012/02/22/2363496.html
Spring2.5+JUnit4.4做单元测试时遇到的异常 - 跳刀的兔子
Spring2.5+JUnit4.4做单元测试时遇到这个异常1903[Thread-3] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -Retrieved dependent beans for bean 'userDAO':[com.bontade.tests.unit.models.UserDAOTest]1903[Thread-3] DEBUG org.springframework.beans.factory.support.DefaultListableBeanF
2012-02-22T09:30:00Z
2012-02-22T09:30:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】Spring2.5+JUnit4.4做单元测试时遇到这个异常1903[Thread-3] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -Retrieved dependent beans for bean 'userDAO':[com.bontade.tests.unit.models.UserDAOTest]1903[Thread-3] DEBUG org.springframework.beans.factory.support.DefaultListableBeanF <a href="https://www.cnblogs.com/shipengzhi/archive/2012/02/22/2363496.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/10/26/2224631.html
海量数据处理:十道面试题与十个海量数据处理方法总结 - 跳刀的兔子
第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法, 比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大 的几个)及相应的频率。然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求。或者如下阐述(雪域之鹰):算法思想:分而治之+Hash1.IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理;
2011-10-25T16:08:00Z
2011-10-25T16:08:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法, 比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大 的几个)及相应的频率。然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求。或者如下阐述(雪域之鹰):算法思想:分而治之+Hash1.IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理; <a href="https://www.cnblogs.com/shipengzhi/archive/2011/10/26/2224631.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/07/22/2114174.html
hibernate缓存机制 - 跳刀的兔子
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。基本信息 缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓存数据的生命周期。 Hibernate的缓存包括Session的缓存和SessionFactory的缓存,其中SessionFactory的缓存又可以分为两类:内置缓存和外置缓存。Sessio.
2011-07-22T09:18:00Z
2011-07-22T09:18:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。基本信息 缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓存数据的生命周期。 Hibernate的缓存包括Session的缓存和SessionFactory的缓存,其中SessionFactory的缓存又可以分为两类:内置缓存和外置缓存。Sessio. <a href="https://www.cnblogs.com/shipengzhi/archive/2011/07/22/2114174.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/07/12/2104633.html
使用Collections.emptyList()生成的List不支持add方法 - 跳刀的兔子
今天使用Collections.emptyList(),返回一个空的List 但是发现它不支持Add功能,调用Add会抛出unsupportedException, 在以后要返回一个空的List,并还需要后续操作时,不能使用Collections.emptyList()方法,看文档发现,List的实现类都有自己的实现,而返回的EmptyList的实现没有实现add(int index, E element方法,使用了 AbstractList.add(int index, E element){ throw new UnsupportedOperationException(); }
2011-07-12T10:40:00Z
2011-07-12T10:40:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】今天使用Collections.emptyList(),返回一个空的List 但是发现它不支持Add功能,调用Add会抛出unsupportedException, 在以后要返回一个空的List,并还需要后续操作时,不能使用Collections.emptyList()方法,看文档发现,List的实现类都有自己的实现,而返回的EmptyList的实现没有实现add(int index, E element方法,使用了 AbstractList.add(int index, E element){ throw new UnsupportedOperationException(); } <a href="https://www.cnblogs.com/shipengzhi/archive/2011/07/12/2104633.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/07/09/2101785.html
Effective Java学习笔记-对于所有对象都通用的方法 - 跳刀的兔子
第8条:覆盖equals时请遵守通用约定1.什么时候应该覆盖Object.equals呢? 如果类具有自己特有的“逻辑相等”概念(不同于对象等同的概念),而且超类还没有覆盖equals以实现期望的行为,这时就需要覆盖equals方法。(“值类”,仅仅表示一个值的类,例如:Integer或者Date) ==与equals的区别:==比较的是内存中的地址,比较的是对象的句柄,对象等同;而equals()比较的是地址内的内容,比较的是对象,逻辑相同. 有一种值类不需要覆盖equals方法,即实例受控确保“每个值之多值存在一个对象”,例如枚举类型,这样的类,逻辑相同与对象等同是一回事。2.覆盖equa
2011-07-09T07:03:00Z
2011-07-09T07:03:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】第8条:覆盖equals时请遵守通用约定1.什么时候应该覆盖Object.equals呢? 如果类具有自己特有的“逻辑相等”概念(不同于对象等同的概念),而且超类还没有覆盖equals以实现期望的行为,这时就需要覆盖equals方法。(“值类”,仅仅表示一个值的类,例如:Integer或者Date) ==与equals的区别:==比较的是内存中的地址,比较的是对象的句柄,对象等同;而equals()比较的是地址内的内容,比较的是对象,逻辑相同. 有一种值类不需要覆盖equals方法,即实例受控确保“每个值之多值存在一个对象”,例如枚举类型,这样的类,逻辑相同与对象等同是一回事。2.覆盖equa <a href="https://www.cnblogs.com/shipengzhi/archive/2011/07/09/2101785.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/07/09/2101738.html
Effective Java学习笔记-通用程序设计 - 跳刀的兔子
第45条:将局部变量的作用域最小化1.在第一次使用变量时的地方声明;2.几乎每个局部变量的声明都应该包含一个初始表达式;变量最好在try-catch里被初始化,不然一个变量被一个方法初始化时可能会抛出受检的异常(checked exception)。如果必须在try之前初始化,那么它必须是“无意义地初始化”,如:string s = null;3.如果在终止循环之后不需要循环变量的内容,for循环优于while循环。(for循环比while循环还有个优势:更简洁,增强可读性)第46条:for-each循环优于传统的for循环1.对于多个集合进行嵌套迭代时,for-each循环优势更明显,使用传
2011-07-09T05:07:00Z
2011-07-09T05:07:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】第45条:将局部变量的作用域最小化1.在第一次使用变量时的地方声明;2.几乎每个局部变量的声明都应该包含一个初始表达式;变量最好在try-catch里被初始化,不然一个变量被一个方法初始化时可能会抛出受检的异常(checked exception)。如果必须在try之前初始化,那么它必须是“无意义地初始化”,如:string s = null;3.如果在终止循环之后不需要循环变量的内容,for循环优于while循环。(for循环比while循环还有个优势:更简洁,增强可读性)第46条:for-each循环优于传统的for循环1.对于多个集合进行嵌套迭代时,for-each循环优势更明显,使用传 <a href="https://www.cnblogs.com/shipengzhi/archive/2011/07/09/2101738.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/07/07/2100300.html
远程无法访问JBOSS的解决方案 - 跳刀的兔子
jboss4.2以上版本,服务器无法通过IP地址去访问,只能用127.0.0.1或者localhost来访问,在其他机器上访问不了jboss服务。解决方法:启动JBOSS的时候配置: -b 本地Ip原因分析: JBOSS 4.2以上版本服务启动如果不加任何参数的话,只监听127.0.0.1,就是说只能用127.0.0.1或者localhost访问,用本机的对外地址 访问不了,同一网络内别的机子没法访问。除非你用参数-b ip地址 来绑定监听的地址才可以。这和以前版本的JBOSS不一样,以前版本的不加任何参数是监听本机所有的IP地址,现在必须使用参数-b 0.0.0.0才可以监听全部地址。
2011-07-07T09:15:00Z
2011-07-07T09:15:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】jboss4.2以上版本,服务器无法通过IP地址去访问,只能用127.0.0.1或者localhost来访问,在其他机器上访问不了jboss服务。解决方法:启动JBOSS的时候配置: -b 本地Ip原因分析: JBOSS 4.2以上版本服务启动如果不加任何参数的话,只监听127.0.0.1,就是说只能用127.0.0.1或者localhost访问,用本机的对外地址 访问不了,同一网络内别的机子没法访问。除非你用参数-b ip地址 来绑定监听的地址才可以。这和以前版本的JBOSS不一样,以前版本的不加任何参数是监听本机所有的IP地址,现在必须使用参数-b 0.0.0.0才可以监听全部地址。 <a href="https://www.cnblogs.com/shipengzhi/archive/2011/07/07/2100300.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/06/22/2087707.html
Effective Java学习笔记-方法 - 跳刀的兔子
第38条:检查参数的有效性1.应该在错误出现之后尽快的检测出错误;2.对于公有的方法,要用javac的@throws标签在文档中说明违反参数值限制时会抛出的异常,异常有IllegalArgumentException,IndexOutOfBoundsException,NullPointerException(详见60条);3.非公有的方法通常应使用断言(assert)来检查 它们的参数,如果断言失败,将会抛出AssertionError;也不同于一般的有效性校验,如果它们没有起到作用,本质上不会有成本的开销;4.当有效性检验工作非常昂贵,或者不切实际的,而且有效性校验已经隐含在计算过程中完成
2011-06-22T15:44:00Z
2011-06-22T15:44:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】第38条:检查参数的有效性1.应该在错误出现之后尽快的检测出错误;2.对于公有的方法,要用javac的@throws标签在文档中说明违反参数值限制时会抛出的异常,异常有IllegalArgumentException,IndexOutOfBoundsException,NullPointerException(详见60条);3.非公有的方法通常应使用断言(assert)来检查 它们的参数,如果断言失败,将会抛出AssertionError;也不同于一般的有效性校验,如果它们没有起到作用,本质上不会有成本的开销;4.当有效性检验工作非常昂贵,或者不切实际的,而且有效性校验已经隐含在计算过程中完成 <a href="https://www.cnblogs.com/shipengzhi/archive/2011/06/22/2087707.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/06/07/2074396.html
数据库连接池简介 - 跳刀的兔子
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一
2011-06-07T08:13:00Z
2011-06-07T08:13:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一 <a href="https://www.cnblogs.com/shipengzhi/archive/2011/06/07/2074396.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/06/06/2073648.html
2011/6/6Java学习笔记之JVM中的Stack和Heap - 跳刀的兔子
JVM的内存分为两部分:Stack和Heap。 在JVM中,静态属性保存在Stack指令内存区,动态属性保存在Heap数据内存区。Stack(栈)是JVM的内存指令区。Stack管理很简单,push一定长度字节的数据或者指令,Stack指针压栈相应的字节位移;pop一定字节长度数据或者指令,Stack指针弹栈。Stack的速度很快,管理很简单,并且每次操作的数据或者指令字节长度是已知的。所以Java 基本数据类型,Java 指令代码,常量都保存在Stack中。Heap(堆)是JVM的内存数据区。Heap 的管理很复杂,每次分配不定长的内存空间,专门用来保存对象的实例。在Heap 中分配一定的内
2011-06-06T07:05:00Z
2011-06-06T07:05:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】JVM的内存分为两部分:Stack和Heap。 在JVM中,静态属性保存在Stack指令内存区,动态属性保存在Heap数据内存区。Stack(栈)是JVM的内存指令区。Stack管理很简单,push一定长度字节的数据或者指令,Stack指针压栈相应的字节位移;pop一定字节长度数据或者指令,Stack指针弹栈。Stack的速度很快,管理很简单,并且每次操作的数据或者指令字节长度是已知的。所以Java 基本数据类型,Java 指令代码,常量都保存在Stack中。Heap(堆)是JVM的内存数据区。Heap 的管理很复杂,每次分配不定长的内存空间,专门用来保存对象的实例。在Heap 中分配一定的内 <a href="https://www.cnblogs.com/shipengzhi/archive/2011/06/06/2073648.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/06/02/2068628.html
2011/6/2Java笔记之对象池2(commons-pool) - 跳刀的兔子
创建新的对象并初始化的操作,可能会消耗很多的时间。在这种对象的初始化工作包含了一些费时的操作(例如,从一台位于20,000千米以外的主机上读出一些数据)的时候,尤其是这样。在需要大量生成这样的对象的时候,就可能会对性能造成一些不可忽略的影响。要缓解这个问题,除了选用更好的硬件和更棒的虚拟机以外,适当地采用一些能够减少对象创建次数的编码技巧,也是一种有效的对策。对象池化技术(Object Pooling)就是这方面的著名技巧,而Jakarta Commons Pool组件则是处理对象池化的得力外援。 说明:英语中的Pool除了“池”之外,还有“供多方共享的资源”意思。对象池化技术对象池化的基本思
2011-06-02T08:14:00Z
2011-06-02T08:14:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】创建新的对象并初始化的操作,可能会消耗很多的时间。在这种对象的初始化工作包含了一些费时的操作(例如,从一台位于20,000千米以外的主机上读出一些数据)的时候,尤其是这样。在需要大量生成这样的对象的时候,就可能会对性能造成一些不可忽略的影响。要缓解这个问题,除了选用更好的硬件和更棒的虚拟机以外,适当地采用一些能够减少对象创建次数的编码技巧,也是一种有效的对策。对象池化技术(Object Pooling)就是这方面的著名技巧,而Jakarta Commons Pool组件则是处理对象池化的得力外援。 说明:英语中的Pool除了“池”之外,还有“供多方共享的资源”意思。对象池化技术对象池化的基本思 <a href="https://www.cnblogs.com/shipengzhi/archive/2011/06/02/2068628.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/06/02/2068565.html
2011/6/2Java笔记之对象池1(commons-pool) - 跳刀的兔子
ObjectPoolObjectPool 定义了一个简单的池接口 BaseObjectPool以下三个类的父类 A simple base implementation of ObjectPool. Optional operations are implemented to either do nothing, return a value indicating it is unsupported or throw UnsupportedOperationException. GenericObjectPool: 采用LIFO/FIFO结构实现ObjectPool接口。池的默认行为是一个LI
2011-06-02T07:29:00Z
2011-06-02T07:29:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】ObjectPoolObjectPool 定义了一个简单的池接口 BaseObjectPool以下三个类的父类 A simple base implementation of ObjectPool. Optional operations are implemented to either do nothing, return a value indicating it is unsupported or throw UnsupportedOperationException. GenericObjectPool: 采用LIFO/FIFO结构实现ObjectPool接口。池的默认行为是一个LI <a href="https://www.cnblogs.com/shipengzhi/archive/2011/06/02/2068565.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/06/02/2068541.html
简单理解耗时的Java GC - 跳刀的兔子
java GC工作在分代的模型上。大多数的对象要么很快的死亡,要么持续较长的时间。例如,方法栈中创建的对象只会持续几毫秒时间,而缓存中的对象会持续几分钟。既然对象有两种不同的什么周期,直觉认为,使用不同的垃圾收集算法也许能够在不同的周期中更好的完成工作。所以,JVM把堆空间拆封为两个不同的区域,新生代,旧生代。当对象刚开始创建的时候,会被分配到新生代。当对象在新生代中经过多次gc后,依然存活时,就假设这个对象将持续较长时间,就把这个对象复制到旧生代中去。JVM加上启动参数-XX:+UseParNewGC 和 -XX:+UseConcMarkSweepGC将为新生代启用Parallel New
2011-06-02T07:12:00Z
2011-06-02T07:12:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】java GC工作在分代的模型上。大多数的对象要么很快的死亡,要么持续较长的时间。例如,方法栈中创建的对象只会持续几毫秒时间,而缓存中的对象会持续几分钟。既然对象有两种不同的什么周期,直觉认为,使用不同的垃圾收集算法也许能够在不同的周期中更好的完成工作。所以,JVM把堆空间拆封为两个不同的区域,新生代,旧生代。当对象刚开始创建的时候,会被分配到新生代。当对象在新生代中经过多次gc后,依然存活时,就假设这个对象将持续较长时间,就把这个对象复制到旧生代中去。JVM加上启动参数-XX:+UseParNewGC 和 -XX:+UseConcMarkSweepGC将为新生代启用Parallel New <a href="https://www.cnblogs.com/shipengzhi/archive/2011/06/02/2068541.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/05/28/2061046.html
2011/5/28JAVA随笔之线程编程(Executor框架) - 跳刀的兔子
1.关键字synchronized 如果一个方法声明为synchronized,那么调用这个方法要求拥有对象的锁。如果这个锁被另一个线程所拥有,线程又调用synchronized方法块,那么线程会被放入对象锁的进入集合。进入集合表示等待锁 可用线程的集合。 如果当调用一个synchronized方法时,锁可用,那么调用线程成为对象锁的所有者,可进入该方法。 当线程退出方法时,释放锁。如果释放锁时锁的进入集合不为空,JVM任意选择该集合中的线程作为锁的所有者(“任意”,大多数虚拟机按照FIFO策略排列等待集合中的线程)。2.Java中的线程同步 同步可重入锁 信号量 条件变量 线程Synchro
2011-05-28T12:33:00Z
2011-05-28T12:33:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】1.关键字synchronized 如果一个方法声明为synchronized,那么调用这个方法要求拥有对象的锁。如果这个锁被另一个线程所拥有,线程又调用synchronized方法块,那么线程会被放入对象锁的进入集合。进入集合表示等待锁 可用线程的集合。 如果当调用一个synchronized方法时,锁可用,那么调用线程成为对象锁的所有者,可进入该方法。 当线程退出方法时,释放锁。如果释放锁时锁的进入集合不为空,JVM任意选择该集合中的线程作为锁的所有者(“任意”,大多数虚拟机按照FIFO策略排列等待集合中的线程)。2.Java中的线程同步 同步可重入锁 信号量 条件变量 线程Synchro <a href="https://www.cnblogs.com/shipengzhi/archive/2011/05/28/2061046.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shipengzhi/archive/2011/05/28/2060938.html
2011/5/28操作系统学习笔记之经典同步问题 - 跳刀的兔子
进程同步之经典同步问题1.有限缓存问题 生产者通过调用insert()函数,将一个数据项放入缓冲区;消费者通过调用remove()移出数据项。public class BoundedBuffer { private static final int BUFFER_SIZE = 5; //缓冲区的容量 private Object[] buffer; private int in,out; private Semaphore mutex; //提供了对缓冲区访问的互斥要求,初始化为1 private Semaphore empty; //表示空缓冲项的个数,初始化为缓冲区的容量 private
2011-05-28T10:38:00Z
2011-05-28T10:38:00Z
跳刀的兔子
https://www.cnblogs.com/shipengzhi/
【摘要】进程同步之经典同步问题1.有限缓存问题 生产者通过调用insert()函数,将一个数据项放入缓冲区;消费者通过调用remove()移出数据项。public class BoundedBuffer { private static final int BUFFER_SIZE = 5; //缓冲区的容量 private Object[] buffer; private int in,out; private Semaphore mutex; //提供了对缓冲区访问的互斥要求,初始化为1 private Semaphore empty; //表示空缓冲项的个数,初始化为缓冲区的容量 private <a href="https://www.cnblogs.com/shipengzhi/archive/2011/05/28/2060938.html" target="_blank">阅读全文</a>