zoukankan      html  css  js  c++  java
  • 20155320 2016-2017-2《Java程序设计》第八周学习总结

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

    教材学习内容总结

    NIO与NIO2

    Channel继承框架

    • 想要取得Channel的操作对象,可以使用Channels类,它定义了静态方法newChannel(),可以让你从InputStream、OutputStream分别建立ReadableByteChannel、WritableByteChannel,有些InputStream、OutputStream实例本身也有方法可以取得Channel实例,例如:FileInputSteam、FileOutputStream都有个getChannel()方法可以分别取得FileChannel实例。

    Buffer继承架构

    • Buffer的直接子类们都有个allocate()静态方法,可以让你指定Buffer容量(Capacity),如果想取得Buffer内部的阵列,可以使用array()方法,如果有个数组想要转为某个Buffer子类实例,每个Buffer子类实例都有wrap()静态方法可以提供操作。
    • Buffer是容器,填装的数据不会超过它的容量,容量大小可以使用capacity()方法取得,实际可读取或写入的数据界限(Limit)索引值可以由limit()方法得知或设定,下一个可读取数据的位置(Position)索引值,可以使用position()方法得知或设定。

    NIO2

    • NIO2文件系统API提供一组标准接口与类,应用程序开发者只要基于这些标准接口与类进行文件系统操作,底层实际如何进行文件系统操作,是由文件系统提供者负责。

    通用API

    日志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实例。

    规则表示式简介

    • 看到贪婪量词,比较器会将剩余文字整个吃掉,再逐步吐出,结果是贪婪量词会尽可能地找出长度最长的符合文字 在贪婪量词后加上?将会成为逐步量词,逐步量词会尽可能的找出长度最短的符合文字
    • replaceAll会将符合规则表示式的字符串取代后返回新字符串
    • Pattern与Matcher取得Pattern实例后,可以使用split()方法将指定字符串进行切割,效果与String的split()方法相似,Matcher也有replaceAll()方法,与String的replaceAll()方法相似
    • StringJoiner、Arrays新增APIstring的join方法可以用来连接字符串,Arrays类也新增了一些重载的方法
    • Stream相关APIstream的range方法可以产生一个整数范围,java.util.Random类可以用来产生随机数

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

    • 问题1:NIO与IO的区别
    • 问题1解决方案:
    IO NIO
    面向流 面向缓冲
    阻塞IO 非阻塞IO
    选择器

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

    • 问题1:在运行代码Hello时出现

    • 问题1解决方案:我起初以为是系统没有找到我的文件,我在文件名前面加上路径,但是还是不行,查阅了一下百度
      ,我把这个放在了我的src文件夹下就成功运行了

    代码托管

    上周考试错题总结

    • 下面哪些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

    分析:一个类可以被认为是一个蓝图一组对象,而不是相反。

    结对及互评

    20155326刘美岑

    评分标准

    条理清晰,排版精美。
    基于评分标准,我给本博客打分:10分。得分情况如下:
    正确使用Markdown语法:+1
    模板中的要素齐全:+1
    教材学习中的问题和解决过程:+2
    本周有效代码超过300分行:+2
    感想,体会不假大空:+1
    排版精美:+1
    进度条中记录学习时间与改进情况:+1
    错题学习深入:+1

    点评过的同学博客和代码

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

    本周主要学习NIO、NIO2以及一下API,我觉得通过比较前几章学习的IO与新IO学习起来好像更好,十五章的API学习感觉要与继承架构相结合,理解和运用起来更容易。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 15篇 400小时
    第一周 20/20 1/4 20/20 安装了JDK及IDEA
    第二周 144/164 1/5 18/38 学习了java语言的基本语法
    第三周 447/567 1/6 20/ 58 掌握了一些有关对象和封装的内容
    第四周 875/ 1442 1/7 23/81 学习了解了继承、接口和多态的相关问题
    第五周 775/2250 1/8 25/106 学习了异常处理以及Collection与Map相关的内容
    第六周 487/ 2706 1/9 22/128 学习了输入输出
    第七周 529/3127 2/11 20/148 学习了时间与日期
    第八周 417/ 3491 1/12 20/168 学习了NIO与NIO2和通用API

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

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

    • 计划学习时间:20小时

    • 实际学习时间:20小时

    • 改进情况:本周有两章内容,稍微多分配了点时间

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

    参考资料

  • 相关阅读:
    codeforces 589G G. Hiring(树状数组+二分)
    树状数组的小总结
    virtualenv
    Redis备份与恢复
    Linux 网站相关
    MySQL文章参考
    动态执行表不可访问,本会话的自动统计被禁止 。 在执行菜单里你可以禁止统计,或在v$session,v$sesstat 和 v$statname 表里获得select权限
    app已损坏,打不开。你应该将它移到废纸篓
    macos系统用virtualbox安装Linux系统无法设
    Hadoop 分布式部署HDFS-hadoop用户部署
  • 原文地址:https://www.cnblogs.com/ljq1997/p/6711134.html
Copyright © 2011-2022 走看看