`
xinglongbing
  • 浏览: 146428 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
文章列表

Ibatis中的RowHandler

    有时候我们需要一次性处理大量的数据几万甚至上百万,如果一次性加载到内存很可能导致OOM。如果使用Ibatis作为ORM映射工具,我们会用到RowHandler这个接口来处理。Ibatis中大致的实现思路是通过RowHandlerCallback封装一个RowHander对象从而在迭代都去每条记录时回调handleRow方法从而避免一次性全部加载到内存。不过需要注意的一点是:如果你的handleRow方法处理逻辑比较耗时这种方式处理的数据量很大的话可能大幅增加jdbc连接占用的时间,可能导致连接池吃紧的状况出现。ibatis.2.3.4.76版本处理入口在: MappedStateme ...
Apache RewriteRule [P]和ProxyPass(ProxyPassMatch)指令的差别: 虽然都可以用来做代理转发,但是两者还是有不少细微的差别: 1.RewriteRule可以对URL重写可以实现更加灵活的处理; 2.ProxyPass*对重写能有更高的性能。在apache官方文档2.2版本中没有给出RewriteRule [P]详细说明,而2.4版本文档有更加具体的使用说明。主要是没法提供连接池从而实现多个Http请求复用TCP链接达到性能上的提升。具体可以用tcpdump或wireshark进行验证。 还需要注意一点是:如果使用 SetEnv force- ...

Java异常

        编写代码难免跟各种异常情况打交道,不能层次的异常处理有不同的方式。当最终客户使用软件发生异常时应该给出尽量友好的提示信息;而对程序员来说为了方便定位问题,当发生异常时,异常信息需要指出: 1.是什么出错;说明这是一个什么类型的异常; 2.代码哪个位置出错;异常的堆栈信息; 3.为什么会出错;具体导致异常的信息; 上面讲到了异常信息应该包含的几个方面,那么异常处理的时机也很重要: 1.尽早抛出可能发生的异常;(fail fast的思想) 2.在合适的层次进行异常的catch; 一个异常的发生应该在源头就对其进行捕捉和抛出,而不要运行到后面才抛出,比如构造一个IO输 ...
1.Zend Stdio中Ctrl+鼠标左键以及F3都无法定位Php源代码。 可能的方案: a.引自http://www.exploit.cz/php/zend-studio-code-autocomplete-fix.html 删除用户目录Zend文件夹中的org.eclipse.dltk.ui.prefs文件重启一下就ok了;(我当初重新装了Ubuntu,Zend文件 ...
                                             毕业后的五年拉开大家差距的原因在哪里 有人工作,有人继续上学,大家千万不要错过这篇文章,能看到这篇文章也是一种幸运,真的受益匪浅,对我有很大启 ...
人跟计算机都是一个完整的系统。人的逻辑推理能力很强就好比一个计算机有强大的CPU运算能力,人的记忆力很强就好比计算机拥有大容量内存,人的协调能力很强好比计算机拥有很强的总线带宽,人的沟通能力能力很强好比计算机拥有很强的IO处理能力。复合型人才就是要成为一个配置均衡的系统,尽量发挥各个部分的潜能不要出现明显的瓶颈。
今天碰到以下错误:针对1:N的关系用groupBy属性避免N+1查询问题,但是在resultMap 中的<result property="" resultMap=B>去引用时始终报错说,在resultMap A中设置property出错,找不到named为B的resultMap。最后发现是由于在改SqlMap属性中加了namespace,因此,在resultMap中引用其他resultMap时必须要添加包含命名空间的名字也就是namespace.B,如果SqlMap没有指定namespace属性那么可以直接使用resultMap定义的名字。
  很久没写东西了,有一段时间一直在忙,每天学新东西。没有对要学习的东西的总的俯瞰,感觉总是在学习一些点点滴滴的东西。感觉很忙,但是忙完感觉收获并没有一个质的提升,结论就是现在还是一个菜鸟,只是在某些方面观念还是发生了一些变化,可能这是最大的收获吧。   钱老前几天西游了,以前没有读过多少关于钱老事迹的详细资料,只知道当初美国不肯放他回来;他对中国的导弹和航空事业做出了开创性的贡献。前几日读了他一篇关于大学要有创新精神的文章,有很多感触,其中就是感觉自己读大学没有创过一点新,完全是在追求分数和奖学金。等到醒悟的时候发现自己在专业上除了懂得一些理论,基本没有其他作为。还好这时候对自己专业方向还是 ...
Java最初的编译器据说是用C语言实现的,后来用Java语言经过了改写。直到JDK6.0以前,java编译器javac的实现代码包含在tools.jar中:com.sun.tools.javac。但tools.jar并不是作为JDK的标准包发布,因此需要在环境变量进行设置才能使用提供的API。在JDK6.0中提供了标准包javax.tools操作编译器 。 谈到Java编译器必然会涉及Java字节码文件的操作,现在很多开源软件提供了字节码操作的功能:Javassist,BCEL。很多框架某些功能的实现用到了这方面的技术如AOP。字节码技术有待进一步研究。
      语言是个体相互之间交流的工具。中文、英语、日语是人与人之间交流的工具,机器语言是计算机相互理解和交流的语言。不同语言之间的个体要进行交流就必须经过翻译才能彼此之间相互理解和沟通。人与计算机的交流,通常需要经过几重翻译。首先,人将人类语言翻译成高级编程语言的表达形式,从而使相应的编译器能够理解;再由编译器将高级语言翻译成目标语言(通常是汇编语言或机器语言,若是汇编语言还需汇编器作进一步的翻译)。 就像人类用的语言如英语,包含有单词、语法和语义等,程序设计语言也有相应的组成部分:词法、语法、语义。       未完待续。。  
James Gosling : Java之父 作为Java之父,James Gosling的名字可谓是耳熟能详。当人们评论一种编程语言时,总喜欢捎带着把下蛋的母鸡一起带上。Java做为中国的编程语言学习者餐桌上有限的那么几样餐点中的流行款式,自然是让JamesGosl ...
本文转载自:http://www.javaworld.com/javaworld/jw-06-2009/061909-better-java-programmer.html 其大意指:Java程序员不应仅仅局限于Java语言的学习,除了Java以外还应该学习几门其他的语言,这样有助于全面提高软件开发的水平。 Do you think it's a coincidence that 80% of the best Java talent have a moderate to considerable understanding of either Python, Smalltalk, Scal ...
抽象的解释:从许多事物中,舍弃个别的、非本质的属性,抽出共同的、本质的属性的过程,是形成概念的必要手段。   从电子元器件中电压的高低抽象出了0 1 0 1,建立这种连续到离散的对应关系实现了数字化。 机器指令就是一串二进制0 1 0 1其含义难以识别,通过抽象建立了二进制到符号语言的对应(汇编)。 特定平台相关的低级语言经过抽象建立了与平台无关的中间代码(如字节码),字节码一个是平台无关,二是抽象程度更高,一条字节码指令往往对应了底层多条机器指令,从而指令集体积更小。 具体实现经过抽象便成了接口。   内存中的物理地址,经过抽象产生逻辑地址,建立逻辑地址到物理地址的映射(MMU) ...
   06年多核就已经开始普及了,对多核的认识也很浅显就知道一个CPU里面有多个计算内核,具体的硬件架构不是很清楚。今天看了一篇文章:并行编程是否需要开发新的编程语言;文章主要针对目前多核CPU的普及和发展提出是否需要开发一种适用并发编程的新语言还是针对已有语言进行并发方面的扩展。不管怎么样主要目标还是充分利用CPU里面的多个核心。唉 这方面有很多困惑。
今天实验室一个同学利用同一个Statement对象调用executeQuery方法分别执行不同的SQL查询语句,结果第一次调用返回的ResultSet对象在后面不再可用,提示该对象已经关闭无法执行其他的操作。答案在JDBC4.0规范里面得到了解释: A ResultSet object is explicitly closed when(ResultSet对象显示关闭的两种情况:)■ The close method on the ResultSet is executed, thereby releasing any external resources■ The Statement or ...
Global site tag (gtag.js) - Google Analytics