Time of Update: 2018-07-28
當socketChannel為阻塞方式時(預設就是阻塞方式)read函數,不會返回0,阻塞方式的socketChannel,若沒有資料可讀,或者緩衝區滿了,就會阻塞,直到滿足讀的條件,所以一般阻塞方式的read是比較簡單的,不過阻塞方式的socketChannel的問題也是顯而易見的。這裡我結合基於NIO 寫ftp伺服器調試過程中碰到的問題,總結一下非阻塞情境下的read碰到的問題。注意:這裡的情境都是基於用戶端以阻塞socket的方式發送資料。 1、read什麼時候返回-1 read返回-
Time of Update: 2018-07-28
提及到Java進程在啟動並執行時候記憶體使用量情況,是很多初學者比較迷惑的地方,也就是我們在運行編譯好的.class檔案時jvm向作業系統申請的記憶體如何查看。 可以使用jdk內建的運行時系統參數描述類RunTime中的三個方法來查看
Time of Update: 2018-07-28
子曰:學而時習之,不亦樂乎。 java中有八種基礎資料型別 (Elementary Data Type),分別是: boolean(布爾型) byte(位元組型) char(位元組型) short(短整型) int(整型) long(長整型)
Time of Update: 2018-07-28
一、線索二叉樹原理 前面介紹二叉樹原理及特殊二叉樹文章中提到,二叉樹可以使用兩種儲存結構:順序儲存和二叉鏈表。在使用二叉鏈表的儲存結構的過程中,會存在大量的null 指標域,為了充分利用這些null 指標域,引申出了“線索二叉樹”。回顧一下二叉鏈表格儲存體結構,如下圖:
Time of Update: 2018-07-28
一、基礎資料型別 (Elementary Data Type)與其對應的封裝類之間的相互轉換 基礎資料型別 (Elementary Data Type)轉換為封裝類 1·直接賦值 (自動打包) Integer i=3; 2·使用封裝類的含參建構函式(執行個體化) Integer i=new Integer(3); 3·使用封裝類提供的valueOf()方法(靜態方法) Integer
Time of Update: 2018-07-28
Java下枚舉變數與其他資料類型的轉換 當使用enum定義一個枚舉類型時,實際上所定義的類型自動繼承了java.lang.Enum類。而每個被枚舉的成員實質就是一個枚舉類型的執行個體,他們預設都是public static final的。可以直接通過枚舉類型名直接使用它們,枚舉類型名,可以轉為一個數值,或作字元匹配的方法來識別類型,所以我們在寫枚舉類型的時候,可以簡單理解為一個個的串。 如下: public enum emOrder {
Time of Update: 2018-07-28
Java NIO開始支援scatter/gather,scatter/gather用於描述從Channel(譯者註:Channel在中文經常翻譯為通道)中讀取或者寫入到Channel的操作。 分散(scatter)從Channel中讀取是指在讀操作時將讀取的資料寫入多個buffer中。因此,Channel將從Channel中讀取的資料“分散(scatter)”到多個Buffer中。
Time of Update: 2018-07-28
我們日常使用的電腦主機,把cpu、記憶體、主板等等都封裝到機箱裡面去。假如沒有機箱的話的出現什麼問題,主機、主板全部都散落在一處,然後開機沒有開機按鈕,那麼需要我們直接操作接跳線才能把電腦開啟。這樣子的話假如操作不慎的話,會讓機器損壞危險,那麼假如用機箱封裝起來的話,那麼就不需要這樣子做了。體現了封裝的---安全特性。 你拿電腦去加記憶體,可以直接給電腦給維修的人,等他加好記憶體了之後。你拿到的還是那個機箱,裡面發生了怎樣子的變化你並不知道。封裝的第二個好處-將變化隔離。
Time of Update: 2018-07-28
01.盡量避免隨意使用靜態變數 當某個對象被定義為stataic變數所引用,那麼gc通常是不會回收這個對象所佔有的記憶體,如: 1: public class A{ 2: static B b = new B(); 3: }
Time of Update: 2018-07-28
之前使用Java IO實現了一個檔案傳送的小demo,今天打算採用java nio重寫一遍。 首先,用nio寫好檔案接收端後,採用原先的IO程式測試,發現並不存在問題。 接著,寫檔案發送端,ByteBuffer大小設定為1024,發送端分多次傳送檔案片段,在接受端組合形成檔案,近而寫入檔案系統。 程式寫好後: 1,用一個2K的檔案測試,發現並無問題 2,用一個44k的檔案測試,發現接收端只接受到23k的內容; 調試發現發送端中
Time of Update: 2018-07-28
5.不同通道channel之間傳輸資料 在Java的NIO中,如果兩個通道中有一個是FileChannel,那麼我們可以直接將資料從一個channel傳輸到另外一個channel中。兩個通道之間傳輸資料的方式有兩種,分別是: - transferFrom() - transferTo() 5.1 transferFrom() FileChannel
Time of Update: 2018-07-28
此題目在原數組中肯定是無法操作的,那麼我們就會想到用另外一個數組來輔助。 那麼問題來了。新數組的長度為多少是好呢。跟原數組一樣。但如果原數組中有0的話,這樣就沒法判斷了。 因為數組上沒值得話,預設為0。但是如果我們知道重複數的個數,那麼新數組的長度就很好定了。 public class ArrayTest{/*** @author 浪子-不回*/public static void main(String[] args) {// TODO Auto-generated method
Time of Update: 2018-07-28
public class Solution { /** * @param strs: A list of strings * @return: The longest common prefix */ public String longestCommonPrefix(String[] strs) { // write your code here if(strs.length==0){return
Time of Update: 2018-07-28
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。 轉載請註明出處:http://blog.csdn.net/ns_code/article/details/17526127 為了方便各位網友學習以及方便自己複習之用,將Java TCP/IP Socket編程系列內容按照由淺入深的學習順序總結如下,點擊相應的標題即可跳轉到對應的文章:
Time of Update: 2018-07-28
轉自: http://billben.iteye.com/blog/1872196 http://harrywu304.blog.163.com/blog/static/8456603201141611147777/ 可用的Mock Toolkit有許多,比較常見的有EasyMock, Jmock和JMockit等等,到底選哪個呢,Jmockit的官網上有個特性對比列表,很詳細: Feature
Time of Update: 2018-07-28
SPI的全名為Service Provider Interface.這個是針對廠商或者外掛程式的。一般來說對於未知的實現或者對擴充開放的系統,通常會把一些東西抽象出來,抽象的各個模組,往往有很多不同的實現方案,比如日誌模組的方案,xml解析模組、jdbc模組的方案等。這個可以通過我們的抽象Factory
Time of Update: 2018-07-28
bit:位,一個位元據0或1,是1bit byte:位元組,儲存空間的基本的單元,1byte=8bit 一個英文佔一個位元組,1字母=1byte=8bit 一個中文佔兩個位元組,1漢字=2byte=16bit byte:一個位元組(8位)(-128~127)(-2的7次方到2的7次方-1) short:兩個位元組(16位)(-32768~32767)(-2的15次方到2的15次方-1) int:四個位元組(32位)(一個字長)(-2147483648~2147483647
Time of Update: 2018-07-28
數組:相同類型的、用一個標識符名封裝到一起是一個對象序列或基本類型資料序列。 一維數組的聲明:1 int[ ] a1; 2 int a1[ ] 兩種格式含義一樣,第二種符合c和c++程式員的習慣。第一種或許更合理,表明類型是“一個int型數組”。 編譯器不允許指定數組的大小。聲明數組的時候不能指定其長度(元素的個數)如int a[5]; //非法。初始化的時候可以指定大小。
Time of Update: 2018-07-28
tiny6410中的部分硬體(串口、led、pwm蜂鳴器、adc等) 友善做了一個硬體庫friendlyarm-hardware.so 如果android應用程式想要訪問以上硬體時,就要使用java的JNI技術 1、JNI的全稱為:Java Native Interface,java本地介面,設計目的是與C/C++實現本地互動,在java辦不到的或者使用方便的程式碼片段調用。 2、JNI的編寫步驟 a、編寫帶有native聲明的方法的java類
Time of Update: 2018-07-28
java 在JDK1.5中引入一個新的並發包java.util.concurrent 該包專門為java處理並發而書寫。 在java中熟悉的使用多線程的方式為兩種。繼續Thread類,實現Runnale。兩種方式簡單方便。 在Jdk1.5之後其實有第三種方式實現方式,採用並發包中的 Callable介面 FuruteTask類 以及 ExecutorService介面。 說新的實現方式之前先來說討論一下傳統的java執行過程