国内精品久久久久_亚洲区手机在线中文无码播放_国内精品久久久久影院一蜜桃_日韩内射激情视频在线播放免费

      egret是哪個(gè)國家?

      時(shí)間:2024-11-30 06:41 人氣:0 編輯:招聘街

      一、egret是哪個(gè)國家?

      Egret是美國的一家公司,總部位于舊金山。它是一家為開發(fā)者提供工具和服務(wù)的技術(shù)性公司,專注于網(wǎng)頁開發(fā)和云端解決方案。

      二、egret需要什么基礎(chǔ)?

      軟件介紹

      (一)Egret Engine多版本系統(tǒng)

      (二)Egret Wing 強(qiáng)大的IDE工具

      (三)ResDepot 資源管理工具

      (四)Texture Merger:資源打包工具

      1. 精靈表輸出

      Texture Merger可將零散的小圖合并為大圖文理集,提高資源加載速度和游戲性能,在游戲研發(fā)過程中,開發(fā)者可使用小圖開發(fā),在產(chǎn)品發(fā)布時(shí)對資源進(jìn)行合并,無須修改代碼

      2. MovieClip動(dòng)畫旋轉(zhuǎn)

      Twxture Merger可方便地將GIF或SWF動(dòng)畫轉(zhuǎn)換為Egret支持的動(dòng)畫格式

      3. 位圖字體

      為高品質(zhì)游戲的個(gè)性文字效果輸出提供了方便快捷的解決方案

      案例:Hello World繪制一個(gè)圓

      項(xiàng)目代碼目錄

      1.Main.ts為項(xiàng)目入口類,也成為文檔類,文檔類時(shí)銜接項(xiàng)目運(yùn)行容器環(huán)境與項(xiàng)目中所有類的重要文件,

      2. oadingUI.ts是加載過程中的輔助顯示組件,用來顯示加載進(jìn)度

      項(xiàng)目配置文件

      1. 模塊配置modules

      模塊配置中,列出項(xiàng)目所需的各個(gè)模塊,默認(rèn)新建項(xiàng)目會(huì)包含core模塊和res模塊。core模塊是一個(gè)核心模塊,通常使用Egret開發(fā)項(xiàng)目,這是必選項(xiàng),因?yàn)橐嬷刑峁┑拇蟛糠只A(chǔ)類庫都處于這個(gè)模塊,res模塊也是相當(dāng)常用的模塊,只要涉及資源文件加載,就需要用到這個(gè)模塊,

      ① ore模塊是一個(gè)核心模塊,通常使用Egret開發(fā)項(xiàng)目,這是必選項(xiàng),因?yàn)橐嬷刑峁┑拇蟛糠只A(chǔ)類庫都處于這個(gè)模塊,

      ②  res模塊也是相當(dāng)常用的模塊,只要涉及資源文件加載,就需要用到這個(gè)模塊,

      2. 原生打包設(shè)定native

      該選項(xiàng)中的設(shè)置適用于原生打包

      3. 版本號egrety_version

      該選項(xiàng)指示項(xiàng)目最后打包時(shí)所使用的Egret引擎版本,如果該版本號與所安裝的Egret引擎不一致,通常需要升級到所需安裝版本財(cái)可以正常編譯

      4. 項(xiàng)目運(yùn)行容器環(huán)境

      項(xiàng)目運(yùn)行環(huán)境為launcher目錄,項(xiàng)目運(yùn)行環(huán)境總體上分為兩種,即HTML5環(huán)境和Runtime/Native環(huán)境,接下來對這種環(huán)境分別進(jìn)行說明

      ① HTML5環(huán)境由于標(biāo)準(zhǔn)Egret項(xiàng)目(相對于Runtime/Native來說)依賴于HTML5環(huán)境,運(yùn)行需要從某個(gè)靜態(tài)HTML5頁面開啟,這個(gè)目錄存有兩個(gè)HTML5頁面,index.html和release.html,分別用于調(diào)試和發(fā)布環(huán)境的啟動(dòng)頁面。另外HTML5環(huán)境運(yùn)行需要兩個(gè)js文件配合:egret_require.js和egret_loader.js在egret.loader.js中可以對項(xiàng)目運(yùn)行進(jìn)行一些定制配置

      ② Runtime/Native環(huán)境

      Runtime/Native環(huán)境由于已經(jīng)脫離原本的HTML5環(huán)境,因此不需要任何HTML5頁面,因?yàn)檫@個(gè)環(huán)境也沒有任何HTML解析器,這個(gè)環(huán)境只需要3個(gè)js文件,native_loader.js,native_require.js和runtime_loader.js、其中在native_loader.js和runtime_loader.js中可以分別對原生打包和Runtime打包項(xiàng)目進(jìn)行某些配置

      5. 項(xiàng)目運(yùn)行庫libs

      libs目錄中包含項(xiàng)目各模塊所對的所有類庫:

      a. egret

      b. eui

      c. res

      d. tween

      e. exml.e.ts

      當(dāng)對項(xiàng)目配置文件egretProperties.json中的模塊進(jìn)行修改后,需要通過編譯引擎命令來重新生成項(xiàng)目運(yùn)行庫,這個(gè)命令可以從Project菜單找到(Project ——》Build Engine)

      6. 項(xiàng)目編譯目錄bin-debug

      項(xiàng)目編譯的結(jié)果文件都會(huì)被存儲(chǔ)到bin-debug目錄中,這也是調(diào)試運(yùn)行過程將會(huì)調(diào)用到的文件。其中源代碼目錄中的文件將會(huì)被編譯到bin-debug/src目錄中,在bin-debug/lib有個(gè)列表文件,用來列出所需要的所有運(yùn)行庫文件,在運(yùn)行過程中,這些都會(huì)將在合適的時(shí)間被調(diào)用到

      7. 項(xiàng)目資源目錄resource

      resource是用來存放項(xiàng)目運(yùn)行所需要的所有資源的,包含圖片和配置文件,通常在資源目錄建立一個(gè)資源清單文件,默認(rèn)為:resource.json.圖片或聲音等資源文件的默認(rèn)存儲(chǔ)目錄為:resource/assets。配置數(shù)據(jù)文件的默認(rèn)存儲(chǔ)目錄為:recource/config。當(dāng)然這些目錄都可以根據(jù)自己喜好設(shè)置,只要在程序中使用保持一致即可

      assets

      config

      eui_skins

      default.res.json

      default.thm.json

      8. 項(xiàng)目發(fā)布目錄

      代碼風(fēng)格

      1.Egret采用的是TypeScript作為開發(fā)語言,是一種標(biāo)準(zhǔn)的OOP語言

      2. 對于大項(xiàng)目,建議將類分包建立

      3. 類名大寫,包名小寫例如:egret.Bitmap

      4. Egret類中的常量,通常采用全部字母大寫,單詞之間用下劃線隔開的風(fēng)格,如觸摸事件egret.TouchEvent.TOUCH_BEGIN

      注意:Egret引擎源代碼中定義,類中的屬性與方法如果以下劃線開頭,則表明此方法或?qū)傩詾橐鎯?nèi)部使用,在編寫游戲時(shí),千萬不要調(diào)用此類方法或?qū)傩裕駝t會(huì)引發(fā)不可預(yù)測的bug

      建議風(fēng)格。例如:有一個(gè)項(xiàng)目benchmark項(xiàng)目,我們要在benchmark.boid包內(nèi)創(chuàng)建一個(gè)名為Boid的類,

      5. 類與方法的命名規(guī)范

      1) 類名

      類名建議用大寫字母開頭,后每個(gè)單詞也都以大寫字母開頭,其他字母小寫,如一個(gè)控制翻頁的類,命名為PageSlipCenter,其定義即為:

      class PageSlipCenter extends egret.EventDispatcher{}

      2) 方法名

      方法名建議第一個(gè)單詞用小寫字母開頭,后續(xù)每個(gè)單詞都以大寫字母開頭,其他字母小寫,如有一個(gè)觸摸事件處理方法,命名為touchHandler,其定義為:private touchHandler(evt:egret.TouchEvent):void{}

      核心庫與擴(kuò)展庫的使用方法

      1. egret模塊是最為核心的模塊,所有的Egret項(xiàng)目都應(yīng)該包含這個(gè)模塊,否則所有的基礎(chǔ)功能都無法實(shí)現(xiàn),

      2. dragonbones

      3. eui

      4. game

      5. gui

      6. res模塊是一個(gè)重要的模塊,涉及資源載入的工作,都需要這個(gè)模塊來完成,

      7. socket

      8. tween

      如果需要添加或者刪除直接在egretProperties.json中添加或者刪除即可

      第三方庫的集成方法

      1.準(zhǔn)備第三方模塊

      第三方模塊可以使用現(xiàn)成的js庫也可以自己寫js庫

      由于ts與js在語法結(jié)構(gòu)上的差異,在ts中不能直接調(diào)用js庫中的API,不過TypeScript團(tuán)隊(duì)提供了一套虛構(gòu)聲明語法,可以把現(xiàn)有的代碼API用頭文件的形式描述出來,這種文件稱為ts類型定義,擴(kuò)展名為d.ts(d.ts命名提醒編譯器這種文件不需要編譯),這套虛構(gòu)定義語法不需要去實(shí)現(xiàn)函數(shù)體力的代碼,類似定義interface和抽象類,

      2. 部署第三方模塊

      第三方庫重要規(guī)則:創(chuàng)建位置處于其他Egret項(xiàng)目外部,否則無法運(yùn)行

      egret create_lib<庫名稱>

      注意:庫名稱應(yīng)該是英文字符串,執(zhí)行該命令將會(huì)創(chuàng)建以庫名稱為名的目錄,目錄內(nèi)將包含bin、src、libs這3個(gè)字目錄,還有一個(gè)package。json配置文件,再次強(qiáng)調(diào)一遍:不要在其他Egret項(xiàng)目內(nèi)創(chuàng)建庫,通常的做法是你有個(gè)放不同Egret項(xiàng)目的工作空間目錄,然后第三方模塊的庫項(xiàng)目與其他Egret項(xiàng)目均處于該工作空間目錄,處于并列位置

      1、將第三方模塊的js和對應(yīng)的d.ts文件復(fù)制到剛剛創(chuàng)建的Egret庫項(xiàng)目的src文件夾中。

      2、如果該庫項(xiàng)目src中的文件需要引用其他的庫的代碼,--通常稱為依賴庫,請把這些依賴庫的TypeScript描述文件(也就是,,d,ts文件) 放到libs目錄下,注意在libs目錄下其他類型的文件入.js和*.ts一概不需要

      3、編輯Egret庫項(xiàng)目中的配置文件package.json,將之前放入src目錄下的文件名稱依次作為file_list數(shù)組中的元素列出,

      3.在Egret項(xiàng)目中導(dǎo)入第三方模塊

      在Egret項(xiàng)目的egretProperties.json文件中,添加一下代碼:

      moddules:

      [

      {

      "name":"physics", //模塊名稱

      "path":"path/to/egret/library/project/root/", //路徑

      }

      ]

      編譯某第三方庫后,在index。html文件中應(yīng)該以模塊名稱physics.js的script外部腳本引用行

      三、layabox和egret哪個(gè)更好用?

      1、 Egret是比較早推的一個(gè)H5游戲引擎,引擎是仿Flash AS3 API的接口,而egret支持基于Flash語言和工具鏈開發(fā)HTML5產(chǎn)品,頁游開發(fā)者無需學(xué)習(xí),直接進(jìn)入HTML5藍(lán)海領(lǐng)域

      2、成熟的轉(zhuǎn)換技術(shù),快速將Flash頁游和手游轉(zhuǎn)換成HTML5產(chǎn)品

      3、Layabox的HTML5播放器性能卓越,基于LayaPlayer運(yùn)行的HTML5產(chǎn)品性能媲美APP。

      四、layabox和egret存在哪些區(qū)別?

      區(qū)別是:Layabox 有兩個(gè)框架;LayaFlash是面向Flash AS3程序員的,可以用AS3語言直接開發(fā)H5產(chǎn)品,也可以把AS3源碼的項(xiàng)目發(fā)布成H5項(xiàng)目。主要用于開發(fā)大游戲。

      另一個(gè)框架是LayaAir支持三種語言開發(fā)(AS3、TypeScript、JavaScript)這是全新的開發(fā)框架,與Flash沒關(guān)系了,是一個(gè)超牛的全新H5引擎,支持重度、中度、輕度的游戲開發(fā),支持應(yīng)用、網(wǎng)站的開發(fā)。Egret是TypeScript語言開發(fā)游戲用的。是圍住神經(jīng)貓這個(gè)游戲把引擎推火了,也一直致力于小游戲的開發(fā)。目前在小游戲的研發(fā)市場上品牌作的不錯(cuò)。

      五、使用Egret和jQuery創(chuàng)建Web應(yīng)用的教程

      背景介紹

      在當(dāng)今數(shù)字化時(shí)代,Web應(yīng)用開發(fā)是一個(gè)日益重要的領(lǐng)域。許多開發(fā)人員尋求使用最新、最流行的工具和技術(shù)來提高他們的開發(fā)效率。Egret和jQuery是兩個(gè)非常受歡迎的框架,它們分別用于HTML5游戲和Web應(yīng)用開發(fā)。

      什么是Egret和jQuery

      Egret是一款強(qiáng)大的HTML5游戲引擎,可用于構(gòu)建跨平臺(tái)的游戲和應(yīng)用程序。它提供了豐富的功能和工具,使開發(fā)人員可以輕松創(chuàng)建高性能的游戲。

      jQuery是一個(gè)快速、簡潔的JavaScript庫,它簡化了HTML文檔遍歷、事件處理和動(dòng)畫效果等常見任務(wù)。它被廣泛應(yīng)用于Web開發(fā)中,因其靈活性和易用性而備受推崇。

      結(jié)合Egret和jQuery的優(yōu)勢

      Egret和jQuery各自具有獨(dú)特的優(yōu)勢,但將它們結(jié)合起來使用可以帶來更多的好處。首先,Egret提供了強(qiáng)大的游戲開發(fā)功能,而jQuery則提供了豐富的Web應(yīng)用開發(fā)工具。通過結(jié)合兩者,開發(fā)人員可以同時(shí)享受到高性能游戲開發(fā)的優(yōu)勢和Web應(yīng)用開發(fā)的靈活性。

      如何使用Egret和jQuery創(chuàng)建Web應(yīng)用

      使用Egret和jQuery創(chuàng)建Web應(yīng)用可以分為以下幾個(gè)步驟:

      1. 安裝Egret和jQuery
      2. 創(chuàng)建一個(gè)Egret項(xiàng)目
      3. 在項(xiàng)目中引入jQuery庫
      4. 開始編寫代碼來創(chuàng)建Web應(yīng)用

      通過這些步驟,開發(fā)人員可以在Egret的游戲引擎基礎(chǔ)上,利用jQuery的強(qiáng)大功能來構(gòu)建復(fù)雜的Web應(yīng)用。

      Egret和jQuery的應(yīng)用場景

      Egret和jQuery在不同的場景中都有廣泛的應(yīng)用。Egret可以用于開發(fā)各種類型的HTML5游戲,包括休閑游戲、角色扮演游戲和競技游戲等。而jQuery可以用于構(gòu)建各種類型的Web應(yīng)用,包括社交網(wǎng)絡(luò)應(yīng)用、電子商務(wù)網(wǎng)站和博客平臺(tái)等。

      總結(jié)

      通過結(jié)合Egret和jQuery,開發(fā)人員可以同時(shí)享受到游戲開發(fā)和Web應(yīng)用開發(fā)的優(yōu)勢。兩者的組合能夠提供豐富的功能和工具,幫助開發(fā)人員更快地創(chuàng)建高性能的Web應(yīng)用和游戲。

      非常感謝您閱讀本文,希望通過本文的介紹,您能了解到Egret和jQuery的基本概念和特點(diǎn),以及如何結(jié)合它們來創(chuàng)建Web應(yīng)用。使用Egret和jQuery可以大大提高開發(fā)效率,并帶來更好的用戶體驗(yàn)。

      六、使用Egret JSON實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)存儲(chǔ)和加載

      什么是Egret JSON?

      Egret JSON是Egret Engine游戲引擎中的一種數(shù)據(jù)格式,用于存儲(chǔ)和加載動(dòng)態(tài)數(shù)據(jù)。它基于JSON(JavaScript Object Notation)格式,提供了一種簡單的方式來組織和管理游戲中的數(shù)據(jù),例如關(guān)卡信息、玩家屬性等。

      為什么使用Egret JSON?

      Egret JSON具有以下優(yōu)點(diǎn):

      • 易于理解和編寫:基于JSON格式,使用簡潔明了的鍵值對來表示數(shù)據(jù)。
      • 易于擴(kuò)展和修改:可以隨時(shí)添加、刪除或修改數(shù)據(jù)項(xiàng),方便進(jìn)行版本更新和維護(hù)。
      • 跨平臺(tái)兼容性:Egret JSON可以被各種平臺(tái)和設(shè)備(如PC、手機(jī)、平板)識(shí)別和解析,方便數(shù)據(jù)在不同平臺(tái)之間的共享。
      • 可讀性強(qiáng):Egret JSON使用ASCII文本格式,可以直接被開發(fā)人員和設(shè)計(jì)人員閱讀和編輯。

      如何使用Egret JSON?

      使用Egret JSON非常簡單,只需要幾個(gè)步驟:

      1. 創(chuàng)建Egret JSON文件:使用任何文本編輯器(如Notepad++、VS Code等),創(chuàng)建一個(gè)空白的文本文件,將其保存為".json"的擴(kuò)展名。
      2. 編寫數(shù)據(jù):根據(jù)游戲需求,使用鍵值對的方式編寫數(shù)據(jù),并保存到Egret JSON文件中。
      3. 加載數(shù)據(jù):在Egret Engine的游戲邏輯中,使用Egret提供的API加載Egret JSON文件,獲取其中的數(shù)據(jù)。
      4. 使用數(shù)據(jù):根據(jù)加載到的數(shù)據(jù),進(jìn)行相應(yīng)的游戲邏輯處理,例如顯示關(guān)卡信息、更新玩家屬性等。

      Egret JSON的應(yīng)用場景

      Egret JSON可以在各種類型的游戲中應(yīng)用,包括休閑游戲、角色扮演游戲、戰(zhàn)斗游戲等。以下是一些常見的應(yīng)用場景:

      • 關(guān)卡設(shè)計(jì):將關(guān)卡的難度、道具分布等信息存儲(chǔ)在Egret JSON中,并通過加載和解析獲取。
      • 游戲配置:存儲(chǔ)游戲中的常量、規(guī)則和參數(shù),方便進(jìn)行調(diào)整和修改。
      • 玩家數(shù)據(jù):保存玩家的屬性、成就和任務(wù)進(jìn)度等信息,實(shí)現(xiàn)游戲的進(jìn)度管理。

      總結(jié)

      Egret JSON是一種方便、靈活且易于使用的動(dòng)態(tài)數(shù)據(jù)存儲(chǔ)和加載方式,適用于各種類型的游戲。通過使用Egret JSON,開發(fā)人員可以更加輕松地管理和操作游戲中的數(shù)據(jù),提高游戲的可維護(hù)性和可擴(kuò)展性。

      感謝您閱讀本文,希望通過本文能夠幫助您更好地理解和應(yīng)用Egret JSON。

      七、mahout面試題?

      之前看了Mahout官方示例 20news 的調(diào)用實(shí)現(xiàn);于是想根據(jù)示例的流程實(shí)現(xiàn)其他例子。網(wǎng)上看到了一個(gè)關(guān)于天氣適不適合打羽毛球的例子。

      訓(xùn)練數(shù)據(jù):

      Day Outlook Temperature Humidity Wind PlayTennis

      D1 Sunny Hot High Weak No

      D2 Sunny Hot High Strong No

      D3 Overcast Hot High Weak Yes

      D4 Rain Mild High Weak Yes

      D5 Rain Cool Normal Weak Yes

      D6 Rain Cool Normal Strong No

      D7 Overcast Cool Normal Strong Yes

      D8 Sunny Mild High Weak No

      D9 Sunny Cool Normal Weak Yes

      D10 Rain Mild Normal Weak Yes

      D11 Sunny Mild Normal Strong Yes

      D12 Overcast Mild High Strong Yes

      D13 Overcast Hot Normal Weak Yes

      D14 Rain Mild High Strong No

      檢測數(shù)據(jù):

      sunny,hot,high,weak

      結(jié)果:

      Yes=》 0.007039

      No=》 0.027418

      于是使用Java代碼調(diào)用Mahout的工具類實(shí)現(xiàn)分類。

      基本思想:

      1. 構(gòu)造分類數(shù)據(jù)。

      2. 使用Mahout工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。

      3。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。

      4. 分類器對vector數(shù)據(jù)進(jìn)行分類。

      接下來貼下我的代碼實(shí)現(xiàn)=》

      1. 構(gòu)造分類數(shù)據(jù):

      在hdfs主要?jiǎng)?chuàng)建一個(gè)文件夾路徑 /zhoujainfeng/playtennis/input 并將分類文件夾 no 和 yes 的數(shù)據(jù)傳到hdfs上面。

      數(shù)據(jù)文件格式,如D1文件內(nèi)容: Sunny Hot High Weak

      2. 使用Mahout工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。

      3。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。

      4. 分類器對vector數(shù)據(jù)進(jìn)行分類。

      這三步,代碼我就一次全貼出來;主要是兩個(gè)類 PlayTennis1 和 BayesCheckData = =》

      package myTesting.bayes;

      import org.apache.hadoop.conf.Configuration;

      import org.apache.hadoop.fs.FileSystem;

      import org.apache.hadoop.fs.Path;

      import org.apache.hadoop.util.ToolRunner;

      import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;

      import org.apache.mahout.text.SequenceFilesFromDirectory;

      import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;

      public class PlayTennis1 {

      private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";

      /*

      * 測試代碼

      */

      public static void main(String[] args) {

      //將訓(xùn)練數(shù)據(jù)轉(zhuǎn)換成 vector數(shù)據(jù)

      makeTrainVector();

      //產(chǎn)生訓(xùn)練模型

      makeModel(false);

      //測試檢測數(shù)據(jù)

      BayesCheckData.printResult();

      }

      public static void makeCheckVector(){

      //將測試數(shù)據(jù)轉(zhuǎn)換成序列化文件

      try {

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String input = WORK_DIR+Path.SEPARATOR+"testinput";

      String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";

      Path in = new Path(input);

      Path out = new Path(output);

      FileSystem fs = FileSystem.get(conf);

      if(fs.exists(in)){

      if(fs.exists(out)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(out, true);

      }

      SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();

      String[] params = new String[]{"-i",input,"-o",output,"-ow"};

      ToolRunner.run(sffd, params);

      }

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("文件序列化失敗!");

      System.exit(1);

      }

      //將序列化文件轉(zhuǎn)換成向量文件

      try {

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";

      String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";

      Path in = new Path(input);

      Path out = new Path(output);

      FileSystem fs = FileSystem.get(conf);

      if(fs.exists(in)){

      if(fs.exists(out)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(out, true);

      }

      SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();

      String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};

      ToolRunner.run(svfsf, params);

      }

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("序列化文件轉(zhuǎn)換成向量失敗!");

      System.out.println(2);

      }

      }

      public static void makeTrainVector(){

      //將測試數(shù)據(jù)轉(zhuǎn)換成序列化文件

      try {

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String input = WORK_DIR+Path.SEPARATOR+"input";

      String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";

      Path in = new Path(input);

      Path out = new Path(output);

      FileSystem fs = FileSystem.get(conf);

      if(fs.exists(in)){

      if(fs.exists(out)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(out, true);

      }

      SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();

      String[] params = new String[]{"-i",input,"-o",output,"-ow"};

      ToolRunner.run(sffd, params);

      }

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("文件序列化失敗!");

      System.exit(1);

      }

      //將序列化文件轉(zhuǎn)換成向量文件

      try {

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";

      String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";

      Path in = new Path(input);

      Path out = new Path(output);

      FileSystem fs = FileSystem.get(conf);

      if(fs.exists(in)){

      if(fs.exists(out)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(out, true);

      }

      SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();

      String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};

      ToolRunner.run(svfsf, params);

      }

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("序列化文件轉(zhuǎn)換成向量失敗!");

      System.out.println(2);

      }

      }

      public static void makeModel(boolean completelyNB){

      try {

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";

      String model = WORK_DIR+Path.SEPARATOR+"model";

      String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";

      Path in = new Path(input);

      Path out = new Path(model);

      Path label = new Path(labelindex);

      FileSystem fs = FileSystem.get(conf);

      if(fs.exists(in)){

      if(fs.exists(out)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(out, true);

      }

      if(fs.exists(label)){

      //boolean參數(shù)是,是否遞歸刪除的意思

      fs.delete(label, true);

      }

      TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();

      String[] params =null;

      if(completelyNB){

      params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};

      }else{

      params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};

      }

      ToolRunner.run(tnbj, params);

      }

      } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("生成訓(xùn)練模型失敗!");

      System.exit(3);

      }

      }

      }

      package myTesting.bayes;

      import java.io.IOException;

      import java.util.HashMap;

      import java.util.Map;

      import org.apache.commons.lang.StringUtils;

      import org.apache.hadoop.conf.Configuration;

      import org.apache.hadoop.fs.Path;

      import org.apache.hadoop.fs.PathFilter;

      import org.apache.hadoop.io.IntWritable;

      import org.apache.hadoop.io.LongWritable;

      import org.apache.hadoop.io.Text;

      import org.apache.mahout.classifier.naivebayes.BayesUtils;

      import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;

      import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;

      import org.apache.mahout.common.Pair;

      import org.apache.mahout.common.iterator.sequencefile.PathType;

      import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;

      import org.apache.mahout.math.RandomAccessSparseVector;

      import org.apache.mahout.math.Vector;

      import org.apache.mahout.math.Vector.Element;

      import org.apache.mahout.vectorizer.TFIDF;

      import com.google.common.collect.ConcurrentHashMultiset;

      import com.google.common.collect.Multiset;

      public class BayesCheckData {

      private static StandardNaiveBayesClassifier classifier;

      private static Map<String, Integer> dictionary;

      private static Map<Integer, Long> documentFrequency;

      private static Map<Integer, String> labelIndex;

      public void init(Configuration conf){

      try {

      String modelPath = "/zhoujianfeng/playtennis/model";

      String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";

      String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";

      String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";

      dictionary = readDictionnary(conf, new Path(dictionaryPath));

      documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));

      labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));

      NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);

      classifier = new StandardNaiveBayesClassifier(model);

      } catch (IOException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.out.println("檢測數(shù)據(jù)構(gòu)造成vectors初始化時(shí)報(bào)錯(cuò)。。。。");

      System.exit(4);

      }

      }

      /**

      * 加載字典文件,Key: TermValue; Value:TermID

      * @param conf

      * @param dictionnaryDir

      * @return

      */

      private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {

      Map<String, Integer> dictionnary = new HashMap<String, Integer>();

      PathFilter filter = new PathFilter() {

      @Override

      public boolean accept(Path path) {

      String name = path.getName();

      return name.startsWith("dictionary.file");

      }

      };

      for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {

      dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());

      }

      return dictionnary;

      }

      /**

      * 加載df-count目錄下TermDoc頻率文件,Key: TermID; Value:DocFreq

      * @param conf

      * @param dictionnaryDir

      * @return

      */

      private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {

      Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();

      PathFilter filter = new PathFilter() {

      @Override

      public boolean accept(Path path) {

      return path.getName().startsWith("part-r");

      }

      };

      for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {

      documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());

      }

      return documentFrequency;

      }

      public static String getCheckResult(){

      Configuration conf = new Configuration();

      conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

      String classify = "NaN";

      BayesCheckData cdv = new BayesCheckData();

      cdv.init(conf);

      System.out.println("init done...............");

      Vector vector = new RandomAccessSparseVector(10000);

      TFIDF tfidf = new TFIDF();

      //sunny,hot,high,weak

      Multiset<String> words = ConcurrentHashMultiset.create();

      words.add("sunny",1);

      words.add("hot",1);

      words.add("high",1);

      words.add("weak",1);

      int documentCount = documentFrequency.get(-1).intValue(); // key=-1時(shí)表示總文檔數(shù)

      for (Multiset.Entry<String> entry : words.entrySet()) {

      String word = entry.getElement();

      int count = entry.getCount();

      Integer wordId = dictionary.get(word); // 需要從dictionary.file-0文件(tf-vector)下得到wordID,

      if (StringUtils.isEmpty(wordId.toString())){

      continue;

      }

      if (documentFrequency.get(wordId) == null){

      continue;

      }

      Long freq = documentFrequency.get(wordId);

      double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);

      vector.setQuick(wordId, tfIdfValue);

      }

      // 利用貝葉斯算法開始分類,并提取得分最好的分類label

      Vector resultVector = classifier.classifyFull(vector);

      double bestScore = -Double.MAX_VALUE;

      int bestCategoryId = -1;

      for(Element element: resultVector.all()) {

      int categoryId = element.index();

      double score = element.get();

      System.out.println("categoryId:"+categoryId+" score:"+score);

      if (score > bestScore) {

      bestScore = score;

      bestCategoryId = categoryId;

      }

      }

      classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";

      return classify;

      }

      public static void printResult(){

      System.out.println("檢測所屬類別是:"+getCheckResult());

      }

      }

      八、webgis面試題?

      1. 請介紹一下WebGIS的概念和作用,以及在實(shí)際應(yīng)用中的優(yōu)勢和挑戰(zhàn)。

      WebGIS是一種基于Web技術(shù)的地理信息系統(tǒng),通過將地理數(shù)據(jù)和功能以可視化的方式呈現(xiàn)在Web瀏覽器中,實(shí)現(xiàn)地理空間數(shù)據(jù)的共享和分析。它可以用于地圖瀏覽、空間查詢、地理分析等多種應(yīng)用場景。WebGIS的優(yōu)勢包括易于訪問、跨平臺(tái)、實(shí)時(shí)更新、可定制性強(qiáng)等,但也面臨著數(shù)據(jù)安全性、性能優(yōu)化、用戶體驗(yàn)等挑戰(zhàn)。

      2. 請談?wù)勀赪ebGIS開發(fā)方面的經(jīng)驗(yàn)和技能。

      我在WebGIS開發(fā)方面有豐富的經(jīng)驗(yàn)和技能。我熟悉常用的WebGIS開發(fā)框架和工具,如ArcGIS API for JavaScript、Leaflet、OpenLayers等。我能夠使用HTML、CSS和JavaScript等前端技術(shù)進(jìn)行地圖展示和交互設(shè)計(jì),并能夠使用后端技術(shù)如Python、Java等進(jìn)行地理數(shù)據(jù)處理和分析。我還具備數(shù)據(jù)庫管理和地理空間數(shù)據(jù)建模的能力,能夠設(shè)計(jì)和優(yōu)化WebGIS系統(tǒng)的架構(gòu)。

      3. 請描述一下您在以往項(xiàng)目中使用WebGIS解決的具體問題和取得的成果。

      在以往的項(xiàng)目中,我使用WebGIS解決了許多具體問題并取得了顯著的成果。例如,在一次城市規(guī)劃項(xiàng)目中,我開發(fā)了一個(gè)基于WebGIS的交通流量分析系統(tǒng),幫助規(guī)劃師們評估不同交通方案的效果。另外,在一次環(huán)境監(jiān)測項(xiàng)目中,我使用WebGIS技術(shù)實(shí)現(xiàn)了實(shí)時(shí)的空氣質(zhì)量監(jiān)測和預(yù)警系統(tǒng),提供了準(zhǔn)確的空氣質(zhì)量數(shù)據(jù)和可視化的分析結(jié)果,幫助政府和公眾做出相應(yīng)的決策。

      4. 請談?wù)勀鷮ebGIS未來發(fā)展的看法和期望。

      我認(rèn)為WebGIS在未來會(huì)繼續(xù)發(fā)展壯大。隨著云計(jì)算、大數(shù)據(jù)和人工智能等技術(shù)的不斷進(jìn)步,WebGIS將能夠處理更大規(guī)模的地理數(shù)據(jù)、提供更豐富的地理分析功能,并與其他領(lǐng)域的技術(shù)進(jìn)行深度融合。我期望未來的WebGIS能夠更加智能化、個(gè)性化,為用戶提供更好的地理信息服務(wù),助力各行各業(yè)的決策和發(fā)展。

      九、freertos面試題?

      這塊您需要了解下stm32等單片機(jī)的基本編程和簡單的硬件設(shè)計(jì),最好能夠了解模電和數(shù)電相關(guān)的知識(shí)更好,還有能夠會(huì)做操作系統(tǒng),簡單的有ucos,freeRTOS等等。最好能夠使用PCB畫圖軟件以及keil4等軟件。希望對您能夠有用。

      十、paas面試題?

      1.負(fù)責(zé)區(qū)域大客戶/行業(yè)客戶管理系統(tǒng)銷售拓展工作,并完成銷售流程;

      2.維護(hù)關(guān)鍵客戶關(guān)系,與客戶決策者保持良好的溝通;

      3.管理并帶領(lǐng)團(tuán)隊(duì)完成完成年度銷售任務(wù)。

      相關(guān)資訊
      熱門頻道

      Copyright © 2024 招聘街 滇ICP備2024020316號-38

      国内精品久久久久_亚洲区手机在线中文无码播放_国内精品久久久久影院一蜜桃_日韩内射激情视频在线播放免费

        平昌县| 岗巴县| 且末县| 凉山| 新平| 瑞昌市| 高密市| 周口市| 德清县| 仁化县| 马关县| 安泽县| 报价| 大余县| 溧水县| 威海市| 安义县| 黄冈市| 襄城县| 砚山县| 南乐县| 陕西省| 阳谷县| 库车县| 丹东市| 丽水市| 顺义区| 蒙山县| 庆安县| 红原县| 鄯善县| 铜山县| 普宁市| 尼玛县| 赣榆县| 类乌齐县| 赞皇县| 禹城市| 兖州市| 长宁区| 邛崃市|