zoukankan      html  css  js  c++  java
  • JAVA学习笔记

    基础知识

    1、classpath*:和classpath:的区别

    在SPRING开发的时候我们引入不同的JAR包,如果在不同的JAR中有相同的文件:datasource.xml,那么他们之间的区别是:

    1. classpath*:将所有的datasource.xml都加载进来。
    2. classpath:只加载按照顺序找到的第一个datasource.xml。

    另外,classpath*:只能用在配置文件中,而不能作为getResource的参数。


    2、读取文件

    在很多时候文件路径是个比较头疼的问题,如果直接写死的话换个地方就运行不了了,那么比较简单的办法是用getResourcegetResourceAsStream,基本上能满足需求了:

    1. 以'/'开头的话则从classpath开始查找。
    2. 不以'/'开头的话以当前目录开始查找。

    另外如果是ServletContext.getResourceAsStream则默认从WebAPP下查找。


    3、maven中scope的作用

    在maven中有下面几种范围:

    1. compile:编译时使用,并且会被打入目标包中(默认值)。
    2. provided:容器会提供,不必打到jar包里面(比如写代码的时候需要Servlet API,但是没必要打到war包里面)。
    3. runtime:在运行和测试的时候需要。
    4. test:测试时需要。
    5. system:和provider类似,区别时要指定一个本地的jar包。

    最近在做jstorm上的应用,提交任务的时候报错:有多个default.yaml文件。将jstorm对应的jar改成provided即可解决。


    4、在非web应用中初始化日志

    周所周知在web应用中一般都通过Log4jConfigListener来进行初始化,首先会从context-param中获取到参数,然后进行设置:

    public static void initLogging(String location, long refreshInterval) throws FileNotFoundException {
    	String resolvedLocation = SystemPropertyUtils.resolvePlaceholders(location);
    	File file = ResourceUtils.getFile(resolvedLocation);
    	if (!file.exists()) {
    		throw new FileNotFoundException("Log4j config file [" + resolvedLocation + "] not found");
    	}
    	if (resolvedLocation.toLowerCase().endsWith(XML_FILE_EXTENSION)) {
    		DOMConfigurator.configureAndWatch(file.getAbsolutePath(), refreshInterval); // XML格式的配置文件
    	} else {
    		PropertyConfigurator.configureAndWatch(file.getAbsolutePath(), refreshInterval);// properties格式的配置文件
    	}
    }
    

    那么简单了,在非web的应用中我们调用DOMConfigurator或者PropertyConfigurator进行设置。


    5、dtd和xsd

    很多配置文件都是用xml来描述,然后文件的格式一般由dtd或者xsd来描述(主要是用来描述元素和标签),他们的区别是:

    1. dtd:不支持扩展和命名空间。
    2. xsd:可扩展、支持命名空间、支持属性组。

    运行应用的机器并不总是可以联网的,如果不联网的情况下在spring的配置文件中配置http://www.springframework.org/schema/beans/spring-beans.xsd可能会有问题,解决方法也很简单,在spring的jar包中其实已经有对应的xsd文件,引用即可:classpath:/org/springframework/beans/factory/xml/spring-beans-2.5.xsd。


    6、jvm常用参数设置

    最近经常遇到PermGen不够的问题,原因是默认启动的时候持久代太小了,通过设置-XX:MaxPermSize=512m即可解决,列一些非常常用的jvm参数设置:

    1. -XX:MaxPermSize=128m:设置PermGen的最大值为128MB。
    2. -XX:PermSize=56m:设置PermGen初始值为56MB。
    3. -Xms1024m:设置堆初始大小为1024MB。
    4. -Xmx2048m:设置堆最大值为2048MB。

    7、

    问题排查&解决

    ----- updating -----

  • 相关阅读:
    一个通用的事件监听函数全集
    单应性矩阵
    opencv姿态估计
    opencv相机标定
    Harris角点
    盒滤波Box Filter
    win10+vs2015+pcl1.8.1安装配置
    图像元素遍历
    阈值分割
    二叉树的层次遍历
  • 原文地址:https://www.cnblogs.com/antispam/p/4240265.html
Copyright © 2011-2022 走看看