• 20155209 2016-2017-2 《Java程序设计》第九周学习总结 ## 教材学习内容总结


    教材学习内容总结

    • JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据。
    • 执行流程:
      •连接数据源,如:数据库。
      •为数据库传递查询和更新指令。
      •处理数据库响应并返回的结果。
    • JDBC 架构
      分为双层架构和三层架构。
    • 双层构架:
    • 作用:此架构中,Java Applet 或应用直接访问数据源。
    • 条件:要求 Driver 能与访问的数据库交互。
    • 机制:用户命令传给数据库或其他数据源,随之结果被返回。
    • 部署:数据源可以在另一台机器上,用户通过网络连接,称为 C/S配置(可以是内联网或互联网)。
    • 三层构架:
      侧架构特殊之处在于,引入中间层服务。
    • 流程:命令和结构都会经过该层。
    • 吸引:可以增加企业数据的访问控制,以及多种类型的更新;另外,也可简化应用的部署,并在多数情况下有性能优势。
    • 历史趋势: 以往,因性能问题,中间层都用 C 或 C++ 编写,随着优化编译器(将 Java 字节码 转为 高效的 特定机器码)和技术的发展,如EJB,Java 开始用于中间层的开发这也让 Java 的优势突显出现出来,使用 Java 作为服务器代码语言,JDBC随之被重视。
    • 当程序主动使用某个类时,若该类还没加载到内存中,系统会通过加载,链接,初始化3个操作对类进行初始化。
    • 类字面常量”,class”创建Class对象的引用时,不会自动地初始化该Class对象,准备工作包含3个步骤:
    • 1.加载:由类加载器执行,该步骤查找字节码,并从这些字节码中创建一个Class对象
    • 2.链接:在链接阶段将验证类中的字节码,为静态域分配存储空间,并且如果必需的话,将解析这个类创建的对其他类的所有引用。
    • 3.初始化:如果该类有超类,则对其初始化,执行静态初始化器和静态初始化块
    • 泛型定义:
      (1)仅定义在方法上的泛型语法
      (2)用来限制泛型可用类型的extends与super关键字
      (3)?类型通配字符的使用

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

    • 问题一:MySQL数据库、数据库与数据库表三者关系

    • 30钟入门MySQL

    • 问题二:类的初始化时机

    • 类的初始化时机

    • 1.创建类的实例

    • 2.访问类或接口的静态变量(static final常量除外,static final变量可以)

    • 3.调用类的静态方法

    • 4.反射(Class.forName(packageName.className))

    • 5.初始化类的子类(子类初始化问题:满足主动调用,即访问子类中的静态变量、方法,否则仅父类初始化)

    • 6.java虚拟机启动时被标明为启动类的类

    • 注:加载顺序:启动类的static block最先加载
      (父类静态成员、静态代码块—>子类静态成员、静态代码块—>父类实例成员、代码块——>父类构造函数—>子类实例成员、代码块—>子类构造函数)

    我- 们需要明白在JAVA中任何class都要装载在虚拟机上才能运行,而forClass就是装载类用的,这是要和new不一样,要分清楚哦。

    • A a = (A)Class.forName(“package.A”).newInstance();和 A a = new A;是等价的。
      记住一个概念,静态代码是和class绑定的,class装载成功就表示执行了你的静态代码,而且以后不会再走这套静态代码了。

    • Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也即是说JVM会执行该类的静态代码段。

    • 问题三:类加载的三种机制

    • 问题四:Class类提供的获取类的构造方法

    • Class类提供了四个public方法,用于获取某个类的构造方法。

    • Constructor getConstructor(Class[] params)

    根据构造函数的参数,返回一个具体的具有public属性的构造函数

    • Constructor getConstructors()

    返回所有具有public属性的构造函数数组

    • Constructor getDeclaredConstructor(Class[] params)

    根据构造函数的参数,返回一个具体的构造函数(不分public和非public属性)

    • Constructor getDeclaredConstructors()

    返回该类中所有的构造函数数组(不分public和非public属性)

    • 问题五:泛型的好处
    • 类型安全。泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。
    • 消除强制类型转换。泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。 尽管减少强制类型转换可以降低使用泛型类的代码的罗嗦程度,但是声明泛型变量会带来相应的罗嗦
    • 潜在的性能收益。泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为未来版本的JVM 的优化带来可能。 - 枚举泛型详解

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

    • 代码仔细认真按照书中顺序打,除了几处书中印刷错误没有发现更大错误。

    代码托管

    • 代码提交过程截图:

    • 代码量截图:

    上周考试错题总结

    • Linux中使用cp命令拷贝目录时要加上(a,d)选项。
      A .
      -r
      B .
      -directory
      C .
      -all
      D .
      -R
    • ByteBuffer 调用了flip(a)之后,position的值一定是0。
      A .
      True
      B .
      False
    • 正则表达式”(‘|”)(.*?)1”匹配 “'Hello',"World””的结果是(b,c)
      A .
      不匹配
      B .
      'Hello'
      C .
      "World"
      D .
      'Hello',"World"
    • Java 日志 API 中,输出的日志会经过哪两个类别的过滤?a,b
      A .
      Logger
      B .
      Handler
      C .
      Formatter
      D .
      Stream
    • Date 的 API 有许多方法都不再建议使用,应改用哪个类别的相关方法取
      代? d
      空白部份指定哪些型态可以通过编译?
      A .
      DateFormat
      B .
      TimeStamp
      C .
    • 哪个类代表可重用的正则表达式?a
      A .
      Pattern
      B .
      Matcher
      C .
      Glob
      D .
      Regex
      Time
      D .
      Calendar
    • 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循环不能遍历数组中的每一个元素?) c

    A .
    for(int i = 0; i < names.length; i++)
    B .
    for(String name : names)

    C .
    for(int i = 0; i < names.length(); i++)

    D .
    none of these will correctly process each element(以上都不能遍历)
    E .
    all of these will correctly process each element(以上都能遍历)

    • Which of the following array declarations are invalid? (下面哪个数组声明是不合法的)d
      A .
      int[] grades = new int[5];

    B .
    int grades[] = new int[5];
    C .
    int[] grades = { 91, 83, 42, 100, 77 };
    D .
    all of the above are valid(以上三个都合法)

    E .
    none of the above are valid(以上三个都不合法)

    结对及互评

    点评过的同学博客和代码

    • 本周结对学习情况
      • 20155230
      • 基于评分标准,我给本博客打分:10。得分情况如下:
        1.正确使用Markdown语法,加1分
        2.模板中的要素齐全,加1分
        3.教材学习中的问题和解决过程, 一个问题加2分,
        4.代码调试中的问题和解决过程, 一个问题加2分,
        5.本周有效代码超过300分行的(加2分)
        6.有动手写新代码的加1分
        7.其他加分:1分
    • 代码Commit Message规范的加1分
    • 上周博客互评情况
    • 20155326
    • 20155325
    • 20155225
    • 20155235
    • 20155210

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

    从本周开始java书中的自学过程已经结束,课堂上也多了程序的操作,可能是因为书中学习时没有太认真,到自己编写程序的时候还是离要求差的很多,今后只能查漏补缺,尽自己最大的努力抓住老师同学们的学习节奏,争取不被甩出队伍。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 15篇 400小时
    第一周 10/10 1/1 10/20
    第二周 196/206 1/2 20/30
    第三周 391/597 1/3 20/50
    第四周 731/1328 1/4 30/80
    第五周 908/2236 1/5 20/100
    第六周 561/2797 1/6 20/120
    第七周 328/3125 2/8 20/140
    第八周 414/3539 1/9 15/155
    第九周 1175/4714 2/11 20/175

    参考资料

  • 相关阅读:
    Web开发技术大会演讲
    方法的长度
    避免复制与粘贴
    引入工厂方法支持扩展
    利用多态重构为带参方法
    代码质量对系统的影响
    《重构之美》开篇
    老鸟对菜鸟的一些建议
    jQuery 使用 AJAX解决跨域问题jQuery 使用 AJAX解决跨域问题
    uniapp renderjs通信
  • 原文地址:https://www.cnblogs.com/lhyhahaha/p/6754627.html
Copyright © 2020-2023  润新知