JDBC和连接池0511.BasicDAO先来分析一个问题前面我们使用了Apache-DBUtils和Druid简化了JDBC开发,但仍存在以下不足:SQL语句是固定的,不能通过参数传入,通用性不好,需要进行改进,来更方便执行增删改查对于select操作,如果有返回值,返回类型还不确定,应该使用泛型将来如果表很多,业务需求复杂,不可能只靠一个Java来完成为了解决这些问题,就要引出BasicDAO的概念11.1BasicDao分析基本说明DAO,即dataaccessobject(数据访问对象)这样的通用类称为BasicDao,是专门和数据库进行交互的,即完成对数据库(表)的crud操作在Ba
Spring管理Bean-IOC-032.基于XML配置bean2.15bean的生命周期bean对象的创建是由JVM完成的,然后执行如下方法:执行构造器执行set相关方法调用bean的初始化方法(需要配置)使用bean当容器关闭时,调用bean的销毁方法(需要配置)例子House:packagecom.li.bean;/***@author李*@version1.0*/publicclassHouse{privateStringname;publicHouse(){System.out.println("House()构造器被执行...");}publicStringgetName(){re
Spring管理Bean-IOC-032.基于XML配置bean2.15bean的生命周期bean对象的创建是由JVM完成的,然后执行如下方法:执行构造器执行set相关方法调用bean的初始化方法(需要配置)使用bean当容器关闭时,调用bean的销毁方法(需要配置)例子House:packagecom.li.bean;/***@author李*@version1.0*/publicclassHouse{privateStringname;publicHouse(){System.out.println("House()构造器被执行...");}publicStringgetName(){re
Spring管理Bean-IOC-053.基于注解配置bean3.3自动装配基本说明:基于注解配置bean,也可以实现自动装配,使用的注解是:@AutoWired或者@Resource@AutoWired的规则说明(1)在IOC容器中查找待装配的组件的类型,如果有唯一的bean装配(按类型),则使用该bean装配(2)如果待装配的类型对应的bean在IOC容器中有多个,则使用待装配的属性的属性名作为id值进行查找,找到就装配,找不到就抛异常@Resource的规则说明(1)@Resource有两个属性比较重要,分别是name和typeSpring将@Resource注解的name属性解析为be
Spring管理Bean-IOC-053.基于注解配置bean3.3自动装配基本说明:基于注解配置bean,也可以实现自动装配,使用的注解是:@AutoWired或者@Resource@AutoWired的规则说明(1)在IOC容器中查找待装配的组件的类型,如果有唯一的bean装配(按类型),则使用该bean装配(2)如果待装配的类型对应的bean在IOC容器中有多个,则使用待装配的属性的属性名作为id值进行查找,找到就装配,找不到就抛异常@Resource的规则说明(1)@Resource有两个属性比较重要,分别是name和typeSpring将@Resource注解的name属性解析为be
1. Java81.1. 除了增加函数式特性,还增加了一些配合使用的语法糖衣1.2. 函数式接口1.2.1. SAM(SingleAbstractMethod,单抽象方法)接口1.2.1.1. 含有单一方法的接口是Java的一种习惯用法1.2.1.2. Runnable和Callable接口都是有代表性的例子1.2.2. 对旧有SAM接口的增强,它允许我们用lambda块取代传统的匿名类来就地实例化一个接口1.3. 默认方法1.3.1. 一些在接口类型中声明的,以default关键字标记的,非抽象、非静态的public方法(且带有方法体定义)1.4. mixin1.4.1. 介于接口和父类之间
1. Java81.1. 除了增加函数式特性,还增加了一些配合使用的语法糖衣1.2. 函数式接口1.2.1. SAM(SingleAbstractMethod,单抽象方法)接口1.2.1.1. 含有单一方法的接口是Java的一种习惯用法1.2.1.2. Runnable和Callable接口都是有代表性的例子1.2.2. 对旧有SAM接口的增强,它允许我们用lambda块取代传统的匿名类来就地实例化一个接口1.3. 默认方法1.3.1. 一些在接口类型中声明的,以default关键字标记的,非抽象、非静态的public方法(且带有方法体定义)1.4. mixin1.4.1. 介于接口和父类之间
1. 并发1.1. 两个任务共享时间段1.2. 一个程序要运行两个任务,并且只有一个CPU给它们分配了不同的时间片,那么这就是并发,而不是并行2. 并行2.1. 两个任务在同一时间发生2.2. 为缩短任务执行时间,将一个任务分解成几部分,然后并行执行2.3. 和顺序执行的任务量是一样的,区别就像用更多的马来拉车,花费的时间自然减少了2.4. 重要2.4.1. 不能再依赖提升CPU的时钟频率来提高现有代码的计算能力2.4.2. 需要利用现代CPU的架构,而这唯一的办法就是编写并行化的代码2.4.3. 阿姆达尔定律2.4.3.1. 一个简单规则,预测了搭载多核处理器的机器提升程序速度的理论最大值2
1. 并发1.1. 两个任务共享时间段1.2. 一个程序要运行两个任务,并且只有一个CPU给它们分配了不同的时间片,那么这就是并发,而不是并行2. 并行2.1. 两个任务在同一时间发生2.2. 为缩短任务执行时间,将一个任务分解成几部分,然后并行执行2.3. 和顺序执行的任务量是一样的,区别就像用更多的马来拉车,花费的时间自然减少了2.4. 重要2.4.1. 不能再依赖提升CPU的时钟频率来提高现有代码的计算能力2.4.2. 需要利用现代CPU的架构,而这唯一的办法就是编写并行化的代码2.4.3. 阿姆达尔定律2.4.3.1. 一个简单规则,预测了搭载多核处理器的机器提升程序速度的理论最大值2
Java集合0511.HashSet课堂练习11.1课堂练习1定义一个Employee类,该类包括:private成员属性name,age要求:创建3个Employee对象放入HashSet中当name和age的值相同时,认为是相同员工,不能添加到HashSet集合中思路:不同对象的哈希值一般会不一样,导致在添加对象时可能会在table数组的不同位置添加,因此想要比较对象的属性值,就要重写hashCode方法,使具有相同属性的对象具有一样的hash值,这样才能在插入时比较对象的值;但不同的对象也可能具有相同的hash值,所以要重写equals方法来比较对象属性值如下图:在add()方法最终调用