<param-value> UTF-8</param-value>
</init-param>
<filter-mapping>
<filter-name> xxxx</filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
filter-mapping可映射到一个或者多个servlet或JSP文件,<url-pattern>可映射到任意特征的URL。
15、对象的初始化
16、Error.jsp
17、Properties
Properties实现了Map接口,是线程安全的。(setProperties方法中有synchronized)
18、\和/
19、日志
日志的级别大小关系:ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF
log4j建议只使用四个级别:优先级从高到低:ERROR>WARN>INFO>DEBUG
20、反射(xml、)
反射破坏了原有的访问修饰符的访问限制。
21、内联函数
java中的内联函数从空间换时间,===》递归适宜用内联(原理是使用方法时不需要再调用)
final关键字会告诉编译器,可以将final函数视为内联函数,但编译器最终会权衡性能再做确定。final有助于锁定方法和提高效率。缺点是占用空间,消耗内存。
22、Volatile
volatile修饰成员变量被线程访问时,都强迫线程从共享内存中重读该成员变量的值。而且,当其值发生变化,强迫线程将变化之后的值写到共享内存中。故两个线程总是能看到同一个值。如此一来,一个volatile对象的引用可能为null,(提示该变量的值已经改变,需要从原始内存地址中读取该值)
使用地方:1.中断服务程序中修改的供其他程序检测的变量加volatile
多任务环境下各任务间共享的标志应该加volatile
存储器映射的硬件寄存器通常也要加volatile说明,因为每次读写都有不同意义
另外:还要考虑数据的完整性(相关联的几个标志读了一半被打断重写)
通过关中断来实现,2.可以禁止任务调度,3.依靠良好的硬件设计,
Volatile修饰的作用:
1)可见性:指在一个线程中对该变量的修改会马上由工作内存(高速缓存、独享内存)写会到主内存(共享内存),马上反应在其它线程读取中。
2)禁止指令重排序优化:由于编译器优化,在实际执行中语句的执行顺序可能不同,这在单线程执行可保证结果一致,在多线程中可能导致严重的问题,volatile可以防止代码优化。
在JDK1.5之前,volatile不起作用,双重检查锁形式的单例模式无法保证线程安全,??
23、ThreadLocal:线程局部变量
java.lang.ThreadLocal是TLS技术实现。
线程局部变量不能解决静态变量的存取冲突,故变量仍需同步。可解决多线程中对同一变量的访问冲突。
24、transient
25、JVM相关(类的加载和执行)
1、JVM的功能:
a.通过ClassLoader寻找和装载class文件
b.解释字节码成为指令并运行,提供class文件运行环境
c.进行运行期间垃圾回收
d.提供与硬件交互的平台
2、垃圾回收:
1)虚拟器线程等待JVM到达安全点之后出现,操作必须在独立的线程里执行,因为当堆修改无法进行时,线程需要JVM位于安全点。VMThread包括stop-the-world垃圾回收、线程栈dump、线程暂停、线程偏向锁(basicObjectLock)解除。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66099-7.html
是不是很熟悉的一句广告语
它来巡航