利用IntelliJ IDEA與Maven開(kāi)始你的Scala之旅

一. IntelliJ IDEA安裝及配置

1.1 IntelliJ IDEA下載及安裝

首先在 CHOOSE YOUR EDITION 這里選擇Community版本,這個(gè)版本是免費(fèi)提供的化漆,對(duì)我們的Spark使用來(lái)說(shuō),用這個(gè)版本已經(jīng)足夠了贫导。如下圖所示:

直接點(diǎn)擊黑色的 DOWNLOAD 按鈕會(huì)默認(rèn)開(kāi)始下載Windows版本的IntelliJ IDEA烹玉,如果需要其他平臺(tái)的版本叁幢,可以點(diǎn)擊旁邊的 .EXE 卖宠,然后在打開(kāi)的下拉菜單中巍杈,選擇相應(yīng)平臺(tái)即可。

下載完成后扛伍,雙擊得到的.exe文件(我這里主要以Windows平臺(tái)為例筷畦,下載得到的文件為ideaIC-2016.2.1.exe),開(kāi)始進(jìn)行安裝蜒秤,其中所有選項(xiàng)按照默認(rèn)的即可(其中有一個(gè)安裝路徑的配置汁咏,按照普通軟件安裝的方法自行設(shè)置即可,當(dāng)然使用默認(rèn)的路徑也可以作媚,記住這里的安裝路徑,后面要用到)帅刊,一路點(diǎn)擊Next纸泡,最后點(diǎn)擊Finish按鈕結(jié)束安裝過(guò)程。

默認(rèn)情況下,IntelliJ IDEA并不會(huì)在桌面上創(chuàng)建快捷鍵女揭,我們可以去它的安裝目錄下的bin文件夾中蚤假,找到它的可執(zhí)行.exe文件,我這里的bin文件夾路徑是C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.2.1\bin吧兔,在該目錄下磷仰,你可以找到兩個(gè)如下的文件:

idea.exe//對(duì)應(yīng)32位機(jī)器
idea64.exe//對(duì)應(yīng)64位機(jī)器

根據(jù)自己電腦是32位還是64位的,進(jìn)行相應(yīng)版本的選擇境蔼,如果怕麻煩灶平,建議在該文件上點(diǎn)擊右鍵,然后選擇發(fā)送到 --> 桌面快捷方式選項(xiàng)箍土,這樣以后在啟動(dòng)的時(shí)候逢享,直接在桌面上雙擊快捷方式即可(如果是細(xì)心的讀者,其實(shí)可以發(fā)現(xiàn)吴藻,在IDEA安裝過(guò)程中瞒爬,其中有一個(gè)步驟就是問(wèn):需不需要在桌面上創(chuàng)建快捷方式,默認(rèn)下是不會(huì)創(chuàng)建的)沟堡。

選擇好32位還是64位的文件后侧但,然后雙擊運(yùn)行IntelliJ IDEA,一般來(lái)說(shuō)首次運(yùn)行航罗,都會(huì)碰到如下頁(yè)面:

因?yàn)镮ntelliJ IDEA本身都會(huì)有一些配置文件俊犯,所以這里在詢問(wèn)是否需要導(dǎo)入一個(gè)配置文件,這里選擇圖中標(biāo)示的選項(xiàng)即可伤哺,并點(diǎn)擊OK燕侠。然后來(lái)到如下所示的UI主題選擇界面,大多數(shù)使用IntelliJ IDEA的開(kāi)發(fā)人員立莉,一般都會(huì)毫無(wú)例外的選用第二個(gè)UI绢彤,這種灰黑色的主題簡(jiǎn)潔大方音念,給人一種深邃的質(zhì)感崖蜜,也確實(shí)是很多人選擇IntelliJ IDEA的一個(gè)重要原因之一窿祥,用很多人的話說(shuō)萧锉,寫(xiě)代碼都能寫(xiě)出“高潮”來(lái)祥山,是否屬實(shí)膀篮,你們?cè)囋嚲椭懒恕?/p>

1.2 Scala插件的安裝

后續(xù)的幾個(gè)頁(yè)面按照默認(rèn)的配置即可察滑,一直Next來(lái)到下面的界面毒坛。因?yàn)槲覀冎饕肧cala來(lái)寫(xiě)Spark程序有勾,而IntelliJ IDEA需要使用Scala插件來(lái)支持Scala疹启,安裝方法如下圖所示,首先點(diǎn)擊Configure蔼卡,然后點(diǎn)擊下拉菜單中的Plugins喊崖。

隨后打開(kāi)的頁(yè)面會(huì)顯示出IntelliJ IDEA當(dāng)前已安裝的插件列表,現(xiàn)在我們要安裝Scala插件,所以點(diǎn)擊頁(yè)面左下方的Install JetBrains plugin...按鈕荤懂,然后來(lái)到安裝插件的頁(yè)面茁裙,如果網(wǎng)絡(luò)正常的話,在頁(yè)面左上方的搜索框內(nèi)搜索"scala"节仿,即可出現(xiàn)Scala插件的安裝界面晤锥,點(diǎn)擊右側(cè)頁(yè)面中的Install進(jìn)行安裝后,可以看到安裝的進(jìn)度條廊宪,如下圖所示:

但是如果你在公司內(nèi)網(wǎng)矾瘾,這個(gè)時(shí)候你可能需要配置代理,步驟如下圖所示挤忙,在圖中的Host namePort number中填寫(xiě)公司自己的代理即可霜威,如果需要,在下方的賬號(hào)和密碼框中按情況填寫(xiě)上相應(yīng)信息册烈。填寫(xiě)完畢戈泼,記得先檢查一下是否能夠正確連上外部網(wǎng)絡(luò),可以點(diǎn)擊圖中的Check connection赏僧,輸入一個(gè)外網(wǎng)的地址大猛,比如http://www.baidu.com/,測(cè)試一下代理是否正確配置了淀零。一切正常后挽绩,點(diǎn)擊OK退出即可。然后按照上一步中不需要配置代理的情況下驾中,進(jìn)行Scala插件的安裝唉堪。

注意:插件安裝完了之后,記得重啟一下IntelliJ IDEA使得插件能夠生效肩民。

1.3 全局JDK和Library的設(shè)置

因?yàn)镾cala代碼的編寫(xiě)需要依賴JDK唠亚,并且以后編寫(xiě)Spark的程序,肯定會(huì)用到各種外部Jar包持痰,如果自己手動(dòng)去下載這些Jar包然后再引入項(xiàng)目灶搜,不僅費(fèi)時(shí)費(fèi)力,而且尤其在多人協(xié)作開(kāi)發(fā)一個(gè)項(xiàng)目的時(shí)候工窍,各種Jar包版本的管理將會(huì)變得非掣盥簦混亂,因此患雏,在這里建議:從一開(kāi)始就習(xí)慣來(lái)用Maven對(duì)項(xiàng)目依賴到的Jar包進(jìn)行理(后面會(huì)講到Maven)鹏溯,然而在創(chuàng)建Maven工程的時(shí)候,首先便需要指定JDK纵苛。

因此為了后續(xù)創(chuàng)建Spark項(xiàng)目(正如上面所說(shuō)剿涮,一方面是Scala本身需要依賴JDK言津,另一方面用來(lái)管理項(xiàng)目構(gòu)建的Maven攻人,其創(chuàng)建也需要依賴JDK)的時(shí)候不用每次都去配置JDK取试,這里先進(jìn)行一次全局配置。首先在歡迎界面點(diǎn)擊Configure怀吻,然后在Project Defaults的下拉菜單中選擇Project Structure瞬浓,如下圖所示:

然后在打開(kāi)的Default Project Structure界面的左側(cè)邊欄選擇Project,在右側(cè)打開(kāi)的頁(yè)面中創(chuàng)建一個(gè)新的JDK選項(xiàng)(一定要本機(jī)已經(jīng)安裝過(guò)JDK了)蓬坡,如下圖所示步驟在下拉菜單中點(diǎn)擊JDK后猿棉,在打開(kāi)的對(duì)話框中選擇你所安裝JDK的位置,注意是JDK安裝的根目錄屑咳,不是bin文件夾的目錄萨赁,如果你對(duì)上一篇文章中講到的JAVA_HOME還很有印象的話,這里的目錄就是JAVA_HOME中設(shè)置的目錄兆龙。

這一步的全局Project JDK設(shè)置完畢后杖爽,回到歡迎頁(yè)面。

除了要依賴JDK之外紫皇,Scala的編寫(xiě)肯定也離開(kāi)不了自身的SDK(全稱為Software Development Kit慰安,即軟件開(kāi)發(fā)工具包。實(shí)際上聪铺,JDK就是Java的SDK)化焕,我們?cè)贗ntelliJ IDEA編寫(xiě)Scala的程序的時(shí)候,比如要用到Scala自身提供的某個(gè)類铃剔,比如Seq(暫時(shí)不知道不要緊撒桨,后續(xù)文章會(huì)講到),那IntelliJ IDEA到哪里去找這個(gè)Seq呢键兜?只能去Scala自身提供的SDK里面去找凤类,因此各種程序語(yǔ)言的軟件開(kāi)發(fā)者,是離不開(kāi)這些語(yǔ)言的SDK的蝶押,Scala也自然不例外踱蠢。而為了避免每次創(chuàng)建一個(gè)Scala工程的時(shí)候,都要去設(shè)置一遍Scala的SDK棋电,這里做一些全局配置茎截,主要是將Scala SDK引入到項(xiàng)目的Library中,并將其當(dāng)做默認(rèn)配置赶盔。

首先企锌,在歡迎頁(yè)面的右下角點(diǎn)擊Configure,然后在Project Defaults的下拉菜單中選擇Project Structure于未,在打開(kāi)的頁(yè)面左側(cè)選擇Global Libraries撕攒,然后在中間一欄中有一個(gè)綠色的加號(hào)標(biāo)志 +陡鹃,點(diǎn)擊后在下拉菜單中選擇 Scala SDK(如果沒(méi)有的話,回顧上面的步驟抖坪,仔細(xì)觀察一下是不是有哪些步驟錯(cuò)了萍鲸,比如Scala的插件沒(méi)安裝成功,本機(jī)還未安裝Scala擦俐,亦或者Scala的bin文件夾路徑未能添加到系統(tǒng)的 PATH 環(huán)境變量中去等等)脊阴,然后在打開(kāi)的對(duì)話框中選擇系統(tǒng)本身所安裝的Scala(即System對(duì)應(yīng)的版本),點(diǎn)擊OK確定蚯瞧,這時(shí)候會(huì)在中間一欄位置處出現(xiàn)Scala的SDK嘿期,在其上右鍵點(diǎn)擊后選擇Copy to Project Libraries...,這個(gè)操作是為了將Scala SDK添加到項(xiàng)目的默認(rèn)Library中去埋合。整個(gè)流程如下面的動(dòng)圖所示备徐。

二. 創(chuàng)建一個(gè)Maven工程

2.1 創(chuàng)建Maven工程

上面的安裝和配置都完成后,現(xiàn)在可以開(kāi)始創(chuàng)建一個(gè)Maven工程了甚颂。

在歡迎界面點(diǎn)擊Create New Project蜜猾,在打開(kāi)的頁(yè)面左側(cè)邊欄中,選擇Maven西设,然后在右側(cè)的Project SDK一項(xiàng)中瓣铣,查看是否是正確的JDK配置項(xiàng)(如果每一步嚴(yán)格按照上文中的步驟操作的話,正常來(lái)說(shuō)這一欄會(huì)自動(dòng)填充的贷揽,因?yàn)槲覀冎霸?.3中已經(jīng)配置過(guò)了全局的Project JDK了棠笑,如果這里沒(méi)有正常顯示JDK的話,可以點(diǎn)擊右側(cè)的New...按鈕禽绪,然后指定JDK安裝路徑的根目錄即可)蓖救,然后點(diǎn)擊Next,來(lái)到Maven項(xiàng)目最重要三個(gè)參數(shù)的設(shè)置頁(yè)面印屁,這三個(gè)參數(shù)分別為:GroupId, ArtifactIdVersion.

為了更好的解釋這三個(gè)字段循捺,用Spark 1.6.2的核心組件的Maven標(biāo)識(shí)符為例來(lái)進(jìn)行講解。

    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>1.6.2</version>
  • GroupId雄人,可以理解為用來(lái)標(biāo)志你整個(gè)項(xiàng)目組的从橘,或者你這些代碼屬于某一個(gè)完整的項(xiàng)目,比如上面的org.apache.spark就可以非常好的來(lái)標(biāo)志Apache的Spark這個(gè)項(xiàng)目了础钠。一般來(lái)說(shuō)可以使用倒序的公司網(wǎng)址來(lái)作為GroupId恰力,這可以類比為,沿襲了Java項(xiàng)目中使用倒序公司網(wǎng)址來(lái)作為Package名稱的一個(gè)慣例旗吁。
  • ArtifactId踩萎,一般是用來(lái)在整個(gè)項(xiàng)目組來(lái)標(biāo)志本項(xiàng)目的,相比GroupId的范圍很钓,其概念要稍微小一些香府,比如spark-core_2.11就非常好的表示出了本項(xiàng)目主要是關(guān)于Spark的核心基礎(chǔ)組件的董栽,從而能夠與Spark其他各種組件或架構(gòu)很好的區(qū)分開(kāi)來(lái)。
  • Version企孩,正如字面意思锭碳,就是本項(xiàng)目的迭代版本的信息,如上面的1.6.2.

現(xiàn)在柠硕,比如你的公司名稱叫做abc工禾,然后你的項(xiàng)目組叫做test运提,那就可以使用com.abc.test來(lái)作為GroupId蝗柔,然后將ArtifactId取做myFirstProject,版本號(hào)就使用它默認(rèn)的就好了(當(dāng)然民泵,如果你的項(xiàng)目以后有迭代更新版本的話癣丧,這個(gè)是需要按照實(shí)際情況進(jìn)行改動(dòng)的)。這三個(gè)字段設(shè)置完畢后栈妆,點(diǎn)擊Next胁编,來(lái)到項(xiàng)目名稱設(shè)置頁(yè)面,一般可以和ArtifactId字段保持一致鳞尔,當(dāng)然也可以不一致嬉橙,這個(gè)只是為了給本項(xiàng)目取個(gè)名字而已。

整個(gè)流程如下面的Gif動(dòng)圖所示寥假。

2.2 屬于你的"Hello World!"

在上一步中市框,我們已經(jīng)創(chuàng)建了一個(gè)Maven工程,不出意外的話糕韧,這個(gè)時(shí)候會(huì)打開(kāi)這個(gè)項(xiàng)目枫振,并且首先映入眼簾的將是項(xiàng)目的 pom.xml 文件(暫時(shí)不清楚的不要緊,后面會(huì)講到)萤彩,細(xì)心如你粪滤,一定可以驚奇的發(fā)現(xiàn) pom 文件中居然有我們剛才設(shè)置的 GroupId, ArtifactIdVersion 這些信息(如下),這些信息相當(dāng)于就給了本項(xiàng)目一個(gè)唯一的標(biāo)識(shí)符雀扶,有了這個(gè)標(biāo)識(shí)符杖小,別人將會(huì)在浩如煙海的Maven倉(cāng)庫(kù)中,一眼識(shí)別到你(本段話有裝B嫌疑愚墓,不懂的話請(qǐng)暫時(shí)忽略)予权。

    <groupId>com.abc.test</groupId>
    <artifactId>myFirstProject</artifactId>
    <version>1.0-SNAPSHOT</version>

好,現(xiàn)在開(kāi)始要真正在這個(gè)Maven項(xiàng)目中創(chuàng)建一個(gè)屬于自己的Scala程序了转绷,在開(kāi)干之前伟件,為了給Scala營(yíng)造一個(gè)順利的環(huán)境,有幾件事需要先做议经。下面我將分點(diǎn)羅列如下:

  • 首先斧账,為了讓你的首次體驗(yàn)Scala更清爽一些谴返,將一些暫時(shí)無(wú)關(guān)的文件和文件夾都勇敢的刪除掉吧,主要有 main\java, main\resourcestest 這三個(gè)咧织;
  • 將Scala的框架添加到這個(gè)項(xiàng)目中嗓袱,方法是在左側(cè)欄中的項(xiàng)目名稱上右鍵菜單中點(diǎn)擊Add Framework Support...,然后在打開(kāi)的對(duì)話框左側(cè)邊欄中习绢,勾選Scala前面的復(fù)選框渠抹,然后點(diǎn)擊確定即可(前提是上文中所述步驟都已正確走通,否則你很有可能看不到Scala這個(gè)選項(xiàng)的)闪萄;
  • 在main文件夾中建立一個(gè)名為 scala 的文件夾梧却,并右鍵點(diǎn)擊 scala 文件夾,選擇 Make Directory as败去,然后選擇Sources Root 放航,這里主要意思是將 scala 文件夾標(biāo)記為一個(gè)源文件的根目錄,然后在其內(nèi)的所有代碼中的 package 圆裕,其路徑就從這個(gè)根目錄下開(kāi)始算起广鳍。舉個(gè)例子,假如你在 scala 文件夾中建立了一個(gè)程序吓妆,這個(gè)程序的 package 屬性為 com.abc.test赊时,那么這個(gè)程序就一定要保存在 scala\com\abc\test 目錄下,否則項(xiàng)目就找不到這個(gè)程序了行拢;
  • 在已經(jīng)標(biāo)記好為源文件根目錄的 scala 文件夾 上祖秒,右鍵選擇 New,然后選擇 Scala Class剂陡,隨后設(shè)置好程序的名稱狈涮,并且記得將其設(shè)置為一個(gè) Object(類似于Java中含有靜態(tài)成員的靜態(tài)類),正常的話鸭栖,將會(huì)打開(kāi)這個(gè) Object 代碼界面歌馍,并且可以看到IntelliJ IDEA自動(dòng)添加了一些最基本的信息;
  • 在創(chuàng)建的 Object 中輸入如下語(yǔ)句:
def main(args: Array[String]):Unit = {
  println("Hello World!")
}
  • 在程序界面的任意位置晕鹊,右鍵單擊后選擇 Run '你的程序名稱'松却,靜待程序的編譯和運(yùn)行,然后在下方自動(dòng)打開(kāi)的窗口中溅话,你就可以看到振奮人心的 Hello World!了晓锻。

整個(gè)流程的Gif動(dòng)圖已經(jīng)做好,雙手奉上飞几。

三. 小結(jié)

至此砚哆,整個(gè)的IntelliJ IDEA安裝與配置,以及基本的Maven工程創(chuàng)建流程屑墨,就全然結(jié)束了躁锁,寫(xiě)的比較啰嗦纷铣,一個(gè)很簡(jiǎn)單的IDE使用問(wèn)題,嚼了這么多口舌战转,不過(guò)啰嗦之外搜立,若果真對(duì)各位好學(xué)的你們,有稍稍的竟然之外的益處槐秧,那也就不枉我這么苦逼的制作這些Gif動(dòng)圖了啄踊。

此外,本文只介紹了一些最基本的內(nèi)容刁标,關(guān)于IntelliJ IDEA和Maven的更為細(xì)致的內(nèi)容颠通,以及關(guān)于如何在本地寫(xiě)一個(gè)Spark程序都還沒(méi)有提到,不著急命雀,后續(xù)我會(huì)慢慢更新蒜哀。

Tips:

若上文中有些Gif圖看不太清,可以在這些圖上點(diǎn)擊右鍵吏砂,并選擇"在新標(biāo)簽頁(yè)中打開(kāi)圖片"(在Chrome中,是這個(gè)選項(xiàng)乘客,可能不同瀏覽器中的說(shuō)法不一樣狐血,不過(guò)相信一定難不到你),然后將這個(gè)圖片在新的瀏覽器窗口打開(kāi)后易核,就會(huì)變大一些匈织,從而看的也更清楚一些了。

參考

  1. https://github.com/judasn/IntelliJ-IDEA-Tutorial(非常好的IntelliJ IDEA教程)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末牡直,一起剝皮案震驚了整個(gè)濱河市缀匕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碰逸,老刑警劉巖乡小,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異饵史,居然都是意外死亡满钟,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)胳喷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)湃番,“玉大人,你說(shuō)我怎么就攤上這事吭露》痛椋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵讲竿,是天一觀的道長(zhǎng)泥兰。 經(jīng)常有香客問(wèn)我择浊,道長(zhǎng),這世上最難降的妖魔是什么逾条? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任琢岩,我火速辦了婚禮,結(jié)果婚禮上师脂,老公的妹妹穿的比我還像新娘担孔。我一直安慰自己,他們只是感情好吃警,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布糕篇。 她就那樣靜靜地躺著,像睡著了一般酌心。 火紅的嫁衣襯著肌膚如雪拌消。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天安券,我揣著相機(jī)與錄音墩崩,去河邊找鬼。 笑死侯勉,一個(gè)胖子當(dāng)著我的面吹牛鹦筹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播址貌,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼铐拐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了练对?” 一聲冷哼從身側(cè)響起遍蟋,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎螟凭,沒(méi)想到半個(gè)月后虚青,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赂摆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年挟憔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烟号。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绊谭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汪拥,到底是詐尸還是另有隱情达传,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宪赶,受9級(jí)特大地震影響宗弯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搂妻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一蒙保、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧欲主,春花似錦邓厕、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至引几,卻和暖如春昧互,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伟桅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工敞掘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贿讹。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓渐逃,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親民褂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容