成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

字符編碼/Java字符流與字節(jié)流/Buffer原理/對(duì)象序列化

Scorpion / 1128人閱讀

摘要:中一個(gè)類型采用編碼,大小占兩個(gè)字節(jié),可以表示一個(gè)中文字符中類型采用字符集,無(wú)法表示一個(gè)中文字符緩沖區(qū)實(shí)現(xiàn)原理字節(jié)流本質(zhì)上是直接與慢速存儲(chǔ)設(shè)備進(jìn)行,速度較慢。從字節(jié)流中恢復(fù)一個(gè)對(duì)象,稱之為對(duì)象反序列化。

字符編碼/Java字符流與字節(jié)流/Buffer原理/對(duì)象序列化 聲明

文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處https://segmentfault.com/u/yzwall

字符編碼與編碼標(biāo)準(zhǔn)

字符集:收入標(biāo)準(zhǔn)中的符號(hào)集合成為字符集

編碼:將給定字符轉(zhuǎn)換成底層存儲(chǔ)字節(jié)的過(guò)程

ASCII編碼

ASCII只支持英文編碼,不支持其他語(yǔ)言;ASCII編碼使用一個(gè)字節(jié)編碼一個(gè)字符,一共規(guī)定了128個(gè)字符,每個(gè)字符只占用一個(gè)字節(jié)的后7位,第1位統(tǒng)一為0,

ANSI編碼

與ASCII編碼相對(duì),非英語(yǔ)國(guó)家自定義適合本國(guó)語(yǔ)言的編碼標(biāo)準(zhǔn),使用多個(gè)字節(jié)存儲(chǔ)一個(gè)字符。但是不同ANSI編碼之間互不兼容,無(wú)法將不同語(yǔ)言的文字存儲(chǔ)在同一段用ANSI編碼的文本中;

Unicode編碼

與ANSI編碼相對(duì),國(guó)際組織制定Unicode編碼,為不同語(yǔ)言中的每個(gè)字符規(guī)定了統(tǒng)一而且唯一的數(shù)字編號(hào),實(shí)現(xiàn)跨語(yǔ)言和跨平臺(tái);

大端存儲(chǔ)與小端存儲(chǔ)

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

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

網(wǎng)絡(luò)傳輸和x86存儲(chǔ)均采用大端存儲(chǔ);在Unicode規(guī)范中,根據(jù)文本文件的頭兩個(gè)字節(jié),判定采用大端存儲(chǔ)還是小端存儲(chǔ):

頭兩個(gè)字節(jié)是FE FF:大端存儲(chǔ);

頭兩個(gè)字節(jié)是FF FE:小端存儲(chǔ);

Unicode實(shí)現(xiàn)方式:UTF-8

一個(gè)字符的Unicode編碼是確定的,但是在實(shí)際傳輸過(guò)程中,有多種Unicode編碼實(shí)現(xiàn)方式。Unicode實(shí)現(xiàn)方式成為Unicode轉(zhuǎn)換格式(Unicode Transformation Format, UTF);UTF-8是應(yīng)用最廣的Unicode實(shí)現(xiàn)方式,使用1~4個(gè)字節(jié)存儲(chǔ)一個(gè)字符。Unicode其他實(shí)現(xiàn)形式包括UTF-16(單個(gè)字符用2個(gè)或4個(gè)字節(jié)表示)和UTF-32(單個(gè)字符用4個(gè)字節(jié)表示)

UTF-8的編碼規(guī)則

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

多字節(jié)字符(n > 1)

第一個(gè)字節(jié)的前n位全為1,第n+1位設(shè)為0;

其余字節(jié)的前2位一律設(shè)為10;

其余二進(jìn)制位全部為該字符的Unicode編碼;

漢字編碼

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

GB2312:GB2312由國(guó)家標(biāo)準(zhǔn)總局發(fā)布,是一個(gè)簡(jiǎn)化版的漢子編碼規(guī)范,又稱國(guó)標(biāo)碼。GB2312規(guī)定對(duì)任意一個(gè)字符采用2個(gè)字節(jié)存儲(chǔ),每個(gè)字節(jié)采用7位編碼表示;

GBK:GBK是GB2312的擴(kuò)展,兼容GB2312,每個(gè)漢字由2個(gè)字節(jié)存儲(chǔ);

Big5:Big5是繁體字編碼,每個(gè)漢子由2個(gè)字節(jié)存儲(chǔ);

Java字節(jié)流與字符流

Java IO系統(tǒng)中,

字節(jié)流基類:InputStreamOutputStream

字符流基類:ReaderWriter

字節(jié)流I/O單位是單個(gè)字節(jié),字符流I/O單位是是由JVM將單個(gè)字節(jié)解碼后的Unicode字符,Java中實(shí)際運(yùn)行的只有字節(jié)流,只有對(duì)字符流進(jìn)行解碼操作后才能得到字符流。
Java中一個(gè)char類型采用Unicode編碼,大小占兩個(gè)字節(jié),可以表示一個(gè)中文字符;C/C++中char類型采用ASCII字符集,無(wú)法表示一個(gè)中文字符;

緩沖區(qū)Buffer實(shí)現(xiàn)原理

字節(jié)流本質(zhì)上是CPU直接與慢速存儲(chǔ)設(shè)備進(jìn)行I/O,速度較慢。由于CPU與主存的I/O速度遠(yuǎn)遠(yuǎn)高于與慢速存儲(chǔ)設(shè)備,因此在內(nèi)存中開(kāi)辟一段足夠大空間稱之為緩沖區(qū)(Buffer),系統(tǒng)每次嘗試先從緩沖區(qū)中讀取數(shù)據(jù),如果讀取失敗則選擇從后備存儲(chǔ)中讀取新數(shù)據(jù)放入緩沖區(qū)中,最后將緩沖區(qū)中對(duì)應(yīng)數(shù)據(jù)返回給用戶。

對(duì)象序列化

對(duì)象序列化與反序列化:將Java對(duì)象轉(zhuǎn)變成字節(jié)流存儲(chǔ),稱之為對(duì)象序列化。從字節(jié)流中恢復(fù)一個(gè)Java對(duì)象,稱之為對(duì)象反序列化。
序列化資格:只有實(shí)現(xiàn)了Serializable接口的對(duì)象,才可以被序列化。
序列化實(shí)現(xiàn):通過(guò)ObjectOutputStream.writeObject(Object)將對(duì)象Object序列化;
反序列化實(shí)現(xiàn):通過(guò)ObjectInputStream.readObject()反序列化一個(gè)對(duì)象;
序列化應(yīng)用:對(duì)象序列化多用于分布式網(wǎng)絡(luò)中通過(guò)RMI傳輸對(duì)象;

參考

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67079.html

相關(guān)文章

  • Java IO

    摘要:分類一按操作方式類結(jié)構(gòu)字節(jié)流和字符流字節(jié)流以字節(jié)為單位,每次次讀入或讀出是位數(shù)據(jù)。該對(duì)象并不是流體系中的一員,其封裝了字節(jié)流,同時(shí)還封裝了一個(gè)緩沖區(qū)字符數(shù)組,通過(guò)內(nèi)部的指針來(lái)操作字符數(shù)組中的數(shù)據(jù)。 分類一:按操作方式(類結(jié)構(gòu)) 字節(jié)流和字符流: 字節(jié)流:以字節(jié)為單位,每次次讀入或讀出是8位數(shù)據(jù)??梢宰x任何類型數(shù)據(jù)。 字符流:以字符為單位,每次次讀入或讀出是16位數(shù)據(jù)。其只能讀取字符類...

    Salamander 評(píng)論0 收藏0
  • Javaweb Q&A

    摘要:方法的參數(shù)不但可以使相對(duì)于上下文根的路徑,而且可以是相對(duì)于當(dāng)前的路徑。如和都是合法的路徑。 轉(zhuǎn)發(fā)與重定向區(qū)別是什么 在調(diào)用方法上 轉(zhuǎn)發(fā) 調(diào)用 HttpServletRequest 對(duì)象的方法 request.getRequestDispatcher(test.jsp).forward(req, resp); 重定向 調(diào)用 HttpServletResponse 對(duì)象的方法 res...

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

    摘要:一面試題及剖析今日面試題今天壹哥帶各位復(fù)習(xí)一塊可能會(huì)令初學(xué)者比較頭疼的內(nèi)容,起碼當(dāng)時(shí)讓我很有些頭疼的內(nèi)容,那就是流。在這里壹哥會(huì)從兩部分展開(kāi)介紹流,即與流。除此之外盡量使用字節(jié)流。關(guān)閉此輸入流并釋放與流相關(guān)聯(lián)的任何系統(tǒng)資源。 一. 面試題及剖析 1. 今日面試題 今天 壹哥 帶各位復(fù)習(xí)一塊可...

    fnngj 評(píng)論0 收藏0
  • JAVA 學(xué)習(xí)IO流

    摘要:輸出流從指定的字節(jié)數(shù)組寫(xiě)入個(gè)字節(jié),從偏移開(kāi)始輸出到此輸出流將字節(jié)從指定的字節(jié)數(shù)組寫(xiě)入此輸出流。字符流輸入流將字符讀入數(shù)組的一部分。關(guān)閉流并釋放與之相關(guān)聯(lián)的任何系統(tǒng)資源。寫(xiě)一個(gè)字符串的一部分。 IO流 1.流流動(dòng)、流向 從一端移動(dòng)到另一端 源頭與目的地,程序與文件|數(shù)組|網(wǎng)絡(luò)連接|數(shù)據(jù)庫(kù),以程序?yàn)橹行?.IO流分類流向 輸入流 輸出流 數(shù)據(jù) 字節(jié)流:二進(jìn)制,可以是一切文件包括純文本...

    wslongchen 評(píng)論0 收藏0
  • java 基礎(chǔ) - 收藏集 - 掘金

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

    makeFoxPlay 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<