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