各位关注我的博友们好,本人已经转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,保存之后,编写代码
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+/:代码提示