Java基础复习系列四

1.UML是什么,UML中有哪些图

UML是统一建模语言(Unified Modeling Language)的缩写

用例图(use case diagram)、类图(class diagram)、时序图(sequence diagram)、协作图(collaboration diagram)、状态图(statechart diagram)、活动图(activity diagram)、构件图(component diagram)、部署图(deployment diagram)等

 

最关键的三种图是:

用例图:用来捕获需求,描述系统的功能,通过该图可以迅速的了解系统的功能模块及其关系

类图:描述类以及类与类之间的关系,通过该图可以快速了解系统

时序图:描述执行特定任务时对象之间的交互关系以及执行顺序,通过该图可以了解对象能接收的消息也就是说对象能够向外界提供的服务

 

2.写一个单例类

public class SignleTon {

 

private SignleTon(){}

private static SignleTon instance =null;

public static SignleTon getInstance(){

if(instance == null) {

instance = new SignleTon();

}

return instance;

}

}

单例的特点:外界无法通过构造器来创建对象,该类必须提供一个静态方法向外界提供该类的唯一实例。

 

3.设计模式、面向对象的编程原则,

 

http://blog.csdn.net/jackfrued/article/details/17566627  73点(java复习主要就看这博客以及一些其他的了)

 

http://www.cnblogs.com/beijiguangyong/archive/2010/11/15/2302807.html

 

4.你在开发中都用了哪一些设计模式,用在什么场合?

面试被问到关于设计模式的知识时,可以拣最常用的作答,例如:

0)单例模式 

单例模式的好处:可以节省内存,因为限制了实例的个数,有利于java垃圾回收

数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。数据库软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的,用单例模式来维护,就可以大大降低这种损耗。

Windows任务管理器,

其一,如果能弹出多个窗口,且这些窗口的内容完全一致,全部是重复对象,这势必会浪费系统资源,任务管理器需要获取系统运行时的诸多信息,这些信息的获取需要消耗一定的系统资源,包括CPU资源及内存资源等,浪费是可耻的,而且根本没有必要显示多个内容完全相同的窗口;其二,如果弹出的多个窗口内容不一致,问题就更加严重了,这意味着在某一瞬间系统资源使用情况和进程、服务等信息存在多个状态,例如任务管理器窗口A显示CPU使用率10%,窗口B显示CPU使用率15%,到底哪个才是真实的呢?

单例模式应用的场景:

 (1)资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如上述中的日志文件,应用配置。

 (2)控制资源的情况下,方便资源之间的互相通信。如线程池等。

1)工厂模式:工厂类可以根据条件生成不同的子类实例,这些子类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作(多态方法)。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

5.在进行数据库编程时,连接池有什么作用?

由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时,每次建立连接都需要进行TCP的三次握手,再加上网络延迟,造成的开销是不可忽视的),为了提升系统访问数据库的性能,可以事先创建若干连接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭连接,从而避免频繁创建和释放连接所造成的开销,这是典型的用空间换取时间的策略(浪费了空间存储连接,但节省了创建和释放连接的时间)。

TCP三次握手  如果是localhost 本地服务器,就是用unix socket,如果是127.0.0.1 就是本地地址,采用tcp/tp连接

http://blog.csdn.net/whuslei/article/details/6667471/

6.什么是DAO模式

DAODataAccess Object)顾名思义是一个为数据库或其他持久化机制提供了抽象接口的对象,在不暴露数据库实现细节的前提下提供了各种数据操作。为了建立一个健壮的Java EE应用,应该将所有对数据源的访问操作进行抽象化后封装在一个公共API中。用程序设计语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。

7.JDBC中如何进行事务处理

Connection提供了事务处理的方法,通过调用setAutoCommit(false)可以设置手动提交事务;当事务完成后用commit()显式提交事务;如果在事务处理过程中发生异常则通过rollback()进行事务回滚。

8. 事务的ACID是指什么?

1)原子性(Atomic):事务中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败;

2)一致性(Consistent)    一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

案例对银行转帐事务,不管事务成功还是失败,应该保证事务结束后ACCOUNT表中aaabbb的存款总额为2000元。

3)隔离性(Isolated):并发执行的事务彼此无法看到对方的中间状态;

AB都给C转账,AB转账与BC转账是相互隔离不受影响的

4)持久性(Durable):事务完成后所做的改动都会被持久化,即使发生灾难性的失败。通过日志和同步备份可以在故障发生后重建数据。

只有存在并发数据访问时才需要事务。

 

9.StatementPreparedStatement有什么区别?哪个性能更好?

Statement相比,①PreparedStatement接口代表预编译的语句,它主要的优势在于可以减少SQL的编译错误并增加SQL的安全性(减少SQL注射攻击的可能性);②PreparedStatement中的SQL语句是可以带参数的;当批量处理SQL时或频繁执行相同的查询时,PreparedStatement有明显的性能上的优势,由于数据库可以将编译优化后的SQL语句缓存起来,下次执行相同语句时就会很快。

 

10.JDBC能否处理BlobClob

Blob是指二进制大对象(Binary Large Object),而Clob是指大字符对象(Character Large Objec),因此其中Blob是为存储大的二进制数据而设计的,而Clob是为存储大的文本数据而设计的   JDBC都能处理

 

JDBC连接数据库

 

(1)加载JDBC驱动程序:连接数据库之前,首先要加载想要连接的数据库驱动到JVM(java虚拟机) Class.forName("com.mysql.jdbc.Driver")

(2)提供JDBC连接的URL jdbc:mysql://IP:3306/Hotel

(3)创建数据库的连接:要想连接数据库,需要像java.sql.DriverManager请求并获得Connecttion对象 url+user+passwd

(4)创建Statement,用来执行Sql语句

(5)所执行的sql语句返回的结果用resultSet显示 ResultSet executeQuery(String sqlString)

(6)关闭连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值