文件系統能夠包含3種類型的對象:文件、目錄和符號連接。
一個文件或路徑是一個java.io.File來表示的,java7以後有了java.nio.file.Path接口。html
文件操做:java
文本文件 (readAllLines,write)git
Files類中的read和write方法只是適用於比較小的文件。比較大的文件,須要使用流來代替。算法
seekableByteChannerl須要使用byteBuffer類。api
ByteBuffer提供了兩個put方法來寫一個字節
還提供了putXXX,getXXX方法來讀寫緩存緩存
把字節序列恢復爲對象的過程稱爲對象的反序列化。安全
只有實現了Serializable和Externalizable接口的類的對象才能被序列化。Externalizable接口繼承自 Serializable接口,實現Externalizable接口的類徹底由自身來控制序列化的行爲,而僅實現Serializable接口的類能夠 採用默認的序列化方式 。服務器
在網絡上傳送對象的字節序列。網絡
當兩個進程在進行遠程通訊時,彼此能夠發送各類類型的數據。不管是何種類型的數據,都會以二進制序列的形式在網絡上傳送。發送方須要把這個Java對象轉換爲字節序列,才能在網絡上傳送;接收方則須要把字節序列再恢復爲Java對象。session
首先來區分一下線程與併發:
Thread狀態
Java中線程的建立常見有如三種基本形式:
1.繼承Thread類,重寫該類的run()方法。
2.實現Runnable接口,並重寫該接口的run()方法,該run()方法一樣是線程執行體,建立Runnable實現類的實例,並以此實例做爲Thread類的target來建立Thread對象,該Thread對象纔是真正的線程對象。
3.使用Callable和Future接口建立線程。具體是建立Callable接口的實現類,並實現clall()方法。並使用FutureTask類來包裝Callable實現類的對象,且以此FutureTask對象做爲Thread對象的target來建立線程。
同步
synchronized的用法
public class Thread1 implements Runnable { Object lock; public void run() { synchronized(lock){ do something } } }
public class Thread1 implements Runnable { public synchronized void run() { ..do something } }
併發
Callable
一個Callable是一個任務,它返回一個值,也可能拋出一個異常。
future模式:併發模式的一種,能夠有兩種形式,即無阻塞和阻塞,分別是isDone和get。其中Future對象用來存放該線程的返回值以及狀態
ExecutorService e = Executors.newFixedThreadPool(3); //submit方法有多重參數版本,及支持callable也可以支持runnable接口類型. Future future = e.submit(new myCallable()); future.isDone() //return true,false 無阻塞 future.get() // return 返回值,阻塞直到該線程運行結束
高級多線程控制類
lock: 在java.util.concurrent包內。共有三個實現:
ReentrantLockReentrantLock 可重入的意義在於持有鎖的線程能夠繼續持有,而且要釋放對等的次數後才真正釋放該鎖。
4.容器類
- BlockingQueue阻塞隊列。該類是java.util.concurrent包下的重要類,經過對Queue的學習能夠得知,這個queue是單向隊列,能夠在隊列頭添加元素和在隊尾刪除或取出元素。相似於一個管道,特別適用於先進先出策略的一些應用場景。普通的queue接口主要實現有PriorityQueue(優先隊列).
- ConcurrentHashMap高效的線程安全哈希map。請對比hashTable , concurrentHashMap, HashMap。
URL 解析:
import java.net.*; import java.io.*; public class URLDemo { public static void main(String [] args) { try { URL url = new URL("http://www.runoob.com/index.html?language=cn#j2se"); System.out.println("URL 爲:" + url.toString()); System.out.println("協議爲:" + url.getProtocol()); System.out.println("驗證信息:" + url.getAuthority()); System.out.println("文件名及請求參數:" + url.getFile()); System.out.println("主機名:" + url.getHost()); System.out.println("路徑:" + url.getPath()); System.out.println("端口:" + url.getPort()); System.out.println("默認端口:" + url.getDefaultPort()); System.out.println("請求參數:" + url.getQuery()); System.out.println("定位位置:" + url.getRef()); }catch(IOException e) { e.printStackTrace(); } } }
編譯運行結果以下:
URL 爲:http://www.runoob.com/index.html?language=cn#j2se
協議爲:http
驗證信息:www.runoob.com
文件名及請求參數:/index.html?language=cn
主機名:www.runoob.com
路徑:/index.html
端口:-1
默認端口:80
請求參數:language=cn
定位位置:j2se
URLConnection 方法列表以下:
public URL getURL() 返回 URLConnection 對象鏈接的URL
客戶端請求與服務器進行鏈接的時候,根據服務器的域名或者IP地址,加上端口號,打開一個套接字。當服務器接受鏈接後,服務器和客戶端之間的通訊就像輸入輸出流同樣進行操做。
解決方案:lock更靈活,能夠自由定義多把鎖的枷鎖解鎖順序(synchronized要按照先加的後解順序)
提供多種加鎖方案,lock 阻塞式, trylock 無阻塞式, lockInterruptily 可打斷式,還有trylock的帶超時時間版本。和Condition類的結合性能更高。
問題1解決方案:私鑰不保存在本地。
https://gitee.com/shamBryce/JAVA
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
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 150/200 | 2/2 | 20/20 | |
第二週 | 200/400 | 1/3 | 20/40 | |
第三週 | 100/500 | 1/4 | 10/50 | |
第四周 | 200/700 | 1/5 | 15/65 | |
第五週 | 1400/2100 | 1/5 | 20/85 |
計劃學習時間:15小時
實際學習時間:20小時