一般要测试软件或者库的性能,需要在多线程条件下进行。本文提供一种编写多线程性能测试的模板,方便大家参考和使用。本文以AES加密和解密为例,并指出Cipher的获取在程序中的不同位置会对程序性能造成的影响。程序代码如下:package com.lazycat.secure.aes; import java.nio.charset.Charset;import
volatile 变量提供了线程的可见性,并不能保证线程安全性和原子性。 什么是线程的可见性: 锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数据做出的更改对于随后
c3p0的配置方式分为三种,分别是 1.setters一个个地设置各个配置项 2.类路径下提供一个c3p0.properties文件 3.类路径下提供一个c3p0-config.xml文件 1.setters一个个地设置各个配置项 这种方式最繁琐,形式一般是这样: Properties props = new Properties(); InputStream i
最近项目日志中总是抛出异常 java.lang.IllegalStateException: getAttribute: Session already invalidated 经调查发现,问题出在HttpSession session.getAttribute("paramName");这个方法执行时。 异常原
1. ActionContext - com.opensymphony.xwork2.ActionContext 它本身就是一个Map,这个Map中存放是Action执行时的上下文,这些上下文也是一些Map组成的,它的大体结构可能就是 Action(Map(session(Map(……)),application(Map
CGlib是什么? CGlib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。 当然这些实际的功能是asm所提供的,asm又是什么?Java字节码操控框架,具体是什么大家可以上网查一查,毕竟我们这里所要讨论的是cglib, cglib就是封装了asm,简化了asm的操作,实现了在运行期动态生成新的
今天有同事问到线程的问题,自己突然就有点蒙了,只模糊的记得个大概。 当初学习线程的时候把这7个状态记得比自己名字还熟悉 还把这7个状态编成了一段凄惨而美丽的爱情故事 没想到如今却只能记得个大概 真验证了“好记性不如烂笔头”的真理 还是赶快回忆一下吧 先从图片开始 小小的作下解释: 1、线程的实现有两种方式,一是继承Thread类,二是
今天碰到一乱码问题,怎么解决都不给力最后解决办法是设置了表单的提交方式,将method设置为post,解决问题。虽然默认的提交方式是post。但是如果不显示设置的话,就会出现我所出现的问题。 总结下处理struts2乱码的几个方法: 1.在struts.xml中添加<constant name="struts.i18n.encoding" value=&q
缓存是有很多层次的,有web server前端缓存,有动态页面静态化,有页面片断缓存,有查询缓存,也有对象缓存。不同层面的缓存适用于不同的应用场景,作用也各自不同,如果可以,你全部一起用上,他们不矛盾,但这个话题比较大,现在不展开谈。 针对OLTP类型的web应用,只要代码写的质量没有问题,最终的性能瓶颈毫无疑问还是数据库查询。应用服务器层面可以水平扩展,但是数据库是
hibernate的保存 hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别: 一、预备知识: 在所有之前,说明一下,对于hibernate,它的对象有三种状态,transient、persistent、detached 下边是常见的翻译办法: transient:瞬态或者自由态 persistent:持久化状态 detach
JVM规范定义了两种类型的类装载器:启动内装载器(bootstrap)和用户自定义装载器(user-defined class loader)。 一. ClassLoader基本概念 1.ClassLoader分类 类装载器是用来把类(class)装载进JVM的。 JVM规范定义了两种类型的类装载器:启动
String是一个特殊的包装类数据。可以用: String str = new String("abc"); String str = "abc"; 两种的形式来创建,第一种是用new()来新建对象的,它会在存放于堆中。每
Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 ◆堆:存放用new产生的数据
public class PassAddr { public static void main(String[] args) { &
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2
常见配置举例 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制.32位系统 下,一般限制在1.5G~2G;64为操作系统对内存无限制.我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m. 典型设置: 
介绍一个看到的很有意思的Java类MemoryUsage,通过MemoryUsage可以查看Java 虚拟机的内存池的内存使用情况。 MemoryUsage类有四个值(均以字节为单位): Init:java虚拟机在启动的时候向操作系统请求的初始内存容量,java虚拟机在运行的过程中可能向操作系统请求更多的内存或将内存释放给操作系统,所以init的值是不确定的。 Used:当前已经使用的内
远程对象方法调用并不是新概念,远程过程调用 (RPC) 已经使用很多年了。远程过程调用被设计为在应用程序间通信的平台中立的方式,它不理会操作系统之间以及语言之间的差异。即 RPC 支持多种语言,而 RMI 只支持 Java 写的应用程序。 [1] 另外 RMI 调用远程对象方
Thread的start和run 1) start: 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Ru
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 作者: Srini Penchikala;Sunny983 原文地址:http://www.onjava.com/pub/a/onjava/2004/12/15/replication2.html 中文地址: http://www.matrix.org.cn/resource/article/
Tomcat 5服务器为集群和SESSION复制提供了集成的支持。本系列的第一篇文章将为大家提供SESSION持久性以及TOMCAT集群中SESSION复制的内在工作机制一个概要认识。我将会讨论SESSION复制在TOMCAT5中是怎样进行的以及跨越多集群节点的SESSION持久性的复制机制。在第2部分,我会详细讨论一个带有SESSION复制功能的TOMCAT集群的安装例子,并且比较不
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? public class test { /**  
今天在整合JPA+Spring+struts1.3时候遇到几个问题,首先就是 Cannot initialize RequestProcessor of class org.springframework.web.struts.DelegatingRequestProcessor 原因没有添加的相应的jar文件,spring2.5核心包中没有spring2.0中的org.spr
今天在整合Spring和Hibernate的时候在配置文件中添加<context:annotation-config />时一直有红色的波浪线在这个代码的下面,后来发现应该xml的头部没有申明context前缀。所以使用下面的spring文件就可以 <beans xmlns="http://www.springframework.
一直对Servlet页面跳转的几种方式理解的糊里糊涂的,今天在网上搜了一把,找到一篇比较好的,记下来,以后看看。 Servlet页面跳转分两部分,一是发生在Servlet,一是在JSP,其实JSP也就是servlet,不过还是有点差异滴。 Servlet: 当然,在servlet中,一般跳转都发生在doGet,
有序否 允许元素重复否
Hiberante3 一级缓存总结1. Session缓存是实体级别的缓存,就是只有在查询对象级别的时候才使用,如果使用HQL和SQL是查询属性级别的,是不使用一级缓存的!切记!!!!4 . iterate&nbs
今天尝试了下Hibernate连接SQL Server2005,将源码放松如下: 同时注意有几点,貌似不能通过"hibernate.hbm2ddl.auto=update"属性在SQL中建立数据库,必须将数据库先手动生成,但是可以自动生成表。另外注意下载SQL 2005的JDBC驱动,我用的是Myeclipse 8,自带hibernate 3.3所以不用下载Hibernate了。Hibernat
原本用SQL 2000版本比较多,最近一直从事SQL 2005培训,将2000数据库灭掉了,本机只有2005版本。用MyEclipse连接数据库已经没有选择。以前也知道连接2005的基本过程,但是还是配置了一段时间。先将具体配置过程以及发生问题排查过程记录下来,希望对大家有所帮助。第一:到微软官方网站下载对应数据库资源包,此处采用sqljdbc_2.0.1607.1_enu.exe,大家也可以到h
今天尝试了下Java连数据库,真是惭愧,第一次接触java到现在已经4年了,一直没有深入研究,今天想写个连数据库的程序,居然都记不起来怎么写了,在网上找了下,结果如下: 1.直接连接,不需要配置什么驱动之类的,什么都不用设置,我用的MyEclipse 8.0,sql 2005import java.sql.Connection;import java.sql.DriverManager;
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号