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键可将此段代码放入forwhileifdotry等代码块中。
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
抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)

 

 

 

 

posted @ 2012-04-20 22:50  李福春  阅读(3048)  评论(0编辑  收藏  举报