10 2012 档案
摘要:web缓存作用:减少网络的数据传输,增快响应时间,减轻服务器压力web缓存:客户端缓存 和 共享式缓存客户端缓存一般通过浏览器来实现共享式缓存一般通过缓存服务器来实现控制缓存的http header信息http1.1Cache-Control:no-stroe|no-cache|maxage对于http响应报文no-stroe:告诉缓存服务器不要缓存内容no-cache: 告诉缓存服务器对于缓存的内容都需要座有效检测maxage:设置一个相对过期时间,单位秒 例如maxage=3600 一小时之后过期对于http请求报文no-store:强制缓存服务器请求web服务器返回内容,并且删除缓存no
阅读全文
摘要:100 响应码:http/1.1 100 continue主要是客户端和服务器段进行意向,客户端请求头部里面 Expect: 100 continue ,服务端如果ok,就响应这个,如果不ok 返回 407影响码不常用的http header 属性Vary 主要是用来和服务器进行协商,根据Vary的属性返回适合的内容,而Vary的属性值是 某一个 header属性,例如Vary: User-Agent则是服务器 根据User-Agent的值来返回不同的响应实体Age,这个主要是代理使用的,代理缓存了服务器的数据,但是不知道啥时候过期,给出一个猜测值给客户端,可以是绝对时间以及相对时间(秒)Ag
阅读全文
摘要:重定向技术1 通过http 3XX重定向技术需要一台代理服务器,浏览器需要连接代理服务器可以绕过代理,直接访问实际的服务器,通过web负载均衡和轮训算法2 通过DNS重定向一个域名对应多个IP地址,DNS解析域名的时候返回其中一个IP地址负载均算法,轮训算法,物理路径最短算法3 通过IP,MAC地址,在交换机一层进行重定向由于在交换机这一层进行,闲置比较多,两个交换机必须是物理上直接连接的4 通过IP分组,在路由器一层进行重定向通过改写IP地址实现IP的重新转发,要复习以下TCP/IP协议,这里面的原理不是太懂
阅读全文
摘要:在http请求过程中,可以对实体内容进行编码通过content-encoding头部说明,一般使用 gzip,conpress,deflate,identity默认是identity,不对实体进行编码,使用最广泛的是gzip,主要是用来对内容进行压缩,减少网络传输的数据头部使用accept-encoding来说明客户端可以那些编码,可以使用指定多个,说明优先级,编码之间用;隔开content-type,实体MIME类型 text/html 一般有主类型和子类型,这个可以在MIME中心进行注册content-length 这个比较重要,实体的长度,主要是在http1.1中作为数据发送完成的标示在
阅读全文
摘要:在前面三篇文章中,介绍了关于分布式系统中数据一致性的问题,这一篇主要介绍CAP定理以及自己对CAP定理的了解。CAP定理是2000年,由Eric Brewer 提出来的Brewer认为在分布式的环境下设计和部署系统时,有3个核心的需求,以一种特殊的关系存在。这里的分布式系统说的是在物理上分布的系统,比如我们常见的web系统。这3个核心的需求是:Consistency,Availability和Partition Tolerance,赋予了该理论另外一个名字 -CAP。Consistency:一致性,这个和数据库ACID的一致性类似,但这里关注的所有数据节点上的数据一致性和正确性,而数据库的AC
阅读全文
摘要:今天公司的一位同学提到了java的一个编码规范:拼装字符串要用StringBuilder的append方法,而不要用String的+ 或者 +=链接符号就是说,不能按照下面的方式写 String str = ""; for (int i = 0; i < 1000; i++) { str = str + i; }要按照下面的代码进行改写 StringBuilder sb = new StringBuilder(); for (int i = 0; i < 1000; i++) { sb.append(String.valueOf(i)); }目前大部分应用使用的
阅读全文
摘要:服务器要求客户端进行认证,可以通过401响应码,以及头部加上www-authenticate:Basic realm=”xxxx”需要对client进行验证,有两种方式基本认证和摘要认证,基本认证通过base64对user:password进行加密,然后发送给服务器,通过头部 Authentication: Basic 密文 发送给服务器,由服务器进行验证。这个是可逆的,可以通过密文知道用户的用户名和密码摘要认证:采取生成消息摘要的方式对用户进行认证。一般采取md5,对user:password:请求头部:实体报文 进行摘要,不可逆,不能通过密文算出原文,安全性较高,但是一般可以通过截获请求
阅读全文
摘要:一口气看了图灵出版社的《罗素的故事》,对于里面的提到的一些问题还是比较有兴趣的,聊聊自己所想到的吧比如逻辑的本质和定义是什么 逻辑的定义:一切新的,决定性的推理,这个有点像演算系统。本质是什么,里面貌似没有说,我个人理解逻辑的本质就是根据现有规则,进行演算的过程。罗素悖论罗素最重要的发现,就是我们听到的的:罗素悖论什么罗素悖论:我记得少年包青天里面有一个故事,大概是一个王爷想惩罚包拯,给包拯出了一个题目,说如果包拯猜对了他在想什么,就可以放了他,如果猜错了,就要惩罚他。包拯就说:王爷想惩罚我。最后王爷没有惩罚包拯,因为如果包拯猜对了,王爷必须放了他,如果猜错了,说明王爷没有想惩罚包拯。导致罗素
阅读全文
摘要:web服务器识别用户的几种方式:1 透过客户端ip来确定:多个用户可能在同一个电脑上使用,不能准备识别2 胖URL:服务器每次在生成URL的时候加入用户的识别码 ,常见就是就是 http://www.test.com/index.php;sessionid=1234563 通过http请求头部client-ip:client-ip并不是http定义的标准头部,并且在存在代理的情况也不会太准确4 通过httpauthentication 机制:web服务器生成304的响应 http/1.1 304 authentication required ,要求客户端输入用户名和密码,不能实现跨站点。并且
阅读全文
摘要:web机器人要标示机器人 通过http User-Agent进行声明原理:通过root路径->页面中的anchor 递归下去,基本上root页面就是一个网站的首页web机器需要知道那些url已经爬过,由于url不规范,需要先规范化url,比如添加默认端口80,格式化url中的特殊字符用 %XX代替,去掉查询字符串中的#等等web机器人爬去页面主要注意:1 避免陷入环路,比如a包括b,b里面有包括a2 避免被恶意网站陷入死循环,比如动态页面,每爬取一次,重新新生成的动态内容,新的动态页面继续生成动态页面,循环下去3 url连接回路,比如http://www.test.com/index.h
阅读全文
摘要:这一几天一直在回顾事务相关的知识,也准备把以前了解皮毛的知识进行一些深入总结,虽然这一些知识并没有用到,但是了解其实现原理还是很有必要的,因为知道了原理,你也能把它实现出来。在上一节事务的编程模型里面,主要说明了三种编程模型,一般情况下,我们都接触的是单一资源的事务,也就是单独对一个数据库进行操作。如果需要跨多个资源保证事务一致性举个例子:在ATM机取钱的时候,需要对用户的账户进行扣款处理,然后发送一条消息给消息服务器(假设消息服务器是用JMS实现的),由消息服务器异步通过短信通知用户。如果用户取款失败,那么消息服务器不应该发送短信给用户。如何保证 用户帐务扣款 和 消息服务器的消息保持一致性
阅读全文
摘要:原文地址http://www.infoq.com/cn/news/2012/10/big-company-disease-1?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_news_clkhttp://www.infoq.com/cn/news/2012/10/big-company-disease-2?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_
阅读全文
摘要:网关:连接客户端和服务器端的代理,主要是用来进行协议转换客户端网关:客户端使用非http协议和网关交互,网关使用http协议和web服务器交互服务器端网关:客户端使用http协议和网管交互,网管使用非http协议和应用程序交互比较常见的网关:http/ftp https/http http/https常用在存在防火墙的情形,比如防火墙只允许80端口的http协议通过,又要保证客户端数据安全传输的话,就可以使用https/http网关CGI网关:其实是把URI中以cgi开始的请求转发到cgi处理程序,也算是一中网关了。web隧道:web隧道的原理是通过http连接到网关,网关通过tcp协议和服务
阅读全文
摘要:在上一篇文章里面写了关于事务的一些特性,这里在谈谈事务的编程模型。什么叫做事务的编程模型,这个问题比较难以回答,其实简单的一句话,就是我们如何去使用和控制事务。在java平台里面,有三种事务编程模型:本地事务模型,编程式事务模型,声明式事务模型(当然我不是太认同这种说法,并不是太准确,不过大体也就这么回事情)本地事务模型本地事务模型:不用事务的编程框架来管理事务,直接使用资源管理器来控制事务。典型的就是java.sql.Connection 中的 setAutoCommit、commit、rollback方法,见下面一段代码,直接使用资源管理器进行事务控制 Connection ...
阅读全文
摘要:web缓存作用:减少网络的数据传输,增快响应时间,减轻服务器压力web缓存:客户端缓存 和 共享式缓存客户端缓存一般通过浏览器来实现共享式缓存一般通过缓存服务器来实现控制缓存的http header信息http1.1Cache-Control:no-stroe|no-cache|maxage对于http响应报文no-stroe:告诉缓存服务器不要缓存内容no-cache: 告诉缓存服务器对于缓存的内容都需要座有效检测maxage:设置一个相对过期时间,单位秒 例如maxage=3600 一小时之后过期对于http请求报文no-store:强制缓存服务器请求web服务器返回内容,并且删除缓存no
阅读全文
摘要:URI和资源之间的映射apache服务器中,通过docroot进行设置,一般是DocRoot+请求部分URI可以对不同的域名分别进行映射,利用virtualHost进行映射代理和网关的区别传统定义:代理是连接两个使用相同协议通讯的两个端点,网关是用来对两个使用不同协议进行通讯端点进行协议转换。例如http/POP协议网关,可以把http协议转化为邮件pop3协议,也就是我们所说的web邮箱代理的几个作用:1 web缓存;缓存图片,文档等,加快访问速度2 控制文档访问权限:对权限进行控制3 内容过滤:儿童黄色站点的过滤4 请求转码:例如对请求内容的编码进行转化 utf-8 转化为 gb23125
阅读全文
摘要:今天在《外刊IT评论》里面看到这样一篇文章 《一个程序员怎么能做出这样的事情》 ,觉得作者的观点非常有意思,下面看看文章中的一段代码public void Execute() { ArrayList empIds = PayrollDatabase.GetAllEmployeeIds(); foreach (int empId in empIds) { Employee employee = PayrollDatabase.GetEmployee(empId); ...
阅读全文
摘要:在NoSql和内存数据库如此流行的今天,在谈关系型数据库的貌似有点落伍了,不过在传统软件行业和对数据一致性和安全性要求比较高的行业,关系型数据库还是比较普遍的。正好最近看到一个数据库事务相关的知识,自己在这几年的工作中用的比较多,也在事务上面犯过很多的错误,正好借这个机会整理以下。事务的ACID属性A(Atomicity)原子性: 在一个事务上下文里面,对数据库进行的任何操作,必须保证是原子的,也就是说要么不做,要么全部都做,不能只做一部分。比如insert一条数据和delete一条数据,不知能只做insert操作而不做delete操作C(Consistency)一致性:在事务的处理过程中,数
阅读全文
摘要:http报文组成请求报文:Method URL HTTP/Vershon头部信息(Header)实体信息(Entity)Method:主要包括,head,put,delete,get,post,head其中head,get,post常用 put,delete 不常用head只是需要返回影响头部响应报文:HTTP/版本号 状态码 描述头部信息实体信息一般情况下 ,都是HTTP/1.1头部信息一般包括:通用头部:date,charset,cach-control,parma,connection,content-type,host请求头部:agent,transfer-encoding,accep
阅读全文
摘要:http数据传输过程1:查找dns,获取服务器ip地址2:建立连接3:发送请求报文4:接受响应报文5:处理响应6:关闭连接tcp/ip协议性能问题延迟确认问题:由于tcp/ip协议的可靠性,接收方必须发送请求确认报文,由于请求确认报文长度短,单独发送的话浪费带宽,一般会把请求确认报文附带在请求响应报文上发送,所以请求确认报文会先放在内存缓冲区里面,等待有响应报文的时候一起发送,一般会有延迟。tcp delay问题:对于一般情况,请求报文发送,tcp/ip软件会立即把报文组装成ip报文,发送出去,及时有大量单字节报文,也会发送出去,回给网络带来大量的拥塞。为了制止这种不道德行为,有一个算法(忘记
阅读全文