開放氣道有“仰頭舉頦法”、“仰頭抬頸法”和“雙手抬頜法”。
1. 【仰頭舉頦法】
搶救者將一手掌小魚際(小拇指側(cè))置于患者前額,下壓使其頭部后仰,另一手的食指和中指置于靠近頦部的下頜骨下方,將頦部向前抬起,幫助頭部后仰,氣道開放。必要時(shí)拇指可輕牽下唇,使口微微張開。
2. 【仰頭抬頸法】
病人仰臥,搶救者一手抬起病人頸部,另一手以小魚際側(cè)下壓患者前額,使其頭后仰,氣道開放。
3. 【雙手抬頜法】
病人平臥,搶救者用雙手從兩側(cè)抓緊病人的雙下頜并托起,使頭后仰,下頜骨前移,網(wǎng)站即可打開氣道。此法適用于頸部有外傷者,以下頜上提為主,不能將病人頭部后仰及左右轉(zhuǎn)動(dòng)。注意,頸部有外傷者只能采用雙手抬頜法開放氣道。不宜采用仰頭舉頦法和仰頭抬頸法,以避免進(jìn)一步脊髓損傷。
創(chuàng)建的格式如下: 復(fù)制代碼 代碼如下: lhy 22 上篇博客中,我們也介紹了tinyxml解析器中的所有的類以及類之間的關(guān)系。
創(chuàng)建上述格式的xml,代碼如下: 復(fù)制代碼 代碼如下://創(chuàng)建一個(gè)XML的文檔對象。 TiXmlDocument *myDocument = new TiXmlDocument(); //創(chuàng)建一個(gè)根元素并連接。
TiXmlElement *RootElement = new TiXmlElement("Persons"); myDocument->LinkEndChild(RootElement); //創(chuàng)建一個(gè)Person元素并連接。 TiXmlElement *PersonElement = new TiXmlElement("Person"); RootElement->LinkEndChild(PersonElement); //創(chuàng)建name元素、age元素并連接。
TiXmlElement *NameElement = new TiXmlElement("name"); TiXmlElement *AgeElement = new TiXmlElement("age"); PersonElement->LinkEndChild(NameElement); PersonElement->LinkEndChild(AgeElement); //設(shè)置name元素和age元素的內(nèi)容并連接。 TiXmlText *NameContent = new TiXmlText("lhy"); TiXmlText *AgeContent = new TiXmlText("22"); NameElement->LinkEndChild(NameContent); AgeElement->LinkEndChild(AgeContent); myDocument->SaveFile("d:\\lhy\\xml.txt");//保存到文件 只要搞清xml中節(jié)點(diǎn)之間的關(guān)系,創(chuàng)建不是問題。
說白了就是一種輩分關(guān)系。 創(chuàng)建搞定了,但是作為C++程序猿,寫完之后,總感覺有點(diǎn)別扭,總感覺哪不對勁。
你是否也看出其中存在的貓膩? 對了,些許的代碼中有大量的New指針。在C++中可沒有java中的垃圾回收機(jī)制,必須自己來處理這些廢棄的垃圾。
但是代碼中卻沒有Delete語句? 上網(wǎng)查了資料,發(fā)現(xiàn)很多創(chuàng)建代碼中,都沒有Delete語句?難道是大家都是復(fù)制粘貼?還是tinyxml在搞怪? 我總結(jié)了以下幾點(diǎn),但是最后在開發(fā)的過程中仍是疑問,但是開發(fā)的過程中,沒有出現(xiàn)問題,所以我的程序就暫時(shí)如此了。 說法一:很多文章中,都是new沒有delete,是因?yàn)閠inyxml可以自動(dòng)釋放,自動(dòng)銷毀指針,無需開發(fā)者手動(dòng)釋放。
質(zhì)疑:new出來的可以自動(dòng)釋放?new出來說明是在堆上創(chuàng)建的,什么時(shí)候會(huì)自動(dòng)釋放?程序結(jié)束時(shí),自動(dòng)釋放?那怎么判斷程序結(jié)束呢?(在一個(gè)模塊中如何析構(gòu)另一個(gè)模塊中的內(nèi)存區(qū)域,我們后面會(huì)詳談),所以這種說法不攻自破。 既然tinyxml中有自毀功能,那我們查詢其源代碼,發(fā)現(xiàn)果真如此,tinyxml中在析構(gòu)函數(shù)中,有相應(yīng)的指針釋放。
但是并不是每個(gè)節(jié)點(diǎn)如此的。 源碼中的詳情: 復(fù)制代碼 代碼如下:TiXmlNode::~TiXmlNode() { TiXmlNode* node = firstChild; TiXmlNode* temp = 0; while ( node ) { temp = node; node = node->next; delete temp; } } void TiXmlNode::Clear() { TiXmlNode* node = firstChild; TiXmlNode* temp = 0; while ( node ) { temp = node; node = node->next; delete temp; } firstChild = 0; lastChild = 0; } 我們也知道tinyxml中的類之間存在繼承關(guān)系。
那我們看tinyxml中的TixmlElement類: 復(fù)制代碼 代碼如下:TiXmlElement::~TiXmlElement() { ClearThis(); } void TiXmlElement::ClearThis() { Clear(); while( attributeSet.First() ) { TiXmlAttribute* node = attributeSet.First(); attributeSet.Remove( node ); delete node; } } 因?yàn)門ixmlElement是繼承TiXmlNode.但是在TiXmlDocument中并沒有發(fā)現(xiàn)TiXmlDocument類的析構(gòu)函數(shù)。 第二種說法:TiXmlDocument對象就是這棵樹的根結(jié)點(diǎn), 在一個(gè)完整的文檔中, 除了它, 其余結(jié)點(diǎn)必須都是它的后代, 所以TinyXml用了一個(gè)很巧妙的方法來析構(gòu)每一個(gè)結(jié)點(diǎn)所對應(yīng)的對象 ---- 每個(gè)結(jié)點(diǎn)的析構(gòu)任務(wù)都委托給了它的父親, 這樣只要保證父親被正確析構(gòu), 或者調(diào)用了父親的Clear函數(shù), 它的所有后代都會(huì)被正確的析構(gòu), 所以對整個(gè)文檔來說只要TiXmlDocument對象被正確析構(gòu)即可。
在創(chuàng)建的上述代碼中,我們發(fā)現(xiàn),所有的節(jié)點(diǎn)都是掛在根節(jié)點(diǎn)之下的。 其實(shí)這句代碼: myDocument->LinkEndChild(RootElement);使用了多態(tài)方式。
類之間的關(guān)系如下: 并且LinkEndChild源代碼如下:它是父類TiXmlNode中的方法 復(fù)制代碼 代碼如下:TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) { assert( node->parent == 0 || node->parent == this ); assert( node->GetDocument() == 0 || node->GetDocument() == this->GetDocument() ); if ( node->Type() == TiXmlNode::DOCUMENT ) { delete node; if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); return 0; } node->parent = this; node->prev = lastChild; node->next = 0; if ( lastChild ) lastChild->next = node; else firstChild = node;// it was an empty list. lastChild = node; return node; } 這樣的話:則只要?jiǎng)h除根節(jié)點(diǎn),在程序中myDocument,就相當(dāng)于把刪除了TiXmlNode,相當(dāng)于調(diào)用了TiXmlNode的析構(gòu)函數(shù)。 質(zhì)疑:網(wǎng)上說這種方式,析構(gòu)是從葉子到樹根。
根據(jù)TiXmlNode中的析構(gòu)函數(shù),我們可以得出,是從樹根到葉子。 但是我們在Delete myDocument時(shí),應(yīng)該注意一點(diǎn): 創(chuàng)建文檔時(shí),也就是程序段中。
在一定的環(huán)境下,在一定的人身上,有的特別靈驗(yàn),有時(shí)則不適用。找到對你來說最順手、最成功的方式,培養(yǎng)你獨(dú)特的情調(diào)。風(fēng)格一旦形成,就不要保守,不要藏著掖著,把你的魅力四處播散吧。
1. 長線調(diào)情,如果你性格有點(diǎn)怯弱,不能在社交場合保持自信,那么“長線”調(diào)情對你來說更為合適,也就是說,對某個(gè)“風(fēng)流的陌生人”遠(yuǎn)距離地、一閃而過地發(fā)出一聲感嘆。
2. 贊揚(yáng)的作用,恭維對象應(yīng)直接是對方,而不要光夸某一物件。
3. 不時(shí)點(diǎn)頭稱道,對方說完后,你考慮一秒鐘就趕緊作答。因?yàn)?,你也許注意到了,在一對一的情況下,你越琢磨該說些什么,就越會(huì)心慌意亂,張口結(jié)舌,交談中如果出現(xiàn)這樣的冷場,爭取把話題引到你們已經(jīng)談過的內(nèi)容上,而不要匆忙開始新的話題,舊話重提說明你對剛才的談話很注意聽,很感興趣,從而保證談話可以繼續(xù)進(jìn)行下去,你不必總是搜腸刮肚,尋找絕妙的話題去帶動(dòng)談話。
有人說“調(diào)情是言辭藝術(shù)里的示愛絕招”。在我們這樣一個(gè)需要個(gè)性與魅力的時(shí)代,調(diào)情的作用是不言自明的。只要用意不是猥瑣的、不道德的,那么它是一種健康的娛樂,會(huì)給你的生活帶來亮色,使生活變得更加輕松活潑、更有意趣、更自然更人性。
#include <stdio.h>
#include <stdlib.h>
#include "tinyxml.h"
char * ShowNodeInfo(TiXmlElement *pCurrentNode);
int _tmain(int argc, _TCHAR* argv[])
{
TiXmlDocument aDoc("test.xml");
if ( ! aDoc.LoadFile() )
{
perror("打開test.xml失敗:");
return -1;
}
TiXmlElement *pRoot = aDoc.RootElement();
TiXmlElement *pWork = pRoot;
ShowNodeInfo(pWork);
getchar();
return 0;
}
//遞歸訪問
char * ShowNodeInfo(TiXmlElement *pCurrentNode)
{
//為NULL時(shí)表示一次遞歸完成
if ( NULL == pCurrentNode )
{
return "";
}
else if ( pCurrentNode->NoChildren() )//沒有子結(jié)點(diǎn)則是最底層的結(jié)點(diǎn)
{
pCurrentNode->Print(stdout,0);
printf("\n");
ShowNodeInfo(NULL);
}
else if( ! pCurrentNode->NoChildren() )//有子結(jié)點(diǎn)則每個(gè)子結(jié)點(diǎn)都遞歸處理
{
TiXmlElement * pChilds = pCurrentNode->FirstChildElement();//獲取第一個(gè)子結(jié)點(diǎn)
ShowNodeInfo(pChilds);//遞歸子結(jié)點(diǎn)
pChilds = pChilds->NextSiblingElement();//獲取剛顯示的結(jié)點(diǎn)的同級下一個(gè)結(jié)點(diǎn)
while ( NULL != pChilds )//遞歸處理此結(jié)點(diǎn)下的所有結(jié)點(diǎn)
{
ShowNodeInfo(pChilds);
pChilds = pChilds->NextSiblingElement();
}
ShowNodeInfo(NULL);//此結(jié)點(diǎn)所有子結(jié)點(diǎn)都處理完畢
}
}
R語言實(shí)際上是函數(shù)的集合,用戶可以使用base,stats等包中的基本函數(shù),也可以自己編寫函數(shù)完成一定的功能。但是初學(xué)者往往認(rèn)為編寫R函數(shù)十分困難,或者難以理解。這里對如何編寫R函數(shù)進(jìn)行簡要的介紹。
函數(shù)是對一些程序語句的封裝。換句話說,編寫函數(shù),可以減少人們對重復(fù)代碼書寫,從而讓R腳本程序更為簡潔,高效。同時(shí)也增加了可讀性。一個(gè)函數(shù)往往完成一項(xiàng)特定的功能。例如,求標(biāo)準(zhǔn)差sd,求平均值,求生物多樣性指數(shù)等。R數(shù)據(jù)分析,就是依靠調(diào)用各種函數(shù)來完成的。但是編寫函數(shù)也不是輕而易舉就能完成的,需要首先經(jīng)過大量的編程訓(xùn)練。特別是對R中數(shù)據(jù)的類型,邏輯判別、下標(biāo)、循環(huán)等內(nèi)容有一定了解之后,才好開始編寫函數(shù)。 對于初學(xué)者來說,最好的方法就是研究現(xiàn)有的R函數(shù)。因?yàn)镽程序包都是開源的,所有代碼可見。研究現(xiàn)有的R函數(shù)能夠使編程水平迅速提高。
R函數(shù)無需首先聲明變量的類型,大部分情況下不需要進(jìn)行初始化。一個(gè)完整的R函數(shù),需要包括函數(shù)名稱,函數(shù)聲明,函數(shù)參數(shù)以及函數(shù)體幾部分。
1. 函數(shù)名稱,即要編寫的函數(shù)名稱,這一名稱就作為將來調(diào)用R函數(shù)的依據(jù)。
2. 函數(shù)聲明,包括 <- function, 即聲明該對象的類型為函數(shù)。
3. 函數(shù)參數(shù),這里是輸入的數(shù)據(jù),函數(shù)參數(shù)是一個(gè)虛擬出來的一個(gè)對象。函數(shù)參數(shù)所等于的數(shù)據(jù),就是在函數(shù)體內(nèi)部將要處理的值,或者對應(yīng)的數(shù)據(jù)類型。 函數(shù)體內(nèi)部的程序語句進(jìn)行數(shù)據(jù)處理,就是對參數(shù)的值進(jìn)行處理 ,這種處理只在調(diào)用函數(shù)的時(shí)候才會(huì)發(fā)生。函數(shù)的參數(shù)可以有多種類型。R help的界面對每個(gè)函數(shù),及其參數(shù)的意義及所需的數(shù)據(jù)類型都進(jìn)行了說明。
4. 函數(shù)體
常常包括三部分.
(1). 異常處理
輸入的數(shù)據(jù)不能滿足函數(shù)計(jì)算的要求,或者類型不符, 這時(shí)候一定要設(shè)計(jì)相應(yīng)的機(jī)制告訴用戶,輸入的數(shù)據(jù)在什么地方有錯(cuò)誤。 錯(cuò)誤又分為兩種。
第一種, 如果輸入的數(shù)據(jù)錯(cuò)誤不是很嚴(yán)重,可以經(jīng)過轉(zhuǎn)換,變?yōu)榉咸幚硪蟮臄?shù)據(jù)時(shí), 此時(shí)只需要給用戶一個(gè)提醒,告知數(shù)據(jù)類型不符,但是函數(shù)本身已經(jīng) 進(jìn)行了相應(yīng)的轉(zhuǎn)換。
第二種,數(shù)據(jù)完全不符合要求,這種情況下,就 要終止函數(shù)的運(yùn)行,而告知因?yàn)槭裁?,函?shù)不能運(yùn)行。這樣,用戶在 使用函數(shù)的情況先才不至于茫然。
(2). 運(yùn)算過程
包括具體的運(yùn)算步驟。 運(yùn)算過程和該函數(shù)要完成的功能有關(guān)。
R運(yùn)算過程中,應(yīng)該盡量減少循環(huán)的使用,特別是嵌套循環(huán)。R提供了 apply,replicate等一系列函數(shù),來代替循環(huán),應(yīng)該盡量應(yīng)用這些函數(shù), 提高效率。 如果在R中實(shí)在太慢,那么核心部分只能依靠C或者Fortran 等語言編寫,然后再用R調(diào)用這些編譯好的模塊,達(dá)到更高的效率。
運(yùn)算過程中,需要大量用到if等條件作為判別的標(biāo)準(zhǔn)。if和while都是需要數(shù)據(jù)TRUE/FALSE這樣的邏輯類型變量,這就意味著,if內(nèi)部,往往是對條件的判別,例如 is.na, is.matrix, is.numeric等等,或者對大小的比較,如,if(x > 0), if(x == 1), if(length(x)== 3)等等。if后面,如果是1行,則花括號可以省略,否則就必須要將所有的語句都放在花括號中。這和循環(huán)是一致的。
例子:
## if與條件判斷
fun.test <- function(a, b, method = "add"){
if(method == "add") { ## 如果if或者for/while;
res <- a + b ## 等后面的語句只有一行,則無需使用花括號。
}
if(method == "subtract"){
res <- a - b
}
return(res) ## 返回值
}
### 檢驗(yàn)結(jié)果
fun.test(a = 10, b = 8, method = "add")
fun.test(a = 10, b = 8, method = "substract")
(1)太陽能電解水制氫。電解水制氫是目前應(yīng)用較廣且比較成熟的方法,效率較高,但耗電大,用常規(guī)電制氫成本比較高。
(2)太陽能熱分解水制氫。將水或水蒸氣加熱到3000K(K是熱力學(xué)單位,3000K約等于3273℃)以上,水中的氫和氧便能分解。這種方法制氫效率高,但需要高倍聚光器才能獲得如此高的溫度。
(3)太陽能熱化學(xué)循環(huán)制氫。在水中加入一種或幾種中間物,然后加熱到較低溫度,經(jīng)歷不同的反應(yīng)階段,最終將水分解成氫和氧,而中間物不消耗,可循環(huán)使用。產(chǎn)生污染是這種制氫方法的主要問題。
(4)太陽能光化學(xué)分解水制氫。這一制氫過程與上述熱化學(xué)循環(huán)制氫有相似之處,在水中添加某種光敏物質(zhì)作催化劑,增加對陽光中長波光能的吸收,利用光化學(xué)反應(yīng)制氫。
(5)生物光合作用制氫。科學(xué)家發(fā)現(xiàn),蘭綠藻等許多藻類在無氧環(huán)境中適應(yīng)一段時(shí)間,在一定條件下都可以進(jìn)行光合放氫。目前,由于對光合作用和藻類放氫機(jī)理了解還不夠,藻類放氫的效率很低,目前還不能實(shí)現(xiàn)工業(yè)化產(chǎn)氫。
聲明:本網(wǎng)站尊重并保護(hù)知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時(shí)間:3.361秒