各位關注我的博友們好,本人已經轉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 抽取本地變量( 可以直接把一些魔法數字和字元串抽取成一個變量,尤其是多處調用的時候)