原创 Java線程的學習_ThreadLocal類

Java爲線程安全提供了一些工具類,其中包括了ThreadLocal類。ThreadLocal類代表一個線程局部變量,通過把數據放在ThreadLocal中就可以讓每個線程創建一個該變量的副本,從而避免併發訪問的線程安全問題。 Threa

原创 算法_交換

交換兩個數,不使用其他變量。 方法一: public void swap(int a, int b){ a = a + b; b = a - b; a = a - b; } 方法二: public void sw

原创 Android學習_使用Adapter創建ListView

Adapter本身只是一個接口,它派生了ListAdapter和SpinnerAdapter兩個子接口。 Adapter常用的實現類如下: –ArrayAdapter:簡單、易用的Adapter,通常用於將數組或List集合的多個值包裝

原创 Android學習_6.0以上系統的運行時權限

6.0及以上系統在使用危險權限時都必須進行運行時權限處理。代碼獲取SD卡讀寫權限。 //獲取權限 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.pe

原创 Java網絡編程_基於UDP協議的網絡編程

UDP協議是一種不可靠的網絡協議,它在通信實例的兩端各建立一個Socket,但在兩個Socket之間並沒有虛擬鏈路,這兩個Socket只是發送、接收數據報的對象。Java提供了DatagramSocket對象作爲基於UDP協議的Socke

原创 Java網絡編程_半關閉的Socket

在IO流中,如果要表示輸出已經結束,可以通過關閉輸出流來實現。但在不能通過關閉輸出流來表示輸出已經結束,因爲當關閉輸出流時,該輸出流對應的Socket也將隨之關閉,這樣導致程序無法再從該Socket的輸入流讀取數據。 在這種情況下,Soc

原创 Java網絡編程_基於TCP協議的網絡編程(三)

記錄用戶信息 增加聊天室功能: 1.可以看到是誰發的消息。 2.實現私聊功能。 實現方法: 對於第一個功能,可以使用Map集合來保存用戶信息 第二個功能可以在客戶端發送不同消息時,對這些消息進行處理,比如在消息內容前後添加一些特殊

原创 Java網絡編程_使用MulticastSocket實現多點廣播

DatagramSocket只允許數據報發送給指定的目標地址,而MulticastSocket可以將數據報以廣播方式發送到多個客戶端。 MulticastSocket的原理是IP多點廣播,其思想是設置一組特殊網絡地址作爲多點廣播地址,每一

原创 Java基礎——Lambda表達式

Lambda表達式是Java8的重要更新。Lambda表達式支持將代碼塊作爲方法參數,Lambda表達式允許使用更簡潔的代碼來創建只有一個抽象方法的接口(這種接口被稱爲函數式接口)的實例。 首先,我們先使用匿名內部類來寫一個例子,然後對比

原创 Java網絡編程_傳輸實體類對象

實現一個登陸功能,在Socket連接以後,客戶端輸入賬戶,密碼傳輸給服務端。現在把賬戶和密碼作爲一個用戶類傳輸給服務端,服務端直接讀取這個類。 實現過程: 首先建立一個用戶類,該用戶類需要序列化,序列化只需繼承Serializable即

原创 Java網絡編程_基於TCP協議的網絡編程(一)

TCP/IP通信協議是一種可靠的網絡協議,它在通信的兩端各建立一個Socket,從而在通信的兩端之間形成網絡虛擬鏈路。一旦建立了虛擬網絡鏈路,兩端的程序就可以通過虛擬鏈路進行通信。Java對基於TCP協議的網絡通信提供了良好的封裝,Jav

原创 Java網絡編程_基本網絡支持(二)

URL、URLConnection和URLPermission URL對象代表統一資源定位器,它是對指向互聯網“資源”的指針。資源可以是簡單的文件或目錄,也可以是對更爲複雜對象的引用,例如對數據庫或搜索引擎的查詢。在通常情況下,URL可以

原创 Java網絡編程_基於TCP協議的網絡編程(二)

加入多線程 實現一個命令行界面的C/S聊天室應用,服務器端應該包含多個線程,每個Socket對應一個線程,該線程負責讀取Socket對應輸入流的數據(從客戶端發送過來的數據),並將讀到的數據向每個Socket輸出流發送一次(將一個客戶端發