自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (7)
  • 收藏
  • 关注

转载 Jetty的ServletHandler分析

前面很多文章都提到过ServletHandler这种类型,它在整个http的处理中所占的位置如下:(1)connector -> (2)server->(3)contextHandlerCollection->(4)WebAppContext->(5)ServletHandler->(6)Servlet从上面整个http的处理过程来看,ServletHandler应该算得上是最接近

2014-02-28 23:49:31 8566

转载 Jetty的SelectChannelConnector分析

以前的一篇文章曾经分析过jetty的socketConnector,其实它的实现相对来说是比较简单的了,但是由于它是阻塞的io,所以在性能上并不好。。一般情况下都推荐使用SelectChannelConnector来替换掉。。。也就是所谓的NioConnectorSelectChannelConnector的实现就要复杂的多了。。而且因为将底层的io揉在了一起。。。。所以感觉这一块的代码不

2014-02-28 23:48:04 11786

转载 Java的ClassLoader分析与Jettty的WebAppClassLoader

classLoader,从名字就可以知道,用于加载class的东西。我们知道在java中,源文件是会被编译成class文件的,我们的程序的运行也是需要依赖这些编译成字节码的class文件,而这些字节码文件就必须要被classLoader加载到内存之后才能使用。。。如果classLoader无法加载到我们要用的类型的class文件,那么将会抛出classnodfound的异常。。。先

2014-02-28 23:46:45 1064

转载 Jetty的Servlt请求路由与ContextHandlerColleection的实现

们一般会在tomcat下面部署多个应用,每个应用都对应着一个自己的context,那么就需要一个collection将他们管理起来,而且需要对http请求进行路由,将http请求交个相应的应用来处理。。。。这件事情在jetty中就是ContextHanlerCollection干的事情,它维护者当前jetty中部署的应用。。。将http请求交给匹配的context,然后context再转由

2014-02-28 23:45:34 2907

转载 Jetty之WebAppContext

前面的文章已经提到过,在servlet容器中,每一个webapplication都对应一个contextHandler,但是前面讲到的contextHandler的定义主要是实现了将http的请求进行路由,将其交给sessionHandler,然后再交给servletHandle然后转交给对应的servlet的来进行处理。。。这里的WebAppContext是对其的一种补充,完善了weba

2014-02-28 23:44:42 19238

转载 Jetty之ContextHandler

这篇文章要分析的类型是非常重要的一个类型...ContextHandler,从名字上来看就是上下文的handler...这里普及一下知识:每一个WebApp都对应相应一个context,那么也就对应一个contextHandler当servlet容器收到外部的http请求之后,会根据其请求的path信息来找到相应的webapplication来处理,也就是要找到对应的context

2014-02-28 23:43:39 7037

转载 Jetty之HandlerWrapper与链式调用的实现

在以前读netty的代码的时候,有一个很重要的东西,那就是pipeline,在上面通过对参数的传递实现了handler的链式调用,在jetty中也涉及到链式的调用,不过它是基于装饰器模式来实现的...与netty的不一样...不过个人觉得还是netty的pipeline更加直观简洁吧.....HanlderWrapper从类型的名字就大概知道了它是对handler的一种包装....它是je

2014-02-28 23:41:43 3099

转载 Jetty之SocketConnector

首先说一下connector这东西是干嘛用的。。。。其实按照字面的意思大概就能知道它是用于接收和维护与远程的连接的。。。。它会利用建立的serversocket。。。这里还需要说明一下。。。一般情况下不应该使用这个类型的。。因为还有NIO的实现。。。但是我之所以先看SocketConnector是因为它的实现更简单一些。。先从简单的做起嘛。。毕竟他们上层的接口都是一样的。。。。。

2014-02-28 23:41:23 4239

转载 Jetty之SocketEndPoint分析

这里Endpoint的概念可以按字面来当成是端点吧,因为TCP通信是双工的,那么就存在着两个端点。。。这里我们先来看看SocketEndPint的继承体系:这个够简单的吧,这几就是直线型的,那么这里我们先来看看EndPoint接口的定义吧:[java] view plaincopy//端点的定义  publ

2014-02-28 23:40:24 1744

转载 Jetty之AbstractHandler

因为要弄清楚java Web那一套东西,所以就要弄懂整个servlet定义的一些东西,那么就需要搞清楚servlet的容器是怎么搞的,其实最出名的servlet容器应该是tomcat吧,不过我准备拿jetty的源码开刀,因为它更轻量。。。这篇文章来看看AbstractHandler的定义吧,因为jetty可以说是面向handler的服务器,这一点课netty很相似。。。先来看看它的继承体系

2014-02-28 23:39:32 5055

转载 ZeroMQ(java)中监控Socket

基本上ZeroMQ(java)中基本的代码都算是过了一遍了吧,不过觉得它在日志这一块貌似基本没有做什么工作,也就是我们通过日志来知道ZeroMQ都发生了什么事情。。而且由于ZeroMQ中将连接的建立和重连接都进行了隔离,用户不需要做什么事情来维护连接,当然这样做的好处是使程序员的编码工作变少了,但是当然也有不好的地方,那就是用户失去了对ZeroMQ整个运行阶段的控制。。例如,当我们

2014-02-28 23:24:21 5075 1

转载 ZeroMQ(java)中的数据流SessionBase与SocketBase

前面的文章中已经比较的清楚了ZeroMQ(java)中如何在底层处理IO,通过StreamEngine对象来维护SelectableChannel对象以及IO的事件回调,然后通过Poller对象来维护Selector对象,然后用IOObject对象来具体的管理SelectableChannel对象在Poller上面的注册,以及事件回调,他们之间的关系可以用下面的图形来简单的描述一下:

2014-02-28 23:22:37 1909

转载 ZeroMQ(java)中组件间数据传输(Pipe的实现)

在ZeroMQ(java)中,整个IO的处理流程都是分层来进行的,当然处于最下端的肯定是前面介绍过的poller以及StreamEngin了。。。。涉及到上层的话就还有session,以及socket,先用一张图来大概的描述一下整个层次关系吧。。整个分层的结构大概就是这样吧,其中poller与StreamEngin是怎么交互的,这个就不说饿了吧,然后Session这

2014-02-28 23:21:13 2364

转载 ZeroMQ(java)中对IO的封装(StreamEngine)

哎,各种各样杂七杂八的事情。。。好久没有看代码了,其实要搞明白一个与IO相关的框架,最好的办法就是把它的I/0的读写两个过程搞清楚。。。例如在netty中,如果能将eventLoop的运行原理搞清楚,然后摸清楚整个I/O读写两个过程,那么也就差不太多了。。。。这次来看看ZeroMQ(java)中如何来处理I/O的,先来看看一个类型的定义,IOObject类型,这个类型应该扮演的是工具类的形

2014-02-28 23:20:38 3003

转载 ZeroMQ(java)之I/O线程的实现与组件间的通信

算是开始读ZeroMQ(java)的代码实现了吧,现在有了一个大体的了解,看起来实现是比较的干净的,抽象什么的不算复杂。。。这里先来看看它的I/O线程的实现吧,顺带看看是如何实现组件的通信的。。。。首先要搞清楚I/O线程的实现,就先要弄懂一个类型,Poller(zmq.Poller.java),可以将其看成是对selector的一个封装,同时它还要管理定时事件,看了这么多代码,发现

2014-02-28 23:19:00 3622

转载 ZeroMQ(java)之负载均衡

我们在实际的应用中最常遇到的场景如下:A向B发送请求,B向A返回结果。。。。但是这种场景就会很容易变成这个样子:很多A向B发送请求,所以B要不断的处理这些请求,所以就会很容易想到对B进行扩展,由多个B来处理这些请求,那么这里就出现了另外一个问题:B对请求处理的速度可能不同,那么B之间他们的负载也是不同的,那么应该如何对请求进行分发就成了一个比

2014-02-28 23:17:15 9793 2

转载 ZeroMQ(java)之Router与Dealer运行原理

在开始这部分的内容之前,先来看看ZeroMQ中HWM概念---High-Water Marks当系统的数据量很大,而且发送频率很高的情况下,内存就很重要了,如果处理不好会出现很多问题,例如如下场景:A很快速的向B发送数据,但是B处理起来却很慢,这样子的话,数据就可能会在A的发送缓冲区,或者B的接收缓冲区累计起来....如果双方速度差太多,就很容易出现问题.......在Ze

2014-02-28 23:16:24 12705 1

转载 ZeroMQ(java)之Router/Dealer模式

在开始之前先把guid里面提到的几个ZeroMQ的特性列一下吧:(1)ZeroMQ有自己的I/O线程来异步的处理I/O,而且后台采用了无锁的数据结构(2)在ZeroMQ中,所有的组件都可以动态的加入和移除,而且可以启动组件以任何的顺利,例如我们可以先启动request,再启动response,依然可以工作,而且还会自动的重连接。(3)如果有需要的话,会自动的将message

2014-02-28 23:12:06 18154 1

转载 ZeroMQ(java)之Push/Pull模式

在ZeroMQ中并没有绝对的服务端与客户端之分,所有的数据接收与发送都是以连接为单位的,只区分ZeroMQ定义的类型,例如Response与Request,Publisher与Subscriber,Push与Pull等。。。例如在前面我们最开始的Response/Request模式,因为只有一个Response端,而有多个Request端,所以我们选择在Response端调用bind方法来

2014-02-28 23:10:46 9915 3

转载 ZeroMQ(java)之Publish/Subscribe模式

前面的文章介绍了比较简单的Request/Subscribe模式, 这篇文章介绍更为经典的Publish/Subscribe通信模式用来ZeroMQ的实现,其通信方式如下图:客户端(subscriber)向服务器(publisher)订阅消息,然后服务器可以将消息推送到所有订阅了消息的客户端,这里也可以理解为广播吧。。。。好了,闲话不多说了,直接

2014-02-28 23:09:19 9260

转载 ZeroMQ(java)之Requerst/Response模式

自己最开始是在cloud foundry中接触过消息服务器(nats),或者说是消息中间件,也算是初步知道了一个消息服务器对于分布式的网络系统的重要性,后来自己也曾想过在一些项目中使用它,尤其是在一些分布式的环境下,可以极大的方便整个系统的实现。。。。例如如下的形式:在中间通过一个消息中间件,可以很方便的将各个woker的数据发送到最终的统计服务器来做数据的

2014-02-28 23:07:49 16901 3

转载 Linux core 文件介绍

1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。 2. 开启或关闭core文件的生成用以下命令来阻止系统生成core文件:ulimit -c 0下面的命令可以检查生成core文件的选项是否打开:ulimit -a该命令将显示所有的用户定制,其中选项-a代表“al

2014-02-25 23:19:54 882

转载 线上应用故障排查之二:高内存占用

上一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查。搞Java开发的,经常会碰到下面两种异常:1、java.lang.OutOfMemoryError: PermGen space2、java.lang.OutOfMemoryError: Java heap space要详细解释这两种异常,需要简单重提下Java内存模型。 Java内存模型是描

2014-02-24 20:57:57 1801

转载 线上应用故障排查之一:高CPU占用

一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题。但是,怎么定位到具体线程或者代码呢?首先显示线程列表:ps

2014-02-24 20:40:13 1959

转载 轻量级HTTP服务器Nginx(常用配置实例)

Nginx作为一个HTTP服务器,在功能实现方面和性能方面都表现得非常卓越,完全可以与Apache相媲美,几乎可以实现Apache的所有功能,下面就介绍一些Nginx常用的配置实例,具体包含虚拟主机配置、负载均衡配置、防盗链配置以及日志管理等。 一、 虚拟主机配置实例下面在Nginx中创建三个虚拟主机,需要说明的是,这里仅仅列出了虚拟主机配置部分。  http {   serv

2014-02-20 23:32:46 1076

转载 Socket重要参数讲解

Java Socket的api可能很多人会用,但是Java Socket的参数可能很多人都不知道用来干嘛的,甚至都不知道有这些参数。backlog用于ServerSocket,配置ServerSocket的最大客户端等待队列。等待队列的意思,先看下面代码public class Main { public static void main(String[] ar

2014-02-19 23:46:11 1872

原创 Netty的核心组件

ChannelA nexus to a network socket or a component which is capable of I/O operations such as read, write, connect, and bind. ChannelFactoryThe main interface to a transport that creates a Chan

2014-02-19 22:42:53 3080

转载 HttpClient通过代理进行请求

在浏览一些网站的时候由于各种原因,无法进行访问。 这时我们需要通过IE,FireFox进行Http的代理设置, 当然HttpClient也为我们提供这样的设置 使用匿名代理 Java代码  HttpClient httpClient = new HttpClient();  //设置代理服务器的ip地址和端口  httpClient.getHostConfi

2014-02-19 13:15:13 1829

转载 Netty初步之Hello World

Java的学习是从Hello word开始的,Netty也从这里开始吧。这里的例子比较简单,后面会慢慢的对Netty的一些复杂应用、Netty的原理进行一些解析。本文主要是列举Netty初步使用的一个最基本的例子,具体的说明在代码中都有了,所以也不再重复。1、ClientThread.java[java] view plaincopypa

2014-02-18 23:43:50 4161

转载 Netty源码解读(四)Netty与Reactor模式

一:Netty、NIO、多线程?时隔很久终于又更新了!之前一直迟迟未动也是因为积累不够,后面比较难下手。前面的文章我们分析了Netty的结构,这次咱们来分析最错综复杂的一部分-Netty中的多线程以及NIO的应用。理清NIO与Netty的关系之前,我们必须先要来看看Reactor模式。Netty是一个典型的多线程的Reactor模式的使用,理解了这部分,在宏观上理解Netty的NI

2014-02-16 21:55:13 1772

转载 Netty源码解读(三)Channel与Pipeline

Channel是理解和使用Netty的核心。Channel的涉及内容较多,这里我使用由浅入深的介绍方法。在这篇文章中,我们主要介绍Channel部分中Pipeline实现机制。为了避免枯燥,借用一下《盗梦空间》的“梦境”概念,希望大家喜欢。一层梦境:Channel实现概览在Netty里,Channel是通讯的载体,而ChannelHandler负责Channel中的逻辑处理。

2014-02-16 21:52:09 2278

转载 Netty源码解读(二)Netty中的buffer

上一篇文章我们概要介绍了Netty的原理及结构,下面几篇文章我们开始对Netty的各个模块进行比较详细的分析。Netty的结构最底层是buffer模块,这部分也相对独立,我们就先从buffer讲起。What: buffer二三事buffer中文名又叫缓冲区,按照维基百科的解释,是”在数据传输时,在内存里开辟的一块临时保存数据的区域”。它其实是一种化同步为异步的机制,可以解决数据传输的速

2014-02-16 21:51:02 2200

转载 Netty源码解读(一)概述

Netty和Mina是Java世界非常知名的通讯框架。它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户Netty.io。关于Mina已有@FrankHui的Mina系列文章,我正好最近也要做一些网络方面的开发,就研究一下Netty的源码,顺便分享出来了。 Netty目前有两个分支:4.x和3.x。4.0分支重写了很多东西,并对项

2014-02-16 21:47:59 1520

原创 NIO与Netty的Channel组件

Java NIO中提供针对TCP/IP的Channel封装如下:SelectableChannelA channel that can be multiplexed via a {@link Selector}.SocketChannelA selectable channel for stream-oriented connecting sockets.Ser

2014-02-16 21:16:04 1744

嵌入式Linux知识培训

非常经典哦 言简意赅 不用多说! 主要包括以下四部分内容: 一、嵌入式Linux开发的基本知识 二、Linux下使用C语言进行系统开发 三、面向嵌入式Linux的GUI系统的体系结构及二次开 发 四、基于Linux OS Smart Phone的体系结构及开发内容

2009-02-17

基于Agent的智能搜索平台

我们所做的电影DVD的在线购物系统是基于Agent的智能搜索平台,它为顾客提供海量信息的搜索和个性化的偏好智能筛选服务。 每当一个顾客注册时,我们便为该顾客创建一个记录,记录顾客注册的信息和网上购物的行为。在日后的使用过程中,他不断变化的真实的偏好将反映在实际的购物行为上,通过对其进行分析,挖掘潜在的数据,来判断顾客的兴趣所在,并且系统将试图不断的修正现有的偏好记录来模拟顾客的行为。

2009-02-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除