java学习笔记

2018-10-18

1、学习java调用javascript引擎执行js代码的方法,看实例:

        String tkk = "var tkk = 'abcde';";
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("javascript");
        try {
            return (String) engine.eval(tkk);
        } catch (ScriptException e) {
            e.printStackTrace();
        }

2、学习java正则提取数据,看示例:

        String str = "asdfadf;TKK='427735.4060570411';sdfasfd";
        String result = str.replaceAll(".*TKK='(.*)';.*", "$1");//提取tkk的值
        return result;

3、学习使用Maven构建多模块项目

  学习地址:https://www.cnblogs.com/xdp-gacl/p/4242221.html

  需要注意的点:

  1.父模块的pom文件中的<packaging>jar</packaging>改成<packaging>pom</packaging>

  2.父模块中添加<modules></modules>节点,将其它模块引入

  3.子模块添加<parent></parent>节点,表示继承关系

  4.除了webapp保留<packaging>war</packaging>,其它子模块都不需要

  5.如果子模块依赖其它子模块,需要添加对其它子模块的依赖<dependency></dependency>

4、JDK环境变量配置

  新建->变量名"JAVA_HOME",变量值"C:Javajdk1.8.0_05"(即JDK的安装路径)
  编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%in;%JAVA_HOME%jrein”
  新建->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar”

5、配置maven

  maven无需安装,解压即可。只是需要额外的配置下环境变量:M2_HOME,值为:G:javaapache-maven-3.3.9(maven所在目录)。另外需要在PATH环境变量最后加入:“;%M2_HOME%in”

  配好后,直接在cmd命令行:mvn -version,如果出来版本信息,表示配置成功。

6、eclipse配置maven
  参考地址:https://jingyan.baidu.com/article/59703552cb9b988fc00740a4.html

7、maven的阿里云镜像

     <mirror>  
      <id>alimaven</id>  
      <name>aliyun maven</name>  
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
      <mirrorOf>central</mirrorOf>          
    </mirror> 

8、eclipse设置快捷键

  eclipse 设置Java快捷键补全,参考网址:https://blog.csdn.net/shaun_guo/article/details/79122749

  eclipse更改快捷键 Alt + /, 参考网址:https://www.cnblogs.com/shaweng/archive/2013/09/26/3340016.html,我自己改成了K字符

9、java中可以new一个接口,比如:

        ISay say = new ISay() {          
            public void sayHello() {
                System.out.println("Hello java!");
            }
        };

  参考网址:http://www.cnblogs.com/yjmyzz/p/3448330.html,说明了真相

10、eclipse在项目中查找字符串:Ctrl + H 快捷键

2018-11-02

11、list集合排序:

            backLexicons = backLexicons.stream().sorted(Comparator
                .comparing((TranslateLexicon p) -> p.getUseKey())
                .thenComparing(TranslateLexicon::getKeyName)
            ).collect(Collectors.toList());

  参考网址:https://www.cnblogs.com/zhaopengcheng/p/9462876.html

12、Map排序:可直接使用TreeMap,天然自带排序

  参考网址:https://www.cnblogs.com/fqfanqi/p/6187085.html

2018-11-07

13、阿里的序列化工具,直接将字符串反序列化成需要的对象

  List<TrainNoListWord> rules = JSON.parseObject(config, new TypeReference<List<TrainNoListWord>>(){});

2018-11-15

14、在用HttpGet构建请求时,url的查询参数不能带有空格,否则会报异常:Illegal character in query at index...

  HttpGet httpGet = new HttpGet("http://www.x.com?keyword=测 试");

2018-11-18

15、eclipse如果运行web项目,还得配置tomcat,参考地址:https://www.cnblogs.com/Leo_wl/p/4769760.html

16、解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.”,原因竟然是maven的配置里面没有指定jdk版本

  参考地址:https://blog.csdn.net/a724826175/article/details/78630927

17、阿里云,CentOS环境下tomcat启动超级慢的解决方案

  参考网址:https://yq.aliyun.com/articles/106290?spm=5176.10695662.1996646101.searchclickresult.2e7555bbQ4ULiV

  用的是第二种解决的。

  有两种解决办法:
  1)在Tomcat环境中解决
  可以通过配置JRE使用非阻塞的Entropy Source。
  在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。
  加入后再启动Tomcat,整个启动耗时下降到Server startup in 2912 ms。
  2)【已验证】在JVM环境中解决
  打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:
  securerandom.source=file:/dev/urandom
  替换成
  securerandom.source=file:/dev/./urandom

18、java利用lambda表达式过滤元素

  trainlist().removeIf(m -> !m.getFmcity().equals(request.getFrom()));

19、spring应用启动加载自定义类:使用监听器 : ServletContextListener

  具体可以分为两步:
  第一步:写自定义类,实现(implements) ServletContextListener接口。然后要实现接口的两个方法 public void contextDestroyed(ServletContextEvent event)和public void contexInitialized(ServletContextEvent event)。当然我们只需要把我们的业务逻辑写到初始化方法里就可以了。
  第二步:在web.xml中声明这个自定义监听器。
  <listener>
    <listener-class>com.cn.TKong.RegQiListener</listener-class>
  </listener>

20、eclipse对项目分组,参考地址:https://blog.csdn.net/wxwzy738/article/details/17280913

21、java读取properties文件的方法:

    /**
     * 根据name获取配置
     * @param name
     * @return
     */
    public static String get(String name) {
        String value = "";
        try {
            Properties prop = new Properties();
            // 读取属性文件
            InputStream in= PropertiesHelper.class.getClassLoader().getResourceAsStream("application.properties");
            prop.load(in); // 加载属性列表
            Iterator<String> it = prop.stringPropertyNames().iterator();
            while (it.hasNext()) {
                String key = it.next();
                if (key.equals(name)) {
                    value = prop.getProperty(key);
                    break;
                }
            }
            in.close();
        } catch (Exception e) {
            System.out.println(e);
        }
        
        return value;
    }

22、myeclipse调试时变量过长无法完全显示解决办法:

  参考网址:https://blog.csdn.net/enjoy_waste_time/article/details/82664354 

23、map遍历:

            for (Entry<String, Integer> entry : map.entrySet()) {
                entry.getKey();
                entry.getValue();
                System.out.println("key:" + entry.getKey() + ";value:" + entry.getValue());
            }

2019-01-04

24、springmvc 模型校验注意事项:@NotNull 和 @NotEmpty 和@NotBlank 的区别

  @NotEmpty 用在集合类上面
  @NotBlank 用在String上面
  @NotNull 用在基本类型上

  今天在做测试的时候,发现字符串校验不行,原因是使用了NotNull,应该改为NotBlank。

25、linux种执行jar包的命令

  java -jar shareniu.jar

  参考网址:https://www.cnblogs.com/zery/p/7799005.html

26、eclipse导出jar包时,一定要记得设置Main Class

原文地址:https://www.cnblogs.com/subendong/p/9811433.html