RMI接口的参数和返回值是pass-by-value还是pass-by-reference?
参数: Parameters and RMI In RMI objects that implement the Remote interface are passed by reference All other parameters are passed by copy 返回值: 还不知道
参数: Parameters and RMI In RMI objects that implement the Remote interface are passed by reference All other parameters are passed by copy 返回值: 还不知道
java.io.OutputStream out=new java.io.FileOutputStream(fileName); java.io.Writer wr=new java.io.OutputStreamWriter(out,"UTF-8");
1.不要依赖finalization来达到程序的正确性 2.不要依赖线程的优先级比较来达到程序的正确性
菜鸟 15:59:27 如果 class loader在两个JAR包里发现了同名的类文件,那它装载哪一个? 大师w 16:03:50 看谁优先,装载谁 菜鸟z 16:03:57 啥叫优先? 菜鸟 16:01:53 同问 大师w 16:04:01 如果优先级一样,随机装载 大师w 16:04:10 class loader有3个优先级 菜鸟z 16:04:17 编译时间? 大师w 16:04:33 系统核心级别、系统class path,手动class path 大师w 16:05:06 如果是自己写的class loader,可以指定装载顺序的
1. new Xxx() 2. 通过反射机制中的newInstance()方法 3. clone() 4. 反序列化
因为Class.forName除了像ClassLoader一样装载驱动类,还会初始化这个驱动类。初始化的一个重要环节就是调用类的静态方法(static代码块)。驱动类在静态方法里将自己注册到DriverManager,只有注册了,驱动才能发生作用。因此,不用Class.forName(驱动类),就不会初始化这个类,这个驱动就会出错,使用驱动的程序就不能正确地执行
1.应该把所有运行时配置(如轮询时间,而spring的接口注入则属于开发时配置)都集中到同一个根目录里,这样可以方便部署。一个Release中,有一部分是跟运行的环境有关的(如数据库地址、日志文件名等),有的是无关的(class文件,jsp文件,spring的接口注入等),我们把有关的部分集中一个根目录里,与无关的部分彻底分离,这样在部署时,无关的部分痛痛快快地用脚本做一次全量复制就行了 2. 如果一份程序的多个副本部署在多台机器上,除了要把运行环境相关部分和无关部分分开,对相关部分,也要区分各程序相同的部分和各程序不同的部分,如数据库的配置就各程序相同的,而日志文件路径和各采集器的配置就各不相同。还有一种配置,只在一个或多个程序中有意义并在这些程序中相同,但在其他程序中用不上,也可以视为各程序相同部分。通过这种区分,在部署时,对相同部分只须设定一次,然后用脚本复制多份即可
就是在实现类中设置一个List变量,当run()里面发生异常时,把这个异常装到List中去。然后等线程结束时,再来检验这个List
request.getRequestDispatcher("/403.jsp").forward(request, response);