JAVA 学习笔记 number4

1.单例模式:懒汉式,饿汉式,双重锁式
(1)第一种:懒汉,线程不安全
public class Singleton{
private static Singleton instance;
private Singleton (){}
public static Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
(2)懒汉,线程安全
public class Singleton{
private static Singleton instance;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(instance==null){
instance = new Singleton;
}
return instance;
}
}
(3)饿汉
public class Singleton{
priavte static Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}

(4)双重锁
public class Singleton{
private volatile static Singleton singleton;
private Singleton(){}
public static Singleton getSingleton(){
if(singleton==null){
synchronized (Singleton.class){
if(singleton==null){
singleton =new Singleton();
}
}
}
return singleton;
}
}

3.getInstance()
这是一个单例模式,一般用于比较大,复杂的对象,只初始化一次,应该还有一个private构造函数,使其不能用new 来实例化对象,只能调用getInstance方法来的到对象,而getInstance保证了每次调用都返回了相同的值;

4.rsh参数:是一个ResultSetHandler类型,一般都是创建一个该类型的子类对象,然后传进去;

5.事物的使用
(1)设置手动事务:connection.setAutocommit(false);
(2)在try{做业务,提交事务connection.commit()},在异常catch{connection.rollback}

6.事务并发处理引起的问题
(1)脏读:一个事务提交到了另一个数据给另一个数据,后来的一个数据回滚到了原始数据;
(2)不可复读:一个事务在运行期间,两次读取相同的数据,数据不一致,原因是另外一个事务对数据进行了修改,所以不同
(3)虚读(幻读):在一个事务的运行期间,两次读取的都是相同的数据,但是读取的内容不一样,原因是另外一个事务对其进行了修改或者删除;

7.关于用三层写增删查改的几个方法的理解
(1)QueyRunner
执行sql语句的对象,可以认为是preparestatement对象,在使用时建议带上数据源datasource
(2)BeanHander
将ResultSet中第一行数据转化为类的对象,它的原理是反射+元数据操作,将对象封装到对象中;
(3)BeanListHandler
奖ResultSet中所有的数据转化成list集合,list里面放的是类的对象
(4)ScalarHandler
将ResultSet中的一条记录其中的某一列数据有或者object;

8.JDBCUtils工具类的编写
public class JDBCUtils{
//创建数据源
private static DataSource ds = new combopooledDataSource();
//获得数据源
public static Datasource getDatasource(){
return ds;
}
//获得连接对象
public static connection getconnection(){
return ds.getconnection;
}
}

9.servlet
(1)定义:运行在服务器的java程序,是一个特殊的类,它必须继承HttpServlet或者实现servlet接口;
(2)作用:处理客户端发送的请求,响应客户端的浏览器;
(3)使用步骤:
a.创建一个类,继承HttpServlet类;
b.在web.xml文件去描述servlet的信息(部署描述符合的文件),这里描述了url,浏览器就是通过该url访问servlet.
(4)生命周期
初始化阶段阶段:
容器加载servlet编译后的.class文件-----创建和该servlet相关联的servletConfig(包含servlet相关的信息,通过servletcontext对象–servletcontext整个站点的相关信息)----容器创建servlet对象(反射创建)-----容器调用servlet的init(servletconfig config)
运行阶段:
执行servlet()
销毁阶段:
destroy—容器销毁时,此时开始销毁servlet,同时销毁servletconfig,销毁其他资源;
解析:a.第一次请求时,由容器进行实例化;
b.在调用init()方法时进行初始化;
c.执行service()方法处理请求;
d.销毁阶段,执行destory();

10.jsp与servlet之间的关系
把html中的代码写到jsp中去,由web容器把他翻译成java代码,这个代码就是servlert,这个过程是由web容器自动翻译的,然后编译成.class文件,当用户请求jsp的时候,第一次的时候会编译成后面会执行.class;
11.jsp与servlet的分工
jsp注重做页面显示;servlet用于做控制器,

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值