• 20155215 2016-2017-2 《Java程序设计》第7周学习总结


    20155215 2016-2017-2 《Java程序设计》第7周学习总结

    教材学习内容总结

    第十二章

    • lambda语法:Lambda去重复,回忆DRY原则,Lambda表达式可读性更好

    • Arrays.sort

      • Comparator: 对比C语言中使用函数指针
      • 匿名类与多态
    • 在Java中引入Lambda的同时,与现有API维持兼容性是主要考虑之一。

    • 方法引用(Method Reference) 一条语句用Lambda表达式,多条语句用方法引用

    • 函数接口(Functional Interface)

      • 就是只有一个抽象方法的接口:Runnable、Callable、Comparator
      • @FunctionalInterface
      • 可引用的包括类的静态方法、成员方法、构造方法
    • 接口默认方法(Default Method):不能使用类的成员变量

    • 使用Optional代替null

    • 标准API的函数接口

      • Consumer:一个参数,无返回值
      • Function:一个参数,有返回值
      • Predicate:一个参数,有返回值,返回值- 必须是boolean类型的
      • Supplier:无参数,有返回值
    • Stream与管道

    • Lambda与并行处理

    第十三章

    • 时间的度量,年历简介。
    • 想要取得系统时间,方法之一是使用System.currentTimeMillis()方法,返回的是long类型整数。
      P429
    import java.util.*;
    import static java.lang.System.*;
    
    public class datedemo {
        public static void main(String[] args) {
            Date date1 = new Date(currentTimeMillis());
            Date date2 = new Date();
    
            out.println(date1.getTime());
            out.println(date2.getTime());
        }
    }
    

    运行结果

    • 有关字符串时间格式的处理,职责落在了Java.text.DateFormat身上。
    import java.util.*;
    import static java.lang.System.out;
    import static java.text.DateFormat.*;
    
    public class DateFormatDemo {
        public static void main(String[] args) {
            Date date = new Date();
            dateInstanceDemo(date);
            timeInstanceDemo(date);
            dateTimeInstanceDemo(date);
        }
        
        static void dateInstanceDemo(Date date) {
            out.println("getDateInstance() demo");
            out.printf("	SHORT: %s%n", getDateInstance(LONG).format(date));
            out.printf("	SHORT: %s%n", getDateInstance(SHORT).format(date));
        }
    
        static void timeInstanceDemo(Date date) {
            out.println("getTimeInstance() demo");
            out.printf("	LONG: %s%n", getTimeInstance(LONG).format(date));
            out.printf("	MEDIUM: %s%n", getTimeInstance(MEDIUM).format(date));
            out.printf("	SHORT: %s%n",getTimeInstance(SHORT).format(date));
        }
        
        static void dateTimeInstanceDemo(Date date) {
            out.println("getDateTimeInstance() demo");
            out.printf("	LONG: %s%n", 
               getDateTimeInstance(LONG, LONG).format(date));
            out.printf("	MEDIUM: %s%n",
               getDateTimeInstance(SHORT, MEDIUM).format(date));
            out.printf("	SHORT: %s%n",
               getDateTimeInstance(SHORT, SHORT).format(date));
        }
    }
    
    

    运行截图

    • 处理时间日期的Calendar
    • 使用Java.util.TimeZone的getDefault()来取得默认时区信息。取得指定时区的TimeZone实例,可以取得ID字符串。
    • 机器时间观念的API和人类时间观念的API
    • 对时间的运算。

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

    第十二章

    • 问题1:Lambda语法的优势在哪里?
    • 问题1解决方案:取得语法的简洁,增加代码程序的表达性,引入更简单的表达式和局部变量的定义规则,定义更灵活更友善的语法,这里只是回避,类加载和实例化本身不可避免,允许用户使用最终有效的局部变量。

    第十三章

    • 问题2:Java8与以前相比在时间处理上做了哪些改进?
    • 问题2解决方案:Java 的日期与时间 API 问题由来已久,Java 8 之前的版本中关于时间、日期及其他时间日期格式化类由于线程安全、重量级、序列化成本高等问题而饱受批评。Java 8 吸收了 Joda-Time 的精华,以一个新的开始为 Java 创建优秀的 API。新的 java.time 中包含了所有关于时钟(Clock),本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration)的类。历史悠久的 Date 类新增了 toInstant() 方法,用于把 Date 转换成新的表示形式。这些新增的本地化时间日期 API 大大简化了了日期时间和本地化的管理。

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

    • 问题1:我在运行第十三章的程序时出现了编译错误:

    • 问题1解决方案:我在网上找到了这个,Java命令行编译文件时出现的错误,找不到符号或软件包不存在等

    • 问题2:在编译Timezone程序时报错如下:

    • 问题2解决方案:我发现我文件名打错了,然后还有一个地方多打了一行重复的内容,修改之后就编译成功了。运行结果如下:

    代码托管

    上周考试错题总结

    • 1.下面哪条命令可以把 f1.txt 复制为 f2.txt ?:
      A. cp f1.txt f2.txt
      B .
      copy f1.txt f2.txt
      C .
      cat f1.txt > f2.tx
      D .
      cp f1.txt | f2.tx
      E .
      copy f1.txt | f2.tx
      答案:AC

    我只选择了A。copy是Windows下的命令。cat f1.txt > f2.tx 通过输出重定向实现了复制。

    • 7.调用线程的interrupt()方法 ,会抛出()异常对象?
      A .
      IOException
      B .
      IllegalStateException
      C .
      RuntimeException
      D .
      InterruptedException
      E .
      SecurityException
      答案:DE

    我只选择了D,SecurityException检测到安全错误时引发的异常。

    • 10.Given an instance of a Stream, s, and a Collection, c, which are valid ways of creating a parallel stream? (Choose all that apply.)
      给定一个Stream的实例s, 一个Collection的实例c, 下面哪些选项可以创建一个并行流?
      A .
      new ParallelStream(s)
      B .
      c.parallel()
      C .
      s.parallelStream()
      D .
      c.parallelStream()
      E .
      new ParallelStream(c)
      F .
      s.parallel()
      答案:DF
      我选了AB

    • Which of the following statements about the Callable call() and Runnable run() methods are correct? (Choose all that apply.)
      A .
      Both can throw unchecked exceptions.
      B .
      Callable takes a generic method argument.
      C .
      Callable can throw a checked exception.
      D .
      Both can be implemented with lambda expressions.
      E .
      Runnable returns a generic type.
      F .
      Callable returns a generic type.
      G .
      Both methods return void
      答案:ACDF
      我的答案是CF,显然我对题目的理解不够,还需要更深入地学习

    • 14.Which of the following are not java.io classes? (Choose all that apply.)
      答案是PrintWriter
      因为PrintWriter是唯一Writer类,没有互补reader类,E是正确的。

    • Which of the following are built-in streams in Java? (Choose all that apply.)
      A .System.err

    B .System.error

    C .System.in

    D .System.input

    E .System.out
    F .System.output
    答案:ACE
    The System class has three streams: in is for input, err is for error, and out is for output. Therefore A, C, and E are correct. The others do not exist.

    结对及互评

    评分标准

    1. 正确使用Markdown语法(加1分):

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

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

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

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

      • 一周提交次数少于20次的不加分
    6. 其他加分:

      • 周五前发博客的加1分
      • 感想,体会不假大空的加1分
      • 排版精美的加一分
      • 进度条中记录学习时间与改进情况的加1分
      • 有动手写新代码的加1分
      • 课后选择题有验证的加1分
      • 代码Commit Message规范的加1分
      • 错题学习深入的加1分
      • 点评认真,能指出博客和代码中的问题的加1分
      • 结对学习情况真实可信的加1分
    7. 扣分:

      • 有抄袭的扣至0分
      • 代码作弊的扣至0分
      • 迟交作业的扣至0分

    点评模板:

    • 博客中值得学习的或问题:

      • xxx
      • xxx
      • ...
    • 代码中值得学习的或问题:

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

    • 参考示例

    点评过的同学博客和代码

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

    这周的学习状态感觉比之前要好一些,另一方面这周的学习内容也相对简单一些。然后这周的测试,我只有九分,虽然这九分还排了个第六名,但是我知道我还要很多的不足需要努力,希望我能再接再励继续进步。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第四周 300/500 2/4 18/38
    第五周 515/1396 3/7 22/30
    第六周 845/2012 1/9 24/30
    第七周 734/2746 2/11 27/28

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

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

    • 计划学习时间:28小时

    • 实际学习时间:27小时

    • 改进情况:这周的学习状态感觉比之前要好一些,花的时间更长了一些。

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

    参考资料

  • 相关阅读:
    怎样使用 Apache ab 以及 OneAPM 进行压力測试?
    opencv之haar特征+AdaBoos分类器算法流程(三)
    分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)
    REST API 调用 方法
    WebApi的安全性及其解决方案
    使用Topshelf创建Windows服务
    LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count
    sqlbulkcopy 多表批量保存
    C#使用HttpWebRequest和HttpWebResponse上传文件示例
    C#模拟客户端发送数据示例
  • 原文地址:https://www.cnblogs.com/xuanyan/p/6681516.html
Copyright © 2020-2023  润新知