- 博客(13)
- 收藏
- 关注
原创 迭代过程中的线程安全
对Collection进行迭代的标准方法是使用Iterater,无论显示的使用还是for-eache与否,当其他线程可能并发修改容器时,需要在迭代器具对容器加锁。 对于for-each语法,javac生成的代码内在的使用一个Iterator,调用hasNext和next对List进行迭代。在进行迭代时,当容器察觉到在迭代开始后被修改,会抛出一个未检查的ConcurrentMo...
2013-04-17 17:58:24
287
原创 SimpleDateFormat不是线程安全
java.text.SimpleDateFormat并不是线程安全的,JDK1.4之前的javadoc 都忽略提及这一点。 很多开发者错误的创建并使用了它,这些程序在大负载下容易引发错误结果。 最后指明,如果一个类没有明确指明,就不要假设它是线程安全的。 ...
2013-04-17 16:44:13
108
原创 CopyOnWriteArrayList的使用
除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的)。 先回顾一下一个常识: 1、JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个对象,一个线程获取这个引用指向的对象,那么他们之间不会发生ConcurrentModificationException,他们是在虚拟机层面阻塞的,而且速度非常快,几乎不需要CPU时间。 2、...
2013-04-17 16:15:00
108
原创 css基础知识
CSS中的定义 <style type="text/css"> </style> 其中的美国元素被称为规则,每条规则包括三个部分: 1 一个选择器,用于描述哪个Html元素将受到影响。 2 一个或多个属性值。 3 每个属性的值。 选择器的用法 标签选择器 E{css规则} 以文档元素为选择符 td{width:120} ...
2009-12-19 11:09:13
87
原创 java中的编码问题
对于Java语言来说,在其内部使用的是UCS2编码(2个字节的Unicode编码)。这种编码并不属于某个语系的语言编码,它实际上是一种编码格式的世界语。在这个世界上所有可以在计算机中使用的语言都有对应的UCS2编码。 实现上,当我们从IDE输入“中国”时,用的是java源代码文件保存的格式,一般是GBK,有时也可是utf-8,而在Java编译程序时,会不由分说地将所有的编码格式转换成...
2009-09-11 15:18:23
93
原创 jboss配置管理
$JBOSS-HOME/server/下有3个目录,all/default/minimal,它们是表示3种配置,全部的配置、默认配置、最小配置,我们在启动JBOSS服务时,可以指定run –c all 表示是启动all配置(将会加载所有服务);run 表示是以默认配置启动;run –c mimimal 表示是启动mimimal配置。这三者所加载的服务数量不同,具体区别可查阅JBOSS相关文档,你...
2009-07-08 11:03:40
127
原创 effective java
在包的内部使用继承是非常安全的,这样子类和超类都处于同一个程序员的控制之下。 继承打破了封装性:子类依赖于超类中功能的实现细节,超类的实现有可能会随着发行版本的不同而有所变化,弱国重大发送变化,子类可能会遭到破坏。除非超类是专门为了扩展而设计的,并且具有很好的文档说明。 有一种办法可以避免提到的所有问题,不用扩展现有的类,而是在新的类中增加一个私有域,它引用现有类的一个实例。这种设计被称为:“...
2009-07-02 10:53:23
63
spring中的事务管理
最基本的JDBC事务管理,是设置Connection对象的setAutoCommit(false)方法,随后执行一系列的SQL语句,最好调用Connection的commit()方法,提交变更。如果在执行SQL语句时出现错误,则在catch块中执行Connection的rollback()方法,进行回滚. 代码大致如下: Connection = null; try{ ...
2009-06-29 17:40:37
67
Spring中封装的hibernate的事务管理
1事务管理应该放在服务层或业务层,比如说在服务层有个save方法,这个方法里面可以调用多个dao操作,事务管理应该加在服务层对象上的save方法。 2把事务管理放到了dao层是个错误,dao层不涉及事务方面的东西。 最近犯了一个错误,就是没有认识到事务,将一个事务分成了多个事务。 就如上面所说的1、2两条,save方法中有多个dao操作,整个save方法应该是一个事务,但是将其分成了...
2009-06-25 15:06:16
82
原创 java中Serializable以及transient关键字
串行化只能保存对象的非静态成员交量,不能保存任何的成员方法和静态的成员变量,而且串行化保存的只是变量的值,对于变量的任何修饰符都不能保存。既不能保存static的成员变量。 对于某些类型的对象,其状态是瞬时的,这样的对象是无法保存其状态的。例如一个Thread对象或一个FileInputStream对象 ,对于这些字段,我们必须用transient关键字标明,否则编译器将报措。 比如说在一...
2009-06-19 16:52:03
326
原创 Hibernate学习
Hibernate中对象有三种状态: Transient(瞬时)、persistent(持久)、detached(托管)。三种状态。 瞬时状态: 由new命令开辟的java对象,也就是平时所熟悉的java 对象。它不和数据库中的数据相关联,可以通过session的save()或saveOrUpdate()方法将一个瞬时对象鱼数据库相关联。这个瞬时对象就成薇了持久话对象。 持久化状态: 持...
2009-05-12 17:41:45
61
原创 java异常处理讲解
六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = ... 2 java.sql.Connection conn = ... 3 try { // ⑸ 4 Statement stat = conn.createStateme...
2009-04-17 15:14:19
82
Java中Serializable接口的用法
今天学习了Serializable接口的用法,以及 private static final long serialVersionUID的具体用法 如下 如果今天你的类Serialized存到硬盘里,可是後来你却更改了类别的field(增加或减少或改名).当你Deserialize时,就会出现Exception.这样就会做成不兼容性的问题.但当serialVersionUID相同时,它就会将...
2009-03-09 20:17:50
214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人