Play Framework框架概述

  categories:资料  tags:  author:

有别于其他臃肿的企业级 Java 框架,简洁的 Play 框架提供另外一种选择,它关注于开发者的效率和 RESTful 风格的架构。Play 是 敏捷软件开发的完美伴侣。

Play 框架的目标是让基于 Java 的 web 应用开发变得更加容易,让我们看一下它是怎么做到的。

没有痛苦的 Java 框架

Play 是一个纯 Java 的框架,它让你保持使用你喜欢的开发工具和类库。如果你已经是一个使用 Java 平台的开发者,

那么你不需要切换到另一种语言,其他 IDE 或者其他类库, 而仅仅是切换到一个效率更高的 Java 环境!


修改 bug 后自动重新加载

Java 平台因为较低的开发效率,已经是声名狼藉了,主要的原因就是重复和繁琐的“编译-打包-部署”的周期。

这就是为什么我们重新对这种开发周期进行了思考,并且通过 Play 让开发变得更有效率。

Play 框架自动编译

阅读全文

从0开始学编程(9) – css、html和js简便工具

  categories:0基础编程  tags:,   author:

前面学习了php相关知识,了解html知识,并且简单介绍了数据库概念,但是这些相关知识对于一个熟练的开发人员应该是比较简单的了, 但是对于一个刚刚学习编程的人员可能还是比较模糊,更不能深入了解技术的内涵。

今天介绍一个实用的相关知识可以让开发人员避免学习繁琐的html、css、js等知识。

注意,这个仅仅是对初学者的一个帮助工具, 正在初学阶段是可以这么看的, 但是随着项目的开展这些还是远远不够的, 学习者必须在未来努力掌握html,js以及css的简单概念。

这个技术就是bootstrap,相关简单介绍见下面的文章。

http://www.iigrowing.cn/bootstrap-jian-jie.html

1. 文章中介绍了相关的几个网站, 网站本身是中文的, 方便读者阅读, 请读者认真阅读网站内容,不用考虑是否理解内容,仅仅需要了解网站中讲解了那些内容, 了解了就好, 这样以后项目中需要可以在到网站中查找,然后慢慢体会。

2. 文章中还介绍了基于bootstrap中布局工具, 这个工具是需要重点学习的, 这个工具可以非常方便的 让html的初学这学习网页的布局,更不用了解css等相关知识。并且bootstrap的手机的支持也非常方便。 这个自动布局的工具可以满足一般常用项目了。

3. 文中还介绍了bootstrap的form表单可视化构造工具,这个工具同上面的布局一样是需要重点研究学习的。

有了上面两个可视化工具可以大大方便大家进行html的个开发。

这些东西同php进行相互配合可以大家方便开发。

 

另外补充两个相关的学习视频,如下:

 

Bootstrap 学习视频

http://pan.baidu.com/s/1i3qkSy5

这个视频中讲解的是bootstrap的2.0版本, 同现在的3.x是有些差距的,但是还是有很好的可以供参考的价值。

这个视频要仔细阅读。

 

Css3 学习资料

http://pan.baidu.com/s/1i3qkSy5

Css3的视频我目前还没有看过, … 阅读全文

代理服务器知识

  categories:资料  tags:  author:

第一部份 基础知识

一、什么是代理服务器?

代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。

在一般情况下,我们使用网络浏览器直接去连接其他Internet站点取得网络信息时,需送出Request信号来得到回答,然后对方再把信息以bit方式传送回来。代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。

更重要的是:Proxy Server (代理服务器)是 Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联 (OSI) 模型的对话层。

二、代理服务器的分类

1、HTTP代理按匿名功能分类。

是否具有隐藏IP的功能。

非匿名代理:不具有匿名功能。

匿名代理。使用此种代理时,虽然被访问的网站不能知道你的IP地址,但仍然可以知道你在使用代理,有些侦测IP的网页也仍然可以查到你的IP。

高度匿名代理:使用此种代理时,被访问的网站不知道你的IP地址,也不知道你在使用代理进行访问。此种代理的隐藏IP地址的功能最强。

2、按请求信息的安全性分类

全匿名代理:不改变你的request fields(报文),使服务器端看来就像有个真正的客户浏览器在访问它。当然,你的真实IP是隐藏起来的。服务器的网管不会认为你使用了代理。

普通匿名代理:能隐藏你的真实IP,但会更改你的request fields,有可能会被认为使用了代理,但仅仅是可能,一般说来是没问题的。不过不要受它的名字的误导,其安全性可能比全匿名代理更高,有的代理会剥离你的部分信息(就好比防火墙的stealth mode),使服务器端探测不到你的操作系统版本和浏览器版本。

elite代理:匿名隐藏性更高,可隐藏系统及浏览器资料信息等。此种代理安全性特强。

透明代理(简单代理):透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改编你的request fields(报文),并会传送真实IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了,例如Garden 2程序。

3、按代理服务器的用途分类

1)Http代理:代理客户机的http访问,主要代理浏览器访问网页,它的端口一般为80、8080、3128等。

2)SSL代理:支持最高128位加密强度的http代理,可以作为访问加密网站的代理。加密网站是指以https://开始的网站。ssl的标准端口为443。

3)HTTP CONNECT代理:允许用户建立TCP连接到任何端口的代理服务器,这种代理不仅可用于HTTP,还包括FTP、IRC、RM流服务等。

4)FTP代理:代理客户机上的ftp软件访问ftp服务器,其端口一般为21、2121。

5)POP3代理:代理客户机上的邮件软件用pop3方式收邮件,其端口一般为110。

6)Telnet代理:能够代理通信机的telnet,用于远程控制,入侵时经常使用。其端口一般为23。

7)Socks代理:是全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端。支持多种协议,包括http、ftp请求及其它类型的请求。它分socks 4 和socks 5两种类型,socks … 阅读全文

http工作过程简介

  categories:资料  tags:  author:

原创文档,转载请将原文url地址标明

我们介绍了很多的http等相关的工具,以及一些相关的东西, 那么http到底是什么?基本工作过程是什么?

http是一个协议,一个网络上传输数据的协议,可以用来传递文本,可以用来传递文件等等。

一.浅析HTTP协议

HTTP协议是什么?

为了方便理解,我们可以考虑一个例子,若是我们需要快递一个东西从北京到上海,我们比较简单的办法是:叫一个快递公司的,他们会上门来取东西。在取东西过程中,他会要求您将您的东西包装到一个包装箱或者包装袋等等一些容器中。 然后他还要您添一些单据,例如:邮寄的地址,收获人地址,电话等等。

若是上海收件方收到后,回复您一些东西,方法也同上面类似。

我们考虑:

1. 包裹中的东西,一般就是货物,是邮寄的主体

2. 包裹外边的表单是,方便货物周转的描述或者协助,放到外面,容易观察或者获取的,或者大家一看都明白的。

整个http过程就像北京邮寄东西到上海然后再从上海获得回寄的东西的全部过程。

整个过程包括两部:

A.北京寄东西到上海    邮寄人主动发起 可以叫做request

B.上海相关人员收到后,处理 然后回寄东西给你  叫做相应 response。

那么无论request及response都包括:数据的主体(包裹内的东西body), 数据的描述信息(包裹外面的单据header)等。

下面我们来简要在描述一下http协议

简单来说,就是一个基于应用层的通信规范:双方要进行通信,大家都要遵守一个规范,这个规范就是HTTP协议。

HTTP协议能做什么?

很多人首先一定会想到:浏览网页。没错,浏览网页是HTTP的主要应用,但是这并不代表HTTP就只能应用于网页的浏览。HTTP是一种协议,只要通信的双方都遵守这个协议,HTTP就能有用武之地。比如咱们常用的QQ,迅雷这些软件,都会使用HTTP协议(还包括其他的协议)。

HTTP协议如何工作?

大家都知道一般的通信流程:首先客户端发送一个请求(request)给服务器,服务器在接收到这个请求后将生成一个响应(response)返回给客户端。

在这个通信的过程中HTTP协议在以下4个方 面做了规定:

1. Request和Response的格式

Request格式:

HTTP请求行
(请求)头
空行
可选的消息体… 阅读全文

基于资源的HTTP Cache的实现介绍

  categories:资料  tags:  author:

我们都知道浏览器会缓存访问过网站的网页,浏览器通过URL地址访问一个网页,显示网页内容的同时会在电脑上面缓存网页内容。如果网页没有更新的话,浏览器再次访问这个URL地址的时候,就不会再次下载网页,而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。
一、什么是HTTP Cache
对于浏览器的这种网页缓存机制大家已经耳熟能详了,举个例子来说,JavaEye的新闻订阅地址:http://www.iteye.com /rss/news ,当浏览器或者订阅程序访问这个URL地址的时候,JavaEye的服务器在response的header里面会发送给浏览器如下状态标识:

C代码

  1. Etag    “427fe7b6442f2096dff4f92339305444″
  2. Last-Modified   Fri, 04 Sep 2009 05:55:43 GMT
Etag	"427fe7b6442f2096dff4f92339305444"
Last-Modified	Fri, 04 Sep 2009 05:55:43 GMT

这就是告诉浏览器,新闻订阅这个网络资源的最后修改时间和Etag。于是浏览器把这两个状态信息连同网页内容在本地进行缓存,当浏览器再次访问JavaEye新闻订阅地址的时候,浏览器会发送如下两个状态标识给JavaEye服务器:

C代码

  1. If-None-Match   “427fe7b6442f2096dff4f92339305444″
  2. If-Modified-Since   Fri, 04 Sep 2009 05:55:43 GMT
If-None-Match	"427fe7b6442f2096dff4f92339305444"
If-Modified-Since	Fri, 
阅读全文

http协议中的vary域

  categories:资料  tags:  author:

Vary头域值指定了一些请求头域,这些请求头域用来决定当缓存中存在一个响应,并且该缓存没有过期失效,是否被允许去利用此响应去回复后续请求而不需要重验证(revalidation)。对于一个不能被缓存或失效的响应缓存,Vary头域值用于告诉用户代理选择表现形式(reprentation)的标准。一个Vary头域值是“*”意味着缓存不能从后续请求的请求头域来决定合适表现形式的响应。

Vary = “Vary” “:” ( “*” | 1#field-name )

一个HTTP/1.1的服务器应该包含一个Vary头域于任何可缓存的受限于服务器驱动协商的响应里。这样做是允许缓存合适地解析关于那个资源的将来请求,并通知用户代理那个资源导向地址的出现。一个服务器可能包含一个Vary头域于一个不可缓存的受限于服务器驱动协商的响应里,因为这样做可能为用户代理提供有用的并且响应据此而变化的维度信息。

一个Vary头域值由域名(filed-name)组成,响应的表现形式是基于Vary头域里列举的请求头域来选择的。一个缓存可能会假设为将来请求进行相同的选择,如果Vary头域例举了相同的域名,但必须是此响应在此期间是保鲜的。

Vary头域里的域名并不是局限于本规范里定义的标准请求头域。域名是大小写不敏感的。

Vary域值为”*”意味着不受限于请求头域的非特定参数在选择响应表现形式中起作用 。”*”值不能被代理服务器产生;它可能只能被源服务器产生。

通俗点的例子:

过程:我的浏览器 —请求—->squid —–请求—–>apache

apache在返回头中返回了一个vary:Accept-encoding ,则squid在存储缓存文件时需要将“我的浏览器”发出的请求头信息中的Accept-encoding字段的值(大多情况就是gzip,deflate之类的)作为缓存key的一部分,因此对于不同的Accept-encoding字段值,都需要保存不同的文件。(IE与firefox的请求头的Accept-encoding字段值中就有一个空格的差别)

下次请求到squid的时候,需要先找到一个缓存文件的索引文件,根据索引文件中的不同的Accep-encoding值再去找相应的缓存文件… 阅读全文

HTTP协议缓存策略深入详解之etag妙用

  categories:资料  tags:  author:

Etag 是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等等。具体内部含义是使服务器控制的,就像Cookie那样。

HTTP协议规格说明定义ETag为“被请求变量的实体值” 。另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端。

实例详解:

 

也许读者们看完这个概念,还是搞不清楚这个etag响应头消息到底是干什么的,具体如何使用,所以接下来的篇幅我会用一个实际的例子来详细阐述etag的妙用。

想必许多网友都有订阅某些大虾的RSS的习惯吧,但是大虾也是人,也要吃饭睡觉打豆豆,所以不可能无时无刻的在从事文学创作,因此一般产量较高的大虾也许平均每天能更新两篇已经是不错了,但是网友们却总是不断的去刷新RSS订阅的内容,期望在下次刷新中又有新的劲爆文章出现,如果我们每次刷新,都要从服务器端重新获取内容(事实上,几乎一天内95%以上的刷新返回的都是相同内容,因为刚才也说了,大虾一般一天也就出一两篇新文章而已,所以大部分时间内,内容都是相同的),如果订阅量相当巨大,这对于服务器的压力还是带宽都是一个严重的挑战。其实真正需要服务器重新返回内容是大虾们更新了新的文章后,而其他时间我们无论怎么刷新服务器最好能做到不需返回任何数据,这才是一个比较好的方案,而我们的主角etag响应头的出现正是为了解决这个问题。

浏览器端实现

当我们订阅了某大虾的RSS,如图,我们点击左下角“RSS”按钮:

aaa

 

 

然后我们进入了rss订阅的相关页面,此时我们打开tamper data查看下http请求和响应的一些内容(这里我们截获http请求和响应信息的工具是基于FF浏览器的tamper data插件,如果您对这个插件不熟悉,请参考我的另外一篇介绍该工具的文章–  Tamper Data安装与使用简介 )。如下图:

 

ttt

 

从上图我们可以看到,服务器端返回响应值为200,并发送回了相应的网页内容,在http响应头中有etag消息头,值为

Etag=”fca75d26f6dc8111a7d1b24e9debd652″,我们不需要去关心这个响应头的内容是什么,我们只需要将这这个

头信息的值记录下来,随便创建一个notepad之类的东西保存好,以备接下来的实验使用。

然后我们刷新,希望能从webserver端获取该大虾新的文章,这时候我们用tamper data查看下http头中有哪些内容,如下图:

yyy

从此图中我们可以看到If-None-Match="fca75d26f6dc8111a7d1b24e9debd652",而该值的内容和我们先前第一次

刷新返回的http响应中的etag响应头的值完全一样。

如果某大虾并没在这段时间内发表任何文章,于是webserver端的rss文件没有任何变化,于是If-None-Match值和server端

的etag值相比较完全相等,这时候服务器就会认为客户端已经有最新的rss文件内容的缓存了,于是服务器就会发送一个 响应码

为“304”的http响应,304响应想必大家都知道是什么意思了,没错,他不包含任何响应的内容,只是提示客户端缓存的内容是最新的,

如下图


 qq

如果某大虾刚发表了一篇新的文章,因此在webserver中的rss的内容发生了改变,因此他的etag值就会发生改变,于是服务器会拿http请求中的If-None-Match的

值和改变和的etag值做对比,显然不正确的,于是webserver就会发送一个新的rss内容给客户端,这里我不能强制要求某大虾来配合我们的实验去立马发表新文章,

所以我们就变相做,也就是我们故意修改http请求头中的If-None-Match的值,这样就和服务器端的etag就不会匹配了,显然这时候服务器就会受骗发送一份“新”的

rss内容回来,如下图:

image

这里我们将http请求中的If-None-Match的值改为了”modifiedForOurTest”, 显然与响应中的Etag=”fca75d26f6dc8111a7d1b24e9debd652″不同,因此服务器就被受骗认为浏览器没有最新的文件内容,于是就返回了全新的响应内容(状态码200),而事实上浏览器端是有最新的内容的缓存的。… 阅读全文

透过httpwatch了解浏览器显示页面的工作过程

  categories:nginx  tags:  author:

原创文档,转载请将原文url地址标明

本文将研究当你输入一个网址的时候,后台到底发生了一件件什么样的事。当用户在一个浏览器中输入一个网站地址,然后点击回车,我们就会看到相关网站,操作可谓简单,但是若是无法打开一个网站时,如何能确定问题在哪里,这就需要我们了解在用户下达命令后,系统都发生了什么,这样为我们排除指明了方向。

1. 在浏览器里输入网址

wps_clip_image-15441

当用户输入了地址后,然后敲击回车键,一个网站的页面也就显示出来了。

里面其实主要发生了几个过程。

(1)浏览器查找域名及ip地址的对应关系

(2)浏览器根据ip地址。连接ip地址对应的服务器进行数据获取工作

之后就是根据数据进行相关数据的处理工作

(3)根据获取到的数据进行解析,然后获取里面包括的其他资源

(4)下载相关资源

(5)解释相关资源

(6)根据这些资源等,显示页面

下面将重点介绍相关过程。

2. 浏览器查找域名的IP地址

浏览器在接受到用户的请求后,首先要做的事情是找到用户输入的域名对应的ip地址是多少?然后去连接这个ip地址相关的服务程序,然后取得相关页面,最后进行显示。

wps_clip_image-19373

取得ip地址,首先浏览器会先检查自己的缓冲中是否存在域名及ip地址的对应关系,若是没有进行下面

检查hosts文件中是否有域名与ip地址的对应关系。我们经常在网站的开发中,临时指定hosts文件中的配置将某个域名指向开发的机器来调试应用程序的。利用就是这个原理。

然后检查操作系统的dns缓存,若是有也可以返回了,若是没有进行下面的

通过操作系统的dns客户端服务程序,访问用户配置的dns服务器进行域名解析。

用户的域名服务器会在自己的内存等中检查域名,若是域名存在则放回,若是不存在则根据设置,去检查上级域名服务器。

检查域名服务器主要过程如下:

①检查国际顶级域名服务器(.), 然后这个dns服务器会通知这个dns服务器区到 .cn域名的dns服务器检查域名,

②然后域名服务器会联系这个.cn域名服务器去解析域名,最后.cn域名服务器会告诉dns服务器区访问iigrowing.cn这个dns服务器区解析这个域名。

③最后用户dns服务器获取了相关的域名的ip的地址解析。

DNS对于像wikipedia.org这样的大型网站,整个域名实际对应是比较复杂的。有几种方法可以被采用,这里仅仅需要了解就好。

1. 循环 DNS 是DNS查找时返回多个IP时的解决方案。

2. 负载平衡器 是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。 一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。

3. 地理 DNS … 阅读全文

httpwatch的常用功能1–警告信息应用

  categories:资料  tags:  author:

原创文档,转载请将原文url地址标明

HttpWatch是强大的网页数据分析工具,集成在Internet Explorer工具栏。包括网页摘要、Cookies管理、缓存管理、消息头发送/接受、字符查询、POST 数据和目录管理等功能及报告输出等,本篇文档简要介绍httpwatch的相关功能的使用。

关于这个软件的下载请大家自行在baidu搜索,安装也比较简单,本篇文章仅仅做一个简单介绍,后面还会专门介绍这个工具的使用。

一.启动httpwatch

Httpwatch集成到ie中,因此必须先启动ie浏览器后,在启动httpwatch(新版本的httpwatch已经提供了其他浏览器的插件例如firefox,但是笔者没用过,这里仍然用ie系列介绍),如下图

wps_clip_image-27716

启动ie后,在工具栏上面点击httpwatch的图标,即可。有的ie这个图标不可见,看看工具栏是否有向下的箭头等。有时候ie会隐藏些图标等等。这个应该不是难题

二.录制http请求

通过httpwatch进行http分析的第一件事情就是录制http的相关请求,如下图

wps_clip_image-5574

图中,

位置1:处button是录制http请求的按钮

点击这个按钮后,通过这个浏览器访问的http请求,包括ajax的请求都会被记录下来(当然不包括:applet,activex技术的非http的网络请求,或者未通过浏览器的其他网络请求)。

相关录制信息在按钮下面白色部分区域显示出来,默认按照请求的先后顺序显示,用户可以根据标题行进行排序。

位置2:处button是停止录制http的按钮

点击停止录制后,将不在录制http相关请求等数据,但是已经录制好的数据仍然存在。

一般情况由于网站都比较复杂,做过多的录制反而不容易发现问题,数据太多,用户会沉浸数据中找不到出路啦。因此一般都是找到特定页面,比如认为有问题的,或者有特别要求等的页面,然后录制,录制一段数据后就点击停止按钮,这样http内容就固定了,不在增长,这个时候用就可以专心分析已有数据了,否则数据列表总是在变化,有时候你也不找分析道哪里了。

位置3:处按钮清楚已经录制的http信息的按钮, http的录制状态不发生变化

清除按钮清除当前录制的屏幕,有时候,录制的http数据很多,但是这些数据又不是当前想看的,或者这些数据是分析过的,没有问题,想看看后面的内容,这个时候,适当清除当前数据是非常必要的。

注意:这里是非常重要的看红色大字体。从开始录制也可以减少http列表中数据的数量。但是同清除是非常有差别的。有时候一些问题是用户要在一个也没操作若干次后才出现的,而一开始是没有问题的。因此若是从头开始录制http等信息,很可能看不到问题的。需要长时间录制的,但是长时间录制,列表中数据又非常多,因此需要在录制一段时间后,在问题出现之前清除没有用或者不关心的http数据,然后后面专心分析可能有问题的数据。因此这个清除按钮是非常必要的。

三.查看http资源

我们这里以本站www.iigrowing.cn为例,进行录制,录制结果如下:

wps_clip_image-30299

大致可以分为3个区域

区域1:是浏览器的正常显示区域

区域2:是httpwatch录制下来的 相关http信息,默认以时间调用为先后顺序,用户可以自行排序,排序方法非常简单,双击标题栏,这个大家都都懂得。

区域3:是某一个http的具体相关详细信息,默认情况下是列表中第一个项目的详细信息(请求的总体情况)。

四.查看http信息

如下图,显示http的总体信息

wps_clip_image-1533

如上图,鼠标单击红色区域部分,然后检查下面蓝色区域部分:

网络部分情况:

Elapsed Time:相关网络请求花费时间,上图看总体花费时间4.5秒钟

Network Round Trips: 大致上是网络请求次数, 网络请求次数54次左右

Downloaded … 阅读全文



快乐成长 每天进步一点点