上一页 1 ··· 3 4 5 6 7 8 9 10 下一页
摘要: lingering_close,字面意思就是延迟关闭,也就是说,当nginx要关闭连接时,并非立即关闭连接,而是再等待一段时间后才真正关掉连接。为什么要这样呢?我们先来看看这样一个场景。nginx在接收客户端的请求时,可能由于客户端或服务端出错了,要立即响应错误信息给客户端,而nginx在响应错误信息后,大分部情况下是需要关闭当前连接。如果客户端正在发送数据,或数据还没有到达服务端,服务端就将连接关掉了。那么,客户端发送的数据会收到RST包,此时,客户端对于接收到的服务端的数据,将不会发送ACK,也就是说,客户端将不会拿到服务端发送过来的错误信息数据。那客户端肯定会想,这服务器好霸道,动不.. 阅读全文
posted @ 2013-06-27 17:35 李秋 阅读(1433) 评论(0) 推荐(0) 编辑
摘要: keapalive 当然,在nginx中,对于http1.0与http1.1也是支持长连接的。什么是长连接呢?我们知道,http请求是基于TCP协议之上的,那么,当客户端在发起请求前,需要先与服务端建立TCP连接,而每一次的TCP连接是需要三次握手来确定的,如果客户端与服务端之间网络差一点,这三次交互消费的时间会比较多,而且三次交互也会带来网络流量。当然,当连接断开后,也会有四次的交互,当然对用户体验来说就不重要了。而http请求是请求应答式的,如果我们能知道每个请求头与响应体的长度,那么我们是可以在一个连接上面执行多个请求的,这就是所谓的长连接,但前提条件是我们先得确定请求头与响应体的... 阅读全文
posted @ 2013-06-27 16:00 李秋 阅读(823) 评论(0) 推荐(0) 编辑
摘要: 这节我们讲request,在nginx中我们指的是http请求,具体到nginx中的数据结构是ngx_http_request_t。ngx_http_request_t是对一个http请求的封装。 我们知道,一个http请求,包含请求行、请求头、请求体、响应行、响应头、响应体。 http请求是典型的请求-响应类型的的网络协议,而http是文件协议,所以我们在分析请求行与请求头,以及输出响应行与响应头,往往是一行一行的进行处理。如果我们自己来写一个http服务器,通常在一个连接建立好后,客户端会发送请求过来。然后我们读取一行数据,分析出请求行中包含的method、uri、http_vers... 阅读全文
posted @ 2013-06-27 15:41 李秋 阅读(1299) 评论(0) 推荐(0) 编辑
摘要: 在nginx中connection就是对tcp连接的封装,其中包括连接的socket,读事件,写事件。利用nginx封装的connection,我们可以很方便的使用nginx来处理与连接相关的事情,比如,建立连接,发送与接受数据等。而nginx中的http请求的处理就是建立在connection之上的,所以nginx不仅可以作为一个web服务器,也可以作为邮件服务器。当然,利用nginx提供的connection,我们可以与任何后端服务打交道。 结合一个tcp连接的生命周期,我们看看nginx是如何处理一个连接的。首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,然... 阅读全文
posted @ 2013-06-27 15:27 李秋 阅读(899) 评论(0) 推荐(0) 编辑
摘要: From:http://tengine.taobao.org/book/chapter_02.html 上篇文章讲了很多关于nginx的进程模型,接下来,我们来看看nginx的是如何处理事件的。 有人可能要问了,nginx采用多worker的方式来处理请求,每个worker里面只有一个主线程,那能够处理的并发数很有限啊,多少个worker就 能处理多少个并发,何来高并发呢?非也,这就是nginx的高明之处,nginx采用了异步非阻塞的方式来处理请求,也就是说,nginx是可以同时处理 成千上万个请求的。想想apache的常用工作方式(apache也有异步非阻塞版本,但因其与自带某些模块冲突.. 阅读全文
posted @ 2013-06-27 15:05 李秋 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 来源:http://tengine.taobao.org/book/chapter_02.html 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的。那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧。 nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。我们也可以手动地关掉daemon模式,让nginx在前台运行,这个时候,nginx就是一个单进程的,很显然,生产环境下我们肯定不会这么做,所以关掉daemon的方式,一般是用来调试用的,在后面的章节里面,我们会详细地讲解如何调试.. 阅读全文
posted @ 2013-06-27 14:53 李秋 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 1.worker_processes8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数(如,2个四核的cpu计为8)。2.worker_cpu_affinity0000000100000010000001000000100000010000001000000100000010000000; 为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。3.worker_rlimit_nofile65535; 这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit-n)与nginx进程数相除... 阅读全文
posted @ 2013-06-24 11:56 李秋 阅读(3922) 评论(0) 推荐(1) 编辑
摘要: 1 <?php 2 /** 3 * Flexihash - A simple consistent hashing implementation for PHP. 4 * 5 * The MIT License 6 * 7 * Copyright (c) 2008 Paul Annesley 8 * 9 * Permission is hereby granted, free of charge, to any person obtaining a copy 10 * of this software and associated documentat... 阅读全文
posted @ 2013-06-21 16:10 李秋 阅读(864) 评论(0) 推荐(0) 编辑
摘要: 当两台主机采用 TCP 协议进行通信时,在交换数据前将建立连接。通信完成后,将关闭会话并终止连接。连接和会话机制保障了TCP 的可靠性功能。请参见图中建立并终止 TCP 连接的步骤。主机将跟踪会话过程中的每个数据段,并使用 TCP 报头中的信息了解每台主机所接收到的数据。每个连接都代表两股单向通信数据流或者会话。若要建立连接,主机应执行三次握手。TCP 报头中的控制位指出了连接的进度和状态。三次握手:1.确认目的设备存在于网络上;2.确认目的设备有活动的服务,并且正在源客户端要使用的目的端口号上接受请求;3.通知目的设备源客户端想要在该端口号上建立通信会话。在 TCP 连接中,充当客户端的主机 阅读全文
posted @ 2013-06-21 15:57 李秋 阅读(1041) 评论(0) 推荐(0) 编辑
摘要: 摘要本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。分布式缓存问题假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读写数据库的方式不太给力了,于是我们想引入Memcached作为缓存机制。现在我们一共有三台机器可以作为Memcached服务器,如下图所示。很显然,最简单的策略是将每一次Memcached请求随机发送到一台Mem 阅读全文
posted @ 2013-06-20 20:35 李秋 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 链接:http://wiki.nginx.org/HttpUpstreamKeepaliveModule今天看了一些代码:upstream b_memc2 { server 192.168.10.253:11211; keepalive 30 single;}看见KEEPALIVE的时候,上网上搜索,都是关于长连接的。其实在这里是最多连接数量。比如上面的代码,意思是:链接253的时候,最多保持30个长链接。为什么使用长连接?什么是长连接,移步:http://baike.baidu.com/view/2831907.htm 阅读全文
posted @ 2013-06-17 17:51 李秋 阅读(895) 评论(0) 推荐(0) 编辑
摘要: 第一,不抱怨不批评 高情商的人一般不批评别人,不指责别人,不抱怨,不埋怨。其实,这些抱怨和指责都是不良情绪,它们会传染。高情商的人只会做有意义的事情,而不做没有意义的事情。 第二,热情和激情 高情商的人对生活工作或是感情保持热情,有激情。知道调动自己的积极情绪,让好的情绪伴随每天的生活工作。不让那些不良的情绪影响到生活或工作。第三,包容和宽容 高情商的人宽容,心胸宽广,心有多大,眼界有多大,你的舞台就有多大。高情商的人不斤斤计较,有一颗包容和宽容的心。第四,沟通与交流 高情商的人善于沟通,善于交流,并且以坦诚的心态来对待,真诚又有礼貌。沟通与交流是一种技巧,需要学习,在... 阅读全文
posted @ 2013-06-17 16:47 李秋 阅读(475) 评论(0) 推荐(1) 编辑
摘要: Nginx中upstream有以下几种方式:1、轮询(weight=1)默认选项,当weight不指定时,各服务器weight相同,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。upstream bakend { server 192.168.1.10; server 192.168.1.11;}2、weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。如果后端服务器down掉,能自动剔除。比如下面配置,则1.11服务器的访问量为1.10服务器的两倍。upstream bakend { server 192... 阅读全文
posted @ 2013-06-17 15:02 李秋 阅读(13681) 评论(0) 推荐(0) 编辑
摘要: Nginx 变量的创建只能发生在 Nginx 配置加载的时候,或者说 Nginx 启动的时候;而赋值操作则只会发生在请求实际处理的时候。事例:1 server {2 listen 8080;3 location /bar {4 echo "foo = [$foo]";5 set $foo 32;6 }7 }[root@sysadmin nginx]# curl 127.0.0.1:8080/bar -->foo = [32] 阅读全文
posted @ 2013-06-07 19:18 李秋 阅读(640) 评论(0) 推荐(0) 编辑
摘要: Lua解释器对字符串的支持很有限。一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容。在Lua中操纵字符串的功能基本来自于string库。字符串库中的一些函数是非常简单的:string.len(s) 返回字符串s的长度;string.rep(s, n)返回重复n次字符串s的串;你使用string.rep("a", 2^20)可以创建一个1M bytes的字符串(比如,为了测试需要);string.lower(s) 将s中的大写字母转换成小写(string.upper将小写转换成大写)。如果你想不关心大小写对一个数组进行排序的话,你可以这样 阅读全文
posted @ 2013-06-07 15:27 李秋 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 获得前一天的日期的函数 1 function day_step(old_day,step) 2 local y,m,d 3 if("0" ~= string.sub(old_day,6,6)) then 4 m=string.sub(old_day,6,7) 5 else 6 m=string.sub(old_day,7,7) 7 end 8 9 if("0" ~= string.sub(old_day,9,9)) then10 d=string.sub(old_day,9,10)11 else12 d=s... 阅读全文
posted @ 2013-06-07 13:45 李秋 阅读(2817) 评论(0) 推荐(0) 编辑
摘要: time和date两个函数在Lua中实现所有的时钟查询功能。函数time在没有参数时返回当前时钟的数值。(在许多系统中该数值是当前距离某个特定时间的秒数。)当为函数调用附加一个特殊的时间表时,该函数就是返回距该表描述的时间的数值。这样的时间表有如下的区间:yeara full yearmonth01-12day01-31hour01-31min00-59sec00-59isdsta boolean,trueif daylight saving 前三项是必需的,如果未定义后几项,默认时间为正午(12:00:00)。如果是在里约热内卢(格林威治向西三个时区)的一台Unix计算机上(相对时间为... 阅读全文
posted @ 2013-05-31 16:15 李秋 阅读(1210) 评论(0) 推荐(0) 编辑
摘要: 一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明.table.concat(table, sep, start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长.sep, start, end这三个参数是顺序读入的, 所以虽然它们都不是必须参数. 阅读全文
posted @ 2013-05-29 16:54 李秋 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 第19章 Table库 table库由一些操作table的辅助函数组成。他的主要作用之一是对Lua中array的大小给出一个合理的解释。另外还提供了一些从list中插入删除元素的函数,以及对array元素排序函数。19.1 数组大小 Lua中我们经常假定array在最后一个非nil元素处结束。这个传统的约定有一个弊端:我们的array中不能拥有nil元素。对大部分应用来说这个限制不是什么问题,比如当所有的array有固定的类型的时候。但有些时候我们的array需要拥有nil元素,这种情况下,我们需要一种方法来明确的表明array的大小。 Table库定义了两个函数操纵array的大小:g... 阅读全文
posted @ 2013-05-29 16:41 李秋 阅读(1260) 评论(0) 推荐(0) 编辑
摘要: 构造器是创建和初始化表的表达式。表是Lua特有的功能强大的东西。最简单的构造函数是{},用来创建一个空表。可以直接初始化数组:days = {"Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday"}Lua将"Sunday"初始化days[1](第一个元素索引为1),用"Monday"初始化days[2]...print(d 阅读全文
posted @ 2013-05-29 16:14 李秋 阅读(918) 评论(0) 推荐(0) 编辑
摘要: string和其他对象一样,Lua自动进行内存分配和释放,一个string可以只包含一个字母也可以包含一本书,Lua可以高效的处理长字符串,1M的string在Lua中是很常见的。可以使用单引号或者双引号表示字符串。1 a = "a line"2 b = 'another line'为了风格统一,最好使用一种,除非两种引号嵌套情况。对于字符串中含有引号的情况还可以使用转义符\来表示。Lua中的转义序列有: 1 \a bell 2 \b back space -- 后退 3 \f form feed -- 换页 4 \n newline -- 换行 5 \r 阅读全文
posted @ 2013-05-29 15:50 李秋 阅读(3392) 评论(0) 推荐(0) 编辑
摘要: 一、概述顾名思义,tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。[root@mail ~]# tcpdump -vvtcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes13:43:13.225632 IP (tos 0x10, ttl 64, id 280, offset 0, flags [DF], proto: TCP (6), length: 172) 1. 阅读全文
posted @ 2013-05-24 14:27 李秋 阅读(981) 评论(0) 推荐(0) 编辑
摘要: 以前的章节已经介绍过了FORM传输表单的形式,但是在使用过程中仍然有很多问题,这里再向大家详细介绍一下。Multipart/form-data是上传文件的一种方式。Multipart/form-data其实就是浏览器用表单上传文件的方式。最常见的情境是:在写邮件时,向邮件后添加附件,附件通常使用表单添加,也就是用multipart/form-data格式上传到服务器。具体的步骤如下:1、客户端和服务器建立链接(TCP协议)2、客户端可以向服务器发送数据3、客户端按照符合Multipart/form-data的格式发送数据POST /top/router/rest?timestamp=2013- 阅读全文
posted @ 2013-05-24 10:53 李秋 阅读(8792) 评论(0) 推荐(0) 编辑
摘要: 服务器返回的消息服务器返回的HTTP消息也分为消息头和消息体两部分。前面连载的第二篇里已经介绍了返回消息中常见返回代码的含义。对于非正常的返回代码的处理比较简单,只要照着要求去做就好了,而对于正常的返回代码(200),其处理方式就多种多样了。1、Content-TypeContent-Type是返回消息中非常重要的内容,它标识出这个返回内容的类型,其值为“主类型/子类型”的格式,例如最常见的就是text/html,它的意思是说返回的内容是文本类型,这个文本又是HTML格式的。原则上浏览器会根据Content-Type来决定如何显示返回的消息体内容。常见的内容类型有:1 text/html HT 阅读全文
posted @ 2013-05-23 14:26 李秋 阅读(527) 评论(0) 推荐(0) 编辑
摘要: 客户端发送的内容这一次主要来观察HTTP消息头中客户端的请求,从中找到一些有意思的内容。1、HTTP_REFERER写两个简单的网页:a.htm:<a href=b.htm>to page b</a>b.htm:haha内容很简单,就是网页A中有一个到B的链接。把它们放到IIS上,并访问网页A,从中再点击到B的链接,于是看到了B页的“haha”。那么这两次请求有什么不同吗?观察它们所发送的HTTP消息头,最明显的区别就是访问B页时比访问A页时多了一行:Referer:http://localhost/a.htm这一行就表示,用户要访问的B页是从A页链接过来的。服务器端要 阅读全文
posted @ 2013-05-23 14:20 李秋 阅读(4455) 评论(0) 推荐(0) 编辑
摘要: 常见的HTTP返回码上一篇文章里我简要的说了说HTTP消息头的格式,注意到在服务器返回的HTTP消息头里有一个“HTTP/1.1 200 OK”,这里的200是HTTP规定的返回代码,表示请求已经被正常处理完成。浏览器通过这个返回代码就可以知道服务器对所发请求的处理情况是什么,每一种返回代码都有自己的含义。这里列举几种常见的返回码。1 403 Access Forbidden如果我们试图请求服务器上一个文件夹,而在WEB服务器上这个文件夹并没有允许对这个文件夹列目录的话,就会返回这个代码。一个完整的403回复可能是这样的:(IIS5.1)1 HTTP/1.1 403 Access Forbid 阅读全文
posted @ 2013-05-23 13:54 李秋 阅读(701) 评论(0) 推荐(0) 编辑
摘要: 但凡搞WEB开发的人都离不开HTTP(超文本传输协议),而要了解HTTP,除了HTML本身以外,还有一部分不可忽视的就是HTTP消息头。做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP传输的消息也是这样规定的,每一个HTTP包都分为HTTP头和HTTP体两部分,后者是可选的,而前者是必须的。每当我们打开一个网页,在上面点击右键,选择“查看源文件”,这时看到的HTML代码就是HTTP的消息体,那么消息头又在哪呢?IE浏览器不让我们看到这部分,但我们可以通过截取数据包等方法看到它。下面 阅读全文
posted @ 2013-05-23 13:39 李秋 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 开发的作者是:Yichun "agentzh" Zhang (章亦春)agentzh@gmail.com文件在:https://github.com/agentzh/lua-resty-upload----------------------------------------------------------------------------------------废话少说,具体步骤如下:1、上传upload.lua到指定的目录,我的是_services/upload/conf2、配置上传的SERVER(域名自己配制)location = /upload { clie 阅读全文
posted @ 2013-05-21 11:42 李秋 阅读(2405) 评论(0) 推荐(0) 编辑
摘要: 大部分人应该回答是LinkedList快一些,实际却不然。import java.util.*;public class Test{ public static void main(String[] args) { ArrayList List = new ArrayList(); long start=System.currentTimeMillis(); for( int i=0;i LList = new LinkedList(); long startL=System.currentTimeMillis(); ... 阅读全文
posted @ 2013-05-07 17:46 李秋 阅读(4431) 评论(0) 推荐(0) 编辑
摘要: 概论1、ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2、对于随机访问get和set,ArrayList优于LinkedList,因为ArrayList可以随机定位,而LinkedList要移动指针一步一步的移动到节点处。(参考数组与链表来思考) 3、对于新增和删除操作add和remove,LinedList比较占优势,只需要对指针进行修改即可,而ArrayList要移动数据来填补被删除的对象的空间。ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。例如我们可以用ArrayList来存储一系.. 阅读全文
posted @ 2013-05-06 23:10 李秋 阅读(3909) 评论(0) 推荐(0) 编辑
摘要: 在window的Preferences中的Java->Code Style->Formatter到了这一步就是找到Ctrl+Shift+F的格式化模板了,这里不能直接修改。因为是eclipse默认的模板,是只读的。我们可以new 一个Formatter,然后点击edit就可以修改模板。我修改模板主要就是修改那个Ctrl+Shift+F后,把我的代码换多行了。修改选项卡中的Line Wrapping选项卡, 有一个Maximum line with: 80(默认);这里默认是80我们可以把它修改成120(19寸可以考虑150)的,那样不超过120个字符就不会被换行了!其他自己需要的格 阅读全文
posted @ 2013-05-03 10:19 李秋 阅读(1488) 评论(0) 推荐(0) 编辑
摘要: UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def');REPLACE(str,from_str,to_str)在字符串 str 中所有出现的字符串 from_str 均被 to_str替换,然后返回这个字符串事例:UPDATE lzmain.lz_srcmap SET NAME=REPLACE(NAME,'商城','天猫'),level1_name=REPLACE(level1_name,'商城','天猫') WHERE NAME LIKE '商城%' 阅读全文
posted @ 2013-04-16 16:46 李秋 阅读(199) 评论(0) 推荐(0) 编辑
摘要: jar包和war包的区别:war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块。jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的。它们都是压缩的包,拿Tomcat来说,将war文件包放置它的\webapps\目录下,启动Tomcat,这个包可以自动进行解压,也就是你的web目录,相当于发布了。war包:是做好一个web应用后,通常是网站,打成包部署到容器中。jar包:通常是开发时要引用通用类,打成包便于存放管理。ear包:企业级应用,通常是EJB打成ear包。所有的包都是用jar打的,只不过目标文件的扩展名不一样。WAR 阅读全文
posted @ 2013-04-16 09:27 李秋 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 为什么会有这个玩意呢,首先,这是jar的全称:JavaTM Archive (JAR) file,是的,就是java存档文件。这有点类似zip文件,想一想它是干什么的用的呢,压缩!?没错就是要压缩,将我们原先零散的东西放到一下,重新组织,所有这些目的只有一个:方便!好了,不用管他是怎么压缩的,我们的重点是哪些是我们要压缩的(输入),还有压缩成了什么(输出),进而将它发布(部署)。 那我们的输入(要压缩的东西)主要是class文件,还有辅助的资源(这其中可能有图片,jsp文件,html文件等等)。Jar技术在jdk1.1版本中就已存在,在1.2中又有了增强。接下来说说jar的好处吧,... 阅读全文
posted @ 2013-04-14 16:17 李秋 阅读(532) 评论(0) 推荐(0) 编辑
摘要: 一、下载tomcat7http://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.39/bin/apache-tomcat-7.0.39-windows-x86.zip二、设置各种环境变量CATALINA_HOME=D:\Java\apache-tomcat-7.0.39CLASSPATH=;JAVA_HOME%\jdk1.7.0_17\lib\dt.jar;%JAVA_HOME%\jdk1.7.0_17\lib\tools.jar;%JAVA_HOME%\apache-tomcat-7.0.39\lib\bin\bootstrap.jarJAVA_ 阅读全文
posted @ 2013-04-14 15:27 李秋 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 50 50 30000 2 false ... 阅读全文
posted @ 2013-04-13 22:29 李秋 阅读(3032) 评论(0) 推荐(0) 编辑
摘要: -- bin 存放Windows和linux等系统中使用的Jetty启动脚本和相关文件 -- contexts 存放应用程序发布描述文件,里面有Jetty自带的示例文件 -- distribution 关于发行构建的代码,正式环境可删除 -- etc Jetty配置文件,后续章节会详细介绍 -- examples Jetty示例程序源代码,正式环境可删除 -- extras Jetty相关程序源代码,正式环境可删除 -- javadoc Jetty 核心代码的API文档,正式环境可删除 -- jxr Jet... 阅读全文
posted @ 2013-04-13 22:15 李秋 阅读(4086) 评论(0) 推荐(0) 编辑
摘要: 一、在文件 /etc/profile最后添加 JETTY_HOME=解压的jetty目录 export JETTY_HOME二、执行 . /etc/profile三、启动jetty ./bin/jetty.sh start 或者 java -jar start.jar四、关闭jetty ./bin/jetty.sh stop 阅读全文
posted @ 2013-04-13 21:00 李秋 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 一、下载JDK wget 'http://download.oracle.com/otn-pub/java/jdk/7u17-b02/jdk-7u17-linux-i586.tar.gz' --no-check-certificate二、解压之后,创建JDK路径 cp -rf jdk1.7.0_17 /usr/local/jdk三、设置环境变量JAVA_HOME=/usr/local/jdkCLASSPATH=.:$JAVA_HOME/lib.tools.jarPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOME CLASSPATH PATH四、运 阅读全文
posted @ 2013-04-11 10:57 李秋 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 一言以蔽之:“JRE仅仅是运行环境,JDK是编译和运行环境”。 Jre是java runtime environment, 是java程序的运行环境。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦,还有所有java类库的class文件,都在lib目录下打包成了jar。大家可以自己验证。至于在windows上的虚拟机是哪个文件呢?jre/bin/client里面是不是有一个jvm.dll呢?那就是虚拟机。 Jdk是javadevelopmentkit,是java的开发工具包,里面包含了各种类库和工具。当然也包括了另外一个Jre.那么为什么要包括另外一个Jre呢?而且jdk/jr... 阅读全文
posted @ 2013-04-10 10:02 李秋 阅读(198) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 下一页