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


    教材学习内容总结

    1.了解Lambda语言

    “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

    Lambda表达式的优点:

    • 提升性能、自动的并行化

    • 更棒的API(comparing(...) 成为标准)

    • 编码风格得到改进、代码简化

    Lambda不从父类型中继承任何名字,包括:

    • 接口的静态final字段

    • 接口的静态嵌套类

    • 默认方法(将在后续介绍)

    将全部被排除在作用域之外。

    Lambda参数与表达式体中的局部声明可以屏蔽字段名。

    Lambda中的this和super的含义完全同外部一致。

    而若在匿名内部类访问外部对象的当前实例须用OuterClass.this,非常笨拙:

    new Thread((LetsRun) () ->
        System.out.println(Foo.this.getClass().toString())
    ).run();
    

    递归Lambda时须注意Lambda变量无法被初始化,只能直接调用相应函数式接口中的方法。

    java中的方法

    所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。

    语法:

    访问修饰符,返回值类型,方法名(参数列表){
    
      方法体
     }
    
    • 1、 访问修饰符:方法允许被访问的权限范围, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用

    • 2、 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void ;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值

    • 3、 方法名:定义的方法的名字,必须使用合法的标识符

    • 4、 参数列表:传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开 。

    • 根据方法是否带参、是否带返回值,可将方法分为四类:

    • 1)无参无返回值方法

    • 2)无参带返回值方法

    • 3)带参无返回值方法

    • 4)带参带返回值方法

    • GMT时间现在已经不作为标准时间使用,但GMT时间常常被当成UTC时间。在导入UTC时间之前,GMT和UT是相同的。UTC时间是具有折中修正版本的世界协调时间,这是为了保持TAI和UT时间不要相差太大,UTC时间采用了闰秒修正。

      • Unix系统的时间表示法定义为UTC时间的1970年1月1日0时0分0秒为起点经过的秒数,不考虑闰秒修正,用以表达时间轴上的某一瞬间。Epoch为某个特定时代的开始,时间轴上的某一瞬间。各个国家修改日历的时间并不相同,所以在Unix或者Linux中查询1752年9月会发现时间少了11天。
      • ISO8601在严格意义上并非年历系统而是时间日期表示方法的标准,用以统一时间日期的数据交换格式,ISO8601在数据定义上大部分与格里高日历相同,但有些细微差别。在ISO8601的定义中19世纪是1900-1999年,而在格里高日历中19世纪是1801-1900年。
    • 教材学习中的问题和解决过程

      • 什么是final?
    • final关键字大家经常使用。final可以用于声明字段、方法和类。final声明字段时,若为基本类型,表示该变量值初始化后不再改变;若为引用类型,则表示引用不可变,但引用所指向的对象是可以改变的。final声明方法时表示方法不可覆写(常用来限制子类不可以改写父类中方法)。final声明类时,表示类不可继承,如String类就是final的,你不能继承它。

    • final字段的详细语义与普通字段稍有不同。尤其是,编译器有很大的自由,能将对final字段的读操作移到同步屏障之外,然后调用任意或未知的方法。同样,也允许编译器将final字段的值保存到寄存器,在非final字段需要重新加载的那些地方,final字段无需重新加载。另外,将对象声明为不可变的,则可实现并发访问,即final可提供一种非同步状态下轻量级的线程安全方法。

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

    • 问题1

    • 问题2

    代码托管


    上周考试

    上周考试错题总结
    下面哪条命令可以把 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
    答案: A C

    2.下面代码中共有()个线程?

    public class ThreadTest {
      public static void main(String args[]){
        MyThread myThread =new MyThread();
        Thread t1=new Thread(myThread);
        Thread t2=new Thread(myThread);
        t1.start();
        t2.start();
     }
    }
    

    class MyThread extends Thread {
    ...
    }
    A .1

    B .2

    C .3

    D .4

    除了t1,t2, 不要忘了main所在的主线程,故选C

    3.以下()方法会使线程进入阻塞状态?

    A .Thread.sleep()

    B .wait()

    C .notify()

    D .interrupt()

    答案A和B

    结对及互评

    评分标准

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

    不使用Markdown不加分

    有语法错误的不加分(链接打不开,表格不对,列表不正确...)

    排版混乱的不加分

    模板中的要素齐全(加1分)

    缺少“教材学习中的问题和解决过程”的不加分

    缺少“代码调试中的问题和解决过程”的不加分

    代码托管不能打开的不加分

    缺少“结对及互评”的不能打开的不加分

    缺少“上周考试错题总结”的不能加分

    缺少“进度条”的不能加分

    缺少“参考资料”的不能加分

    教材学习中的问题和解决过程, 一个问题加1分

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

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

    一周提交次数少于20次的不加分

    其他加分:

    周五前发博客的加1分

    感想,体会不假大空的加1分

    排版精美的加一分

    进度条中记录学习时间与改进情况的加1分

    有动手写新代码的加1分

    课后选择题有验证的加1分

    代码Commit Message规范的加1分

    错题学习深入的加1分

    点评认真,能指出博客和代码中的问题的加1分

    结对学习情况真实可信的加1分

    扣分:

    有抄袭的扣至0分

    代码作弊的扣至0分

    迟交作业的扣至0分

    点评过的同学博客和代码

    20155202

    结对学习内容

    上周博客互评情况
    20155226
    20155321
    20155325
    20155228
    20155202

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    第四周 560/1280 1/9 30/90

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

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

    • 计划学习时间:XX小时

    • 实际学习时间:XX小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    以后有面试官问你「密码学」,你就把这篇文章扔给他
    66 个包过面试锦囊,拿走不谢!
    如何解决代码中 if…else 过多的问题
    为啥 SQL 加了索引会使数据查找更快?
    又一道可以投机取巧的算法题:完美数
    图解 LeetCode 第 3 号问题:数组中重复的数字
    如何用一行代码实现网页变灰效果?
    来了,来了!你们要的写给 Java 程序员看的算法学习指南!
    图解 LeetCode 第 16 号问题:最接近的三数之和
    用脚本帮同学自动生成文章观后感后,这名大四学生火了...
  • 原文地址:https://www.cnblogs.com/lyx1996/p/6684001.html
Copyright © 2020-2023  润新知