易截截图软件、单文件、免安装、纯绿色、仅160KB

Effective Java 学习笔记(15)

一个不可改变(immutable)的类,顾名思义,就是其实例不能改变,即里面所有的信息在创建时就赋值,在其生命周期中其值不变。
使用不可改变的类的优点在于,设计简单,易于实现和使用,具体来讲,它的状态机很简单,只有一个状态。它是线程安全,能够自由的被共享,能够通过静态工厂模式尽可能复用已经创建出来的对象,也不用为它写clone或是拷贝构造函数,不可改变的类也便于维护,是系统的良性基石。
其唯一的缺点就是,它必须为不同的值分别创造不同的对象。
使一个类为immutable,要做到以下几点。
1.不要提供任何可以修改对象中数据的方法。
2.确保此类不会被继承。这个可以防止子类不小心对父类中的数据进行更改。
3.使所有的字段为final.
4.使所有的字段为private.
5.确保所有字段中的可被改变的对象的引用不被外界获得。
但要注意的当实现序列化的时候,如果一个不可改变类中包含可改变类的引用,就必须提供一个显式的readObject或readResolve,或使用ObjectOutputStream.writeUnshared和OjbectInputStream.readUnshared方法。否则就攻击者就可能创建一个可以改变的实例。
总结:除非有足够的理由,应该将类设计为immutable。
         如果一个类不能设计成immutable,那么尽量减少可改变的字段。


相关文档:

Java Web 第三天 Servlet处理响应

一、
HTTP
响应的格式
响应行:
HTTP
版本、响应码、响应描述
响应头
空行
消息体
HTTP
默认的文本编码为:
ISO-8895-1
二、
响应码的设置
1.      

什么是响应码
响应码位于
HTTP
响应的响应行中,他用来描述当前
Servlet
的一些重要信息。常见的响应码有
200.302 ......

Java Web 第六天 作用域及监听器

一、
web
的三种作用域
ServletContext(
上下文
)
:整个
web
应用程序,线程不安全
HttpSession(
会话
)
:一个会话交互过程
ServletRequest(
请求
)
:一次请求过程
属性操作方法:
      

void setAttribute(String,Object)
       ......

Java Web 第10天 EL和JSTL 1

一、
什么是
EL
?为什么要使用
EL

EL
,即
JSP
表达式语言(
expression_r_r Language
),它允许我们使用更简洁、更易读懂的语法来取代难以维护的
Java
脚本以及笨拙的
jsp:userBean,jsp:getProperty
,他让在
JSP
中完全消除了
Java
代码。
EL
的使用能够让
JSP
页面更有可读性,输出的嵌套的 ......

Java 希尔排序(缩小增量排序)

      希尔排序算法能够成立的基础是数组也接近有序直接插入排序算法的时间效率越高。希尔排序算法是在不减少数组元素的个数情况下将数组分组,从而将排序好的数插入到新数组中去。关键在于其思想。
算法实现如下:
/**
* 希尔排序又称为缩小增量排序
* @param a 用于排序的数组
* @pa ......

几个重要的JAVA命令详解(转载)


javac
 
用法:javac <选项> <源文件>
其中,可能的选项包括:
  -g                                    ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号