整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          如何購(gòu)買特價(jià)機(jī)票、一折甚至免費(fèi)機(jī)票 太有用了

          如何購(gòu)買特價(jià)機(jī)票、一折甚至免費(fèi)機(jī)票 太有用了

          行最大的費(fèi)用就是住宿和交通,那么飛機(jī)如此簡(jiǎn)便的今天,如何定到最便宜的機(jī)票呢?

          現(xiàn)在的網(wǎng)絡(luò)如此方便,在國(guó)內(nèi)也基本上取消了紙質(zhì)機(jī)票,很多大的機(jī)場(chǎng)都可以自助登機(jī),而可以定到便宜機(jī)票的方法也越來(lái)越多。

          除了廉價(jià)航空,還有淘寶,拍拍網(wǎng)等很多網(wǎng)站都可以訂到超便宜的特價(jià)機(jī)票,甚至趕上網(wǎng)站推出促銷活動(dòng)的時(shí)候,還可以找到1元機(jī)票。

          許多人問(wèn)我,怎么定便宜機(jī)票。在這里告訴大家?guī)讉€(gè)訂票的大網(wǎng)站,其實(shí)在很多時(shí)候連旺季都是可以買到一折的機(jī)票。主要是看你會(huì)不會(huì)善于利用這些資源,如果能善加利用,那么你的飛機(jī)出行也許比火車汽車還要便宜哦!

          1.首先,QQ財(cái)付通和南航有合作,基本上財(cái)付通的特價(jià)票都是一折以下的,特別是南航有點(diǎn)的那些國(guó)際機(jī)票,實(shí)在是超值的很,可以減輕你的旅途負(fù)擔(dān)。

          南航財(cái)付通(網(wǎng)址自己去百度,發(fā)不上來(lái)),上次去日本和美國(guó)就是在這里買的機(jī)票,廣州-大阪,來(lái)回380,加上稅也就1100。實(shí)在是超級(jí)劃算!

          只是現(xiàn)在特價(jià)機(jī)票沒(méi)有那么多了,一般是會(huì)提前一個(gè)時(shí)間出特價(jià)機(jī)票的通告,然后準(zhǔn)點(diǎn)搶票,那個(gè)時(shí)候就要看你是否手腳夠快了!

          2.再給大家推薦個(gè)廉價(jià)機(jī)票的搜索引擎:去哪兒網(wǎng),這是個(gè)機(jī)票搜索的大平臺(tái),也是我用的最多的搜索訂票網(wǎng)站。

          網(wǎng)站幾乎會(huì)羅列各大網(wǎng)站的機(jī)票信息,是非常實(shí)用的一個(gè)搜索引擎。里面的一折的條件是要至少提前一個(gè)月預(yù)計(jì),不到一個(gè)月的也有二三折的票。

          就算不在這個(gè)網(wǎng)站訂票,也可以作為一個(gè)很好的參考,知道大致上那個(gè)時(shí)段的機(jī)票最低可以到什么價(jià)格,然后到各大航空公司的門戶網(wǎng)站去搜當(dāng)時(shí)的特價(jià)機(jī)票,可以省去很多時(shí)間。

          3.國(guó)內(nèi)廉價(jià)航空,比較有名的是春秋航空,這個(gè)航空是上海的,很多城市的價(jià)格都固定的,比如青島和上海之間、武漢和上海之間等等都是99塊的價(jià)格。

          春秋航空是廉價(jià)航空,所以定機(jī)票的時(shí)候你要有心理準(zhǔn)備,飛機(jī)經(jīng)常晚點(diǎn),座位小,飛機(jī)也很小。上面的服務(wù)是自助的,沒(méi)有飛機(jī)餐,也沒(méi)有養(yǎng)眼的空姐,而且對(duì)行李有限重,總之是典型的廉價(jià)航空。好處就是很便宜。

          4.海航網(wǎng)也經(jīng)常拋出便宜的機(jī)票(官方網(wǎng)址)

          最后再告訴大家兩個(gè)廉價(jià)機(jī)票的搜索引擎:賢賢網(wǎng)和酷訊網(wǎng),在里面,你可以查到最便宜的機(jī)票時(shí)間和所有指定日期最便宜的機(jī)票。

          我一般定機(jī)票的程序,是先上去哪兒網(wǎng)站搜索一下大致機(jī)票情況,然后再看看賢賢網(wǎng),選擇所有費(fèi)用最低的那個(gè)訂票。

          出門旅行總是能省則省,何況網(wǎng)上多搜索一下,也并不會(huì)浪費(fèi)很多的時(shí)間。哪怕你有很多的錢,也可以省下來(lái)作其他更有意義的事情。

          最后提醒大家:銀行卡要開通網(wǎng)上銀行,上面便宜的機(jī)票基本要求你在線支付。

          1.根據(jù)網(wǎng)絡(luò)上前人的經(jīng)驗(yàn)搜集整理了一下訂票網(wǎng)站,歡迎大家指正修改,提出意見(jiàn)哦!

          國(guó)內(nèi)特價(jià)機(jī)票查詢網(wǎng)站:

          去哪兒

          賢賢網(wǎng)

          春秋航空

          南航財(cái)付通

          酷訊網(wǎng)

          海航網(wǎng)

          2.特價(jià)機(jī)票監(jiān)視查詢 ,如其名,幫你監(jiān)視網(wǎng)絡(luò)上出現(xiàn)的超級(jí)特價(jià)機(jī)票, http://www.appinn.com/ticket-special-offer/

          3.航空公司網(wǎng)站

          海南航空

          南方航空

          上海航空

          東方航空

          廈門航空

          四川航空

          深圳航空

          4.以下列出個(gè)人所查詢?nèi)颉毫畠r(jià)航空』公司網(wǎng)站及簡(jiǎn)介: 亞洲:

          馬來(lái)西亞

          亞航: http://www.airasia.com/site/cn/home.jsp

          泰國(guó)

          曼谷航空: http://www.bangkokair.com/en/

          Nok air: http://www.nokair.co.th/

          泰東方: http://www.orient-thai.com/web/home.html

          新加坡

          亞洲捷星: http://www.jetstarasia.com

          虎航: http://www.tigerairways.com/

          惠旅: http://www.valuair.com.sg/

          新航: http://www.singaporeair.com/saa/app/saa

          印尼 獅航: http://www.lionair.co.id/ Ga-citilink: http://www.ga-citilink.com/ Garuda: http://www.garuda-indonesia.com/ Bouraq: http://www.bouraq.com/ 曼達(dá)拉: http://www.mandalaair.com/mandala/ecms/index.cfm 菲律賓 宿霧太平洋: http://www.cebupacificair.com/ 印度 Air Deccan: http://www.deccanair.com/ Express: http://www.expressindia.com/ Jet: http://www.jetairways.com/Cultures/en-US/HomePage.htm 印航: http://www.indianairlines.indiatimes.com/

          美洲:

          1)如果時(shí)間上比較flexible, www.priceline.com,可以自己出價(jià),然后看是否有航空公司接受。

          2)如果你有學(xué)校的信箱,也就是有.edu的mailbox,且在35歲以下,去www.studentuniverse.com注個(gè)冊(cè),可以買到很便宜的機(jī)票。好處是可以自己選擇時(shí)間,航班等等。

          3)經(jīng)常去網(wǎng)上找票,一看到價(jià)格在自己的接受范圍內(nèi)馬上購(gòu)買。一般周三,周六起飛的票比周末的要便宜。機(jī)票價(jià)格有的時(shí)候一天幾變,所以看到自己想要得就馬上下手,否則后悔莫及。

          4)http://www.kayak.com/ (宿主告訴我的,搜尋所有鏈接航空的,會(huì)列表出來(lái))

          1. Jetblue:http://www.jetblue.com/(美國(guó)境內(nèi)廉價(jià)機(jī)票,一家以紐約JFK機(jī)場(chǎng)為基地的廉價(jià)航空公司,飛行的目的地往往是大城市的二級(jí)機(jī)場(chǎng),如洛杉磯的Long Beach機(jī)場(chǎng),舊金山的Oakland機(jī)場(chǎng)。單程機(jī)票價(jià)格曾低至10元。 ) 2. Airtran:http://www.airtran.com/Home.aspx(美國(guó)境內(nèi)廉價(jià)機(jī)票以美東為主) 3. Southwest:http://www.southwest.com/(美國(guó)境內(nèi)最大、最知名的廉價(jià)航空公司,不保留座位,視Check-in早晚來(lái)定。服務(wù)不局限于美國(guó)西南,還包括佛羅里達(dá)和巴哈馬。 ) 4. Frontier Airlines:http://www.frontierairlines.com/frontier/index.jsp(美國(guó)境內(nèi)廉價(jià)機(jī)票,是一家總部設(shè)立在丹佛的航空公司,目的地包括了美國(guó)主要城市,主要服務(wù)美國(guó)西部,兼而服務(wù)墨西哥度假地。) 5. Flyted:http://www.flyted.com/index.html (美國(guó)境內(nèi)廉價(jià)機(jī)票) 6. ATA:http://www.ata.com/home.html (美國(guó)境內(nèi)及夏威夷廉價(jià)機(jī)票) 7. Spirit Airlines:http://www.spiritair.com/welcome.aspx(美國(guó)境內(nèi)廉價(jià)機(jī)票,飛行基地在佛羅里達(dá)的勞德戴爾堡和底特律的航空公司。) 8. Sun Country:http://www.suncountry.com/SCA/index.jsf(美國(guó)境內(nèi)廉價(jià)機(jī)票,飛行基地在明尼蘇達(dá)州明尼阿波利斯市機(jī)場(chǎng)的航空公司,飛行目的地遍布全國(guó)主要城市。)

          9.Vegin America(virginamerica.com):著名的維珍航空,主要經(jīng)營(yíng)以舊金山為基地的美國(guó)西海岸航線如拉斯維加斯、西雅圖、洛杉磯等,也有橫跨美洲大陸到紐約、波士頓、和佛羅里達(dá)的航線。 (果然比較便宜的)

          10.Westjet(westjet.com):以加拿大為基地,主要經(jīng)營(yíng)加拿大境內(nèi)以及美加之間航線的航空公司,價(jià)格比加拿大航空Air Canada相對(duì)便宜。

          11.Go Air(Iflygo.com):一家經(jīng)營(yíng)夏威夷群島之間的廉價(jià)航空公司。

          歐洲: 德國(guó) 1,AIR BERLIN 柏林航空 http://www.airberlin.com/ 以德國(guó)為基地,航線數(shù)量相當(dāng)多,幾乎能達(dá)到所有的西歐和南歐主要旅游城市和度假地,機(jī)上有供應(yīng)免費(fèi)飲料和報(bào)紙。經(jīng)常推出減價(jià)活動(dòng).一般29EU起. 2,GERMANWINGS 德國(guó)之翼 http://www.germanwings.com/ 漢莎控股,飛往歐洲各地,行李限重8kg,無(wú)兒童票。不過(guò)由于是漢莎的子公司,所以相比其他航空公司,Germanwings的服務(wù),尤其是空中服務(wù)要更好一些。以科隆,斯圖加特,柏林三個(gè)城市為基地,航線數(shù)量多,每周四打折19EU起,但是如果不提前訂票和碰上打折,機(jī)票價(jià)格比較貴. 3,GERMANIA EXPRESS http://www.gexx.de/ 在德國(guó)大多數(shù)城市都有起飛的航班,目的地為意大利,希臘以及地中海度假區(qū),值得一提的是有前往莫斯科的廉價(jià)航班. 4,HAPAG LLOYD http://www.hlx.com/ 德國(guó)最大廉價(jià)航空之一,航線繁多。主要飛往意大利,西班牙和地中海一些島嶼,每周二打折,價(jià)格一般19.99EU起 起飛的都是一些大城市的主要機(jī)場(chǎng),離市區(qū)比較近,這個(gè)優(yōu)點(diǎn)不錯(cuò). 5,dba www.flydba.com 以慕尼黑和杜賽爾多夫?yàn)榛?主要飛往德國(guó)各大城市和希臘,意大利,法國(guó)南部等地,價(jià)格一般,40EU左右. 6,LTU http://www.ltu.de/ 呵呵,LTU旅行社包機(jī)比較多,航班數(shù)量多,在德國(guó)RUHR區(qū),有時(shí)候有特價(jià)票,不過(guò)數(shù)量有限,以前還有飛往中國(guó)重慶的航班,不知道現(xiàn)在還有沒(méi)有. 7,LowFareJet http://www.lowfarejet.de/ 每日從Hannover飛往Luton and Glasgow 及Paris。是少數(shù)提供air miles program.的低價(jià)航空公司線之一,忘了說(shuō),前面的DBA也提供里程積分. 8,CONDOR http://www.condor.com/ Thomas Cook 旗下的子公司。經(jīng)常能找到非常優(yōu)惠的價(jià)格。 經(jīng)常提供兩種價(jià)格的打折票,29EU的短途航線和99EU的長(zhǎng)途航線,飛行目的地以度假區(qū)為主,99EU的機(jī)票一般從法蘭克福出發(fā),前往馬爾代夫,曼谷,加拿大,美國(guó)等地,相當(dāng)超值. 最大的缺點(diǎn)是,航班搜索系統(tǒng)做的比較糟糕 9,LUFTHANSA http://www.lufthansa.com/ 漢沙經(jīng)常有100EU左右的特價(jià)票,前往歐洲各大城市,雖然比一般的廉價(jià)航空要貴,但是考慮到漢沙的服務(wù)以及飛的都是中心機(jī)場(chǎng),也還可以了. 英國(guó)和愛(ài)爾蘭 1,Ryanair http://www.ryanair.com/ 歐洲最出名的廉價(jià)航空公司,有很好的口碑,在歐洲機(jī)場(chǎng)數(shù)目也多,打折促銷也很多,從英國(guó)和愛(ài)爾蘭17個(gè)機(jī)場(chǎng),飛往歐洲地區(qū)50多個(gè)城市,而且提供很多歐洲內(nèi)陸城市之間的航班服務(wù),優(yōu)點(diǎn)是價(jià)格低廉,他的廉價(jià)票是最容易買的,缺點(diǎn),他飛的幾乎都不是城市的中心機(jī)場(chǎng),大部分都是離他所稱的城市幾十到一百公里的小機(jī)場(chǎng),一般從機(jī)場(chǎng)到市區(qū)需要再花費(fèi)10到20EU.因?yàn)檫@個(gè)原因,我覺(jué)得RYANAIR反而不如EASYJET,HLX之類的,因?yàn)榧由锨巴袇^(qū)的交通費(fèi),往往比別的航空公司貴. 2,EASYJET http://www.easyjet.com/ 歐洲最大的廉價(jià)航空公司之一,有203條航線,飛往歐洲61個(gè)城市,遍布?xì)W洲大陸主要城市和波羅的海沿岸,價(jià)格一般20EU起,提前訂票一般都在30到60EU之間含稅,飛的都是主要機(jī)場(chǎng),不錯(cuò),值得推薦! 3,AIR SCOTLAND http://www.air-scotland.com/ 蘇格蘭航空,飛往英國(guó),西班牙,希臘的航班比較多 從Edinburgh、Glasgow及Aberdeen飛往 Palma、Barcelona、Tenerife、Alicante、Malaga及Fuerteventura。 4,JET2 http://www.jet2.com/ 是家新的低價(jià)航空公司,從Leeds Bradford飛往歐洲10個(gè)城市。 5,BMIBABY http://www.bmibaby.com/ 英國(guó)三大廉價(jià)航空之一,主要飛往西班牙南部,荷蘭,捷克以及英國(guó)國(guó)內(nèi)航班,價(jià)格20鎊起. 6,FLYGLOBESPAN http://www.flyglobespan.com/ 蘇格蘭廉價(jià)航空公司,主要從愛(ài)丁堡飛往地中海島嶼以及沿岸的度假城市,還有前往布拉格和瑞士的航班.20人以上有團(tuán)體票提供. 7,MY TRAVEL LITE http://www.mytravellite.com/ 以伯明翰為基地,和FLYGLOBESPAN差不多,飛往地中海島嶼以及沿岸的度假城市(以西班牙為主). 8,THOMSONFLY http://www.thomsonfly.com/ 主要飛往德國(guó),西班牙南部,意大利和巴黎,以及英國(guó)和愛(ài)爾蘭之間的航班,機(jī)票15EU起. 9,BUDGET AIR http://www.budgetair.ie/ 愛(ài)爾蘭的廉價(jià)航空公司,從都柏林飛往西班牙和葡萄牙南部,價(jià)格50EU左右 10,MONARCH http://www.monarch-airlines.com/ 英國(guó)的廉價(jià)航空,從倫敦等地飛往西班牙為主. 11,britanniadirect http://www.britanniadirect.com/ 英國(guó)各地往返Malta、Malaga、Naples、Venice。 12,AER LINGUS http://www.aerlingus.com/ 愛(ài)爾蘭的航空公司,主要從都柏林飛往歐洲大陸主要城市,價(jià)格從十幾歐到一百多歐. 13,Flybe http://www.flybe.com/ Flybe前身為British European,從英國(guó)和愛(ài)爾蘭20個(gè)機(jī)場(chǎng)飛往全歐及紐約,行李限重20kg。 14,Jetmagic http://www.jetmagic.com/ 以Cork為基地,飛往歐洲大陸,航線不多,10來(lái)?xiàng)l吧 15,Now http://www.now-airlines.com/ Luton第二低價(jià)航空公司,2003年暑期開始營(yíng)運(yùn),飛往7個(gè)城市,Manchester、 Hamburg、Jersey、Rome、Lisbon、Ibiza及Tenerife,票價(jià)約35~75英鎊。 歐洲的同學(xué)可以用到:www.jetcost.com,在上面可以訂到巴黎到法蘭克福的一歐元的機(jī)票。

          選擇廉價(jià)航空應(yīng)注意事項(xiàng)?

          廉價(jià)航空公司(Budget airliners),一個(gè)新興的運(yùn)營(yíng)模式,通過(guò)運(yùn)輸成本的降低來(lái)降低機(jī)票價(jià)格。運(yùn)輸成本的降低主要是依靠?jī)蓚€(gè)手段:一個(gè)是通過(guò)提高飛機(jī)利用率(高密度座位及飛行時(shí)間)降低單位成本;另一個(gè)是通過(guò)降低維護(hù)成本(單一機(jī)型及很低的人機(jī)比等)來(lái)控制其整體運(yùn)營(yíng)費(fèi)用。 所以選擇廉價(jià)航空應(yīng)注意下面這些事項(xiàng):

          1. 避免更改行程:『廉價(jià)機(jī)票』又稱『計(jì)劃?rùn)C(jī)票』,因此,在購(gòu)票之前最好仔細(xì)考慮行程,因?yàn)槿绻R時(shí)更改時(shí)間及地點(diǎn),航空公司會(huì)額外索取『手續(xù)費(fèi)』,有時(shí)『手續(xù)費(fèi)』的價(jià)值便超過(guò)當(dāng)初所購(gòu)買的『一切費(fèi)用』(機(jī)票及各項(xiàng)稅款),所以能不更改儘量不要改,否則『廉價(jià)機(jī)票』也會(huì)變得『不廉價(jià)』囉!

          2. 買了不能退款:大部份的廉價(jià)航空都沒(méi)有『退款服務(wù)』,主要是因?yàn)檫@類航空公司本身所提供的機(jī)票價(jià)格已經(jīng)低於『市場(chǎng)價(jià)』許多,有時(shí)甚至是『免費(fèi)機(jī)票』(航空公司該如何退給你呢?),所以這類航空公司並不提供『退款服務(wù)』,當(dāng)然也有些航空公司會(huì)要求將客戶的『退款』,轉(zhuǎn)成『客戶信用額度』,下次購(gòu)買機(jī)票時(shí)可以從裡頭扣款(畢竟這是少數(shù)),如果真的無(wú)法繼續(xù)計(jì)畫行程,不是白白浪費(fèi),就是建議更改行程(只是額外增加的費(fèi)用,還不如重新購(gòu)買來(lái)得便宜),至於『機(jī)場(chǎng)稅』、『兵險(xiǎn)』等稅務(wù)費(fèi)用當(dāng)然無(wú)法退還,這點(diǎn)是必須提醒各位的。

          3. 提早辦理登機(jī)手續(xù):廉價(jià)航空的服務(wù)一視同仁,並沒(méi)有『艙等』差異的服務(wù),開放性選擇座位方式,先進(jìn)入先選擇座位,因此,想要有個(gè)舒適的乘座空間,避免選擇前面的位置,建議提早辦理登機(jī)手續(xù),通常后面的位置比較少人坐,飛機(jī)起飛后,只要旁邊的座位沒(méi)有人,就可以『躺平休息』一路睡到目的地了!

          4. 行李限重:廉價(jià)航空最令人困擾的莫過(guò)於『行李限重』的問(wèn)題了,行李限重在15-20KG上下(其實(shí)與一般航空公司大同小異,只是較無(wú)彈性可言),一旦超重了,就必須額外付費(fèi)辦理託運(yùn),所以行李的重量最好預(yù)做規(guī)劃。

          5. 網(wǎng)路購(gòu)票安全性:絕大部分的『廉價(jià)機(jī)票』都是透過(guò)網(wǎng)路交易(航空公司降低成本的考量),因此網(wǎng)路購(gòu)票的『安全性』是許多背包客所擔(dān)心的,大部份的廉價(jià)航空公司對(duì)於『網(wǎng)路交易』都有一定妥善處理的做法,當(dāng)然有會(huì)有意外(駭客侵入),如果真的擔(dān)心網(wǎng)路交易的安全,個(gè)人建議親自電洽(或電子信件)詢問(wèn)該如何現(xiàn)金付款,這樣的作法相對(duì)無(wú)法得到網(wǎng)路訂票的優(yōu)惠價(jià),只能說(shuō)見(jiàn)仁見(jiàn)智囉!

          6. 飛安事故:許多人對(duì)於廉價(jià)航空都會(huì)有『廉價(jià)』=『不安全』的迷思,嚴(yán)格說(shuō)來(lái)這點(diǎn)恐怕是多慮的,雖然廉價(jià)航空公司為了降低成本可能採(cǎi)購(gòu)較為老舊的機(jī)型,但是人命關(guān)天,沒(méi)有任何一家航空公司會(huì)拿乘客生命開玩笑,飛安的問(wèn)題不在於機(jī)型老舊與否,在於『安全維護(hù)』是否徹底執(zhí)行,因此應(yīng)該破除『廉價(jià)』=『不安全』的迷思。提供一個(gè)有趣的數(shù)值供大家參考:目前全球廉價(jià)航空失事率僅百萬(wàn)分之零點(diǎn)七(安全性無(wú)庸置疑),但是最近印尼『亞當(dāng)航空』的空難事件(2007 01 01)卻為『廉價(jià)航空』飛安蒙上一層陰影。

          品:科普中國(guó)

          制作:北京師范大學(xué)天文系 宇宙之美科普?qǐng)F(tuán)隊(duì) 張同杰 李時(shí)雨

          監(jiān)制:中國(guó)科學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)信息中心

          對(duì)于“是否有外星人”存在這個(gè)問(wèn)題,宇航員們似乎因?yàn)樵?jīng)進(jìn)入太空,比我們普通人更有機(jī)會(huì)與外星人“ 親密接觸”, 因此他們多了一些發(fā)言權(quán)。

          宇航員們相信“外星人”存在嗎?

          最近,中國(guó)第一位航天員楊利偉親述曾在太空遇到神秘的敲擊聲:“這個(gè)聲音也是突然出現(xiàn)的,并不一直響,而是一陣一陣的,不管白天還是黑夜,毫無(wú)規(guī)律,不知什么時(shí)候就響幾聲。不是外面?zhèn)鬟M(jìn)來(lái)的聲音,也不是飛船里面的聲音,而仿佛是誰(shuí)在外面敲飛船的船體。無(wú)法描述它,不是叮叮的,也不是當(dāng)當(dāng)?shù)模歉衲靡粋€(gè)木頭錘子敲鐵桶,咚 咚 咚 咚”。

          這是否是外星人造訪我們的飛船?

          2014年,筆者曾組織舉辦第27屆太空探索者協(xié)會(huì)年會(huì)的社會(huì)活動(dòng)日(北師大分會(huì)場(chǎng)),航天員劉旺和部分美國(guó)、俄羅斯和日本的宇航員都應(yīng)邀參加了這個(gè)活動(dòng)。

          會(huì)議交流期間,劉旺曾經(jīng)告訴我,他相信有外星人的存在,但是沒(méi)有說(shuō)為什么。而最近航天員楊利偉的爆料,讓我明白了背后可能的原因。此外,一些美國(guó)航天員也相信外星人的存在。

          圖注: 第27屆太空探索者協(xié)會(huì)年會(huì)(北師大分會(huì)場(chǎng))

          本文將首先介紹國(guó)際和國(guó)內(nèi)搜尋地外文明的歷史及現(xiàn)狀,再?gòu)奶祗w物理角度對(duì)楊利偉爆料的神秘敲擊聲給出可能的解釋。

          漫長(zhǎng)的地外文明搜尋之路

          在如此深邃的宇宙里,

          人類是唯一的智慧生命嗎?

          地球是宇宙中最特殊的星球嗎?

          在宇宙中是否還有其他的生命?

          這些生命會(huì)以怎樣的形式進(jìn)行演化?

          人類是如此渴望知道這些問(wèn)題的答案,以至于從未停止過(guò)對(duì)地外文明的搜尋。

          從最早試圖在地球上建造巨大的結(jié)構(gòu)來(lái)引起外星人的注意,被動(dòng)得等待外星人發(fā)現(xiàn)人類,到一百多年前,尼古拉·特斯拉認(rèn)為他的無(wú)線電傳輸系統(tǒng)可以用來(lái)聯(lián)系火星上的生物(參考文獻(xiàn)【1】),人們搜尋外星人的方法隨著科技的進(jìn)步經(jīng)歷著一系列深刻重大的變化。

          1931年,美國(guó)的無(wú)線電工程師卡爾·央斯基接收到了來(lái)自銀河系中的射電輻射,打開了射電天文學(xué)這一新窗口,為人們探索宇宙增加了一條重要途徑。

          1959年,物理學(xué)家莫里森和科可尼在《自然》雜志上發(fā)表了一篇論文(參考文獻(xiàn)【2】) ,他們認(rèn)為如果宇宙中存在其他智慧生命,并且他們的科技發(fā)展水平與人類相當(dāng),或許人類能夠從眾多的射電信號(hào)中,找到外星人發(fā)出的信號(hào)。他們認(rèn)為這個(gè)信號(hào)的波長(zhǎng)很可能是525px(1.42GHz),這一波長(zhǎng)正是宇宙中最常見(jiàn)的中性氫發(fā)出的輻射。

          圖注: 中性氫原子的21 厘米譜線產(chǎn)生機(jī)制示意圖

          這篇文章的發(fā)表一時(shí)間激起千層浪,從此人們對(duì)于外星人的搜尋不再是盲目的,可謂是為現(xiàn)代搜尋地外智慧生命奠定了科學(xué)基礎(chǔ)。

          筆者的師大物理宇宙學(xué)團(tuán)隊(duì)也基于2014年發(fā)表在PRL上的文章,計(jì)劃使用我國(guó)FAST望遠(yuǎn)鏡,觀測(cè)宇宙深處中性氫的21 厘米射電譜線測(cè)量宇宙膨脹的加速度。

          1. 搜尋地外智慧生命(SETI)實(shí)驗(yàn)

          1960年,康奈爾大學(xué)的射電天文學(xué)家、被稱為“SETI之父”的弗蘭克·德雷克(Frank Drake)開啟了第一個(gè)現(xiàn)代搜尋地外智慧生命(Search for Extra-terrestrial Intelligence,以下簡(jiǎn)稱SETI)的實(shí)驗(yàn),該實(shí)驗(yàn)被稱為“奧慈瑪計(jì)劃(Project Ozma)”。基于莫里森和科可尼的文章,他利用綠岸射電望遠(yuǎn)鏡(Green Bank Telescope)的85英尺射電望遠(yuǎn)鏡,觀測(cè)天倉(cāng)五和天苑四這兩顆恒星在1.42GHz這一頻率的射電信號(hào)。當(dāng)然,現(xiàn)在我們都知道在這次實(shí)驗(yàn)中,德雷克并沒(méi)有找到他想找到的信號(hào)。然而德雷克并沒(méi)有放棄,第二年,他發(fā)表了著名的德雷克公式,從統(tǒng)計(jì)上揭示了銀河系中能夠與外界交流的文明的數(shù)量。

          圖注: 筆者與德雷克的合影

          1971年,NASA支持了德雷克等人進(jìn)行SETI研究,他們?cè)O(shè)計(jì)了由多達(dá)1500個(gè)小型射電望遠(yuǎn)鏡組成的地基射電望遠(yuǎn)鏡陣列。然而由于造價(jià)過(guò)高,并沒(méi)有實(shí)際建成,但是他們所做的研究工作為之后大量的SETI工作奠定了基礎(chǔ)(參考文獻(xiàn)【3】)。

          1972年,美國(guó)先驅(qū)者10號(hào)探測(cè)器發(fā)射時(shí)攜帶了德雷克與康奈爾大學(xué)的天體物理學(xué)家卡爾·薩根共同設(shè)計(jì)的人類發(fā)往太空中的第一條物理信息(參考文獻(xiàn)【4】)。這塊鍍金鋁板上標(biāo)記出了地球在太陽(yáng)系中的位置,如果先驅(qū)者10號(hào)探測(cè)器能夠遇到地外生命,那么他們就有望通過(guò)這條信息與我們?nèi)〉寐?lián)系。

          然而地外生命也許并不是友好的,我們是否應(yīng)該主動(dòng)發(fā)送地球以及人類的信息給可能的地外生命,也一直是一個(gè)備受爭(zhēng)議的話題。

          德雷克目前是SETI研究所(參考文獻(xiàn)【5】)的成員之一。

          SETI研究所是一個(gè)非盈利性組織,它成立于1984年,所需資金大部分來(lái)自于私人捐贈(zèng),他們所用的艾倫射電望遠(yuǎn)鏡陣列以微軟的共同創(chuàng)始人保羅·艾倫的名字命名,保羅·艾倫為這個(gè)望遠(yuǎn)鏡陣列提供了一半的經(jīng)費(fèi)支持。

          圖注: 筆者訪問(wèn)SETI研究所

          然而,耗費(fèi)了大量人力物力的艾倫射電望遠(yuǎn)鏡陣列并沒(méi)有搜尋到外星人的蛛絲馬跡,隨著2011年美國(guó)政府資金支持的停止,艾倫射電望遠(yuǎn)鏡陣列陷入了停工的局面。

          圖注:艾倫射電望遠(yuǎn)鏡陣列(圖片來(lái)源于網(wǎng)絡(luò)http://www.shao.ac.cn/kpyd/mtsm/201105/t20110505_3128141.html)

          與SETI研究所隔著舊金山灣相望的加州大學(xué)伯克利分校SETI研究中心(參考文獻(xiàn)【6】),他們負(fù)責(zé)的SERENDIP(Search for Extraterrestrial Radio Emissions from Nearby Developed Intelligent Populations:搜尋臨近地球的地外智慧生命發(fā)出的射電信號(hào))項(xiàng)目是世界上運(yùn)行時(shí)間最長(zhǎng)的SETI項(xiàng)目。

          得益于互聯(lián)網(wǎng)技術(shù)突飛猛進(jìn)的發(fā)展,伯克利SETI研究中心也展開了SETI@home的項(xiàng)目(參考文獻(xiàn)【7】),利用全球900萬(wàn)志愿者聯(lián)網(wǎng)的計(jì)算機(jī)共同搜尋地外文明。SERENDIP最初是依附于其他觀測(cè)項(xiàng)目之上的,從阿雷西博射電望遠(yuǎn)鏡拿到觀測(cè)數(shù)據(jù)之后,他們將這些數(shù)據(jù)分段,分別發(fā)給SETI@home的各個(gè)志愿者,利用每個(gè)志愿者電腦待機(jī)休息的時(shí)間對(duì)數(shù)據(jù)進(jìn)行處理,找出非自然產(chǎn)生的射電信號(hào)以及潛在的目標(biāo)信號(hào),再反饋給SETI研究中心的科學(xué)家們。這種模式的優(yōu)勢(shì)是進(jìn)行SETI研究的科學(xué)家們不需要單獨(dú)申請(qǐng)望遠(yuǎn)鏡的觀測(cè)時(shí)間,能與其他項(xiàng)目實(shí)現(xiàn)雙贏。

          圖注: SETI@home分布式計(jì)算項(xiàng)目

          2. 突破創(chuàng)新計(jì)劃 (Breakthrough initiatives)

          突破創(chuàng)新計(jì)劃(參考文獻(xiàn)【8】)是俄羅斯富翁尤里·米爾納于2015年創(chuàng)立的探索宇宙、搜尋地外智慧生命,鼓勵(lì)公眾從行星的角度進(jìn)行辯論的項(xiàng)目。其董事會(huì)成員包括著名的科學(xué)家史蒂芬·霍金以及Facebook的CEO馬克·扎克伯格。尤里·米爾納在英國(guó)倫敦皇家學(xué)會(huì)舉行的新聞發(fā)布會(huì)上宣布了突破創(chuàng)新計(jì)劃的成立, 當(dāng)時(shí)物理學(xué)家史蒂芬·霍金、英國(guó)皇家天文學(xué)家馬丁.瑞斯(Martin Rees)[據(jù)說(shuō)他非常相信地外文明的存在]、“SETI之父”的弗蘭克·德雷克、美國(guó)加州大學(xué)伯克利分校(U.C.Berkeley)天文系席教授高爾夫·摩西(Geoff Marcy)[他曾經(jīng)發(fā)現(xiàn)了上千顆系外行星,是諾貝爾獎(jiǎng)的熱門候選者;但是不相信地外文明的存在,曾經(jīng)和突破聆聽計(jì)劃的PI,同時(shí)也是伯克利SETI@home的首席科學(xué)家Dan Werthimer教授進(jìn)行過(guò)關(guān)于是否有地外文明的辯論;目前他已經(jīng)從U.C.Berkeley天文系辭職]、 突破聆聽的主要負(fù)責(zé)人Andrew Siemion以及基金會(huì)主席Peter Worden參加了成立儀式。

          圖注: 突破創(chuàng)新計(jì)劃新聞發(fā)布會(huì)

          突破創(chuàng)新計(jì)劃由突破聆聽(Breakthrough Lisen)、突破攝星(Breakthrough Strashot)以及突破信息(Breakthrough Message)三個(gè)項(xiàng)目組成。

          (1)突破聆聽

          突破聆聽計(jì)劃是歷史上最大規(guī)模的搜尋地外智慧生命的項(xiàng)目。

          史蒂芬·霍金與尤里·米爾納于2015年7月共同啟動(dòng)了突破聆聽項(xiàng)目。盡管霍金本人認(rèn)為向太空主動(dòng)暴露人類的信息并不是明智之舉,但是他對(duì)于人類主動(dòng)搜尋地外智慧生命的項(xiàng)目仍然持積極態(tài)度。

          突破聆聽計(jì)劃將在十年內(nèi)投入1億美元的資金,支持SETI研究。其中一部分經(jīng)費(fèi)用于購(gòu)買望遠(yuǎn)鏡的觀測(cè)時(shí)間,另一大筆經(jīng)費(fèi)將會(huì)用來(lái)升級(jí)望遠(yuǎn)鏡的后端設(shè)備。有了更多的望遠(yuǎn)鏡觀測(cè)時(shí)間以及更好的設(shè)備,突破聆聽計(jì)劃將會(huì)得到優(yōu)于以往近百倍的觀測(cè)結(jié)果。鑒于NASA已經(jīng)決定今后不再給SETI研究任何的經(jīng)費(fèi)支持,對(duì)于SETI研究的科學(xué)家們來(lái)說(shuō),突破聆聽項(xiàng)目的啟動(dòng)是一個(gè)重大利好消息。

          2015年,伯克利SETI研究中心幸運(yùn)的得到了俄羅斯富翁尤里·米爾納10年內(nèi)共計(jì)1億美元的資金支持,繼續(xù)搜尋地外文明。突破聆聽計(jì)劃的PI,同時(shí)也是伯克利SETI@home的首席科學(xué)家丹·沃斯莫(Dan Werthimer)教授,將與突破聆聽的主要負(fù)責(zé)人安德魯·西蒙(Andrew Siemion)一起[曾經(jīng)是Dan Werthimer的博士后],帶領(lǐng)伯克利的SETI研究團(tuán)隊(duì)一同聆聽天外來(lái)音。

          Dan Werthimer教授與中國(guó)也有一段不解之緣,早在上個(gè)世紀(jì)八十年代,他就在北京師范大學(xué)天文系進(jìn)行了為期一年的訪問(wèn)交流,與北師大的師生建立了深厚的情誼。2014年筆者訪問(wèn)美國(guó)加州大學(xué)伯克利分校(U.C.Berkeley)天文系和勞倫茲國(guó)家實(shí)驗(yàn)室(LBNL)時(shí),與Dan建立了更加密切的合作關(guān)系。2015年,在筆者邀請(qǐng)下,Werthimer教授對(duì)北師大進(jìn)行了學(xué)術(shù)訪問(wèn),并做了風(fēng)趣幽默、通俗易懂的報(bào)告,報(bào)告介紹了SETI研究的歷史與發(fā)展。在此良機(jī)下,筆者帶領(lǐng)的北師大SETI研究團(tuán)隊(duì)也積極得加入到了SETI的研究中,并且已經(jīng)開始處理綠岸射電望遠(yuǎn)鏡(Green Bank Telescope)的數(shù)據(jù)。

          圖注: 筆者與DAN的合影以及DAN在北師大的海報(bào)

          突破聆聽計(jì)劃主要利用位于美國(guó)西弗吉尼亞州的100米口徑的綠岸射電望遠(yuǎn)鏡(Green Bank Telescope)和位于澳大利亞的64米口徑的Parkes射電望遠(yuǎn)鏡,監(jiān)聽來(lái)自外星文明傳來(lái)的信號(hào)。綠岸射電望遠(yuǎn)鏡是世界上最大的全方位可移動(dòng)望遠(yuǎn)鏡,Parkes射電望遠(yuǎn)鏡是南半球第二大的射電望遠(yuǎn)鏡。

          在突破聆聽項(xiàng)目開啟之前,做SETI研究的科學(xué)家們通常一年之內(nèi)只能得到一兩天的觀測(cè)時(shí)間,而現(xiàn)在,他們得到了望遠(yuǎn)鏡每年20%-25%的觀測(cè)時(shí)間。

          圖注:國(guó)臺(tái)和SETI簽訂協(xié)議

          2016年10月,中國(guó)科學(xué)院國(guó)家天文臺(tái)也與突破基金會(huì)簽訂戰(zhàn)略性合作協(xié)議,國(guó)家天文臺(tái)臺(tái)長(zhǎng)嚴(yán)俊和突破獎(jiǎng)基金會(huì)主席及“突破計(jì)劃”執(zhí)行主任Pete Worden代表雙方分別簽字。根據(jù)合作意向,國(guó)家天文臺(tái)500米口徑球面射電望遠(yuǎn)鏡FAST將加入“突破聆聽”(Breakthrough Listen)項(xiàng)目,與位于美國(guó)的綠岸望遠(yuǎn)鏡及位于澳大利亞的Parkes天文臺(tái)共同合作,尋找地球以外智慧生命的線索。雙方將有可能交換觀測(cè)計(jì)劃、探測(cè)方法和數(shù)據(jù),并快速進(jìn)行跟蹤觀測(cè)及數(shù)據(jù)分析。

          未來(lái),位于三個(gè)國(guó)家的三個(gè)世界一流的望遠(yuǎn)鏡將一起交換觀測(cè)計(jì)劃,共享觀測(cè)數(shù)據(jù)。

          圖注: 筆者參觀綠岸射電望遠(yuǎn)鏡

          圖注:Parkes射電望遠(yuǎn)鏡

          除了射電波段的研究,突破聆聽還有一部分資金用于美國(guó)加利福尼亞州利克天文臺(tái)的2.4米光學(xué)望遠(yuǎn)鏡,進(jìn)行光學(xué)波段的研究,旨在探測(cè)地外文明發(fā)出指向地球的激光信號(hào)。

          圖注:筆者訪問(wèn)美國(guó)加利福尼亞州利克天文臺(tái)

          突破聆聽計(jì)劃主要觀測(cè)的頻率范圍是1-10GHz,在這個(gè)范圍內(nèi)的射電信號(hào)不受宇宙源或地球大氣的影響,可以用地面望遠(yuǎn)鏡進(jìn)行觀測(cè)。大型望遠(yuǎn)鏡的觀測(cè)時(shí)間是十分寶貴的,因此科學(xué)家們總是期望從一批觀測(cè)數(shù)據(jù)中可以得到多項(xiàng)科研成果。SETI研究得到的觀測(cè)數(shù)據(jù),還可以用于研究脈沖星、恒星日冕物質(zhì)拋射等研究領(lǐng)域。這些數(shù)據(jù)將會(huì)公開發(fā)表,可能是歷史上公開發(fā)表的數(shù)量最多的數(shù)據(jù)。

          (2)突破攝星計(jì)劃

          突破攝星項(xiàng)目計(jì)劃建成一個(gè)依靠光壓驅(qū)動(dòng)的納米級(jí)宇宙飛船,其速度高達(dá)到光速的15%,這樣的飛船能夠在發(fā)射后20年到達(dá)距離太陽(yáng)系最近的恒星——半人馬座α星,又稱為比鄰星——為我們傳來(lái)最近發(fā)現(xiàn)的比鄰星的行星 Proxima b的圖像。據(jù)此,可以幫助我們探測(cè)該恒星系統(tǒng)是否還有其他行星,我們還可以分析它們的磁場(chǎng)等一系列的性質(zhì)。

          (3)突破信息計(jì)劃

          如果說(shuō)突破聆聽計(jì)劃是被動(dòng)的接收外星人的信號(hào),那么突破信息計(jì)劃則是人類主動(dòng)、有意識(shí)地給地外文明發(fā)送信息的項(xiàng)目。

          突破信息計(jì)劃的研究還包括將信息發(fā)送到宇宙深空的倫理學(xué)。同時(shí),它還發(fā)起了高達(dá)一百萬(wàn)美元獎(jiǎng)金的競(jìng)賽,競(jìng)賽的內(nèi)容是設(shè)計(jì)一個(gè)可能會(huì)發(fā)送到地外文明手中的來(lái)自地球的數(shù)字化信息。這條信息應(yīng)該是代表整個(gè)人類的文明程度和我們地球的特征。在是否應(yīng)該主動(dòng)向外界發(fā)送關(guān)于地球和人類信息的高水平深層次辯論結(jié)果出來(lái)之前,該項(xiàng)目暫時(shí)不會(huì)向外界發(fā)送任何信息。

          突破計(jì)劃的三個(gè)項(xiàng)目相輔相成,期待它能為我們帶來(lái)振奮人心的發(fā)現(xiàn)。在未來(lái)的十到二十年之間,人們或許有望找到外星人發(fā)出的蛛絲馬跡。另一方面,不論是否真的有外星人存在,突破創(chuàng)新計(jì)劃都將在天文特別是射電天文學(xué)方面,極大的推動(dòng)科學(xué)技術(shù)的發(fā)展。

          3.突破聆聽計(jì)劃研討會(huì)

          2016年10月5-6日,在綠岸天文臺(tái)召開了突破聆聽計(jì)劃研討會(huì),筆者也參加了這次會(huì)議,并且作了SETI in China 的學(xué)術(shù)報(bào)告。

          會(huì)議由突破聆聽計(jì)劃項(xiàng)目主辦,綠岸天文臺(tái)承辦。突破聆聽基金的負(fù)責(zé)人Jamie Drew、突破聆聽項(xiàng)目的PI Dan Werthimer教授、該項(xiàng)目的主要負(fù)責(zé)人Andrew Siemion以及現(xiàn)代SETI項(xiàng)目的奠基人Frank Drake教授均出席了本次研討會(huì)。

          圖注:筆者與Dan Werthimer和Andrew Siemion

          研討會(huì)上探討了突破聆聽計(jì)劃的研究目標(biāo)、策略,并且廣泛探討了現(xiàn)代搜尋地外智慧生命的方法。從SETI實(shí)驗(yàn)所需的射電望遠(yuǎn)鏡后端接收機(jī)以及數(shù)據(jù)儲(chǔ)存、傳輸?shù)扔布O(shè)備,到數(shù)據(jù)處理的方法,特別是對(duì)與其他研究項(xiàng)目一起進(jìn)行聯(lián)合觀測(cè)研究的可能性進(jìn)行了討論。

          此外,還有部分利用開普勒衛(wèi)星進(jìn)行光學(xué)波段研究的學(xué)者到場(chǎng)做了精彩的報(bào)告,主要是有關(guān)系外行星的搜尋工作。隨著系外行星樣本的不斷增加,將會(huì)增加我們對(duì)于系外行星的認(rèn)識(shí),對(duì)于宜居行星分布情況也將會(huì)有進(jìn)一步的了解。

          對(duì)于宇宙中是否存在其他智慧生物,雖然短時(shí)間內(nèi)可能不會(huì)有結(jié)果,但是學(xué)者們大多抱有積極樂(lè)觀的態(tài)度。

          即使最終不是專門研究SETI的科學(xué)家發(fā)現(xiàn)了地外智慧生命的,就像歷史上許多重大天文觀測(cè)發(fā)現(xiàn)一樣(有心栽花花不開,無(wú)心插柳柳成蔭),那仍將是令人激動(dòng)的結(jié)果。

          與會(huì)者還參觀了綠岸望遠(yuǎn)鏡的觀測(cè)室以及后端設(shè)備室(非美國(guó)公民需要登記批準(zhǔn)后才能進(jìn)入)。在這里,觀測(cè)人員可以同時(shí)控制天文臺(tái)中的多架望遠(yuǎn)鏡進(jìn)行觀測(cè),后端設(shè)備室有兩排插滿了5TB硬盤的架子,存儲(chǔ)了突破聆聽計(jì)劃的觀測(cè)數(shù)據(jù)并對(duì)其進(jìn)行了預(yù)處理。當(dāng)找到了研究人員所感興趣的信號(hào)之后,會(huì)把這部分?jǐn)?shù)據(jù)發(fā)往加州大學(xué)伯克利分校的空間科學(xué)實(shí)驗(yàn)室進(jìn)行進(jìn)一步的處理。由于每天觀測(cè)都會(huì)產(chǎn)生大量數(shù)據(jù),剩下的沒(méi)有發(fā)現(xiàn)感興趣信號(hào)的數(shù)據(jù)就會(huì)被刪除掉。德雷克教授感慨道,他在二十世紀(jì)六十年代最早做SETI實(shí)驗(yàn)的時(shí)候,是不敢想象今天的海量數(shù)據(jù)的。

          楊利偉在太空是遇到外星人了嗎?

          最后,讓我們?cè)倩氐竭@個(gè)問(wèn)題,楊利偉在太空是遇到外星人了嗎?

          筆者的看法是,楊利偉遇到外星人的可能性很小。

          到目前為止,還沒(méi)有接收到來(lái)自外星人的信號(hào),并且也沒(méi)有外星人造訪地球的確切事實(shí)。

          以目前我們所知的科學(xué)技術(shù)水平,銀河系內(nèi)的外星人即使乘坐以光速飛行的飛船在短時(shí)間內(nèi)都無(wú)法到達(dá)我們地球。從理論上講,一種可能可以使我們從一個(gè)區(qū)域在短時(shí)間內(nèi)到達(dá)另一個(gè)區(qū)域,那就是《星際穿越》電影里面描述的蟲洞,這也是我的博士導(dǎo)師沈有根先生研究了一輩子的天體物理領(lǐng)域。

          圖注:蟲洞示意圖

          如上圖所示,外星人可以通過(guò)蟲洞在短時(shí)間內(nèi)從宇宙一個(gè)遙遠(yuǎn)的區(qū)域到達(dá)我們這里,而不需要經(jīng)過(guò)漫長(zhǎng)的路程。2015年初,來(lái)自意大利和美國(guó)的一個(gè)國(guó)際研究小組聲稱,基于對(duì)銀河系的最新研究和理論,在我們的銀河系可能存在可以通往遙遠(yuǎn)時(shí)空的巨大門戶-蟲洞,像熱映電影《星際穿越》中所展現(xiàn)的那樣,其大小足以讓一艘宇宙飛船經(jīng)過(guò)。相關(guān)論文發(fā)表在《物理學(xué)報(bào)》雜志上。這項(xiàng)研究表明人類將有可能通過(guò)蟲洞穿越時(shí)空到達(dá)及其遙遠(yuǎn)的地方。因此,如果楊利偉遇到的確實(shí)是外星人,那么這些外星人所行走的路線只有一條:蟲洞。這條蟲洞連接我們地球附近區(qū)域和銀河系內(nèi)某個(gè)遙遠(yuǎn)的地方或者河外星系的某處區(qū)域,而且這個(gè)蟲洞的入口或許在馬航MH370飛機(jī)失事區(qū)域。

          一個(gè)美好的愿望是馬航MH370飛機(jī)仍然在這條蟲洞中穿越。雖然我們感覺(jué)兩年過(guò)去了,而MH370飛機(jī)由于在蟲洞中穿行,其時(shí)間變慢,機(jī)上的乘客一直活著,他們感覺(jué)只是過(guò)去了幾個(gè)小時(shí),不久的將來(lái)他們或許通過(guò)其他的蟲洞返回到我們的地球。

          參考文獻(xiàn)

          [1] Seifer, Marc J. (1996). "Martian Fever (1895–1896)". Wizard : the life and times of Nikola Tesla: biography of a genius. Secaucus, New Jersey: Carol Pub. p. 157. ISBN 978-1-55972-329-9.OCLC 33865102.

          [2] Cocconi, Giuseppe & Philip Morrison (1959). "Searching for interstellar communications"Nature.184(4690):844~846.Bibcode:1959Natur.184..844C.doi:10.1038/184844a0.

          [3] "Project Cyclops: A Design Study of a System for Detecting Extraterrestrial Intelligent Life" NASA. 1971.

          [4] Carl Sagan; Linda Salzman Sagan & Frank Drake (1972-02-25). “A Message from Earth”. Science. 175 (4024) : 881-884

          [5] http://www.seti.org/

          [6] https://seti.berkeley.edu/

          [7] http://setiathome.ssl.berkeley.edu/

          [8] http://www.breakthroughinitiatives.org

          “科普中國(guó)”是中國(guó)科協(xié)攜同社會(huì)各方利用信息化手段開展科學(xué)傳播的科學(xué)權(quán)威品牌。

          本文由科普中國(guó)融合創(chuàng)作出品,轉(zhuǎn)載請(qǐng)注明出處。

          注】本文譯自:https://psamsotha.github.io/jersey/2015/12/16/dynamic-proxies-dependency-injection.html

          本文將討論動(dòng)態(tài)代理如何在 Java 平臺(tái)中工作以及依賴注入如何利用此 Java 功能。本文的撰寫源于我在 HK2 框架(或更確切地說(shuō)是 Jersey 應(yīng)用程序中的 HK2)中嘗試將請(qǐng)求范圍對(duì)象注入到單例對(duì)象中的的搜索。我本來(lái)打算將我的發(fā)現(xiàn)都寫在一個(gè)博客里,但是我覺(jué)得這個(gè)主題太寬泛了,不適合用兩行代碼就能解決的問(wèn)題。

          首先,我將快速討論代理模式,然后展示如何在 Java 語(yǔ)言中使用動(dòng)態(tài)代理,最后介紹一個(gè)使用動(dòng)態(tài)代理和自定義依賴項(xiàng)注入的示例。

          代理模式

          我不會(huì)過(guò)多介紹代理模式。在互聯(lián)網(wǎng)上到處都有很好的參考。我只給出一個(gè)簡(jiǎn)短的類比,以及該模式的一些簡(jiǎn)短代碼示例。

          我敢肯定,你們大多數(shù)人都聽過(guò)“委托投票”這個(gè)說(shuō)法。當(dāng)有人投票給其他人時(shí)。例如,說(shuō)公司董事會(huì)成員之間有一些隨意的投票。成員 B 生病住院了,因此無(wú)法參加董事會(huì)會(huì)議。所以,成員 A 代表成員 B 進(jìn)行了投票。因此,在表決會(huì)議上,成員 A 只是成員 B 的委托。

          代理模式的工作原理與此相同。這是一個(gè)類圖(來(lái)自維基百科)。

          假設(shè) Member 是接口

          public interface Member {
              void vote();
          }

          那么你有 MemberAMemberB

          public class MemberA implements Member {
              public void vote() {}
          }
          
          public class MemberB implements Member {
              public void vote() {}
          }

          由于成員 B 將不存在,因此我們需要一個(gè)代理。 代理還應(yīng)實(shí)現(xiàn) Member 接口,并應(yīng)包含對(duì) MemberB 的引用。

          public class MemberBProxy implements Member {
              private MemberB memberB;
          
              public void vote {
                  memberB.vote();
              }
          }

          現(xiàn)在 MemberA 可以讓 a 成為成員 B 的代理,讓代理為成員 B 進(jìn)行代理投票。

          這可能不是最好的例子,因?yàn)榇韮H對(duì)成員 B 進(jìn)行表決。但是對(duì)于真正的代理,通常情況下還會(huì)發(fā)生其他事情。例如,在使用遠(yuǎn)程代理的情況下, vote() 方法實(shí)際上可能會(huì)對(duì)遠(yuǎn)程 MemberB 進(jìn)行網(wǎng)絡(luò)調(diào)用。Java平臺(tái)中的一個(gè)示例就是 RMI(遠(yuǎn)程方法調(diào)用)。后面的示例將描述另一個(gè)用例,通常對(duì)于開發(fā)人員來(lái)說(shuō)是透明的。

          動(dòng)態(tài)代理

          在上面的示例中,我們終須手動(dòng)編寫代理類。但是,在 Java 中,隨著 1.3 中引入動(dòng)態(tài)代理,這不是必需的。動(dòng)態(tài)代理的核心接口是 java.lang.reflect.Proxy。要使用它,我們需要組件,我們的代理接口和一個(gè) InvocationHandler。 讓我們看一個(gè)簡(jiǎn)單的例子,使用與上面相同的類比。

          Member memberBProxy = (Memeber) Proxy.newProxyInstance(
                  Memeber.class.getClassLoader(),
                  new Class[] { Member.class },
                  new InvocationHandler() {
                      @Override
                      public Object invoke(Object proxy, Method method, Object[] args) {
                          return method.invoke(new MemberB(), args);
                      }
                  }
          );

          就是這樣。現(xiàn)在 memberBProxyProxy 的一個(gè)實(shí)例,而不是 MemberB 的實(shí)例。如果你打印出 Member 對(duì)象的類名,實(shí)際上會(huì)看到類名是 com.sun.proxy.ProxyX,而不是 MemberB

          讓我們快速地瀏覽一下。這是 Proxy#newProxyInstance 的簽名

          newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)

          它首先需要 ClassLoader 用于定義代理,其次需要一個(gè)實(shí)現(xiàn)的接口,最后是 InvocationHandlerInvocationHandler 只有一個(gè)需要實(shí)現(xiàn)的 callback 方法。

          Object invoke(Object proxy, Method method, Object[] args)

          第一個(gè)參數(shù)是實(shí)際的代理對(duì)象。你應(yīng)該很少使用它。第二個(gè)參數(shù)是 java.lang.reflect.Method 。如果你有 Java 反射的經(jīng)驗(yàn),那么應(yīng)該熟悉這個(gè)接口。 使用 Method 時(shí),我們可以通過(guò)傳遞要調(diào)用該方法的對(duì)象以及任何參數(shù)(最后一行)來(lái)調(diào)用:

          return method.invoke(new MemberB(), args);

          在這里,代理將方法和傳遞給代理之上的方法調(diào)用的參數(shù)傳遞給代理。作為 InvocationHandler 的實(shí)現(xiàn)者,我們可以使用 Method 和method 參數(shù)做我們想做的任何事情。這里我們只是簡(jiǎn)單地,應(yīng)該在 new MemberB() 對(duì)象中調(diào)用,并傳遞參數(shù)。

          為了獲得更清楚地了解情況,只需將其看作 Proxy 實(shí)例具有 Member 接口具有的所有方法。因此,當(dāng)我們調(diào)用 Proxy#vote() 時(shí),它會(huì)調(diào)用 InvocationHandler#invoke 本身、方法和傳遞給 vote() 的參數(shù)(如果有)。通過(guò)調(diào)用 Method 對(duì)象上的 inovokeInvocationHandler 實(shí)現(xiàn)只需調(diào)用該方法即可。然后,Method 對(duì)象將對(duì)實(shí)際的 MemberB 對(duì)象調(diào)用 vote()

          就是這樣。如你所見(jiàn),動(dòng)態(tài)代理很容易實(shí)現(xiàn)。

          動(dòng)態(tài)代理和自定義注入示例

          • 獲取 GitHub 項(xiàng)目(https://github.com/psamsotha/dynamic-proxies-example)

          我將在這里嘗試解釋的是在依賴項(xiàng)注入(DI)框架中如何使用動(dòng)態(tài)代理。DI 中動(dòng)態(tài)代理的主要用例之一是處理范圍。例如,您有一個(gè)處于單例作用域中的服務(wù)或控制器,這意味著每個(gè)應(yīng)用僅創(chuàng)建一個(gè)。該單例服務(wù)依賴于請(qǐng)求范圍內(nèi)的服務(wù)器,這意味著應(yīng)為每個(gè)請(qǐng)求創(chuàng)建一個(gè)服務(wù)器。類可能看起來(lái)像這樣(這完全是虛構(gòu)的---沒(méi)有特定的框架)。

          @Controller(scope = "singleton")
          public class AppController {
              @Inject
              SingletonService service;
          }
          
          @Singleton
          public class SingletonService {
              @Inject
              RequestScopedService service;
          }
          
          @RequestScoped
          public class RequestScopedService {}

          這里的問(wèn)題是,在啟動(dòng)時(shí)創(chuàng)建 SingletonService 時(shí),需要執(zhí)行所有注入。但是在啟動(dòng)時(shí)沒(méi)有請(qǐng)求,因此當(dāng)前應(yīng)該沒(méi)有綁定到請(qǐng)求的 RequestScopedService。另一個(gè)問(wèn)題是我們?nèi)绾喂芾砟膫€(gè)請(qǐng)求獲取哪個(gè) RequestScopedService。也許我們可以在 SingletonService 中添加一個(gè) setter,在其中我們可以為每個(gè)請(qǐng)求設(shè)置一個(gè)新的 RequestScopedService。但這是行不通的,因?yàn)?SingletonService 將被并發(fā)訪問(wèn),就像一些服務(wù)器的工作方式一樣(每個(gè)請(qǐng)求一個(gè)線程)。

          這是動(dòng)態(tài)代理發(fā)揮作用的地方。This is where dynamic proxies come to the rescue. When the當(dāng)啟動(dòng)創(chuàng)建 SingletonService 時(shí)我們將注入服務(wù)的 Proxy,而不是注入實(shí)際的 RequestScopedService。當(dāng)從 from inside the SingletonService, 內(nèi)部對(duì) RequestScopedService 進(jìn)行調(diào)用時(shí),實(shí)際上將在 Proxy 上進(jìn)行調(diào)用,該代理將調(diào)用委派給 InvocationHandler#invoke 方法,該方法實(shí)現(xiàn)對(duì)從 ThreadLocal 獲得的 RequestScopedService 的調(diào)用。每次處理一個(gè)請(qǐng)求時(shí),都會(huì)在 ThreadLocal 中設(shè)置一個(gè)新的 RequestScopedService,這個(gè)請(qǐng)求將在一個(gè)單獨(dú)的線程中處理。如果你聽說(shuō)過(guò) “線程本地代理”一詞,那么這幾乎就是它的工作原理。

          讓我們嘗試實(shí)現(xiàn)這些。我們甚至將實(shí)現(xiàn)自己的依賴注入。我們將實(shí)現(xiàn)一個(gè)簡(jiǎn)單的服務(wù)器框架,該框架允許用戶實(shí)現(xiàn)一個(gè)自定義 RequestHandler ,它可以注入我們的 SingletonService ,而 SingletonService 又依賴于 RequestScopedService。以下是類圖。(接下來(lái),最好從上面的鏈接中獲取 GitHub 項(xiàng)目)。

          如前所述,用戶將能夠?qū)崿F(xiàn)自定義 RequestHandler 并注入我們的 SingletonService。在項(xiàng)目中,有一個(gè)默認(rèn)的實(shí)現(xiàn),它僅只返回來(lái)自 SingletonService 的消息作為 Response

          public class DefaultRequestHandler implements RequestHandler {
              
              @Inject
              private SingletonService singletonService;
          
              @Override
              public Response handleRequest(Request request) {
                  return new Response(singletonService.getMessage());
              }  
          }

          然后用戶創(chuàng)建 Server 傳入實(shí)現(xiàn)類給構(gòu)造器。

          Server server = new Server(DefaultRequestHandler.class);

          在服務(wù)器構(gòu)造函數(shù)中,您將看到兩件事,用戶定義的 RequestHandler 類驗(yàn)證,以及創(chuàng)建 SingletonService。驗(yàn)證在這里并不重要,這是 SingletonService 的創(chuàng)建。

          private static SingletonService initSingletonService() {
              Service proxyService = (Service) Proxy.newProxyInstance(
                      Service.class.getClassLoader(), new Class[]{Service.class},
                      new ServiceInvocationHandler());
              return new SingletonService(proxyService);
          }

          我們要做的第一件事是創(chuàng)建 Service 類的代理。這里是 ServiceInvocationHandler

          public class ServiceInvocationHandler implements InvocationHandler {
          
              @Override
              public Object invoke(Object proxy, Method method, Object[] args) .. {
                  Service service = ThreadLocalService.get();
                  return method.invoke(service, args);
              }
          }

          它沒(méi)有太大作用。它只是從 ThreadLocalService 檢索 Service ,并在服務(wù)上調(diào)用代理方法。稍后我們將看到,RequestScopedService 的實(shí)例被設(shè)置為 ThreadLocal

          然后,使用 SingletonService 創(chuàng)建 Service。所以現(xiàn)在,當(dāng) SingletonService調(diào)用 Service 上的方法時(shí),代理將查找線程本地 Service 并將調(diào)用委托給方法。

          服務(wù)器引導(dǎo)程序就是這樣。現(xiàn)在我們進(jìn)入運(yùn)行時(shí)和請(qǐng)求處理。下面是來(lái)自請(qǐng)求處理流的序列圖。

          首先,Main 程序調(diào)用 Server#sendRequest(Request) 并傳入一個(gè)新的 Request 對(duì)象。 Request 對(duì)象僅具有客戶端的名稱。

          當(dāng)我們?cè)?Server 上調(diào)用 sendRequest 時(shí),它所做的就是將請(qǐng)求添加到 BlockingQueue

          public void sendRequest(Request request) {
              try {
                  requests.put(request);
              } catch (InterruptedException ex) {
                  throw new RuntimeException(ex);
              }
          }

          服務(wù)器啟動(dòng)時(shí),它會(huì)不斷輪詢 BlockingQueue,等待新的 Request

          public void startServer() {
              executors.submit(new Runnable() {
                  @Override
                  public void run() {
                      while (true) {
                          try {
                              Request request = requests.take();
                              if (request.isShutdownTrigger()) {
                                  break;
                              }
                              executors.submit(new RequestProcessor(userDefineHandler,
                                                                    singletonService,
                                                                    request));
                          } catch (InterruptedException ex) {
                              throw new RuntimeException(ex);
                          }
                      }
                      System.out.println("Server shutdown!");
                  }
              });  
          }

          當(dāng)接收到 Request 時(shí),Server 將創(chuàng)建一個(gè)新的 RequestProcessor,傳入 Request 對(duì)象、SingletonService 對(duì)象和使用定義的 RequestHandler 類。如果你查看 RequestProcessorrun() 方法,你將看到以下內(nèi)容

          private void setThreadLocalService() {
              ThreadLocalService.set(new RequestScopedService(request));
          }
          
          @Override
          public void run() {
              setThreadLocalService();
              RequestHandler handler = initInjections();
              Response response = handler.handleRequest(request);
              System.out.println(response.getMessage());
          }

          因此,處理器要做的第一件事就是將 RequestScopedService 設(shè)置為 ThreadLocalService。 然后使用一些反射實(shí)例化 RequestHandler ,如 initInjections() 方法所示

          RequestHandler initInjections() {
              try {
                  for (Field field : handlerCls.getDeclaredFields()) {
                      if (field.isAnnotationPresent(Inject.class)
                              && field.getType() == SingletonService.class) {
                          return createHandler(field, handlerCls);
                      }
                  }
          
                  Constructor[] cons = handlerCls.getConstructors();
                  for (Constructor con : cons) {
                      if (con.isAnnotationPresent(Inject.class)
                              && con.getParameterCount() == 1
                              && con.getParameterTypes()[0] == SingletonService.class) {
                          return (RequestHandler) con.newInstance(singletonService);
                      }
                  }
              } catch (Exception ex) {
                  throw new RuntimeException(ex);
              }
              throw new RuntimeException("RequestHandler could not be created.");
          }

          該方法只是檢查我們是否應(yīng)該進(jìn)行字段注入或構(gòu)造函數(shù)注入。它確保使用 @Inject 注解字段或構(gòu)造函數(shù)。如果字段帶有注解,并且字段類型為 SingletonService,我們將使用反射使用 SingletonService 設(shè)置字段。進(jìn)程構(gòu)造函數(shù)注入也會(huì)發(fā)生類似事件。

          RequestHander 做的最后一件事就是簡(jiǎn)單地調(diào)用 RequestHandlerhandleRequestof ,它返回一個(gè) Response,然后處理器打印出 Response 消息。這就是處理單個(gè)請(qǐng)求的過(guò)程。

          如果運(yùn)行 Main 類,應(yīng)該會(huì)看到類似以下內(nèi)容的信息

          Message: Hello Kobe
            meta-info:
              service class: com.sun.proxy.$Proxy2
              service id: 1
              thread name: pool-1-thread-2
          
          
          Message: Hello Lebron
            meta-info:
              service class: com.sun.proxy.$Proxy2
              service id: 2
              thread name: pool-1-thread-3
          ... three more

          您應(yīng)該注意的第一件事是,服務(wù)類確實(shí)是 Proxy 實(shí)例,而不是 RequestScopedService。只要正在處理請(qǐng)求,底層的 RequestScopedService 都將保持不變。因此所有在 Service 內(nèi)部的服務(wù)上所做的將總是被委托給與特定線程相關(guān)聯(lián)的實(shí)際 RequestScopedService

          就這樣了。

          總結(jié)

          我們介紹了代理模式的一些基礎(chǔ)知識(shí),并了解了它如何使用包裝器或委托模型來(lái)調(diào)用底層對(duì)象。然后,我們討論了動(dòng)態(tài)代理,以及如何用 Java 語(yǔ)言實(shí)現(xiàn)它。最后,我們通過(guò)一個(gè)示例說(shuō)明了動(dòng)態(tài)代理是如何使用作用域依賴注入的。如果需要將較小作用域的對(duì)象注入到更大作用域的對(duì)象中,則需要代理較小作用域的對(duì)象,以便不同的線程能夠訪問(wèn)自己的較小作用域的對(duì)象實(shí)例。

          這個(gè)示例與你在現(xiàn)實(shí)生活中使用的一些東西相去甚遠(yuǎn),但我希望你能更好地理解我們討論的兩個(gè)主題(動(dòng)態(tài)代理和依賴注入)的組全背后發(fā)生的事情。


          主站蜘蛛池模板: 99国产精品一区二区| 久久一区二区三区99| 精品福利视频一区二区三区| 国产乱码精品一区二区三区香蕉| 日本中文一区二区三区亚洲| 99久久精品国产一区二区成人 | 文中字幕一区二区三区视频播放| 男人的天堂亚洲一区二区三区| 糖心vlog精品一区二区三区| 99久久人妻精品免费一区| 亚洲国产精品乱码一区二区| 久久亚洲中文字幕精品一区四 | 精品无码中出一区二区| 精品国产一区二区三区AV| 人妻AV中文字幕一区二区三区| 精品一区二区三区在线视频| 亚洲日韩精品一区二区三区无码| 中文字幕亚洲乱码熟女一区二区| 成人区精品一区二区不卡| 中文字幕一区二区三| 久久久精品日本一区二区三区| 亚洲一区电影在线观看| 亚洲熟妇AV一区二区三区浪潮 | 精品少妇一区二区三区在线 | 精品久久一区二区三区| 久久人妻内射无码一区三区| 亚洲av无码一区二区乱子伦as| 国产精品高清一区二区三区| 欧洲无码一区二区三区在线观看| 日韩精品一区二区三区中文精品| 国产精品亚洲一区二区在线观看| 立川理惠在线播放一区| 国产一区二区三区免费观看在线| 亚洲日本精品一区二区| 伊人久久一区二区三区无码| 亚洲国产一区二区视频网站| 亚洲一区二区三区日本久久九| 人妻在线无码一区二区三区| 一区二区三区免费在线观看| 亚洲天堂一区二区三区| 丰满岳妇乱一区二区三区|