文档库 最新最全的文档下载
当前位置:文档库 › Cookie的过期时间设置

Cookie的过期时间设置

Cookie的过期时间设置
Cookie的过期时间设置

Cookie的过期时间设置

1.Cookie生存时间介绍

我们知道Cookie是一个键值对,但是Cookie不仅仅只有name和value属性,它还有以下几种属性:

(1)注释:描述此cookie的用途;

(2)路径:指的是浏览器将此cookie返回到服务器上的路径,并且该cookie对于服务器上的所有子路

径都是可见的。

(3)域限定符:创建cookie时设置的域名,域名形式是根据RFC2109设置的;

(4)最大生存时间:表示cookie的存活时间,过了设置的最大生存时间,该cookie就会死亡;

(5)版本号:表示cookie遵守的协议版本,版本1遵守RFC2109,版本0遵守根据Netscape起草的

原始cookie规范。

本文档只对Cookie的最大生存时间进行讲解,其他属性后面会一一说明。

Cookie的过期时间即为Cookie的最大生存时间,可以通过以下方法进行设置,如下所示:

●void setMaxAge(int expiry)

该方法的参数的类型是整型,表示过期的时间,单位是秒。例如:cookie.setMaxAge(60)表示当前cookie 会被浏览器保存在硬盘上,60秒后会被浏览器删除。

下面分情况说明cookie的setMaxAge()方法对cookie生存时间的设置,如下所示:

setMaxAge()参数大于0:表示将当前cookie保存在硬盘上,保存时间由其参数决定;

setMaxAge()参数小于0:无论该方法的参数是多少,只要小于0,则表示将当前cookie保存在浏览器内存中,浏览器关闭的同时cookie死亡;

setMaxAge()参数等于0:表示浏览器将当前cookie及之前保存的同名cookie删除,例如刚开始在浏览器端保存了一个cookie,名称为history,保存时间为2天,现在希望将该history删除,这个时候就可以向浏览器端再次发送一个名字为history的cookie,生存时间设置为0。这个时候浏览器会将名字为history的所有cookie删除。

如果,在服务器端新建一个cookie,并没有给该cookie设置生存时间,那么表示:该cookie会在浏览器关闭的时候被浏览器删除。

2.Cookie设置生存时间练习

通过以上对cookie生存时间的了解,下面通过一个案例来直观的体会cookie的生存时间设置对cookie 的影响,具体如下:

(1)创建一个web项目,Example19,在该应用下的WebRoot目录下新建一个jsp文件,名称为cookieSet.jsp,主要代码如例1-1所示:

例1-1cookieSet.jsp

保存cookie

<%

Cookie cookie1=new Cookie("cookie1","aaa");

response.addCookie(cookie1);

%>

例1-1中,创建了一个cookie,但是并没有设置cookie的生存时间,通过以上对cookie生存时间的讲解,该cookie会在浏览器关闭的时候被销毁。

(2)将Example19发布到Tomcat服务器中,然后启动服务器,谷歌浏览器查看cookie比较方便,我们在谷歌浏览器端地址栏上访问:http://localhost:8080/Example19/cookieSet.jsp,浏览器显示结果如图1-1所示:

图1-1浏览器显示结果

(3)查看谷歌浏览器中的cookie,点击图1-1所示的红色标注的图标,在下拉选项中选择【设置】,进入图1-2所示界面:

图1-2查看cookie

(4)点击图1-2中的【内容设置】选项,进入图1-3所示界面:

(5)点击图1-3中的【所有Cookie和网站数据…】按钮,进入图1-4所示界面:

(6)点击图1-4所示的【cookie1】按钮,进入图1-5所示界面:

图1-5cookie信息

由图1-5可知,名字为cookie1的cookie的过期时间为浏览会话结束时,即表示浏览器关闭,cookie 被删除。

(7)关闭浏览器,再次打开浏览器,查看cookie1是否还存在,如图1-6所示:

图1-6cookie信息

由图1-6所示,浏览器中已经不存在名为cookie1的cookie。

(8)对例1-1中的代码进行修改,如例1-2所示:

例1-2cookieSet.jsp

保存cookie

<%

Cookie cookie1=new Cookie("cookie1","aaa");

cookie1.setMaxAge(60*60)

response.addCookie(cookie1);

%>

例1-2中,将cookie1的生存时间设置为1小时。

(9)在浏览器端再次访问cookieSet.jsp页面,查看浏览器中cookie1的保存时间,如图1-7所示:

图1-7cookie信息

由图1-7可知,cookie1的保存时间是10:08:12,过期时间是:11:08:12,其生存时间正好是1个小时。

cookie1在浏览器端的存活时间是1小时,浏览器关闭后再打开,cookie1仍然存在,现在我们通过代码来将cookie1从浏览器端删除。

(10)在Example19应用的WebRoot目录下,新建一个jsp文件,名称为cookieGet.jsp,主要代码如例1-3所示:

例1-3cookieGet.jsp

删除cookie

<%

Cookie cookie=new Cookie("cookie1","aaa");

cookie.setMaxAge(0);

response.addCookie(cookie);

%>

例1-3中,再次新建一个名字为cookie1的cookie,并且设置其过期时间为0,表示浏览器立即删除当前及之前保存的名字为cookie1的cookie。

(11)重新启动服务器,在浏览器端地址栏上输入:http://localhost:8080/Example19/cookieGet.jsp,然后查看浏览器端的cookie1是否还存在,如图1-8所示:

图1-8查看cookie

由图1-8可知,浏览器端的cookie1已经不存在了,它原本的生存时间是1小时,经过cookieGet.jsp

页面中代码的设置,没有到过期时间就被浏览器删除了。

Ehcache 2 缓存区配置详解

Ehcache 2 缓存区配置详解 第1章Ehcache简介 EhCache是一个开放源码的,基于标准的高速缓存系统。Ehcache可以显著提高应用性能,降低数据库负载,简化应用扩展。Ehcache健壮、功能齐全,也历经了众多应用考验,使得它成为使用最广泛的基于Java的缓存系统。 Ehcache可以支持从进程内的一个或多个节点的部署方式到进程内与进程外混合、高达TB 大小的高速缓存。 Ehcache目前由Terracotta公司维护,使用Apache 2 许可证。 Ehcache截止目前最新版本为2.6。支持多种方式缓存: ●Standalone模式。嵌入应用进程内。单点,多节点间无沟通。 ●Replication模式。嵌入应用内部,通过RMI或JGroup或JMS进行节点同步。 ●Cache Server模式。作为独立缓存服务器,提供REST与WebService接口供访 问。 ●Distributed Caching模式。采用Terracotta Server Array实现高可用的分布式 缓存。 Standalone与Replication均是较传统的使用方式,很多场景下难以满足动态基础设施环境下应用弹性的要求。Cache Server使得缓存服务可以容易的进行水平扩展,但是基于REST与WebService的访问方式降低了缓存访问的效率,不太适合对缓存实时性要求较高的场景。Distributed Caching模式提供了进程内与进程间缓存较理想的结合模式,支持水平扩展,高可用,对网络依赖程度较低,可以很好适应应用弹性伸缩,是动态基础设施条件下较理想的缓存模式。 第2章Ehcache 2 缓存区配置 Ehcache默认配置文件在Ehcache客户端的classpath根目录下,名为ehcache.xml。典型的配置文件如下:

jquery.cookie使用方法(中文详细版)

jquery.cookie使用方法 一个轻量级的cookie插件,可以读取、写入、删除cookie。 jquery.cookie.js的配置 首先包含jQuery的库文件,在后面包含jquery.cookie.js的库文件。 使用方法 新添加一个会话cookie: 创建一个cookie并设置有效时间为7天: 创建一个cookie并设置cookie的有效路径: 读取cookie: 删除cookie,通过传递null作为cookie的值即可: 相关参数的解释 定义cookie的有效时间,值可以是一个数字(从创建cookie时算起,以天为单位)或一个Date对象。如果省略,那么创建的cookie是会话cookie,将在用户退出浏览器时被删除。 默认情况:只有设置cookie的网页才能读取该cookie。 定义cookie的有效路径。默认情况下,该参数的值为创建cookie的网页所在路径(标准浏览器的行为)。如果你想在整个网站中访问这个cookie需要这样设置有效路径:path: '/'。如果你想删除一个定义了有效路径的cookie,你需要在调用函数时包含这个路径:$.cookie('the_cookie', null, { path: '/' });。

默认值:创建cookie的网页所拥有的域名。 默认值:false。如果为true,cookie的传输需要使用安全协议(HTTPS)。 默认值:false。 默认情况下,读取和写入cookie的时候自动进行编码和解码(使用encodeURIComponent编码,decodeURIComponent解码)。要关闭这个功能设置raw: true即可。

最新WEB游戏源码服务端(完整修改版).

2011WEB网页游戏服务端源码全集 webgame源码,本人已测试,供大家下载 一、抢车位源码 [停车大战]ASP+ACCESS[带MSSQL] 版权声明:(停车大战V1.0 FOR DVBBS AC ) 停车大战V1.0 FOR DVBBS版本,是由NDS.西域数码(https://www.wendangku.net/doc/d12984990.html,)于2008年11月开发,作者:SING_CEE 游戏演示地址 https://www.wendangku.net/doc/d12984990.html,/BBS 本游戏插件于2008年12月圣诞节前免费开放游戏源码,供开发爱好者体验和改进,无论你是使用还是改进本游戏都请保留这些文字声明,如果你有重大的改进或开发方面有什么难题请发信息给我。 安装步骤: 1.将DVBBS8 2.MDB中的4个数据表导入你的DVBBS数据库中。 2.拷贝所有文件和文件夹到DVBBS根目录。 3.在DVBBS后台插件管理论坛菜单管理新建菜单 标题:停车大战 注释版权:停车大战V1.0 https://www.wendangku.net/doc/d12984990.html,西域数码 链接:parking.asp 插件ID:parking 能使用插件的用户组: 1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 4.提交 二次开发说明: 停车大战游戏使用ASP和FLASH AS 相结合 这是一种最新的WEB应用发展方向,这个游戏源码希望对WEB游戏初学者有所帮助。欢迎有兴趣的开发者改进停车大战游戏插件,并请在新的版本中保留本文中的版权声明!目前停车大战游戏还有部分功能没有完善,比如游戏中赚取的金钱和论坛中的金币互相兑换功能,以及金钱奖励方式的更加合理化,增加后台管理(增加新车、增加新车位背景、奖励控制、汇率等管理)还有很多功能都需要大家一起来完善。 停车大战文件说明: parking.asp 停车大厅游戏主文件 pkbuy.asp 购车 pkbuywnd.asp 购车窗体 pkchangewnd.asp 换车窗体

radmin服务端配置方法

radmin的使用教程 如果说Radmin是木马,可能不太确切。它是少数被官方承认的远程控制软件,因而不会被XX防火墙或者XX克星揪出来。但是,Radmin以其强大的功能,纤小的体积,良好的隐蔽性,容易操作的优势让众多初学者青睐。下面,我们来初步介绍下Radmin的安装和使用。 第一章Radmin的初步设置 首先我们需要下载Radmin2.1版的安装程序,选择2.1版,因为它比较成熟可靠。由于是官方认可的软件,所以只要在百度搜索"Radmin2.1破解"即可。注意破解二字,要有注册码的!这里因为不想盗链,所以没直接给出下载地址,请大家自己搜索。不推荐下载影子版。一是,影子版解压缩时可能会被杀毒软件查杀;二是,影子版是完成品,不适合初学者,毕竟自己多做些基础工作,可以打下扎实的基本功。 下载后,安装。最好你的系统是W2K,原因就不多说了。安装完成后,选择Radmin的设置---选项。这时,你会看到弹出一个选项窗口。下面我们逐个介绍窗口中选项的功能。 首先是IP过滤。对新人而言,我是不建议设置IP过滤的,理由是尽量减少自己暴露的信息。所以,这个选项我们跳过。 其次是端口,默认的端口是4899。我们可以改一下,具体用哪个端口随自己喜好,可以随便编,但注意不要使用139,445,3389,4899这样声名在外的端口,即使肉鸡嫩,你就不怕别的老大抢了你的肉鸡??如果不懂哪些端口是做什么用的,可以发邮件给我,我会将详细的资料发给你。 然后就是隐藏托盘图表的选项了,不想被肉鸡的主人看见托盘有个不怀好意的图标在跟他奸笑的话,那就点上吧。 使用日志记录,日志文件名不要选。会留痕迹的哦! 连接确认也不要理它,价值不大。

Java分布式架构

介绍 1. 项目核心代码结构截图 jeesz-utils jeesz-config jeesz-framework jeesz-core-cms jeesz-core-gen jeesz-core-bookmark

jeesz-core-act jeesz-core-oa jeesz-core-test jeesz-core-scheduler jeesz-core-task jeesz-web-admin jeesz-web-service jeesz-web-scheduler jeesz-web-task jeesz-web-bookmark jeesz-facade-bookmark jeesz-service-bookmark jeesz-facade-task jeesz-service-task jeesz-web-mq-task 特别提醒:开发人员在开发的时候可以将自己的业务REST服务化或者Dubbo服务化 2. 项目依赖介绍

使用Cookie记录用户名和密码

使用Cookie记录用户名和密码 一、用户登录操作 在用户填写登录数据后,提交表单进行登录验证,如果用户名和密码正确,则把用户名和密码保存在客户端。页面如图1所示 实现代码如下所示。 ... response.setContentType("text/html;charset=gbk"); //获取用户名 String userName = request.getParameter("username"); //获取用户密码 String password = request.getParameter("password"); //验证用户是否合法 if ("accp".equals(userName) && "accp".equals(password)) { //如果合法,把用户名和密码保存在客户端Cookie中 //获取客户选择的Cookie保存时间 String cookieDate = request.getParameter("cookieDate"); int date = 0; if (cookieDate != null && cookieDate != "") date = Integer.parseInt(cookieDate); //创建用户名Cookie对象 Cookie cookieName = new Cookie("accpLoginName", userName); //设置Cookie保存时间 cookieName.setMaxAge(date); //添加到客户端 response.addCookie(cookieName);

Cookie cookiePass = new Cookie("accpLoginPass", password); //设置保存Cookie时间 cookiePass.setMaxAge(date); //添加到客户端 response.addCookie(cookiePass); response.sendRedirect("success.jsp"); } else { response.sendRedirect("fail.jsp"); } ... 二、用户再次登录时操作 服务器首先读取客户端Cookie信息,如果存在用户名和密码数据,则直接登录,否则显示登录页面。 实现代码如下所示。 response.setContentType("text/html;charset=gbk"); //用户名和密码是否存在以及合法的判断参数 boolean bool=false; //获取客户端Cookie数组 Cookie[] cookies = request.getCookies(); //判断客户端是否存在Cookie对象 if (cookies != null) { //预定义保存用户名和密码的变量 String userName = ""; String password = ""; //遍历Cookie数组 for (int i = 0; i < cookies.length; i++) { //取得每一个Cookie对象 Cookie cookie = cookies[i]; //判断Cookie的名称是否等于"accpLoginName" if ("accpLoginName".equals(cookie.getName())) { userName = cookie.getV alue(); } //判断Cookie的名称是否等于"accpLoginPass" if ("accpLoginPass".equals(cookie.getName())) { password = cookie.getV alue(); } }

服务端性能优化参考指南

服务端性能优化 参考指南 1、代码优化 通过JPROFIRE等第三方工具分析判读代码运行耗时长、性能瓶颈部分,重新审视自己写的代码,逐条逐句,主要注意一下几点: 对象的生成和大小的调整 JAVA程序设计中一个普遍的问题就是没有好好的利用JAVA语言本身提供的函数,从而常常会生成大量的对象(或实例)。由于系统不仅要花时间生成对象,以后可能还需花时间对这些对象进行垃圾回收和处理。因此,生成过多的对象将会给程序的性能带来很大的影响。杜绝不必要的对象产生,减少可调整的生成对象。 代码举例: String name=new String("HuangWeiFeng"); System.out.println(name+"is my name"); (1) 生成新的字符串new String(STR_1); (2) 复制该字符串; (3) 加载字符串常量"HuangWeiFeng"(STR_2); (4) 调用字符串的构架器(Constructor); (5) 保存该字符串到数组中(从位置0开始); (6) 从java.io.PrintStream类中得到静态的out变量; (7) 生成新的字符串缓冲变量new StringBuffer(STR_BUF_1); (8) 复制该字符串缓冲变量; (9) 调用字符串缓冲的构架器(Constructor); (10) 保存该字符串缓冲到数组中(从位置1开始); (11) 以STR_1为参数,调用字符串缓冲(StringBuffer)类中的append方法; (12) 加载字符串常量"is my name"(STR_3); (13) 以STR_3为参数,调用字符串缓冲(StringBuffer)类中的append方法; (14) 对于STR_BUF_1执行toString命令; (15) 调用out变量中的println方法,输出结果。 上面两行代码生成了STR_1,STR_2,STR_3,STR_4和STR_BUF_1五个对象变量。这些生成的类的实例一般都存放在堆中。堆要对所有类的超类,类的实例进行初始化,同时还要调用类极其每个超类的构架器。而这些操作都是非常消耗系统资源的。因此,对对象的生成进行限制,是完全有必要的。 经修改,上面的代码可以用如下的代码来替换。

EHCache介绍

EHCache介绍 简介 系统缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能. 缓存设想内存是有限的,缓存的时效性也是有限的,所以可以设定内存数量的大小,可以执行失效算法,可以在内存满了的时候,按照最少访问等算法将缓存直接移除或切换到硬盘上。 Ehcache从Hibernate发展而来,逐渐涵盖了Cahce界的全部功能,是目前发展势头最好的一个项目。具有快速,简单,低消耗,依赖性小,扩展性强,支持对象或序列化缓存,支持缓存或元素的失效,提供LRU、LFU 和FIFO缓存策略,支持内存缓存和磁盘缓存,分布式缓存机制等等特点。 2009年8月Terracotta公司并购了开源缓存项目Ehcache, Terracotta 公司的产品 Terracotta 是一个 JVM 级的开源群集框架,提供 HTTP Session 复制、散布式缓存、POJO 群集、跨越集群的JVM 来完成散布式使用顺序协调。并购后EhCache 首要的改进都集中在跟Terracotta 框架的集成上,这是一个真实意义上的企业级缓存处置方案。Ehcache1.7版本上首次加入了ehcache-terracotta组件模块,想利用terracotta来实现更方便的集群操作。 Overview Ehcache是一个开源的,用于提高访问性能的标准高速缓存,它抛弃了数据库同时易于扩展。Ehcache拥用强大的,可靠和完整的功能,这已成为最广泛使用的基于Java的高速缓存。 Ehcache可以实现TB级的高速缓存管理,可配置多个缓存节点。对于需要互联的分布式缓存应用,Ehcache的使用开源的Terracotta Sever的阵列。 Ehcache是Terracotta公司的一个长期开发、维护和支持的专业开源项目。有效基于Apache 2 license。除了开源的ehcache,Terracotta公司还提供企业版的Ehcache全天候的专业支持,咨询和培训。

cookie测试

Cookie提供了一种在Web应用程序中存储用户特定信息的方法,例如存储用户的上次访问时间等信息。假如不进行cookie存储一个网站的用户行为,那么可能会造成以下问题:用户进行购买几件商品转到结算页面时,系统怎样知道用户之前订了哪几件商品。因为,cookie其中一个作用就是记录用户操作系统的日志,而系统对cookie不单单是存储,还有读取,也就是说系统和用户之前是一个交互的过程,这称为有状态。 但是Cookie在带来这些编程的方便性的同时,也带来了安全上的问题。Cookie的安全性问题与从客户端获取数据的安全性问题是类似的,可以把Cookie看成是另外一种形式的用户输入,因此很容易被黑客们非法利用这些数据。由于Cookie保存在客户端,因为在客户端可以直接看到Cookie中存储的数据,而且可以在浏览器向服务器端发送Cookie之前更改Cookie 的数据。因此,对Cookie 的测试,尤其是安全性方面的测试非常重要,是Web应用系统测试中的重要方面。 ·如何判断正在测试的Web系统使用了cookie? 在进行Cookie测试之前,首先要判断被测试的Web应用系统是否使用了Cookie。当然可以找出web系统的设计文档、功能规格说明书来看个究竟,或者直接问开发人员。除此之外,还有更加直接的办法: (1)找到电脑中存储cookie的目录。 需要注意的是不同的浏览器把Cookie数据存储在不同的目录,IE浏览器把Cookie数据存储在类似下面的目录: C:\Documents and Settings\user\Local Settings\Temporary Internet Files (2)删除所有cookie。 在IE中,cookie与缓存的临时文件存储在一起。可使用IE中的删除Cookies文件功能来删除所有Cookie,也可直接找到存储Cookie文件的目录进行删除。打开IE浏览器,选择菜单“工具| Internet选项”(或者按快捷方式“Ctrl+Shift+Delete”),如图1所示。

服务器配置方案

服务器配置方案 本文转自:傲龙网络 在日常工作中,经常给客户进行硬件配置建议,发现很多客户基本的信息化基础的知识都不是太懂,比如服务器配置数选择和用户数关系等等。甚至很多IT专业人士,比如erp,crm顾问都不是很清楚。当然也有可能这些顾问只专注于他自己工作的那一块,认为这些是售前干的事情,不需要了解太多。在我看来我觉得多了解一些,碰到不懂的客户也可以给人家说个所以然出来,至少也没有什么坏处嘛。下面这篇文章也是平常的工作总结,贴出来给大家分享一下,也许还用的着。 第一章服务器选择 1.1 服务器选择和用户数关系

说明: 首选原则:在初期给客户提供硬件配置参考时,在线用户数建议

按注册用户数(或工作站数量)的50%计算。 备用原则:根据企业的行业特点、用户使用频度、应用特点、硬件投入等综合因素考虑,在线用户数比例可以适当下调,由售前/销售人员在对客户的具体情况进行了解后做出适当的建议。 服务器推荐选择品牌:IBM、DELL(戴尔)、HP(惠普)、Sun 、Lenovo (联想)、浪潮、曙光等品牌机型。 CPU:如果因为选择不同品牌服务器或双核处理器导致CPU型号/主频变动,只要求达到同级别或该级别以上处理能力。 硬盘:对于硬盘方面,推荐选择SCSI硬盘,并做RAID5;对于小企业可以如果由于采购成本的考虑也可采用SATA。对于2000注册用户数以上企业,强烈推荐采用磁盘阵列。 硬盘容量=每用户分配容量×注册用户数+操作系统容量+部分冗余 1.2 常见机型参考报价

由于IBM服务器在几个品牌的PC服务器系列中价格较高,如果报价是供客户做预算用,则可将该报价直接发给客户供参考,减少商务询价的工作量。 硬件配置和相关型号可上网查询: IBM服务器 HP服务器 DELL服务器 SUN服务器 Lenovo(联想) 1.3 服务器选择和用户数关系在线计算 在IBM网站上有提供IBM Systems Workload Estimator工具可用于

java应用服务器集群环境下代码编写要注意的问题

java应用服务器集群环境下代码编写关注点 J2EE架构下,软件的部署环境为集群的情况很多,所以针对集群环境的软件 开发非常重要,所以我们在编码过程中要超前思考,以免加大后期的工作量。了解集群 什么是集群: web应用服务器集群系统,是由一群同时运行同一个web应用的服务器组成的集群系统,在外界看来,就像是一个服务器一样。为了均衡集群服务器的负载,达到优化系统性能的目的,集群服务器将众多的访问请求,分散到系统中的不同节点进行处理。从而实现了更高的有效性和稳定性,而这也正是基于Web的企业应用所必须具备的特性。 集群技术的特点 高可靠性和高可用性:通过集群技术组成的系统,可以确保数据和应用程序对最终用户的高可用性和高可靠性,也就是说当主节点上的系统崩溃时,冗余节点就从替补角色转换到正式角色,并自动投入应用,从而保证了系统运行的不间断。或者检测某一个空闲服务器,将请求分发给它,对请求进行处理,而且这一过程对用户来说,是透明的,用户察觉不到! 稳定性和可伸缩性:在系统的处理能力需要增加的时候,除了通过增加集群中每个计算机节点的单机处理能力(如通过增加CPU数量、增加内存大小等手段)外,还可以通过增加集群节点数,即通过向群集添加新的计算机节点,使服务随着处理器的添加而伸缩,从而增大应用程序吞吐量,以达到增加系统的整体处理能力的目的,完成系统的扩容。 Web应用服务器集群结构图,下面例举了weblogic和websphere集群结构图 websphere集群架构图

weblogic集群架构图 排除网络设备,由上面两幅图可以观察到,应用服务器集群包含了三部分

1.Web服务器(Web Server) Web服务器专门处理HTTP请求(request),应用的软件如Apache,IBM HTTP Server,或者自己写的代理服务等等。 2.应用程序服务器(The Application Server) 应用程序服务器是通过很多协议来为应用程序提供(serves)业务逻辑(business logic)。 3.关系数据库系统 4.消息中间件 备注:一定要清楚web服务器与应用程序服务的区别 由图我们来分析一下,集群环境下开发需要注意哪些地方? 1.Session,我们经常用session来封装用户的登录信息,那么如果集群环境下一台机器session中有,一台没用回发生什么样的情况呢?幸好各个应用服务器都有在集群环境下session复制的配置。如果配置请查阅对应的文档。另外web 开发经常用到Webwork,strut2,flex等技术,他们都对sesson的封装。他们是否也能复制呢?还要测试才行,当然理论上是可以的,呵呵!还有有的时候session 要保存到什么位置?也是个问题a)内存,b)文件c)数据库。根据实 际情况来选择吧。 2.Cache,Cache我们经常使用(我这里只说对象级缓存),如:将一些经常用到的数据缓存到内存中。这种情况下和session有些类似。有的人实例化了一个包 含HashMap的一个单例的对象,用来缓存数据,单机环境没什么问题,可是如 果是集群环境呢?会怎样?所有我们引用分布式缓存或者集中式缓存,分布式缓存有很多种如ehcache,jbosscache,oscache等,集中式缓存比较典型的就是memcached。选择分布式还是集中式根据项目的需要来定了。这里就不说了。 3.线程、定时器,如:单机环境下我们写一个单线程,如用来像其他系统上传数 据(这个数据部允许多次上传),如果程序发布在集群环境下回发生什么情况?呵呵。变成多线程了。多个计算机内的单线程同时上传数据。所以这个时候考虑的地方就很多了!!是选择故障转移还是负载均衡都是考虑的范围。定时器也雷 同。可以参考spring quartz 集群解决方案。 4.JDBC,JDBC注意的是数据库集群的情况,如weblogic集群架构图所示,编写程序时,获得JDBC链接可以这样写, Connection con = null; try {

Cookies注入

Cookies注入 现在很多网站都加了防注入系统代码,你输入注入语句将无法注入 感觉这样的防注入系统不错,但防注入系统没有注意到Cookies 的问题! 所以就有了Cookies注入 我们来研究一下怎样情况下才会有Cookies注入! 如果你学过ASP,你应该会知道Request.QueryString(GET)或Request.Form (POST)!呵,没错,这就是我们用于读取用户发给WEB服务器的指定键中的值!我们有时为了简化代码,会写成ID=Request("ID") 这样写法是简单了,但问题就来了我们先看WEB服务是怎样读取数据的,他是先取GET 中的数据,没有再取POST中的数据,还会去取Cookies中的数据(晕,书上没有这么说,这是和小高交流时才知道看来书说的不全) 我们再看看防注入系统,他会检测GET和POST中的数据,如果有特殊字符(这里当然是注入字符了)! 就禁止数据的提交! 但他没有检测Cookies的数据!问题就来了,那我们怎样测试是否有Cookies注入问题。请先看下面的的连接(示例用,所以连接不是真的) http://*****.2008.***.com/1.asp?id=88 如果我们只输http://*****.2008.***.com/1.asp 时,就不能看到正常的数据,因为没有参数! 我们想知道有没有Cookies问题(也就是有没有Request("XXX")格式问题), 先用IE输入 http://*****.2008.***.com/1.asp 加载网页,显示不正常(没有输参数的原因) 之后在IE输入框再输入 javascript:alert(document.cookie="id="+escape("88")); 按回车,你会看到弹出一个对话框内容是: id=88 之后,你刷新一个网页,如果正常显示,表示是用 Request("ID")这样的格式收集数据,这种格式就可以试Cookies注入了 在输入框中输入 javascript:alert(document.cookie="id="+escape("88 and 2=2")); 刷新页面,如果显示正常,可以再试下一步(如果不正常,就有可能也有过滤了)

Ehcache是现在最流行纯Java开源缓存框架

Ehcache是现在最流行的纯Java开源缓存框架 2014-12-22 13:28 37723人阅读评论(0) 收藏举报分类: java(405) c:\t _blank Ehcache是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从hibernate的缓存开始的。网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google;对于API,官网上介绍已经非常清楚,请参见官网;但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考,希望对缓存感兴趣的朋友有所收获。 一、特性一览,来自官网,简单翻译一下: 1、快速轻量 过去几年,诸多测试表明Ehcache是最快的Java缓存之一。 Ehcache的线程机制是为大型高并发系统设计的。 大量性能测试用例保证Ehcache在不同版本间性能表现得一致性。 很多用户都不知道他们正在用Ehcache,因为不需要什么特别的配置。 API易于使用,这就很容易部署上线和运行。 很小的jar包,Ehcache 2.2.3才668kb。 最小的依赖:唯一的依赖就是SLF4J了。 2、伸缩性 缓存在内存和磁盘存储可以伸缩到数G,Ehcache为大数据存储做过优化。 大内存的情况下,所有进程可以支持数百G的吞吐。 为高并发和大型多CPU服务器做优化。 线程安全和性能总是一对矛盾,Ehcache的线程机制设计采用了Doug Lea的想法来获得较高的性能。 单台虚拟机上支持多缓存管理器。

通过Terracotta服务器矩阵,可以伸缩到数百个节点。 3、灵活性 Ehcache 1.2具备对象API接口和可序列化API接口。 不能序列化的对象可以使用除磁盘存储外Ehcache的所有功能。 除了元素的返回方法以外,API都是统一的。只有这两个方法不一致:getObjectValue和getKeyValue。这就使得缓存对象、序列化对象来获取新的特性这个过程很简单。 支持基于Cache和基于Element的过期策略,每个Cache的存活时间都是可以设置和控制的。 提供了LRU、LFU和FIFO缓存淘汰算法,Ehcache 1.2引入了最少使用和先进先出缓存淘汰算法,构成了完整的缓存淘汰算法。 提供内存和磁盘存储,Ehcache和大多数缓存解决方案一样,提供高性能的内存和磁盘存储。 动态、运行时缓存配置,存活时间、空闲时间、内存和磁盘存放缓存的最大数目都是可以在运行时修改的。 4、标准支持 Ehcache提供了对JSR107 JCACHE API最完整的实现。因为JCACHE在发布以前,Ehcache的实现(如net.sf.jsr107cache)已经发布了。 实现JCACHE API有利于到未来其他缓存解决方案的可移植性。 Ehcache的维护者Greg Luck,正是JSR107的专家委员会委员。 5、可扩展性 监听器可以插件化。Ehcache 1.2提供了CacheManagerEventListener和CacheEventListener接口,实现可以插件化,并且可以在ehcache.xml里配置。 节点发现,冗余器和监听器都可以插件化。 分布式缓存,从Ehcache 1.2开始引入,包含了一些权衡的选项。Ehcache的团队相信没有什么是万能的配置。 实现者可以使用内建的机制或者完全自己实现,因为有完整的插件开发指南。 缓存的可扩展性可以插件化。创建你自己的缓存扩展,它可以持有一个缓存的引用,并且绑定在缓存的生命周期内。 缓存加载器可以插件化。创建你自己的缓存加载器,可以使用一些异步方法来加载数据到缓存里面。 缓存异常处理器可以插件化。创建一个异常处理器,在异常发生的时候,可以执行某些特定操作。

cookie保存用户名和密码

A https://www.wendangku.net/doc/d12984990.html,中使用Cookie保存用户名和密码(转) 上一篇/ 下一篇2010-11-09 17:36:03 / 个人分类:.net开发技术 查看( 120 ) / 评论( 0 ) / 评分( 0 / 0 ) private void SetUpCookies() { //记住用户名密码 if (!string.IsNullOrEmpty(Request["remUsername"])) { string uName = this.txtName.Text.Trim(); string uPwd = this.txtPwd.Text.Trim(); HttpCookie Cookie = CookiesHelper.GetCookie("UserInfo"); if (Cookie == null) { Cookie = new HttpCookie("UserInfo"); Cookie.Values.Add("uName", uName); Cookie.Values.Add("uPwd", uPwd); //设置Cookie过期时间 Cookie.Expires = DateTime.Now.AddDays(30); CookiesHelper.AddCookie(Cookie); } else if (!Cookie.Values["uName"].Equals(uName) && !Cookie.Values["uPwd"].Equals(uPwd)) { CookiesHelper.SetCookie("UserInfo", "uName", uName); CookiesHelper.SetCookie("UserInfo", "uPwd", uPwd); }

EHCache 技术文档 缓存 spring缓存

目录 0. 文档介绍 (2) 0.1文档目的 (2) 0.2文档范围 (2) 0.3读者对象 (2) 0.4参考文献 (2) 0.5术语与缩写解释 (3) 1.概述 (4) 1.1背景 (4) 1.2主要特征 (3) 1.3环境 (5) 1.4下载资源 (5) 2. EHCACHE页面缓存的配置 (5) 2.1EHC ACHE的类层次模型 (5) 2.2环境搭建 (6) 2.3 EHCACHE配置文件中元素说明................................................... 错误!未定义书签。 2.4在工程中单独使用...................................................................... 错误!未定义书签。 3. 在SPRING中运用EHCACHE ....................................................... 错误!未定义书签。 4. 分布式缓存集群环境配置 (19) 4.1集群配置方式 (19) 5. 测试用例 (28)

0. 文档介绍 0.1 文档目的 记录使用EHCache实现页面级的缓存以及完成集群设计的过程。0.2 文档范围 记录使用EHCache实现页面级的缓存以及完成集群设计的过程。0.3 读者对象 任何有兴趣的家伙。 0.4 参考文献 提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下:[标识符] 作者,文献名称,出版单位(或归属单位),日期 大部分都是网络上查询的资料,很多,不列举了。

服务器配置方案

服务器配置方案本文转自:傲龙网络 在日常工作中,经常给客户进行硬件配置建议,发现很多客户基本的信息化基础的知识都不是太懂,比如服务器配置数选择和用户数关系等等。甚至很多IT专业人士,比如erp,crm顾问都不是很清楚。当然也有可能这些顾问只专注于他自己工作的那一块,认为这些是售前干的事情,不需要了解太多。在我看来我觉得多了解一些,碰到不懂的客户也可以给人家说个所以然出来,至少也没有什么坏处嘛。下面这篇文章也是平常的工作总结,贴出来给大家分享一下,也许还用的着。 第一章服务器选择 服务器选择和用户数关系

说明: 首选原则:在初期给客户提供硬件配置参考时,在线用户数建议按注册用户数(或工作站数量)的50%计算。 备用原则:根据企业的行业特点、用户使用频度、应用特点、硬件投入等综合因素考虑,在线用户数比例可以适当下调,由售前/销售人员在对客户的具体情况进行了解后做出适当的建议。 服务器推荐选择品牌:IBM、DELL(戴尔)、HP(惠普)、Sun 、Lenovo (联想)、浪潮、曙光等品牌机型。 CPU:如果因为选择不同品牌服务器或双核处理器导致CPU型号/主频变动,只要求达到同级别或该级别以上处理能力。

硬盘:对于硬盘方面,推荐选择SCSI硬盘,并做RAID5;对于小企业可以如果由于采购成本的考虑也可采用SATA。对于2000注册用户数以上企业,强烈推荐采用磁盘阵列。 硬盘容量=每用户分配容量×注册用户数+操作系统容量+部分冗余常见机型参考报价

由于IBM服务器在几个品牌的PC服务器系列中价格较高,如果报价是供客户做预算用,则可将该报价直接发给客户供参考,减少商务询价的工 作量。 硬件配置和相关型号可上网查询: IBM服务器 HP服务器 DELL服务器 SUN服务器 Lenovo(联想) 服务器选择和用户数关系在线计算 在IBM网站上有提供IBM Systems Workload Estimator工具可用于计算在各种应用和用户数规模下建议采用的服务器型号配置,配置结果提供 服务器型号、建议配置情况、可扩展性等信息。 以下为IBM Systems Workload Estimator工具计算结果,供参考: At peak, this system will have 1000 active mail clients. The calculations for this workload take into consideration a maximum of 60 percent utilization. Based on the type of client connection, this translates to 4000 effective clients. 即当前配置可支持1000在线用户,4000有效用户,服务器配置结果受录入的基本信息影响较大。 相关概念解释

Java代码优化

1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问; 第二,控制实例的产生,以达到节约资源的目的; 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。 2. 尽量避免随意使用静态变量 要知道,当某个对象被定义为stataic变量所引用,那么gc通常是不会回收这个对象所占有的内存,如 Java代码 public class A{ static B b = new B(); } 此时静态变量b的生命周期与A类同步,如果A类不会卸载,那么b对象会常驻内存,直到程序终止。 3. 尽量避免过多过常的创建Java对象 尽量避免在经常调用的方法,循环中new对象,由于系统不仅要花费时间来创建对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制的范围内,最大限度的重用对象,最好能用基本的数据类型或数组来替代对象。 4. 尽量使用final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如https://www.wendangku.net/doc/d12984990.html,ng.String.为String类指定final防止了使用者覆盖length()方法。另外,如果一个类是final的,则该类所有方法都是final的。Java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50%.

5. 尽量使用局部变量 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。 6. 尽量处理好包装类型和基本类型两者的使用场所 虽然包装类型和基本类型在使用过程中是可以相互转换,但它们两者所产生的内存区域是完全不同的,基本类型数据产生和处理都在栈中处理,包装类型是对象,是在堆中产生实例。 在集合类对象,有对象方面需要的处理适用包装类型,其他的处理提倡使用基本类型。 7. 慎用synchronized,尽量减小synchronize的方法 都知道,实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。synchronize方法被调用时,直接会把当前对象锁了,在方法执行完之前其他线程无法调用当前对象的其他方法。所以synchronize的方法尽量小,并且应尽量使用方法同步代替代码块同步。 8. 尽量使用StringBuilder和StringBuffer进行字符串连接 这个就不多讲了。 9. 尽量不要使用finalize方法 实际上,将资源清理放在finalize方法中完成是非常不好的选择,由于GC的工作量很大,尤其是回收Young代内存时,大都会引起应用程序暂停,所以再选择使用finalize方法进行资源清理,会导致GC负担更大,程序运行效率更差。 10. 尽量使用基本数据类型代替对象 String str = "hello"; 上面这种方式会创建一个"hello"字符串,而且JVM的字符缓存池还会缓存这个字符串; String str = new String("hello"); 此时程序除创建字符串外,str所引用的String对象底层还包含一个char[]数组,这个char[]数组依次存放了h,e,l,l,o

奇迹技术S12服务端经验倍率修改

奇迹技术 S12 经验倍率修改 D:\MuOnline\IGCData\IGC_ExpSystem.xml 以下为文件内容