`
Terry_zzz
  • 浏览: 6595 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表
相信单例模式大家已经不陌生, 是比较常见的几种模式之一,在spring中默认的bean都是单例. 下面对该模式做下回顾与总结. 主要分为饿汉式和懒汉式, 饿汉式是在类加载时进行初始化, 懒汉式是延迟加载, 当第一次调用时,进行初始化. 单例模式需要注意的是:  1. 要有私有构造方法, 避免外部直接实例化. 2. 要有静态的getInstance()方法.   3. 对于懒汉式, 要在getInstance()方法前加上同步, 避免多线程环境下出现并发问题.单例模式基本传统实现:   //饿汉式 public class Singleton {   //将构造函数私有化 ...
悲观锁: 指在应用程序中显示地为数据资源加锁. 悲观锁假定当前事务操纵数据资源时, 肯定还会有其他事务同时访问该数据资源, 为了避免当前事务的操作受到干扰, 先锁定资源. 尽管悲观锁能够防止丢失更新和不可重复读这类并发问题, 但是它会影响并发性能, 因此应该谨慎使用悲观锁.   乐观锁: 乐观锁假定当前事务操纵数据资源时, 不会有其他事务同时访问该数据资源, 因此完全依靠数据库的隔离级来自动管理锁的工作. 应用程序采用版本控制手段来避免可能出现并发问题.   悲观锁有两种实现方式: 一: 在应用程序中显示指定采用数据库系统的独占锁来锁定数据资源. 二: 在数据库表中增加一个表明记录状 ...
Session 缓存概述 Session级别的缓存是Hibernate的一级缓存,主要提供事务级别的缓存处理,用来提高访问数据库的性能等. 在Session的接口实现中包含一系列的java集合,这些集合构成了Session的缓存. 只要Session实例没有结束生命周期,存放在它缓存中的对象也不会结束生命周期. 当Session 通过save()方法持久化一个对象时,这个对象被加入到Session缓存中去, 这以后,只要缓存没有被清空,这个对象就被存储在Session的集合对象中,即存在于缓存之中. 当Session 通过get()方法试图从数据库中得到一个对象时, Session会先判断这个对 ...
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。 来看AtomicInteger提供的接口。 //获取当前的值 public final int get() //取当前的值,并设置新的值 public final int getAndSet(int newValue) //获取当前的值,并自增 public final int getAndIncrement() //获取当前的值,并自减 public final int getAndDecr ...
在分布式的系统中,通常会有多个线程连接到数据库中同时对一个表进行操作(这里的同时并不表示同一个时间点,而是同时竞争cpu的资源,至于如何调度,就要看线程和操作系统如何进行调度了),这种情况下如果会话的事物设置不当,就会导致数据混乱,常常会出现以下三种情况(假设现在系统中有两个会话A和B,同时对表T_Test操作): 1.脏读:假如A开启事物后,在查询之前,B修改了表中的某条记录,但是事物还没提交,这个时候A再读取该表时,读到了B修改之后的数据,问题发生了:B如果此时回滚了事物,那么A读到的就是错误的数据了。 2.不可重复读:假如A开启事物后,对表做了查询后,此时B修改了表中的某条记录,然后A又做 ...
Global site tag (gtag.js) - Google Analytics