欢迎来到天天文库
浏览记录
ID:42722198
大小:1.25 MB
页数:163页
时间:2019-09-20
《javaEE精华总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Question&Answer总结人:王健不得随意更改,如果要引用或是发布,请注明出处:王健.QQ549051701。作者保留申诉的权力1、Hibernate问题-read-write缓存策略read-write是严格的读取策略。在将一个对象放到缓存时,同时会加一把锁。在当前session没有关闭的情况下,其他session不可以访问缓存中的同一个对象。真到此锁定的session关闭。@TestpublicvoidtestUpdate(){Sessions2=HibernateUtils.openSession();Personp1
2、=(Person)s2.get(Person.class,"402881e4345a53ce01345a543b9a0004");System.out.println("第一次查询"+p1);//查询获取一个新的对象s2.clear();//将一级缓存中的数据清除booleanboo=//判断二级缓存中,是否存在此对象,为trueHibernateUtils.getSessionFactory().getCache().containsEntity(Person.class,"402881e4345a53ce01345a543b9a
3、0004");System.out.println("是否存在这个对象:"+boo);//truePersonp2=(Person)s2.get(Person.class,"402881e4345a53ce01345a543b9a0004");//read-writeg下为什么不查二级缓存System.out.println("同一个session第二次查询"+p2);//使用同一个session查询,结果因为是read-write,//因为对象已经上锁,所以不会从二级缓存中返回数据//s2.close();//关闭或是不关闭Sys
4、tem.out.println("上一个Session关闭以后");Sessions3=HibernateUtils.openSession();boo=HibernateUtils.getSessionFactory().getCache().containsEntity(Person.class,"402881e4345a53ce01345a543b9a0004");System.out.println("是否存在这个对象:"+boo);//truePersonp3=(Person)s3.get(Person.class,"40
5、2881e4345a53ce01345a543b9a0004");//read-write下,为什么这儿查二级缓存System.out.println(p3);s3.close();}2、为什么16进制数要与OxFF与运算以下是MD5加密算法示例,其中使用了OxFF的与运算:@Testpublicvoidmd5()throwsException{Stringpwd="1234";MessageDigestmd=MessageDigest.getInstance("MD5");byte[]bts=md.digest(pwd.getBy
6、tes());//16位pwd="";for(bytebt:bts){System.err.println("src:"+bt);Stringstr=Integer.toHexString(bt);System.err.println("src:-----"+str);str=Integer.toHexString(bt&0xFF);//为儿在算MD5时为什么与要0xff进行与运算呢System.err.println("dest:"+str);if(str.length()<=1){str+="f";}pwd+=str;Syste
7、m.err.println("---------------------------------");}System.err.println("最后的密码是:"+pwd);}我们要讨论的主要问题是,为什么上面注解处要与OxFF进行与运算而不是其他值呢?因为OxFF的16进制数为ffffffff(即8个f)。按与运算的法则,先来看二进制的与运算,如:-1&1=1-1(负1)的二进制编码为:11111111111111111111111111111111即一个32位的字符串,前面一位是1表示负数1(正1)的二进制编码为:00000000
8、000000000000000000000001即,只有最后一位是1,其他部分全部为0按&(与运算)的法则结果:00000000000000000000000000000001即,只有当两个都为1时才为1,所以最后的结果为:1(正1)
此文档下载收益归作者所有