Java API中文版下载
2006-12-20 21:27
Java API中文版下载

Java API Docs是学习和使用Java语言中最经常使用的参考资料之一,完整的Java API文档中文版文档共包括32个类库。但是长期以来此文档只有英文版和日文版,对于中国地区的Java开发者来说相当的不便。通过Sun公司的翻译团队10个月的不懈努力以及广大网友的热心支持, Java API中文文档的翻译工作如期完成,呈现到中国广大的Java用户和学习者面前。

Sun 官方下载地址:(推荐)
http://gceclub.sun.com.cn/Java_Docs/html_zh_CN.zip

 p.s:文件的生成日期都是2006-06-22,比我原来下的新。好像多了些东东,自己看啦

中文API在线阅读(有更新):
http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html

API 文档中文版技术论坛
http://gceclub.sun.com.cn/NASApp/sme/jive/forum.jsp?forum=35


JDK 1.5.0中文版CHM:(推荐)
http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/JDK_API_1_5_zh_CN.CHM 

API资源:
https://jdk-api-zh-cn.dev.java.net/

英文版CHM
http://java.sun.com/docs/windows_format.html 

 

 sun中文站点:
http://cn.sun.com/

中文技术社区:(可找到很多资源,推荐!)
http://gceclub.sun.com.cn/ 

文档:
http://docs.sun.com/app/docs

英文在线文档:
http://java.sun.com/j2se/1.5.0/docs/api/index.html

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1509986

posted @ 2011-12-25 23:11 Aaron li 阅读(63) 评论(0) 编辑

$("#id").attr("tagName");

$("#id").get(0).tagName;

$("#id")[0].tagName;

posted @ 2011-09-09 11:25 Aaron li 阅读(11) 评论(0) 编辑

如果没有设置loadOnStartup,则第一次请求的时候实例化

分三种情况:
loadOnStartup < 0
即负数的情况下,web容器启动的时候不做实例化处理,servlet首次被调用时做实例化
这种情况和没有设置loadOnStartup是一样的。
loadOnStartup > 0
web容器启动的时候做实例化处理,顺序是由小到大,正整数小的先被实例化
loadOnStartup = 0
web容器启动的时候做实例化处理,相当于是最大整数,因此web容器启动时,最后被实例化

 

servlet实例化 解惑

本来一直以为 servlet是在容器启动的时候就实例化的,可是后来仔细想过,如果有1千个servlet,那服务器启动的时候就要实例化一千个类,那就是要在内存(堆中)中创建一千个对象,一次创建这么多对象,对于内存(堆中)而言负载量相当的大,有可能就会出现《内存溢出》的异常,所以后来想想,应该是在请求的时候才去实例化的吧,这样的话,对于容器而言不用启动的时候就加载那么多东西,感觉这就是请求时才加载的根本原因吧,纯属个人见解,希望各位有不同见解的提出来,大家一起讨论。

 

servlet 销毁 解惑

jdk api 的定义

destroy方法在容器移除servlet 时执行,同样只执行一次。这个方法会在所有的线程的service()方法执行完成或者超时后执行,调用这个方法后,容器不会再调用这个servlet的方法,也就是说容器不再把请求发送给这个servlet。这个方法给servlet释放占用的资源的机会,通常用来执行一些清理任务

 

Servlet容器停止或者重新启动Servlet容器调用Servlet对象的destroy方法来释放资源

 

引用1            以下是jt   198952 在csdn上的原帖

 http://blog.csdn.net/jt198952/article/details/5656130

大多数程序员都知道Servlet的生命周期,简单的概括这就分为四步:servlet类加载--->实例化--->服务--->销毁。对这个过程只是肤浅了解下,对于servlet何时被销毁,还是不太情楚。下面我们描述一下Tomcat与Servlet是如何工作的,首先看下面的时序图.

 

1、Web Client 向Servlet容器(Tomcat)发出Http请求

2、Servlet容器接收Web Client的请求

3、Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中

4、Servlet容器创建一个HttpResponse对象

5、Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet对象

6、HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息

7、HttpServlet调用HttpResponse对象的有关方法,生成响应数据

8、Servlet容器把HttpServlet的响应结果传给Web Client

 

对于Servlet容器(Tomcat)与HttpServlet是怎样进行交互的呢,看下类图

Servlet的框架是由两个Java包组成的:javax.servlet与javax.servlet.http。在javax.servlet包中定义了所有的Servlet类都必须实现或者扩展的通用接口和类。在javax.servlet.http包中定义了采用Http协议通信的HttpServlet类。Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servlet都必须实现这个接口。

 

在Servlet接口中定义了5个方法,

其中3个方法代表了Servlet的生命周期:

1、init方法:负责初始化Servlet对象。

2、service方法:负责响应客户的请求。

3、destroy方法:当Servlet对象退出生命周期时,负责释放占用的资源。

 

一、创建Servlet对象的时机

1、Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。

2、在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、 HttpResponse对象,从而调用Servlet对象的service方法。

3、Servlet的类文件被更新后,重新创建ServletServlet容器在启动时自动创建Servlet,这是由在web.xml文件中为Servlet设置的<load-on-startup>属性决定

的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。

 

二、销毁Servlet对象的时机

1、Servlet容器停止或者重新启动:Servlet容器调用Servlet对象的destroy方法来释放资源。以上所讲的就是Servlet对象的生命周期。那么Servlet容器如何知道创建哪一个Servlet对象?

Servlet对象如何配置?实际上这些信息是通过读取web.xml配置文件来实现的。

我们来看一下web.xml文件中的Servlet对象的配置节信息

 

-------------------------------------------

<servlet>

<servlet-name>action<servlet-name>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/struts-config.xml</param-value>

</init-param>

<init-param>

<param-name>detail</param-name>

<param-value>2</param-value>

</init-param>

<init-param>

<param-name>debug</param-name>

<param-value>2</param-value>

</init-param>

<load-on-startup>2</load-on-startup>

</servlet>

 

<servlet-mapping>

<servlet-name>action</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

 

--------------------------------------------

 

下面对上面的配置节信息进行解析

servlet-name:Servlet对象的名称

servlet-class:创建Servlet对象所要调用的类

param-name:参数名称

param-value:参数值

load-on-startup:Servlet容器启动时加载Servlet对象的顺序

servlet-mapping/servlet-name:要与servlet中的servlet-name配置节内容对应

url-pattern:客户访问的Servlet的相对URL路径

 

当Servlet容器启动的时候读取<servlet>配置节信息,根据<servlet-class>配置节信息创建Servlet对象,同时根据<init-param>配置节信息创建HttpServletConfig对象,然后执行Servlet对象的init方法,并且根据<load-on-startup>配置节信息来决定创建Servlet对象的顺序,如果此配置节信息为负数或者没有配置,那么在Servlet容器启动时,将不加载此Servlet对象。当客户访问Servlet容器时,Servlet容器根据客户访问的URL地址,通过<servlet-mapping>配置节中的<url-pattern>配置节信息找到指定的Servlet对象,并调用此Servlet对象的service方法。

 

引用2

http://blog.sina.com.cn/s/blog_5198c7370100cwrz.html

Servlet的生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求、提供服务。
  在代码中,Servlet生命周期由接口javax.servlet.Servlet定义。所有的Java Servlet 必须直接或间接地实现javax.servlet.Servlet接口,这样才能在Servlet Engine上运行。Servlet Engine提供network Service,响应MIME request,运行Servlet Container。 javax.servlet.Servlet接口定义了一些方法,在Servlet 的生命周期中,这些方法会在特定时间按照一定的顺序被调用。如下图所示。

  servlet的定义及其生命周期

   Servlet的生命周期
  Servlet 如何被加载(Load)、被实例化(Instantiated)

  Servlet Engine 负责实例化和加载Servlet,这个过程可以在Servlet Engine 加载时执行,可以在Servlet 响应请求时执行,也可以在两者之间的任何时候执行(配置为load on start up的 servlet是在容器启动时被加载的)。

  Servlet如何被初始化(Initialized)

  Servlet Engine 加载好Servlet 后,必须要初始化它。初始化时Servlet 可以从数据库里读取初始数据,建立JDBC Connection,或者建立对其他有价值的资源的引用。

  在初始化阶段,Init( )方法被调用。这个方法在javax.servlet.Serlet接口中定义。Init( )方法以一个Servlet 配置文件(ServletConfig 型)为参数。Servlet configuration 对象由Servlet Engine 实现,可以让Servlet 从中读取一些name-value对的参数值。ServletConfig对象还可以让Servlet接受一个Servlet Context对象。

  Servlet 如何处理请求

  Servlet 被初始化以后,就处于能响应请求的就绪状态。每个对Servlet 的请求由一个Servlet Request 对象代表。Servlet 给客户端的响应由一个Servlet Response对象代表。当客户端有一个请求时,Servlet Engine 将ServletRequest 和ServletResponse对象都转发给Servlet,这两个对象以参数的形式传给Service方法。这个方法由javax.servlet.Servlet定义并由具体的Servlet 实现。

  Servlet还可以实现 ServletRequest 和ServletResponse接口。ServletRequest接口可以让Servlet 获取客户端请求中的参数,如form data、request信息、协议类型,等等。Servlet 可以从ServletInputStream流中读取request 数据。ServletResponse接口允许Servlet设置response headers和status codes。实现这个接口可以使Servlet能访问ServletOutputStream流用来向客户端返回数据。

  Servlet如何被释放

  Servlet Engine 没有必要在Servlet 生命周期的每一段时间内都保持Servlet的状态。Servlet Engine可以随时随意使用或释放Servlet。因此,你不能依赖Servlet class或其成员存储信息。当Servlet Engine判断一个Servlet应当被释放时(比如说Engine准备Shut down 或需要回收资源),Engine必须让Servlet 能释放其正在使用的任何资源,并保存持续性的状态信息。这些可以通过调用Servlet的destroy方法实现。 在Servlet Engine 释放一个Servlet 以前,必须让其完成当前实例的service方法或是等到timeout(如果Engine定义了timeout)。当Engine释放一个Servlet以后,Engine将不能再将请求转发给它,Engine必须彻底释放该Servlet并将其标明为可回收的(给garbage collection)。

  在Servlet API中最重要的是Servlet interface。所有的Servlets执行这个interface的方式有很多种:或者是直接的,或者通过extending这个class执行它,如 HttpServlet。这个Servlet interface 提供并安排Servlet与客户端联系的方法。Servlet 编写者可以在他们开发Servlet程序时提供更多一些或所有这样的方法。

  当一个Servlet接收来自客户端的调用请求时,它接收两个对象:一个是ServletRequest,另外一个是ServletResponse。这个ServletRequest class 概括从客户端到服务器之间的联系,而 ServletResponse class 概括从Servlet返回客户端的联系。

  ServletRequest interface 可以获取到这样一些信息,如由客户端传送的参数名称,客户端正在使用的协议,产生请求并且接收请求的服务器远端主机名。它也提供获取数据流的Servlet、ServletInputStream,这些数据是客户端引用中使用HTTP POST和PUT方法递交的。一个ServletRequest的子类可以让Servlet获取更多的协议特性数据。

  例如,HttpServletRequest 包含获取HTTP-specific头部信息的方法。ServletResponse interface 给出相应客户端的Servlet方法。它允许Servlet设置内容长度和回应的MIME类型,并且提供输出流ServletOutputStream,通过编写者可以发回相应数据。ServletResponse子类可以给出更多protocol-specific容量的信息。例如,HttpServletResponse 包含允许Servlet操作HTTP-specific头部信息的方法。

总结与运用:

在实践中可以配置一个load on start up 的Servlet,它随服务器启动而初始化,在其init方法中启用一些参数设置,例如把某些变量存入ServletContext,这样以后在其他Servlet中就可以获得该参数了;而在其destroy中写入一些资源回收的代码,当服务器关闭时就可以自动关闭相遇的资源了。

posted @ 2011-09-02 21:20 Aaron li 阅读(718) 评论(0) 编辑
jQuery的链式操作,什么是链式操作呢? 我们来看看,本来应该写成这样子

的:

$(".stripe
tr").mouseover(function(){ 
        $(this).addClass("over");})
$(".stripe
tr").mouseout(function(){ 
        $(this).removeClass("over");
})



但是我们写成了:

$(".stripe
tr").mouseover(function(){ 
            
$(this).addClass("over");}).mouseout(function(){
                
$(this).removeClass("over");})


因为鼠标移入移除都是发生在同一个对象上的,所以我们可以将发生在同一个对象上的动作连起来写,这样子如果有很

多对象并且在他们身上发生了很多动作那么就会节省很多代码。
posted @ 2011-06-01 09:17 Aaron li 阅读(73) 评论(0) 编辑

$("h3 a", patch);
简单讲,是 $('#parentID').find('childNode') 的偷懒写法

$("h3 a", patch) 等于 patch.find('h3 a')
$("h3 a",$(this))  等于 $(this).find('h3 a')

直接用 find 会快些,因为偷懒的写法最终还是调用 find

posted @ 2011-06-01 09:16 Aaron li 阅读(5) 评论(0) 编辑

  不知不觉  从2月份过年过来 几个月都过去了。。。  6月了  这四个月 自己都做了些什么  唉  时间  你为什么老是不知不觉的就从我的指间溜走了那。。  现在的自己  一般都是 七点出门 七点半左右到公司   上午开会  时间几乎没了  下午 还没写多少东西就下班了。。   5点多下班了 再写点东西  看点东西  也就 八点多了   匆匆忙忙 的赶上 这里唯一的 末班车 105  九点的最后一班车  然后转车 回家  吃饭 洗澡  不考虑 有的时候 去健身  什么的     这样折腾下来    也就 十点多了  然后 再看会书     现在晚上最怕的就是  看书 看着看着就睡着了 而 隐形眼睛忘记取了 。。。      现在 我家的 那个 灯泡 有点杯具了   几乎是亮一夜  也么就是  晚上 两三点的时候 我被他那耀眼的光芒给吵醒了 让她休息会   哈哈哈哈   感觉    灯老是亮着  早上起来 眼睛好痛 而且 还休息不好  以后 这点要改    但是累了 什么都说不好了那   只能尽量的让自己的眼睛 好受点吧   有朋友说  你为什么这么辛苦那。。   

  人生 本来就是一场 比赛  你不跑 你在走的时候  或许别人已经慢慢的跑在了你的前边  更不要说 你 不走 停在原地了。。  所以 我要 跑    不管是 慢跑  还是快跑  还是 冲刺跑  还是什么 我不想让自己停下来 我知道自己的自制力不好  但是 我会努力 让自己去努力  不断的鞭策自己   让自己跑起来  写这些  仅仅是为了 让以后的自己 看看 自己现在的这个时间 自己是个什么样子   或者 当自己落寞 亦或 再次 不能自控的时候 看看这些 让自己 再次的奔跑起来   我喜欢 奔跑  可是 我也 很懒   我想有个同伴 和我一起奔跑 但是我发现 前进的路上一直都是我一个人  我害怕 孤单  害怕 一个人前进  但是 在没有同班的时候 我只能去适应孤单  适应一个人  要学会一个人去前进   这些 或许就是人们口中的长大 、  亦或成熟吧。。 

   呵呵    感觉自己 和同龄人相比  自己“很大”了   甚至比自己大几岁的人还大  但是这些不是我所要关注的   我要关注的是 我要 好好的把握时间  好好的 控制自己 好好的 努力   在人生路上 我要不断 的奔跑        提醒自己  做事情  第一点  抓重点  分清楚事情的轻重缓急   先去把重要的事情 做好  而且在做事情的时候  最重要的 是要专心 不要分心  在有限的时间  只把一件事情做好 这就是我认为的   高效的做事  不错  只要 高效率的做事  才能把事情做好 才能做更多的事情    以前从来不写什么东西 就算写 也是在 本子上 或者 一些地方 写   过些时间 或许就不知道哪里去了  现在慢慢的 开始在这里  慢慢的记录着自己的人生   回忆着 自己的努力 自己的 颓废 自己的年少轻狂  自己的 辛酸苦楚   自己心中的梦想  以及 那些遥不可及的未来   但是我会努力  不管以后会如何  现在 我要努力了  因为 我坚信  如果  现在不努力的话   以后 绝对 没有     只有努力 了 或许   以后 还有机会   不努力  一定没有结果   加油  努力  呆呆     时常 告诉别人   相信自己    你行的   拿着这些话去  鼓励别人  现在 我也要拿着 这些话来鼓励自己 鞭策自己    好好的努力  让自己在人生路上奔跑起来     

  加油努力  相信自己  你信的   因为 我也相信  你行的!!!!!!

             让人生路上迷茫的伙伴们   一起共勉 一起努力 一起奔跑 一起前进  。。。。

posted @ 2011-05-31 08:35 Aaron li 阅读(43) 评论(0) 编辑
摘要: <body style="margin:0px" onload="DrawImage(45,45);"> <div id=m style="position:absolute;top:0;display: none;left:0;filter: alpha(opacity=100);z-index: 100" > <img src=""> </div> <img class="bigimage" src='a.jpg' onm阅读全文
posted @ 2011-05-30 20:09 Aaron li 阅读(273) 评论(0) 编辑
摘要: 经常看到有人关于35 岁程序员的生涯询问, 他们之中有些人写了十年代码, 有些人则是因为对编程发生了兴趣, 中途转行, 以下四点是给那些 30 - 35 岁程序员的建议:照顾自己健康以前, 我认为 "钱" 是很重要的, 俗话说的好: "钱不是万能, 但没有钱万万不能", 所以过去我的焦点都是放在收入, 但后来我发现有比钱更重要的东西, 那是 "家", 在你没有结婚前, 这个家的概念是指你和父母的和谐关系, 而在结婚后, 家的概念是指如何维系一个家庭, 包括和太太还有孩子的关系。在 IT 这个行业里, 很多人跟自己父母的想法是有差距的,阅读全文
posted @ 2011-05-30 09:48 Aaron li 阅读(17) 评论(0) 编辑
摘要: 1、不要放过任何看上去很简单的小编程问题--他们往往并不是那么简单,或者可以引伸出很多知识点;2、 浮躁的人容易说:XX语言不行了,应该学YY;--是你自己不行了吧!?3、 浮躁的人容易问:我到底该学什么;--别问,学就对了;4、 浮躁的人容易问:XX有前途吗;--建议你去抢银行;5、 浮躁的人容易说:我要中文版!我的英文不行!--不行?学呀!6、 浮躁的人容易问:XX和YY哪个好;--告诉你吧,都好--只要你学就行;7、 浮躁的人分两种:a)只观望而不学的人;b)只学不坚持的人;8、 把时髦的技术挂在嘴边,还不如把过时的技术记在心里;9、 学习编程的最好的方法之一就是阅读源代码;10、 在任阅读全文
posted @ 2011-05-30 09:47 Aaron li 阅读(9) 评论(0) 编辑
摘要: JDK1.6官方下载_JDK6官方下载JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exeJDK6 API CHM中文参考下载:JDK6API中文参070114.rar :http://chinesedocument.com/upimg/soft/JDK6API中文参考070114.rarJava SE 6 API 中文版 CHM 下载:http://download.java.n阅读全文
posted @ 2011-05-27 09:38 Aaron li 阅读(64) 评论(0) 编辑