自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

四种并发异常,四种相应的隔离级别--数据库事务的复习

印象中这是在博客里第三次重提数据库事务的隔离级别了。这一块内容有一点绕,当时弄明白了,过一段时间又会忘记。我觉得掌握 数据库事务隔离级别的窍门在于:罗列出事务在并发时会发生哪些异常情况,什么样的隔离级别会杜绝这种异常情况的发生。下面就按照这个思路把 数据库事务隔离级别再复习一遍。 第一种可能出现的异常情况:丢失更新(Lost Update) 数据库事务隔离级别: Re...

2010-05-26 17:27:00 251

关于Boolean类型在flex与java中间传递的问题

  最近在开发过程中发现一个问题:Boolean类型的值无法在flex和java间传递,经过一段研究发现,问题出现在Boolean类型的getter和setter方法上。 按照javabean的规范,小布尔类型的getter是以is做前缀的,但是大布尔类型的getter就成了以get为前缀了(大布尔作为引用类型,已经被视为普通的Object了)。 例如:   对于字段priva...

2010-05-26 11:18:00 64

SSH(Secure Shell Protocol)命令之 grep

grep是一个文本搜索工具,能够使用正则表达式搜索文本,并根据要求输出匹配的行数或者输出匹配的行,该命令的一般格式如下: grep [选项] pattern files 常用【选项】有: -? ?表示一个数字,意思是输出匹配行前后?行,-3表示输出前后3行 -c 只输出匹配的行数 -i 忽略大小写进行匹配 -n 打印匹配行的行号 pattern 是要匹配文本的...

2010-05-23 12:08:00 68

新的地形渲染

老衲偷懒多年。 最近手痒痒,重新折腾了一个基于DX10的地形绘制系统(DX9应该就可以,就是效率应该不行,其实DX10的版本效率也一般)。 本方法,效率一般,不过代码绝对是所有地形绘制程序里最简单的。 呵呵, 等整理完,写个详细的说明。...

2010-05-22 02:02:00 93

SetCursorPos用法

函数功能:该函数把光标移到屏幕的指定位置。如果新位置不在由 ClipCursor函数设置的屏幕矩形区域之内,则系统自动调整坐标,使得光标在矩形之内。函数原型:BOOL SetCursorPOS(int X,int Y);参数:X:指定光标的新的X坐标,以屏幕坐标表示。Y:指定光标的新的Y坐标,以屏幕坐标表示。返回值:如果成功,返回非零值;如果失败,返回值是零,若想获得更多错误信息,请调用GetLa...

2010-05-19 18:10:00 486

GetWindowRect用法

函数功能:该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。函数原型:BOOL GetWindowRect(HWND hWnd,LPRECTlpRect);参数:hWnd:窗口句柄。lpRect:指向一个RECT结构的指针,该结构接收窗口的左上角和右下角的屏幕坐标。返回值:如果函数成功,返回值为非零:如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLast...

2010-05-17 18:29:00 701

SSH(Secure Shell Protocol)命令之sftp

sftp 用于在两台计算机之间传输文件,类似于ftp,但是相对于ftp安全得多,sftp默认采用加密方式来传输数据,sftp不是单一命令,而是一系列相关的操作命令。 sftp username@remotehost 登陆远程主机,可能要求输入登录密码 cd remotedir 远程切换目录 mkdir dir 远程创建目录 ls 显示远程目录中的文件或者目录,可以...

2010-05-16 19:24:00 76

SSH(Secure Shell Protocol)命令之scp

ssh具有客户端和服务端两部分。服务端是提供一个守护进程sshd来响应客户端的请求。 这里介绍一个常用的在两台远程机器上进行文件传输命令SCP(Secure Copy)。 常用语法: scp -r[[user@]host1:]file1 [...] [[user@]host2:]file2 从将host1上的文件file1拷贝到host2上file2下 -r表示递归复...

2010-05-16 18:58:00 68

Join取代不了Fetch,Fetch的独到之处在于打通了对象间的关联关系

确认一个问题: 1.通过Join获得的集合,即使是集合的全体,在通过它的宿主对象访问这个集合时,还是会重新生成SQL来加载这个集合? 验证结果:的确如此。看来Hibernate还没有如此智能。这个问题也从侧面解释了join和fetch的不同:join可以有 过滤 条件,不一定会将关联对象全部取出。但是fetch总是是将关联对象全部取出的。经过join加载出的对象应被视为独立的个体,...

2010-05-16 11:51:00 49

心情随笔:随便聊聊一些自己在做GamerClass时的感悟吧。

从这次下决心完成Gamer Class引擎开始到现在,已经一年整了,心中感慨万千,回头看看,好像也没做出来什么东西。 DX10支持?具备一定自由度的自适应Shader系统?自动序列化?装饰型的编辑器和游戏系统设计?相互独立的游戏上层模块?渲染无关的上层平台系统?场景图与渲染层次分离的引擎设计? 很多东西也仅限于概念而已,并且,也没有什么太新的东西,好像都是些老生常谈。实现也未必是好的,开源后可...

2010-05-15 11:03:00 61

设想被支持

一直想做一个新型的远程控制, 这几个月努力一把,拿出东西来,吼吼吼。

2010-05-14 01:21:00 50

velocity使用容易出现诡异的旮旯

1、循环中 #foreach($item in $detail.items) #set($name=$item.name) $!name #end 假设$detail.items 有三个元素,第一个元素$item.name="餐巾", 第二个元素$item.name=null,第三个元素$item.name="手帕"。那么这里会出现什么情况呢? 你可能希望打印的结果...

2010-05-13 09:06:00 67

如何抓取平行集合

join抓取两个以上的平行集合会产生笛卡尔积,而如果使用subselect抓取又会失去动态抓取集合其他依赖对象的机会。要怎样才能动态地抓取平行集合呢?目前我能想到的一种方法就是生成多条select,分别抓取平行集合。我觉得这并不是一个很完美的方案,但是它却实是可行的。 以Forum为例,在某个use case中我们需要加载一个Forum,同时要显示它的所有Thread以及Moderator....

2010-05-12 10:39:00 87

关于idbag

前一篇文章提到了不能抓取两个以上的平行bag,而idbag是不存在这个问题的。原因就在于idbag会为其每个元素生成一个id,这样就可以区分不同元素了。bad因为无法区分元素带来了两个大问题:1.bag集合的更新效率非常低。因为对于一个修改过的bag集合,hibernate无法准确得知修改的元素对应于数据库中那一条记录,这样,hibernate就无法准确更新变动的记录,它只能把所有元素删除,再将集...

2010-05-11 18:16:00 56

为什么Hibernate不允许同时抓取两个和两个以上的平行bag集合

在hibernate中, 如果试图同时抓取两个或两个以上平行的bag集合,会抛出这个异常:org.hibernate.HibernateException: cannot simultaneously fetch multiple bags。对于这种情况,Hibernate文档给出的解释是: The resultset of a product can’t be converted into...

2010-05-11 16:10:00 52

JPA和Hibernate抓取策略的差异

Hibernate和JPA 的抓取策略是有差异的 。这一点在使用JPA注解时会有所体现。有时候我们需要添加一些hibernate独有的注解才能实现比较好的抓取。下面简单提几点。 所谓“抓取策略”,总要涉及两个问:何时抓取以及如果抓取。这两点在Hibernate提供的注解上体现的非常明显。Hibernate提供两套注解分别用来描述“何时抓取”和“如何抓取”。这样看起来非常条理...

2010-05-10 18:07:00 51

Hibernate的四种抓取策略

subselect fetching是hibernate特有的抓取策略。它在抓取时机上有些介于lazy和eager之间(只是这样说,它实际上是配合lazy的一种抓取策略)。 一方面,它是在集合第一次被访问时才进行抓取,这有一些lazy的意味。但同时它的确预先抓取了一些“额外”的数据出来,而这些数据是要在后面使用到的,从而避免了多次select,这又有些eager的意味。 subselect比sel...

2010-05-10 11:00:00 48

在Hibernate环境下对大型集合的处理

在Hibernate环境下,对大型集合的访问管理是一个非常值得重视的问题。一次将大型集合加载到内存是不能容忍的。因此在操作这种集合时要特别小心。下面给出一些建议。 1.使用@org.hibernate.annotations.LazyCollection(org.hibernate.annotations.LazyCollectionOption.EXTRA)注解大型集合,确保在访问集合的s...

2010-05-10 10:51:00 45

两种极端情况的案例:N+1次查询和笛卡尔积

前一篇文章两种极端:频繁的查询和巨大的结果集讲到了Hibernate加载数据时可能会出现的两种极端情况:频繁的查询和一次查出巨大的结果集。其中:N+1次查询是前一种情况的一个典型案例,笛卡尔积则是后一种情况的典型案例。下面分别简单地再总结一下这两种极端案例出现的原因以及调优方法。 一.N+1次查询 如果一个集合是lazy loading的,那么在第一次访问到这个集合时,hiberna...

2010-05-09 14:57:00 119

两种极端:频繁的查询和巨大的结果集

写到这篇文章时,我们可以对Hibernate的性能调优策略做一个宏观的剖析了。当系统访问一个实体时,Hibernate会到数据库中提取相应数据封装成实体供程序使用,但大多数情况下问题并不是这样简单。对象模型由很多实体和值对象组成,它们之间相互依赖,构成一张复杂的“对象图”。从一个指定的对象开始,我们可以导航到与这个对象有直接或间接关系的任何对象上。再回到我们一开始的问题:你怎样从数据库中重建这个对...

2010-05-09 11:16:00 114

Join和Fetch

join和join fetch是两回事,不要搞混! join取自SQL的join概念。被join的对象一般会出现在select,where等其他子句中。因为join的目的在于要对被join的对象做处理,比如过滤等等。 fetch则是抓取策略!它的作用就是指明root entity的哪些关联对象会在load这个entity时一同被load出来!因此,fetch的对象一般是没有别名的(如果需要进...

2010-05-09 10:08:00 59

HQL&Criteria

Obviously, criteria queries are more difficult to read if they get more complex—a good reason to prefer them for dynamic and programmatic query generation, but to use externalized HQL and JPA QL for p...

2010-05-06 22:46:00 48

Hibernate的抓取策略

1.制定合理的抓取策略对系统性能的提升有很大的作用。 Hibernate推荐的原则是:通常情况下,我们并不使用映射文档进行抓取策略的定制。更多的是,保持其默认值,然后在特定的事务中, 使用 HQL 的左连接抓取(left join fetch) 对其进行重载。 hibernate推荐的做法也是最佳实践:把所有对象关联的抓取都设为lazy!然后在特定事务中重载! 这种考虑是基于:对象图是错...

2010-05-05 18:07:00 46

关于Hibernate中fatch=eager的bag集合(一个java List)使用Criteria查询出现重复记录的问题...

关于这个问题在JPwH一书的13.2.3一节中做了详细的描述! 例子:ForumGroup和Forum public class ForumGroup { @OneToMany(fetch=FetchType.EAGER,mappedBy="group") private List<Forum> forums = new ArrayList<Forum>(); ...

2010-05-05 15:03:00 83

AMD Opteron 185 + ATI RDX200 安装雪豹成功。

这台机器可以算的上比较折腾。该遇到的问题全遇到过。 一开始装的iso版的iDenb 10.5.7 。风火轮闪过后就是CPU Rest。 换10.6.1的原版盘。这回好点五国了。 这会水平还太烂。没继续折腾。 最近在我的i5机器和笔记本上折腾成功了可用的黑苹果,于是乎我心里又开始痒痒了。 继续折腾: 这次直接上10.6.3版本。用移动硬盘在已经安装雪豹的机器上,将原版dmg写入...

2010-05-04 11:11:00 70

关于集合的性能问题

1.Bag 是所有非反向集合类型中性能最差的(但却是反向集合中性能最好的,还有list。)。因为 bag 允许重复的元素值,也没有索引字段,因此不可能定义主键。Hibernate 无法判断出重复的行。当这种集合被更改时,Hibernate 将会先完整地移除 (通过一个(in a single DELETE))整个集合,然后再重新创建整个集合。因此 Bag 在非反向集合中是非常低效的。 这一点我已...

2010-05-03 22:51:00 134

关于save和persist

persist() is well defined. It makes a transient instance persistent. However, it doesn't guarantee that the identifier value will be assigned to the persistent instance immediately, the assignment mig...

2010-05-03 21:56:00 77

级联与Session操作

Hibernate的每一种级联设置都对应一个Session的方法。当调用这个方法去处理一个实体时,如果实体有关联对象配制了这种方法对应级联,那么关联对象将被一样地处理! 总共提供以下几种级联设置: package org.hibernate.annotations; /*** Cascade types (can override default EJB3 cascades*/publi...

2010-05-03 17:09:00 92

关于值对象与实体的再讨论

在领域模型中,实体与值对象的概念非常重要,Hibernate也要求明确区分这两者,以至于它们的映射配制上都不一样。 以一对多为例,同是一个set,如果是实体会使用<one-to-many>,@OneToMany,如果是值对象,会使用<composite-elementt>,@CollectionOfElements.实体与值对象的一个重要区别在于:实体有自己的生命周期,而...

2010-05-03 10:59:00 82

关于为什么单向一对多(one-to-many)要使用关联表的再思考

在传统的数据建模中,允许为 Null 值的外键被认为是一种不好的实践,。这并不是 Hibernate的要求.---Hibernate文档 我在Hibernate2010年的笔记中对为什么单向一对多(one-to-many)的映射要使用关联表做过讨论,但是我觉得那时候的认识并不深刻,也不太具有说服力,今天我有了进一步的思考。 首先必须明确,一对一,一对多或者多对多...

2010-05-02 16:40:00 102

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除