- 博客(8)
- 资源 (3)
- 收藏
- 关注
原创 数学的力量(一)
最近看一些数学方面的书,包括概率论、数理统计、随机过程、组合数学等,发现数学这个工具威力绝对是无穷的,若在编程中融入数学的一些思想,程序的运行效率会的得到前所未有的提升。遂将这些读书中的感想写成心得,起名曰“数学的力量”。 首先让我们从一个很简单的问题说起:有方程a+b+c+d+e=20,求其非负整数解的个数。题目很简单,首先想到的是使用回溯进行求解,遍历整个解空间数,对可行解进行
2012-10-31 21:17:28 1501
原创 三种最短路径算法
每次做ToperCoder碰到图论的题目都被虐的一塌糊涂,这次毛了,把最短路算法代码贴在这里存档.1、dijkstra-1代表没路径,path为一个数组来描述一个生成树,里面每个元素指向自己的父节点void dijkstra(vector > matrix,int start,int nodenum,int* dist,int* path){ vector tpath; i
2012-10-24 17:29:57 1348
原创 WebScarab关键源码分析(5)
接上篇分析FetcherQueue,这个大概是最麻烦的方法了,通过这个方法实现线程池进而实现异步操作,并将resquest和httpclient对象结合起来,同时还维护请求队列,并负责调用上层传下来的ConversationHandler方法。首先从构造函数说起: public FetcherQueue(String name, ConversationHandler handler
2012-10-22 16:32:50 1016
原创 WebScarab关键源码分析(4)
在上一篇博文里我们分析了URLFetcher的一些行为以及相关方法,顺着这个思路走,接着我们遇到的问题是:谁使用了URLFetcher?它是如何使用URLFetcher的?这就又牵扯到了两个关键的类:HTTPClientFactory和FetchQueue。首先从HTTPClientFactory说起,从名字我们也可以大概看出,这是一个工厂模式,这个工厂可以产生HTTPClient对象
2012-10-22 15:42:13 1155
原创 WebScarab关键源码分析(3)(续)
接上篇。接下来是两个if,如果接收到的是401或者407返回码(其含义分别为需验证和代理服务器需验证),则重新调整验证信息,并在下一个while里继续请求内容。再一个是判断如果request使用的是head方法,则setNobody(),因为head方法是不可能有内容部分的,调用setnobody后未读取的输入流_in将不会再尝试读取。接着判断connect域的内容,如果是不是keep
2012-10-12 17:33:44 738
原创 WebScarab关键源码分析(3)
今天读的比较多,就多写点吧。一个Http代理要实现的功能不外乎就四句话,保存客户端发过来的http请求,将请求发给服务器端,搜集返回结果,并发给客户端,如果用webscarab的数据结构来描述这个过程的话也就: 客户socket的输入流----->> request对象 ------->>>response对象------->>>客户socket输出流如果把这三个箭头当做3个过程,
2012-10-12 16:47:31 1131
原创 Webscarab关键源码分析(2)
接上篇说Request对象和Response对象Request代表一个请求,首先给出一个http请求头:GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1Host: net.tutsplus.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;
2012-10-12 09:39:26 982
原创 Webscarab关键源码分析(1)
最近写一个android上的东西,要用到http代理的一些东西,包括封装解析各种http request和response以及多连接并发管理各种麻烦的东西。虽然自己也能写,但感觉是在重复的发明轮子,不如拿一些现成的东西来用,而且更快更成熟。所以选择了Webscareb,打算把里面的http协议栈相关的东西裁减出来供自己使用,这就避免不了源码的阅读。但在网上搜了搜发现没有什么和这方面有关的资料,
2012-10-11 16:31:24 1306
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人