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

  • 相关阅读:
    吴恩达《深度学习》第四门课(4)特殊应用:人脸识别和神经风格迁移
    吴恩达《深度学习》第四门课(3)目标检测(Object detection)
    经典算法详解(12)分解质因数
    吴恩达《深度学习》第四门课(2)卷积神经网络:实例探究
    经典算法详解(11)递归查找数组中的最大值
    吴恩达《深度学习》第四门课(1)卷积神经网络
    经典算法详解(10)图中有多少个三角形
    吴恩达《深度学习》第三门课(2)机器学习策略二
    数据结构与算法——备用2(十)
    数据结构与算法——查找算法(八)
  • 原文地址:https://www.cnblogs.com/snidget/p/2460655.html
Copyright © 2020-2023  润新知