• 20145314郑凯杰 《Java程序设计》第9周学习总结 积极主动敲代码


    20145314郑凯杰 《Java程序设计》第9周学习总结

    教材学习内容总结

    第十六章

    ①JDBC(Java DataBase Connectivity)

    即java数据库连接,是一种用于执行SQL语句的Java API

    JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

    插图1:

    对于JDBC,其使用有两个步骤,一是首先进行驱动程序的装载,再进行连接的建立。

    驱动的四种类型:

    • JDBC-ODBC Bridge Driver
    • Native API Driver 提供原生链接库
    • JDBC-Net Driver 将方法调用转换为特定的网络协议调用
    • Native Protocal Driver

    此分类是按照操作方式来分类的。

    建立数据库的步骤:

    1. 注册Driver的操作对象
    2. 取得Connection操作对象
    3. 关闭connection操作对象

    (1)Statemet和Resultset

    接下来执行SQL的话,必须取得java.sql.Statement操作对象。

    可使用ConnectioncreateStatemet()建立Statemet对象。

    Resultsetnext()可通过返回true或者false表示是否有下一笔数据。

    (2)PreparedStatement和CallableStatement

    使用ConnectionpreparedStatement()方法建立预先编译(Precompile)的SQL语句,当参数会变动的部分,先指定“?”这个占位字符。

    ②RowSet

    JDBC定义了javax.sql.RowSet接口,用以代表数据的列集合。这里的数据并不一定是数据库中的数据,可以是试算表数据、XML数据或任何具有行集合概念的数据源。

    RowSetResultSet的子接口,所以具有ResultSet的行为,可以使用RowSet对行集合进行增删查改,RowSet也新增了一些行为,如通过setCommand()设置查询命令、通过execute()执行查询命令以填充数据等。

    第十七章

    ①运用反射

    JAVA真正需要某个类时才会加载对应的.class文档,不是程序启动时就加载所有类。

    通过ObjectgetClass()方法,或者.class常量取得每个对象对应的class对象,如果是基本类型,也可以使用对应的打包类加上.TYPE取得Class对象。例如,Integer.TYPE可取得代表intClass对象。

    使用class.forName()的方法来实现动态加载类。

    java.lang.reflect.Method实例是方法的代表对象,可以使用invoke()方法来动态调用指定的方法。

    ②了解类加载器ClassLoader

    JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤。

    插图2:

    另外,类的加载是什么意思呢? 指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个这个类的Java.lang.Class对象,用来封装类在方法区类的对象

    第十八章

    ①自定义泛型

    在定义泛型时,使用extends限定指定T实际类型时,必须是某类的子类。

    共变性(Covariance):,BA的子类,Node<B>可视为一种Node<A>,称Node具有共变性。

    通配字符“?”与extends限制T的类型,只能通过T声明的名称取得对象指定给Object,或将T声明的名称指定为null

    ②自定义枚举

    enum定义了特殊的类,继承自java.lang.Enum

    enum是个抽象类,无法直接实例化。

    enum操作Comparable接口,ordinal的值是会使用enum枚举的成员顺序。equals()hashCode()基本上继承了Object的行为,但被标示为final

    可以使用values()的方法,将内部维护Action枚举实例的数组复制后返回。

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

    本周学习的重点在于对概念的理解,说实话这几张的内容已经可以作为选学内容了。在本学期的学习中,应该是不会用到了,所以本周我把精力会主要放在之前的复习上。而对这些章节的内容,会做到如果接触到的话一定能反应过来。

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

    JAVA厚厚的一本书终于学完了,突然觉得自己好有成就感,短短几周就学完了这样一门语言。有着与好友们一起开发程序梦想的我!终于可以用自己的双手开始实现这一想法了,真的很开心。多少个日日夜夜,对着屏幕敲代码,心中烦躁得不行,口中念骂着这语言为啥这么复杂,现在居然已经学完了。真是松了一口气,但是下一周,要把理论付诸实践!开始干吧!不要浪费每一秒青春的时间,用代码写出想写的东西!
    现在也对得起那句话了:积极主动敲代码,没日没夜学加瓦。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 50/50 1/2 20/20
    第二周 700/600 2/4 38/38
    第三周 900/1100 1/7 60/60
    第四周 913/1350 1/9 90/90
    第六周 764/1350 1/9 90/90
    第七周 314/1350 1/9 60/120
    第八周 293/1350 1/9 60/120
    第九周 xxx/1350 1/9 75/120

    参考资料

  • 相关阅读:
    链表问题----反转部分单向链表
    HTTP请求详解
    链表问题----删除链表的中间节点和a/b处的节点
    链表问题----删除倒数第K个节点
    栈和队列----最大值减去最小值小于等于num的子数组的数量
    栈和队列----求最大子矩阵的大小
    TCP/IP、Http、Socket的区别
    栈和队列----生成窗口的最大值数组
    linux根文件系统制作,busybox启动流程分析
    linux 内核启动流程分析,移植
  • 原文地址:https://www.cnblogs.com/5314zkj/p/5444924.html
Copyright © 2020-2023  润新知