20155334 2016-2017-2 《Java程序设计》第九周学习总结
教材学习内容总结
第十六章:整合数据库
16.1 JDBC入门
- JDBC(Java DataBase Connectivity)即Java数据库连接,是一种执行SQL语句的Java API
- JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
- 对于JDBC,其使用有两个步骤:
进行驱动程序的装载-->连接的建立
- 基本数据库操作相关JDBC接口或类是为位于java.sql包中。
- Connection接口的操作对象是数据库联机代表对象。
- 建立数据库的步骤:
注册Driver的操作对象-->取得Connection操作对象-->关闭connection操作对象
- Statement是SQL描述的代表对象,可以使用
executeUpdate()
executeQuery()
等方法来执行SQL。 - Statement的executeUpdate()方法用于SELECT等查询数据库的SQL,返回int结果,表示数据变动的笔数。
- Statement的executeQuery()方法返回java.sql.ResultSet对象,代表查询结果。
- Statement的execute()方法用来执行SQL,返回true表示SQL执行将返回。
- 如果撰写数据库的预存程序,并想要使用JDBC来调用,则可使用java.sql.CallableStatement。必须调用prepareCall()建立CallableStatement异常,可以使用registerOutParameter()注册输出参数。
16.2 JDBC进阶
- 让MessageDAO依赖于java.sql.DataSource接口,可以通过其定义的
getConnection()
方法取得Connection。 - 日后要修改数据库服务器主机位置,为了打算重复利用Connection对象而想要加入联机池机制等情况,这个MessageDAO都不用修改。
- 联机相关信息可以使用.properties设定。
- 建立Statement或PreparedStatement实例时,可以指定结果集类型与并行方式。
- 批次更新的限制是,SQL不能使SELECT,否则会抛出异常。
- 可以把BLOB字段对应byte[]或输入\输出串流。
- 在交易管理时,仅想要撤回某个SQL执行点,则可以设定存储点。
- Metadata即“诠读数据的数据”,可以通过connection的getMetaData()方法取得DatabaseMetaData对象,可以取得数据库整体信息,而ResultSet表示查询到的数据,可以通过ResultSet的getMetaData()方法,取得ResultSetMetaData对象。
- javax.sql.RowSet接口,代表数据的列集合。可以对列集合进行增删改查。通过setCommand()设定查询指令,通过execute()执行查询指令以填充数据。
第十七章:反射与类加载器
17.1运用反射
JAVA真正需要某个类时才会加载对应的
.class
文档,不是程序启动时就加载所有类java.lang.reflect.Method
实例是方法的代表对象,可以使用invoke()
方法来动态调用指定的方法。
17.2了解类加载器
JVM将类加载过程分为三个步骤:装载,链接和初始化链接又分为三个步骤。
类的加载:是指将类的
.class
文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个这个类的Java.lang.Class
对象,用来封装类在方法区类的对象。
第十八章:自定义泛类、枚举与注释
18.1自定义泛型
- 共变性或有弹性的:B是A的子类,
Node<B>
可视为一种Node<A>
,称Node具有共变性或有弹性的。 - 一旦使用通配字符?与
extends
限制T
的类型,就只能通过T
的名称取得对象指定给Object,或将T
声明的名称指定为null
。除此之外,不能进行其他指定动作。
18.2自定义枚举
enum
定义了特殊的类,继承自java.lang.Enum
enum
是个抽象类,无法直接实例化。enum
操作Comparable
接口,ordinal的值是会使用enum
枚举的成员顺序。equals()
与hashCode()
基本上继承了Object的行为,但被标示为final。可以使用
values()
的方法,将内部维护Action枚举实例的数组复制后返回。
18.3关于注释
- Java提供了一些标准注释,前面经常看到的@Override就是标准注释。
教材学习中的问题和解决过程
- 问题1:建立Statement或PreparedStatement实例时,可以指定结果集类型与并行方式。
- 问题2:Connection接口的操作对象是数据库联机代表对象。
代码托管
上周考试错题总结
结对及互评
点评过的同学博客和代码
- 本周结对学习情况
- 20155319
- 结对学习内容:相互查看对方代码,并对学习中遇到的疑问进行交流,合作解决编程过程中遇到的问题。
- 上周博客互评情况
其他(感悟、思考等,可选)
Java学习是一个长期的过程,不能一蹴而就,只能循序渐进,一步一步来,此外需要老师的细心讲解
在学习的道路上没有平坦的捷径,唯有持之以恒的认真刻苦才能够学有所成。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 5/5 | 1/1 | 10/10 | |
第二周 | 90/95 | 1/2 | 15/25 | |
第三周 | 131/234 | 1/3 | 20/45 | |
第四周 | 289/523 | 1/4 | 21/66 | |
第五周 | 446/969 | 1/5 | 25/91 | |
第六周 | 720/1689 | 1/6 | 25/116 | |
第七周 | 431/2120 | 1/7 | 30/146 | |
第八周 | 381/2501 | 2/9 | 35/181 | |
第九周 | 909/3410 | 2/11 | 39/220 |
计划学习时间:40小时
实际学习时间:39小时
改进情况:
参考资料
评分标准
-
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
-
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
-
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
-
其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
-
扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评模板:
- 博客中值得学习的或问题:
- xxx
- 代码中值得学习的或问题:
- xxx
- 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx
点评过的同学博客和代码
- 本周结对学习情况
- 20155319
- 结对学习内容:相互查看对方代码,并对学习中遇到的疑问进行交流,合作解决编程过程中遇到的问题。
- 上周博客互评情况