读 [深入Java虚拟机, v2]

组成Java沙箱的基本组件如下:
1.类装载器结构

双亲委派模式

2.Class文件检验器

4趟扫描

3.内置于Java虚拟机(及语言)的安全性 —- 内存分配由虚拟机决定

类型安全的引用转换
结构化的内存访问方法(无指针)
自动垃圾收集
数组边界检查
空引用检查

4.安全管理器及Java API

类装载器可以调用Policy.getPolicy()来获得一个当前有效的Policy对象的引用.然后它们可以调用Policy对象的 getPermission()方法,传入一个CodeSource,从而得到和那个CodeSource对应的Permission对象的 PermissionCollection.类装载器然后可以使用这个从Policy对象中得到的PermissionCollection来帮助判断应 该给导入的代码授予什么权限.
利用类装载器创建的CodeSource和它从Policy对象得到的PermissionCollection,类装载器可以实例化一个新的 ProtectionDomain对象.它通过将合适的ProtectionDomain对象传递给defineClass()方法,
来将这段代码放到一个保护域中.

implies()方法

是在Permission类以及PermissionCollection类和ProtectionDomain类中声明的.implies()将一个Permission对象作为它唯一的参数,返回一个布尔值.
Permission类的implies()方法确定由Permission对象所代表的权限,是否在本质上隐含在由一个不同的Permission对象所代表的权限中.
PermissionCollection和ProtectionDomain的implies()方法确认了一个被传递的Permission对象是否 包含或隐含在封装在PermissionCollection或ProtectionDomain中的Permission对象集合中.
如读取/tmp目录下所有文件的权限隐含了读取/tmp目录下特定文件/tmp/f的权限,但反过来不成立.

By javafuns on August 30, 2007 at 00:20 · Views: 414 · Permalink · RSS · Leave a comment
Categorized in: Java · Tagged with: 

关于Java中各种修饰符与访问修饰符的说明

网上,作者不详
类:访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称

(访问修饰符与修饰符的位置可以互换)

访问修饰符
名称 说明 备注

public

可以被所有类访问(使用)

public类必须定义在和类名相同的同名文件中

package

可以被同一个包中的类访问(使用)

默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中

修饰符
名称 说明 备注

final

使用此修饰符的类不能够被继承

abstract

如果要使用abstract类,之前必须首先建一个继承abstract类的新类,新类中实现abstract类中的抽象方法。

类只要有一个abstract方法,类就必须定义为abstract,但abstract类不一定非要保护abstract方法不可

变量

l Java中没有全局变量,只有方法变量、实例变量(类中的非静态变量)、类变量(类中的静态变量)。

l 方法中的变量不能够有访问修饰符。所以下面访问修饰符表仅针对于在类中定义的变量。

l 声明实例变量时,如果没有赋初值,将被初始化为null(引用类型)或者0、false(原始类型)。

l 可以通过实例变量初始化器来初始化较复杂的实例变量,实例变量初始化器是一个用{}包含的语句块,在类的构造器被调用时运行,运行于父类构造器之后,构造器之前。

l 类变量(静态变量)也可以通过类变量初始化器来进行初始化,类变量初始化器是一个用static{}包含的语句块,只可能被初始化一次。

访问修饰符
名称 说明 备注

public

可以被任何类访问

protected

可以被同一包中的所有类访问

可以被所有子类访问

子类没有在同一包中也可以访问

private

只能够被当前类的方法访问

缺省

无访问修饰符

可以被同一包中的所有类访问

如果子类没有在同一个包中,也不能访问

修饰符
名称 说明 备注

static

静态变量(又称为类变量,其它的称为实例变量)

可以被类的所有实例共享。

并不需要创建类的实例就可以访问静态变量

final

常量,值只能够分配一次,不能更改

注意不要使用const,虽然它和CC++中的const关键字含义一样

可以同static一起使用,避免对类的每个实例维护一个拷贝

transient

告诉编译器,在类对象序列化的时候,此变量不需要持久保存

主要是因为改变量可以通过其它变量来得到,使用它是为了性能的问题

volatile

指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确的处理

方法

访问修饰符 修饰符 返回类型 方法名称(参数列表)throws 违例列表

l 类的构造器方法不能够有修饰符、返回类型和throws子句

l 类的构造器方法被调用时,它首先调用父类的构造器方法,然后运行实例变量和静态变量的初始化器,然后才运行构造器本身。

l 如果构造器方法没有显示的调用一个父类的构造器,那么编译器会自动为它加上一个默认的super(),而如果父类又没有默认的无参数构造器,编译器就会报错。super必须是构造器方法的第一个子句。

l 注意理解private构造器方法的使用技巧。

访问修饰符
名称 说明 备注

public

可以从所有类访问

protected

可以被同一包中的所有类访问

可以被所有子类访问

子类没有在同一包中也可以访问

private

只能够被当前类的方法访问

缺省

无访问修饰符

可以被同一包中的所有类访问

如果子类没有在同一个包中,也不能访问

修饰符
名称 说明 备注

static

静态方法(又称为类方法,其它的称为实例方法)

提供不依赖于类实例的服务

并不需要创建类的实例就可以访问静态方法

final

防止任何子类重载该方法

注意不要使用const,虽然它和CC++中的const关键字含义一样

可以同static一起使用,避免对类的每个实例维护一个拷贝

abstract

抽象方法,类中已声明而没有实现的方法

不能将static方法、final方法或者类的构造器方法声明为abstract

native

用该修饰符定义的方法在类中没有实现,而大多数情况下该方法的实现是用CC++编写的。

参见SunJava Native接口(JNI),JNI提供了运行时加载一个native方法的实现,并将其于一个Java类关联的功能

synchronized

多线程的支持

当一个此方法被调用时,没有其它线程能够调用该方法,其它的synchronized方法也不能调用该方法,直到该方法返回

接口

访问修饰符 interface 接口名称 extends 接口列表

l 接口不能够定义其声明的方法的任何实现

l 接口中的变量总是需要定义为“public static final 接口名称”,但可以不包含这些修饰符,编译器默认就是这样,显示的包含修饰符主要是为了程序清晰

访问修饰符
名称 说明 备注

public

所有

无访问修饰符(默认)

同一个包内

 

By javafuns on August 27, 2007 at 23:57 · Views: 617 · Permalink · RSS · Leave a comment
Categorized in: Java · Tagged with: 

uml建模的若干步骤 - 读《inside XML》

UML建模可归纳为:
静态建模:侧重于描述系统的状态
动态建模:侧重于描述对信息的处理

用例:通常使用用例来建立静态模型,用例模型用于需求分析阶段。
1。获取执行者。
*谁使用系统的主要功能(主要使用者)
*谁需要系统支持他们的日常工作
*谁来维护、管理,使系统正常工作(辅助使用者)
*系统需要操纵那些硬件
*系统需要与其它哪些系统交互
*对系统产生的结果感兴趣的人或事物
2。获取用例
*执行者需要系统提供哪些功能
*执行者需要读、产生、修改、删除或存储的信息有哪些类型
*必须提醒执行者注意的系统事件有哪些,或者执行者必须提醒系统的事件有哪些。
怎样把事件转化为用例中的功能
*为了完整描述用例,还需要知道执行者的某些典型功能能否被系统自动实现
还有一些不针对执行者的问题(即针对整个系统的问题)
*系统需要何种输入输出?输入从何处来?输出到何处去?
*当前运行系统的主要问题

静态建模:
1。命名事物
2。分类
3。寻找关系
4。定义特性:静态模型的各种数据类型该如何组织

动态建模:
动态建模主要设计的内容是系统中信息的流动和处理,有如下几种动态建模方法:
1。处理模型和工作流模型
2。数据流模型
3。对象模型
4。对象生存周期历史
5。使用案例
6。对象交互图

By javafuns on August 27, 2007 at 23:56 · Views: 1,005 · Permalink · RSS · Leave a comment
Categorized in: Java · Tagged with: ,

HttpClient以jdbc realm方式的系统集成

下面的一段代码可以实现用HttpClient集成一个web app到另一个web app中,前提是第一个web app的认证是服务器来作的,且方式为basic(在web.xml中设置<auth-method>BASIC</auth- method>)。当然,用HttpClient也可能集成其它认证方式的web app,但尝试没有成功。

try{
    HttpClient client = new HttpClient();
    client.getHostConfiguration().setHost(”hostname”, “8080″, “https”);
    client.getState().setCookiePolicy(CookiePolicy.COMPATIBILITY);
    // 将realm名称设置为null,表明对所有的realm均有效。
    client.getState().setCredentials(null, “hostname”, new UsernamePasswordCredentials(”userName”, “password”));
    // 如果想保持这种状态,可以将这个client放到session。在其它需要用到的时候
    // 就可以取出来使用。
    session.setAttribute(”HttpClient”, client);
} catch (Exception e) {
    Log.get().error(”An exception is thrown, details as below :n” + e.getMessage());
}
By javafuns on August 27, 2007 at 23:34 · Views: 832 · Permalink · RSS · Leave a comment
Categorized in: Java · Tagged with: 

创建了一个支持播放列表的MP3播放器插件

All rights are reserved by original author, please see its licence for detail.

See its demo named My iTunes Store at right panel on my blog

Download here

Installation:

1.untar it and put in wp_content/plugins

2.check to modify the url used in coolplayer.php if necessary

3.go to Admin, activate it in Plugins tab

4.write the code as below:

<p id=”player2″><a href=“http://www.macromedia.com/go/getflashplayer”>Get the Flash Player</a> to see this player.</p>

5. ok, that’s all

Optional: it is only available if your blog supports widget

6. edit your wp_includes/widget.php file, add the following code in function wp_widgets_init():

    $class[’classname’] = ‘widget_recent_entries’; //for css

    wp_register_sidebar_widget(’iTunes-Store’, __(’My iTunes Store’), ‘wp_widget_itunes’, $class);

    wp_register_widget_control(’iTunes-Store’, __(’My iTunes Store’), ‘wp_widget_itunes’, $dims90);

7. at last, add a new function called wp_widget_itunes like this:

function wp_widget_itunes($args) {

    extract($args);

    $title=”My iTunes Store”;

echo $before_widget . $before_title . $title . $after_title;

    echo ‘


’;

    echo $after_widget;

}
By javafuns on August 24, 2007 at 23:59 · Views: 1,001 · Permalink · RSS · Leave a comment
Categorized in: Scripts · Tagged with: ,

sun的全名

sun起源于斯坦福大学,它的全名是Stanford University Network

By javafuns on August 9, 2007 at 23:58 · Views: 717 · Permalink · RSS · Leave a comment
Categorized in: Java · Tagged with: 

How Servlet Containers Work

by Budi Kurniawan Translated by Javafuns

05/14/2003

编辑注: 在这个系列中, 本文和上一篇, “How Web Servers Work,” 是Tomcat 内部工作原理的指南书籍 How Tomcat Works 的节选. 如果你还没有读过上一篇, 那么赶紧先去读读吧; 那篇文章告诉了你一些有用的背景信息. 在本文里, 你会学习到怎样去创建2个 servlet 容器. 本书附带的程序可以下载. 如果你有兴趣的话, 在限定的时间内, 作者的网站上允许下载本书的其它部分.

本文讲解了一个简单的 servlet 容器是怎样工作的. 将会给您展示2个 servlet 容器应用程序; 第一个尽可能简单, 第二个则在第一个基础上做了美化. 我不想把第一个容器做的完美的唯一原因是让它尽可能保持简单. 更多复杂的 servlet 容器, 包括 Tomcat 4 和 5, 则在 How Tomcat Works 的其它章节讨论.

Read more »

By javafuns on July 30, 2007 at 09:16 · Views: 402 · Permalink · RSS · Leave a comment
Categorized in: Java · Tagged with: 

How Java Web Servers Work

by Budi Kurniawan Translated by Javafuns

04/23/2003

编辑批注: 本文改编自 Budi 个人出版的关于TOMCAT内部实现原理的书.你可以到他的网站上找到更多这方面的信息.

web server 也叫 Hypertext Transfer Protocol (HTTP) server, 因为它使用的是HTTP协议与客户端通信, 通常是指那些 web 浏览器. 基于 Java 的 web server 使用2个重要的类, java.net.Socket 和 java.net.ServerSocket, 进行HTTP消息通信. 因此,本文先讨论HTTP协议和这2个类. 之后, 我会讲解本书附带的一个简单的 web server 程序.
The Hypertext Transfer Protocol (HTTP)

HTTP 协议能够让 web servers 和浏览器通过 Internet 发送和接收数据. 它是一种请求-响应式的协议—客户端发起一个请求,服务器响应这个请求. HTTP 使用可信赖的 TCP 连接, 默认使用的是 TCP 的 80 端口. HTTP协议的第一个版本是 HTTP/0.9, 然后是 HTTP/1.0. 当前版本是由 RFC 2616(.pdf) 定义的 HTTP/1.1.

这部分简短的介绍了一下 HTTP 1.1; 足可以让你理解 web server 应用程序发出的消息. 如果你有兴趣了解更多的细节,请阅读 RFC 2616.

使用 HTTP 的时候, 客户端总是通过建立一个连接来开始一个事务,然后发送一个 HTTP 请求. server 不会主动联系客户端,也不会建立一个回调连接到客户端(is in no position to contact a client or to make a callback connection to the client). 客户端和服务器都可以提前中止一个连接. 例如, 当使用 web 浏览器的时候, 你可以点击浏览器上的 停止 按钮结束文件的下载过程, 有效关闭与 web 服务器的 HTTP 连接.

Read more »

By javafuns on July 25, 2007 at 09:13 · Views: 568 · Permalink · RSS · Leave a comment
Categorized in: Java · Tagged with: 
  • Highest Rated

  • My PicasaPhotos

    IMG_0636.JPG

    IMG_0864.JPG

    g-fox.jpg

  • RSS My del.icio.us

  • My RSS