【基础知识】输入输出流

版权声明:转载请注明出处 https://blog.csdn.net/qq_38537286/article/details/82769064

WEB程序发布到Tomcat里面运行,首先是执行Tomcat org.apache.catalina.startup.Bootstrap类,这时候的类加载器是ClassLoader.getSystemClassLoader(),而我们后面的WEB程序,里面的jar、resources都是由Tomcat内部来加载的,所以在代码中动态加载jar、资源文件的时候,首先应该是使用Thread.currentThread().getContextClassLoader()。如果使用Test.class.getClassLoader(),可能会导致和当前线程所运行的类加载器不一致(因为Java天生的多线程)。 

  1. 关于Thread.currentThread().getContextClassLoader()
    public class MessageReader {
    	private transient static final Logger logger = Logger.getLogger(MessageReader.class);
    	public static Properties properties = new Properties();
    	static {
    		try {
    			ClassLoader loader = Thread.currentThread().getContextClassLoader();
    			URL url = loader.getResource("shared-config.properties");
    			properties.load(url.openStream());
    		} catch (IOException e) {
    			logger.error("properties reader error");
    			e.printStackTrace();
    		}
    	}
    }
  2. public Method[] getDeclaredMethods()返回类或接口声明的所有方法,包括它所实现接口的方法,但不包括继承的方法。public Method[] getMethods()返回类的所有public方法,包括它所实现接口的方法、其继承类的公用方法。
  3. Java流(Stream)、文件(file)和IO
  4. FileInputStream提供了对文件的字节读取;FileReader提供了对文件的字符读取;FileWriter提供了对文件的字符写入;File提供了对文件的基本操作,包括对删除,文件路径等操作。
  5. 五个基本原则: 
    单一职责原则(Single-Resposibility Principle):一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。 
    开放封闭原则(Open-Closed principle):软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的。 
    Liskov替换原则(Liskov-Substituion Principle):子类必须能够替换其基类。这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础。 
    依赖倒置原则(Dependecy-Inversion Principle):依赖于抽象。具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。 
    接口隔离原则(Interface-Segregation Principle):使用多个小的专门的接口,而不要使用一个大的总接口
  6. mvn install -DskipTests

猜你喜欢

转载自blog.csdn.net/qq_38537286/article/details/82769064