20162301 2016-2017-2 《程序设计与数据结构》第9周学习总结
教材学习内容总结
第21章 数据库
数据库介绍:①数据库是为其他程序提供数据的应用软件。可以保存大量数据的仓库,为能快速的存储、查询数据之目的并一多种方式来组织。②数据管理系统对数据一般有4类基本操作:创建、读取、更新及删除。③关系数据库通过唯一的标识符在不同表的记录间建立了关系。④在Java中能与 数据库进行交互之间,必须先建立到数据库的连接。JDBC API用来建立到数据库的连接。
建立与数据库连接:①需要用驱动程序(driver)来建立与数据库之间的通信,并将数据库请求传给数据库应用程序。②通过CLASSPATH环境变量指明它的位置(在编译和运行期间)
创建并修改数据库表:①创建数据库表的SQL语句是:CREATE TABLE
查询数据库:SHOW COLUMNS SQL语句用来获取表的各列和结构设置。
插入、查看及更新数据:①插入数据:创建新的Statement,并使用INSERT
删除数据和数据库表:①用DELETE FROM语句来删除数据,语法为DELETE FROM 。②从数据库中删除表使用Statement对象的executeUpdate方法,并传给它DROP TABLE ,tablename> SQL语句。
实验楼学习内容
- 与教材上内容差不多,内容如下。
教材学习中的问题和解决过程
- 问题1:在学习教材内容的时候,看到P445中用到了varchar数据类型,那么varchar和char有什么区别呢?
解决方案:在学习实验楼的时候第二节学习到了区别: CHAR 的长度是固定的,而 VARCHAR 的长度是可以变化的,比如,存储字符串 “abc",对于 CHAR(10),表示存储的字符将占 10 个字节(包括 7 个空字符),而同样的 VARCHAR(12) 则只占用4个字节的长度,增加一个额外字节来存储字符串本身的长度,12 只是最大值,当你存储的字符小于 12 时,按实际长度存储。
- 问题2:同样是P445中提到了PRIMARY KEY域。但书上并没有说明这个设置的用法。
解决方案:根据上网查询以及实验楼的学习,了解到主键 (PRIMARY KEY)是用于约束表中的一行,作为这一行的唯一标识符,在一张表中通过主键就能准确定位到一行。主键不能有重复且不能为空。主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识。
代码调试中的问题和解决过程
- 问题1:“命令行参数”该程序中有“参考Integer类中的方法把字符串转为整数的要求”
- 解决方案:书本上P267程序10.2中的代码里有Integer类parseInt方法的使用(书本上有很多实际的方法应用,在平时学习的过程中,更应该仔细学习。)
- 问题2:在IDEA中不知道该如何传递命令行参数
- 解决方案:根据老师的帮助,知道了选择
Run->Edit Configuration...
,然后命令行中的参数通过 Programm argumetns传递。
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
-
错题1:
The _________________ statement is used to begin exception propagation(___语句用于开始异常传播).
A.propagate
B.relay
C.throw
D.except
E.send 原因:The throw statement begins the propagation of an exception (抛出语句开始异常的传播。)这个问题属于知识上的漏洞。当一个异常被抛出以后,程序将控制权转移给try语句中第一个能够处理该异常的catch子句。这个从异常抛出到控制转移给合适的异常处理语句的过程就叫做异常传播。出自互动百科异常传播。
-
错题2:
A throw statement is used to begin exception propagation(throw语句用于开始异常传播过程).
A.true
B.false 原因:同上一题。
-
错题3:
sort.txt中的内容是:
aaa:10:1.1
ccc:20:3.3
ddd:40:4.4
bbb:30:2.2
eee:50:5.5
用“sort -t: -nk2 sort.txt”排序后的第二行是:
A.aaa:10:1.1
B.ccc:20:3.3
C.ddd:40:4.4
D.bbb:30:2.2
E.eee:50:5.5 原因:不了解sort命令的用法。
结对及互评
点评过的同学博客和代码
其他(感悟、思考等,可选)
- 这周学习的内容其实有很多,书本内容自己再看的时候有点糊涂,看了实验楼加强了记忆,但依旧对数据库的使用很生疏,要在课下再多花时间学习。这周开始,课堂上课形式发生了改变,变成了我最害怕的编程序。有的时候因为熟练度不够,导致在课上规定的时间内无法独立完成。但这样的教学方法能够有效提高我们编程能力这点是毋庸置疑的。(我想我会写一篇每周更新的博客,来记录每周课上所写代码时遇到的问题以及学习到的内容)期待自己在这样的“强制压迫”下,对于编写程序的能力有质的飞跃。
- 学期已经过去一大半了,回想一下在java这门课程的学习,虽然学习了很多内容,每周都过的很充实,但我感觉到了自己学习的并不扎实,浮于理论,没有深入实践,算是慢慢地更加理解了“做中学”的含义。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 57/57 | 1/1 | 24/24 | 绪论 |
第二周 | 338/395 | 1/2 | 18/42 | 数据和表达式 |
第三周 | 497/892 | 1/3 | 18/60 | 使用类和对象 |
第四周 | 839/1731 | 1/4 | 30/90 | 条件与循环 |
第五周 | 1018/2749 | 1/5 | 10/100 | 编写类 |
第六周 | 216/ 2965 | 1/6 | 15/115 | 继承 |
第七周 | 507 /3472 | 2/8 | 10/125 | 多态 |
第八周 | 235 /3707 | 1/9 | 10/135 | 异常 |
第九周 | 418/4121 | 1/10 | 8/143 | 数据库 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:10小时
实际学习时间:8小时
改进情况:多动手,多理解,多学习。
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)