無題,李商隱,哈哈哈,隨便寫寫

2022-09-03 12:39:09 字數 1249 閱讀 8919

之前一直記著乙個漢字是佔兩個位元組,今天發現不是這樣的,utf-8編碼乙個漢字是3個位元組,以下為**證明(gbk是乙個漢字兩個位元組,這個沒做實驗)

1 randomaccessfile ra = new randomaccessfile("f:\\text.txt", "rw");

2 filechannel fc =ra.getchannel();

3 bytebuffer bb = bytebuffer.allocate(6);

4 string encoding = system.getproperty("file.encoding");

5fc.read(bb);

6bb.flip();

7 system.out.println("decode using " + encoding + ":" + charset.forname(encoding).decode(bb) + " position當前位置:"

8 + bb.position() + " limit:" + bb.limit() + " capa:" + bb.capacity());

列印結果: decode using utf-8:中文  position當前位置:6 limit:6 capa:6

由此可以看出乙個中文的utf-8編碼為3位元組,如果不使用decode方法,bb.getchar()方法得到的是亂碼,decode的方法針對的是緩衝器,無法 對其中的部分位元組decode

bytebuffer的get()方法會使position後移一位,但指定索引時即get(i),position位置不變

從下面程式可以看出get()一次取得乙個位元組,那麼,但char型別不應該是兩個位元組嗎,應該一次取得兩個位元組才對,我看到網上也有人對此有誤解

system.out.println((char)bb.get() + " position當前位置:" + bb.position() +" limit:"+bb.limit() + " capa:" +bb.capacity());

列印結果 : a position當前位置:1 limit:3 capa:6

實際上取得是乙個位元組沒錯,但這裡是型別轉換 ,把byte轉換為char,空位以0補齊,所以得到的結果是a,  乙個位元組表示範圍從-128到127,a的對應數字是97,所以乙個位元組完全可以表示,但char的型別確實是兩個位元組,但從檔案中讀取的是byte,並不是按照char型別來讀取,只是後來強制轉換了

哈哈哈哈哈

索引 索引就像目錄一樣,用來方便查詢,加快查詢速度,但是會增加增刪改的負擔 索引包括b樹索引,主鍵索引,普通索引。事務 把sql語句打包成乙個整體,一但打包成乙個整體不可以執行一半成功,一半失敗,只會出現要麼一起成功,要麼一起失敗 事務有四大特性 原子性,永續性,一致性,隔離性。查詢 select ...

哈哈哈哈哈

據說寫部落格就可以獲得10積分,我來看看是不是這麼簡單就可以了。你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣...

哈哈哈哈哈

安裝sha pip install shadowsocks按順序執行下面命令,在 etc目錄下新建資料夾 sha 然後在sha 資料夾下新建檔案 config.json server port 和 password 可以根據自己的要求設定 如果需要同時開多個埠,config.json的內容可以設定如...