20155216 2016-2017-2 《Java程序设计》第九周学习总结
20155216 2016-2017-2 《Java程序设计》第九周学习总结
教材学习内容总结
JDBC架构
JDBC API的使用
JDBC连接数据库
1.导入JDBC包: 添加import语句到Java程序导入所需的类在Java代码中。
2.注册JDBC驱动程序:JVM加载所需的驱动程序实现到内存中,实现JDBC请求。
3.数据库URL制定:这是创建格式正确的地址指向到要连接的数据库。
4.创建连接对象:最后,代码调用DriverManager对象的getConnection()方法来建立实际的数据库连接。
创建JDBC应用程序:
1.导入数据包 . 需要包括含有需要进行数据库编程的JDBC类的包。大多数情况下,使用 import java.sql.*
。
2.注册JDBC驱动程序. 需要初始化驱动程序,可以与数据库打开一个通信通道。
3.打开连接. 需要使用DriverManager.getConnection() 方法创建一个Connection对象,它代表与数据库的物理连接。
4.执行查询 . 需要使用类型声明的对象建立并提交一个SQL语句到数据库。
5.从结果集中提取数据 . 要求使用适当的关于ResultSet.getXXX()
方法来检索结果集的数据。
6.清理环境. 需要明确地关闭所有的数据库资源相对依靠JVM的垃圾收集。
java反射机制
ClassLoader
ClassLoader是类装载器,用于将class装载进内存。
URL getResource(String name)用于获取资源URL,寻找资源不依赖于相对路径,不依赖于绝对路径,只要资源处于classpath里即可。方法执行时将找遍当前所设定的classpath目录,eclipse里src目录默认地被编译到bin目录,bin目录即项目本身的classpath,用于存放编译好的类文件,所以约定俗成将资源放入工程src目录下,这样做的好处在于程序部署到何处都可以访问到资源而不用修改代码。
Class类
对于类装载器而言每个class文件就是一个Class对象;Class类事对于编译好的某一类对象的描述,描述了编译好的class文件的信息,是对类信息的描述,是类的metainfo(元信息)或者metadata(元数据),即描述数据的数据
ClassLoader getClassLoader(),获得该类的类装载器
static Class forName(String); 可根据类名加载相应的类,返回一个Class对象
Object newInstance():实例化对象
反射
反射机制即指java可以在运行期间通过Class的Class Class.forName(String)方法动态地加载一个类
继而可以通过获得的该类对应的的Class对象的Object newInstance()方法实例化出该类的对象
然后可以通过Method[] getMethods() 和Field[] getFields()等方法了解类的内部结构
最后就可以根据方法的内部结构决定该方法应该怎么样去调用,从而动态地去调用类的方法
自定义泛型
所谓“泛型”,就是“宽泛的数据类型”,任意的数据类型。
自定义枚举
创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式 Class Enum<E extends Enum>,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。
可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum
(java是单一继承)。
int compareTo(E o)
比较此枚举与指定对象的顺序。
Class<E> getDeclaringClass()
返回与此枚举常量的枚举类型相对应的 Class 对象。
String name()
返回此枚举常量的名称,在其枚举声明中对其进行声明。
int ordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String toString()
返回枚举常量的名称,它包含在声明中。
tatic <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
返回带指定名称的指定枚举类型的枚举常量。
标准注释的使用
1、单行(single-line)注释:“//……”
2、块(block)注释:“/……/”
3、文档注释:“/**……*/”
4、javadoc 注释标签语法
@author 对类的说明 标明开发该类模块的作者
@version 对类的说明 标明该类模块的版本
@see 对类、属性、方法的说明 参考转向,也就是相关主题
@param 对方法的说明 对方法中某参数的说明
@return 对方法的说明 对方法返回值的说明
@exception 对方法的说明 对方法可能抛出的异常进行说明
教材学习中的问题和解决过程
问题1:
对于反射的理解不够充分。问题1解决方案:
java.lang.Class:是反射的源头。创建一个类,通过编译,生成.class文件。之后使用java.exe加载(JVM的类加载器)加载此.class文件。加载到内存以后,就是一个运行时类,存在缓冲区。那么这个运行时类本身就是一个Class的实例。
- 一个运行时类只加载一次
- 有了Class的实例以后,才可以进行如下操作
(1)创建对应的运行时类的对象
(2)获取对应的运行时类的完整结构(属性,方法,构造器…)
(3)获取对应的运行时类的指定结构(属性,方法,构造器)
(4)反射的应用:动态代理
- 问题2:对于泛型中的参数理解较为模糊。
- 问题2解决方案:
传值参数(我们通常所说的参数)由小括号包围,如 (int x, double y),类型参数(泛型参数)由尖括号包围,多个参数由逗号分隔,如 或 <T, E>。
类型参数需要在类名后面给出。一旦给出了类型参数,就可以在类中使用了。类型参数必须是一个合法的标识符,习惯上使用单个大写字母,通常情况下,K 表示键,V 表示值,E 表示异常或错误,T 表示一般意义上的数据类型。
泛型类在实例化时必须指出具体的类型,也就是向类型参数传值,格式为:
className variable<dataType1, dataType2> = new className<dataType1, dataType2>();
也可以省略等号右边的数据类型,但是会产生警告,即:
className variable<dataType1, dataType2> = new className();
代码调试中的问题和解决过程
问题1:
问题1解决方案:
重新定义正确的程序包问题2:
上周课上代码测试,删除数组中一个元素后,如何在末尾添加0.问题2解决方案:
直接将0赋值给最后一个元素。
代码托管
上周考试错题总结
Linux中使用rm删除文件时,如果想忽略提示,直接删除文件,可以使用-f选项强制删除。
Linux中使用cp命令拷贝目录时要加上-r ,-R选项。
NIO2中,可以使用FileSystem中的方法取出文件系统根目录信息
-正则表达式 zo* 匹配
z
zo
zoo
zooooooooooooooooooooooooooo
-正则表达式 r[aou]t 能够匹配字符串
rat
rut
正则表达式“r.t”匹配字符串“rat”的Java 代码表达式是
Pattern.compile("r.t").matcher("rat")
-Which of the following method declarations correctly defines a method with a variable length parameter list?(下面哪个方法声明正确定义了一个变长参数的方法)
public int average(int ... list)
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循环不能遍历数组中的每一个元素?)
for(int i = 0; i < names.length(); i++)
Which of the following array declarations are invalid? (下面哪个数组声明是不合法的)
int[] grades = new int[5];
int grades[] = new int[5];
int[] grades = { 91, 83, 42, 100, 77 };
*以上三个都合法
Which of the statements is true about the following code snippet?(对于下面的代码段,说法正确的是?)
int[] array = new int[25];
array[25] = 2;
This code will result in a run-time error. (代码会产生运行时错误)
In Java, array indexes always begin at 0____ .(Java中,数组索引从______开始)
结对及互评
评分标准
正确使用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
点评过的同学博客和代码
其他(感悟、思考等,可选)
xxx
xxx
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 6/6 | 1/4 | 20/20 | |
第二周 | 334/340 | 1/5 | 18/38 | |
第三周 | 570/900 | 1/6 | 22/60 | |
第四周 | 544/1358 | 1/7 | 30/90 | |
第五周 | 731/2089 | 1/8 | 30/90 | 了解了java中的架构,排序,以及异常处理 |
第七周 | 541/3558 | 2/10 | 30/90 | 了解了JDK8新的时间日期API |
第八周 | 430/3877 | 1/11 | 30/90 | 学习了NIO、NIO2与通用API |
第九周 | 653/4530 | 2/13 | 30/90 | 了解了自定义泛型和枚举 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:25小时
实际学习时间:30小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
20155216 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又很慢,所以明天再更新
随机推荐
- 内置模块之os
os模块主要对操作系统进行调用的接口 一.os模块常用方法和属性 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("d:") 改变 ...
- 深入浅出WinDbg——利用快速定位错误
场景描述: Sharepoint代码的某方法LoadLines()中使用了SPSecurity.RunWithElevatedPrivileges(delegate() 此方法两次调用了Common. ...
- pyenv - python版本管理
1. 安装pyenv brew install pyenv 2. 安装python其它版本(如:python 3.6.7) pyenv install --list #查看可以安装的python版本 ...
- Linux命令--网络管理
write命令 Linux write命令用于传讯息给其他使用者. 使用权限:所有使用者. 语法 write user [ttyname] 参数说明: user : 预备传讯息的使用者帐号 ttyna ...
- HTTP协议图--HTTP 工作过程
HTTP请求响应模型 HTTP通信机制是在一次完整的 HTTP 通信过程中,客户端与服务器之间将完成下列7个步骤: 建立 TCP 连接 在HTTP工作开始之前,客户端首先要 ...
- win环境下使用sqlmap写shell + MYSQL提权(默认就是system权限)
今天在来一个mysql提权 (也可以说是默认system权限提的) 在被黑站点找到一个站 先教拿shell是有注入漏洞的 有可能是root权限的注入点 可以确定是有注入漏洞的 也得到了 物理路径 ...
- flask开启debug模式的两种方法、加载配置文件的两种方法、URL传参的四种方法
from flask import Flask app = Flask(__name__) # app.config.update(DEBUG=True)#开启debug模式 #加载配置文件方法一 # ...
- Kali-linux使用Easy-Creds工具攻击无线网络
Easy-Creds是一个菜单式的破解工具.该工具允许用户打开一个无线网卡,并能实现一个无线接入点攻击平台.Easy-Creds可以创建一个欺骗访问点,并作为一个中间人攻击类型运行,进而分析用户的数据 ...
- Spring(十三)之SQL存储过程
SimpleJdbcCall 类可以被用于调用一个包含 IN 和 OUT 参数的存储过程.你可以在处理任何一个 RDBMS 时使用这个方法,就像 Apache Derby, DB2, MySQL, M ...
- 使用Azcopy在Azure上进行HBase的冷热备份还原
场景 HBase表TaskLog中有20.55G数据(20553078551Byte),目前存放在热存储中,现在要移至冷热储,并进行还原. HBase目录:hbase/data/default 冷目录 ...