http://blog.sina.com.cn/snowdymy[订阅]
个人资料
公告
XXXX年XX月XX日出生,天枰座,喜欢蓝色跟白色,最爱蓝天跟海洋。喜欢简单生活,简单恋爱,就这样看着海。
 
如果我爱你,那么我会等你一天,因为我不是王八,可以活那么多年。
 
每首歌都在讲述一个故事,大家有静静聆听歌曲在讲述着什么故事吗,我称这个是“快餐小说”,最适合我们这些忙碌的现代人品味。
 
回来了,为什么要说再见。
 
不说再见。
 
我爱这里,就在这里。
 
告诉我,你会喜欢一首歌多久,有没有那么一首歌能让你喜欢十年、二十年,甚至是一直一直。
 
开始生活,学着煮饭。
 
爱在零度空间1----突如其来的爱情故事。
 
就这样,其实很好。
 
我想对你说,原来你也在这里、
 
我不走,就在这里。这是我的家,永远不离开,永远不走。
 
有人告诉我每一首歌都在讲述一个故事,我们爱它不是因为优美的旋律,也不是因为动人的歌歌词。我们爱它因为它就在讲述着自己的故事。告诉我哪一首歌在讲述着你的故事。
 
如有有一天你来了,请你一定一定一定要留下足迹,这样我才能找得到你呀。
 
漂泊的日子,我好累~~~~
 
我们都一样...我想我们都一样,渴望梦想的光芒,这一路喜悦彷徨不要轻易说失望。勇敢地往前飞,再累也无所谓,“因为我们都知道”黑夜过后的光芒有多美。
 
能不能...给我一首歌的时间。
 
右手边...说好再见,一定会见        ma~~~~~~~
 
千里之外... 时间被安排,演一场意外,你悄然走开。
 
不是因为寂寞才想你,而是因为想你才寂寞~~~~~~~~~~~~~
 
图片幻灯
毕业专题
暂无内容。
友情链接
小伟

友谊地久天长

辉辉

美丽的奇迹

隋原老师

一个传奇的老师

张艾文

一个浪漫美丽的爱情故事

保剑锋

阳光大男孩

不老之荒

陌生的朋友

默林

光学,摄影

李金羽

加油,大羽

未央

走过一些路,爱过一些人

罗曼罗兰

java 学习 一起努力

分类
    内容读取中…
评论
读取中...
访客
读取中...
音乐播放器
博文

Hibernate提供了两种锁机制,悲观锁和乐观锁。

1.悲观锁

其中悲观锁的实现依赖于数据库的锁机制,如果数据库底层没有实现相应的数据排他性,那么就无法实现悲观锁。

加锁模式有:

LockMode.None 不加锁

LockMode.Write    在insert和update的时候会自动获取  / /还是不明白的因为没有用过

LockMode.Read    在读取数据的时候自动获取             /还是不明白的因为没有用过

以上三种都是在Hibernate内部进行使用的。

LockMode.UPGRADE是利用数据库的select..... for update语句进行加锁的。

LockMode. UPGRADE_NOWAIT :Oracle的特定实现,利用Oracle的for update nowait子句实现加锁

以下是编程实现的语句:

String hql = 'from Tuser as user where user.name='maojiangege'';

Query query = session.createQuery(hql);

query.setLockMode(“user',LockMode.UPGRADE);

List list = query.list();

获取数据 query.setLockMode 对查询语句中特定别名所对

配置Log4j(2009-11-20 13:53)
 
 
log4j.properties配置文件讲解如下:
# Set root logger level to DEBUG and its only appender to A1
#log4j中有五级logger
#FATAL 0
#ERROR 3
#WARN 4
#INFO 6
#DEBUG 7

配置根Logger,其语法为:
#log4j.rootLogger = [ level ] , appenderName, appenderName, …
log4j.rootLogger=INFO, A1 ,R
#这一句设置以为着所有的log都输出
#如果为log4j.rootLogger=WARN, 则意味着只有WARN,ERROR,FATAL
#被输出,DEBUG,INFO将被屏蔽掉.
# A1 is set to be a ConsoleAppender.
#log4j中Appender有几层如控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等
#ConsoleAppender输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 使用的输出布局,其中log4j提供4种布局. org.apache.lo

文章转自:http://blog.csdn.net/vastskyjoe/archive/2009/01/07/3729149.aspx

 

如果 使用HIbernate循环查询某个表的话。他会使用缓存技术,来提高数据库性能。

其思路是:第一次执行某个sql语句,记录下他的参数。第二次执行某个sql语句时候首先拿他的参数表和默认记录的参数表相比较,如果参数表一致,那么hibernate不会重新查询数据库,而是从缓存中读取他的值。因此连续执行某个查询语句的话,如果此时数据库中关于这个表的字段有更新,将不会显示。

附:当两个sql语句完全一样时候,他们的参数表一致。

解决思路:1.使每次执行的查询语句都不一样,但是查询出的结果都一样。

   类比:当我们在页面上输入于上个页面一致的地址时候 ,页面默认不会重新向服务器提交请求,而是从缓存钟读取页面。

如果要求他强制: 向服务器提交请求,可以,设置页面的属性。最简单的是地址后面加一个无关的随即书

http://www.baidu.com?id=1;

 

2.因为缓存的生

文章转自:http://luckyapple.javaeye.com/blog/457298

 

 suspend() 和 resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,并且不会自动恢复,必须其对应的 resume() 被调用,才能使得线程重新进入可执行状态。典型地,suspend() 和 resume() 被用在等待另一个线程产生的结果的情形:测试发现结果还没有产生后,让线程阻塞,另一个线程产生了结果后,调用 resume() 使其恢复。但suspend()方法很容易引起死锁问题,已经不推荐使用了。

    wait() 和 notify() 方法:两个方法配套使用,wait() 使得线程进入阻塞状态,它有两种形式,一种允许 指定以毫秒为单位的一段时间作为参数,另一种没有参数,前者当对应的 notify() 被调用或者超出指定时间时线程重新进入可执行状态,后者则必须对应的 notify() 被调用。

文章转自:http://luckyapple.javaeye.com/blog/457298

 

 suspend() 和 resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,并且不会自动恢复,必须其对应的 resume() 被调用,才能使得线程重新进入可执行状态。典型地,suspend() 和 resume() 被用在等待另一个线程产生的结果的情形:测试发现结果还没有产生后,让线程阻塞,另一个线程产生了结果后,调用 resume() 使其恢复。但suspend()方法很容易引起死锁问题,已经不推荐使用了。

    wait() 和 notify() 方法:两个方法配套使用,wait() 使得线程进入阻塞状态,它有两种形式,一种允许 指定以毫秒为单位的一段时间作为参数,另一种没有参数,前者当对应的 notify() 被调用或者超出指定时间时线程重新进入可执行状态,后者则必须对应的 notify() 被调用。
Java Dom4J(2009-11-07 01:14)

 
import java.util.HashMap;


public class TestDom4jReadExmple {
 public static void main(String[] args) {
     try{
       //获取解析完后的解析信息
       HashMap<String,String> hashMap;
       Dom4jReadExmple drb=new Dom4jReadExmple();
       //遍历整个XML文件
       hashMap = new HashMap<String,String>();
       drb.iterateWholeXML('C:\\studentInfo.xml', hashMap);
       System.out.println('姓名\t年龄\t学院\t学院领导\t电话\t\t备注');
       for(int i=0;i<hashMap.size();i+=6){
         int j=i/

Java Shell 排序(2009-11-07 01:06)

class ShellSort {
 private int[] intArray; // 待排序的数组

 private int nItems; // 数组内元素个数

 private int maxItems; // 数组大小

 private int[] intervalSequence; // 增量数组序列

 // 构造函数

 public ShellSort(int maxItems, int[] intervalSequence) {
  this.intArray = new int[maxItems];
  this.maxItems = maxItems;
  this.nItems = 0;// 还没有元素

  this.intervalSequence = intervalSequence;
 }

 
 public void shellSortMethod() {
  int h = 0;// 为增量

  for (int iIntervalLength = 0; iIntervalLength < intervalSequence.length; iIntervalLength++)// 最外层循环,由增量序列元素个数决定

  {
   h = intervalSequence[iIntervalLength];// h为index增量

   int sizeInterArray;// 每次内部插入排序的元素个数

   if (0 ==

Java 实现归并排序(2009-11-07 01:05)

public class MergeSort {

 public int[] sort(int[] data) {
  int[] temp = new int[data.length];
  mergeSort(data, temp, 0, data.length - 1);
  return data;
 }

 private void mergeSort(int[] data, int[] temp, int l, int r) {
  int mid = (l + r) / 2;
  System.out.println(l + ', ' + mid + ', ' + r);
  if (l == r)
   return;

  mergeSort(data, temp, l, mid);
  mergeSort(data, temp, mid + 1, r);
  for (int i = l; i <= r; i++) {
   System.out.println('i=' + i);
   temp[i] = data[i];
  }
  int i1 = l;
  int i2 = mid + 1;
  for (int cur = l; cur <= r; cur++) {
   if (i1 == mid + 1)
    data[cur] = temp[i2++];
   else if

Java 实现 推排序(2009-11-07 01:03)

 

public class HeapOp {
    private PriorityQueue queue = new PriorityQueue();
   
    public HeapOp() {
       
    }
    public void insert(int a) {
        queue.add(a);
    }
   
    public int retrive() {
        int a =  queue.getMin();
        queue.removeMin();
        return a;
    }
   
    public boolean isQueueEmpty() {
        return queue.isEmpty();
    }
    class PriorityQueue {
 &nbs

Java 实现快速排序(2009-11-07 01:01)

Java  shixian kuaisupa
public class QuicklySort {   
      
       
    public static void QuickSort(int[] pData,int left,int right)   
      
      int i,j;   
      int middle,temp;   
      i = left;   
      j = right;   
      middle = pData[left];   
      while(true)   
       
          while((++i)<right-1 && pData[i]<middle);   
          while((