20165226 2017-2018-4 《Java程序设计》第7周学习总结

20165226 2017-2018-4 《Java程序设计》第7周学习总结

教材学习内容总结

第十一章 JDBC与MySQL数据库

  • 下载MySQL最新版本。
  • 链接数据库
    • 下载JDBC-MySQL数据库驱动
    • 加载JDBC-MySQL数据库驱动
    • 链接数据库(Connection getConnection(java.lang.String,java.lang.String,java.lang.String)Connection getConnection(java.lang.String)
  • 查询
    • 顺序查询,使用next()移到下一个数据行
    • 条件与排序查询
      • where子语句
      • 排序,用order by子语句对记录进行排序
      select * from mess order by height
      select * from mess where name like '%林%' order by name
  • statement对象调用方法
    • 更新update 表 set 字段 = 新值 where<条件子句>
    • 添加insert into 表(字段列表)value (对应的具体的记录)
    • 删除delete from 表名 where <条件子句>
  • 链接SQL Server数据库

教材学习中的问题和解决过程

  • 问题一:在学习P328中11.5 链接数据库时有些疑惑为何用JDB链接数据库?
  • 问题一解决方案:就像是接口同样,想要用这个接口,就要实现这个接口里的方法,jdbc也同样,它实现了某些特定功能的接口,也就是那些个能链接数据库的方法,因此,你必须用它。但也能够不用JDBC,也能够用hibernate,ibatis。html

  • 问题二:在查询上个问题的时候看到了hibernate,疑惑hibernate和jdbc链接数据库的区别?
  • 问题二解决方案:
一、Hibernate先检索缓存中的映射对象( 即hibernate操做的是对象),而jdbc则是直接操做数据库。
二、Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate能够用在任何JDBC可使用的场合。
三、Hibernate是一个和JDBC密切关联的框架,因此Hibernate的兼容性和JDBC驱动,和数据库都有必定的关系,可是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。
Hibernate毕竟是基于JDBC的技术,高度的封装提升了开发效率,从运行效率上来讲若是正确使用JDBC那必定是比HB高的。

代码调试中的问题和解决过称

  • 问题一:在编译Example11_1的时候,出现了点小bug

  • 问题一解决方案:在Ubuntu中输入sudo apt-get install mysql-server mysql-client下载安装了MySQLjava

  • 问题二:上传代码时出现了错误mysql

  • 问题二解决方案:比对了一下,结果是origin拼写成了origion
  • 问题三:在下载安装MySQL客户端管理工具时出现了一系列小bug,如没法初始化

  • 问题三解决方案:开始在网上搜索相关错误及解决方案,而后进行源文件的编写保存,而后发现出现了另外一个bug(见第二幅图),而后再回到书上,揣摩了一下,发现其实这个步骤时解压,我其实时已经解压了,所以我跳过这个环节,直接mysqld install,因而成功安装。

  • 问题四:进入MySQL安装目录后,修改密码时出现错误

  • 问题四解决方案:原来初始化时原用户没有设置密码,故直接enter,而后即可修改密码

代码托管

上周考试错题总结

第五周错题总结

  • 知识点: 内部类的类体中不能够声明类变量和类方法,P162页。
下列关于内部类的说法,正确的是
A       其余类不能够用某个类的内部类声明对象。
B       内部类字节码文件的名字格式是“外嵌类名$内部类名”。
C       内部类的类体能够声明类变量和类方法。
D       内部类在成员位置上,所以能够被private修饰。
正确答案: A B D  个人答案: A B
  • 知识点:Java使用throw抛出一个异常,使用throws声明方法可能抛出异常。
下列关于异常的说法,错误的是
A       Java使用throws抛出一个异常,使用throw声明方法可能抛出异常。
B       执行System.out.println(3/0);语句会报ArithmeticException异常。
C       Java中的错误是以对象的方式呈现为java.lang.Throwable的各类子类实例。
D       方法parseInt()在执行过程当中可能抛出DataFormatException异常。
正确答案: A D  个人答案: D
  • 知识点:对于严重的错误,经过Error类来描述,而对于非严重的问题,则是经过Exception类来进行描述的。
若是超出JVM运行能力以外,如“byte[] arr=new byte[1024*1024*600];”会抛出java.lang.OutOfMemoryError异常。
A       true
B       false
正确答案: B  个人答案: A
  • 知识点:若是程序撰写的流程中先return了,也有finally区块,finally区块会先执行完后,再将值返回。Finally代码块只有一种状况不会被执行,就是在以前执行了System.exit(0)。
下列程序的运行结果为
public class FinallyDemo {
public static void main(String[] args) {
   System.out.print(test(true));
}
static int test(boolean flag) {
   try {
       if (flag) {
           return 1;
       }
   } finally {
       System.out.print("finally…");
   }
   return 0;
}
}
A       1finally…
B       finally…1
C       1finally…0
D       1
正确答案: B  个人答案: C
  • 知识点:public int hashCode():计算此抽象路径名的哈希码。
如下关于File类经常使用方法的叙述,错误的是
A       public long length():获取文件长度
B       public int hashCode():计算此文件的哈希码
C       public String toString():返回此抽象路径名的路径名字符串
D       public Boolean isFile():判断一个文件是不是普通文件,而不是目录
正确答案: B  个人答案: D
  • 知识点:InputStream是父类。
InputStream类继承自FileInputStream,能够以字节为单位读取文件。
A       true
B       false
正确答案: B  个人答案: A
  • 知识点:D项:会抛出NullPointerException异常。
下列关于public int read(byte[] b, int off, int len)方法的叙述,正确的是
A       此方法覆盖了InputStream类中的read方法。
B       此方法从该输入流中将最多len个字节的数据读入一个byte数组中。
C       此方法返回读入缓冲区的字节总数,若是由于已经到达文件末尾而没有更多的数据,则返回-1。
D       若是b为null,则会抛出IndexOutOfBoundsException异常。
正确答案: A B C  个人答案: B C
  • 知识点:关于java.io类的子类的相关概念
下列哪个不是java.io类的子类?
A       BufferedReader
B       BufferedWriter
C       FileReader
D       FileWriter
E       PrintReader
F       PrintWriter
正确答案: E  个人答案: C

第六周错题总结

  • 知识点:TreeSet 泛型类建立树集。
下列关于泛型类的子类的说法,正确的个数为
①LinkedList<E>泛型类建立一个链表结构的对象。
②Stack<E>泛型类建立一个堆栈对象。
③HashMap<E>泛型类建立散列映射。
④DelayQueue<E>泛型类建立一个无界阻塞队列。
⑤TreeSet<E>泛型类建立树映射。
⑥Vector<E>建立可增加的对象数组。
漏判了一个
  • 知识点:B中若是此映射不包含该键的映射关系,则返回null。C中若是该映射之前包含了一个该键的映射关系,则旧值被替换。
下列关于HashMap<E>泛型类经常使用方法的介绍,正确的是
A       public boolean isEmpty()若是此映射不包含键-值映射关系,则返回 true。
B       public V get(Object key)返回指定键所映射的值;若是此映射不包含该键的映射关系,则抛出异常。
C       public V put(K key, V value) 在此映射中关联指定值与指定键。若是该映射之前包含了一个该键的映射关系,则以先定义的值为准。
D       public Object clone()返回此 HashMap 实例的浅表副本:并不复制键和值自己。
正确答案: A D  个人答案: A B D
  • 知识点:A项:若是指定对象没法与该 set 中的当前元素进行比较,则抛出ClassCastException异常。
下列关于TreeSet<E>泛型类经常使用方法的介绍,正确的是
A       public boolean contains(Object o) 若是此 set 包含指定的元素,则返回 true。若是指定对象没法与该 set 中的当前元素进行比较,或不包含,则返回false。
B       public boolean add(E e)将指定的元素添加到此 set。若是此 set 已经包含这样的元素,则该调用不改变此 set 并返回 false。
C       public boolean addAll(Collection<? extends E> c)将指定 collection 中的全部元素添加到此 set 中。若是此 set 因为调用而发生更改,则返回 true。
D       public E lower(E e) 返回此 set 中严格小于给定元素的最大元素;若是不存在这样的元素,则返回 null。
正确答案: B C D  个人答案: A D
  • 知识点:长度等于字符串中 Unicode 代码单元的数量。
String类中的length()方法用来获取一个String对象的字符序列的长度,单位为字节。
A       true
B       false
正确答案: B  个人答案: A
  • 知识点:C项:\b\w{6}\b 匹配恰好6个字符的单词。F项: IP地址中每一个数字都不能大于255,该表达式忽略了这个约束条件。正确的是((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。
下列关于正则表达式的说法,正确的是
A       \ba\w*\b匹配以字母a开头的单词
B       \d+匹配1个或更多连续的数字。
C       \b\w{6}\b 匹配6个及以上字符的单词。
D       [0-9]表明的含意与\d就是彻底一致的:一位数字
E       \S+匹配不包含空白符的字符串。
F       (\d{1,3}\.){3}\d{1,3}用来匹配 IP地址。
正确答案: A B D E  个人答案: A B E F
  • 知识点:③:要查找\自己,须要用\。⑥:注意字符转义,应为""Hello"".matches("(["'])[^\"']*\1")。
下列经过测试的断言语句有几个?
①assertEquals(true, "123".matches("\\d+"));
②assertEquals(true, "3.5".matches("\\d\\.\\d"));
③assertEquals(true, "C:\\Windows".matches("C:\\Windows"));
④assertEquals(true, "hello hello".matches("\\b(?<Word>\\w+)\\b\\s+\\k<Word>\\b"));
⑤assertEquals("r*pl*c*m*nt","replacement".replaceAll("[aeiou]","*"));
⑥assertEquals(true, "\"Hello\"".matches("([\"'])[^\"']*\1"));
⑦assertEquals("##","xfooxxxxxxfoo".replaceAll(".*?foo","#"));
⑧assertEquals("Let's meet at [TIME].","Let's meet at 12:38.".replaceAll("((1|0?)[0-9]|2[0-3]):([0-5][0-9])","[TIME]"));
A       7个
B       6个
C       4个
D       3个
正确答案: B  个人答案: C
  • 知识点:Java throws an exception if invalid date values are passed. There is no 40th day in April—or any other month for that matter.
What is the output of the following code?(下面代码的运行结果是?)
LocalDate date = LocalDate.of(2018, Month.APRIL, 40);
System.out.println(date.getYear() + " " + date.getMonth()+ " "+ date.getDayOfMonth());
A       2018 APRIL 4
B       2018 APRIL 30
C       2018 MAY 10
D       Another date
E       The code does not compile.
F       A runtime exception is thrown.
正确答案: F  个人答案: D

结对及互评

  • 博客中值得学习的或问题:
    • 要素全面
    • 很认真细致
    • 排版简介美观
  • 代码中值得学习的或问题:
    • 代码中文件分类简洁
    • 很认真

点评过的同窗博客和代码

  • 本周结对学习状况
    • 20165230
      • 结对学习内容
      • 商讨结对编程的相关应用

其余

学习了MySQL客户端管理工具,操做了如何下载安装MySQL等进行数据库的链接。git

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 48/48 1/1 20/20
第二周 390/438 2/3 18/38
第三周 866/1304 1/4 18/56
第四周 1105/2409 1/5 30/86
第五周 1229/3196 1/6 20/106
第六周 1147 /4343 2/8 25/131
第七周 1222 / 3668 1/9 20/151

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进本身的计划能力。这个工做学习中很重要,也颇有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。正则表达式

参考:软件工程软件的估计为何这么难软件工程 估计方法sql

  • 计划学习时间:30小时数据库

  • 实际学习时间:18小时编程

  • 改进状况:数组

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)缓存

参考资料

相关文章
相关标签/搜索