20155336 2016-2017-2《JAVA程序设计》第九周学习总结

教材学习内容总结

第十六章

  • 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()等方法,指定“?”处真正应该有的参数。

第十七章

  • 运用反射

    JAVA真正需要某个类时才会加载对应的.class文档,不是程序启动时就加载所有类。
    
    通过Object的getClass()方法,或者.class常量取得每个对象对应的class对象,如果是基本类型,也可以使用对应的打包类加
    
    上.TYPE取得Class对象。例如,Integer.TYPE可取得代表int的Class对象。
    
    使用`class.forName()的方法来实现动态加载类。
    
    java.lang.reflect.Method实例是方法的代表对象,可以使用invoke()方法来动态调用指定的方法。
  • 了解类加载器(ClassLoader)

    是指将.class文件中的二进制数据读入到内存中,将其放在运行时数据的方法区内,然后再堆区创建这个类的java.lang.Class对象,用
    
    来封装类在方法区类的对象。
    
    JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤。

第18章

  • 自定义泛型

    在定义泛型时,使用extends限定指定T实际类型时,必须是某类的子类。在定义泛型时,使用extends限定指定T实际类型时,必须是某类的子类。
    
    共变性(Covariance):,B是A的子类,Node B可视为一种Node A ,称Node具有共变性。
    
    通配字符“?”与extends限制T的类型,只能通过T声明的名称取得对象指定给Object,或将T声明的名称指定为null。

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

  • 问题一:关于类加载器的知识,分为三个步骤,装在(Load)、链接(Link)和初始化(Initialize)链接又分为三个步骤。 但是不太了解之间的关系,是包含,还是分支类型的?

  • 解决:百度查到了一张图片,解决了问题。

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

  • 问题一:关于p511页的 MessageDAO.java范例

    package cc.openhome;
    import java.sql.*;
    import java.util.*;
    public class MessageDAO {
    private String url;
    private String user;
    private String passwd; public MessageDAO(String url, String user, String passwd) {
    this.url = url;
    this.user = user;
    this.passwd = passwd;
    } public void add(Message message)//注释1 {
    try(Connection conn = DriverManager.getConnection//注释2(url, user, passwd);
    Statement statement = conn.createStatement())//注释3 {
    String sql = String.format(
    "INSERT INTO t_message(name, email, msg) VALUES ('%s', '%s', '%s')",
    message.getName(), message.getEmail(), message.getMsg());
    statement.executeUpdate(sql);//**注释4**
    } catch(SQLException ex) {
    throw new RuntimeException(ex);
    }
    } public List<Message> get() //注释5{
    List<Message> messages = new ArrayList<>();
    try(Connection conn = DriverManager.getConnection(url, user, passwd);
    Statement statement = conn.createStatement()) {
    ResultSet result =
    statement.executeQuery("SELECT * FROM t_message");
    while (result.next()) {
    Message message = toMessage(result);
    messages.add(message);
    }
    } catch(SQLException ex) {
    throw new RuntimeException(ex);
    }
    return messages;
    } private Message toMessage(ResultSet result) throws SQLException {
    Message message = new Message();
    message.setId(result.getLong(1));
    message.setName(result.getString(2));
    message.setEmail(result.getString(3));
    message.setMsg(result.getString(4));
    return message;
    }
    }

    最开始这段代码还存在一点问题,在自己编译的时候,对于一些函数的具体功能和语句存在问题。后来看了书上关于语法的具体讲解,对于代码的注释上有了了解。

    1:注释1:这个方法会在数据库中下新增留言

    2:注释2:取得Connection对象

    3:注释3:建立Statements对象

    4:注释4:执行SQL描述句

    5:注释5:这个方法会从数据库中查询所有留言

代码托管 

其他(感悟、思考等,可选)

学习java的时间也有较长的一段时间了,渐渐的对于这种学习方式也有了适应,对于所学习到的知识也有了更深层次的理解和认识,对于java还是其他计算机语言的元知识和硬知识有了较为扎实的功底,但是对于这些语言的软知识还存在问题。所学到目前的知识还不能很好很高效的自己完成程序的设计和程序代码的书写。在一些语言的语法运用上也不是很熟练,总是会出现错误越改越多的情况。总之对于java语言的学习还是有很大的方面需要去提高。

评分标准(满分10分)

  1. 从0分加到10分为止
  2. 正确使用Markdown语法(加1分):
    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  3. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  4. 教材学习中的问题和解决过程, 一个问题加1分

  5. 代码调试中的问题和解决过程, 一个问题加1分

  6. 本周有效代码超过300分行的(加2分)

    • 一周提交次数少于20次的不加分

6 其他加分: - 周五前发博客的加1分 - 感想,体会不假大空的加1分 - 排版精美的加一分 - 进度条中记录学习时间与改进情况的加1分 - 有动手写新代码的加1分 - 课后选择题有验证的加1分 - 代码Commit Message规范的加1分 - 错题学习深入的加1分 7 扣分: - 有抄袭的扣至0分 - 代码作弊的扣至0分

点评模板:

  • 基于评分标准,我给本博客打分:10。得分情况如下:

    • 正确使用Markdown语法
    • 模板中的要素齐全
    • 教材学习中的问题和解决过程, 一个问题加1分,一共俩
    • 代码调试中的问题和解决过程, 一个问题加1分,一共俩
    • 本周有效代码超过300分行的(加2分)
    • 感想,体会不假大空的加1分
    • 有动手写新代码的加1分
    • 代码Commit Message规范的加1分
    • 课后选择题有验证的加1分

就这10分,还是根本不够加的~~~

点评过的同学博客和代码

20155315

20155234

20155314

20155309

20155223

20155230

学习进度条

             | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长|

  --------   | :----------------:|:----------------:|:---------------:  |:-----:|

| 目标        | 5000行            |   30篇           | 400小时            |       |

| 第一周      | 200/200           |   2/2            | 20/20             |       |

| 第二周      | 300/500           |   2/4            | 18/38             |       |

| 第三周      | 500/1000          |   3/7            | 22/60             |       |

| 第四周      | 800/1300          |   4/9            | 30/90             |       |

| 第五周      | 1800/2000         |   5/9            | 45/100            |       |

| 第六周      | 2400/3000         |   6/10           | 60/100            |       |

| 第七周      | 3100/4000         |   7/11           | 75/100            |       |

| 第八周      | 3700/4500         |   8/12           | 90/110            |       |

| 第九周      | 4300/5000         |   9/12           | 105/130           |       |

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

参考资料

20155336 2016-2017-2《JAVA程序设计》第九周学习总结的更多相关文章

  1. 201521123027 <java程序设计>第九周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2.书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什 ...

  2. 20145220java程序设计第九周学习总结

    20145220java程序设计第九周学习总结 教材学习内容总结 JBDC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商对接口直接操作,开发人员无须接触底层数据可驱动程序的差异 ...

  3. 201771010134杨其菊《面向对象程序设计java》第九周学习总结

                                                                      第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...

  4. 201521044152<java程序设计>第一周学习总结

    本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...

  5. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  6. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  7. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

  8. 马凯军201771010116《面向对象与程序设计Java》第九周学习总结

    一.理论知识部分 异常.日志.断言和调试 1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行. 2.Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置. 3 ...

  9. 201521123063 JAVA程序设计 第二周学习总结

    1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...

  10. 《Java》第九周学习总结

    下载mysql 选择mysql的管理软件 idea可以直接连接 然后用库运行程序,但是没有截图,,因为想在navicat上试试,可惜速度太慢了 打开idea又很慢,所以明天再更新

随机推荐

  1. [原][osg][osgearth]简单的通过osgDB,读取高程tif,修改高程tif

    ReadResult result; osg::ref_ptr<osgDB::ReaderWriter> reader = osgDB::Registry::instance()-> ...

  2. OpenGL入门程序二:绘制简单的圆

    学习 绘制一个圆: ; const float Pi = 3.1415926536f; const float R = 0.5f; //绘制一个圆 void DrawCircle() { //绘制一个 ...

  3. NotifyIcon实现托盘程序

    NotifyIcon 控件的常用属性属性:Icon类型:System.Drawing.Icon说明:将在系统任务栏中显示的图标.可以在设计时指定,也可在运行时动态指定.属性:Text类型:String ...

  4. php 邮件发送利器 PHPMailer

    php 自带的邮件发送函数已经弱到不能用了. PHPMailer非常的强大. 绝对是php里必须使用的程序. 下载地址: https://github.com/Synchro/PHPMailer 只要 ...

  5. Howto: 使用ImageBrush替换PictureMarkerSymbol以加强graphic显示性能

      软件: ArcGIS API for Microsoft Silverlight/WPF 9.3.1 操作系统: N/A 摘要:          ArcGIS API for Microsoft ...

  6. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(五)

    2.Find示例代码 (1)xaml文件: //添加Symbol命名空间 xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.Client.Symbol ...

  7. English trip -- VC(情景课)8 C

    MP review: 音标(Phonetic symbol) [ɪ]    lit adj. 照亮的,点着的(light的过去式及过去分词)n. (Lit)人名:(瑞典)利特:(老)李 [ʊ]   g ...

  8. 原生js实现选项卡

    html代码: <div class="tab"> <ul> <li class="selected">图片</li& ...

  9. SSH 远程端口转发

    既然"本地端口转发"是指绑定本地端口的转发,那么"远程端口转发"(remote forwarding)当然是指绑定远程端口的转发. 还是接着看上面那个例子,ho ...

  10. JavaScript学习总结(十九)——使用js加载器动态加载外部Javascript文件

    今天在网上找到了一个可以动态加载js文件的js加载器,具体代码如下: JsLoader.js 1 var MiniSite=new Object(); 2 /** 3 * 判断浏览器 4 */ 5 M ...