通过Java的static,理解JavaScript的prototype

先看两段代码:

Java 代码

public class Dog {
  public static final String type="golden retriever";

  public Dog(String name){
    System.out.println(name + " is a " + type + " dog.");
  }
  
  public static void main(String[] args){
    Dog dog = new Dog("tom_1");
    dog = new Dog("tom_2");
  }
} 

JavaScript 代码

function Dog(name){
  alert(name+ " is a " + this.type +" dog");
}

Dog.prototype.type="golden retriever";

var dog = new Dog("tom_1");
dog = new Dog("tom_2");

共性:

1、都是在构造方法之前就已经初始化了;

2、所有实例对象共享同一个变量;

在对List做remove操作时抛出java.lang.UnsupportedOperationException

原因:
那个List是通过Arrays.asList()这个方法构造的,一直以为返回的就是一个ArrayList,今天查看了源码发现错了,是Arrays里面一个名叫ArrayList的私有类。

public class Arrays {
...
public static  List asList(T... a) {
	return new ArrayList(a);
}

private static class ArrayList extends AbstractList
	implements RandomAccess, java.io.Serializable
{
...
}
...
}

它也继承自AbstractList,只是没有实现remove方法,而AbstractList类中remove方法默认是抛java.lang.UnsupportedOperationException异常的。

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
...
public E remove(int index) {
	throw new UnsupportedOperationException();
}
...
}

Notes: glassfish 出现__admingui/common/index.jsp not found 的问题处理

这几天出现了一个奇怪的现象,glassfish的管理端“无缘无故”的登录不了了,查看server.log见以下错误:

File "%2Fopt%2Fglassfish3%2Fglassfish%2Flib%2Finstall%2Fapplications%2F__admingui%2Fcommon%2Findex.jsp" not found|#]

整理下:

File "/opt/glassfish3/glassfish/lib/install/applications/__admingui/common/index.jsp" not found|#]

这个是管理端的首页,更换了好几个全新的glassfish版本在服务器上的现象依旧,本地跑却一点儿事情没有,实在是不明白原因。

最后在这里:http://www.java.net/node/699754 得到了提示,一个叫 dcam 的家伙说:
继续阅读Notes: glassfish 出现__admingui/common/index.jsp not found 的问题处理

深入理解JVM

带着问题去学习,jvm分析

[root@localhost ~]# jstat -gcutil 3461 2000
S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
0.00   0.00  23.72   6.21  53.61   9     1.302     3    5.263    6.564
0.00   0.00  23.72   6.21  53.61   9     1.302     3    5.263    6.564
0.00   0.00  23.72   6.21  53.61   9     1.302     3    5.263    6.564
0.00   0.00  23.72   6.21  53.61   9     1.302     3    5.263    6.564
0.00   0.00  23.72   6.21  53.61   9     1.302     3    5.263    6.564

上面是一段通过JVM内建的指令jstat对一个Java应用程序的资源和性能进行实时监控的记录,“3461”是Java应用程序的进程ID,“2000”是指每隔2秒钟采集一次监控数据。

各个数据的含义:
继续阅读深入理解JVM

在web页面中提供打印功能

最近一个项目需要在页面里面提供打印功能,这个功能似乎看起来很不起眼,因为在目前各大网站的文章页面都有打印功能,之前的项目也使用过,而且很简单就一句话:

window.print();

调用本地的打印接口,很方便,也很轻量,主流浏览器支持非常好,用户只要点个按钮或者链接就基本上搞定。 但是也有问题,比如不能精确分页,不能设置纸型等。

除此之外,还有两种常见的基于网页的打印方式: 继续阅读在web页面中提供打印功能

打开浏览器来编程,CodeRun – 基于web的IDE开发工具

作为开发人员,IDE应该是再熟悉不过了,每当我们编程时大部分时间是通过IDE来辅助的,但是有时候刚好手头的这台电脑没有安装IDE,闲暇之余想写点东西的想法就因此破灭了。

当然上面的可能只是借口,但是这种不方便还是存在的,OK,现在给你推荐一个在线的IDE – CodeRun

CodeRun 是一个跨平台的集成开发环境,它立足于云计算的设计思路,方便开发者在浏览器端便可以轻松开发、调试和部署网络应用程序。

目前,CodeRun 主要支持一些Web开发语言,包括C#/.NET (3.5), PHP (5.1), JavaScript, HTML 以及 CSS等,其中C#项目包括ASP.NET, WCF, Silverlight 和 WPF, MVC等项目,JavaScript脚本项目支持目前流行的JQuery, ExtJS, YUI等框架,其中数据库支持SQL Server 2005 和 Amazon SimpleDB。

具体的支持情况,请参见下表:(点击可以放大

比较吸引人的一块是,CodeRun可以直接在线Run和Debug,很不错!

不知道啥时候可以支持Java呢?

Java HTML 解析器:jsoup

jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。

比起之前用的HTMLParser方便很多,而且更轻便。

简单一句就可以搞定HTML过滤:

String  tt ="你访问的是<a href='http://www.quanlei.com/' target='_blank'>权记</a>网站。";
System.out.println(Jsoup.parse(tt).text());

同时还有其他一些更好的支持,比如:

1、对 HTML文档中链接可以进行处理。
2、对可能怀有恶意的HTML进行处理。
3、对 HTML 修改节点的属性、内容等。

更多内容,请查看 jsoup 或者 http://www.oschina.net/p/jsoup

利用JSON插件进行数据交换格式(includeProperties和excludeProperties用法)

JSON(Java Script Object Notation),是一种语言无关的数据交换格式。 JSON插件是Structs 2 的Ajax插件,通过利用JSON插件,开发者可以很方便,灵活的利用Ajax进行开发。

Json是一种轻量级的数据交换格式,JSon插件提供了一种名为json的Action ResultType 。一旦为Action指定了该结果处理类型,JSON插件就会自动将Action里的数据序列化成JSON格式的数据,并返回给客户端物理视图的JavaScript。简单的说,JSON插件允许我们在JavaScript中异步的调用Action。

而且Action不需要指定视图来显示Action的信息显示而是由JSON插件来负责具体将Action里面具体的信息返回给调用页面。Json的数据格式可简单如下形式: person = { name: ‘Jim’,age: 18,gender: ‘man’}。

如果action的属性很多,我们想要从Action返回到调用页面的数据。这个时候配置includeProperties或者 excludeProperties拦截器即可。而这2个拦截器的定义都在struts2的json-default包内,所以要使用该拦截器的包都要继承自json-default。

<struts>
    <constant value="spring" name="struts.objectFactory" />
    <include file="struts-admin.xml"></include>
    <package name="default" extends="json-default">
        <action class="com.person.PersonAction" name="person" method="view">
            <result type="json">
                <param name="includeProperties">person\.name,persoon\.age,person\.gender </param>
            </result>
        </action>
    </package>
</struts>

继续阅读利用JSON插件进行数据交换格式(includeProperties和excludeProperties用法)