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


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

    教材学习内容总结

    1.时间的度量:

    • 格林威治标准时间(GMT)通过观察太阳而得,其正午是太阳抵达天空最高点之时,因地球的公转与自传,会造成越来越大的时间误差,已不作为标准时间使用。
    • 时间时(UT)是借由观测远方星体跨过子午线而得,比GMT准确一些,在1972年引入UTC之前,GMT与UT是相同的,仍有误差。
    • 1967年定义的国际原子时(TAL),将秒的国际单位定义为铯原子辐射振动9192631770周耗费的时间,时间从UT的1958年开始同步。
    • 世界协调时间(UTC)为保持TAI与UT时间不要差距过大而提出,1972年UTC采用了闰秒修正,确保UTC与UT相差不会超过0.9秒,加入闰秒的时间通常会在6月底或12月底。
    • Unix系统的时间表示法,定义为UTC时间1970年1月1日00:00:00为起点而经过的秒数,不考虑闰秒修正,用以表达时间轴上某一瞬间。
    • java.util.Date封装的时间信息,就是January 1,1970,00:00:00 GMT(实际上是UTC)经过的毫秒数(epoch毫秒数)。

    2.年历简介:

    • 儒略历,现今公历的前身,用来取代罗马历,修正了罗马历隔三年设置一闰年的错误,改采四年一润。
    • 格里高利历改革了儒略历,由教宗Pope Gregory ⅩⅢ于1582年颁行,将儒略历1582年10月4日星期四的隔天,定为格里高利历1582年10月15日星期五。
    • ISO 8601严格的说并非年历系统,而是时间日期表示方法的标准,用以统一时间日期的数据交换格式。

    3.时区:

    • 美国有四个时区,中国、印度只采用单一时区。
    • 有些高纬度国家,实施日光节约时间,也称为夏季时间。

    4.认识Date与Calendar:

    • 想要取得系统时间,使用System.currentTimeMillis()方法,返回的是long类型的整数。
    • Date有两个构造函数可以用,一个可使用epoch毫秒数构建,另一个为无自变量构造函数,内部亦是使用System.currentMillis()取得epoch毫秒数,调用getTime()可取得内部保存的epoch毫秒数值。
    • java.text.DateFormat负责字符串时间格式的处理,其操作类为java.text.SimpleDateFormat。
    • getDateInstance()、getTimeInstance()、getDateTimeInstance()等静态方法主要是取得不同详细程度的时间日期。
    • SinpleDateFormat有parse()方法,可以按构建SimpleDateFormat时指定的格式,将指定的字符串剖析为Date实例。
    • Calender是个抽象类,java.util.GregorianCalendar是其子类,操作了儒略历与格里高利历的混合历,通过Calendar的getInstance()取得的Calendar实例,默认就是取得GregorianCalendar实例。
    • 取得Calender实例后,可以使用getTime()取得Date实例,如果想取得年月日等日期时间字段,可以使用get()方法并指定Calender上的字段枚举常数。
    • 日历时间可以使用GregorianCalendar的setGregorianChange()方法来修改,设为Date(Long.MAX_VALUE)就是纯粹的儒略历,设为Date(Long.MIN_VALUE)就是纯粹的格里高利历。
    • 想要比较两个Calender时间日的先后,可以使用after()或before()方法。
    • 使用java.util.TimeZone的getDefault()来取得默认时区信息。

    5.JDK8新时间日期API:

    • Date指的是机器的时间概念。
    • 新时间日期处理API的主要套件命名为java.time。对于机器相关的时间概念,设计了Instant类,用以代表自定义的Java epoch之后的某个时间点经历的毫秒数,精确度基本上是毫秒,但可添加柰秒精度的修正数值。
    • 人类时间观点API,LocalDateTime(包括日期与时间)、LocalDate(只有日期)、LocalTime(只有时间),如果需要时区,可以基于LocalDateTime、LocalDate、LocalTime等来补充。
    • 只想表示年用Year,想表示年月用YearMonth,只想表示月用Month,想表示月日用MonthDay,从0开始,想要取得代表月份的数要用过getValue()方法。
    • 类Duration可用于计量天、时、分、秒的时间差,精度调整可以达纳秒等级,而秒的最大值可以是long类型可保存值。对于年、月、星期、日的是日期差,则使用Period类定义。

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

    • 若想要得到1970年之前到现在的时间差,要如何计算呢?计算机是从1970年1月1日00:00:00为零点开始计时的,不知用和方法可求得此时间差。

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

    • P436TimeZoneDemo.java中的定位功能有疑问。代码如下:
    import static java.lang.System.out;
    import java.util.TimeZone;
    
    public class TimeZoneDemo {
        public static void main(String[] args) {
            TimeZone timeZone = TimeZone.getDefault();
            out.println(timeZone.getDisplayName());
            out.println("	时区ID:" + timeZone.getID());
            out.println("	日光节约时数:" + timeZone.getDSTSavings());
            out.println("	UTC 偏移毫秒数:" + timeZone.getRawOffset());
        }
    }
    

    结果截图如下:
    image
    为什么定位于上海?

    上周考试错题总结

    • 调用线程的interrupt()方法 ,会抛出()异常对象?

    A .IOException

    B .IllegalStateException

    C .RuntimeException

    D .InterruptedException

    E .SecurityException

    正确答案: DE

    • 如果有以下代码段:
      Thread thread = new Thread(new ________________() {
      public void run() {...}
      });
      空白部分指定哪些类型可以通过编译?

    A .Runnable

    B .Thread

    C .Future

    D .Executor

    正确答案:AB

    错误分析:
    少选了A,查API文档,Thread 也实现了 Runnable 接口 。

    • 下面哪条命令可以把 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

    错误分析:我选了AB。主要是对输出重定向不太了解
    。正确答案应为AC,copy是Windows下的命令。cat f1.txt > f2.tx通过输出重定向实现了复制

    结对及互评

    评分标准

    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小时
    第一周 10/10 1/1 10/20 简单了解了jdk,认识了Java语言学习的复杂性
    第二周 70/100 1/1 18/25
    第三周 150/200 1/1 14/20
    第四周 200/300 1/1 15/20
    第五周 200/300 1/1 15/20
    第六周 350/500 1/1 15/20
    第七周 500/700 2/2 15/20

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

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

    • 计划学习时间:20小时

    • 实际学习时间:15小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    SQL Server的全局变量
    SQL局部变量
    视图和表之间的区别和联系
    SQL Server中开发常用的数据类型
    Bootstrap 字体图标、下拉菜单、按钮组
    Bootstrap 按钮,图片,辅助类
    Bootstrap表单
    Bootstrap表格
    Bootstrap排版类
    Bootstrap网格系统
  • 原文地址:https://www.cnblogs.com/tyn5304/p/6686808.html
Copyright © 2020-2023  润新知