久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2115|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

EIT(Enterprise IT)/企業(yè)IT(Git,Maven,Hibernate,SQL,GWT) 復(fù)習(xí)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71407 發(fā)表于 2014-12-31 02:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本學(xué)期的重頭戲是兩門Projektpraktika(實習(xí)課)。一門是robotik(機器人學(xué))一門是EIT。其中機器人的實習(xí)課已經(jīng)早就完成了。雖然最后的效果差強人意,但也畢竟也算是把證書拿到手了。而另外一門EIT則一直懸在半空。最后要到下個月的15號驗收。希望一切順利。

現(xiàn)在一點點的將EIT的內(nèi)容整理一下。

EIT實習(xí)課的要求是兩人一組完成一個分布式應(yīng)用----書籍評價系統(tǒng)。其中包括后臺的數(shù)據(jù)庫和提供給用戶操作的頁面,即網(wǎng)絡(luò)應(yīng)用程序(Web Service)。其實這是最簡單最常見的網(wǎng)絡(luò)應(yīng)用程序。

其中數(shù)據(jù)庫由SQL和JDBC來實現(xiàn),而Web Service由GWT(google web Toolkit)實現(xiàn),此外還用到了的技術(shù)包括GIT、Maven和Hibernate。
GIT用于分布式版本管理。也就是說便于大家合作,以及保存歷史修改記錄。
Maven則是項目管理和理解工具。Install(build)和Test以及各種Dependency等都?xì)w其處理。例如本項目會用到的GWT和Hibernate等。類似于Ant,但比Ant要方便很多。
Hibernate則用于對象和關(guān)系數(shù)據(jù)庫之間的映射。


其實一直以來就很怵這些東西。因為基礎(chǔ)實在不好,而且作為實習(xí)課是沒有人教的,必須自學(xué)。相比較而言,信號處理或者機器人相關(guān)的東西反倒讓我感覺舒服很多。不過呢,既然已經(jīng)選了EIT的模塊,EIT的實習(xí)課也就逃不掉了。現(xiàn)在剩半個多月的時間,硬著頭皮把這個弄完吧。


Git 分布式版本管理
首先介紹一個很好的網(wǎng)站 open-open里面有很多非常棒的文檔供學(xué)習(xí)。
本來一直弄不明白怎么用Git,因為總是在wiki這樣的地方晃來晃去。后來在自己寫了代碼要和同學(xué)的代碼合并的時候才終于在實踐時看了open-open的幾篇文章后弄明白了。

這是一篇很不錯的介紹文章:

那Git到底是什么呢?Git --- The stupid content tracker,傻瓜內(nèi)容跟蹤器。Linux是這樣給我們介紹Git的。 —— wiki
其實非常非常的簡單。就是一套幫助一個項目組的人合作完成項目的工具。
比如說項目組中有A,B和C三個人。每個人會負(fù)責(zé)一些功能的開發(fā)。而在未最終開發(fā)完成之前,三個人總是需要不停的將自己最近寫的代碼/完成的功能進行update,并讓其他人也可以看到和用到。和以前的Subversion(svn)所不同的是,這里沒有一個作為中心的服務(wù)器,而是分布到各個遠程倉庫中的。在每個人的本地有一個倉庫保存所有代碼。于此同時個人還有一個工作空間(Workplace)用于寫代碼,也就是自留地。每隔一段時間,或者完成了一定的功能后,將新建的文檔加入到被跟蹤文件中,或者將剛修改的曾經(jīng)被列入到被跟蹤文件加入到將升級文件中,也就是上了入庫名單了。這兩件事情都可以通過git add fileName來完成。而后使用git commit來將上述兩類文件提交給本地倉庫,也就是文件入庫了。此后可以和遠程倉庫利用pull和push兩個指令進行交互。如果產(chǎn)生了沖突(conflict)的話,git會標(biāo)示出沖突的位置,并用<<<<<<HEAD將沖突的代碼段的兩方都標(biāo)示出來,由開發(fā)者去選擇其中正確的部分。由此解決了沖突問題。
其中常用的命令有
git add fileName 將未被跟蹤的文檔加入跟蹤文檔中,以及將已被跟蹤且修改過的文檔添加到將被commit的行列中
git status 查看當(dāng)前文檔的狀態(tài)。。例如哪些文檔被修改了,被刪除了,以及哪些文檔還沒有被列入跟蹤的行列中
rm -rf fileName 將某文檔從被跟蹤列表中移除
git commit 提交給當(dāng)?shù)氐膫}庫
git commit -m "myMessage" 提交給當(dāng)?shù)氐膫}庫并附帶本次提交的說明信息
git pull 從遠程的倉庫中拉取最新的文檔
git push 將本地倉庫的最新文檔傳到遠程的倉庫中,這樣合作同伴也可以看到了
git checkout 從多個branch中選擇想要的branch
git branch 查看有哪些branch以及當(dāng)前處于哪個branch中


Maven
Maven是一種項目管理和理解工具。原型是原始項目或模型,可以通過原始項目復(fù)制出其它同類型的事物。Maven中的原型就是項目模板。項目模板加上一些用戶輸入就可以任何用戶需求的Maven項目。
在控制臺中輸入以下命令
mvn archetype: creat
-DarchetypeGroupID=org.apache.maven.archetypes
-DgroupID=com.mycompany.app

-DartifactID=my-app
就可以創(chuàng)建新項目了。

一旦執(zhí)行了這些命令,就可以在新項目下發(fā)現(xiàn)一個名字為my-app的文件夾。此文件夾下包含了一個pom.xml的文件。如下圖所示:



圖1:pom.xml示意圖

pom.xml包含項目的Project object model(POM)。POM是Maven中的工作的基本單元。在POM中包含了項目的各種重要信息。下面分別對各個元素進行說明。



圖2:pom的說明

現(xiàn)在回到剛剛創(chuàng)建的項目中來。可以看到新的項目的目錄結(jié)構(gòu)如下圖所示:







圖3:項目的目錄結(jié)構(gòu)



圖4:目錄結(jié)構(gòu)解釋

可以看到依據(jù)原型生的項目包括pom和程序的源代碼目錄樹結(jié)構(gòu)以及測試源代碼的目錄樹結(jié)構(gòu)。這是標(biāo)準(zhǔn)的Maven項目的布局結(jié)構(gòu)。

然后就可以在這些目錄結(jié)構(gòu)下寫代碼了。現(xiàn)在接著接好一些常用指令:

    編譯  mvn compile
    執(zhí)行該命令后會有如下輸出



圖5:執(zhí)行編譯時的輸出

注意:在第一次編譯的時候Maven會下載所有插件以及執(zhí)行當(dāng)前命令所需的依賴項。所以通常會持續(xù)一段時間。如圖4中所示花費了將近4分鐘。當(dāng)時我在頭次編譯EIT的時候也花了很長時間。不過之后的話就會快很多了。

編譯后的二進制class都會存放在根目錄下的target/classes中。Maven相對比于Ant的一個優(yōu)勢就是在于你不需要指定源文件的位置以及編譯后文件的保存位置。所有的都依照maven的約束來進行。

    測試 mvn test
    執(zhí)行該命令后有如下輸出:



                                                      


圖6:測試輸出

    如果只想編譯測試代碼則 輸入 mvn test-compile


    創(chuàng)建jar包 mvn package
    回顧pom.xml可以看到其中packaging被設(shè)定為jar。所以執(zhí)行上面的命令之后就可以在target目錄中找到你需要的jar文件了。

    安裝 mvn install
    執(zhí)行了上面這個指令就可以將JAR文件安裝到本地資料庫中(默認(rèn)是~/.m2/repository)。然后得到如下的輸出



                                                     
圖7:安裝輸出
經(jīng)過以上幾個命令已經(jīng)將一個典型的Maven項目進行了設(shè)置、構(gòu)建、測試、打包和安裝。這基本上是使用Maven構(gòu)建項目的大部分。

其實上述指令對應(yīng)了Maven的生命周期。


    Maven的生命周期:
    validate :驗證工程是否正確,所有需要的資源是否可用。

    compile:編譯項目的源代碼。

    test-compile:編譯項目測試代碼。

    test:使用已編譯的測試代碼,測試已編譯的源代碼。

    package:已發(fā)布的格式,如jar,將已編譯的源代碼打包。

    integration-test:在集成測試可以運行的環(huán)境中處理和發(fā)布包。

    verify:運行任何檢查,驗證包是否有效且達到質(zhì)量標(biāo)準(zhǔn)。

    install:把包安裝在本地的repository中,可以被其他工程作為依賴來使用。

    deploy:在整合或者發(fā)布環(huán)境下執(zhí)行,將最終版本的包拷貝到遠程的repository,使得其他的開發(fā)者或者工程可以共享。

    generate-sources:產(chǎn)生應(yīng)用需要的任何額外的源代碼,如xdoclet。




注:主要內(nèi)容節(jié)選自Maven入門指南


Hibernate

每一個持久化POJO類都是一個實體Bean,這可以通過在類的定義中使用@Entity來實現(xiàn)。
而@id注解則聲明了該實體bean的標(biāo)識屬性。

SQL
本項目提供了通過控制臺操作SQL的界面。地址和密碼都是由管理員通過EMAIL發(fā)給每個人的。
而每句SQL指令后都強制要求加分號。

常用的SQL的指令:
SHOW TABLES; 顯示當(dāng)前所有表格
SELECT * FROM users; 選取users這個表的所有列
SELECT * FROM users WHERE userName = "user1"; 選取users這個表中userName是user1的所有列
INSERT INTO users VALUES (a,b,c); 添加一列到users表中
DROP users; 刪除users表



GWT
GWT是google推出的用于編寫網(wǎng)絡(luò)應(yīng)用程序的平臺,可以作為一個插件結(jié)合在eclipse里應(yīng)用。
之前完成了頁面設(shè)計,但是Client-Server Communication還沒有實現(xiàn)。現(xiàn)在在跟著GWT官網(wǎng)的Tutorials里的例子學(xué)習(xí)實現(xiàn)RPC(Remote Procedure Call)。也就是把原本在client的功能放到Server去做。因為只有Server才有需要的數(shù)據(jù)。

我目前要做的其實也很簡單。就是一個最普通的用戶登錄功能。也就是在客戶端由客戶輸入用戶名和密碼,然后將這些數(shù)據(jù)作為一個對象打包發(fā)送給Server,在Server完成驗證之后,將驗證結(jié)果反饋給客戶端。

現(xiàn)在粗略的這部分整理一下。

1,Creating a service 創(chuàng)建一個Service(服務(wù))
1.1, Defining the service 定義服務(wù) --> the interface 接口
在GWT 中,RPC 服務(wù)是由繼承自GWT RemoteService的接口所定義的。
在Client端創(chuàng)建一個接口,命名為UserAuthenticationService。里面只有一個返回類型為布爾值的方法,名為getAuthenticationResult。

1.2, Implementing the service 實現(xiàn)該服務(wù)
在Server端創(chuàng)建一個JAVA類,extend自the RemoteServiceServlet class,命名為UserAuthenticationServiceImpl。
然后Write the server-side implementaton 完成服務(wù)器端的實現(xiàn)。
在此重載唯一的一個方法getAuthenticationResult。在該方法中讀取數(shù)據(jù)庫來實現(xiàn)用戶驗證(未完成)。

1.3 Include the server-side code in the GWT module 將服務(wù)器端的代碼加進GWT組件中
The embedded servlet container (Jetty) can host the servlets that contain your service implementation. This means you can take advantage of running your application in development mode while testing and debugging the server side Java code.
為此,將"servlet" 和“servlet-mapping”這兩個elements加入到web application deployment descriptor (web.xml)中去。


2. Invoking the service from the client 從客戶端調(diào)用該服務(wù)
2.1 Making asynchronous calls to the server
需要將一個AsyncCallback parameter加入到所有的服務(wù)方法中。

2.2 Making the remote procedure call


其實最主要的就是兩個接口(Interface)和一個實現(xiàn)。兩個接口分別是myService和myServiceAsync,而一個實現(xiàn)則是myServiceImpl。其中接口都在Client端,而實現(xiàn)則在Server端。然后在觸發(fā)事件的時候就new一個ServiceAsync的callback。由此實現(xiàn)RPC遠程調(diào)用。

此外就是寫網(wǎng)頁的界面了。這個可以用GWT的Designer來完成,也可以手工編寫。感覺就算自己寫的話如果不是很復(fù)雜的界面倒也還OK。
最終本項目中在客戶端有兩個接口:
1. getAuthenticationResult 返回類型為UserDto。返回的是一個完整的用戶對象,而如果用戶名或者密碼錯誤則返回null。
2. getAuthenticationResultAnsyc 此接口可以由Maven自動生成

在服務(wù)器有一個實現(xiàn):
getAuthenticationResultImpl 具體實現(xiàn)RPC的調(diào)用。

后記:在15.03那天終于把這個課程結(jié)束了。最終只是完成了簡單的登錄操作。
GWT完成UI設(shè)計,并通過RPC調(diào)用遠程服務(wù)器的方法。
MAVEN負(fù)責(zé)整個項目的管理以及部分代碼的自動生成。
GIT負(fù)責(zé)整個項目組之間的合作。
Hibernate則負(fù)責(zé)JAVA的對象和關(guān)系數(shù)據(jù)庫的表之間的映射。即實現(xiàn)對象的持久化。
當(dāng)然數(shù)據(jù)庫還是SQL的事了。

最后發(fā)現(xiàn)要讓MAVEN、eclipse、GWT在一起運作會很麻煩。比如經(jīng)常在用MAVEN install自動生成GWT需要的Async的接口時自動修改返回值類型。總是需要手動修改就很討厭。

不過不管怎么說,這個Schein到手了,離畢業(yè)論文就更近一些了。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久激情视频 | 韩日av在线| 91亚洲国产| 国产中文视频 | 日本视频中文字幕 | 青草青草久热精品视频在线观看 | 日韩精品在线播放 | 日韩在线视频精品 | 99热精品6| 国产成人综合一区二区三区 | 欧美精| 亚洲一区二区视频 | 91直接看| 久久久免费少妇高潮毛片 | 波多野结衣一区二区三区在线观看 | 91高清视频在线观看 | 天堂av影院 | 国产精品久久久久久妇女 | 国产一区三区在线 | 国产精品入口 | 国产激情福利 | www.4hu影院 | 国产成人在线免费 | 亚洲成人福利视频 | 美女毛片免费看 | 久久久久亚洲精品 | 中文字幕免费观看 | 国产一区二区在线视频 | 伊人精品一区二区三区 | 欧美日产国产成人免费图片 | 免费看91| 国产成人精品一区二区三区网站观看 | 久久久久亚洲 | 久久一区精品 | 国产一区二区三区视频在线观看 | a亚洲精品 | 精品成人av| 国产色网| 久久久久一区二区三区四区 | av一区二区三区四区 | 色综合视频在线 |