20155322 2016-2017-2 《Java程序设计》第9周学习总结
20155322 2016-2017-2 《Java程序设计》第9周学习总结
教材学习内容总结
第9周学习的主要内容是课本的第十六、第十七、第十八章,老师的教学指导上主要要求学习以下知识点:
- 了解JDBC架构
- 掌握JDBC架构
- 掌握反射与ClassLoader
- 了解自定义泛型和自定义枚举
- 会使用标准注解
下面是我的一些总结:
JDBC(Java DataBase Connectivity)
JDBC(Java DataBase Connectivity)即java数据库连接,是一种用于执行SQL语句的Java API是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无需接触底层数据库驱动程序的差异性。
JDBC驱动的四种类型(按操作方式分类的):
- JDBC-ODBC Bridge Driver
- Native API Driver 提供原生链接库
- JDBC-Net Driver 将方法调用转换为特定的网络协议调用
- Native Protocal Driver
建立数据库的步骤:
- 注册Driver的操作对象
- 取得Connection操作对象
- 关闭connection操作对象
数据库操作相关的JDBC接口或类都位于java.sql包中。要连接数据库,可以向DriverManager取得Connection对象。Connection是数据库连接的代表对象,一个Connection对象就代表一个数据库连接。SQLException是在处理JDBC时经常遇到的一个异常对象,为数据库操作过程发生错误时的代表对象。
Connection是数据库连接的代表对象,接下来要执行SQL的话,必须取得java.sql.Statement对象,它是SQL语句的代表对象,可以使用Connection的createStatement()来创建Statement对象。
在使用Connection、Statement或ResultSet时,要将之关闭以释放相关资源。
Statement的executeQuery()方法则是用于SELECT等查询数据库的SQL,executeUpdate()会返回int结果,表示数据变动的笔数,executeQuery()会返回java.sql.ResultSet对象,代表查询的结果,查询的结果会是一笔一笔的数据。可以使用ResultSet的next()来移动至下一笔数据,它会返回 true 或 false表示是否有下一笔数据,接着可以使用getXXX()来取得数据。
如果有些操作只是SQL语句中某些参数会有所不同,其余的SQL子句皆相同,则可以使用java.sql.PreparedStatement。可以使用Connection的preparedStatement()方法创建好一个预编译(precompile)的SQL命令,其中参数会变动的部分,先指定“?”这个占位字符。等到需要真正指定参数执行时,再使用相对应的setInt()、setString()等方法,指定“?”处真正应该有的参数。
反射与ClassLoader
ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象。
通过Object的getClass()方法,或者.class常量取得每个对象对应的class对象,如果是基本类型,也可以使用对应的打包类加上.TYPE取得Class对象。例如,Integer.TYPE可取得代表int的Class对象。使用class.forName()的方法来实现动态加载类。
JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤。
自定义泛型
在定义泛型时,使用extends限定指定T实际类型时,必须是某类的子类。在定义泛型时,使用extends限定指定T实际类型时,必须是某类的子类。
共变性(Covariance):,B是A的子类,Node B可视为一种Node A ,称Node具有共变性。
通配字符“?”与extends限制T的类型,只能通过T声明的名称取得对象指定给Object,或将T声明的名称指定为null。
教材学习中的问题和解决过程
首先主要是和自己的结对对象讨论一些教材第十七章有关类加载的问题,主要是不太理解过程。解决问题的方式主要是通过图像法理解:

参考- 反射中Class.forName()和ClassLoader.loadClass()的区别然后是复习第六第七章的知识点。
代码调试中的问题和解决过程
1.问题:在编译代码中遇到的关于类的编译错误

解决方案:使用import声明一下指定的DATE类:

代码托管

上周考试错题总结
- Linux中使用cp命令拷贝目录时要加上()选项。
A -r
B -directory
C -all
D -R
我的答案:A
正确答案:AD
分析:忘记大小写都可以。
- Linux中使用cp命令拷贝目录时要加上()选项。
- Linux中获取当前路径的绝对路径的命令是()?
A cd
B passwd
C tree
D pwd
我的答案:B
正确答案:D
分析:记忆不牢
- Linux中获取当前路径的绝对路径的命令是()?
3.正则表达式
”(‘|”)(.*?)\1”匹配“'Hello',"World””的结果是()
A 不匹配
B 'Hello'
C "World"
D 'Hello',"World"
我的答案:D
正确答案:BC
分析:对于正则表达式的理解不深,反向引用 \1 代表第一个()中的匹配内容4.abc? 匹配( )
A ab
B abc
C abcc
D abccc
我的答案:BCD
正确答案:AB
分析:?是指重复0或1次- 正则表达式
zo*`` 匹配() A z B zo C zoo D zooooooooooooooooooooooooooo 我的答案:AC 正确答案:ABCD 分析:*`不仅可以是重复多次,还可以是零次。
- 正则表达式
6.正则表达式
r.t能够匹配字符串()
A rat
B rt
C rut
D root
我的答案:ABC
正确答案:AC
分析:r.t表示 r开着,中间为任意字符接着为t的三字母字符串7.Java 日志 API 中,输出的日志会经过哪两个类别的过滤?
A Logger
B Handler
C Formatter
D Stream
我的答案:AB
正确答案:BC
分析:粗心啦!- Date 的 API 有许多方法都不再建议使用,应改用哪个类别的相关方法取代?空白部份指定哪些型态可以通过编译?
A DateFormat
B TimeStamp
C Time
D Calendar
我的答案:A
正确答案:D
- Date 的 API 有许多方法都不再建议使用,应改用哪个类别的相关方法取代?空白部份指定哪些型态可以通过编译?
9.Suppose we have an array of String objects identified by the variable names. Which of the following for loops will not correctly process each element in the array.(假如我们有一个名为names的String对象数组,下面哪个for循环不能遍历数组中的每一个元素?)
A for(int i = 0; i < names.length; i++)
B for(String name : names)
C for(int i = 0; i < names.length(); i++)
D none of these will correctly process each element(以上都不能遍历)
E all of these will correctly process each element(以上都能遍历)
我的答案:B
正确答案:C
分析:由于语法错误,选择C不会正确处理每个元素。长度变量不是一个方法,因此在它后面没有括号。选择B是使用foreach循环来处理数组的例子,选择A是一个正确的循环。
10.Which of the following array declarations are invalid? (下面哪个数组声明是不合法的)
A int[] grades = new int[5];
B int grades[] = new int[5];
C int[] grades = { 91, 83, 42, 100, 77 };
D all of the above are valid(以上三个都合法)
E none of the above are valid(以上三个都不合法)
我的答案:B
正确答案:D
分析:此代码将抛出一个对象的大小错误,因为这个数组中最后一个指数是24。这会导致运行时错误。11.In Java, array indexes always begin at ________________ .(Java中,数组索引从______开始)
A -1
B 0
C 1
D 2
E you can declare an array to have any indexes you choose(可以任意指定)
我的答案:E
正确答案:B
分析:In Java, the array indexes are from 0 to one less than the length of the array.结对及互评
评分标准
- 正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
- 模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
- 本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
- 其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
- 扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评过的同学博客和代码
- 本周结对学习情况
- 20155302杨效宸
- 结对照片:无
- 结对学习内容:十七章类加载
- 上周博客互评情况
- 20155302杨效宸
- 20155202
- 20155220
- 20155313
- 20155239
- 20155211
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 15篇 | 400小时 | |
| 第一周 | 4/4 | 1/1 | 10/10 | |
| 第二周 | 20/24 | 1/2 | 9/19 | |
| 第三周 | 80/104 | 1/3 | 10/29 | |
| 第四周 | 343/ 447 | 1/4 | 15/44 | |
| 第五周 | 748/1195 | 1/5 | 20/64 | 能够自己敲出一些简单的程序 |
| 第六周 | 207/1402 | 1/6 | 10/74 | 继续敲出一些简单的程序 |
| 第七周 | 241/1643 | 2/8 | 11/85 | |
| 第八周 | 241/1643 | 1/9 | 11/96 | |
| 第九周 | 630/2273 | 2/11 | 20/116 | 代码量提高,学会Junit |
计划学习时间:20小时
实际学习时间:20小时
改进情况:代码量提高,学习时间增多
参考资料
- 《Java学习笔记(第8版)》学习指导
- 反射中Class.forName()和ClassLoader.loadClass()的区别
- IDEA 安装 junit 测试插件,生成测试方法
- StringBuffer的用法
- IntelliJ IDEA 12下安装 Junit插件
20155322 2016-2017-2 《Java程序设计》第9周学习总结的更多相关文章
- 20155322 2016-2017-2 《Java程序设计》 第一周学习总结
20155322 2016-2017-2 <Java程序设计> 第一周学习总结 教材学习内容总结 本周学习内容的主要是: 一.浏览教材,根据自己的理解每章提出一个问题. 在浏览教材后,我提 ...
- 20155220 2016-2017-2 《Java程序设计》第九周学习总结
20155220 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 JDBC(Java DataBase Connectivity)即java数据库连接,是一种用 ...
- 20155211 2016-2017-2 《Java程序设计》第九周学习总结
20155211 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 一.JDBC入门 (一)JDBC简介 厂商在操作JDBC驱动程序时,依 ...
- 20155313 2016-2017-2 《Java程序设计》第九周学习总结
20155313 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 JDBC(Java DataBase Connectivity)即java数据库连 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
随机推荐
- apt安装mysql
使用 APT 安装 MySQL 参考官方文档 apt-get install mysql-server 这将安装MySQL服务器的包,以及客户端和数据库公共文件的包. 在安装过程中,系统会要求您为ro ...
- eclipse 自动生成get/set方法
Shift+Alt+S 会弹出一个对话框 选择Generate Getters and Setters
- POJ3304 Segments
嘟嘟嘟 题面就不说了,网上都有. 刚开始理解成了只要有不孤立的线段就算合法,结果就不会了--然而题中要求是所有线段至少有一个交点. 其实想一想就知道,问题转化为了是否存在一条直线和所有线段都有交点. ...
- IE8崩溃在CElement::GetUpdatedLayoutWithContext
发了一个我们页游助手的版本时,测试报告在某些机器上点开某网站时崩溃 "0x637e5067指令引用的0x00000008内存,该内存不能为read",查看dump文件,堆栈如下: ...
- 折腾一下WebSocket的ArrayBuffer传输方式
前言 之前写WebSocket都是基于文本传输的,后来准备升级项目,于是打算尝试一下arraybuffer传输方式,由于是第一次使用javascript处理字符串转arraybuffer,不过真的 ...
- leetcode 121. Best Time to Buy and Sell Stock 、122.Best Time to Buy and Sell Stock II 、309. Best Time to Buy and Sell Stock with Cooldown
121. Best Time to Buy and Sell Stock 题目的要求是只买卖一次,买的价格越低,卖的价格越高,肯定收益就越大 遍历整个数组,维护一个当前位置之前最低的买入价格,然后每次 ...
- js 键盘点击事件
回车键(Enter)的触发事件 js 代码如下: document.onkeydown = function (e) { if (!e) e = window.event; if ((e.keyCo ...
- `ECS弹性计算服务
云服务器(Elastic Compute Service 简称ECS)是一种简单高效,处理能力可弹性伸缩的计算服务.能快速构建更稳定.安全的应用,提升运维效率,降低IT成本. 云服务器ecs作用如下: ...
- Python cx_oracle自动化操作oracle数据库增删改查封装,优化返回查询数据
# coding=utf-8 import cx_Oracle import os import json os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_C ...
- PAT——1066. 图像过滤
图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来.现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换. 输入格式: 输入在第一行给出一幅图像的分辨 ...