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

教材学习内容总结

  • 在NIO中有几个比较关键的概念:Channel(通道),Buffer(缓冲区),Selector(选择器)。

  • 这些是Java NIO中最重要的通道的实现:

    FileChannel

    DatagramChannel

    SocketChannel

    ServerSocketChannel

  • 使用Buffer读写数据一般遵循以下四个步骤:

    写入数据到Buffer

    调用flip()方法

    从Buffer中读取数据

    调用clear()方法或者compact()方法

  • 为了理解Buffer的工作原理,需要熟悉它的三个属性:

    capacity

    position

    limit

  • capacity

作为一个内存块,Buffer有一个固定的大小值,也叫“capacity”.你只能往里写capacity个byte、long,char等类型。一旦Buffer满了,需要将其清空(通过读数据或者清除数据)才能继续写数据往里写数据。

  • position

当你写数据到Buffer中时,position表示当前的位置。初始的position值为0.当一个byte、long等数据写到Buffer后, position会向前移动到下一个可插入数据的Buffer单元。position最大可为capacity – 1.

当读取数据时,也是从某个特定位置读。当将Buffer从写模式切换到读模式,position会被重置为0. 当从Buffer的position处读取数据时,position向前移动到下一个可读的位置。

  • limit

在写模式下,Buffer的limit表示你最多能往Buffer里写多少数据。 写模式下,limit等于Buffer的capacity。

当切换Buffer到读模式时, limit表示你最多能读到多少数据。因此,当切换Buffer到读模式时,limit会被设置成写模式下的position值。换句话说,你能读到之前写入的所有数据(limit被设置成已写数据的数量,这个值在写模式下就是position)

  • 从Buffer中读取数据有两种方式:

    从Buffer读取数据到Channel。

    使用get()方法从Buffer中读取数据。

  • Path

    这个类在java.nio.file,在NIO里对文件系统进行了进一步的抽象。 是用来替换原来的java.io.File。其中 FileSystems, Files, Path, PathMatcher 成为一个体系。

  • 在java7里File和Path可以相互转换: File.toPath(), Path.toFile()

    原来的File里包含了文件引用和文件,在Path系统里, Path里是文件的引用,而文件操作都放到了Files的静态方法里。这种方式究竟好不好用,我没啥感觉。不过我跟人偏向于把操作放到另外一个类里面。

  • java.nio.file.attribute包下的类提供了获取文件属性的类,针对不同操作系统使用的类不太一样,当然也有所有操作系统通用的属性。

属性分类有一些几种:

BasicFileAttributeView

DosFileAttributeView

PosixFileAttributeView

FileOwnerAttributeView

AclFileAttributeView

UserDefinedFileAttributeView

  • 使用ResourceBundle时,如何根据基础名称取得对应的信息文档:

    1.使用指定的Locale对象取得信息文档。

    2.使用Locale。getDefault()取得的对象取得信息文档。

    3.使用基础名称取得信息文档。

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

  • 问题1:如果api文档查不到某个类的用法 我们应该去哪里查询
  • 问题1解决方案:java api一般不都是一些代码示例加说明吗?http://docs.oracle.com/javase/7/docs/api/ 这个是javase7的api

    百度java api 查到的就是啊,可能有的没有中文,这个一个是可以上网留意有没有中文的,但是因为翻译问题,中文的api相对陈旧,所以建议提高自己的英文能力,阅读官方api

    第三方的类一般会写在源码里,或者实在github上,或者是写在wiki里。你在工程里添加响应的源码然后按ctrl+左键,查看源码是怎么写的就可以。

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

  • 问题1:

      		class MyClass<E>
    {
    public <T> MyClass(T t)
    {
    System.out.println("t参数的值为:" + t);
    }
    }
    public class GenericDiamondTest
    {
    public static void main(String[] args)
    {
    MyClass<String> mc1 = new MyClass<>(5);
    MyClass<String> mc2 = new <Integer> MyClass<String>(5); 2
    // MyClass<String> mc3 = new <Integer> MyClass<>(5); 3
    }
    }

2处MyClass到底是String还是Integer ,这么表示怎么理解?3处的代码为什么不对啊?

  • 问题1解决方案:2处,MyClass当然是String,只不过它的构造函数参数Integer。

    3处,错误是,当调用new时,不能用来显示指定类型信息,这个由编译器推导。

代码托管



上周考试错题总结

  • 下面哪些Linux 命令可以ASCII码和16进制单字节方法输出Hello.java的内容?

A .

od -b -tx1 Hello.java

B .

od -tcx1 Hello.java

C .

od -tc -tx1 Hello.java

D .

od -tbx1 Hello.java

正确答案: B C

  • JDK8中的Lambda表达式有以下好处:

    A .

    消除重复性

    B .

    提高性能

    C .

    提高安全性

    D .

    改善可读性

正确答案: A D

  • JDK8 中新时间API中,用于度量时间的类有()

A .

Instant

B .

Duration

C .

Period

D .

LocalDateTime

正确答案: B C

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

A .

static

B .

final

C .

public

D .

private

E .

none of the above(以上都不是)

正确答案: D

  • __________________ parameters are the values that are used when calling a method(___参数是调用方法时传给方法的值).

A .

formal(形式参数)

B .

actual(实际参数)

C .

useful(有用的参数)

D .

informal(非正式参数)

E .

none of the above(以上都不是)

正确答案: B

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

A .

true

B .

false

正确答案: B

  • Which of the following objects could contain the information “eastern standard time”?(下面哪些类的对象会包含“东部标准时间”的信息)

    (Choose all that apply.)

A .

Instant

B .

LocalDate

C .

LocalDateTime

D .

LocalTime

E .

ZonedDateTime

正确答案: E

  • Given the following, which answers can correctly fill in the blank? (Choose all that apply.)针对下面的代码,()中应填入哪个选项?

    LocalDate date = LocalDate.now();

    LocalTime time = LocalTime.now();

    LocalDateTime dateTime = LocalDateTime.now();

    ZoneId zoneId = ZoneId.systemDefault();

    ZonedDateTime zonedDateTime = ZonedDateTime.of(dateTime, zoneId);

    long epochSeconds = 0;

    Instant instant = ( );

A .

Instant.now()

B .

Instant.ofEpochSecond(epochSeconds)

C .

date.toInstant()

D .

dateTime.toInstant()

E .

time.toInstant()

F .

zonedDateTime.toInstant()

正确答案: F

  • What is the output of the following code?(下面代码的运行结果是?)

    LocalDate date = LocalDate.of(2018, Month.APRIL, 40);

    System.out.println(date.getYear() + " " + date.getMonth()
  • " "+ date.getDayOfMonth());

A .

2018 APRIL 4

B .

2018 APRIL 30

C .

2018 MAY 10

D .

Another date

E .

The code does not compile.

F .

A runtime exception is thrown.

正确答案: F

结对及互评

评分标准

  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小时
第一周 20/20 2/2 20/20
第二周 140/160 2/4 18/38
第三周 113/273 1/5 20/58
第四周 335/608 1/6 20/78
第五周 1159/1408 1/7 30/108
第六周 452/1860 1/8 20/128
第七周 343/2203 1/9 30/158
第八周 448/2651 1/10 20/178

20155302 2016-2017-2 《Java程序设计》第八周学习总结的更多相关文章

  1. 201521123027 <java程序设计>第八周学习总结

    1.本周学习总结 1.1思维导图 2.书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 总结:判断List中是否存在指定元素,需要用到equals方法,若存在就用remove进 ...

  2. 20155302 2016-2017-2 《Java程序设计》第九周学习总结

    20155302 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 基本数据库操作相关的JDBC接口或类是位于java.sql包中.在程序中要取得数据库联机,我 ...

  3. 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结

    <面向对象程序设计Java>第八周学习总结   项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...

  4. 201871010106-丁宣元 《面向对象程序设计(java)》第八周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第八周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nwn ...

  5. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  6. 20155328 2016-2017-2 《Java程序设计》第九周学习总结

    20155328 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 16.1 JDBC入门 JDBC是Java联机数据库的标准规范,定义一组标准类与接口,应用程 ...

  7. 20155216 2016-2017-2 《Java程序设计》第九周学习总结

    20155216 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC架构 JDBC API的使用 JDBC连接数据库 1.导入JDBC包: 添加impo ...

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

    20155320 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ...

  9. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  10. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

随机推荐

  1. Delphi 有关的网址

    1.  博客园 (张志峰)    http://www.cnblogs.com/zhangzhifeng/ 2. CSDN  Delphi论坛        https://bbs.csdn.net/ ...

  2. 深入浅出Docker(三):Docker开源之路

    背景 Docker从一开始的概念阶段就致力于使用开源驱动的方式来发展,它的成功缘于国外成熟的开源文化氛围,以及可借鉴的社区运营经验.通过本文详细的介绍,让大家可以全面了解一个项目亦或者一项技术是如何通 ...

  3. 超级小的web手势库AlloyFinger

    针对多点触控设备编程的Web手势组件,快速帮助你的web程序增加手势支持,也不用再担心click 300ms的延迟了.拥有两个版本,无依赖的独立版和react版本.除了Dom对象,也可监听Canvas ...

  4. c# Use NAudio Library to Convert MP3 audio into WAV audio(将Mp3格式转换成Wav格式)

    Have you been in need of converting mp3 audios to wav audios?  If so, the skill in this article prov ...

  5. Sql Server 关于列名带中括号"[]"的问题

    1.如果列名为数据库的关键字则自动加上中括号“[]” 例如[level] 2.如果列名中带有特殊符号.[date(a)] 数据存储的过程: 1.在添加数据的时候:要带有中括号,有必要在添加参数的时候不 ...

  6. mysql动态sql 整理多个字段

    原始表: 整理后的表: 方案一(动态sql): BEGIN #Routine body goes here... DECLARE v1 ); DECLARE v2 ); #DECLARE v3 VAR ...

  7. Python中协程Event()函数

    python线程的事件用于主线程控制其他线程的执行,事件主要提供了三个方法wait.clear.set 事件处理的机制:全局定义了一个“Flag”,如果“Flag”值为 False,那么当程序执行 e ...

  8. Python使用logging来记录日志

    #encoding:utf-8 import logging.config from logging.handlers import RotatingFileHandler import Config ...

  9. using the library to generate a dynamic SELECT or DELETE statement mysqlbaits xml配置文件 与 sql构造器 对比

    https://github.com/mybatis/mybatis-dynamic-sql MyBatis Dynamic SQL     What Is This? This library is ...

  10. Tickets---hdu1260 (简单dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260 题意就是有n个人排队买票,每个人需要的时间是a[i] (1=< i <=N),但是现 ...