点滴记忆*记忆点滴
收藏本站

java 创建单例模式的几种方式及注意事项

    单例模式是java 设计中常用创建模式,特别适合于一些可以共用,及特别占用资源的类的创建。

    创建单例模式类方式常被分为懒汉式和饿汉式。下面简单列出各种方式代码并简单分析。

   

懒汉式一

/**
 * 单例模式测试
 * @author tjx
 */
public class SingleTest {
	//这是饿汉式,类一加载就创建改类对象创建好。
	//这种方式优点:简单,快捷,不需要考虑同步
	//缺点:如果该类的创建是比较...

阅读全文>>

深入理解java String

    字符串是最常用的数据类型,甚至比基本类型还用的多。正因如此,java 也对String 做了一些特殊处理,使得我们在编程时使用String 和 使用自动装箱的基本数据类型包装类很相似。

如:

     包装类: Integer a = 1;    a =a+1;

     String:   String a ="abc";  a=a+"d";

但不要因此就认为String...

阅读全文>>

通过实现原理及源代码分析HashMap该怎么用

原理:通过计算输入key的散列值,快速定位value 存储位置。其中最重要部分就是散列值的计算。关于散列值与散列算法,做个简要说明。

   把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

    若结构中存在和关键字K相等的记录,则必定...

阅读全文>>

ehcache 的使用

在开发高并发量,高性能的网站应用系统时,缓存Cache起到了非常重要的作用。

本文主要介绍EHCache的使用,以及使用EHCache的实践经验。
笔者使用过多种基于Java的开源Cache组件,其中包括OSCache、JBossCache、EHCache。OSCache功能强大,使用灵活,可用于对象缓存、Filter缓存以及在JSP中直接使用cache标签。笔者在最近的使用过程中发现,在并发量较高时,OSCache会出现线程阻塞和数据错误,通过分析源代码发现是其内部实现的缺陷。JBossCache最大的优点是支持基于对象属性的集群同步,不过JBossCache的配置使用都较复杂,在并发量较高的情...





阅读全文>>

web.xml 中spring 配置及重复加载问题

项目内存溢出,mat 查看了一下发现spring 存在两个实例。回过头看启动日志,果然spring被重复加载了。

在实际项目中spring的配置文件 applicationcontext.xml是通过spring提供的加载机制,自动加载的容器中去,在web项目中,配置文件加载到web容器中进行 解析,目前,spring提供了两种加载器,以供web容器的加载:一种是ContextLoaderListener,另一种是 ContextLoaderServlet。这两种在功能上完全相同,只是一种是基于Servlet2.3版本中新引入的Listener接口实现,而另 一种是基于Servl...

阅读全文>>

使用mat 分析tomcat 内存溢出(OutOfMemoryError: Java heap space)

由于没有进行压力测试,网站运行过程中,随着数据量增大,tomcat 报OutOfMemoryError,Java堆溢出了,这表明程序有严重的问题。我们需要找造成OutOfMemoryError原因。一般有两种情况:
1、内存泄露,对象已经死了,无法通过垃圾收集器进行自动回收,通过找出泄露的代码位置和原因,才好确定解决方案;
2、内存溢出,内存中的对象都还必须存活着,这说明Java堆分配空间不足,检查堆设置大小(-Xmx与-Xms),检查代码是否存在对象生命周期太长、持有状态时间过长的情况。甚至优化代码减少临时变量的产生。
以上是处理Java堆问题的思路,具体是怎么进行分析,这里介绍的是使用Ecl...

阅读全文>>

ubuntu 12.04 dell 无线使用不了

div 居中,记忆中的方式,是在body 中加 text-align:center ; div 中margin: 0 auto;







阅读全文>>

收藏 java 学习资源

java内存详解:

http://kenwublog.com/explain-java-memory-model-in-detail

java 6 sychronized 新特性:

http://www.infoq.com/cn/articles/java-se-16-synchronized

阅读全文>>

java 中的原子操作

(automic operation)原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行倒结束,中间不会有任何 context switch (切换到另一个线程)。通常所说的原子操作包括对非long和double型的primitive进行赋值,以及返回这两者之外的primitive。之所以要把它们排除在外是 因为它们都比较大,而JVM的设计规范又没有要求读操作和赋值操作必须是原子操作(JVM可以试着去这么作,但并不保证)。不过如果你在long或 double前面加了volatile,那么它就肯定是原子操作了。

原子操作只有对基本类型进行读取或赋值操作时才会...

阅读全文>>

何时可用 volatile

volatile 作用和简介,参考此处

众所周知: volatile 用于修饰可能意外改变的类变量。常用的就是多线程,volatile 在部分时候可用替代 synchronized ,但要记住这是要牺牲性能的,因为其阻止了jvm 对执行命令的优化。


阅读全文>>