• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Java EE企業(yè)級(jí)應(yīng)用向Hadoop平臺(tái)遷移的技術(shù)研究*

    2013-03-13 05:00:22郭慶
    自動(dòng)化與信息工程 2013年6期
    關(guān)鍵詞:數(shù)據(jù)庫(kù)方法

    郭慶

    (京華信息科技股份有限公司)

    0 引言

    企業(yè)級(jí)應(yīng)用指的是支持企業(yè)、事業(yè)單位或者政府等機(jī)構(gòu)各項(xiàng)業(yè)務(wù)運(yùn)作的軟件系統(tǒng)[1]。企業(yè)級(jí)應(yīng)用主要負(fù)責(zé)顯示、操作和存儲(chǔ)大量復(fù)雜數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行支持和自動(dòng)化[2]。隨著社會(huì)的進(jìn)步和網(wǎng)絡(luò)技術(shù)的發(fā)展,眾多企業(yè)和組織為了使業(yè)務(wù)能夠與供應(yīng)商、合作伙伴乃至最終用戶更緊密地聯(lián)系在一起,紛紛將企業(yè)級(jí)應(yīng)用推向互聯(lián)網(wǎng)。但面對(duì)海量的業(yè)務(wù)數(shù)據(jù)處理時(shí),傳統(tǒng)企業(yè)級(jí)應(yīng)用架構(gòu)在擴(kuò)展性上遇到了瓶頸。近年迅速發(fā)展成熟起來的Hadoop平臺(tái)以其高效和易擴(kuò)展等特性受到高度關(guān)注,將企業(yè)級(jí)應(yīng)用遷移到Hadoop平臺(tái)成為應(yīng)對(duì)海量數(shù)據(jù)處理技術(shù)挑戰(zhàn)的新思路。本文圍繞Java EE企業(yè)級(jí)應(yīng)用遷移到Hadoop平臺(tái)展開研究,分析比較各種技術(shù)方法,并根據(jù)實(shí)際應(yīng)用情況提出相應(yīng)的遷移策略。

    1 Java EE企業(yè)級(jí)應(yīng)用架構(gòu)

    Java平臺(tái)企業(yè)版(Java Platform Enterprise Edition,Java EE),是Sun公司為企業(yè)級(jí)應(yīng)用推出的標(biāo)準(zhǔn)平臺(tái),現(xiàn)屬于Oracle公司[3]。Java EE自1998年發(fā)布以來得到了迅速地發(fā)展,已成為企業(yè)級(jí)應(yīng)用的主流技術(shù)平臺(tái)之一。以Java Pet Store[4]為代表,典型的Java EE企業(yè)級(jí)應(yīng)用最主要的功能是圍繞業(yè)務(wù)數(shù)據(jù)進(jìn)行存儲(chǔ)、操作和顯示。整個(gè)系統(tǒng)一般可分為Web層、業(yè)務(wù)邏輯層和企業(yè)信息系統(tǒng)層(Enterprise Information Systems Tier)。應(yīng)用運(yùn)行在Java EE平臺(tái)提供的容器中,容器為應(yīng)用的每個(gè)層次提供了相應(yīng)的功能支持,見表1。

    表1 Java EE技術(shù)與系統(tǒng)層次的對(duì)應(yīng)關(guān)系

    容器提供的 API和運(yùn)行環(huán)境的支持使得應(yīng)用的代碼實(shí)現(xiàn)更統(tǒng)一,為應(yīng)用遷移提供了較清晰的切入點(diǎn)。

    2 Hadoop平臺(tái)功能

    Hadoop[5]是由 Apache開源組織的一個(gè)分布式計(jì)算框架,設(shè)計(jì)用于在大量(廉價(jià)的)硬件設(shè)備上構(gòu)建一個(gè)具有高可靠性和良好擴(kuò)展性的集群系統(tǒng),以分布式處理大數(shù)據(jù)集。Hadoop2.0包含以下模塊:

    1) Hadoop通用模塊:支持其它Hadoop模塊的通用工具集;

    2) Hadoop分布式文件系統(tǒng)(HDFS):支持對(duì)應(yīng)用數(shù)據(jù)高吞吐量訪問的分布式文件系統(tǒng);

    3) Hadoop YARN:用于作業(yè)調(diào)度和集群資源管理的框架;

    4) Hadoop MapReduce:基于YARN的大數(shù)據(jù)并行處理系統(tǒng)。

    除了Hadoop本身,還有一大批以Hadoop為基礎(chǔ)發(fā)展起來的開源項(xiàng)目,它們是Hadoop平臺(tái)功能的補(bǔ)充和擴(kuò)展,集合在一起形成了Hadoop生態(tài)系統(tǒng)[6]。

    3 遷移技術(shù)

    從前面的敘述可見,Hadoop平臺(tái)的功能是針對(duì)大數(shù)據(jù)集存儲(chǔ)和操作而設(shè)計(jì)的,因此本文研究的遷移是指在保持Java EE企業(yè)級(jí)應(yīng)用業(yè)務(wù)功能不變的前提下,將其業(yè)務(wù)數(shù)據(jù)轉(zhuǎn)移到Hadoop中存儲(chǔ),并使應(yīng)用通過Hadoop實(shí)現(xiàn)對(duì)業(yè)務(wù)數(shù)據(jù)的訪問和操作。

    3.1 數(shù)據(jù)遷移

    對(duì)于典型的Java EE企業(yè)級(jí)應(yīng)用,業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)方式主要有2種:存放在關(guān)系型數(shù)據(jù)庫(kù)中;以文件的形式存放在文件系統(tǒng)中。

    3.1.1 關(guān)系型數(shù)據(jù)庫(kù)遷移

    考慮到遷移后數(shù)據(jù)查詢和操作的便捷性及性能,對(duì)關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移一般不直接存放到HDFS中,而是遷移到Hbase[7]、Canssandra[8]等分布式數(shù)據(jù)庫(kù)中。以Hbase為例,從關(guān)系型數(shù)據(jù)庫(kù)遷入數(shù)據(jù)有以下幾類方法:

    1) 直接調(diào)用Hbase的API

    Hbase客戶端包已提供了必要的方法,可編寫Java程序進(jìn)行調(diào)用,程序邏輯如下:

    ① 通過JDBC讀出關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

    ② 假設(shè)Hbase里已建立了對(duì)應(yīng)的表。創(chuàng)建org.apache.hadoop.hbase.client.HTable類的實(shí)例,并連接到Hbase:

    HTable table = new HTable(org.apache.hadoop.hbase.HBaseConfiguration.create(), 〈表名〉);

    ③ 創(chuàng)建org.apache.hadoop.hbase.client.Put類的實(shí)例,并將要寫入Hbase的數(shù)據(jù)放入實(shí)例內(nèi):

    Put p = new Put(〈主鍵值〉);

    p.add(〈列族名〉, 〈列名〉,〈版本號(hào)〉, 〈值〉);

    ④ 將數(shù)據(jù)寫入Hbase:

    table.put(p);

    使用這種方法遷移數(shù)據(jù)可以完成遷移過程,滿足各種特殊需求。但是,當(dāng)遷移的數(shù)據(jù)量大時(shí),該方法的性能較低,且有一定的編碼工作量。

    2) 使用“Hadoop生態(tài)系統(tǒng)”中各項(xiàng)目提供的工具

    Sqoop[9]是一個(gè)用于在Hadoop和關(guān)系型數(shù)據(jù)庫(kù)之間傳輸數(shù)據(jù)的工具,對(duì)主流的關(guān)系型數(shù)據(jù)庫(kù)如MySQL、Oracle等均能支持。使用Sqoop進(jìn)行數(shù)據(jù)遷移的過程如下:

    ① 安裝Sqoop,并在sqoop-env.sh中加入Hadoop集群的配置參數(shù):

    HADOOP_COMMON_HOME=〈Hadoop 安裝路徑〉

    HADOOP_MAPRED_HOME=〈Hadoop MapReduce安裝路徑〉

    HBASE_HOME=〈Hbase安裝路徑〉

    ② 復(fù)制hadoop的 core包以及關(guān)系型數(shù)據(jù)庫(kù)的JDBC驅(qū)動(dòng)包到sqoop-lib目錄下。

    ③ 使用 sqoop-import命令進(jìn)行數(shù)據(jù)遷移。命令格式如下:

    ./sqoop-import --connect 〈JDBC Url〉 --table 〈源表名〉 --hbase-create-table --hbase-table 〈Hbase表名〉--column-family 〈列族名〉 --hbase-row-key 〈鍵字段名〉 --split-by 〈字段名〉 --username 〈數(shù)據(jù)庫(kù)用戶名〉--P 〈數(shù)據(jù)庫(kù)密碼〉 --compression-codec 〈壓縮方式〉–z

    其中:

    --connect 〈JDBC Url〉:指定要遷移數(shù)據(jù)的來源數(shù)據(jù)庫(kù);

    --table 〈源表名〉:指定源數(shù)據(jù)庫(kù)中要遷移數(shù)據(jù)的表;--hbase-create-table:表示要在HBase中建立表;--hbase-table 〈Hbase表名〉:指定數(shù)據(jù)要復(fù)制到Hbase中的目標(biāo)表名稱;

    --column-family 〈列族名〉:指定要在目標(biāo)表中建立的列族名稱;

    --hbase-row-key 〈鍵字段名〉:指定源數(shù)據(jù)表的哪個(gè)字段作為目標(biāo)表的鍵;

    --split-by 〈字段名〉:指定根據(jù)源數(shù)據(jù)表的哪個(gè)字段對(duì)源數(shù)據(jù)進(jìn)行區(qū)域切分;

    --compression-codec 〈壓縮方式〉:指定壓縮方式;

    -z:表示采用壓縮方式。

    采用該方法遷移數(shù)據(jù),其遷移過程使用MapReduce實(shí)現(xiàn)了分布并行,當(dāng)遷移數(shù)據(jù)量較大時(shí)有較好的性能表現(xiàn)。

    3) 其它方法

    一些軟件產(chǎn)品基于分布式數(shù)據(jù)庫(kù)作了進(jìn)一步封裝,可將數(shù)據(jù)遷移到這些產(chǎn)品上,間接實(shí)現(xiàn)數(shù)據(jù)到分布式數(shù)據(jù)庫(kù)的遷移。

    例如開源項(xiàng)目Honeycomb[10],它是一個(gè)以Hbase為后端的MySQL存儲(chǔ)引擎,能夠使MySQL用Hbase存儲(chǔ)數(shù)據(jù),用戶可以通過MySQL用SQL語言訪問數(shù)據(jù)。使用MySQL+Honeycomb進(jìn)行數(shù)據(jù)遷移的方法如下:

    ① 安裝MySQL+Honeycomb。

    ② 在Hbase的配置文件hbase-site.xml中增加以下配置:

    ③ 修改Honeycomb的配置文件honeycomb.xml,將hbase.zookeeper.quorum節(jié)點(diǎn)的內(nèi)容改為與Hbase相同的配置。

    ④ 啟動(dòng) MySQL+Honeycomb,并在 MySQL中建立與源數(shù)據(jù)表相同結(jié)構(gòu)的表:

    create table 〈表名〉 (……表結(jié)構(gòu)……) character set utf8 collate utf8_bin engine=honeycomb;

    ⑤ 使用MySQL遷移工具或其它ETL工具將源數(shù)據(jù)庫(kù)的數(shù)據(jù)復(fù)制到 MySQL+Honeycomb中對(duì)應(yīng)的表里。

    3.1.2 文件遷移

    Hadoop客戶端包里的 org.apache.hadoop.fs.FileSystem類提供了必要的方法,可調(diào)用于編寫Java程序,程序邏輯如下:

    1) 獲取 org.apache.hadoop.fs.FileSystem 類的實(shí)例:

    FileSystem fs = FileSystem.get(〈HDFS URI〉,new org.apache.hadoop.conf.Configuration ());

    2) 獲取輸出流:

    fs.create(new org.apache.hadoop.fs.Path(〈HDFS 路徑〉), true);

    3) 打開源文件獲取輸入流,讀取數(shù)據(jù)并寫入到輸出流中。

    遷移時(shí)要記錄好遷移前后文件路徑的對(duì)應(yīng)關(guān)系,以便修改應(yīng)用進(jìn)行訪問。

    3.2 數(shù)據(jù)訪問邏輯遷移

    應(yīng)用數(shù)據(jù)遷移到Hadoop平臺(tái)后,訪問方式也發(fā)生了改變,需要相應(yīng)修改應(yīng)用對(duì)數(shù)據(jù)的訪問邏輯。

    3.2.1 關(guān)系型數(shù)據(jù)訪問

    “Hadoop生態(tài)系統(tǒng)”中的一些開源項(xiàng)目為用戶提供了類似 SQL語言的數(shù)據(jù)訪問方式,降低了應(yīng)用遷移的難度。下面列出幾個(gè)項(xiàng)目和 SQL語言的主要差異以及遷移要點(diǎn):

    1) Hive[11]

    通過Hive訪問數(shù)據(jù)有2個(gè)途徑:一是通過Hive提供的 JDBC驅(qū)動(dòng)類 org.apache.hadoop.hive.jdbc.HiveDriver進(jìn)行訪問;二是通過 Hive客戶端類org.apache.hadoop.hive.service.HiveClient進(jìn)行訪問。

    將SQL語句修改為Hive提供的查詢語言HiveQL需要:

    ① 查詢語句中對(duì)列取別名必須加上關(guān)鍵字“as”;② 表內(nèi)連接查詢必須用關(guān)鍵字“join”;

    ③ “in”子查詢改為使用“l(fā)eft semi join”。例如:

    ④ 插入語句按以下語法修改:

    ⑤ Hive暫不支持事務(wù),需要把事務(wù)相關(guān)的代碼去除。

    2) Phoenix[12]

    應(yīng)用可通過 Phoenix提供的 JDBC驅(qū)動(dòng)類com.salesforce.phoenix.jdbc.PhoenixDriver對(duì)數(shù)據(jù)進(jìn)行訪問。應(yīng)用需要調(diào)整的地方包括:

    ① Phoenix暫不支持表連接查詢和嵌套子查詢,需將SQL拆成多條分別執(zhí)行;

    ② Update和Insert合并成Upsert,語法如下:Upsert into 〈表名〉 (〈列名 1〉,〈列名 2〉,……)values (〈值 1〉,〈值 2〉,……);

    ③ Phoenix暫不支持事務(wù),需要把事務(wù)相關(guān)的代碼去除;

    3) Honeycomb

    應(yīng)用可通過MySQL提供的JDBC驅(qū)動(dòng)類com.mysql.jdbc.Driver對(duì)數(shù)據(jù)進(jìn)行訪問。應(yīng)用需要調(diào)整的地方包括:

    ① Honeycomb目前只支持UTF-8編碼,應(yīng)用需要相應(yīng)更改;

    ② Honeycomb對(duì)數(shù)據(jù)表名大小寫敏感,應(yīng)用需要相應(yīng)更改;

    ③ Honeycomb暫不支持事務(wù),需要把事務(wù)相關(guān)的代碼去除。

    3.2.2 文件訪問

    Hadoop客戶端包里的 org.apache.hadoop.fs.FileSystem類為用戶訪問HDFS中的文件提供了必要的方法,修改應(yīng)用程序:

    1) 將調(diào)用 java.io.File類的地方改為調(diào)用org.apache.hadoop.fs.FileSystem類相應(yīng)的方法,涉及的文件路徑改為HDFS中的路徑;

    2) 將使用 java.io.FileInputStream 的地方改為使用org.apache.hadoop.fs.FileSystem的open()方法獲取輸入流;

    3) 將使用java.io.FileOutputStream的地方改為使用 org.apache.hadoop.fs.FileSystem 的 create()或append()方法獲取輸出流。

    在實(shí)際遷移過程中,為降低代碼修改的工作量,可以編寫代理類分別繼承于 java.io.File、java.io.FileInputStream和java.io.FileOutputStream,由代理類完成對(duì)Hadoop客戶端包相關(guān)類的調(diào)用,然后通過動(dòng)態(tài)代理或通過 ASM[13]框架修改字節(jié)碼,替換掉應(yīng)用中對(duì) java.io.File、java.io.FileInputStream 和 java.io.FileOutputStream類的調(diào)用。

    4 技術(shù)分析

    通過前面敘述的各種技術(shù)方法能夠?qū)崿F(xiàn)將典型的Java EE企業(yè)級(jí)應(yīng)用功能遷移到Hadoop平臺(tái)上,但實(shí)施成本、約束條件和遷移效果等有所不同。各方法的簡(jiǎn)要對(duì)比如表2、表3所示。

    表2 關(guān)系型數(shù)據(jù)庫(kù)遷移技術(shù)對(duì)比

    表3 關(guān)系型數(shù)據(jù)訪問邏輯遷移技術(shù)對(duì)比

    對(duì)于文件遷移的方法,一般都是通過調(diào)用Hadoop客戶端包里提供的org.apache.hadoop.fs.FileSystem等類實(shí)現(xiàn),在此不作展開比較。

    5 遷移策略

    在遷移時(shí),需結(jié)合應(yīng)用本身的實(shí)際情況以及各種遷移方法的特點(diǎn),確定合理的遷移策略,力圖使遷移達(dá)到代價(jià)最小化和收益最大化。遷移策略應(yīng)遵循以下幾個(gè)步驟制定:

    1) 評(píng)估應(yīng)用的數(shù)據(jù)量

    Hadoop平臺(tái)進(jìn)行分布式計(jì)算時(shí)要產(chǎn)生跨多機(jī)數(shù)據(jù)流處理的開銷,當(dāng)處理的數(shù)據(jù)量較小時(shí),這種開銷的占比是不可接受的。因此,對(duì)數(shù)據(jù)量未達(dá)到TB級(jí)的功能應(yīng)考慮不作遷移,以獲得更佳的性能。對(duì)數(shù)據(jù)量較大的應(yīng)用繼續(xù)進(jìn)行下一步判斷。

    2) 確定是否擁有應(yīng)用系統(tǒng)源代碼

    是否擁有應(yīng)用系統(tǒng)源代碼決定了遷移工作開展的深度。若不具有應(yīng)用系統(tǒng)源代碼,應(yīng)選擇不需要大量修改應(yīng)用系統(tǒng)代碼的遷移技術(shù)方案:對(duì)結(jié)構(gòu)化數(shù)據(jù)采用 Honeycomb進(jìn)行遷移,對(duì)文件數(shù)據(jù)采用動(dòng)態(tài)代理替換應(yīng)用原有的訪問邏輯。對(duì)于擁有源代碼的應(yīng)用系統(tǒng)繼續(xù)進(jìn)行下一步判斷。

    3) 平衡應(yīng)用性能要求與遷移成本

    在數(shù)據(jù)量極大的場(chǎng)景下,各種遷移技術(shù)的性能表現(xiàn)不一,總的來說遷移工作量較小的技術(shù)其性能也相對(duì)較差。針對(duì)不同的性能成本比要求,采用的遷移策略如表4所示。

    6 遷移實(shí)例

    以某OA系統(tǒng)為例子驗(yàn)證Java EE企業(yè)級(jí)應(yīng)用遷移到Hadoop平臺(tái)的可行性。進(jìn)行遷移前已獲得該系統(tǒng)的源代碼,分析其數(shù)據(jù)訪問邏輯結(jié)果如下:

    1) 對(duì)結(jié)構(gòu)化數(shù)據(jù)的訪問兼容MySQL;

    2) 文件數(shù)據(jù)分為業(yè)務(wù)數(shù)據(jù)和配置文件2類;

    3) 系統(tǒng)存在用戶上傳文件的功能,該功能使用Apache的commons-fileupload.jar實(shí)現(xiàn)。

    針對(duì)應(yīng)用的特點(diǎn)采用如下遷移方法:

    表4 性能成本比與遷移策略

    1) 對(duì)結(jié)構(gòu)化數(shù)據(jù)采用MySQL+Honeycomb進(jìn)行遷移;

    2) 調(diào)用Hadoop客戶端包里的org.apache.hadoop.fs.FileSystem類將文件數(shù)據(jù)中的業(yè)務(wù)數(shù)據(jù)復(fù)制到HDFS中,并記錄復(fù)制前后的目錄對(duì)應(yīng)關(guān)系;

    3) 編寫代理類,分別繼承于java.io.File、java.io.FileInputStream、java.io.FileOutputStream、java.io.FileReader和java.io.FileWriter,覆蓋其中的公有方法,將對(duì)文件系統(tǒng)的訪問改為對(duì) org.apache.hadoop.fs.FileSystem類相應(yīng)方法的調(diào)用;

    4) 對(duì)文件數(shù)據(jù)中的業(yè)務(wù)數(shù)據(jù)的訪問邏輯通過ASM框架修改字節(jié)碼替換為對(duì)代理類的訪問;

    5) 對(duì)文件數(shù)據(jù)中的配置文件的訪問邏輯不作更改;

    6) 對(duì)Apache的commons-fileupload.jar中讀寫臨時(shí)文件的邏輯不作更改,僅將 write方法中對(duì)java.io.FileOutputStream類的調(diào)用通過ASM框架修改字節(jié)碼替換為對(duì)代理類的訪問。

    修改完成后運(yùn)行系統(tǒng),確認(rèn)結(jié)構(gòu)化數(shù)據(jù)均存放在Hbase中,業(yè)務(wù)數(shù)據(jù)文件均正確存放在HDFS中,應(yīng)用系統(tǒng)各功能運(yùn)行正常,說明Java EE企業(yè)級(jí)應(yīng)用遷移到Hadoop平臺(tái)是可行的。

    7 結(jié)語

    Hadoop平臺(tái)及相關(guān)的開源項(xiàng)目為應(yīng)用遷移提供了豐富的支持,借助本文列舉的各種技術(shù)方法能夠?qū)崿F(xiàn)將典型的Java EE企業(yè)級(jí)應(yīng)用遷移到Hadoop平臺(tái)上。但同時(shí)應(yīng)注意到各種遷移技術(shù)均有其優(yōu)缺點(diǎn),在實(shí)際進(jìn)行應(yīng)用遷移時(shí),要充分考慮應(yīng)用數(shù)據(jù)量、性能要求和遷移工作量等因素,選擇合適的技術(shù)方案,保障遷移的成功,使 Java EE企業(yè)級(jí)應(yīng)用真正享受到

    Hadoop平臺(tái)的強(qiáng)大功能。

    [1]Gartner Group: IT Glossary - enterprise application software[EB/OL]. [2014-02-13]. http://www.gartner.com/it-glossary/enterprise-application-software.

    [2]Martin Fowler: Patterns of Enterprise Application Architecture[M]Addison-Wesley Educational Publishers Inc, 2002.

    [3]Java Community Process: JSR-000342 JavaTM Platform,Enterprise Edition 7 (Final Release) [EB/OL]. [2014-02-13].https://www.jcp.org/aboutJava/communityprocess/final/jsr342/index.html.

    [4]Oracle Corporation: The Java Pet Store Referance Application[EB/OL].[2014-02-13]. http://www.oracle.com/technetwork/java/index-136650.html.

    [5]Apache Foundation: Apache Hadoop [EB/OL]. [2014-02-13].http://hadoop.apache.org.

    [6]Kai W?hner: Spoilt for Choice – How to choose the right Big Data / Hadoop Platform [EB/OL]. 2013.9 [2014-02-13].http://www.infoq.com/articles/BigDataPlatform.

    [7]Apache Foundation: Apache Hbase [EB/OL]. [2014-02-13].http://hbase.apache.org.

    [8]Apache Foundation: Apache Cassandra [EB/OL]. [2014-02-13].http://cassandra.apache.org.

    [9]Apache Foundation: Apache Sqoop [EB/OL]. [2014-02-13].http://sqoop.apache.org.

    [10]Altamira Corp: Honycomb [EB/OL]. [2014-02-13].https://github.com/altamiracorp/honeycomb.

    [11]Apache Foundation: Apache Hive [EB/OL]. [2014-02-13].http://hive.apache.org.

    [12]Apache Foundation: Apache Phoenix [EB/OL]. [2014-02-13].http://phoenix.incubator.apache.org.

    [13]E. Kuleshov: Using the ASM Framework to Implement Common Java Bytecode Transformation Patterns:proceedings of the Sixth International Conference on Aspect-Oriented Software Development, Vancouver, Canada,March 2007[C/OL]. [2014-02-13]. http://asm.ow2.org/current/asm-transformations.pdf.

    猜你喜歡
    數(shù)據(jù)庫(kù)方法
    學(xué)習(xí)方法
    數(shù)據(jù)庫(kù)
    數(shù)據(jù)庫(kù)
    可能是方法不對(duì)
    數(shù)據(jù)庫(kù)
    用對(duì)方法才能瘦
    Coco薇(2016年2期)2016-03-22 02:42:52
    數(shù)據(jù)庫(kù)
    數(shù)據(jù)庫(kù)
    四大方法 教你不再“坐以待病”!
    Coco薇(2015年1期)2015-08-13 02:47:34
    賺錢方法
    高潮久久久久久久久久久不卡| 高清黄色对白视频在线免费看| 91成人精品电影| 一本综合久久免费| 国产亚洲欧美精品永久| 又大又爽又粗| 99国产综合亚洲精品| 欧美激情极品国产一区二区三区| 久久国产精品男人的天堂亚洲| 18禁观看日本| 动漫黄色视频在线观看| 天天一区二区日本电影三级 | 国产精品1区2区在线观看.| 成人欧美大片| 欧美一级a爱片免费观看看 | 成人三级黄色视频| 每晚都被弄得嗷嗷叫到高潮| 99久久99久久久精品蜜桃| 成人18禁在线播放| 欧美成狂野欧美在线观看| 精品久久久久久久毛片微露脸| 成年版毛片免费区| 午夜日韩欧美国产| 老司机福利观看| 国产高清激情床上av| 亚洲在线自拍视频| 操出白浆在线播放| 搡老妇女老女人老熟妇| 国产精品久久久人人做人人爽| 黄色 视频免费看| 欧美日韩瑟瑟在线播放| 日韩欧美国产在线观看| 久久久精品国产亚洲av高清涩受| 免费女性裸体啪啪无遮挡网站| 在线永久观看黄色视频| 悠悠久久av| 亚洲专区国产一区二区| 免费一级毛片在线播放高清视频 | 国产精品乱码一区二三区的特点 | 色在线成人网| 亚洲 欧美 日韩 在线 免费| 久久 成人 亚洲| 国产激情久久老熟女| 三级毛片av免费| 欧美成人一区二区免费高清观看 | 久久天堂一区二区三区四区| 精品电影一区二区在线| 国产精品国产高清国产av| 九色国产91popny在线| 亚洲av电影不卡..在线观看| 18美女黄网站色大片免费观看| 制服丝袜大香蕉在线| 欧美激情 高清一区二区三区| 女人高潮潮喷娇喘18禁视频| 天天躁夜夜躁狠狠躁躁| 亚洲 欧美 日韩 在线 免费| 亚洲午夜精品一区,二区,三区| 女人爽到高潮嗷嗷叫在线视频| 咕卡用的链子| 91九色精品人成在线观看| 国产99久久九九免费精品| 国产精品一区二区在线不卡| 国产精品秋霞免费鲁丝片| 久久天躁狠狠躁夜夜2o2o| 免费看美女性在线毛片视频| 黄色视频,在线免费观看| 欧美+亚洲+日韩+国产| 亚洲一区中文字幕在线| 精品久久久久久久人妻蜜臀av | 欧美精品亚洲一区二区| 久久 成人 亚洲| 久久午夜综合久久蜜桃| 免费久久久久久久精品成人欧美视频| 精品一区二区三区四区五区乱码| 久久香蕉激情| 好男人在线观看高清免费视频 | a在线观看视频网站| 99国产精品一区二区蜜桃av| АⅤ资源中文在线天堂| av有码第一页| 亚洲av电影在线进入| 一二三四社区在线视频社区8| 黄色视频不卡| 男人舔女人的私密视频| 精品国内亚洲2022精品成人| 在线观看日韩欧美| 一个人免费在线观看的高清视频| 男人舔女人的私密视频| 久久人人爽av亚洲精品天堂| 免费看十八禁软件| 免费少妇av软件| 女人爽到高潮嗷嗷叫在线视频| 国产精品秋霞免费鲁丝片| 国产一区二区三区在线臀色熟女| 国产xxxxx性猛交| 久久精品国产综合久久久| 午夜老司机福利片| 国产精品精品国产色婷婷| 丁香欧美五月| 精品久久久久久,| 99久久久亚洲精品蜜臀av| 日韩欧美国产一区二区入口| 好男人电影高清在线观看| 激情视频va一区二区三区| 女人爽到高潮嗷嗷叫在线视频| 真人做人爱边吃奶动态| 黑人欧美特级aaaaaa片| 久久热在线av| 国产1区2区3区精品| 色播在线永久视频| 国产成+人综合+亚洲专区| 岛国在线观看网站| 国产精品99久久99久久久不卡| 不卡一级毛片| 午夜精品国产一区二区电影| 国产精品久久久久久亚洲av鲁大| 午夜影院日韩av| 日本欧美视频一区| 国产高清激情床上av| 午夜福利,免费看| 在线天堂中文资源库| 久久中文字幕人妻熟女| 满18在线观看网站| av视频在线观看入口| 99精品久久久久人妻精品| 国产精品亚洲av一区麻豆| 亚洲精品国产一区二区精华液| 欧美另类亚洲清纯唯美| 国产97色在线日韩免费| 极品人妻少妇av视频| 精品无人区乱码1区二区| 99在线视频只有这里精品首页| 1024视频免费在线观看| 久久久久国内视频| 久久久久国内视频| 两性夫妻黄色片| 69精品国产乱码久久久| 如日韩欧美国产精品一区二区三区| 又大又爽又粗| 国产熟女午夜一区二区三区| 久久这里只有精品19| 女人精品久久久久毛片| 日本撒尿小便嘘嘘汇集6| 非洲黑人性xxxx精品又粗又长| 三级毛片av免费| 十分钟在线观看高清视频www| 狂野欧美激情性xxxx| 午夜久久久在线观看| 亚洲天堂国产精品一区在线| 久久人人爽av亚洲精品天堂| 啦啦啦韩国在线观看视频| 黄色毛片三级朝国网站| 咕卡用的链子| 国产精品国产高清国产av| 中文亚洲av片在线观看爽| 老汉色∧v一级毛片| 亚洲国产日韩欧美精品在线观看 | 午夜福利,免费看| 国产精品二区激情视频| av有码第一页| 免费女性裸体啪啪无遮挡网站| 亚洲五月婷婷丁香| 日韩一卡2卡3卡4卡2021年| 欧美黄色淫秽网站| 美女扒开内裤让男人捅视频| av天堂久久9| 丝袜美足系列| 成人国产综合亚洲| 成人特级黄色片久久久久久久| 久久婷婷成人综合色麻豆| 午夜影院日韩av| 亚洲成人国产一区在线观看| 人人妻人人爽人人添夜夜欢视频| 国产精品九九99| 国产成人精品久久二区二区91| 久久精品成人免费网站| 两性夫妻黄色片| 极品人妻少妇av视频| 熟女少妇亚洲综合色aaa.| 中文字幕最新亚洲高清| 精品国产乱子伦一区二区三区| 看片在线看免费视频| 精品久久久精品久久久| 又黄又爽又免费观看的视频| 免费无遮挡裸体视频| 女人被躁到高潮嗷嗷叫费观| 18禁观看日本| 久久国产精品男人的天堂亚洲| 夜夜看夜夜爽夜夜摸| 国产一级毛片七仙女欲春2 | 欧美乱色亚洲激情| 热re99久久国产66热| 国产熟女xx| 亚洲精品一卡2卡三卡4卡5卡| 国产99白浆流出| 女人高潮潮喷娇喘18禁视频| 精品人妻在线不人妻| 国产亚洲精品久久久久5区| 欧美日韩福利视频一区二区| 久久午夜综合久久蜜桃| 手机成人av网站| 国产一区二区三区视频了| 亚洲欧美日韩无卡精品| 国产精品久久久人人做人人爽| av欧美777| 国产精品一区二区三区四区久久 | 欧美日韩黄片免| 国产精品久久久久久亚洲av鲁大| 午夜免费成人在线视频| 国产在线观看jvid| 变态另类丝袜制服| 亚洲七黄色美女视频| 国产亚洲av嫩草精品影院| 亚洲第一欧美日韩一区二区三区| 日韩大尺度精品在线看网址 | 久久狼人影院| 亚洲精品美女久久av网站| 午夜福利在线观看吧| 欧美人与性动交α欧美精品济南到| 亚洲成a人片在线一区二区| 久久久久九九精品影院| 高清毛片免费观看视频网站| 久久这里只有精品19| 欧美成人免费av一区二区三区| 国产日韩一区二区三区精品不卡| 亚洲欧美精品综合一区二区三区| 亚洲熟女毛片儿| 丝袜在线中文字幕| 亚洲自拍偷在线| 少妇被粗大的猛进出69影院| 国产黄a三级三级三级人| а√天堂www在线а√下载| 给我免费播放毛片高清在线观看| 桃色一区二区三区在线观看| 亚洲精品国产色婷婷电影| 免费一级毛片在线播放高清视频 | 国产一卡二卡三卡精品| 天天添夜夜摸| 久久精品成人免费网站| 久久久精品国产亚洲av高清涩受| 成熟少妇高潮喷水视频| 黑人欧美特级aaaaaa片| 欧美日本视频| 亚洲电影在线观看av| 天天躁夜夜躁狠狠躁躁| 啦啦啦免费观看视频1| 亚洲精品美女久久av网站| 免费人成视频x8x8入口观看| 国产成人av教育| 日本三级黄在线观看| 亚洲色图综合在线观看| 久久久久国产精品人妻aⅴ院| 亚洲中文字幕一区二区三区有码在线看 | av超薄肉色丝袜交足视频| 一进一出抽搐动态| 精品日产1卡2卡| avwww免费| 午夜福利,免费看| 精品国产乱码久久久久久男人| av网站免费在线观看视频| 18禁黄网站禁片午夜丰满| 多毛熟女@视频| 波多野结衣巨乳人妻| 侵犯人妻中文字幕一二三四区| 波多野结衣高清无吗| 黄色女人牲交| 黑丝袜美女国产一区| 这个男人来自地球电影免费观看| 极品人妻少妇av视频| 天堂影院成人在线观看| 久久精品亚洲精品国产色婷小说| 激情视频va一区二区三区| 村上凉子中文字幕在线| 99热只有精品国产| 久久人妻熟女aⅴ| 如日韩欧美国产精品一区二区三区| 人妻久久中文字幕网| 可以在线观看毛片的网站| 激情在线观看视频在线高清| 精品电影一区二区在线| 少妇被粗大的猛进出69影院| 国产精品自产拍在线观看55亚洲| a在线观看视频网站| 成年女人毛片免费观看观看9| 国产精品一区二区免费欧美| 欧美绝顶高潮抽搐喷水| 成人特级黄色片久久久久久久| 欧美一区二区精品小视频在线| 国产xxxxx性猛交| 美女高潮到喷水免费观看| 视频在线观看一区二区三区| e午夜精品久久久久久久| 两个人看的免费小视频| 欧美性长视频在线观看| 亚洲 国产 在线| 两个人免费观看高清视频| 国产精品自产拍在线观看55亚洲| 在线观看免费日韩欧美大片| 老司机福利观看| 看片在线看免费视频| 亚洲欧美激情在线| 啦啦啦免费观看视频1| 欧美日韩中文字幕国产精品一区二区三区 | 日韩欧美三级三区| 亚洲黑人精品在线| 日本撒尿小便嘘嘘汇集6| 中文字幕久久专区| 一级黄色大片毛片| 国产精品久久久av美女十八| www.999成人在线观看| 国产高清有码在线观看视频 | 高清在线国产一区| 国产成+人综合+亚洲专区| 91字幕亚洲| 长腿黑丝高跟| 在线观看免费日韩欧美大片| 成人亚洲精品av一区二区| 丝袜美足系列| 欧美日韩黄片免| 欧美黄色片欧美黄色片| 亚洲五月天丁香| 自拍欧美九色日韩亚洲蝌蚪91| 亚洲国产日韩欧美精品在线观看 | 黄色片一级片一级黄色片| 久久午夜综合久久蜜桃| 九色亚洲精品在线播放| 在线观看一区二区三区| 又大又爽又粗| 美女扒开内裤让男人捅视频| 在线观看舔阴道视频| 亚洲国产毛片av蜜桃av| 亚洲国产精品成人综合色| 午夜久久久久精精品| 麻豆久久精品国产亚洲av| 在线免费观看的www视频| 桃红色精品国产亚洲av| 精品国产乱子伦一区二区三区| 亚洲三区欧美一区| 啦啦啦 在线观看视频| 好男人在线观看高清免费视频 | 国产精品永久免费网站| 午夜激情av网站| 91麻豆精品激情在线观看国产| 一区二区三区精品91| 成人欧美大片| 国产三级在线视频| 欧美在线一区亚洲| 国产人伦9x9x在线观看| 精品电影一区二区在线| 欧美激情高清一区二区三区| 首页视频小说图片口味搜索| 亚洲va日本ⅴa欧美va伊人久久| 午夜福利欧美成人| 电影成人av| svipshipincom国产片| 丝袜在线中文字幕| 在线天堂中文资源库| 成人手机av| 国产激情欧美一区二区| 欧美日本亚洲视频在线播放| 老鸭窝网址在线观看| 亚洲精品国产色婷婷电影| 动漫黄色视频在线观看| 天堂√8在线中文| 69精品国产乱码久久久| 精品久久久精品久久久| 美女午夜性视频免费| 成年人黄色毛片网站| netflix在线观看网站| 国产真人三级小视频在线观看| 免费人成视频x8x8入口观看| √禁漫天堂资源中文www| 亚洲精品在线美女| 亚洲久久久国产精品| 国产精品美女特级片免费视频播放器 | 久久精品国产亚洲av高清一级| 99久久综合精品五月天人人| 天天一区二区日本电影三级 | 99久久综合精品五月天人人| 国产精品免费视频内射| 欧美激情 高清一区二区三区| 亚洲色图 男人天堂 中文字幕| 一级毛片精品| 久久国产乱子伦精品免费另类| 亚洲黑人精品在线| 级片在线观看| www.自偷自拍.com| 欧美成人性av电影在线观看| 国产精品永久免费网站| 波多野结衣高清无吗| 亚洲aⅴ乱码一区二区在线播放 | 午夜免费成人在线视频| 亚洲aⅴ乱码一区二区在线播放 | 亚洲中文av在线| 人妻久久中文字幕网| 中文亚洲av片在线观看爽| 国产成人精品在线电影| 亚洲欧美精品综合久久99| 九色亚洲精品在线播放| 精品乱码久久久久久99久播| 在线av久久热| 午夜激情av网站| 天堂√8在线中文| 国产亚洲欧美98| 变态另类成人亚洲欧美熟女 | 国产精品久久电影中文字幕| 亚洲 欧美 日韩 在线 免费| 叶爱在线成人免费视频播放| www.精华液| 老汉色∧v一级毛片| 国产精品自产拍在线观看55亚洲| 久久久久国产一级毛片高清牌| 老司机在亚洲福利影院| 亚洲男人天堂网一区| 操美女的视频在线观看| 欧美日韩瑟瑟在线播放| 国产91精品成人一区二区三区| 一区在线观看完整版| 亚洲av成人一区二区三| 免费少妇av软件| a在线观看视频网站| 窝窝影院91人妻| 无遮挡黄片免费观看| 国产高清有码在线观看视频 | 制服丝袜大香蕉在线| 久久久精品国产亚洲av高清涩受| 欧美乱色亚洲激情| 欧美黑人精品巨大| 精品熟女少妇八av免费久了| 午夜日韩欧美国产| 国产精品久久久人人做人人爽| 久久久国产成人免费| 亚洲国产日韩欧美精品在线观看 | 性少妇av在线| 成人国产综合亚洲| 老汉色av国产亚洲站长工具| 在线播放国产精品三级| 久久欧美精品欧美久久欧美| 色精品久久人妻99蜜桃| 欧美日本视频| 欧美在线黄色| 日韩有码中文字幕| 精品国产国语对白av| 国产精品久久久人人做人人爽| 亚洲成av人片免费观看| 又黄又爽又免费观看的视频| 露出奶头的视频| 黄片播放在线免费| 日韩欧美一区视频在线观看| 精品国产一区二区久久| 一级a爱视频在线免费观看| 亚洲片人在线观看| 亚洲人成电影免费在线| 久久久久久免费高清国产稀缺| av网站免费在线观看视频| 香蕉久久夜色| 欧美黄色片欧美黄色片| 中出人妻视频一区二区| 悠悠久久av| 一边摸一边抽搐一进一小说| 国产成人精品久久二区二区免费| 免费av毛片视频| 国内精品久久久久久久电影| 久久香蕉精品热| 国产精品av久久久久免费| 久久热在线av| 国产亚洲精品第一综合不卡| 久久久国产成人免费| 日韩精品中文字幕看吧| 美女高潮到喷水免费观看| 欧美成人免费av一区二区三区| 丝袜在线中文字幕| av网站免费在线观看视频| 看黄色毛片网站| 少妇被粗大的猛进出69影院| 亚洲欧美激情综合另类| 一边摸一边做爽爽视频免费| 大陆偷拍与自拍| 成人18禁高潮啪啪吃奶动态图| 国产野战对白在线观看| 黄片大片在线免费观看| 国产乱人伦免费视频| 久久久久久久午夜电影| 亚洲天堂国产精品一区在线| 波多野结衣av一区二区av| 99在线视频只有这里精品首页| 精品福利观看| 制服丝袜大香蕉在线| 国产激情欧美一区二区| 在线永久观看黄色视频| 自拍欧美九色日韩亚洲蝌蚪91| 一进一出抽搐gif免费好疼| 母亲3免费完整高清在线观看| av电影中文网址| 色综合亚洲欧美另类图片| 色尼玛亚洲综合影院| 亚洲国产精品999在线| 大陆偷拍与自拍| 制服人妻中文乱码| 精品一品国产午夜福利视频| 国产成人av教育| 757午夜福利合集在线观看| 19禁男女啪啪无遮挡网站| 久久伊人香网站| 国产在线观看jvid| 可以在线观看的亚洲视频| 国产精品1区2区在线观看.| 性色av乱码一区二区三区2| 国产激情欧美一区二区| 亚洲激情在线av| 美女 人体艺术 gogo| 国产午夜福利久久久久久| av网站免费在线观看视频| 国产精品乱码一区二三区的特点 | 很黄的视频免费| 身体一侧抽搐| 给我免费播放毛片高清在线观看| 精品少妇一区二区三区视频日本电影| 夜夜爽天天搞| 一边摸一边做爽爽视频免费| 午夜免费激情av| 国产精品1区2区在线观看.| 国产伦人伦偷精品视频| 成人精品一区二区免费| 亚洲成av片中文字幕在线观看| 欧洲精品卡2卡3卡4卡5卡区| 亚洲成人精品中文字幕电影| 国产极品粉嫩免费观看在线| 国产99白浆流出| 久久精品成人免费网站| 亚洲最大成人中文| 亚洲无线在线观看| 午夜免费鲁丝| 亚洲激情在线av| 亚洲男人的天堂狠狠| 村上凉子中文字幕在线| 午夜老司机福利片| 亚洲精品中文字幕在线视频| 中国美女看黄片| 曰老女人黄片| 18禁美女被吸乳视频| 亚洲国产欧美网| 久久香蕉国产精品| 国产精品一区二区免费欧美| 精品人妻在线不人妻| 99久久综合精品五月天人人| 亚洲精品在线观看二区| 欧美日韩福利视频一区二区| 国产午夜福利久久久久久| 欧美成人一区二区免费高清观看 | 成人永久免费在线观看视频| 女生性感内裤真人,穿戴方法视频| 国产精品一区二区免费欧美| 色综合亚洲欧美另类图片| 精品久久久久久成人av| 搡老岳熟女国产| 性少妇av在线| 成人国产一区最新在线观看| 成年人黄色毛片网站| 在线观看免费视频日本深夜| 老鸭窝网址在线观看| 岛国在线观看网站| 51午夜福利影视在线观看| 91九色精品人成在线观看| 淫秽高清视频在线观看| 国产精品野战在线观看| 久久久水蜜桃国产精品网| 黄片播放在线免费| 亚洲第一青青草原| 国产精品永久免费网站| 日韩精品免费视频一区二区三区| 色av中文字幕| 巨乳人妻的诱惑在线观看| 女人被狂操c到高潮| 女人高潮潮喷娇喘18禁视频| 免费在线观看亚洲国产| www.自偷自拍.com| 女警被强在线播放| 天天躁夜夜躁狠狠躁躁| 精品熟女少妇八av免费久了| 国产成人欧美| 亚洲一卡2卡3卡4卡5卡精品中文| 亚洲精品国产区一区二| 久久性视频一级片| 夜夜看夜夜爽夜夜摸| 一本久久中文字幕| 动漫黄色视频在线观看| 亚洲成av人片免费观看| 国产99白浆流出| 99在线视频只有这里精品首页| 身体一侧抽搐| 欧美日韩一级在线毛片| 18禁观看日本| 日韩有码中文字幕| 伊人久久大香线蕉亚洲五| 无人区码免费观看不卡| 亚洲伊人色综图| 桃色一区二区三区在线观看| 午夜福利18| 精品午夜福利视频在线观看一区| 无遮挡黄片免费观看| 国产单亲对白刺激| 国产又爽黄色视频| 人妻久久中文字幕网| 欧美黑人精品巨大| 国产高清videossex| 国产精品免费一区二区三区在线| 黑人欧美特级aaaaaa片| 亚洲久久久国产精品| 99精品在免费线老司机午夜| 国产精品日韩av在线免费观看 | 国产91精品成人一区二区三区| 两个人看的免费小视频| 天堂√8在线中文| 看黄色毛片网站|