• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      大數(shù)據(jù)編程對(duì)于JAVA程序設(shè)計(jì)課程改革的沖擊

      2021-11-19 12:15:06
      關(guān)鍵詞:子類數(shù)據(jù)類型序列化

      高 巖

      河南理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院數(shù)據(jù)科學(xué)系 河南 焦作 454003

      一、引言

      大數(shù)據(jù)編程相關(guān)的課程主要包括:HDFS,MapReduce,YARN,Spark,Storm,Hive,HBase等內(nèi)容[1]。所涉及的大量的計(jì)算機(jī)基礎(chǔ)知識(shí)包括:Linux系統(tǒng)原理,計(jì)算機(jī)組成原理,網(wǎng)絡(luò)組成,數(shù)據(jù)庫(kù)原理,面向?qū)ο蟪绦蛟O(shè)計(jì)等內(nèi)容。對(duì)于上課學(xué)生的基礎(chǔ)都提出了極高的要求,往往存在一邊上課,一邊“填空”的情況。另一方面,為了改變“老師講,學(xué)生聽;教師問(wèn),學(xué)生答,動(dòng)手練”的教學(xué)模式,我國(guó)的高校正在大量壓縮理論教學(xué)時(shí)長(zhǎng),轉(zhuǎn)而可以將更多精力放在實(shí)踐過(guò)程中。面向?qū)ο蟪绦蛘n程中JAVA、PYTHON語(yǔ)言在大數(shù)據(jù)編程方面也存在大量的應(yīng)用[2]。因此,教學(xué)過(guò)程中的需要按照大數(shù)據(jù)的要求進(jìn)行相應(yīng)的調(diào)整,并大量壓縮課時(shí)。

      二、JAVA程序設(shè)計(jì)課程的典型設(shè)定

      JAVA程序設(shè)計(jì)相關(guān)課程是計(jì)算機(jī)專業(yè)的基礎(chǔ)課程之一,也是重要的核心課程[3]。一般而言,這門的主要教學(xué)目標(biāo)有三:1、熟練掌握J(rèn)AVA語(yǔ)言的基本語(yǔ)法,能夠較為深入理解面向?qū)ο蟪绦蛟O(shè)計(jì)機(jī)制,可以熟練掌握類的設(shè)計(jì);2、掌握J(rèn)AVA標(biāo)準(zhǔn)版的API使用方法,掌握常用系統(tǒng)類、異常處理相關(guān)類、容器集合類、輸入輸出類、多線程類;3、能過(guò)圖形用戶界面介紹頁(yè)面布局、事件響應(yīng)等知識(shí)為后續(xù)網(wǎng)絡(luò)前端設(shè)計(jì)提供基礎(chǔ);在網(wǎng)絡(luò)編程方面,介紹SOCKET的概念,進(jìn)一步深化IO流及多線程的相關(guān)知識(shí),為后續(xù)的服務(wù)池管理提供前期模型,能過(guò)相關(guān)的項(xiàng)目的練習(xí)培養(yǎng)良好編程習(xí)慣,并讓學(xué)生具備編寫一定規(guī)模簡(jiǎn)易程序的能力,為后續(xù)軟件工程、web編程的相關(guān)課程打下基礎(chǔ)。

      對(duì)于普通計(jì)算機(jī)專業(yè)而言,繼續(xù)學(xué)習(xí)數(shù)據(jù)庫(kù)相關(guān)技術(shù)、JDBC、Servlet、Ajax、Spring MVC、HTML5等相關(guān)課程,讓學(xué)生具有較為完整的web網(wǎng)站全棧開發(fā)能力,其學(xué)生重點(diǎn)發(fā)展方向?yàn)榫W(wǎng)站前、后臺(tái)系統(tǒng)整合能力。

      三、大數(shù)據(jù)平臺(tái)Hadoop

      Hadoop兩大核心就是HDFS(Hadoop Distributed File System)分布式文件系統(tǒng)和 MapReduce(并行計(jì)算框架)[5]。

      HDFS系統(tǒng)可以通過(guò)其中核心元祖類FileSystem的不同的HDFS實(shí)現(xiàn)子類實(shí)例化對(duì)象實(shí)現(xiàn)接入。這些實(shí)現(xiàn)子類包含:Apache Hadoop,Aliyun OSS,Amazon S3,Azure Blob Storage,Azure Data Lake Storage,OpenStack Swift,Tencent COS這些Hadoop兼容的文件系統(tǒng)完成。HDFS要求具體的實(shí)現(xiàn)文件系統(tǒng)滿足(部分滿足)LINUX文件系統(tǒng)的POSIX標(biāo)準(zhǔn)[6]。

      MapReduce是非常容易上手的一個(gè)軟件框架,它主要是利用其并行計(jì)算能力在由數(shù)千個(gè)廉價(jià)計(jì)算結(jié)點(diǎn)組成的高可靠計(jì)算集群之上進(jìn)行TB級(jí)海量數(shù)據(jù)的運(yùn)算。一個(gè)MapReduce的Job可以分為兩大部分:Map和Reduce。在數(shù)據(jù)輸入端,Map Redce分將數(shù)據(jù)集的分割成相互獨(dú)立小份,再將每一小份送至完全并行的Map任務(wù)當(dāng)中。從輸出端來(lái)看,這個(gè)框架可以將這個(gè)Job中Map的輸出進(jìn)行排序,而后轉(zhuǎn)化為后續(xù)的Reduce任務(wù)的輸入,最后進(jìn)行輸出。通常來(lái)說(shuō),整個(gè)Job的輸入與輸出是存儲(chǔ)的文件系統(tǒng)中的文件。Map Reduce這個(gè)框架的核心即是Job內(nèi)任務(wù)的編排、監(jiān)視及任務(wù)失敗后的重啟。整個(gè)Hadoop框架是由JAVA實(shí)現(xiàn)的,因此,使用面向?qū)ο蟪绦蛘Z(yǔ)言JAVA的程序在Map Reduce框架中運(yùn)行有著天然親合性[7]。

      四、面向Hadoop集群進(jìn)行編程所面臨的問(wèn)題

      HDFS文件系統(tǒng)是一個(gè)類似于UNIX實(shí)現(xiàn)的文件系統(tǒng)。對(duì)于HDFS文件系統(tǒng)的文件、文件夾對(duì)象,使用PATH對(duì)象進(jìn)行封裝。其中對(duì)于路徑的描述是與常用的WINDOWS中對(duì)于文件系統(tǒng)的描述存在著差異,如層次文件系統(tǒng)以“/”根目錄開始且不能重命名、不被覆蓋,無(wú)盤符概念;更加嚴(yán)格的權(quán)限檢查,也就是說(shuō)一個(gè)調(diào)用者若沒有相應(yīng)許可,其程序操作將會(huì)拒絕而失敗,且同時(shí)拋出一個(gè)異常對(duì)象;通常需要使用URI地址,即統(tǒng)一資源標(biāo)志符Universal Resource Inde,在某一規(guī)則下能把一個(gè)資源獨(dú)一無(wú)二地標(biāo)識(shí)出來(lái)。我們所熟知的統(tǒng)一資源定位符URL是其子集;有些文件系統(tǒng)如Azure blob存儲(chǔ)文件中不能使用嵌入字符“.”等。在有了HDFS聯(lián)結(jié)對(duì)象(FileSystem對(duì)象)及HDFS文件管理對(duì)象(PATH對(duì)象)之后,使用FileSystem對(duì)象的Open方法產(chǎn)生一個(gè)FSDataInputStream實(shí)例,這里的org.apache.hadoop.fs.FSDataInputStream是java.io.DataInputStream及java.io.InputStream的子類;或使用create、append等方法產(chǎn)生一個(gè)FSDataOutput-Stream實(shí)例,這里org.apache.hadoop.fs.FSDataOutputStream是java.io.DataOutputStream與java.io.OutputStream的子類。只有找到這個(gè)接口,才能將HDFS文件系統(tǒng)的讀寫IO代碼接入HDFS文件系統(tǒng)當(dāng)中。這一個(gè)過(guò)程與JDBC及Socket編程方法十分類似,里面涉及大量對(duì)象序列化、反序列化、對(duì)象之間的比較、對(duì)象HashCode設(shè)定、IO處理流、節(jié)點(diǎn)流相關(guān)的知識(shí)。

      另一方面,MapReduce的框架唯一可以進(jìn)行操作的是一些Key-Value對(duì),也就是說(shuō),從框架的角度來(lái)看,整個(gè)Job的輸入是若干Key-Value對(duì)的集合,其輸出也是若干Key-Value對(duì)的集合。不同的Job使用不同的數(shù)據(jù)類型,但整個(gè)運(yùn)算框架是一致的。第一、MapReduce的框架中,JAVA中的基礎(chǔ)數(shù)據(jù)類型及包裝類類型不同的是:Map Reduce中用于Key-Value的數(shù)據(jù)類型類必須是被框架進(jìn)行串行化處理的,具體來(lái)說(shuō)就是要實(shí)現(xiàn)Writable接口,對(duì)于用于Key數(shù)據(jù)類型類必須實(shí)現(xiàn)WritableComparable接口以配合框架完成排序工作。在Hadoop中主要的數(shù)據(jù)類型包括了:BooleanWritable:布爾型數(shù)值、ByteWritable:單字節(jié)整型值、DoubleWritable:雙精度浮點(diǎn)數(shù)、floatWritable:單精度浮點(diǎn)數(shù)、IntWritable:整型值、LongWritable:長(zhǎng)整型值、Text:使用UTF8格式存儲(chǔ)的文本、NullWritable:當(dāng)<key,value>中的key或value為空時(shí)使用,分別對(duì)應(yīng)JAVA 程序中的Boolean,Byte,Double,F(xiàn)loat,Integer,Long,String和 null用來(lái)處理MapReduce框架中傳遞的數(shù)據(jù)。第二、在MapReduce框架中大量使用泛型接口、泛型類和泛型方法,但在基礎(chǔ)語(yǔ)法中僅僅在容器類中出現(xiàn)。但是在實(shí)際的編程過(guò)程中,我們需要引導(dǎo)學(xué)生自己去使用泛型簡(jiǎn)化開發(fā)程序,且提高代碼質(zhì)量。第三、在Rreduce方法輸入Key-Value中Value是一個(gè)包含同一類型的list,但對(duì)于Key則沒有這個(gè)要求。這個(gè)框架可以重用reduce輸入的Key與Value對(duì)象,因此,這個(gè)應(yīng)用可以克隆希望可以拷貝的對(duì)象。綜上可見,MapReduce的框架當(dāng)中對(duì)于抽象類、接口、包裝類對(duì)象、容器類,泛型、迭代器有了廣泛地使用。

      五、結(jié)論

      通常來(lái)說(shuō),JAVA程序設(shè)計(jì)相關(guān)課程中的主講內(nèi)容多為:面向?qū)ο缶幊淘O(shè)計(jì)思相、類、接口、常用類、異常類、IO、容器類、多線程、網(wǎng)絡(luò)編程與圖形界面等內(nèi)容。對(duì)于Hadoop這樣的集群管理并行計(jì)算系統(tǒng),使用JAVA編程是一種可行的選擇,但在教學(xué)過(guò)程中還需要強(qiáng)調(diào)對(duì)象序列化、反序列化、對(duì)象之間的比較、對(duì)象HashCode設(shè)定、IO處理流、節(jié)點(diǎn)流相關(guān)的知識(shí)、于抽象類、接口、包裝類對(duì)象、容器類,泛型、迭代器等內(nèi)容。若時(shí)間有限的情況下,可適當(dāng)刪減多線程、網(wǎng)絡(luò)編程與圖形界面等部分的內(nèi)容。

      猜你喜歡
      子類數(shù)據(jù)類型序列化
      詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
      卷入Hohlov算子的某解析雙單葉函數(shù)子類的系數(shù)估計(jì)
      如何建構(gòu)序列化閱讀教學(xué)
      甘肅教育(2020年14期)2020-09-11 07:58:36
      如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
      關(guān)于對(duì)稱共軛點(diǎn)的倒星象函數(shù)某些子類的系數(shù)估計(jì)
      Java 反序列化漏洞研究
      作文訓(xùn)練微格化、序列化初探
      塊H矩陣新的子類
      Java序列化技術(shù)的探討
      關(guān)于Java繼承性的探討
      通道| 横峰县| 苗栗县| 湛江市| 新乐市| 隆林| 云浮市| 岳阳市| 金华市| 赞皇县| 嵊州市| 元阳县| 东兴市| 泊头市| 乐昌市| 南投市| 永川市| 舟曲县| 宣城市| 蓝山县| 冕宁县| 乃东县| 沈阳市| 西和县| 大安市| 车险| 兴文县| 汝阳县| 中卫市| 临漳县| 盖州市| 永泰县| 望都县| 湘阴县| 临江市| 阿瓦提县| 忻州市| 息烽县| 湘潭市| 什邡市| 炉霍县|