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

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

    教材学习内容总结

    • Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。
      Java NIO: Channels and Buffers(通道和缓冲区)
      标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。

    • JDK 1.4中引入的日志API,能够捕获很多错误信息,比如:设置错误、性能瓶颈、安全破坏、程序或平台小问题等。这些API提供的日志非常适用于各种不同使用者的分析,包括:外出服务工程师,软件开发人员,参与客户管理和维护的系统管理员。

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

    • IO与NIO有何区别?
      面向流与面向缓冲
      Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。 Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。
      阻塞与非阻塞IO
      Java IO的各种流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了。 Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取。而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。 非阻塞写也是如此。一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。 线程通常将非阻塞IO的空闲时间用于在其它通道上执行IO操作,所以一个单独的线程现在可以管理多个输入和输出通道(channel)。

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

    -如何使用NIO读取数据。

    	import java.io.*;  
    	import java.nio.*;  
    	import java.nio.channels.*; 
    	
    	public class Program {  
        static public void main( String args[] ) throws Exception {  
            FileInputStream fin = new FileInputStream("c:\test.txt");  
              
            // 获取通道  
            FileChannel fc = fin.getChannel();  
              
            // 创建缓冲区  
            ByteBuffer buffer = ByteBuffer.allocate(1024);  
              
            // 读取数据到缓冲区  
            fc.read(buffer);  
              
            buffer.flip();  
              
            while (buffer.remaining()>0) {  
                byte b = buffer.get();  
                System.out.print(((char)b));  
            }  
              
            fin.close();  
        }  
    }  
    

    代码托管

    上周考试错题总结

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

    od -tcx1 Hello.java
    od -tc -tx1 Hello.java

    • JDK8中定义的通用函数接口,从行为上分为()类型:

    Consumer
    Function
    Predicate
    Supplier

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

      private

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

      actual(实际参数)

    • 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 runtime exception is thrown.

    • What is the output of the following code?(下面代码的运行结果是?)
      LocalDate date = LocalDate.of(2018, Month.APRIL, 30);
      date.plusDays(2);
      date.plusYears(3);
      System.out.println(date.getYear() + " "+ date.getMonth() + " "+ date.getDayOfMonth());

      2018 APRIL 30

    • 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 = ( );

      zonedDateTime.toInstant()

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 9/9 3/6 10/10
    第二周 40/49 1/7 5/15
    第三周 49/99 1/8 10/25
    第四周 202/301 1/9 15/40
    第五周 170/471 1/10 5/45
    第六周 115/520 1/11 5/50
    第七周 18/538 1/12 5/55
    第八周 28/545 1/13 5/60

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

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

    参考资料

  • 相关阅读:
    使用select2插件并添加拼音首字母检索
    sql id 或使用nolock
    .net 开源组件
    EF 创建数据库的策略 codefist加快效率!【not oringin!】
    个人拾遗!数组的拷贝等
    编程拾遗:集合类型的函数,返回值,如果没有,就返回默认集合new,或者 default(T)好一些。
    C# datatable to list
    npoi导出excel 导出List<T>
    display:inline、block、inline-block的区别 摘】
    ie下,jquery为动态添加的节点添加事件,用live
  • 原文地址:https://www.cnblogs.com/20155222lzj/p/6720163.html
Copyright © 2011-2022 走看看