• 2016-2017-220155329 《Java程序设计》第8周学习总结


    学号 2016-2017-220155329 《Java程序设计》第8周学习总结

    教材学习内容总结

    了解NIO
    • NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记。对于区块标记,提供了clear()、rewind()、flip()、compact()等高级操作。
    会使用Channel、Buffer与NIO2
    • Buffer的直接子类们都有一个allocate()静态方法,可以让你指定Buffer容量,Buffer容量大小可使用capacity()方法取得,实际可读取或写入的数据界限索引值可以由limit()方法得知或设定,下一个可读取数据的位置索引值,可以使用position()方法得知或设定。
    • NIO2文件系统API提供一组标准接口与类,应用程序开发者只要基于这些标准接口与类进行文件系统操作,底层事迹如何进行文件系统操作,是由文件系统提供者负责。
    • 想要取得Channel的操作对象,可以使用Channels类,它定义了静态方法newChannel(),可以让你从InputStream、OutputStream分别建立ReadableByteChannel、WritableByteChannel,有些InputStream、OutputStream实例本身也有方法可以取得Channel实例,例如:FileInputSteam、FileOutputStream都有个getChannel()方法可以分别取得FileChannel实例。
    会使用日志API、国际化
    • 使用日志的起点是Logger类,要取得Logger类,必须使用Logger的静态方法getLogger(),Logger.log()方法可以用来输出信息。 默认的Logger还会记录时间、类、方法等信息,Logger是记录信息的起点,还会经过一些过滤才会输出信息,输出信息实际上是由Handler负责。
      Logger有层级关系,每个Logger处理完自己的日志动作后,回想父Logger传播,让父Logger也可以处理日志
      Logger与Handler预设都会先依Level过滤信息,如果没有做任何修改,取得的Logger实例之父Logger组态,就是Logger.GLOBAL_LOGGER_NAME名称空间Logger实例的组态,这个实例的Level设定为INFO,可通过Logger实例的getParent()取得父Logger实例,可通过getLevel()取得设定的Level实例。
      在经过Logger过滤之后,还得再经过Handler的过滤,一个Logger可以拥有多个Handler,可通过Logger的addHandler()新增Handler实例。

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

    • 问题1:NIO与IO的异同
    • 问题1解决方案:传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。
    • 问题2:java怎么将系统日志存到数据库?
    • 问题2解决方案:http://blog.csdn.net/ziruobing/article/details/3919501在这篇博客中很详细的解答了这一问题
    • ...

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

    • 问题1:
    • 问题1解决方案:
    • 问题2:XXXXXX
    • 问题2解决方案:XXXXXX
    • ...

    代码托http://git.oschina.net/管

    上周考试错题总结

    下面哪些Linux命令可以ASCII码和16进制单字节方法输出Hello.java的内容?(BC)
    A .od -b -tx1 Hello.java

    B .od -tcx1 Hello.java

    C .od -tc -tx1 Hello.java

    D .od -tbx1 Hello.java

    JDK8 中新时间API中,用于度量时间的类有(BC)
    A .Instant

    B .Duratio

    C .Period

    D .LocalDateTime

    分析此题由于看教材时仍然不够仔细,LocalDate的plusDays()、plusMonths()只是时间运算的一些常用指定方法,Duration类可用于计量天、时、分、秒的时间差,Period类可用于计算年、月、星期、日 、日期差

    When applied to instance variables, the ________________ visibility modifier enforces encapsulation(当应用到实例变量时,____可见性修饰符强制执行封装).(D)
    A .static

    B .final

    C .public

    D .private

    E .none of the above(以上都不是)

    分析:私有可见性修饰符防范不适当的数据访问,因此促进封装。选择a和b是不可见性修饰符,选择c是一个可见性修饰符,允许公众访问一个对象的数据,这违背了封装的原则。

    An object can be thought of as a blueprint for a set of classes(对象被认为是类集合的蓝图).(B)
    A .true

    B .false

    分析:一个类可以被认为是一个蓝图一组对象,而不是相反。
    vi中哪条命令是不保存强制退出?
    答案:q!此外:wq 是保存退出。 !表示强制。
    JDK8中的Lambda表达式有以下好处:
    A .
    消除重复性
    B .
    提高性能
    C .
    提高安全性
    D .
    改善可读性
    答案:A、D,对12章的内容,没有足够的了解。
    When applied to instance variables, the ________________ visibility modifier enforces encapsulation(当应用到实例变量时,_可见性修饰符强制执行封装).
    A .
    static
    B .
    final
    C .
    public
    D .
    private
    E .
    none of the above(以上都不是)
    答案:D,专用的可见性修饰符防止不当的数据访问,因此促进封装。选择a和b不是可见性修饰符,而选择c是允许公众访问对象数据的可见性修饰符,这违反了封装的原则。
    Which of the following method headers is most likely a header for a mutator method?(以下哪个方法头部最有可能是设值方法的头部?)
    A .
    public int getAge()
    B .
    public double computeSalary()
    C .
    public Person()
    D .
    public void setAge(int newAge)
    E .
    none of these are headers for a mutator method(以上均不是设值方法的头部)
    答案:D,调整器是更改实例变量的值的方法,通常被称为setter。因此,选择d是正确的答案。选择a是访问者方法的标题的示例,通常称为“getter”。"选择c是构造函数,选择b是类方法."。
    A method that has multiple definitions is an __________________ method(具有多重定义的方法称为方法
    ).
    A .
    overloaded(重载)
    B .
    overridden(重写)
    C .
    overlooked(忽略)
    D .
    overclocked(超频)
    E .
    none of the above(以上均不是)
    答案:A,具有多个定义的方法是重载方法。重载方法的版本根据其参数的数量、类型和顺序来区分。重写的方法是在继承层次结构中后期重新定义的方法。稍后将更详细地研究它们。选择c和d不是Java中的方法类型。
    When an object is passed to a method, the actual and formal parameters become aliases(当把对象传递给方法时,实参和形参互为别名).
    A .
    true
    B .
    false
    答案:A,实际参数是发送到该方法的基准。方法定义中使用了正式参数。当对象发送到一个方法时,这两个值都是引用,它们成为彼此的别名。

    结对及互评

    评分标准

    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
      • ...
    • 代码中值得学习的或问题:

      • 备注一定要清晰
      • 学会注释代码
      • ...
    • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

    • 参考示例

    点评过的同学博客和代码

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

    习惯了看完题目就编写代码,写完总是很多问题,改很久甚至有很多时候都改不出来。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20

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

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

    • 计划学习时间:14小时

    • 实际学习时间:19小时

    • 改进情况:有进步

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

    参考资料

  • 相关阅读:
    四种访问权限修饰符在工作中的常见用法
    大数据(hadoop,hive,hbase,spark,flume等)各技术间的关系
    docker+dubbo的一些注意事项
    mysql的索引介绍
    基于dubbo的微服务的自我看法
    Kubernetes(K8S)集群在centos7.4下创建
    自我反省一年多
    淘淘商城
    SpringMVC的随笔3
    ARM(LS1046A)模块及XC7Z045模块调试记录
  • 原文地址:https://www.cnblogs.com/hpl20155329/p/6719808.html
Copyright © 2020-2023  润新知