天天看点

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 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)