20155222 2016-2017-2 《Java程序设计》第8周学习总结
20155222 2016-2017-2 《Java程序設(shè)計》第8周學(xué)習(xí)總結(jié)
教材學(xué)習(xí)內(nèi)容總結(jié)
Java NIO(New IO)是一個可以替代標(biāo)準Java IO API的IO API(從Java 1.4開始),Java NIO提供了與標(biāo)準IO不同的IO工作方式。
Java NIO: Channels and Buffers(通道和緩沖區(qū))
標(biāo)準的IO基于字節(jié)流和字符流進行操作的,而NIO是基于通道(Channel)和緩沖區(qū)(Buffer)進行操作,數(shù)據(jù)總是從通道讀取到緩沖區(qū)中,或者從緩沖區(qū)寫入到通道中。JDK 1.4中引入的日志API,能夠捕獲很多錯誤信息,比如:設(shè)置錯誤、性能瓶頸、安全破壞、程序或平臺小問題等。這些API提供的日志非常適用于各種不同使用者的分析,包括:外出服務(wù)工程師,軟件開發(fā)人員,參與客戶管理和維護的系統(tǒng)管理員。
教材學(xué)習(xí)中的問題和解決過程
- IO與NIO有何區(qū)別?
面向流與面向緩沖
Java NIO和IO之間第一個最大的區(qū)別是,IO是面向流的,NIO是面向緩沖區(qū)的。 Java IO面向流意味著每次從流中讀一個或多個字節(jié),直至讀取所有字節(jié),它們沒有被緩存在任何地方。此外,它不能前后移動流中的數(shù)據(jù)。如果需要前后移動從流中讀取的數(shù)據(jù),需要先將它緩存到一個緩沖區(qū)。 Java NIO的緩沖導(dǎo)向方法略有不同。數(shù)據(jù)讀取到一個它稍后處理的緩沖區(qū),需要時可在緩沖區(qū)中前后移動。這就增加了處理過程中的靈活性。但是,還需要檢查是否該緩沖區(qū)中包含所有您需要處理的數(shù)據(jù)。而且,需確保當(dāng)更多的數(shù)據(jù)讀入緩沖區(qū)時,不要覆蓋緩沖區(qū)里尚未處理的數(shù)據(jù)。
阻塞與非阻塞IO
Java IO的各種流是阻塞的。這意味著,當(dāng)一個線程調(diào)用read() 或 write()時,該線程被阻塞,直到有一些數(shù)據(jù)被讀取,或數(shù)據(jù)完全寫入。該線程在此期間不能再干任何事情了。 Java NIO的非阻塞模式,使一個線程從某通道發(fā)送請求讀取數(shù)據(jù),但是它僅能得到目前可用的數(shù)據(jù),如果目前沒有數(shù)據(jù)可用時,就什么都不會獲取。而不是保持線程阻塞,所以直至數(shù)據(jù)變的可以讀取之前,該線程可以繼續(xù)做其他的事情。 非阻塞寫也是如此。一個線程請求寫入一些數(shù)據(jù)到某通道,但不需要等待它完全寫入,這個線程同時可以去做別的事情。 線程通常將非阻塞IO的空閑時間用于在其它通道上執(zhí)行IO操作,所以一個單獨的線程現(xiàn)在可以管理多個輸入和輸出通道(channel)。
代碼調(diào)試中的問題和解決過程
-如何使用NIO讀取數(shù)據(jù)。
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(); // 創(chuàng)建緩沖區(qū) ByteBuffer buffer = ByteBuffer.allocate(1024); // 讀取數(shù)據(jù)到緩沖區(qū) fc.read(buffer); buffer.flip(); while (buffer.remaining()>0) { byte b = buffer.get(); System.out.print(((char)b)); } fin.close(); } }代碼托管
上周考試錯題總結(jié)
- 下面哪些Linux 命令可以ASCII碼和16進制單字節(jié)方法輸出Hello.java的內(nèi)容?
od -tcx1 Hello.java
od -tc -tx1 Hello.java
- JDK8中定義的通用函數(shù)接口,從行為上分為()類型:
Consumer
Function
Predicate
Supplier
When applied to instance variables, the ________________ visibility modifier enforces encapsulation(當(dāng)應(yīng)用到實例變量時,____可見性修飾符強制執(zhí)行封裝).:
private
__________________ parameters are the values that are used when calling a method(___參數(shù)是調(diào)用方法時傳給方法的值).:
actual(實際參數(shù))
What is the output of the following code?(下面代碼的運行結(jié)果是?)
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?(下面代碼的運行結(jié)果是?)
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.)針對下面的代碼,()中應(yīng)填入哪個選項?
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()
學(xué)習(xí)進度條
| 目標(biāo) | 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 |
嘗試一下記錄「計劃學(xué)習(xí)時間」和「實際學(xué)習(xí)時間」,到期末看看能不能改進自己的計劃能力。這個工作學(xué)習(xí)中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓(xùn)練次數(shù)多了,X、Y就接近了。
參考:軟件工程軟件的估計為什么這么難,軟件工程 估計方法
計劃學(xué)習(xí)時間:20小時
實際學(xué)習(xí)時間:5小時
改進情況:
有空多看看現(xiàn)代軟件工程 課件 軟件工程師能力自我評價表
參考資料
Java學(xué)習(xí)筆記(第8版)
- 《Java學(xué)習(xí)筆記(第8版)》學(xué)習(xí)指導(dǎo)
...
轉(zhuǎn)載于:https://www.cnblogs.com/20155222lzj/p/6720163.html
總結(jié)
以上是生活随笔為你收集整理的20155222 2016-2017-2 《Java程序设计》第8周学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MOSS点滴(2):自定义Applica
- 下一篇: Java第五次作业--面向对象高级特性(