20145226夏艺华 《Java程序设计》第9周学习总结
教材学习内容总结
学习目标
了解JDBC架构
掌握JDBC架构
掌握反射与ClassLoader
了解自定义泛型和自定义枚举
会使用标准注解
第16章 整合数据库
16.1 JDBC入门
(一)JDBC简介
JDBC全名Java DataBase Connectivity,是联机数据库的标准规范。具体而言,它定义一组标准类与接口,应用程序需要联机数据库时调用这组标准API,而标准API中的接口会由数据库厂商操作,通常称为JDBC驱动程序(Driver)。应用程序调用JDBC标准API如下:
JDBC标准分为两个部分:JDBC应用程序开发者接口以及JDBC驱动程序开发者接口。如果应用程序需要联机数据库,就是调用JDBC应用程序开发者接口,相关API主要在java.sql与javax.sql两个包中。JDBC驱动程序开发者接口是数据库厂商操作驱动程序时的规范,一般开发者并不用了解。JDBC应用程序开发者接口如下所示:
厂商在操作JDBC驱动程序时,依操作方式可将驱动程序分为4种类型:
JDBC-ODBC Bridge Driver
ODBC是由Microsoft主导的数据库连接标准;JDBC-ODBC Bridge Driver驱动程序会将JDBC调用转换为对ODBC驱动程序的调用,由ODBC驱动程序操作数据库。Native API Driver
这个类型的驱动程序会以原生方式,调用数据库提供的原生链接库,所以驱动程序本身与平台相依,没有达到JDBC驱动程序的目标:跨平台;由于直接调用数据库原生API,因此在速度上,有机会成为4种类型中最快的驱动程序。JDBC-Net Driver
JDBC驱动程序会将JDBC方法调用转换为特定的网络协议调用;可以使用纯粹的Java技术来实现,从而实现跨平台;由于通过中介服务器转换,速度较慢,获得架构弹性是使用这种类型驱动程序的目的。Native Protocal Driver
驱动程序可以使用纯粹Java技术实现,因此这种类型驱动程序可以跨平台;是最常见的驱动程序类型。
(二)连接数据库
为了要连接数据库系统,必须要有厂商操作的JDBC驱动程序,必须在CLASSPATH中设定驱动程序JAR文档。基本数据库操作相关的JDBC接口或类是位于java.sql包中,要取得数据库联机,必须有几个动作:
注册Driver操作对象
取得Connection操作对象
关闭Connection操作对象
16.2 JDBC进阶
交易的四个基本要求是原子性、一致性、隔离行为与持续性。
- 原子性:一个交易是一个单元工作,可能包含多个步骤,这些步骤必须全部执行成功,若一个失败,则整个交易失败。
- 一致性:交易作用的数据集合在交易前后必须一致。
- 隔离行为:交易与交易之间,必须互不干扰。
- 持续性:交易一旦成功,所有变更必须保存下来。
当多个交易并行时,可能引发的数据不一致问题:
更新遗失:基本上就是指某个交易对字段进行更新的信息,因另一个交易的介入而遗失更新效力。
脏读:两个交易同时进行时,其中一个交易更新数据但未确认,另一个交易就读取数据,就有可能发生脏读问题。
无法重复的读取:某个交易两次读取同一字段的数据并不一致。
幻读:同一交易期间,读取到的数据笔数不一致。
JDBC定义了java.sql.RowSet接口,用以代表数据的列集合,这里的数据并不一定是数据库中的数据,可以是电子表格数据、XML数据或任何具有列集合概念的数据源。RowSet定义了列集合基本行为,其下有JdbcRowSet、CachedRowSet、FilteredRowSet、JoinRowSet、WebRowSet五个标准列集合子接口,定义在javax.sql.rowset包中。
第17章 反射与类加载器
17.1 运用反射
Java真正需要某个类时才会载入对应的.class文档,而非在程序启动时就加载所有类。java.lang.Class的实例代表Java应用程序运行时载入的.class文档,类、接口、Enum等编译后,都会生成.class文档。Class类没有公开(public)构造函数,实例是由JVM自动产生,可以通过Object的getClass()方法,或者是透过.class常量取得每个对象对应的Class对象。
可以使用Class.forName()方法实现动态加载类,可用字符串指定类名称来获得类相关信息。Class.forName()方法在找不到指定类时会抛出ClassNotFoundException异常。
Class对象加载的.class文档,取得Class对象后,就可以取得.class文档中记载的信息,例如包、构造函数、方法成员等类型。每个类型都会有对应的类型,如果事先不知道类名称,可以利用Class.forName()动态加载.class文档,取得Class对象之后,利用其newInstance()方法建立类实例。
17.2 了解类加载器
类加载器都继承自抽象类java.lang.ClassLoader,每个.class文档加载后,都会有个Class实例来代表。可以由Class的getClassLoader()取得加载对应.class文档的ClassLoader实例,而ClassLoader的getParent()方法可以取得父ClassLoader实例。
由同一类加载器载入的.class文档,只会有一个Class实例。如果同一.class文档由两个不同的类加载器载入,则会有两份不同的Class实例。
第18章 自定义泛型、枚举与注释
18.1 自定义泛型
泛型,即“参数化类型”。泛型就是将类型由原来的具体的类型参数化,此时类型也定义成参数形式,然后在调用时传入具体的类型。
泛型也可以仅定义在方法上,可在方法返回类型前使用定义泛型,之后就可以使用T来定义返回类型、参数类型,或在方法内声明变量、转换类型等,在定义泛型时,使用extends限制指定T实际类型时,必须是某类的子类。
18.2 自定义枚举
Enum是个抽象类,无法直接实例化,它操作了Comparable接口,在compareTo()方法中,主要是针对ordinal成员比较。定义enum时可以自定义构造函数,条件是不得为公开(public)构造函数,也不可以在构造函数中调用super(),定义enum时有个特定值类本体语法,可用于操作接口或重新定义父类方法。
18.3 注释
@Override在原始码中提供编译程序的信息是,被注释的方法必须是父类或接口中已定义的方法,请编译程序协助是否真的为重新定义方法。
教材学习中的问题和解决过程
1.在教材548页中捕捉ClassNotFoundExceotion异常出现错误,如下图:
原因是程序中没有语句出现ClassNotFoundExceotion异常,所以catch错误,只能throws异常。
代码调试中的问题和解决过程
1.在连接数据库时出现ClassNotFoundException问题:
出现这个问题的原因是没有导入对应的library,所以导入对应的mysql-connector-java-5.1.40-bin.jar文件。之后还会出现新的错误,原因是没有安装对应的数据库软件,安装软件后就没有错误了。
本周代码托管截图
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第二周 | 200/400 | 1/3 | 12/52 | |
预备作业 | 0/400 | 1/4 | 15/67 | |
第三周 | 500/900 | 1/5 | 10/77 | |
第四周 | 500/1500 | 1/6 | 15/92 | |
第五周 | 500/2000 | 1/7 | 20/112 | |
第六周 | 500/2500 | 2/9 | 20/132 | |
第七周 | 500/3000 | 2/11 | 30/162 | |
第八周 | 500/3500 | 2/13 | 20/182 | |
第九周 | 700/4200 | 2/15 | 30/212 |
20145226夏艺华 《Java程序设计》第9周学习总结的更多相关文章
- 20145226夏艺华 JAVA预备作业1
博客阅读总结 关于师生关系: 学生和老师之间我觉得关系时多元化的,不能拘泥于单独的一种关系:灌输与被灌输,教授与被教授--我认为,在不同的课程阶段,师生之间的关系都可以发生变化.前期的老师更像是一个指 ...
- 20145226夏艺华 《Java程序设计》实验报告四
实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试 了解Android组件.布局管理器的使用 掌握Android中事件处理机制 Andro ...
- 20145226夏艺华 网络对抗技术 EXP9 web安全基础实践
20145226夏艺华 网络对抗技术 EXP9 web安全基础实践 !!!免考项目:wannacry病毒分析+防护 一.实验后回答问题 SQL注入攻击原理,如何防御 攻击原理 "SQL注入& ...
- 20145226夏艺华 网络对抗技术EXP8 WEB基础实践
20145226夏艺华 网络对抗技术EXP8 WEB基础实践 实验问题回答 1.什么是表单? 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CG ...
- 20145226夏艺华 网络对抗技术 EXP7 网络欺诈技术防范
20145226夏艺华 网络对抗技术 EXP7 网络欺诈技术防范 实践内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. · 简单应用SET工具建立冒名网站 · ett ...
- 20145226夏艺华 Exp6 信息搜集与漏洞扫描
20145226夏艺华 Exp6 信息搜集与漏洞扫描 基础问题回答 哪些组织负责DNS,IP的管理? · 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地址管理 ...
- 20145226夏艺华 网络对抗技术EXP4 恶意代码分析
20145226夏艺华 网络对抗技术EXP4 恶意代码分析(未完成版) 回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作 ...
- 20145226夏艺华《网络对抗》第一次实验拓展:shellcode注入+return-to-libc
20145226夏艺华<网络对抗>第一次实验拓展:shellcode注入+return-to-libc shellcode注入实践 编写shellcode 编写shellcode已经在之前 ...
- 20155312 2016-2017-2 《Java程序设计》第九周学习总结
20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...
- 20155213 2016-2017-2 《Java程序设计》第九周学习总结
20155213 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBase Connectivity)即java数据库连 ...
随机推荐
- scala基础入门
1.scala当中申明值和变量 scala当中的变量申明可以使用两种方式,第一种使用val来申明变量.第二种使用var来申明变量. 申明变量语法 val/var 变量名 [:变量类型] = 变量值 其 ...
- Java虚拟机10:Client模式和Server模式的区别
部分商用虚拟机中,Java程序最初是通过解释器对.class文件进行解释执行的,当虚拟机发现某个方法或代码块运行地特别频繁的时候,就会把这些代码认定为热点代码Hot Spot Code(这也是我们使用 ...
- maven的pom.xml文件报错问题
第一次用 Spring Starter Project 创建一个Spring应用时,POM 文件报错: Project build error: Non-resolvable parent POM f ...
- virtualbox+vagrant学习-5-Boxes-1-简介
Boxes boxes是vagrant环境的包格式.在vagrant支持的任何平台上,任何人都可以使用一个box来创建一个相同的工作环境.vagrant box实用程序提供了管理boxes的所有功能. ...
- String 的字面量、常量池、构造函数和intern()函数
一.内存中的 String 对象 Java 的堆和栈 对于基本数据类型变量和对象的引用,也就是局部变量表属于栈内存: 而通过 new 关键字和 constructor 创建的对象存放在堆内存: 直接的 ...
- 利用matplotlib绘画出二特征的散点图
实例的所有数据来源于吴恩达教授的机器学习数据,特此感谢.数据源可以前往course下载. 本文主要目地在于绘画二维的散点图,至于scatter的用法可以参见我之前的博客. import pandas ...
- VB.NET & Visual Basic
当看到VB.NET者这本书籍的时候,翻开文件夹唯一的感受就是:这不和VB一样吗?究竟有什么差别呢? 1)版本号: 又一次回想VB,能够发现事实上他是Microsoft退出的基于Windows操作系统环 ...
- HTML基础代码
<!--注释内容,在浏览时不会显示--><!DOCTYPE HTML> <!--声明文档类型--><html> <!--头部内容:--> & ...
- VMware虚拟机安装Centos7图文教程
CentOS 是一个工业标准的 Linux 发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更好地使用你的系统,你需要进行一些升级.安装新的软件包.配置特定服务和应用程 ...
- Oracle高级函数篇之递归查询start with connect by prior简单用法
路飞:" 把原来CSDN的博客转移到博客园咯!" 前段时间,自己负责的任务中刚好涉及到了组织关系的业务需求,自己用了oracle递归查询.下面简单来举个例子.在工作中我们经常会遇到 ...