摘要: 1、 首先要搞明白什么叫执行计划?执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用 “全表扫描”方式。可见,执行计划并不是固定的,它是“个性化的”。产生一个正确的“执行计划”有两点很重要:(1) SQL语句是否清晰地告诉查询优化器它想干什么?(2) 查询优化器得到的数据库统计信息是否是最新的、正确的?2、 统一SQL语句的写法对于以下两句SQL语句,程序员认为是 阅读全文
posted @ 2012-08-03 14:22 Liter 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 随着项目的复杂程度的增加,一个项目中需要依赖的外部系统也在逐渐增多,在构建大的项目时,需要大内存的支持,此时Maven可能会报内存溢出(OutOfMemory)的异常,运行mvn命令实际上是执行了java命令,因为java默认的最大可用内存不能够满足Maven运行时的需要,解决的的办法就是调整Java堆的大小。1.报出的异常如下:java.lang.OutOfMemoryError: Java heap spaceat java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:99)at java.... 阅读全文
posted @ 2012-06-15 11:55 Liter 阅读(6605) 评论(0) 推荐(0) 编辑
摘要: 最近找到一个Eclipse的插件,名字是Easy Explore,是Easy Structs其 中的一个部分。主要的功能就是在Eclipse里面视图的部分如果看到自己的工程,或者Package,包什么的,在安装完该插件以后点击鼠标右键,选 择"Easy Explore"就可以快速的打开该文件的windows存放文件夹,对于快速的导出源文件是一个很有用的插件。安装方法:下载Easy Explore 1.0.1 for Eclipse后解压,将plugins和features目录下的文件夹分别复制到eclipse安装目录下的plugins和features中,就ok了。另外一中 阅读全文
posted @ 2012-06-15 10:08 Liter 阅读(1857) 评论(1) 推荐(1) 编辑
摘要: Quartz是一个任务进度管理器,可以与任何其他软件系统集成或者一起使用。是用一个小Java库发布的文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。 以top调用错误统计定时发送邮件任务为例介绍Quartz定时任务的Spring依赖注入配置方法: 1.定时目标类TaoReportTask的bean配置(详见eshop/eshop/src/bean/spring-app-task.xml)。 ${task.taoreport.ip} ... 阅读全文
posted @ 2012-06-14 15:42 Liter 阅读(1129) 评论(0) 推荐(0) 编辑
摘要: 通常ibatis在处理上ResultMap更快,更推荐使用。但很多时候为了复用或简单处理也会使用ResultClass;使用ResultClass,如果字段与属性一模一样的话,查询出来数据集会自动匹配到ResultClass指定的类的实例对象,如果字段名不在属性中的话,那这个字段将不会被返回的实例体类对象接受,相当于没有查询出这个字段一样;使用ResultMap,如果在ResultMap中给出的配置字段,但是你返回的数据集的时候却没有返回这个字段,那程序将抛出异常。但是相反的,如果你返回了一些字段,却没有在ResultMap给出配置定义的话,那么那些字段将不会被处理而不会给你任何的提示,相当. 阅读全文
posted @ 2012-06-14 15:34 Liter 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 场景描述:在topnotify项目中定义了一个抽象类PcNotify,也定义了他的子类PcNotifyTrade,PcNotifyTrade对象需要被发送到Napoliqueue(Napoli是阿里的异步调用框架,以消息队列为中心),需要被序列化,PcNotify实现了序列化接口。数聚宝项目中需要消费这个queue,也定义这个抽象类和他的子类,类名、包名和属性都一样,PcNotify也实现了序列化接口,这里需要反序列化成对象。(1) 两个PcNotifyTrade类序列化ID相同,他们的父类都没有序列化ID。(2) 两个PcNotifyTrade类序列化ID相同,topnotify项目中的Pc 阅读全文
posted @ 2012-06-14 14:44 Liter 阅读(716) 评论(0) 推荐(0) 编辑
摘要: 用RMI实现基于Java的分布式计算(1)向您介绍使用RMI实现Java的分布式计算。由于Java具有跨平台、代码可移植性、安全高效等广泛而强大的功能,因而在开发网络Java分布式应用的时候,可以用它自身的机制实现分布式计算。概述随着电力企业信息化建设的不断深入和发展,企业内部和企业与企业之间对信息、对数据的交换量大大增加,这些信息与数据越来越需要在不同的计算机网络间传送和交流。同时,由于各单位、各部门之间的现存的计算机网络硬件设备与操作系统千差万别,应用水平也参差不齐,因此,开发出跨平台、可移植、高效安全的网络分布式应用来服务于电力企业,就显得尤为重要。在当今的编程术语里,分布式计算已经成为 阅读全文
posted @ 2012-06-12 13:07 Liter 阅读(614) 评论(1) 推荐(0) 编辑
摘要: 先简单介绍下JVM启动相关的一些内存设置参数。因为内存溢出异常发生,与这些参数的设置密切相关。举例说明含义:-Xss128k每个线程的java栈大小,一个线程java栈所有栈帧大小总和最大允许的尺寸128k。-Xms128m表示JVM Heap(堆内存)最小尺寸128MB,初始分配-Xmx512m表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。-XX:PermSize=20M设置方法区的初始大小-XX:MaxPermSize=30M设置方法区的最大值Java栈溢出1.StackOverflowError异常StackOverflowError异常是由于方法调用的层次太深,最终 阅读全文
posted @ 2012-06-12 12:48 Liter 阅读(213) 评论(1) 推荐(0) 编辑