国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

字符編碼/Java字符流與字節流/Buffer原理/對象序列化

Scorpion / 1127人閱讀

摘要:中一個類型采用編碼,大小占兩個字節,可以表示一個中文字符中類型采用字符集,無法表示一個中文字符緩沖區實現原理字節流本質上是直接與慢速存儲設備進行,速度較慢。從字節流中恢復一個對象,稱之為對象反序列化。

字符編碼/Java字符流與字節流/Buffer原理/對象序列化 聲明

文章均為本人技術筆記,轉載請注明出處https://segmentfault.com/u/yzwall

字符編碼與編碼標準

字符集:收入標準中的符號集合成為字符集

編碼:將給定字符轉換成底層存儲字節的過程

ASCII編碼

ASCII只支持英文編碼,不支持其他語言;ASCII編碼使用一個字節編碼一個字符,一共規定了128個字符,每個字符只占用一個字節的后7位,第1位統一為0

ANSI編碼

與ASCII編碼相對,非英語國家自定義適合本國語言的編碼標準,使用多個字節存儲一個字符。但是不同ANSI編碼之間互不兼容,無法將不同語言的文字存儲在同一段用ANSI編碼的文本中;

Unicode編碼

與ANSI編碼相對,國際組織制定Unicode編碼,為不同語言中的每個字符規定了統一而且唯一的數字編號,實現跨語言和跨平臺;

大端存儲與小端存儲

大端存儲:高位字節存儲在低地址端,低位字節存儲在高地址端;(高放低,低放高)

小端存儲:低位字節存儲在低地址端,高位字節存儲在高地地端;(高放高,低放低)

網絡傳輸和x86存儲均采用大端存儲;在Unicode規范中,根據文本文件的頭兩個字節,判定采用大端存儲還是小端存儲:

頭兩個字節是FE FF:大端存儲;

頭兩個字節是FF FE:小端存儲;

Unicode實現方式:UTF-8

一個字符的Unicode編碼是確定的,但是在實際傳輸過程中,有多種Unicode編碼實現方式。Unicode實現方式成為Unicode轉換格式(Unicode Transformation Format, UTF);UTF-8是應用最廣的Unicode實現方式,使用1~4個字節存儲一個字符。Unicode其他實現形式包括UTF-16(單個字符用2個或4個字節表示)和UTF-32(單個字符用4個字節表示)

UTF-8的編碼規則

單字節字符:字節第一位為0,后7位為該字符的Unicode編碼。因此對于英文字符,UTF-8編碼與ASCII編碼相同;

多字節字符(n > 1)

第一個字節的前n位全為1,第n+1位設為0

其余字節的前2位一律設為10;

其余二進制位全部為該字符的Unicode編碼;

漢字編碼

漢字編碼主要有GBK,GB2312和Big5;

GB2312:GB2312由國家標準總局發布,是一個簡化版的漢子編碼規范,又稱國標碼。GB2312規定對任意一個字符采用2個字節存儲,每個字節采用7位編碼表示;

GBK:GBK是GB2312的擴展,兼容GB2312,每個漢字由2個字節存儲;

Big5:Big5是繁體字編碼,每個漢子由2個字節存儲;

Java字節流與字符流

Java IO系統中,

字節流基類:InputStreamOutputStream

字符流基類:ReaderWriter

字節流I/O單位是單個字節,字符流I/O單位是是由JVM將單個字節解碼后的Unicode字符,Java中實際運行的只有字節流,只有對字符流進行解碼操作后才能得到字符流。
Java中一個char類型采用Unicode編碼,大小占兩個字節,可以表示一個中文字符;C/C++中char類型采用ASCII字符集,無法表示一個中文字符;

緩沖區Buffer實現原理

字節流本質上是CPU直接與慢速存儲設備進行I/O,速度較慢。由于CPU與主存的I/O速度遠遠高于與慢速存儲設備,因此在內存中開辟一段足夠大空間稱之為緩沖區(Buffer),系統每次嘗試先從緩沖區中讀取數據,如果讀取失敗則選擇從后備存儲中讀取新數據放入緩沖區中,最后將緩沖區中對應數據返回給用戶。

對象序列化

對象序列化與反序列化:將Java對象轉變成字節流存儲,稱之為對象序列化。從字節流中恢復一個Java對象,稱之為對象反序列化。
序列化資格:只有實現了Serializable接口的對象,才可以被序列化。
序列化實現:通過ObjectOutputStream.writeObject(Object)將對象Object序列化;
反序列化實現:通過ObjectInputStream.readObject()反序列化一個對象;
序列化應用:對象序列化多用于分布式網絡中通過RMI傳輸對象;

參考

[1] http://blog.csdn.net/sugar_z_/article/details/51276984
[2] http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67079.html

相關文章

  • Java IO

    摘要:分類一按操作方式類結構字節流和字符流字節流以字節為單位,每次次讀入或讀出是位數據。該對象并不是流體系中的一員,其封裝了字節流,同時還封裝了一個緩沖區字符數組,通過內部的指針來操作字符數組中的數據。 分類一:按操作方式(類結構) 字節流和字符流: 字節流:以字節為單位,每次次讀入或讀出是8位數據。可以讀任何類型數據。 字符流:以字符為單位,每次次讀入或讀出是16位數據。其只能讀取字符類...

    Salamander 評論0 收藏0
  • Javaweb Q&A

    摘要:方法的參數不但可以使相對于上下文根的路徑,而且可以是相對于當前的路徑。如和都是合法的路徑。 轉發與重定向區別是什么 在調用方法上 轉發 調用 HttpServletRequest 對象的方法 request.getRequestDispatcher(test.jsp).forward(req, resp); 重定向 調用 HttpServletResponse 對象的方法 res...

    hiyang 評論0 收藏0
  • 高薪程序員&面試題精講系列22之說說Java的IO流,常用哪些IO流?

    摘要:一面試題及剖析今日面試題今天壹哥帶各位復習一塊可能會令初學者比較頭疼的內容,起碼當時讓我很有些頭疼的內容,那就是流。在這里壹哥會從兩部分展開介紹流,即與流。除此之外盡量使用字節流。關閉此輸入流并釋放與流相關聯的任何系統資源。 一. 面試題及剖析 1. 今日面試題 今天 壹哥 帶各位復習一塊可...

    fnngj 評論0 收藏0
  • JAVA 學習IO流

    摘要:輸出流從指定的字節數組寫入個字節,從偏移開始輸出到此輸出流將字節從指定的字節數組寫入此輸出流。字符流輸入流將字符讀入數組的一部分。關閉流并釋放與之相關聯的任何系統資源。寫一個字符串的一部分。 IO流 1.流流動、流向 從一端移動到另一端 源頭與目的地,程序與文件|數組|網絡連接|數據庫,以程序為中心2.IO流分類流向 輸入流 輸出流 數據 字節流:二進制,可以是一切文件包括純文本...

    wslongchen 評論0 收藏0
  • java 基礎 - 收藏集 - 掘金

    摘要:基礎知識復習后端掘金的作用表示靜態修飾符,使用修飾的變量,在中分配內存后一直存在,直到程序退出才釋放空間。將對象編碼為字節流稱之為序列化,反之將字節流重建成對象稱之為反序列化。 Java 學習過程|完整思維導圖 - 后端 - 掘金JVM 1. 內存模型( 內存分為幾部分? 堆溢出、棧溢出原因及實例?線上如何排查?) 2. 類加載機制 3. 垃圾回收 Java基礎 什么是接口?什么是抽象...

    makeFoxPlay 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<