各位关注我的博友们好,本人已经转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 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)