Hawk教程- 數(shù)據(jù)清洗

數(shù)據(jù)清洗

數(shù)據(jù)清洗是一種任務(wù)矢劲,包括幾十個子模塊鲜棠, 這些子模塊包含四類:生成, 轉(zhuǎn)換涯呻, 過濾和執(zhí)行砰识。

數(shù)據(jù)清洗豐富的模塊

在輸出的文檔中,點擊單元格颗味,可以放大和顯示該單元格的文本內(nèi)容(相比于Hawk早期版本,這實在太實用了):

數(shù)據(jù)清洗結(jié)果

1.快速使用說明

數(shù)據(jù)清洗可以通過組合多個不同的子模塊,生成多樣的功能猛蔽,通過拖拽構(gòu)造出一個工作流,它能夠產(chǎn)生一個有限或無限的文檔序列灵寺。比如下面:

image_1auq4oooc1m8m9tc02sjv1j4o9.png-71.6kB
etl.gif

1.1.基本操作

  • 左側(cè)是所有模塊列表曼库,分為生成,轉(zhuǎn)換略板,過濾和執(zhí)行四種類型毁枯,可通過名稱和拼音首字母快速檢索。順序組合可構(gòu)成復(fù)雜任務(wù)叮称。
  • 右側(cè)是數(shù)據(jù)預(yù)覽种玛,可將左側(cè)選中的模塊拖入到右側(cè)對應(yīng)列上。 雙擊每個列上面的模塊對其配置瓤檐。將鼠標(biāo)吐冈希靠字段上可查看使用介紹
  • 預(yù)覽時,處理是串行的挠蛉,數(shù)據(jù)不會被寫入祭示,有緩存,調(diào)試所見即所得谴古。 只有在執(zhí)行模式下才會并行快速執(zhí)行绍移。
  • 執(zhí)行器可看做帶有副作用(如寫入文件)的轉(zhuǎn)換器,只有在執(zhí)行時才會運行
  • 生成器通常位于任務(wù)開頭讥电,可從文本蹂窖,文件,數(shù)據(jù)庫讀取數(shù)據(jù)恩敌。生成器也能位于流的中間瞬测,通過多種模式與已有數(shù)據(jù)流組合
  • 下方菜單欄可點擊刷新,前后單步,可通過采樣量來修改預(yù)覽的數(shù)據(jù)量月趟。配置完畢無誤后灯蝴,左側(cè)面板點擊執(zhí)行即可。
  • 很多問題來自于模塊順序不對孝宗,任何步驟錯誤穷躁,會導(dǎo)致連鎖的問題,因此有必要使用單步調(diào)試因妇,在調(diào)試到某步時问潭,拖入的模塊會插入到所在位置。

1.2.高級功能和技巧

  1. 輸入列一般不用配置婚被,需要時可下拉選擇狡忙,也可手工輸入文本。列名不要為純數(shù)字址芯,否則無法正常顯示灾茁。
  2. 關(guān)于Python轉(zhuǎn)換器:最后一行必須是可求值的表達式。例如有兩列a,b,轉(zhuǎn)換器輸出列為c谷炸,表達式為a+b北专,則c列內(nèi)容就是a+b。但表達式不能寫c=a+b旬陡; Python是強類型語言逗余,輸入的數(shù)據(jù)可能是字符串或數(shù)字,因此必要時需要做類型轉(zhuǎn)換季惩;通過填寫庫路徑录粱,可讓轉(zhuǎn)換器調(diào)用第三方模塊。
  3. 可在任務(wù)的各個位置拖入多個執(zhí)行器(如【寫入數(shù)據(jù)表】)画拾,它保存的是當(dāng)前狀態(tài)的數(shù)據(jù)啥繁。
  4. 子任務(wù):任務(wù)可互相調(diào)用,功能非常強大青抛,可用于處理多次跳轉(zhuǎn)旗闽,詳情頁還包含列表的問題,比較復(fù)雜蜜另,需參考相關(guān)文檔适室。

2.幾種模塊的介紹

2.1.轉(zhuǎn)換器

轉(zhuǎn)換器是最為常用的一種類型,當(dāng)然它的使用也是最復(fù)雜的举瑰。

轉(zhuǎn)換器有三種子類型:

  • ColumnUDF: 單文檔: 只對一個列有效捣辆,如提取數(shù)字,
  • UDF: 單文檔:如刪除該列,它僅涉及文檔內(nèi)部的修改此迅,可能會影響多個列
  • UDAF: 多文檔:典型的如 多文檔模式下從爬蟲轉(zhuǎn)換汽畴,每一行url都可能生成20個甚至更多的文檔旧巾,它的行為cross(交叉)模式下的生成器。

ColumnUDF是UDF的特例忍些, UDF是UDAF的特例(只產(chǎn)生一種)
絕大多數(shù)轉(zhuǎn)換器都是UDF類型鲁猩。但同一個轉(zhuǎn)換器在不同的配置下,可能會有多種行為罢坝,例如從爬蟲轉(zhuǎn)換廓握,如果選擇的 網(wǎng)頁采集器 為單文檔(單文檔)模式,則該轉(zhuǎn)換器為UDF模式嘁酿,若為 多文檔模式隙券,則為UDAF模式。

  • 輸入列: 就是要輸入這個模塊的列痹仙,(Hawk1時代也稱作原列名);
  • 輸出列: 則指的是模塊輸出的列是尔。 UDF模式下殉了,如果新列名為空开仰,則新列名等于原列名,直接修改在原始列上薪铜。

2.2.關(guān)于UDAF的必要說明

當(dāng)你使用多文檔模式的爬蟲众弓,或單轉(zhuǎn)多時,雖然生成了多個文檔隔箍,但原始的數(shù)據(jù)(如URL)不見了谓娃。這是因為Hawk丟棄了這些列。

經(jīng)過大量實踐蜒滩,如果不這么做滨达,每個新數(shù)據(jù)后面,都會跟上原始的老數(shù)據(jù)俯艰,如果1轉(zhuǎn)20捡遍,則老數(shù)據(jù)會重復(fù)生成20次,這是沒有必要的竹握。有時不得不拖入大量的刪除該列來處理画株。
當(dāng)然,有時轉(zhuǎn)換時需要包含原始數(shù)據(jù)的部分列啦辐,則可在轉(zhuǎn)換器的新列名中填寫要鯉魚跳龍門的列的名稱谓传,中間用空格分割。

  • 在Hawk3中芹关,還支持在新列名中輸入*號续挟,此時所有的原始列都會添到新的文檔之中。
  • 注意侥衬,UDAF的新列可能會覆蓋掉原始列的數(shù)據(jù)庸推,因此多檢查列名常侦,避免意料之外的覆蓋

轉(zhuǎn)換器有幾種工作模式:

  • 多文檔 :生成多條數(shù)據(jù)(文檔)
  • 單文檔 : 單文檔
  • 不進行轉(zhuǎn)換: 按照原始數(shù)據(jù)返回

2.3.過濾器

過濾器可以在流中贬媒,過濾掉不符合條件的文檔(也就是橫向過濾)聋亡。

  • 可勾選反向,此時只會留下不符合條件的文檔际乘。即對原始結(jié)果做了取反坡倔。
  • 如何對列過濾? 目前Hawk并未提供該功能脖含,可通過拖入多個刪除該列來實現(xiàn)

Hawk3的過濾器還支持幾種不同的行為罪塔,即過濾模式,分別是:

  • 按行過濾
  • 成功后通過之后的所有行
  • 失敗后通過之后所有行

2.4.執(zhí)行器

執(zhí)行器是負責(zé)將Hawk的結(jié)果傳送到外部環(huán)境的工具养葵。
你可以寫入數(shù)據(jù)表征堪,數(shù)據(jù)庫,甚至執(zhí)行某個特定的動作关拒,或是生成文件等等佃蚜。
在調(diào)試模式下,執(zhí)行器都是不工作的着绊。這是為了避免產(chǎn)生副作用谐算。否則,每刷新一遍數(shù)據(jù)归露,就會向數(shù)據(jù)庫中寫入洲脂,這顯然是不可接受的。
只有在運行模式下剧包,才會使執(zhí)行器生效恐锦。

2.5.生成器

顧名思義,生成器就是通過一定的參數(shù)疆液,生成一個文檔列表的組件一铅。生成器通常位于任務(wù)開頭,可從文本枚粘,文件馅闽,數(shù)據(jù)庫讀取數(shù)據(jù)。 或者從一個區(qū)間內(nèi)生成縱向的數(shù)字和時間馍迄。

它與轉(zhuǎn)換器有很多相似之處福也,但是明顯不同:

  • 轉(zhuǎn)換器必須有輸入,而生成器不需要攀圈。生成器一般需要輸出列暴凑,來保存其輸出的數(shù)據(jù)。
  • 生成器輸出的數(shù)據(jù)可以與原始數(shù)據(jù)進行橫向/縱向/交叉拼接赘来,這遠比轉(zhuǎn)換器靈活
  • 生成器的參數(shù)都支持方括號語法现喳,但轉(zhuǎn)換器只有部分支持

當(dāng)生成器生成數(shù)據(jù)后凯傲,如何與原始的數(shù)據(jù)組合呢?有四種模式:

  • 按行縱向合并
  • 笛卡爾交叉
  • 交錯交叉
  • 按列橫向合并
生成器的四種模式

拖入的模塊順序是非常重要的嗦篱,一個常見問題是順序不對冰单,導(dǎo)致生成的數(shù)據(jù)不符合預(yù)期。數(shù)據(jù)清洗可通過 從爬蟲轉(zhuǎn)換 來調(diào)用 網(wǎng)頁采集器 灸促,也可以通過子任務(wù)來調(diào)用其他數(shù)據(jù)清洗诫欠,是組合各種模塊和任務(wù)的工廠。

Hawk的各類模塊中包含大量配置浴栽,其寫法統(tǒng)一總結(jié)如下:

  • 具體數(shù)值荒叼,直接填入配置框即可
  • 涉及到輸入多個列名,多個分隔符等典鸡,都默認用空格分割被廓,例如a b c
  • 當(dāng)希望從本數(shù)據(jù)清洗中讀取其他列的數(shù)據(jù)到本參數(shù),使用方括號表達式萝玷,例如[col]
  • 當(dāng)希望從全局配置中讀取特定字段時嫁乘,使用大括號表達式,例如{YOUR_CONFIG}
  • 希望將多個列的數(shù)據(jù)合并作為參數(shù)時间护,可先使用合并多列亦渗,再使用對應(yīng)的表達式
  • 配置子任務(wù)的模塊范圍時:1:100表示從1到100挖诸, 2:-2表示從第2個模塊到倒數(shù)第二個模塊汁尺,可參考Python的slice寫法
  • 配置子任務(wù)的字段映射時,可以用a:b c:d表示a列映射到b列多律,以此類推痴突。

3.超級拷貝

Hawk3.5增強了對拷貝功能的支持,使得操作更加簡便狼荞。

不論是數(shù)據(jù)表列表辽装,任務(wù),模塊或工作線程列表,都可以使用windows鍵盤快捷鍵shift+鼠標(biāo)來多選相味,或使用ctrl+a全選拾积,選擇后即可執(zhí)行刪除和暫停等操作。

對于最常用的模塊列表丰涉,右鍵即可拷貝當(dāng)前所選的模塊拓巧。已拷貝的模塊支持如下功能:

  • 可以直接粘貼到任何文本編輯器中,這在手動編輯xml工程文件時很有用一死。
  • 拷貝到本任務(wù)或其他任務(wù)的任一模塊的上側(cè)或下側(cè)
數(shù)據(jù)清洗已加載模塊列表

這帶來了顯著的好處肛度,任務(wù)間能夠更方便地共享配置和參數(shù),方便重用投慈。你亦可將配置拷貝到GitHub或其他社群中承耿,方便他人定位問題冠骄。

4.線程管理

不論是調(diào)試還是執(zhí)行模式,系統(tǒng)都會在任務(wù)管理視圖中增加一個或多個線程加袋。
你可以勾選凛辣,或取消勾選部分或全部線程,暫椭吧眨或取消它們蟀给。當(dāng)網(wǎng)站限制抓取時,可以暫停所有線程阳堕,等恢復(fù)后再次執(zhí)行跋理。

工作線程

右下角分別是暫停,繼續(xù)和刪除任務(wù)恬总。

task.gif

注意:

  1. 當(dāng)工作流有誤時(比如該列所有數(shù)據(jù)都空前普,卻在該列添加了 空對象過濾器,那么所有數(shù)據(jù)都會被過濾)可能不會產(chǎn)生任何數(shù)據(jù)輸出壹堰。此時進度條并不會向前推進拭卿,產(chǎn)生卡死的假象。此時可強行將其刪除
  2. 線程刪除的流程是:先安全將其取消贱纠,如果線程無響應(yīng)峻厚,則會直接將其殺死

4.1.單步調(diào)試

Hawk模仿了播放器和調(diào)試器,在調(diào)試模式下有的概念谆焊,例如所在位置是6/20惠桃, 則說明總共有20個模塊,只生效前面6個模塊辖试。 可以通過左右單擊辜王,或直接回退到開頭、末尾來進行調(diào)試罐孝。

左側(cè)顯示了當(dāng)前所有的模塊呐馆,順序和它們的輸入輸出列,雙擊上面的模塊可對其進行配置莲兢,右鍵可刪除汹来。單選列表上的任一模塊t,系統(tǒng)就會只仿真前t步的效果改艇。 本質(zhì)上收班,單步調(diào)試只是提取了工作流的一部分進行操作。 你可以在單步調(diào)試中遣耍,拖入新的模塊闺阱。模塊會自動插入在工作流中間。

數(shù)據(jù)清洗已加載模塊列表

有時為了在單步調(diào)試過程中查看模塊的屬性舵变,可勾選界面右下角的調(diào)試詳情酣溃,此時可直接顯示當(dāng)前模塊的屬性瘦穆。

調(diào)試模式的菜單欄

當(dāng)模塊有正常產(chǎn)出時, 模塊的標(biāo)志會變成藍色赊豌,因此從上到下扛或,第一個不是藍色的模塊,就有可能是有問題的模塊碘饼。

5.運行模式

5.1.調(diào)試模式

在編輯任務(wù)的過程中熙兔,處于調(diào)試模式,它具備如下特點:

  • 所有執(zhí)行器都不工作艾恼,避免副作用
  • 點擊下方中間的刷新按鈕住涉,或修改配置,展示的數(shù)據(jù)會自動刷新
  • 只能運行在串行模式上
  • 所見即所得钠绍,只顯示一定數(shù)量的數(shù)據(jù)(通過采樣量修改)
  • 可以禁用或啟用某些模塊舆声,觀察效果
  • 會加入web請求和讀取文件的緩存, 來提升預(yù)覽速度(可能會導(dǎo)致一些問題)
  • 輸入列和輸出列會用不同的顏色進行表示

在調(diào)試時柳爽,從爬蟲轉(zhuǎn)換模塊可能會請求web數(shù)據(jù)媳握,為了提升性能,該模塊對請求做了緩存磷脯。保證數(shù)據(jù)只需獲取一次蛾找,如果想強制刷新數(shù)據(jù),將從爬蟲轉(zhuǎn)換模塊禁用赵誓,再啟用打毛,原始緩存數(shù)據(jù)就會被擦除。

調(diào)試模式的菜單欄
串并行模式的配置

Hawk支持兩種執(zhí)行模式:

5.2.串行模式

只有點擊執(zhí)行時架曹,才會切換到執(zhí)行模式隘冲。執(zhí)行時闹瞧,可工作在串行模式/并行模式
在串行模式下绑雄, 所有任務(wù)串行執(zhí)行,速度慢奥邮,但對網(wǎng)站壓力小万牺,不容易被封鎖。為了進一步降低執(zhí)行速度洽腺,可以設(shè)置延時時間脚粟,此時每次網(wǎng)絡(luò)請求前,都會延時一定時間蘸朋。
注意:

  1. 當(dāng)執(zhí)行器包含類似"向文件中追加內(nèi)容"的操作時核无,強烈建議使用串行模式,因為Hawk沒有加入多線程鎖藕坯,有可能會導(dǎo)致沖突团南。
  2. 建議完成爬蟲設(shè)計后噪沙,先進行串行模式,初步觀察是否正確吐根,之后再設(shè)置并行模式大量抓取正歼。

5.3.并行模式

極大地加快了抓取速度,但很容易被封鎖拷橘。 Hawk使用了線程池的機制局义,可以設(shè)置最大工作線程數(shù),只有之前的工作線程完成工作冗疮,才會填入新的任務(wù)萄唇。否則過多的線程會迅速占用所有系統(tǒng)資源。

相比于Hawk2, Hawk3會自動分析可以并行的位置术幔,因此多數(shù)情況下穷绵,直接運行就可以了。但是如果你想自定義并行化的行為特愿,就需要閱讀下面的內(nèi)容仲墨。

5.4.并行化的原理

在調(diào)試模式下,所有獲取都是串行的揍障。而執(zhí)行模式下目养,執(zhí)行器才會執(zhí)行。為了更好地理解并行化毒嫡,強烈建議閱讀下面的內(nèi)容癌蚁。

最簡單的并行化

我們以抓取某個網(wǎng)站的100個頁面為例,第一個模塊生成區(qū)間數(shù),可以生成1-100的頁面兜畸,自然地努释,就可以創(chuàng)建100個任務(wù),分別抓取了咬摇。

image_1auq4sikn7nb1gug1citurl149pm.png-20.6kB

但是伐蒂,但如果隊首的生成器只生成了很少的元素,每個元素在后期肛鹏,又會轉(zhuǎn)換為大量的元素逸邦,那么這種方法就非常低下了。極端情況下隊首生成器只生成一個元素在扰,則并行化就毫無意義:

image_1auq59r2f42r12u41cue1q6c9cj1t.png-28kB

改進的并行

一種非常簡單的思路缕减,是將其切成兩個任務(wù),并行在任務(wù)中完成芒珠。

image_1auq4roi010n6lnomf41o56s919.png-63.9kB

我們將其看成兩個任務(wù)桥狡,第一個任務(wù),負責(zé)產(chǎn)生出一堆種子任務(wù)出來,并加入到任務(wù)隊列裹芝,之后再在這些種子的基礎(chǔ)上呈宇,再分別調(diào)用第第二個任務(wù)。

如何切分任務(wù)局雄?取決于你在任務(wù)中插入的啟動并行的位置甥啄。這個位置就是切分為兩個任務(wù)的“切割點”。

以大眾點評為例炬搭, 北京有14個區(qū)縣蜈漓,有30種美食類型,如果直接在區(qū)縣后插入并行宫盔,則只有14個子任務(wù)融虽,任務(wù)數(shù)量太少:那么先通過任務(wù)1,獲取420個元素,再以420個元素的基礎(chǔ)上灼芭,插入并行有额,這樣速度就快很多了。你也可以在14個區(qū)縣之后插入并行化彼绷,那么就有14個子任務(wù)巍佑。

反過來,如果每個任務(wù)的工作量太少寄悯,比如只訪問一次網(wǎng)站內(nèi)容萤衰,則這樣的種子創(chuàng)建并行就顯得成本高昂,因此可以填寫分組并行數(shù)量猜旬,比如10脆栋,那么Hawk就會以10個元素為一組,創(chuàng)建任務(wù)洒擦。

image_1auq5ldh81i2n6ajqhe1ns23k72a.png-25kB

Hawk自動分析并行點

Hawk除了手工設(shè)置并行點椿争,還能自動分析并行點,那么并行點是不是越靠后越好呢熟嫩?不是的拷沸,這樣分的太細蔑赘,每個任務(wù)要處理的數(shù)據(jù)特別少:依賴于批量執(zhí)行的模塊會有性能損失: 例如寫入數(shù)據(jù)庫,批量插入100條數(shù)據(jù)速度很快余指,但按條插入就不快了毡熏。

但若盡量靠前,則任務(wù)分得特別粗倦蚪,在斷點續(xù)跑時,任務(wù)需要更多的時間達到相同的位置(這點不夠直觀边苹,可以理解為層級越多陵且,則進行查找所需的步數(shù)越少)

目前Hawk采用了盡量靠后的策略,未來可能會在這方面變得更加智能。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末慕购,一起剝皮案震驚了整個濱河市聊疲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沪悲,老刑警劉巖获洲,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異殿如,居然都是意外死亡贡珊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門涉馁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來门岔,“玉大人,你說我怎么就攤上這事烤送『妫” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵帮坚,是天一觀的道長妻往。 經(jīng)常有香客問我,道長试和,這世上最難降的妖魔是什么蒲讯? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮灰署,結(jié)果婚禮上判帮,老公的妹妹穿的比我還像新娘。我一直安慰自己溉箕,他們只是感情好晦墙,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肴茄,像睡著了一般晌畅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寡痰,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天抗楔,我揣著相機與錄音,去河邊找鬼拦坠。 笑死连躏,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贞滨。 我是一名探鬼主播入热,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了勺良?” 一聲冷哼從身側(cè)響起绰播,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎尚困,沒想到半個月后蠢箩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡事甜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年谬泌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讳侨。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡呵萨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出跨跨,到底是詐尸還是另有隱情潮峦,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布勇婴,位于F島的核電站忱嘹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏耕渴。R本人自食惡果不足惜拘悦,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望橱脸。 院中可真熱鬧础米,春花似錦、人聲如沸添诉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栏赴。三九已至蘑斧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間须眷,已是汗流浹背竖瘾。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留花颗,地道東北人捕传。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像捎稚,于是被迫代替她去往敵國和親乐横。 傳聞我的和親對象是個殘疾皇子求橄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

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

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時今野,會觸發(fā)此異常葡公。 O...
    我想起個好名字閱讀 5,307評論 0 9
  • 轉(zhuǎn) # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    呂品?閱讀 9,723評論 0 44
  • GitHub文檔鏡像 歡迎使用Hawk 快速教程 主要組件介紹 核心功能:Hawk工程Hawk任務(wù)市場數(shù)據(jù)表和數(shù)據(jù)...
    desert2017閱讀 2,374評論 0 0
  • GitHub文檔鏡像 歡迎使用Hawk 快速教程 主要組件介紹 核心功能:Hawk工程Hawk任務(wù)市場數(shù)據(jù)表和數(shù)據(jù)...
    desert2017閱讀 1,287評論 0 0
  • GitHub文檔鏡像 歡迎使用Hawk 快速教程 主要組件介紹 核心功能:Hawk工程Hawk任務(wù)市場數(shù)據(jù)表和數(shù)據(jù)...
    desert2017閱讀 1,545評論 0 1