有關於一些常見的流用法

2021-06-09 21:30:37 字數 2914 閱讀 9480

基於介面程式設計

providername的用途是區別是用哪個資料庫

有關處理檔案時的東西一定要注意編碼問題

寫一些函式類首先考慮能不能抽象成介面或抽象類或虛方法等

識別物件

窗體就是乙個類

索引會編譯成方法

virtual 呼叫子類的方法,如果子類的沒有實現

才回來呼叫父類的

窗體復用的用vritual

繼承父窗體override重寫

介面可以多繼承

抽象類只能單繼承

模板方法模式案例

就是把父類的東西繼承並且重寫實現父類的virtual

裝飾者模式

把乙個類寫到另乙個類的成員

包裝一下

這就是裝飾者模式

把乙個類放到另乙個類中裝飾

但是還是實現成同乙個介面

•拷貝檔案的兩種方式:將原始檔內容全部讀到記憶體中,再寫到目標檔案中;讀取原始檔的1kb記憶體,寫到目標檔案中,再讀取原始檔的1kb記憶體,再寫到目標檔案中……。第二種方式就是一種流(stream)的操作。 •

用file.readalltext、file.writealltext進行檔案讀寫是一次性讀、寫,如果檔案非常大會佔記憶體、慢。需要讀一行處理一行的機制,這就是流(stream)。stream會只讀取要求的位置、長度的內容。 •

就像sqldatareader一樣,stream不會將所有內容一次性讀取到記憶體中,有乙個指標,指標指到**才能讀、寫到**。 •

流有很多種類,檔案流是其中一種。filestream類new filestream(「c:/a.txt」, filemode, fileaccess)後兩個引數可選值及含義自己看。filestream可讀可寫。可以使用file.openread、file.openwrite這兩個簡化呼叫方法。 •

練習:檔案加密(每一位用255-r) •

byte是任何資料的最根本表示形式,任何資料最終都是二進位制。

•write用於向當前位置寫入若干位元組,read使用者讀取若干位元組。(*)每次read、write指標都會自動後移。

•檔案流的flush、close、dispose

讀一點寫一點

拷檔案都是流,流的處理

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.linq;

using system.text;

using system.windows.forms;

using system.io;

namespace 檔案的加密解密

private

void btnadd_click(objectsender, eventargs e)

outfile.write(bytes, 0,readcount);

progressbar1.value +=readcount;}}

}progressbar1.value = 0;}}

}

streamreader 和streamwrite是純讀取文字

有的stream子類不支援指標的後退

hssfworkbook要求乙個指標能隨意移動的流

當流不支援向後移動可以用記憶體流

尤其是記憶體流

壓縮和解壓

在這個專案中遇到的問題是壓縮只能是寫的不能是讀的,解壓是讀的,所以你必須

先從檔案中讀出資料到快取區中,在壓縮到檔案中。這有個中轉站(快取區)

解壓的時候是讀出來直接可以寫入檔案

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.linq;

using system.text;

using system.windows.forms;

using system.io;

using system.io.compression;

namespace 流操作

private

void button1_click(objectsender, eventargs e)}}

}messagebox.show("

解壓完畢

");}

private

void button2_click(objectsender, eventargs e)

zip.dispose();

stream.dispose();}}

}

streamread 和streamwriter

streamreaderreader = new

streamreader(@"c:\d.txt",encoding.default);

charbuffer=new

char[1024*1024*4];

intreadercount = 0;

streamwriterwriter = new

streamwriter(@"c:o.txt");

while((readercount = reader.read(buffer, 0, buffer.length)) > 0)

序列化和反序列化

binaryformatter類的重要性

乙個類必須標記[serializable]標記可序列化

注意啦!

當把乙個類序列化時必須是與它關聯的類也必須

序列化

dat是個二進位制檔案

可以序列化你的檔案內容再存入進去

關於pytorch的一些常見用法總結

以下常見的用法都是在其他博主那學來的,為了方便以後的查閱,現做乙個整理。1.torch.cat 有關tensor的一些處理 在深度神經網路的設計中,常常需要進行多尺度的特徵融合,這時就會涉及到通道的連線,這時就會用到torch.cat 具體參考 2.pytorch上下取樣函式 interpolate...

python的一些常見用法

1.字典 建立 dict 新增元素 dict 1 a 遍歷 for index in dict print index,dict dict 結果輸出為 1,a 刪除 del dict 1 結果 1 a 這一對key value都被刪除了。不過注意,不能在遍歷字典的時候使用del。一種方法是遍歷的時候...

一些與日曆,日期有關的用法

設caldate是乙個nsdate 型別的變數下面的函式都用其呼叫 得到現在的日期時間 nsdate now nsdate date 得到給定日期的那天開始即那天的零點 nsdate cc datebymovingtobeginningofday 同理可以寫出得到給定日期的那天的結束時間的函式 得到...