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


    教材学习内容总结

    第12章 Lambda语法

    Lambda定义

    • 一个不用被绑定到一个标识符上,并且可能被调用的函数。
    • 在只有Lambda表达式的情况下,参数的类型必须写出来,如果有目标类型的话,在编译程序可推断出类型的情况下,就可以不写出Lambda表达式的参数类型。
    • Lambda表达式本身是中性的,不代表任何类型的实例,可用来表示不同目标类型的对象操作。
    • Lambda表达式在平行设计的时候,能够进行并行处理。

    第13章:

    1.时间

    • 世界时:又称UT时间,借由观测远方星体跨过子午线而得
    • 国际原子时:又称TAI时间,将秒的国际单位定义为铯原子辐射震动9192631770周耗费的时间
    • 世界协调时间:又称UTC时间由于TAI时间每秒是固定的,然而地球自转会越来越慢,为了保持TAI和UT时间不要差距过大,提出了折中的世界协调时间
    • Unix时间:以1970年1月1日00:00:00为起点
    • epoch:不少Unix的系统、平台、软件都选择这个时间作为时间表的起点

    2.年历

    • 儒略历:如今公历的前身,用来取代罗马历,四年一闰年
    • 格里高利历:改革了儒略历
    • ISO 8601标准:ISO 8601并非年历系统,而是时间日期表示方法的标准,用统一时间日期的数据交换格式,如yyyy-mm-ddTHH:MM:SS.SSS
    • 认识时区:一般是经度偏移15度偏移一个小时,然而许多国家领土广阔,有多个时间反而困扰,如中国就只采用单一时区

    3.Date和Calendar

    • 时间轴上瞬间的date:使用Date实例的各getTime可以获得epoch毫秒数,Data实例只用来当做时间轴上的某一瞬间
    • DateFormat:DataFormat可以对字符串格式进行处理,分别有getDateInstance()、getTimeInstance()、getDateTimeInstance()等静态方法 ,SimpleDateFormat还有个parse()方法,可以按构建SimpleDateFormat时指定的格式将指定字符串改为Date实例
    • Calendar:格式化时间日期需要DateFormat,如果想取得某个时间日期信息,对时间日期进行操作,需要使用Calendar实例
    • Timezone:一般都会使用默认时区,若要修改,可以使用java.util.Timezone中的getDefault()来取得默认时区信息

    4.新时间日期API

    • 机器时间观点:Date实例应该只代表了机器观点的时间信息,真正可靠的只有内含的epoch毫秒数

    • localDateTime、LocalTime和LocalTime只有对时间的描述,并没有时区信息,如果定义了不存在的日期,就会跑出DateTimeException

    • ZoneDateTime和OffsetDateTime:如果时间日期需要带有时区,可以基于localDateTime、LocalTime和LocalTime等来不齐缺少的信息

    • Year YearMonth Month和MonthDay:如果要取得想要的月份数则需要使用getValue()方法

    • 对时间的运算:使用Calendar可以进行时间运算,jdk8中也提供了更加方便的时间运算方法以及输出格式,操作相应的temporal类即可

    • 年历设计系统:java.time中的类在需要实行年历系统时都是采用单一的ISO8601系统,如果需要其他年历系统则需要java.time.chrono操作java.time.chrono.Chronology接口的类

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

    • 问题: 如何取得系统时间和时区信息
    • 解决:
      • 若需要时区信息,可基于上述三个时间描述的ZoneDateTime和OffsetDateTIme。
      • 想要取得系统时间,方法之一是使用System.currentTimeMillis()方法

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

    • 代码链接
    • 编译后运行
    • .format(DateTimeFormatter.ofPattern("E MM/DD/YYYY"))删掉

    代码托管

    • 用statistics脚本查看代码行数

    • 代码提交结果

    上周考试错题总结

    • 5.以下()方法会使线程进入阻塞状态?
      • A.Thread.sleep()
      • B.wait()
      • C.notify()
      • D.interrupt()

    正确答案: A B

    理解情况:
    Thread.sleep()使程序进入睡眠状态以减缓线程,使线程进入阻塞状态;java.lang.Object.wait()这个对象使当前线程等待,直到其他线程调用notify()方法或notifyAll()方法。

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

    正确答案: D E

    理解情况:

    1.interrupt()的作用是中断本线程的执行。

    2.本线程中断自己是被允许的;其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限。这有可能抛出SecurityException异常。

    3.如果本线程是处于阻塞状态:调用线程的wait(), wait(long)或wait(long, int)会让它进入等待(阻塞)状态,或者调用线程的join(), join(long), join(long, int), sleep(long), sleep(long, int)也会让它进入阻塞状态。若线程在阻塞状态时,调用了它的interrupt()方法,那么它的“中断状态”会被清除并且会收到一个InterruptedException异常。

    • 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()

    正确答案: D F

    理解情况:没有ParallelStream等类,所以A和E是不正确的。 流类中定义的方法来创建一个平行流从现有流平行();因此C F是正确的,是不正确的。 集合类中定义的方法来创建一个平行流从收集parallelStream();因此B D是正确的和错误的。

    • 11.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

    正确答案: A C D F

    理解情况:A C D F

    • 17.• Which of the following are true? (Choose all that apply.)
      • A. A new Console object is created every time System.console() is called.
      • B.Console can only be used for reading input and not writing output.
      • C.Console is obtained using the singleton pattern.
      • D. When getting a Console object, it might be null.
      • E. When getting a Console object, it will never be null.

    正确答案: C D

    理解情况:一个控制台JVM创建对象。 因为只有一个存在,它是一个单例,mak - 荷兰国际集团(ing)选项C正确的。 如果程序运行的环境中没有一个控制台,系统。 控制台()返回null,D也正确。 其他报表控制台 不正确的。

    结对及互评

    评分标准(满分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分

    点评模板:

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

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

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

    • 参考示例

    点评过的同学博客和代码

    体会

    这一周主要看的是时间与日期,对计算机的工作原理及程序所需要的基本要素都有进一步的理解。这周的实验是基础操作,尽管简单,但是在编辑代码的时候还是会出错。之前都是用的JDB调试,但是实验要求用IDEA,不是很习惯。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 20/20 1/1 10/10 安装了JDK、IDEA和Git,写了第一个Java程序
    第二周 97/117 2/3 20/30 用Linux上传代码,熟悉修改文件的命令行
    第三周 336/453 2/4 35/65 在Linux上安装JDK和IDEA,更熟悉vi的操作指令以及修改时需要注意的地方。
    第四周 851/1304 1/5 25/90 学习用JDB调试程序
    第五周 834/2138 1/7 32/122 能自己设计简单的程序,遇到问题也基本上能通过前面的学习和查资料解决,还有问题没有得到解决。
    第六周 573/2711 1/8 15/137 理解课本中的内容并自己把之前的代码加以改正,更理解程序的作用,继续学习用JDB调试程序
    第七周 400/3111 2/10 20/157 用IDEA编辑并调试程序,设置断点,完成了实验一
    • 计划学习时间:25小时
    • 实际学习时间:20小时

    参考资料

  • 相关阅读:
    关于TensorFlow2的tf.function()和AutoGraph的一些问题解决
    voxelmorph配置
    python处理nii格式文件
    mysql总结
    JVM内存模型
    Java线程池面试
    java NIO基础
    面试日记
    PhoenixFD插件流体模拟——UI布局【Gird】详解
    PhoenixFD插件流体模拟——UI布局【Resimulation】详解
  • 原文地址:https://www.cnblogs.com/-zyl/p/6686778.html
Copyright © 2020-2023  润新知