資源描述:
《李林linux環(huán)境高級編程,作業(yè),實驗報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、為了適應(yīng)公司新戰(zhàn)略的發(fā)展,保障停車場安保新項目的正常、順利開展,特制定安保從業(yè)人員的業(yè)務(wù)技能及個人素質(zhì)的培訓(xùn)計劃李林linux環(huán)境高級編程,作業(yè),實驗報告 電子科技大學(xué) 實驗報告 學(xué)生姓名:學(xué)號:指導(dǎo)教師:李林實驗地點:清水河主樓A2-412實驗時間: 一、實驗室名稱: Linux環(huán)境高級編程實驗室 二、實驗項目名稱: 對象序列化實驗 三、實驗學(xué)時: 8學(xué)時 四、實驗?zāi)康模骸 W(xué)習(xí)序列化原理與方法,掌握基本的序列化技巧 五、實驗內(nèi)容: ?版本1:將一個類的一個對象序列化到文件 ?版本2:將一個類的多個對象序列化
2、到文件 ?版本3:將兩個類的多個對象序列化到文件 ?版本4:按照面向?qū)ο蟮姆椒?,解決多個類的多個對象序列化到文件的問題目的-通過該培訓(xùn)員工可對保安行業(yè)有初步了解,并感受到安保行業(yè)的發(fā)展的巨大潛力,可提升其的專業(yè)水平,并確保其在這個行業(yè)的安全感。為了適應(yīng)公司新戰(zhàn)略的發(fā)展,保障停車場安保新項目的正常、順利開展,特制定安保從業(yè)人員的業(yè)務(wù)技能及個人素質(zhì)的培訓(xùn)計劃 ?版本5:序列化的目的地不僅可以是文件,還可以是其他,即可配置性 六、實驗步驟: 1、版本一程序分析: 源程序如下,功能是將一個類的一個對象序列化到文件:#include
3、 #include #include #include classSAD//SerializeAndDeserialize{ public: SAD()//構(gòu)造函數(shù)。 { tel0=tel1=0;//將電話號碼分成兩個int變量保存。} explicitSAD(longintm,longintk) { tel0=m;tel1=k; } virtual~SAD() /*使用虛析構(gòu)。在析構(gòu)時防止只析構(gòu)基類而不析構(gòu)派生類的狀況發(fā)生,造成內(nèi)存泄漏。*/{ } public:目的-通過該培訓(xùn)員工可對保安行業(yè)有初步了解
4、,并感受到安保行業(yè)的發(fā)展的巨大潛力,可提升其的專業(yè)水平,并確保其在這個行業(yè)的安全感。為了適應(yīng)公司新戰(zhàn)略的發(fā)展,保障停車場安保新項目的正常、順利開展,特制定安保從業(yè)人員的業(yè)務(wù)技能及個人素質(zhì)的培訓(xùn)計劃 voidreshow()//用于打印出變量的值。{ std::cout0){ r=read(_fd,m_pBuffer,length); if(r==-1){ coutBUFFER_SIZE){ if(_fd==-1)return-1; intw=write(_fd,pstrMsg,len_strmsg); if(w==-1)
5、return-1; returnw; } if(len_strmsg>m_nleftroom){ if(Flush()==-1)return-1; } memcpy(m_pBuffer+m_nUsedBytesForBuffer,pstrMsg,len_strmsg); m_nUsedBytesForBuffer+=len_strmsg; if(pthread_mutex_unlock(m_pMutex)!=0)return-1; return0; } 為保證讀寫緩存的一致性,在讀寫操作中,都先對緩存進行互斥量加鎖
6、,操作結(jié)束后進行解鎖。目的-通過該培訓(xùn)員工可對保安行業(yè)有初步了解,并感受到安保行業(yè)的發(fā)展的巨大潛力,可提升其的專業(yè)水平,并確保其在這個行業(yè)的安全感。為了適應(yīng)公司新戰(zhàn)略的發(fā)展,保障停車場安保新項目的正常、順利開展,特制定安保從業(yè)人員的業(yè)務(wù)技能及個人素質(zhì)的培訓(xùn)計劃 最后我們來看看緩存的刷新操作是如何實現(xiàn)的。同樣需要對緩存進行互斥量的加鎖,保證其一致性。刷新的主要工作就是將緩存中的數(shù)據(jù)寫入到文件中。操作結(jié)束后進行互斥量解鎖操作,刷新成功返回寫入的數(shù)據(jù)長度,否則返回-1。intEXFileOperator::Flush(){ if(pthr
7、ead_mutex_lock(m_pMutex)!=0)return-1; intw=write(_fd,m_pBuffer,m_nUsedBytesForBuffer); … m_nUsedBytesForBuffer=0; if(pthread_mutex_unlock(m_pMutex)!=0)return-1; returnw; } 四、測試 1.首先測試對文件進行寫操作的功能實現(xiàn),根據(jù)策略,先寫入少量信息,即數(shù)據(jù)長度小于緩存長度時,查看數(shù)據(jù)是在文件中還是在緩存中。測試代碼如下: intmain(){ EXF
8、ileOperator*Opt=newEXFileOperator(""); Opt->F_WRITE("ZHAOQIANGXX"); } 測試代碼(1)想要向文件中寫入"ZHAOQIANGXX"(長