天天看點

java工作筆記一 Maven,Guice , Mena的簡單使用 ,Eclipse必會快捷鍵

各位關注我的博友們好,本人已經轉java了,經過一個多月的求職,終于找到了自己滿意的工作,感覺自己學習能力強點之外,經驗還需要很長時間的積累,為了提升自己同時也給需要學習java的同志一些借鑒,打算把我的工作筆記放上來提供參考,希望能指正不足的地方,共同進步。

一,Maven

作用:管理Java類庫,管理依賴,可以很好的控制依賴項的版本,并且項目中不存在具體依賴lib,隻有對于依賴的描述,來源也可以很好的集中控制。

1, 安裝

1) 下載下傳maven的包 位址可百度

2) 解壓到任意目錄,然後設定環境變量 m2_home 值是maven的解壓路徑。

3) 加到path中來 %m2_home%/bin

4) 測試 mvn –version 出現版本資訊則安裝成功

2, 建立工程,并轉換成eclipse項目

1) 打開dos視窗,cd指令進入項目的存放的路徑,比如d:\work\mav

2) 打指令建立maven項目 mvn archetype:generate Dgroupld com.lifc Dartifactld hellomav 在執行過程中可能要重新輸入,輸入的groupld是組織或者包名,artifactld是項目名

3)轉換為Eclipse項目 Mvn eclipse:eclipse

3, 導入到eclise中

打開eclipse,file,import,選擇maven Existing Project ,finish就完成了導入

4, 使用eclipse建立maven項目

首先請正确的安裝Eclipse的maven插件,然後按照如下步驟:

1) 建立maven索引 window-show view-other-maven-maven repository 重建立立本地和全局的maven倉庫索引

2) 建立maven項目 File-new-maven-maven project –next –all category –quickstart –填寫組織和項目名稱指定版本和包結構-finish

3) 打開pom.xml,增加一個倚賴庫gccp integration,儲存之後,編寫代碼

18 package com.sthr.tutorial;

19 import com.sthr.integration.BootActivator;

20 import com.sthr.integration.SimpleBootActivator;

26 public class App implements BootActivator

27 {

28 private static final BootActivator activator=new SimpleBootActivator(new App());

29

30 public static void main( String[] args ) throws Exception

31 {

32 activator.start(args);

33 }

34

35 @Override

36 public void start(String[] arg0) throws Exception {

37 // TODO Auto-generated method stub

38 System.out.println( "Hello World!" );

39 }

40 }

4),編寫配置檔案 ,然後運作代碼類 (代碼略)

5, maven項目開發插件步驟

1) 建立maven項目,打開pom.xml,增加項目的倚賴庫。

2) 在src/main/java中編寫代碼檔案,繼承自HotSwapModuleAdapter,裡面隻有一個必須實作的configuation方法,在裡面可以配置加載的服務。

代碼如下:protected Iterable<? extends Module> configure() throws Exception {

return Lists.newArrayList(new AbstractServiceModule(){ @Override

protected void configureServices() {

//業務方法

}

});

3) 在pom.xml中,配置<forClass>com.sthr.tutorial.FirstPluginAdapter</forClass>

<forModuleRepo>.example</forModuleRepo>

4) 編譯打包,即可共其它maven項目當作插件調用。

二,Guice簡單使用

輕量級的,基于java5的泛型和注釋的倚賴注入架構(ioc)

下面記錄一個最簡單的使用過程。

1. 下載下傳Guice的應用包和源碼包。

2. 建立java項目,寫個接口,寫個實作類,還有一個使用這個接口的業務邏輯類。

package com.guice.service;

public interface PrintService {

String print(String str);

}

import com.guice.service.PrintService;

public class PrintServiceImp implements PrintService {

public String print(String str) {

System.out.println(str);

return str;

}

}

package com.guice.service.client;

import com.google.inject.Inject;

import com.guice.service.PrintService;

public class Client {

String str="Hello world!";

PrintService printService;

@Inject

public void setPrintService(PrintService printService)

{

this.printService=printService;

}

public void printString()

{

printService.print(str);

}

}

3. 引入Guice所需要的包,javax.inject.jar和 guice-3.0.jar

4. 編寫子產品類

package com.guice.service.module;

import com.google.inject.Binder;

import com.google.inject.Module;

import com.guice.service.PrintService;

import com.guice.service.imp.PrintServiceImp;

public class MyModule implements Module {

public void configure(Binder binder) {

binder.bind(PrintService.class).to(PrintServiceImp.class);

}

}

寫測試類

import com.google.inject.Guice;

import com.google.inject.Injector;

import com.guice.service.module.MyModule;

public class Test {

public static void main(String[] args) {

MyModule myModule=new MyModule();

Injector injector=Guice.createInjector(myModule);

Client client=new Client();

injector.injectMembers(client);

client.printString();

}

}

結果是可以完成guice版本的helloworld,然後我抽象下Guice的執行過程。首先,建立一個我們需要的子產品,傳給Guice.createInjector(),這個時候會生成一個Binder對象來實作接口和實作類的綁定,然後産生一個Injector出來,用這個Injector可以完成向業務邏輯類注入對象的服務,注入之後可以正常調用業務邏輯方法了。

三, mima的簡單使用

1) 引入相應的包 mina-core-2.0.4.jar 和slf4j-api-1.6.1.jar

2) 寫一個伺服器端

IoAcceptor acceptor=new NioSocketAcceptor();

LoggingFilter lf=new LoggingFilter("testLog");

acceptor.getFilterChain().addLast("logger", lf);

acceptor.getFilterChain().addLast("decode", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));

acceptor.getSessionConfig().setReadBufferSize(100);

acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);

acceptor.setHandler(new MyHandler());

acceptor.bind(new InetSocketAddress(5000));

System.out.println("伺服器監聽···");

3) 編寫資訊處理類

class MyHandler extends IoHandlerAdapter {

static Logger logger = LoggerFactory.getLogger(TimeServerHandler.class);

//static Logger logger = Logger.getLogger(TimeServerHandler.class);

//異常處理

public void exceptionCaught(IoSession session, Throwable cause) throws Exception {

cause.printStackTrace();

}

//對接收到的資料進行業務處理,在這裡我們不管收到什麼資訊都傳回一個目前的日期

public void messageReceived(IoSession session, Object message) throws Exception {

String str = message.toString();

if (str.trim().equalsIgnoreCase("quit")) {

session.close(true);

return;

}

else

{

System.out.println("getdata: "+str);

}

logger.debug("Rec:" + str);

Date date = new Date();

session.write(date.toString());

logger.debug("Message written...");

}

//當連接配接空閑時的處理

public void sessionIdle(IoSession session, IdleStatus status) throws Exception {

logger.debug("IDLE " + session.getIdleCount(status));

}

}

4) 可以使用dos模拟通路伺服器

四,Eclipse必會快捷鍵

Alt+/:代碼提示

Ctrl+/:注釋/取消注釋

Ctrl+D:删除光标所在行

Shift+Ctrl+F:代碼格式化。如果選擇了代碼,僅對所選代碼格式化

Shift+Ctrl+X:将所選字元轉為大寫

Shift+Ctrl+Y:将所選字元轉為小寫

Ctrl+M:快速對目前視圖最大化

Ctrl+單擊:可以跟蹤方法和類的源碼

Ctrl+滑鼠停留:可以顯示類和方法的源碼

輕按兩下左括号(小括号、中括号、大括号),将選擇括号内的所有内容。

Ctrl+1:光标停在某變量上,按Ctrl+1鍵,可以提供快速重構方案。選中若幹行,按Ctrl+1鍵可将此段代碼放入for、while、if、do或try等代碼塊中。

F3:打開聲明該引用的檔案

F4:打開類型層次結構

F5:單步跳入

F6:單步跳過

F7:單步跳出

F8:繼續,如果後面沒有斷點,程式将運作完

Ctrl+H:打開搜尋視窗

Ctrl+Shift+S:儲存全部

Alt+Left:回退一步[[BR]] Alt+Right:前跳一步[[BR]] Ctrl+Shift+T:打開類型

Ctrl+Shift+R:打開資源

Ctrl+Q:回到最後一次編輯的地方

Ctrl+Shift+G: 在workspace中搜尋引用

Ctrl+Alt+Down: 複制高亮顯示的一行或多行

Alt+Up(Down):将一行或者多行向上或者向下移動

Ctrl+Alt+↓ 複制目前行到下一行(複制增加)

Ctrl+Alt+↑ 複制目前行到上一行(複制增加)

Alt+↓ 目前行和下面一行互動位置(特别實用,可以省去先剪切,再粘貼了)

Alt+↑ 目前行和上面一行互動位置(同上)

Alt+← 前一個編輯的頁面

Alt+→ 下一個編輯的頁面(當然是針對上面那條來說了)

Alt+Enter 顯示目前選擇資源(工程,or 檔案 or檔案)的屬性

Shift+Enter 在目前行的下一行插入空行(這時滑鼠可以在目前行的任一位置,不一定是最後)

Shift+Ctrl+Enter 在目前行插入空行(原理同上條)

Ctrl+Q 定位到最後編輯的地方

Ctrl+L 定位在某行 (對于程式超過100的人就有福音了)

Ctrl+T 快速顯示目前類的繼承結構

Ctrl+W 關閉目前Editer

Ctrl+K 參照選中的Word快速定位到下一個

Ctrl+E 快速顯示目前Editer的下拉清單(如果目前頁面沒有顯示的用黑體表示)

Ctrl+/(小鍵盤) 折疊目前類中的所有代碼

Ctrl+×(小鍵盤) 展開目前類中的所有代碼

Ctrl+Shift+E 顯示管理目前打開的所有的View的管理器(可以選擇關閉,激活等操作)

Ctrl+J 正向增量查找

Ctrl+Shift+J 反向增量查找(和上條相同,隻不過是從後往前查)

Ctrl+Shift+F4 關閉所有打開的Editer

Ctrl+Shift+P 定位到對于的比對符(譬如{}) (從前面定位後面時,光标要在比對符裡面,後面到前面,則反之)

Ctrl+Shift+R 查找檔案

Ctrl+Shift+T 查找類

下面的快捷鍵是重構裡面常用的

Alt+Shift+R 重命名

Alt+Shift+M 抽取方法

Alt+Shift+C 修改函數結構

Alt+Shift+L 抽取本地變量( 可以直接把一些魔法數字和字元串抽取成一個變量,尤其是多處調用的時候)