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:\Java\jdk1.8.0_05"(即JDK的安装路径)
编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”
新建->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”
5、配置maven
maven无需安装,解压即可。只是需要额外的配置下环境变量:M2_HOME,值为:G:\java\apache-maven-3.3.9(maven所在目录)。另外需要在PATH环境变量最后加入:“;%M2_HOME%\bin”
配好后,直接在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