20155302 2016-2017-2 《Java程序设计》第九周学习总结
20155302 2016-2017-2 《Java程序设计》第九周学习总结
教材学习内容总结

基本数据库操作相关的JDBC接口或类是位于java.sql包中。在程序中要取得数据库联机,我们必须有几个动作:
注册Driver操作对象;
取得Connection操作对象;
关闭Connection操作对象。
- 除了协议是以jdbc开始之外,JDBC URL格式各家都不相同,必须查询数据库产品的使用手册。下面以MySQL为例,“子协议”是桥接的驱动程序,数据库产品名称或联机机制,MySQL的子协议就是mysql。
 - 关闭Connection操作对象
 
取得Connection对象之后,可以使用isClosed方法测试与数据库的连接是否关闭。在操作完数据库之后,若确定不在需要连接,则必须使用close来关闭与数据库的连接,以释放连接时相关的必要资源,像是联机相关对象,授权资源等。
对于上面代码中的try…catch…finally部分,由于JDK7之后,JDBC的Connection,Statemet,ResultSet等接口都是java.lang.AutoClosable的子接口,所以我们可以尝试自动关闭语法来简化程序的攥写。
那么在底层,DriverManager使如何进行联机的呢?DriverManager会在循环中逐一取出注册的每个driver实例,使用指定的JDBC URL来调用Driver的connect方法,尝试取得Connection实例。对于底层的实现,有兴趣的伙伴可以看看DriverManager中相关的原始码。
PreparedStatement可以重复使用,它可以减少生成对象的负担;
因为可以将SQL描述预编译为数据库的执行指令,所以执行速度就快了许多;
使用这种写法,写出来的代码也会更加安全,有兴趣的同学可以了解SQL Injection,相信你会对安全方面有一些了解,在这里我就不细说了;
使用前面留言板代码中的写法会造成效能上的负担,因为串接或格式化字符串会产生新的String对象,如果串接字符串动作经常进行,那么将会是效能上的隐忧。1、类加载:指的是将类的class文件读入JVM,并为之创建一个Class对象。
2、类连接:指的是把类的二进制数据合并到JRE中,这又分为3个阶段:
a)、校验:检查载入Class文件数据的正确性。
b)、准备:给类的静态变量分配存储空间,并进行默认初始化。
c)、解析:将类的二进制数据中的符号引用替换成直接引用。
3、初始化:对类的静态变量、静态初始化块进行初始化。
- 1、全盘负责:当一个类加载器负责加载某个Class的时候,该Class所依赖的和引用的其他Class也将由该类加载器负责载入。
 
2、父类委托:先委托父加载器试图加载该类,只有在父加载器无法加载该类时才从自己的类路径中查找并装载该类。
3、缓存机制:缓存机制保证所有被家加载过的类都会被缓存,当程序中需要使用某个Class时,类加载器先从缓存中搜寻。缓存中搜寻不到,才会重新读取该类对应的二进制数据,并创建对应的Class对象。
- 操作数组:
 
Object arr = Array.newInstance(String.class,10);//创建一个简单的String数组。
Array.set(arr,5,”abc”);//给该数组下标为5的元素赋值
Object name = Array.get(arr,5);//获取该元素
- 访问属性:
 
Field f = clazz.getDeclaredField(属性名);//根据属性名获取Field对象
f.get(对象);//根据对象得到属性值。
- 调用方法:
 
Method m = clazz.getMethod(方法名,参数类型);//根据方法名和参数类型创建Method对象。
m.invokej(对象,属性值);//根据对象和方法参数调用方法。
若需调用private方法,先调用Method对象的setAccessible(true);
- 通过Class对象创建对象:
 
例如有一个Apple类。Class clazz = Class.forName(“com.stopTalking.crazy.Apple”);
该Apple类有一个默认构造器、一个String类型参数的构造器、一个String类型、int类型的构造器。
- 获得Apple对象有2种方式:
 
a)、用Apple类默认构造器:Object o1 = clazz.newInstance();
b)、用一个String类型参数的构造器:Object 02 = clazz.getConstructor(String.class).newInstance(“apple”);
c)、用一个String类型、int类型的构造器:Object 02 = clazz.getConstructor(String.class,int.class).newInstance(“apple”,”3”);
- 获得Class对象有3种方式:
 
a)、Class类的forName方法,传入全限定类名。需要抛出异常ClassNotFoundException
b)、调用该类的class属性。
c)、调用某对象的getClass()方法。
- ClassLoader对象。
 
可以通过2种方式获得当前ClassLoader对象,一种是通过当前线程:
ClassLoader loader = Thread.currentThread().getContextClassLoader();
若已经有了Class对象,那么可以通过Class对象的getClassLoader()方法:
ClassLoader loader2 = Xxx.class.getClassLoader();
- 泛型定义:
 
(1)仅定义在方法上的泛型语法
(2)用来限制泛型可用类型的extends与super关键字
(3)?类型通配字符的使用
- 1、如果B是A的子类,而Node< A>可视为一种Node< B>,则称为Node具有逆变性。Java泛型不具有逆变性,可以使用类型通配字符?与super来声明,使其达到类似的逆变性的效果。
 
2、若泛型类或接口不具共变性或逆变性,则称为不可变的或严谨的。
教材学习中的问题和解决过程
- 问题1:方式一:反射加载
Class cl = Class.forName("classname"); 
方式二
使用ClassLoader
URLClassLoader loader = new URLClassLoader(urls);
Class cl = loader.loadClass("classname);
这两种方式加载类 有什么区别吗? 或者说有什么联系?
- 问题1解决方案:一样的,没有区别,类装载器装载是指定装载器,forname是使用当前类装载器装载。
 
代码调试中的问题和解决过程
问题1:
class MyClass<E>
{
public <T> MyClass(T t)
{
System.out.println("t参数的值为:" + t);
}
}
public class GenericDiamondTest
{
public static void main(String[] args)
{
MyClass<String> mc1 = new MyClass<>(5);
MyClass<String> mc2 = new <Integer> MyClass<String>(5); 2
// MyClass<String> mc3 = new <Integer> MyClass<>(5); 3
}
}
2处MyClass到底是String还是Integer ,这么表示怎么理解?3处的代码为什么不对啊?
- 问题1解决方案:2处,MyClass当然是String,只不过它的构造函数参数Integer。
3处,错误是,当调用new时,不能用来显示指定类型信息,这个由编译器推导。 
代码托管


上周考试错题总结
- Linux中使用cp命令拷贝目录时要加上()选项。
 
A .-r
B .-directory
C .-all
D .-R
正确答案: A D
NIO2中,可以使用()中的方法取出文件系统根目录信息。
A .Path
B .DirectoryStream
C .FileStore
D .FileSystem
正确答案: D正则表达式”(‘|”)(.*?)\1”匹配 “'Hello',"World””的结果是()
A .不匹配
B .'Hello'
C ."World"
D .'Hello',"World"
正确答案: B Cabc? 匹配( )
A .ab
B .abc
C .abcc
D .abccc
正确答案: A B正则表达式 zo* 匹配()
A .z
B .zo
C .zoo
D .zooooooooooooooooooooooooooo
正确答案: A B C D正则表达式“r.t”匹配字符串“rat”的Java 代码表达式是()
A ."rat".matcher("r.t")
B ."r.t".matcher("rat")
C .Pattern.compile("rat").matcher("r.t")
D .Pattern.compile("r.t").matcher("rat")
正确答案: D
结对及互评
评分标准
正确使用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
 - ...
 
代码中值得学习的或问题:
- xxx
 - xxx
 - ...
 
基于评分标准,我给本博客打分:XX分。得分情况如下:xxx
点评过的同学博客和代码
其他(感悟、思考等,可选)
本周学习的三章知识较为简单,但需要和之前学习的内容基础结合起来,所以前面的基础很重要,在学习过程中我不断翻阅前面知识,结合起来学习会使效率提高。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 20/20 | 2/2 | 20/20 | |
| 第二周 | 140/160 | 2/4 | 18/38 | |
| 第三周 | 113/273 | 1/5 | 20/58 | |
| 第四周 | 335/608 | 1/6 | 20/78 | |
| 第五周 | 1159/1408 | 1/7 | 30/108 | |
| 第六周 | 452/1860 | 1/8 | 20/128 | |
| 第七周 | 343/2203 | 1/9 | 30/158 | |
| 第八周 | 448/2651 | 1/10 | 20/178 | |
| 第九周 | 516/3167 | 1/11 | 20/198 | 
20155302 2016-2017-2 《Java程序设计》第九周学习总结的更多相关文章
- 201521123027 <java程序设计>第九周学习总结
		
1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2.书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什 ...
 - 20145220java程序设计第九周学习总结
		
20145220java程序设计第九周学习总结 教材学习内容总结 JBDC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商对接口直接操作,开发人员无须接触底层数据可驱动程序的差异 ...
 - 201771010134杨其菊《面向对象程序设计java》第九周学习总结
		
第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...
 - 201521044152<java程序设计>第一周学习总结
		
本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...
 - 20145304 刘钦令 Java程序设计第二周学习总结
		
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
 - 20145304 刘钦令 Java程序设计第一周学习总结
		
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
 - 201621123007 Java程序设计第一周 学习总结
		
第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...
 - 马凯军201771010116《面向对象与程序设计Java》第九周学习总结
		
一.理论知识部分 异常.日志.断言和调试 1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行. 2.Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置. 3 ...
 - 201521123063 JAVA程序设计 第二周学习总结
		
1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...
 - 《Java》第九周学习总结
		
下载mysql 选择mysql的管理软件 idea可以直接连接 然后用库运行程序,但是没有截图,,因为想在navicat上试试,可惜速度太慢了 打开idea又很慢,所以明天再更新
 
随机推荐
- Centos6.5下VNC Server配置
			
整个流程如下~ 1.首先,检查下本机是否安装了vnc: 提示没有安装,那么开始装吧: 2.先关闭防火墙 查看防火墙状态: 关闭防火墙: 注:要切到root下 [carsonzhu@localhost ...
 - python使用原始套接字 解析原始ip头数据
			
使用底层套接字解码底层流量,是这次做的重点工作. 首先来捕获第一个包 # coding:utf-8import socket # 监听的主机IP host = "192.168.1.100& ...
 - Test Scenarios for sending emails
			
(test cases for composing or validating emails are not included)(make sure to use dummy email addres ...
 - rabbitmq使用报错总结
			
最近公司重构服务器架构,需要用到rabbitmq,在公司搞了一个下午还是连接不上,后来细看了英文说明,测试连接成功,得出如下报错几点. 我用的安装包:otp_win64_21.3.exe(erlang ...
 - spring cloud实战与思考(一) spring config全局配置方案设计
			
“spring cloud”的配置中心工具“spring cloud config”提供了分布式系统配置文件集中管理解决方案.该工具功能强大,实现也很简单.网上可以搜索到很多开发教程和用例.本文并不是 ...
 - Ajax+JSP登陆后带参数跳转
			
点击提交按钮后使用Ajax将用户名和密码传至后台校验,然后判断返回结果进行跳转或提示错误. <%@ taglib prefix="form" uri="http:/ ...
 - poj1062昂贵的聘礼(枚举+最短路)
			
题意:就是一个点能够被另一个点取代,通过花费一定的金币,注意就是你和某个人交易了,如果这个人的等级和酋长的等级差的绝对值超过m,酋长就不会和你交易了: 思路:这里要注意到,我们最终的目的是找到一条最短 ...
 - hdu 4417 Super Mario (主席树)
			
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 题意: 给你段长为n的序列,有q个询问,每次询问区间[l.r]内有多少个数小于等于k 思路: 之前用 ...
 - Leetcode 191.位1的个数 By Python
			
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例 : 输入: 11 输出: 3 解释: 整数 11 的二进制表示为 00000000000 ...
 - 洛谷 P4408 逃学的小孩 解题报告
			
P4408 [NOI2003]逃学的小孩 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:"喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?&q ...