摘要: 诊断数据库性能问题就象医生诊断病人病情一样,既要结合自己积累的经验,又要依靠科学的诊断报告,才能准确地判断问题的根源在哪里。前面三篇文章我们介绍了许多优化数据库性能的方法,固然掌握优化技巧很重要,但诊断数据库性能问题是优化的前提,本文就介绍一下如何诊断数据库性能问题。 阅读全文
posted @ 2014-01-05 19:29 elysee 阅读(1906) 评论(2) 推荐(6) 编辑
摘要: 数据模型描述系统持久性数据库层的逻辑内容与结构,数据模型用UML的类图描述。首先简要介绍数据模型的设计方法及关系数据库的几个术语,然后依次介绍如何将类映射到表、将关联映射到关系数据库及将泛化映射到数据库。 阅读全文
posted @ 2014-01-04 23:03 elysee 阅读(2505) 评论(0) 推荐(0) 编辑
摘要: 本章介绍动态模型的设计过程,系统实例的动态模型用序列图来描述,首先介绍选择序列图的理由,最后分别设计各个用例主路径的序列图。本设计结果将充实和完善系统结构的表示服务层、商业上下文服务层、商业规则服务层、数据转化服务层和数据访问服务层的内容。 1、选择序列图 UML以图的形式提供了4种动态模型:序列图、协作图、状态图和活动图,序列图和协作图都是交互图。序列图是描述对象如何交互的,其中最重要的是时间,由于序列图于用例路径有关,所以在大多数动态建模中都要用到它。协作图也是描述对象交付的,但侧重于对象空间的协作,协作图是序列图的“孪生兄弟”,在序列图和协作图中可以任选一个,状态图只有在一个类具... 阅读全文
posted @ 2014-01-04 08:44 elysee 阅读(2860) 评论(0) 推荐(1) 编辑
摘要: 经过索引优化,重构TSQL后你的数据库还存在性能问题吗?完全有可能,这时必须得找另外的方法才行。SQL Server在索引方面还提供了某些高级特性,可能你还从未使用过,利用高级索引会显著地改善系统性能,本文将从高级索引技术谈起,另外还将介绍反范式化技术。 阅读全文
posted @ 2014-01-02 09:23 elysee 阅读(1471) 评论(3) 推荐(3) 编辑
摘要: 在前面我们介绍了如何正确使用索引,调整索引是见效最快的性能调优方法,但一般而言,调整索引只会提高查询性能。除此之外,我们还可以调整数据访问代码和TSQL,本文就介绍如何以最优的方法重构数据访问代码和TSQL。 阅读全文
posted @ 2014-01-01 09:03 elysee 阅读(1562) 评论(2) 推荐(0) 编辑
摘要: 在正式开始之前,有必要澄清一下本系列文章的写作边界,我想谈的是“事务性(OLTP)SQL Server数据库中的数据访问性能优化”,但文中介绍的这些技巧也可以用于其它数据库平台。同时,我介绍的这些技巧主要是面向程序开发人员的,虽然DBA也是优化数据库的一支主要力量,但DBA使用的优化方法不在我的讨论范围之内。当一个基于数据库的应用程序运行起来很慢时,90%的可能都是由于数据访问程序的问题,要么是没有优化,要么是没有按最佳方法编写代码,因此你需要审查和优化你的数据访问/处理程序。   我将会谈到10个步骤来优化数据访问程序,先从最基本的索引说起吧! 阅读全文
posted @ 2013-12-31 08:24 elysee 阅读(2683) 评论(10) 推荐(8) 编辑
摘要: spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。编程式主要使用transactionTemplate。省略了部分的提交,回滚,一系列的事务对象定义,需注入事务管理对象;声明式:主要使用TransactionProxyFactoryBean,围绕Poxy的动态代理,能够自动的提交和回滚事务。统观spring事务,围绕着两个核心PlatformTransactionManager和TransactionStatus,下面我们以声明式方式来讲解。 阅读全文
posted @ 2013-12-30 13:29 elysee 阅读(3965) 评论(3) 推荐(2) 编辑
摘要: Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。 阅读全文
posted @ 2013-12-30 12:42 elysee 阅读(3389) 评论(1) 推荐(1) 编辑
摘要: Java的基础知识点就太多了,要说也不能穷尽,这个主要是靠自己在平时的积累和项目的开发经验,外边考的多的一般是继承,多态,线程,集合等等,但是笔试或者是面试中很有可能问许多集体的内容,比如hashMap和hashTable的异同点,集合的主要框架,这些要多看资料,我的建议是到网上去多下点笔试题,看到了就会有感觉,基础知识牢靠的话,笔试很容易过。面试的时候(我只能说关于技术的部分),java web面试,首先面试官要看你有没有项目的经验,所以简历中肯定要有项目的经验。再者,简历中的项目一定要是你亲身经历的,或者是你对这个项目很了解(不论是从技术或者是从源码),因为面试官在你介绍的项目的时候很可能打断你要你介绍具体的实现方法。 在介绍自己项目的时候,一定要发觉自己在项目中的闪光点,也就是有和一般的项目有重大区别的地方(可以对面试官详诉)。然后就是你在项目中所使用的技术,你要有一定的了解,比如说spring,你首先要知道使用spring框架的好处,然后就是spring的主要组成(ioc和aop),当然面试官回问一些关于技术的实际问题(比如说加载的applicationContext.xml可 阅读全文
posted @ 2013-12-30 08:08 elysee 阅读(3408) 评论(2) 推荐(1) 编辑
摘要: 在面试中,算法题目是必须的,通过算法能够看出一个程序员的编程思维,考察对复杂问题的设计与分析能力,对问题的严谨性都能够体现出来。算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。一个算法的好坏,直接影响一个方法调用的性能,进而影响软件的整体性能。 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按... 阅读全文
posted @ 2013-12-29 18:45 elysee 阅读(4839) 评论(2) 推荐(1) 编辑