10geth傳輸
『壹』 求求求求求求求求求!!!哪錯了 C++++++++++++++++
void people::setN(char Name[]){
strcpy(Name,name);
}
參數不要與成員同名。所以你應該是寫反了。
void people::setN(char name[]){
strcpy(Name,name);
}
error C2039:: is not a member of 'people'
這個錯誤很 明顯, 你定義類的時候是寫的void setI(int i);
調用的時候多了一個"D".
『貳』 2007年寒假中所發生的10條地理新聞有什麼啊急!
在近30平方米的兩個牆面上,繪畫著文學名著《三國演義》中的24個經典故事,眾人物肖像栩栩如生,筆畫細膩而錯落有致。近日,陝西省文物考古工作人員在秦嶺深山中發現了這幅清代大型壁畫。
天台寺坐落在陝西省鳳縣紅花鋪鎮紅花溝的一座山頂上,整個寺廟建築呈四合院形式,中間是大殿,兩邊是偏殿。大殿左右兩側牆面上繪有《三國演義》中「桃園三結義」、「關聖人義釋曹操」等24個經典故事。壁畫上的人物衣服的褶皺、樹木的明暗均對比十分鮮明,壁畫上還有許多行書書法。
鳳縣文化館工作人員李根成介紹說,經考證,此壁畫應成畫於清代道光年間,從畫風上看是典型的民間工匠所為,像這樣保存完整的清代巨幅壁畫目前已不多見。此畫對研究古代繪畫技巧、風格可起到非常重要的作用。
2005年10月17日至18日,中國地理信息系統協會第九屆年會在浙江杭州召開。中國地理信息系統協會喻永昌秘書長主持開幕式。中國地理信息系統協會陳軍會長等致辭。會議的主題是「地理空間信息產業化與電子政務建設」。
北京時間25日凌晨,我國第22次南極考察格羅夫山隊共收集隕石5282塊。(一月)
目前世界最先進的深海探測船———日本「地球」號已整裝起錨,向地球更深處探索。美聯社25日報道說,「地球」號去年完工,裝載世界最大深海鑽頭,一間高技術流動實驗室,耗資573億日元(約合5億美元),現在它將開始為期一年的「試用期」。
中醫治療高血壓獲取重大成果發現氣候變化秘密、尋找有助於解釋生命起源的微生物和了解地震成因,是「地球」號三大目標。
隨著全球氣候日益變暖,沉睡在北極冰川下面的豐富資源引起了世界各國的關注。日本《產經新聞》18日發表了題為《北極資源之爭愈演愈烈》的文章,全文如下:
北冰洋周邊的俄羅斯、加拿大、美國、丹麥和挪威這5個國家,都對沉睡在北極豐富資源垂涎已久。由於全球變暖,各國為確保本國航線而採取的行動更加速了彼此間對北極圈資源利益的爭奪。北極圈也由此成為沿岸各國為爭奪資源而激烈「沖撞」的最前沿。
在一個位於加拿大埃爾斯米爾島和丹麥格陵蘭島之間、面積只有1.3平方公里的無人小島的歸屬問題上,加拿大和丹麥兩國僵持不下,就是因為那些隱藏在北冰洋海水下面的礦產和水產資源。
實際上,各國爭奪的「戰場」還不止這一個無人小島。挪威和俄羅斯在巴倫支海域展開了爭奪,俄羅斯和加拿大又都主張擁有從北冰洋沿岸到北極點這部分地區的主權。1961年《南極條約》生效,凍結了各國對南極主權的爭奪。但北極目前尚未簽訂這樣的條約,因此各國只能依據《聯合國海洋法公約》處理北極附近地區的資源開發、大陸架以及公海利用的事宜和爭端。因此,丹麥、挪威和加拿大紛紛向北冰洋派遣調查隊,積極地展開調查活動。
此外,全球變暖導致北極冰蓋面積迅速縮小,這也在一定程度上加速了各國對北極周邊地區的窺視。
北緯60度以北的地區是地下資源的寶庫。雖然受永久凍土和海水的妨礙,開發計劃一直原地踏步,但美國的研究機構仍然在2005年推測阿拉斯加州的北極圈附近擁有高達35萬億立方米的天然氣儲量。除了石油和天然氣以外,北極的鐵、鋅、鑽石等礦產資源的埋藏量也相當可觀,據說地球上尚未被人類發現的資源中有1/4蘊藏在北極。
由於中東局勢不穩定和海盜猖獗,蘇伊士運河和馬六甲海峽這兩條航線均存在很大風險。因此,日本也對北冰洋這條航線頗為關注。從事該航線可行性研究的日本海洋政策研究財團特別研究員北川弘光認為:「北冰洋航線能夠比向南繞行節省約一周的時間。同時,還能探索確保能源的新途徑,危機管理層面上的意義極其重大。」
來自歐洲和新加坡的科學家稱,他們發現了世界上最小的魚,這種魚生活在東南亞的泥碳沼澤中,即使完全發育成熟,大小也和大點兒的蚊子差不了多少。科學家們在英國皇家學會學報B公布了他們的發現,並稱這種名為Paedocypris progenetica的魚是鯉魚的遠親。
Paedocypris progenetica通體通明,生活在印尼蘇門達臘島和馬來西亞婆羅洲的高酸泥碳沼澤中,目前正受到當地林業和農業的威脅。它個頭非常小,科學家藉助立體顯微鏡才能測量其大小。Paedocypris progenetica的生活環境非常獨特,人們稱這些沼澤為「黑水」。下面的泥碳土有幾米厚,上面的水呈紅黑色,象濃茶一樣,酸性非常高,PH值為3和酸蘋果相同。
科學家們在蘇門答臘逮到了最小的Paedocypris progenetica
成年樣本,那是一條發育成熟的雌性魚,它從鼻子到尾巴全長7.9毫米,這使它不僅成為全世界最小的魚,同時也成為全世界最小的脊椎動物。它打破了此前一條西非矬蝦虎魚保持的紀錄,那條魚在完全性成熟後的體長是8毫米。
科學家們還在馬來西亞婆羅洲的沙撈越發現了一種相關的Paedocypris魚種P micromegethes,這種魚體長大約8.8毫米,是迄今為止發現的第二小的淡水脊椎動物。
新加坡國立大學「拉夫萊斯生物多樣性研究博物館」的馬萊斯-考特拉特和譚煜輝發現了這條魚。為他們提供協助的是「英國國立自然歷史博物館」的拉爾夫-布里茨和德國杜賓根「馬克斯-普蘭克發生生物學學院」的Kai-Erik Witte。
考特拉特稱P progenetica「頭骨沒有得到完全進化」,因此大腦裸露在外。為了適應所生存的特殊環境,它們的鰭已經有了很大的變化。雄性魚的骨盆帶前端有一塊很硬的肉墊,交配時有助於附在雌魚身上。他說:「發現了這么小的一種奇特的魚,表明我們對東南亞的生物多樣性了解還很少。更加嚴重的是,因為這種魚的棲息地正在以非常快的速度消失,此物種的命運令人堪憂。」
國科學院可可西里科考隊一行61人經過41天艱苦跋涉,於昨天下午6時到達青海省海西蒙古族藏族自治州茫崖鎮,實現了「人類首次穿越可可西里核心地帶」的壯舉。
今天,在當地舉行了簡短而隆重的歡迎儀式。記者撥通了科考隊隊長丁林的手機,「放心吧,」丁林在話機那邊笑答,「人員車輛毫發無損!」
中科院可可西里科考隊於9月20日從拉薩出發,65人的隊伍途經雙湖、普若崗日、多格錯仁、崗扎日、鯨魚湖奔赴茫崖,途中曾創下5輛越野車在50公里路途中陷車15次、歷時8小時的紀錄。12噸的通信保障車、30來噸重的油料車艱難跋涉,不得不於10月8日離開隊伍,提前拐到終點,逆向迎接科考隊。隨隊醫生、兩名廚師和1名司機也因身體原因中途離隊。
丁林說,「我們對核心區的地質情況、冰川、湖泊、河流、凍土、火山岩石、礦產資源、動植物分布狀況以及地層古生物情況都進行了考察,取得了寶貴的第一手資料,並第一次對這個地區的氣象狀況進行了數據信息收集。經過梳理後發現大致有九大收獲。」科考隊將於11月4日在北京舉行新聞發布會,詳細公布科考成果。
據英國《泰晤士報》報道,英國多位科學家30日稱,國際社會採取行動終止氣候變化的努力必須在20年內做出,否則全球變暖問題將無法逆轉。
到2025年,必須有技術能夠使每年的碳釋放量降低2.6%,這樣才能避免發生災難性的氣候變化。科學家們向英國皇家學會表示,如果稍遲一步,將意味著進入大氣中的二氧化碳的量無法降至足夠的標准。
全球變暖的狀況比2001年時人們擔心的還要惡劣,如果氣溫不保持溫定,融化的冰將使海平面增高至40英尺。在南極,一個足以把英國淹沒3次的冰區可能發生漂移並融化。
英國皇家學會30日發表的一份報告對氣候研究進行了綜合分析,報告稱如果整個國際社會不採取行動,氣態系統將遭到不可逆轉的破壞。
英國首相布萊爾專門為此報告撰寫了序言,他說:「現在已經非常清楚,200年來全球人口增至原來的6倍,隨著工業化和經濟的增長,溫室氣體的排放已經使全球變暖到了一個不堪承受的地步。」
「廷德氣候變化研究中心」的雷切爾-華倫博士昨天在皇家學會向聽眾席上的科學家和政策制定者們表示,各國政府還有20年做出努力的時間。該中心的另一位科學家特里-巴克爾稱,引入煙塵排放稅是有效控制工業部門溫室氣體排放量的好辦法。他設計的一套電腦模型顯示,如果政府同意徵收此稅,同時鼓勵反排放技術方面的投資,在幾十年的時間內溫室氣體排放量將大大降低。
「英國南極勘查」組織的克里斯-拉普里稱,從2001年至今,西南極冰原已經在以驚人的速度碎裂。他的同事,大衛-沃恩昨天說格陵蘭島和西南極冰的融化,可能分別將使海平面上升16英尺以上。
受天文、水文和氣象因素的共同影響 特大咸潮將再襲珠三角
據廣東天文學會預告:因受天文、水文和氣象因素的共同影響,今年一月二十五日至三十日,珠江三角洲特大咸潮將會再次卷土重來。
磨刀門水道的大涌口水閘,將會連續幾天出現每升含氯量超過六千毫克的特大咸潮。由於今年一月中旬珠江實施壓咸補淡調水工程,有關部門已儲備了充足的淡水。盡管這次特大咸潮來勢洶洶,但不會影響廣東省珠海、中山和番禺的水廠供水和飲水安全。
造成這次特大咸潮卷土重來的天文因素是:一月二十五日,月球運行到地球南回歸線的上空,從而出現「回歸大潮」;一月二十九日,太陽、月球和地球排成一條直線(朔),從而形成「朔望大潮」;一月三十日,月球距離地球最近,從而發生「近地大潮」。這三個大潮在短時間內匯合和疊加,使咸潮上溯珠江相當顯著。
造成這次特大咸潮卷土重來的氣象因素是:廣州地區從去年九月至今年一月,連續五個月的雨量比常年明顯偏少。其中從去年九月二十八日至今,廣州雨量只有十多毫米,不僅比常年同期偏少,而且比上三年的同期都偏少。
再有,去年中國出現的台風,大多數在浙江和福建沿海登陸,在廣東沿海登陸嚴重偏少。因此,去年夏秋季節,廣東省沿海降雨偏少,導致該省沿海海水含氯度偏高。因而去秋今冬,珠江三角洲咸潮出現偏早,咸潮含氯度偏高是大有原因的。
造成這次特大咸潮卷土重來的水文因素是:珠江上游來水銳減。今年一月上旬,珠江流域實施歷史上第二次調水壓咸,收到了良好的效果。廣東省珠海、中山和番禺等地,共搶抽淡水三千五百萬立方米(噸),有力地保障了今年春節期間數百萬人民群眾的用水和飲水安全。
調水壓咸期間,西江梧州水文站的水位大幅度提高,最大徑流量每秒超過二千二百立方米。由於「一春江水向東流」,使珠江下游的含氯度顯著降低。其中橫門水道的小隱水閘,在一月二十日和二十二日,連續七十二個小時不見咸潮蹤影,這是自去年十一月三十日以來首次出現長時間無咸潮的可喜現象。由於一月二十四日,梧州水文站徑流量已降至每秒一千五百立方米以下。上游來水減少,意味著咸潮反彈。
預計這次特大咸潮將在一月三十一日以後明顯減弱,未來珠江三角洲的咸潮狀況如何,取決於珠江流域的降雨量。(《中國新聞網》郭軍 李建基)
廣州度過55年來最暖春節
新華網廣州2月1日電(黃忠、肖文峰)廣州正在度過55年來最暖和的一個春節。大年初三,廣州市的最高氣溫達到28.4攝氏度,突破了1951以來廣州市1月份和2月上旬的最高氣溫紀錄。
據廣東省氣象台介紹,年初一至初三,廣東省大部分地區陽光普照,最高氣溫普遍在26攝氏度至29攝氏度之間,年初四與年初五兩天廣州的溫暖天氣仍將繼續。由於有小股冷空氣1日開始南下,2月1日,粵北地區的氣溫開始下降3至4攝氏度,其他地區天氣暖和。
廣州溫暖的天氣將在2月2日夜間開始變化。據氣象部門預報,從2日夜間到3日,廣州的氣溫將迅速降到14攝氏度至20攝氏度之間,到4日,廣州的天氣將徹底「變臉」,天氣轉陰,氣溫降至12攝氏度至18攝氏度。
氣候惡劣導致波蘭展覽大廳坍塌事故營救困難
中新網1月29日電據美國CNN報道:波蘭南部卡托維茲附近霍茹夫一個展覽廳28日發生屋頂倒塌事故,至少造成20人死亡、數百人受傷。事故發生後,波蘭有關部門迅速派出人員展開營救,大約88人被送往醫院救治,但是仍然有約100人在嚴寒中被困在屋頂下。
但是由於當地氣候十分惡劣導致展覽大廳坍塌事故的營救工作很困難,目前營救人員正使用起吊設備和特種犬設法營救被困人員。最近,霍茹夫地區曾降大雪,部分地區的積雪厚度達30厘米,現在營救現場的氣溫已經降到了零下18攝氏度。救援人員不停的向被困人員喊話,要他們保持鎮靜,並告訴他們救援工作正在緊張的進行。 在此次事故中,共有數百平方米的展廳屋頂發生倒塌。事故發生時,展廳內至少有500人正在觀看一場信鴿展。
『叄』 C放言編程:主函數中有10個學生3門功課的信息,存放在二維數組中,用自定義函數作如下要求的操作,咋編
設三門功課分別為語文、數學、英語。
代碼文本:
#include "stdio.h"
void getAVR(int (*p)[3],int n){
int i,j,s;
char str[3][5]={"語文","數學","英語"};
printf(" 課程 平均分 ================ ");
for(i=0;i<3;i++){
printf(" %s ",str[i]);
for(s=j=0;j<n;s+=p[j++][i]);
printf("%.2f ",s/10.0);
}
}
void getH_L(int (*p)[3],int n){
char i,j,Hi,Lo,str[3][5]={"語文","數學","英語"};
printf(" 課程 最高分 最低分 ======================== ");
for(i=0;i<3;i++){
printf(" %s ",str[i]);
for(Hi=Lo=p[i][j=0];j<10;j++)
if(Hi<p[i][j])
Hi=p[i][j];
else if(Lo>p[i][j])
Lo=p[i][j];
printf(" %d %d ",Hi,Lo);
}
}
void getNofF(int (*p)[3],int n){
char i,j,f,str[3][5]={"語文","數學","英語"};
printf(" 課程 不及格人數 ==================== ");
for(i=0;i<3;i++){
printf(" %s ",str[i]);
for(f=j=0;j<n;f+=p[j++][i]<60);
printf(" %d ",f);
}
}
int main(int argc,char *argv[]){
int a[10][3]={{70,86,91},{55,89,97},{96,69,59},{60,77,88},
{78,77,61},{87,76,93},{66,99,41},{82,80,71},
{92,64,67},{81,67,79}};
getAVR(a,10);
putchar(' ');
getH_L(a,10);
putchar(' ');
getNofF(a,10);
putchar(' ');
return 0;
}
『肆』 java編寫-一個程序, 有一個標題為「計算圓柱形」的窗口,布局策略為Flowlayout 布局。
摘要 import java.util.Scanner;
『伍』 質量效應3 塔莉存活
那個其實不能選楷模,塔莉存活和geth個體存活只能二選一。上傳的話,geth會重創奎利艦隊,奎利人反攻母星失敗,塔莉悲憤而死。不上傳,geth個體會和薛哥反目,試圖殺掉薛哥,這時候塔莉會幹掉個體。geth大敗,奎利人回到母星,塔莉good end。當然,選擇不同會導致之後得到的兵力有所不同。 至於克洛根那個到那裡基本就結束了,沒啥好說。 另外,隊員來到你屋不見得是攻略flag,一般來說要有明顯表達愛意的橋段才行。 我的經驗就這樣,你可以參考一下
『陸』 c++建立返回值為成員指針的成員函數的問題 求大神解答
#include<iostream>
usingnamespacestd;
intconstMAXLEN=10;//Time的字元存儲長度
classTime{
public:
Time(inth=0,intm=0,ints=0){
hour=h;
minute=m;
second=s;
}
voidSeth(inth){hour=h;}
voidSetm(intm){minute=m;}
voidSets(ints){second=s;}
voidShow()const{printf("%02d:%02d:%02d ",hour,minute,second);}
intGeth()const{returnhour;}
intGetm()const{returnminute;}
intGets()const{returnsecond;}
private:
inthour;
intminute;
intsecond;
};
classDynamicTimeArray{
public:
explicitDynamicTimeArray(intn=0){
if(n>0){
point=newTime[n];
size=n;
}
else{
point=NULL;
size=0;
}
}
DynamicTimeArray(char*tarr[],intn);
voidsort();
intsearch(constTime&t)const;
booledit(constTime&t);
boolmodify(intindex);
voiddisplay();
~DynamicTimeArray(){delete[]point;}
private:
Time*point;
intsize;
};
DynamicTimeArray::DynamicTimeArray(char*tarr[],intn){
point=newTime[n];
inth,m,s;
for(inti=0;i<n;++i){
sscanf(tarr[i],"%d:%d:%d",&h,&m,&s);
point[i].Seth(h);
point[i].Setm(m);
point[i].Sets(s);
}
size=n;
}
voidDynamicTimeArray::sort(){
inti,j,k;
charfront[MAXLEN],next[MAXLEN];
Timet;
for(i=0;i<size-1;++i){
k=i;
sprintf(front,"%02d:%02d:%02d",point[i].Geth(),point[i].Getm(),point[i].Gets());
for(j=i+1;j<size;++j){
sprintf(next,"%02d:%02d:%02d",point[j].Geth(),point[j].Getm(),point[j].Gets());
if(strcmp(front,next)>0){
k=j;
sprintf(front,"%02d:%02d:%02d",point[k].Geth(),point[k].Getm(),point[k].Gets());
}
}
if(k!=i){
t=point[k];
point[k]=point[i];
point[i]=t;
}
}
}
intDynamicTimeArray::search(constTime&t)const{
intlow=0,high=size-1,mid,cmpres;
chardest[MAXLEN],tmp[MAXLEN];
sprintf(dest,"%02d:%02d:%02d",t.Geth(),t.Getm(),t.Gets());
while(low<=high){
mid=(low+high)/2;
sprintf(tmp,"%02d:%02d:%02d",point[mid].Geth(),point[mid].Getm(),point[mid].Gets());
cmpres=strcmp(dest,tmp);
if(cmpres<0)high=mid-1;
elseif(cmpres==0)returnmid;
elselow=mid+1;
}
return-1;
}
boolDynamicTimeArray::edit(constTime&t){
intn,res=search(t);
if(res<0){
cout<<"沒找到:";
t.Show();
returnfalse;
}
t.Show();
cout<<point[res].Geth()<<"改為:";
cin>>n;
point[res].Seth(n);
cout<<point[res].Getm()<<"改為:";
cin>>n;
point[res].Setm(n);
cout<<point[res].Gets()<<"改為:";
cin>>n;
point[res].Sets(n);
returntrue;
}
boolDynamicTimeArray::modify(intindex){
intn;
if(index<0||index>size-1){
cout<<"數組索引越界。 ";
returnfalse;
}
point[index].Show();
cout<<point[index].Geth()<<"改為:";
cin>>n;
point[index].Seth(n);
cout<<point[index].Getm()<<"改為:";
cin>>n;
point[index].Setm(n);
cout<<point[index].Gets()<<"改為:";
cin>>n;
point[index].Sets(n);
returntrue;
}
voidDynamicTimeArray::display(){
for(inti=0;i<size;++i)
point[i].Show();
}
intmain(){
char*st[MAXLEN]={"18:56:32","25:01:01","31:10:31","10:03:20","12:12:31","21:03:08"};
inth,m,s;
DynamicTimeArrayta(st,6);
Timet;
cout<<"排序前: ";
ta.display();
ta.sort();
cout<<"排序後: ";
ta.display();
sscanf(st[1],"%d:%d:%d",&h,&m,&s);
t.Seth(h);
t.Setm(m);
t.Sets(s);
ta.edit(t);
ta.modify(5);
cout<<"修改後: ";
ta.sort();
ta.display();
return0;
}
『柒』 創建節點目錄時不需要拷貝公鏈下的哪個文件
摘要 您好,1. 創建密碼文件 > echo 「111111」 > .passwd
『捌』 以太坊是什麼丨以太坊開發入門指南
以太坊是什麼丨以太坊開發入門指南
很多同學已經躍躍欲試投入到區塊鏈開發隊伍當中來,可是又感覺無從下手,本文將基於以太坊平台,以通俗的方式介紹以太坊開發中涉及的各晦澀的概念,輕松帶大家入門。
以太坊是什麼
以太坊(Ethereum)是一個建立在區塊鏈技術之上, 去中心化應用平台。它允許任何人在平台中建立和使用通過區塊鏈技術運行的去中心化應用。
對這句話不理解的同學,姑且可以理解為以太坊是區塊鏈里的Android,它是一個開發平台,讓我們就可以像基於Android Framework一樣基於區塊鏈技術寫應用。
在沒有以太坊之前,寫區塊鏈應用是這樣的:拷貝一份比特幣代碼,然後去改底層代碼如加密演算法,共識機制,網路協議等等(很多山寨幣就是這樣,改改就出來一個新幣)。
以太坊平台對底層區塊鏈技術進行了封裝,讓區塊鏈應用開發者可以直接基於以太坊平台進行開發,開發者只要專注於應用本身的開發,從而大大降低了難度。
目前圍繞以太坊已經形成了一個較為完善的開發生態圈:有社區的支持,有很多開發框架、工具可以選擇。
智能合約
什麼是智能合約
以太坊上的程序稱之為智能合約, 它是代碼和數據(狀態)的集合。
智能合約可以理解為在區塊鏈上可以自動執行的(由事件驅動的)、以代碼形式編寫的合同(特殊的交易)。
在比特幣腳本中,我們講到過比特幣的交易是可以編程的,但是比特幣腳本有很多的限制,能夠編寫的程序也有限,而以太坊則更加完備(在計算機科學術語中,稱它為是「圖靈完備的」),讓我們就像使用任何高級語言一樣來編寫幾乎可以做任何事情的程序(智能合約)。
智能合約非常適合對信任、安全和持久性要求較高的應用場景,比如:數字貨幣、數字資產、投票、保險、金融應用、預測市場、產權所有權管理、物聯網、點對點交易等等。
目前除數字貨幣之外,真正落地的應用還不多(就像移動平台剛開始出來一樣),相信1到3年內,各種殺手級會慢慢出現。
編程語言:Solidity
智能合約的默認的編程語言是Solidity,文件擴展名以.sol結尾。
Solidity是和JavaScript相似的語言,用它來開發合約並編譯成以太坊虛擬機位元組代碼。
還有長像Python的智能合約開發語言:Serpent,不過建議大家還是使用Solidity。
Browser-Solidity是一個瀏覽器的Solidity IDE, 大家可以點進去看看,以後我們更多文章介紹Solidity這個語言。
運行環境:EVM
EVM(Ethereum Virtual Machine)以太坊虛擬機是以太坊中智能合約的運行環境。
Solidity之於EVM,就像之於跟JVM的關系一樣,這樣大家就容易理解了。
以太坊虛擬機是一個隔離的環境,在EVM內部運行的代碼不能跟外部有聯系。
而EVM運行在以太坊節點上,當我們把合約部署到以太坊網路上之後,合約就可以在以太坊網路中運行了。
合約的編譯
以太坊虛擬機上運行的是合約的位元組碼形式,需要我們在部署之前先對合約進行編譯,可以選擇Browser-Solidity Web IDE或solc編譯器。
合約的部署
在以太坊上開發應用時,常常要使用到以太坊客戶端(錢包)。平時我們在開發中,一般不接觸到客戶端或錢包的概念,它是什麼呢?
以太坊客戶端(錢包)
以太坊客戶端,其實我們可以把它理解為一個開發者工具,它提供賬戶管理、挖礦、轉賬、智能合約的部署和執行等等功能。
EVM是由以太坊客戶端提供的。
Geth是典型的開發以太坊時使用的客戶端,基於Go語言開發。 Geth提供了一個互動式命令控制台,通過命令控制台中包含了以太坊的各種功能(API)。Geth的使用我們之後會有文章介紹,這里大家先有個概念。
Geth控制台和Chrome瀏覽器開發者工具里的面的控制台是類似,不過是跑在終端里。
相對於Geth,Mist則是圖形化操作界面的以太坊客戶端。
如何部署
智能合約的部署是指把合約位元組碼發布到區塊鏈上,並使用一個特定的地址來標示這個合約,這個地址稱為合約賬戶。
以太坊中有兩類賬戶:
· 外部賬戶
該類賬戶被私鑰控制(由人控制),沒有關聯任何代碼。
· 合約賬戶
該類賬戶被它們的合約代碼控制且有代碼與之關聯。
和比特幣使用UTXO的設計不一樣,以太坊使用更為簡單的賬戶概念。
兩類賬戶對於EVM來說是一樣的。
外部賬戶與合約賬戶的區別和關系是這樣的:一個外部賬戶可以通過創建和用自己的私鑰來對交易進行簽名,來發送消息給另一個外部賬戶或合約賬戶。
在兩個外部賬戶之間傳送消息是價值轉移的過程。但從外部賬戶到合約賬戶的消息會激活合約賬戶的代碼,允許它執行各種動作(比如轉移代幣,寫入內部存儲,挖出一個新代幣,執行一些運算,創建一個新的合約等等)。
只有當外部賬戶發出指令時,合同賬戶才會執行相應的操作。
合約部署就是將編譯好的合約位元組碼通過外部賬號發送交易的形式部署到以太坊區塊鏈上(由實際礦工出塊之後,才真正部署成功)。
運行
合約部署之後,當需要調用這個智能合約的方法時只需要向這個合約賬戶發送消息(交易)即可,通過消息觸發後智能合約的代碼就會在EVM中執行了。
Gas
和雲計算相似,佔用區塊鏈的資源(不管是簡單的轉賬交易,還是合約的部署和執行)同樣需要付出相應的費用(天下沒有免費的午餐對不對!)。
以太坊上用Gas機制來計費,Gas也可以認為是一個工作量單位,智能合約越復雜(計算步驟的數量和類型,佔用的內存等),用來完成運行就需要越多Gas。
任何特定的合約所需的運行合約的Gas數量是固定的,由合約的復雜度決定。
而Gas價格由運行合約的人在提交運行合約請求的時候規定,以確定他願意為這次交易願意付出的費用:Gas價格(用以太幣計價) * Gas數量。
Gas的目的是限制執行交易所需的工作量,同時為執行支付費用。當EVM執行交易時,Gas將按照特定規則被逐漸消耗,無論執行到什麼位置,一旦Gas被耗盡,將會觸發異常。當前調用幀所做的所有狀態修改都將被回滾, 如果執行結束還有Gas剩餘,這些Gas將被返還給發送賬戶。
如果沒有這個限制,就會有人寫出無法停止(如:死循環)的合約來阻塞網路。
因此實際上(把前面的內容串起來),我們需要一個有以太幣余額的外部賬戶,來發起一個交易(普通交易或部署、運行一個合約),運行時,礦工收取相應的工作量費用。
以太坊網路
有些著急的同學要問了,沒有以太幣,要怎麼進行智能合約的開發?可以選擇以下方式:
選擇以太坊官網測試網路Testnet
測試網路中,我們可以很容易獲得免費的以太幣,缺點是需要發很長時間初始化節點。
使用私有鏈
創建自己的以太幣私有測試網路,通常也稱為私有鏈,我們可以用它來作為一個測試環境來開發、調試和測試智能合約。
通過上面提到的Geth很容易就可以創建一個屬於自己的測試網路,以太幣想挖多少挖多少,也免去了同步正式網路的整個區塊鏈數據。
使用開發者網路(模式)
相比私有鏈,開發者網路(模式)下,會自動分配一個有大量余額的開發者賬戶給我們使用。
使用模擬環境
另一個創建測試網路的方法是使用testrpc,testrpc是在本地使用內存模擬的一個以太坊環境,對於開發調試來說,更方便快捷。而且testrpc可以在啟動時幫我們創建10個存有資金的測試賬戶。
進行合約開發時,可以在testrpc中測試通過後,再部署到Geth節點中去。
更新:testrpc 現在已經並入到Truffle 開發框架中,現在名字是Ganache CLI。
Dapp:去中心化的應用程序
以太坊社區把基於智能合約的應用稱為去中心化的應用程序(DecentralizedApp)。如果我們把區塊鏈理解為一個不可篡改的資料庫,智能合約理解為和資料庫打交道的程序,那就很容易理解Dapp了,一個Dapp不單單有智能合約,比如還需要有一個友好的用戶界面和其他的東西。
Truffle
Truffle是Dapp開發框架,他可以幫我們處理掉大量無關緊要的小事情,讓我們可以迅速開始寫代碼-編譯-部署-測試-打包DApp這個流程。
總結
我們現在來總結一下,以太坊是平台,它讓我們方便的使用區塊鏈技術開發去中心化的應用,在這個應用中,使用Solidity來編寫和區塊鏈交互的智能合約,合約編寫好後之後,我們需要用以太坊客戶端用一個有餘額的賬戶去部署及運行合約(使用Truffle框架可以更好的幫助我們做這些事情了)。為了開發方便,我們可以用Geth或testrpc來搭建一個測試網路。
註:本文中為了方便大家理解,對一些概念做了類比,有些嚴格來不是准確,不過我也認為對於初學者,也沒有必要把每一個概念掌握的很細致和准確,學習是一個逐步深入的過程,很多時候我們會發現,過一段後,我們會對同一個東西有不一樣的理解。
『玖』 java 上機試驗:類與對象的試驗
public class MyRectangle {
//四個私有變數
private int xUp, yUp;
private int xDown, yDown;
//空構造函數
public MyRectangle() {
}
//帶有四個參數的構造函數,並初始化
public MyRectangle(int xup, int yup, int xdown, int ydown) {
this.xUp = xup;
this.yUp = yup;
this.xDown = xdown;
this.yDown = ydown;
}
//獲取寬度
public int getW() {
return this.xDown - this.xUp;
}
//獲取高度
public int getH() {
return this.yUp - this.yDown;
}
//計算面積
public int area() {
return this.getW() * this.getH();
}
//重寫toString返回寬度、高度、面積
public String toString() {
return ("width=: " + this.getW() + "\nheight=: " + this.getH() + "\narea=: " + this.area() + "");
}
public static void main(String[] args) {
//實例化對象
MyRectangle myrectangle = new MyRectangle(10, 30, 20, 10);
//列印輸出
System.out.println(myrectangle);
}
}
測試結果:
width=: 10
height=: 20
area=: 200