- 博客(20)
- 资源 (26)
- 收藏
- 关注
原创 tomcat的servlet创建和执行过程分析
我们知道当tomcat收到一个请求会经过一系列的调用过程猜到servlet的执行。那么我们从这中间的standardWrapperValve的invoke开始。public final void invoke(Request request, Response response) throws IOException, ServletException {......
2013-11-30 00:53:24 3786 1
原创 Tomcat启动过程分析
先来看看Tomcat的架构吧:本文将介绍Tomcat启动时涉及到的组件和初始化,启动过程。1:Tomcat启动从org.apache.catalina.startup的main()函数开始。public static void main(String args[]) { if (daemon == null) { daemon = ne
2013-11-25 00:31:48 2160 2
转载 tomcat请求处理(续)
现在我们从connector.getContainer().getPipeline().getFirst().invoke(request, response)开始进入容器...前面说到容器的时候,anne一直都只有说三个容器,engine, host, context。其实在context之下,还有一个容器,叫做wrapper,每个wapper包含了一个servlet,因此前文没有接
2013-11-24 00:30:20 1039
原创 Tomcat之Connector处理过程分析
Tomcat以Servlet容器著称(处理Jsp和Servlet等动态资源的应用服务器)。由Tomcat的总体架构可知,Servlet容器由2个主要组件构成:Connector(连接器)和Container(容器)。Connector负责接收客户端的请求,而Container处理并响应该请求。由JavaEE规范可知,Servlet容器内部只处理HTTP协议的请求,但是对于连接器的设计来说,它可
2013-11-24 00:29:42 1913
原创 Tomcat源码Lifecycle分析
涉及到的类或接口:Lifecycle,LifecycleListener,LifecycleEvent,LifecycleSupport。Lifecycle接口: public static final String INIT_EVENT = "init"; public static final String START_EVENT = "start"; pub
2013-11-24 00:29:12 1460
转载 Eclipse导入Tomcat源码
想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug)。这里参考了网上一些资料,将自己操作过程记个流水账。准备:1.Tomcat源码下载这个里下载tomcat-6.0.33源码。2.ant安装,用于编译tomcat的源码。ant下载解压后将其bin添加到系统环境path中。3.IDE——选用Eclipse
2013-11-22 21:07:42 1434
转载 DirectByteBuffer
byte buffer一般在网络交互过程中java使用得比较多,尤其是以NIO的框架中;看名字就知道是以字节码作为缓冲的,先buffer一段,然后flush到终端。而本文要说的一个重点就是HeapByteBuffer与DirectByteBuffer,以及如何合理使用DirectByteBuffer。1、HeapByteBuffer与DirectByteBuffer,在原理上,
2013-11-18 14:42:05 1012
转载 NIO工作原理
NIO 包及工作原理针对传统I/O 工作模式的不足,NIO 工具包提出了基于Buffer(缓冲区)、Channel(通道)、Selector(选择器)的新模式;Selector(选择器)、可选择的Channel(通道)和SelectionKey(选择键)配合起来使用,可以实现并发的非阻塞型I/O 能力。 NIO 工具包的成员 Buffer(缓冲器)Buffe
2013-11-18 13:56:28 875
转载 负载均衡的原理与算法介绍
负载均衡的原理与算法介绍2009-06-22 10:28 服务器负载均衡算法有很多(持续性的和非持续性的),包括轮循算法、最少连接算法、响应时间算法、散列算法、最少连接失误算法,链路带宽算法等等。此外实际服务器(Real Server)可以被分配不同的加权值来调整被分配的流量。比如性能高的大型服务器可配置较大的加权值,而为性能较低的小型服务器设置较小的加权值。为了避免
2013-11-16 20:59:10 1517
原创 编译链接之----地址无关代码(PIC)总结
动态链接的进程空间分布:动态链接库的最终装载地址在编译的时候并不能确定,而是在装载时,装载器根据当前进程地址空间的空闲情况,动态的分配一块足够大小的地址空间给动态链接库。这样对地址的引用就可以采用地址重定位的方式来解决了。就向静态库那样在静态链接时通过修改指令进行静态重定位,我们的动态链接很容易也想到用装载重定位来进行动态重定位,这样就不用管它到底是装载到哪个地址啦。因为我们的指令地址和数据相
2013-11-10 01:28:22 5539
转载 C++对象模型之拷贝构造函数
拷贝构造函数(copy constuctor)通常C++初级程序员会认为当一个类为没有定义拷贝构造函数的时候,编译器会为其合成一个,答案是否定的。编译器只有在必要的时候在合成拷贝构造函数。那么编译器什么时候合成,什么时候不合成,合成的拷贝构造函数在不同情况下分别如何工作呢?这是本文的重点。拷贝构造函数的定义有一个参数的类型是其类类型的构造函数是为拷贝构造函数。如下:X::X(
2013-11-10 01:27:57 934
原创 01背包问题-----回溯法的解决方案
01背包问题是个经典的动态规划问题,但是也可以用回溯法来解决。只是这是找一个子树而不是一个全部树元素的排列。#includeusing namespace std;#define MAX 1024int C=7;//最大重量int N=4;//包个数int value[MAX];//记录每个包的价值int weight[MAX];//记录每个包的重量int current
2013-11-08 01:09:04 3742
原创 经典回溯问题----n皇后
n皇后问题不用多说,基本都知道。回溯算法也不用多说,还是比较简单的,给我的感觉就是不停的找一颗子树或一个排列,并加上判断以回溯。/** 经典回溯问题-----n皇后*/#includeusing namespace std;#define MAX 1024int N;int column[MAX];//每行对应的列值int sum=0;bool Place(int
2013-11-08 01:08:47 1428
原创 经典回溯问题-----旅行员售货问题
问题:某售货员要到若干城市去推销商品,已知各城市之间的路程(旅费),他要选定一条从驻地出发,经过每个城市一遍,最后回到驻地的路线,使总的路程(总旅费)最小。以上图为例:售货员要从1开始经过2,3,4又返回1。给我的感觉就是一个排列问题。在进行计算排列的同时要判断是否该排列有必要进行下去,因为可能在中途就可以判断这样肯定得不到我们想要的结果,此时采用回溯。代码实现:/*
2013-11-08 01:08:05 2222
原创 凸多边形最优三角剖分
动态规划的经典应用----凸多边形最优三角剖分 具体的细节讲解,我就不多说啦。网上很多资料,而且讲的非常详细。下面我贴下我做的,虽然大概思路懂了,但是去实现的时候,还是遇到了很多问题。主要是没有正确的理清思路。写下来记录一下。。#includeusing namespace std;#define MAX 1024int min[MAX][MAX];//m[i][j]节点i开始
2013-11-06 01:36:56 2152 1
原创 动态规划之多边形游戏
给定N个顶点的多边形,每个顶点标有一个整数,每条边上标有+(加)或是×(乘)号,并且N条边按照顺时针依次编号为1~N。下图给出了一个N=4个顶点的多边形。 游戏规则 :(1) 首先,移走一条边。 (2) 然后进行下面的操作: 选中一条边E,该边有两个相邻的顶点,不妨称为V1和V2。对V1和V2顶点所标的整数按照E上所标运算符号(+或是×)进行运算,得到一个整数;用该整数标注一个
2013-11-06 01:36:28 2253
原创 Floyd算法分析和实现
其实我觉得这个算法还是很简单的,但是看网上的资料感觉很高深,说的我稀里糊涂的。难道是我想错啦?希望大神帮我指正(真心没自信)。。谢谢。/*Floyd算法:可以解决任何两点间的最短距离问题。而dijkstra算法是解决源节点和目的节点两个之间的最短距离问题。Floyd算法思想: 如果两点的最短距离不是两点的带权路径的权值,而是通过中间的某个节点或多个节点才有了这个最短路径。所以我们对于任
2013-11-03 01:16:56 1851
原创 dijkstra算法分析和实现
dijkstra算法是解决源节点和目的节点两个之间的最短距离问题。其实对这个算法并不熟悉,前几天通过在网上查资料后决定自己实现这个算法,也不知道我理解的对不对。。如果不对,希望帮我指出,谢谢。/*dijkstra算法思想:定义两个集合S,T。S初始化为源节点,T初始化为其他所有节点,每次在T中找出到源节点中的最短距离。这样就满足一个 特性:源节点到S中的任何一个元素
2013-11-03 01:12:30 1525
原创 最小费用最大流
有了上一篇文章的基础,理解最小费用最大流就很容易了,但是我还是想了挺久的。当我看到最小费用最大流问题这篇文章,才开始觉悟。于是做了如下实现。/* 每次找出最短路径(该路径的单位费用和最小)记录该路径(next数组) 直到找不出这样一条路径(实际上是没有到达终点的路,因为图中的路是会不停的变动)。我们这里的是Distance[0]>=MAX*/#includeusing nam
2013-11-01 01:15:33 4485
原创 最大流算法
基本的知识,解决什么问题这些东西就不说啦。算法导论和很多大神博客都讲解的很详细。它其实就是不停的找增广路直到找不到为止。此时通过的所有流量就是最大流量。我推荐一篇文章:(基本过程讲解的很详细,我很收益。)Ford-Fulkerson 最大流算法下面是我的实现。参考了 最大流Ford-Fulkerson的算法实现#include#includeusing namesp
2013-11-01 01:13:13 2877 2
深入理解计算机系统
2013-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人