摘要:简介:这个分为两个部分的系列文章研究了 Apache Tomcat 服务器的系统架构以及其运用的很多经典设计模式。第 1 部分分析了 Tomcat 的工作原理,第 2 部分将分析 Tomcat 中运用的许多经典设计模式,如模版模式、工厂模式和单例模式等。通过学习它们的实践运用能给我们以后的软件设计起到一定的借鉴作用。门面设计模式门面设计模式在 Tomcat 中有多处使用,在 Request 和 Response 对象封装中、Standard Wrapper 到 ServletConfig 封装中、ApplicationContext 到 ServletContext 封装中等都用到了这种设计模
阅读全文
07 2013 档案
摘要:简介:这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用的很多经典设计模式。本文是第 1 部分,将主要从 Tomcat 如何分发请求、如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析 Tomcat 的工作原理,这也是一个 Web 服务器首要解决的关键问题。本文以 Tomcat 5 为基础,也兼顾最新的 Tomcat 6 和 Tomcat 4。Tomcat 的基本设计思路和架构是具有一定连续性的。Tomcat 总体结构Tomcat 的结构很复杂,但是 Tomcat 也非常的模块化,找到了 Tomcat 最核心的模块,您就抓住了 Tomcat 的“
阅读全文
摘要:本人有一段时间没有接触企业搜索引擎之连接器的开发了,连接器是涉及企业搜索引擎一个重要的组件,在数据源与企业搜索引擎中间起一个桥梁的作用,类似于数据库之JDBC,通过连接器将不同数据源的数据适配到企业搜索引擎系统本文将描述怎样构建连接器应用实例,并开发一个简单的客户端进行测试我们先用myeclipse...
阅读全文
摘要:今天有兴趣重新看了一下heritrix3.1.0系统里面的线程池源码,heritrix系统没有采用java的cocurrency包里面的并发框架,而是采用了线程组ThreadGroup类来实现线程池的(线程组类似于树结构,一个线程组包含多个子线程组或多个子线程,数据结构类似于composite模式,...
阅读全文
摘要:简单的说, 就是客户端根据WSDL 生成 SOAP 的请求消息, 通过 HTTP 传输方式(也可以是其它传输方式, 如 FTP 或STMP 等,目前 HTTP 传输方式已经成为 J2EE Web Service 的标准)传给对方, 服务方实现服务请求,Web Service(Web服务)将结果以 SOAP 的消息格式返回给客户端。如果人工去创建和解析基于 XML 格式的 SOAP 消息还是一个非常复杂的过程, 这样 JAX-RPC 应时而生, 他实现了J2EE Web Sercive 的远程分布式调用。JAX - RPC :Java APIs for XML-Based Remote Proc
阅读全文
摘要:锁的劣势 Java在JDK1.5之前都是靠synchronized关键字保证同步的,这种通过使用一致的锁定协议来协调对共享状态的访问,可以确保无论哪个线程 持有守护变量的锁,都采用独占的方式来访问这些变量,如果出现多个线程同时访问锁,那第一些线线程将被挂起,当线程恢复执行时,必须等待其它线程执行完他 们的时间片以后才能被调度执行,在挂起和恢复执行过程中存在着很大的开销。锁还存在着其它一些缺点,当一个线程正在等待锁时,它不能做任何事。如果一个线 程在持有锁的情况下被延迟执行,那么所有需要这个锁的线程都无法执行下去。如果被阻塞的线程优先级高,而持有锁的线程优先级低,将会导致优先级反转 (Prior
阅读全文
摘要:简介:Java™ 5.0 第一次让使用 Java 语言开发非阻塞算法成为可能,java.util.concurrent 包充分地利用了这个功能。非阻塞算法属于并发算法,它们可以安全地派生它们的线程,不通过锁定派生,而是通过低级的原子性的硬件原生形式 —— 例如比较和交换。非阻塞算法的设计与实现极为困难,但是它们能够提供更好的吞吐率,对生存问题(例如死锁和优先级反转)也能提供更好的防御。在这期的 Java 理论与实践 中,并发性大师 Brian Goetz 演示了几种比较简单的非阻塞算法的工作方式。在不只一个线程访问一个互斥的变量时,所有线程都必须使用同步,否则就可能会发生一些非常糟糕的事情。J
阅读全文
摘要:简介:在 JDK 5.0 之前,如果不使用本机代码,就不能用 Java 语言编写无等待、无锁定的算法。在 java.util.concurrent 中添加原子变量类之后,这种情况发生了变化。请跟随并行专家 Brian Goetz 一起,了解这些新类如何使用 Java 语言开发高度可伸缩的无阻塞算法。您可以在本文的 论坛中与作者或其他读者共享您对本文的看法。(也可以通过单击文章顶部或者底部的 讨论链接来访问讨论。)十五年前,多处理器系统是高度专用系统,要花费数十万美元(大多数具有两个到四个处理器)。现在,多处理器系统很便宜,而且数量很多,几乎每个主要微处理器都内置了多处理支持,其中许多系统支持数
阅读全文
摘要:所有EJB3.0开发商都必须提供一个JMS provider的实现,JMS provider对于message-driven bean而言绝对是必须的。JMS是一套用于访问企业消息系统的开发商中立的API。JMS在其中扮演的角色与JDBC很相似:JDBC提供一套用于访问各种不同关系数据库的公共API,JMS也提供了独立于特定厂商的企业消息系统访问方式。JMS使用消息服务(messaging service)来帮助enterprise bean发送信息,消息服务有时也称为消息代理。JMS是专门为不同java应用系统之间传递各类信息而设计的。使用JMS重新实现TravelAgentEJB修改11章
阅读全文
摘要:One of the central concepts of Aperture is the notion of a DataSource. A DataSource contains all information necessary to locate the individual inform...
阅读全文
摘要:转载:http://hyamine.iteye.com/blog/3977081. websphere工作管理器引用 WEB-INF/ibm-web-bnd.xmiXml代码 web.xmlXml代码wm/defaultcommonj.work.WorkManagerContainerUnshareable2. Spring配置注意:dataSource请不要使用Spring注入job bean需要实现Serializable接口以序列化Xml代码6000060000job beanJava代码packagecom.test.quartz;importjava.io.Serializable;
阅读全文
摘要:引言我们都听过 cache,当你问他们是什么是缓存的时候,他们会给你一个完美的答案,可是他们不知道缓存是怎么构建的,或者没有告诉你应该采用什么标准去选择缓存框架。在这边文章,我们会去讨论缓存,缓存算法,缓存框架以及哪个缓存框架会更好。面试“缓存就是存贮数据(使用频繁的数据)的临时地方,因为取原始数据的代价太大了,所以我可以取得快一些。”这就是 programmer one (programmer one 是一个面试者)在面试中的回答(一个月前,他向公司提交了简历,想要应聘要求在缓存,缓存框架,大规模数据操作有着丰富经验的 java 开发职位)。programmer one 通过 hash ta
阅读全文
摘要:转载:http://blog.codinglabs.org/articles/theory-of-mysql-index.html摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合
阅读全文
摘要:Classifier4J是一个轻量级的分类工具,支持贝叶斯分类、向量空间模型、信息摘要等。然而它却不支持中文,异常信息大致如下:Exception in thread "main" java.util.NoSuchElementException at java.util.HashMapValueIterator.next(HashMap.java:839) at java.util.Collections.max(Collections.java:
阅读全文
摘要:前面简单介绍了JOTM如何在Spring中配置,并如何使用它的JTA事务,本节将介绍Atomikos如何与Spring集成,并使用它的JTA事务。Atomikos,是一个基于Java的开源事务管理器,提供了事务管理和连接池,不需要应用服务器支持,支持JDBC和JMS事务,能提供对Spring,Hibernate的集成,有兴趣多了解的可以直接参考说明文当,有详细的介绍和使用说明。Atomikos可以到http://www.atomikos.com/products.html#ate下载,最新版本是3.2.0首先,仍然是一个相关的配置文件,用来设置相关的环境,打开解压缩后Atomikos根目录,拷
阅读全文
摘要:上节建立了一个简单的Java Application以及所需要的数据库和数据表,本节将介绍JOTM在Spring中的配置。JOTM(Java Open Transaction Manager)是ObjectWeb的一个开源JTA实现,本身也是开源应用程序服务器JOnAS(Java Open Application Server)的一部分,为其提供JTA分布式事务的功能。Spring对JOTM提供了较好的支持,提供了一个org.springframework.transaction.jta.JotmFactoryBean的支持类,在Spring2.0中也包含了JOTM相关的一些library。j
阅读全文
摘要:关于Spring JTA的介绍非常多了,这里就不再一再阐述其优越性怎么怎么了,直接开始正题。一个大致的需求如下,用户在进行增删改操作时,会同时更新2至3个数据库的数据表,操作需要事务来包裹,以便在操作其中一个数据库的数据表失败时,可以将其他数据库已执行的动作回滚。由于主框架是Spring,所以将研究的重点放在Spring所提供的的JTA事务上,google了很多资料,发现有几种实现的技术,如JOTM,Atomikos,以及J2EE容器所提供的JTA实现,如JBOSS也都提供了JTA的实现,不过个人喜好来讲,非常厌恶使用JNDI来访问容器组件,所以,重点放在JOTM和Atoimikos两种技术上
阅读全文
摘要:1. 什么是RSSRSS也叫聚合RSS,是在线共享内容的一种简易方式(也叫聚合内容, 简易供稿,Really Simple Syndication(真正简单的聚合 ))。通常在时效性比较强的内容上使用RSS订阅能更快速获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新. RSS是XML的一种。所有的RSS文档都遵循XML 1.0规范,该规范发布在W3C网站上。拿一个新闻网站来说,如果这个网站使用了RSS技术,也即表示这个网站按照RSS标准将其新闻罗列出来,生成一个RSS文件通常称为(RSS Feed,其实也就是一个*.xml文件)。其他网站或个人就订阅该新闻网站的新闻 ,其实也就
阅读全文
摘要:一、Apriori算法简介: Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。 Apriori(先验的,推测的)算法应用广泛,可用于消费市场价格分析,猜测顾客的消费习惯;网络安全领域中的入侵检测技术;可用在用于高校管理中,根据...
阅读全文
摘要:Linux下网络层防火墙iptables很强大,链路层也有类似的防火墙arptables,可针对arp地址进行限制,防止ARP网关欺骗攻击,再配合静态绑定MAC和向网关报告正确的本机MAC地址,有效解决ARP攻击问题。Centos5安装:123456#http://blog.onovps.comwget http://superb-sea2.dl.sourceforge.net/project/ebtables/arptables/arptables-v0.0.3/arptables-v0.0.3-4.tar.gztar zxvf arptables-v0.0.3-4.tar.gz cd ar
阅读全文
摘要:摘要 资源描述框架(Resource Description Framework RDF)是一种以XML格式描述元数据的标准格式。Jena是一种用于将关系数据库或是文本文件中所表示的数据建立为元数据模型的框架方法。Protégé 用用来创建RDF元数据文档的编辑工具。 建立这种数据库和文件的元数据模型需要由用户自己定义脚本。本文介绍介绍了SemantiRDFUtils这种脚本,它拥有多个功能块可以用于维护Jena RDF 元数据模型.(2200词,2005-7-4) By Venkata N.VAsam 与XML成为不同软件厂商之间数据交互的标准过程相似,资源描述框架(RD
阅读全文
摘要:在技术实现方面,语义Web和本体理论的研究日趋成熟,已经有许多成熟的工具或程序接口,诸如Jena、OWL API等API是系统实现的关键技术。这里介绍系统的可行性分析以及系统开发设计的关键技术。1 JenaJena[69]是来自于惠普实验室语义Web研究项目的开放资源,是用于创建语义Web应用系统的Java开发工具。Jena是语义Web和本体领域比较流行的开发工具,目前的版本为Jena 2.5.5。下面简单介绍Jena的一些功能。1) 读写RDF数据资 源描述框架(Resource Description Framework, RDF)是描述资源的一项标准,Jena文档介绍了RDF和Jena
阅读全文
摘要:20世纪西方科学哲学的发展,经历了向“语言研究”和“认知研究”的两大转向,认识论的研究在不断去形而上学化的同时,正在走向与科学研究协同发展的道路。作为当代人工智能科学的基础性研究,认知研究的目的是为了清楚地了解人脑意识活动的结构与过程,对人类意识的智、情、意三者的结合作出符合逻辑的说明,以使人工智能...
阅读全文
摘要:上文可见,JMS Native API使用起来不是特别方便。好在Spring提供了很好的JMS支持。(一)配置ConnectionFactory如果使用连接池的话,不要忘记activemq-pool-5.6.0.jarXml代码(二)配置一个Destination作为默认投递目标Xml代码(三)核心JmsTemplateXml代码(四)JMS事务Xml代码(五)编写消息驱动Bean,两个接口实现一个即可javax.jms.MessageListenerorg.springframework.jms.listener.SessionAwareMessageListenerJava代码packag
阅读全文
摘要:(一)什么是JMSjms即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。(二)常见的JMS提供商有哪些?IBM 的 MQSeriesBEA 的 Weblogic JMS serviceApache 的 ActiveMQ本系列都采用ActiveMQ(三)核心APIJMS第一个版本是1998年制定的,最后一个版本是在2002年制定的JMS1.1。本文基于JMS1.1JM
阅读全文
摘要:JMSlet’s you send messages containing for example a String, array of bytes or a serializable Java object, from one program to another. It doesn’t however use a direct connection from program A to program B, instead the message is sent to a JMS provider and put there in aQueuewhere it waits until the
阅读全文
摘要:ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。主要特点:1. 多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)3. 对Spring的
阅读全文
摘要:这里单独列出来我也是觉得有点必要的,毕竟JMS总体知识点并不多,这点可能被很多人所忽视.首选定义:消息的确认是指消息接受者接到消息,并做出了对应的处理之后,它将回送一个确认消息.对于非事务性会话,创建会话时应该指定确定方式,JMS定义了3种确认方式:JMS确认3种方式Auto_ACKnowledge自动通知.对于同步消费者,Receive方法调用返回,且没有异常发生时,将自动对收到的消息予以确认.对于异步消息,当onMessage方法返回,且没有异常发生时,即对收到的消息自动确认.Client_AcKnowledge客户端自行决定通知时机这种方式要求客户端使用javax.jms.Message
阅读全文
摘要:1.PTP模型PTP(Point-to-Point)模型是基于队列(Queue)的,对于PTP消息模型而言,它的消息目的是一个消息队列(Queue),消息生产者每次发送消息总是把消息送入消息队列中,消息消费者总是从消息队列中读取消息.先进队列的消息将先被消息消费者读取.发送方发消息到队列,接收方从队列接收消息,队列的存在使得消息的异步传输成为可能。和邮件系统中的邮箱一样,队列可以包含各种消息,JMS Provider 提供工具管理队列的创建、删除。JMS PTP 模型定义了客户端如何向队列发送消息,从队列接收消息,浏览队列中的消息.第一节中的代码就是PTP模型的.下面的表格中的就是PTP模型的
阅读全文
摘要:JMS全称是Java Message Service.其是JavaEE技术规范中的一个重要组成部分,是一种企业消息处理的规范.它的作用就像一个智能交换机,它负责路由分布式应用中各个组件所发出的消息.JMS提供了一组通用的Java API,开发者可以通过API来 创建,发送,接收,读取 消息.JMS是一种和具体实现厂商无关的API.它的作用类似于JDBC.不管底层采用何种消息服务器的实现,应用程序总是面向通用的JMS API编程.用的比较多的是apache的ActiveMQ,以前浮皮开发过ActiveMQ.了解不深,但这个总体国内用的还是非常多的.现在公司采用的都是JBOSS那帮家伙的一套东西,
阅读全文
摘要:今天的任务就是在一台新的服务器上继续部署activemq。其实都蛮简单的.首先先下载包:115U盘下载2 上传到linux下的某个文件夹下。解压缩tar -zxvf apache-activemq-5.5.1-bin.tar.gz3 配置持久化修改conf的activemq.xml文件在broker的同级目录下增加如下节点 >然后在 的下面增加 4 今天我的时间基本上耗在这步由于忽略了这步,又不报错,又启动不了 郁闷。就是吧oracle的驱动包copy到activemq目录的lib下。5 到bin目录下 使用 ./activemq start 启动大功告成!!!!
阅读全文