`
lvhuiqing
  • 浏览: 257897 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论
文章列表
<p>1,什么是n+1次查询</p> <p>在使用Hibernate,或者ibatis等工具查询数据库的时候,由于缓存,或者lazyload(懒加载)等原因,可能会造成要查询n个结果,但是不得不执行n+1次查询数据库操作,造成效率低下。</p> <p>2,使用Hibernate,什么时候会产生n+1次查询</p> <p>a,使用iterate查询的时候</p> <p>例如:</p> <p>Query q=session.createQuery("fro ...
<p>分布式缓存:</p> <p>一种好的方式:使用一台服务器作为缓存,而不要使用多台(中央缓存)。</p> <p>如果在多台服务器上使用缓存,oscache也是支持的,只要进行一下配置。</p> <p>适合缓存的的数据:</p> <p>读取的次数大约修改的次数,频繁的修改反而会降低效率。</p> <p>缓存的数据量不能太大</p> <p>使用缓存的时候,使用缓存的系统要有独享的控制权。或者可以容忍无效数据。</p> ...
<p>1,hibernate在查找数据的时候,会首先从一级缓存里面查找,再从二级缓存里面查找。</p> <p>2,在缓存里找到的话,叫做“命中”。如果命中率过低的话,会导致使用二级缓存反而降低效率的问题。</p> <p>3,如果想要观察二级缓存的命中率等信息,可以把统计信息打开</p> <p> &lt;property name="generate_statistics"&gt;true&lt;/property &gt;</p> <p> ...
<p>关于二级缓存</p> <p>1,hibernate并没有实现二级缓存,而是使用第三方的二级缓存机制,因此要是用二级缓存必须配置</p> <p> cache.use_second_level_cache为true。把二级缓存打开。</p> <p>2,第二步,要把使用的cache提供者表明。</p> <p> 例如,设置cache.provider_class为org.hibernate.cache.osCacheProvider</p> <p> 注意osCache ...
<p>关于一级缓存:</p> <p>1,一级缓存,在session内部,随着session的关闭而被清空</p> <p>2,放入一级缓存的方式有很多,大部分增删改查,都会加入。比如save update saveandupdate load get list iterate lock 等等。</p> <p>3,能够从一级缓存取数据的方式不多,只有get load iterate</p> <p>4,Hiberate会自动更新缓存中的数据。</p> <p>5,如果想清除 ...
<div><span style="font-size: x-small; font-family: Verdana;"> <div>packagesrc.study.regex;</div> <div>importjava.util.regex.Matcher;</div> <div>importjava.util.regex.Pattern;</div> <div>publicclassClass1{</div> <div>publicsta ...
<p>使用场景:使用的对象占用大量的内存,或者产生该对象的速度很慢,或者产生该对象对服务器造成很大的负载,此时要考虑对该对象进行缓冲,在产生一个以后不要马上销毁,而应该保存起来,并建立索引,这样别的请求再来的时候,可以首先从pool中获取,如果失败,再重新建立。</p>
<p>1,可以实现 dividual and conquer。对于比较复杂的操作。可以根据环境状态(用实现了state的不同类表示)的不同,采取不同的应对策略。环境状态越多的时候,采用state pattern的效果越明显,这样可以避免很多if语句。</p> <p>2,根据状态的不同处理也不同。StatePatter接口的要点是把state设置为接口,在实现了check的类中,公开可以改变state的api,当该api(直接或者间接)被调用的时候,state实现类随之被改变。</p> <p>3,check接口的方法都是回调方法,其设置的 ...
<p>使用Observer来观察实现了某一个特定接口的对象,我觉得最好把observer放到与所观察的对象不同的线程中,这样可以实现每隔一定时间来扫描一次该对象,看是否有所改动。</p>
<p>当各个对象之间的关系比较复杂的时候,如果把控制逻辑放入到对象中,就会是整个逻辑变得复杂,引起要把这些逻辑抽象出来,设置Mediator的角色,进行统一控制。<br>每个对象中都包含一个mediator对象(实际上如果对象可以被划分为主动对象和被动对象的话,那么被动对象实际上并没有必要包含有mediator对象,因为他没有机会告诉mediator自己的状态。<br>在mediator pattern中扮演mediator的类会非常复杂,而且不利于被重新利用,但这也正是mediator pattern的初衷:把复杂的通讯逻辑从各个对象中抽离出来。因此虽然me ...
...
<p>pe8.1_02|javax.enterprise.system.stream.err|_ThreadID=12;|java.lang.SecurityException: Sealing violation </p> <p>loading oracle.sql.BlobDBAccess : Package oracle.sql is sealed.<br>at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1764) ...
<p>我还是觉得结城浩的书中给的例子是符合chain responsibility 的精神的,链上所有的节点都是support的实现类,这才符合chain的含义。</p>
<p>该模式中,核心的角色是trouble分发模块,在改角色中,保存有一个chain support的句柄,但是在结城浩的书中,把改角色也写成是一个support的实现类,只是什么都不做,我觉得这样反而不容易理解。最好把这个角色抽象出来。</p> <p><br>public class TroubleHandler {<br>private Support support;</p> <p>public TroubleHandler(Support support) {<br>this.support ...
<div>1,abstract layer:作为整个persistencelayer 的对外接口,因此位于该层的方法不应该有任何的有有关于执行细节的参数,也不应该返回任何任何独立于persistence的的值或者异常。如果有一个设计良好的abstract layer,那么存储结构和persistence layer的任何变动都不应该引起 abstract layer的变动。有一些设计模式可以用来完成这一设计,比如dao。</div> <div></div> <div>2,The persistence framework。用来作为dri ...
Global site tag (gtag.js) - Google Analytics