英語(yǔ)單詞的產(chǎn)生是漢英兩種語(yǔ)言雙向交流的產(chǎn)物,一些帶有中國(guó)特色的名稱(chēng)和概念進(jìn)入了 英語(yǔ)詞匯,同時(shí)還有一些英語(yǔ)詞匯進(jìn)入了漢語(yǔ),在文化環(huán)境中衍生出新的含義。下面給大家整理了小學(xué)英語(yǔ)單詞分類(lèi)匯總,希望對(duì)大家有所幫助!
曹妃甸網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,曹妃甸網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為曹妃甸數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的曹妃甸做網(wǎng)站的公司定做!
小學(xué)英語(yǔ)單詞分類(lèi)匯總
交通工具
car小汽車(chē) bus公共汽車(chē) bike自行車(chē) plane飛機(jī)
train火車(chē) ship輪船 subway地鐵 taxi出租車(chē)
jeep吉普車(chē) motor摩托車(chē) boat小船 on foot步行
食物飲料三餐水果
breakfast早餐 lunch午飯 supper晚飯 dinner晚飯,正餐 meals
(food)
rice 米飯 noodles面條 egg蛋 cake蛋糕 bread面包
tofu豆腐 hot dog熱狗 hamburger漢堡包 noodles面條
soup湯 chicken雞肉 meat肉 pork豬肉 mutton羊肉
eggplant 茄子 beef牛肉 vegetable蔬菜 fish魚(yú)
potato 土豆 green beans 青豆 tomato 西紅柿
(drink)
coffee咖啡 tea茶 water水 juice果汁 Coke可樂(lè) ice-cream冰激凌 ice冰 milk牛奶
(fruit)
orange桔子 apple蘋(píng)果 pear梨 strawberry草莓 banana香蕉 grapes葡萄 lemon檸檬 peach桃子 watermelon西瓜
職業(yè) (jobs)
doctor醫(yī)生 driver司機(jī) singer歌手 farmer農(nóng)民
nurse護(hù)士 teacher教師 student學(xué)生 writer作家
actor男演員 actress女演員 cleaner清潔工
engineer工程師 TV report 電視臺(tái)記者 artist 畫(huà)家
policeman 警察 accountant 會(huì)計(jì) salesperson銷(xiāo)售員 player運(yùn)動(dòng)員
動(dòng)物類(lèi) (animals)
cat貓 pig豬 dog狗 rabbit兔子 mouse老鼠 elephant大象
panda熊貓 tiger老虎 duck鴨子 fish魚(yú) bird鳥(niǎo) monkey猴子
chicken小雞 lion獅子 sheep綿羊 horse馬 giraffe長(zhǎng)頸鹿
goat山羊 wolf狼 goose鵝 snake蛇 bear熊 kangaroo袋鼠 cow奶牛
顏色 (colour)
blue藍(lán) red紅 white白 yellow黃 green綠 black黑
pin紅 purple紫 brown棕 orange橙
身體部位 (body)
head 頭 hair頭發(fā) eye眼睛 ear耳朵 nose鼻子 face臉
neck 脖子 arm手臂 leg腿 foot腳 mouth嘴 hand手 finger手指 toe 腳趾
數(shù)字 (numbers)
one一 two二 three三 four四 five五 six六 seven七 eight八 nine九 ten 十
eleven十一 twelve十二 thirteen十三 fourteen十四 fifteen十五
sixteen十六 seventeen十七 eighteen十八 nineteen十九
twenty二十 twenty-one二十一 thirty三十 forty四十 fifty五十
sixty六十 seventy七十 eighty八十 ninety九十 one hundred一百
first 第一 second第二 third第三 forth第四 fifth第五 sixth第六 seventh第七 eighth第八 ninth第九 tenth第十
時(shí)間 日期 (time)
year年 season四季 week周 A.M. (a.m.)
morning上午 P.M. (p.m.) afternoon下午 day日
spring春天 summer夏天 fall秋天 winter冬天 yesterday昨天 tomorrow 明天
Monday星期一 Tuesday星期二 Wednesday星期三 Thursday星期四 Friday星期五 Saturday星期六 Sunday星期天 weekend周末
Jan.(January) 一月 Feb. (February) 二月 Mar. (March) 三月
Apr. (April) 四月 May五月 June六月 July七月
Aug. (August) 八月 Sept. (September) 九月
Oct. (October) 十月 Nov. (November) 十一月
Dec. (December) 十二月
天氣和溫度 (weather)
cold冷的 cool涼爽的 warm溫暖的 hot熱
sunny晴朗的 cloudy多云的 windy有風(fēng)的
rainy下雨的 snowy下雪的
反義詞
big---small大的/小的 long ---short長(zhǎng)的/短的
tall--- short高的/矮的 thin--- fat瘦的/胖的
heavy---light重的/輕的 happy--- sad高興的/悲傷的
open---close打開(kāi)/關(guān)上 good--- bad好的/壞的
new---old新的/舊的 old ---young年長(zhǎng)的/年青的
cold ---hot冷的/熱的 far---near 近的/遠(yuǎn)的
right---left右邊/左邊 east---west東面/西面
south---north南面/北面 go---come 來(lái)/去
up---down 上/下 here---there這里/那里
衣服(clothes)
T-shirt T恤衫 shirt襯衫 skirt短裙 shoes鞋子
dress連衣裙 hat帽子 jacket 夾克衫 socks襪子
sweater毛線(xiàn)衣 coat外套 boots靴子 jeans牛仔褲
shorts短褲 pants長(zhǎng)褲 slippers拖鞋 sandals涼鞋
vest背心 sneakers運(yùn)動(dòng)鞋
地方(places)
home家 room房間 bedroom臥室 bathroom衛(wèi)生間
kitchen廚房 living room客廳 study書(shū)房
school學(xué)校 classroom教室 gym體育館 playground操場(chǎng) canteen餐廳
park公園 art room美術(shù)室 farm農(nóng)場(chǎng) library圖書(shū)館
teacher’s office老師辦室 computer room計(jì)算機(jī)教室
music room音樂(lè)教室 post office郵局 hospital醫(yī)院
cinema電影院 bookstore書(shū)店 nature park自然公園
zoo動(dòng)物園 bank銀行 garden花園 pet shop寵物店
supermarket超市 museum博物館 shop 商店
代詞
I 我 you你 he他 she她 it它
we我們 you 你們 they 他(她、它)們
my我的 your你的 his 他的 her她的 its它的
our我們的 your你們的. their他(她、它)們的
方位及方位介詞
south南 north北 east東 west西 left左邊 right右邊
in在…里 on在…上 under在…下面 near在…旁邊
behind在…后邊 next to與…相鄰 over在…上面
in front of在…前面
心情及患病
happy高興的 sad傷心的 bored無(wú)聊的 angry生氣的
excited興奮的 tired疲勞的 sick有病的 hurt疼痛
have a fever發(fā)燒 have a cold感冒
have a toothache牙疼 have a headache頭疼
have a sore throat喉嚨疼
自然景物
sky天空 sun太陽(yáng) cloud云 wind風(fēng) rain雨 star星星
moon月亮 air空氣 rainbow彩虹 river河流 lake湖泊
stream小溪 sea大海 bridge橋 forest森林 path小道
road公路 mountain山 building建筑物 city城市 village鄉(xiāng)村
疑問(wèn)詞
what什么 what day星期幾 what color什么顏色
what time什么時(shí)間 why為什么 who 誰(shuí) where哪里
which one哪一個(gè) when什么時(shí)候 which哪一個(gè)
how多么,怎樣 how old幾歲 how many多少
how tall 多高 how much多少錢(qián) how heavy多重
國(guó)家 語(yǔ)言及首都
China中國(guó) Chinese中 國(guó) 的 ,中 國(guó) 人的,漢語(yǔ) Beijing 北京
England英國(guó) English英 語(yǔ) ,英國(guó)的,英 國(guó) 人 London倫敦 t
he USA美國(guó) America美國(guó)的,美國(guó)人 New York紐約
Japan日本 Canada加拿大 Austrian澳大利亞
植物(plants)
tree樹(shù) flower花 grass草 seed種子 sprout苗 leaf葉子
動(dòng)詞詞組
swim游泳 fly飛 jump跳 walk走 run跑 sleep睡覺(jué)
drink water喝水 get up起床 go to bed起床
go home回家 go to school去上學(xué) go swimming去游泳
go fishing去釣魚(yú) go shopping買(mǎi)東西 go hiking去遠(yuǎn)足
go skiing滑雪 go skating滑旱冰 go ice-skating滑冰
play sports做運(yùn)動(dòng) play ping-pong打乒乓
play football踢足球 play the piano彈鋼琴
play chess 下棋 play computer games玩電腦游戲
play the violin拉小提琴 listen to music聽(tīng)音樂(lè) watch TV看電視
read a book看書(shū) write a letter寫(xiě)信 write an e-mail寫(xiě)郵件
write a report寫(xiě)報(bào)告 take pictures拍照片
sing and dance唱歌跳舞 draw pictures 畫(huà)畫(huà)
fly kites 放風(fēng)箏 watch insects觀察昆蟲(chóng) make kites 做風(fēng)箏
pick up leaves摘樹(shù)葉 do an experiment做實(shí)驗(yàn)
catch butterflies抓蝴蝶 count insects數(shù)昆蟲(chóng)
collect stamps收集郵票 have a picnic野餐
do homework做家庭作業(yè) eat breakfast吃早餐
do morning exercises晨練 have English class上英語(yǔ)課
plant trees種樹(shù) visit grandparents看望爺爺奶奶
make a snowman堆雪人 ride a bike騎車(chē)
climb a mountain爬山 row a boat 劃船 take a trip 旅游
do housework做家務(wù) clean the room打掃房間
cook dinner做晚飯 make the bed鋪床
wash clothes洗衣服 do the dishes洗碗
sweep the floor掃地 set the table擺飯桌
answer the phone接電話(huà) water the flowers澆花 empty the trash倒垃圾
文具、家具等物品
bag書(shū)包 pen鋼筆 pencil鉛筆 ruler尺子 eraser橡皮
book書(shū) pencil-case鉛筆盒 bed床 light燈 sofa沙發(fā)
chair椅子 desk課桌 table桌子 wall墻 TV電視 door門(mén)
window窗戶(hù) floor地板 board寫(xiě)字板 glass玻璃杯
fan風(fēng)扇 mirror鏡子 curtain窗簾 trash bin垃圾箱
closet衣柜 phone電話(huà) box盒子 shelf書(shū)架
fridge冰箱 computer電腦,計(jì)算機(jī) teacher’s desk講臺(tái)
sharpener卷筆刀 notebook筆記本 dictionary詞典
comic book漫畫(huà)書(shū) post card明信片 newspaper報(bào)紙
story-book故事書(shū) picture圖片,照片
性別及家庭成員
boy 男孩 girl女孩 Mrs 女士 Mr.先生 Miss小姐
mother母親 mum媽媽(口語(yǔ)) father 父親 dad爸爸(口語(yǔ)) parents 父母 grand
mother祖母 grandma奶奶(口語(yǔ)) grandfather祖父 grandpa爺爺(口語(yǔ))
uncle叔叔 aunt阿姨 sister姐妹 brother兄、弟 son兒子 baby嬰兒 friend朋友
這就是著名的八皇后問(wèn)題。八個(gè)皇后在排列時(shí)不能同在一行、一列或一條斜
線(xiàn)上。在8!=40320種排列中共有92種解決方案。
“八皇后”動(dòng)態(tài)圖形的實(shí)現(xiàn)
八皇后問(wèn)題是一個(gè)古老而著名的問(wèn)題,是回溯算法的典型例題。該問(wèn)題是十九世紀(jì)著名的數(shù)學(xué)家高斯1850年提出:在8X8格的國(guó)際象棋上擺放八個(gè)皇后,使其不能互相攻擊,即任意兩個(gè)皇后都不能處于同一行、同一列或同一斜線(xiàn)上,問(wèn)有多少種擺法。
高斯認(rèn)為有76種方案。1854年在柏林的象棋雜志上不同的作者發(fā)表了40種不同的解,后來(lái)有人用圖論的方法解出92種結(jié)果。
對(duì)于八皇后問(wèn)題的實(shí)現(xiàn),如果結(jié)合動(dòng)態(tài)的圖形演示,則可以使算法的描述更形象、更生動(dòng),使教學(xué)能產(chǎn)生良好的效果。下面是筆者用Turbo C實(shí)現(xiàn)的八皇后問(wèn)題的圖形程序,能夠演示全部的92組解。八皇后問(wèn)題動(dòng)態(tài)圖形的實(shí)現(xiàn),主要應(yīng)解決以下兩個(gè)問(wèn)題。
1.回溯算法的實(shí)現(xiàn)
(1)為解決這個(gè)問(wèn)題,我們把棋盤(pán)的橫坐標(biāo)定為i,縱坐標(biāo)定為j,i和j的取值范圍是從1到8。當(dāng)某個(gè)皇后占了位置(i,j)時(shí),在這個(gè)位置的垂直方向、水平方向和斜線(xiàn)方向都不能再放其它皇后了。用語(yǔ)句實(shí)現(xiàn),可定義如下三個(gè)整型數(shù)組:a[8],b[15],c[24]。其中:
a[j-1]=1 第j列上無(wú)皇后
a[j-1]=0 第j列上有皇后
b[i+j-2]=1 (i,j)的對(duì)角線(xiàn)(左上至右下)無(wú)皇后
b[i+j-2]=0 (i,j)的對(duì)角線(xiàn)(左上至右下)有皇后
c[i-j+7]=1 (i,j)的對(duì)角線(xiàn)(右上至左下)無(wú)皇后
c[i-j+7]=0 (i,j)的對(duì)角線(xiàn)(右上至左下)有皇后
(2)為第i個(gè)皇后選擇位置的算法如下:
for(j=1;j=8;j++) /*第i個(gè)皇后在第j行*/
if ((i,j)位置為空)) /*即相應(yīng)的三個(gè)數(shù)組的對(duì)應(yīng)元素值為1*/
{占用位置(i,j) /*置相應(yīng)的三個(gè)數(shù)組對(duì)應(yīng)的元素值為0*/
if i8
為i+1個(gè)皇后選擇合適的位置;
else 輸出一個(gè)解
}
2.圖形存取
在Turbo C語(yǔ)言中,圖形的存取可用如下標(biāo)準(zhǔn)函數(shù)實(shí)現(xiàn):
size=imagesize(x1,y1,x2,y2) ;返回存儲(chǔ)區(qū)域所需字節(jié)數(shù)。
arrow=malloc(size);建立指定大小的動(dòng)態(tài)區(qū)域位圖,并設(shè)定一指針arrow。
getimage(x1,y1,x2,y2,arrow);將指定區(qū)域位圖存于一緩沖區(qū)。
putimage(x,y,arrow,copy)將位圖置于屏幕上以(x,y)左上角的區(qū)域。
3. 程序清單如下
#i nclude graphics.h
#i nclude stdlib.h
#i nclude stdio.h
#i nclude dos.h
char n[3]={0,0};/*用于記錄第幾組解*/
int a[8],b[15],c[24],i;
int h[8]={127,177,227,277,327,377,427,477};/*每個(gè)皇后的行坐標(biāo)*/
int l[8]={252,217,182,147,112,77,42,7};/*每個(gè)皇后的列坐標(biāo)*/
void *arrow;
void try(int i)
{int j;
for (j=1;j=8;j++)
if (a[j-1]+b[i+j-2]+c[i-j+7]==3) /*如果第i列第j行為空*/
{a[j-1]=0;b[i+j-2]=0;c[i-j+7]=0;/*占用第i列第j行*/
putimage(h[i-1],l[j-1],arrow,COPY_PUT);/*顯示皇后圖形*/
delay(500);/*延時(shí)*/
if(i8) try(i+1);
else /*輸出一組解*/
{n[1]++;if (n[1]9) {n[0]++;n[1]=0;}
bar(260,300,390,340);/*顯示第n組解*/
outtextxy(275,300,n);
delay(3000);
}
a[j-1]=1;b[i+j-2]=1;c[i-j+7]=1;
putimage(h[i-1],l[j-1],arrow,XOR_PUT);/*消去皇后,繼續(xù)尋找下一組解*/
delay(500);
}
}
int main(void)
{int gdrive=DETECT,gmode,errorcode;
unsigned int size;
initgraph(gdrive,gmode,"");
errorcode=graphresult();
if (errorcode!=grOk)
{printf("Graphics error\n");exit(1);}
rectangle(50,5,100,40);
rectangle(60,25,90,33);
/*畫(huà)皇冠*/
line(60,28,90,28);line(60,25,55,15);
line(55,15,68,25);line(68,25,68,10);
line(68,10,75,25);line(75,25,82,10);
line(82,10,82,25);line(82,25,95,15);
line(95,15,90,25);
size=imagesize(52,7,98,38); arrow=malloc(size);
getimage(52,7,98,38,arrow);/*把皇冠保存到緩沖區(qū)*/
clearviewport();
settextstyle(TRIPLEX_FONT, HORIZ_DIR, 4);
setusercharsize(3, 1, 1, 1);
setfillstyle(1,4);
for (i=0;i=7;i++) a[i]=1;
for (i=0;i=14;i++) b[i]=1;
for (i=0;i=23;i++) c[i]=1;
for (i=0;i=8;i++) line(125,i*35+5,525,i*35+5);/*畫(huà)棋盤(pán)*/
for (i=0;i=8;i++) line(125+i*50,5,125+i*50,285);
try(1);/*調(diào)用遞歸函數(shù)*/
delay(3000);
closegraph();
free(arrow);
}
八皇后問(wèn)題的串行算法
1 八皇后問(wèn)題
所謂八皇后問(wèn)題,是在8*8格的棋盤(pán)上,放置8個(gè)皇后。要求每行每列放一個(gè)皇后,而且每一條對(duì)角線(xiàn)和每一條反對(duì)角線(xiàn)上不能有多于1個(gè)皇后,也即對(duì)同時(shí)放置在棋盤(pán)的兩個(gè)皇后(row1,column1)和(row2,column2),不允許(column1-column2)=(row1-row2)或者(column1+row1)=(column2+row2)的情況出現(xiàn)。
2 八皇后問(wèn)題的串行遞歸算法
八皇后問(wèn)題最簡(jiǎn)單的串行解法為如下的遞歸算法:
(2.1)深度遞歸函數(shù):
go(int step,int column)
{int i,j,place;
row[step]=column;
if (step==8)
outputresult( ); /*結(jié)束遞歸打印結(jié)果*/
else /*繼續(xù)遞歸*/
{for(place=1;place=8;place++)
{for(j=1;j=step;j++)
if(collision(j ,row[j],step+1,place))
/*判斷是否有列沖突、對(duì)角線(xiàn)或反對(duì)角線(xiàn)*/
goto skip_this_place;
go(step+1,place);
skip_this_place:;
}
}
}/* go */
(2.2)主函數(shù):
void main( )
{int place,j;
for(place=1;place=8;place++)
go(1,place);
}/* main */
八皇后問(wèn)題的并行算法
該算法是將八皇后所有可能的解放在相應(yīng)的棋盤(pán)上,主進(jìn)程負(fù)責(zé)生成初始化的棋盤(pán),并將該棋盤(pán)發(fā)送到某個(gè)空閑的子進(jìn)程,由該子進(jìn)程求出該棋盤(pán)上滿(mǎn)足初始化條件的所有的解。這里,我們假定主進(jìn)程只初始化棋盤(pán)的前兩列,即在棋盤(pán)的前兩列分別放上2個(gè)皇后,這樣就可以產(chǎn)生8*8=64個(gè)棋盤(pán)。
1 主進(jìn)程算法
主進(jìn)程等待所有的子進(jìn)程,每當(dāng)一個(gè)子進(jìn)程空閑的時(shí)侯,就向主進(jìn)程發(fā)送一個(gè)Ready(就緒)信號(hào)。主進(jìn)程收到子進(jìn)程的Ready信號(hào)后,就向該子進(jìn)程發(fā)送一個(gè)棋盤(pán)。當(dāng)主進(jìn)程生成了所有的棋盤(pán)后,等待所有的子進(jìn)程完成它們的工作。然后向每個(gè)子進(jìn)程發(fā)送一個(gè)Finished信號(hào),打印出各個(gè)子進(jìn)程找到的解的總和,并退出。子進(jìn)程接收到Finished信號(hào)也退出。
2 子進(jìn)程算法
每個(gè)子進(jìn)程在收到主進(jìn)程發(fā)送過(guò)來(lái)的棋盤(pán)后,對(duì)該棋盤(pán)進(jìn)行檢查。若不合法,則放棄該棋盤(pán)。子進(jìn)程回到空閑狀態(tài),然后向主進(jìn)程發(fā)送Ready信號(hào),申請(qǐng)新的棋盤(pán);若合法,則調(diào)用move_to_right(board,rowi,colj)尋找在該棋盤(pán)上剩下的6個(gè)皇后可以擺放的所有位置,move_to_right(board,rowi,colj)是個(gè)遞歸過(guò)程, 驗(yàn)證是否能在colj列rowi行以后的位置是否能放一個(gè)皇后。
1)首先將more_queen設(shè)置成FALSE;
以LEAF,TRUE和FLASE區(qū)分以下三種情況:
A)LEAF:成功放置但是已到邊緣,colj現(xiàn)在已經(jīng)比列的最大值大1,回退兩列,檢查是否能將待檢查皇后放在哪一行:如果能,把more_queen設(shè)成TRUE;
B)TRUE:成功放置皇后,檢查這一列是否能有放置皇后的其他方式,如有,把more_queen設(shè)成TRUE;
C)FALSE:不能放置,回退一列再試,如果能把more_queen設(shè)成TRUE ,如果皇后已在最后一行,必須再檢查上一列。
2)如果more_queens=TRUE,仍需再次調(diào)用move_to_right(),為新棋盤(pán)分配空間,用xfer()將現(xiàn)有棋盤(pán)拷貝到nextboard,并進(jìn)行下列情況的處理:
TRUE:得到一個(gè)皇后的位置,增大列數(shù)再試;
FALSE:失敗,如果more_queen為真, 取回棋盤(pán),保存上次調(diào)用的棋盤(pán)。將列數(shù)減小,取走皇后,增加行數(shù),再調(diào)用move_to_right();
LEAF:得到一種解法,solution增一,將解法寫(xiě)入log_file,由于已到邊緣,列數(shù)回退1,檢查是否放置一個(gè)皇后,如果能,新加一個(gè)皇后后,調(diào)用move_to_right;如果不能,檢查more_queen如果more_queen為真,將棋盤(pán)恢復(fù)到上次調(diào)用時(shí)保存的棋盤(pán),將待檢查的皇后下移,調(diào)用move_to_right。
八皇后問(wèn)題的高效解法-遞歸版
// Yifi 2003 have fun! : )
//8 Queen 遞歸算法
//如果有一個(gè)Q 為 chess[i]=j;
//則不安全的地方是 k行 j位置,j+k-i位置,j-k+i位置
class Queen8{
static final int QueenMax = 8;
static int oktimes = 0;
static int chess[] = new int[QueenMax];//每一個(gè)Queen的放置位置
public static void main(String args[]){
for (int i=0;iQueenMax;i++)chess[i]=-1;
placequeen(0);
System.out.println("\n\n\n八皇后共有"+oktimes+"個(gè)解法 made by yifi 2003");
}
public static void placequeen(int num){ //num 為現(xiàn)在要放置的行數(shù)
int i=0;
boolean qsave[] = new boolean[QueenMax];
for(;iQueenMax;i++) qsave[i]=true;
//下面先把安全位數(shù)組完成
i=0;//i 是現(xiàn)在要檢查的數(shù)組值
while (inum){
qsave[chess[i]]=false;
int k=num-i;
if ( (chess[i]+k = 0) (chess[i]+k QueenMax) ) qsave[chess[i]+k]=false;
if ( (chess[i]-k = 0) (chess[i]-k QueenMax) ) qsave[chess[i]-k]=false;
i++;
}
//下面歷遍安全位
for(i=0;iQueenMax;i++){
if (qsave[i]==false)continue;
if (numQueenMax-1){
chess[num]=i;
placequeen(num+1);
}
else{ //num is last one
chess[num]=i;
oktimes++;
System.out.println("這是第"+oktimes+"個(gè)解法 如下:");
System.out.println("第n行: 1 2 3 4 5 6 7 8");
for (i=0;iQueenMax;i++){
String row="第"+(i+1)+"行: ";
if (chess[i]==0);
else
for(int j=0;jchess[i];j++) row+="--";
row+="++";
int j = chess[i];
while(jQueenMax-1){row+="--";j++;}
System.out.println(row);
}
}
}
//歷遍完成就停止
在 Golang 游戲leaf系列(一) 概述與示例 (下文簡(jiǎn)稱(chēng)系列一)中,提到過(guò)Go模塊用于創(chuàng)建能夠被 Leaf 管理的 goroutine。Go模塊是對(duì)golang中g(shù)o提供一些額外功能。Go提供回調(diào)功能,LinearContext提供順序調(diào)用功能。善用 goroutine 能夠充分利用多核資源,Leaf 提供的 Go 機(jī)制解決了原生 goroutine 存在的一些問(wèn)題:
我們來(lái)看一個(gè)例子(可以在 LeafServer 的模塊的 OnInit 方法中測(cè)試):
這里的 Go 方法接收 2 個(gè)函數(shù)作為參數(shù),第一個(gè)函數(shù)會(huì)被放置在一個(gè)新創(chuàng)建的 goroutine 中執(zhí)行,在其執(zhí)行完成之后,第二個(gè)函數(shù)會(huì)在當(dāng)前 goroutine 中被執(zhí)行。由此,我們可以看到變量 res 同一時(shí)刻總是只被一個(gè) goroutine 訪問(wèn),這就避免了同步機(jī)制的使用。Go 的設(shè)計(jì)使得 CPU 得到充分利用,避免操作阻塞當(dāng)前 goroutine,同時(shí)又無(wú)需為共享資源同步而憂(yōu)心。
這里主動(dòng)調(diào)用了 d.Cb(-d.ChanCb) ,把這個(gè)回調(diào)取出來(lái)了。實(shí)際上,在skeleton.Run里會(huì)自己取這個(gè)通道
看一下源碼:
New方法,會(huì)生成指定緩沖長(zhǎng)度的ChanCb。然后調(diào)用Go方法就是先執(zhí)行第一個(gè)func,然后把第二個(gè)放到Cb里?,F(xiàn)在手動(dòng)造一個(gè)例子:
這里解釋一下,d.Go根據(jù)源碼來(lái)看,實(shí)際也是調(diào)用了一個(gè)協(xié)程。然后上面兩次d.Go并不能保證先后順序。目前的輸出結(jié)果是1+2那個(gè)先執(zhí)行了,把3寫(xiě)入d.ChanCb,然后把3讀出來(lái),繼續(xù)讀時(shí),d.ChanCb里沒(méi)有東西,阻塞了。然后1+1那個(gè)協(xié)程啟動(dòng)了,最后又讀到了2。
現(xiàn)在把time.Sleep(time.Second)的注釋解開(kāi),會(huì)是啥結(jié)果呢
這里執(zhí)行到time.Sleep睡著了,上面兩個(gè)d.Go仍然是不確定順序的,但是會(huì)各自的function先執(zhí)行掉,然后陸續(xù)把cb寫(xiě)入d.ChanCb??催@次輸出,1+2先寫(xiě)進(jìn)去的。所以最后執(zhí)行d.Cb時(shí),就把3先讀出來(lái)了。然后d.ChanCb的長(zhǎng)度為1,說(shuō)明還有一個(gè),就是輸出2了。
另外,就是close時(shí)會(huì)判斷g.pendingGo
這個(gè)例子的意思很明顯,NewLinearContext這種方式,即使先調(diào)用的慢了半秒,它還是會(huì)先執(zhí)行完。
這里先是用了一個(gè)list,加入的時(shí)候用mutexLinearGo鎖了,都加到最后。然后新開(kāi)協(xié)程去處理,讀的時(shí)候從最前面開(kāi)始讀,也要用mutexLinearGo鎖。執(zhí)行的時(shí)候,也要上鎖mutexExecution,確保f()執(zhí)行完并且寫(xiě)入g.ChanCb回調(diào),這個(gè)mutexExecution鎖才會(huì)解除。現(xiàn)在可以改造一個(gè)帶回調(diào)的例子:
結(jié)果說(shuō)明,確實(shí)是2先被寫(xiě)入了d.ChanCb。
網(wǎng)頁(yè)標(biāo)題:leafgo語(yǔ)言,leaf怎么說(shuō)
文章分享:http://jinyejixie.com/article6/hsioog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、App開(kāi)發(fā)、電子商務(wù)、網(wǎng)頁(yè)設(shè)計(jì)公司、ChatGPT、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)