摘要:
在过去几年,Java模块化一直是一个活跃的话题。从JSR 277(现已废止)到JSR 291,模块化看起来是Java进化过程中的必经一环。即便是基于JVM的未来语言,比如Scala,也考虑了模块化的问题。本文是关于模块化Java系列文章中的第一篇,讨论模块化的含义,以及为什么要关注它。什么是模块化?模块化是个一般概念,这一概念也适用于软件开发,可以让软件按模块单独开发,各模块通常都用一个标准化的接口来进行通信。实际上,除了规模大小有区别外,面向对象语言中对象之间的关注点分离与模块化的概念基本一致。通常,把系统划分外多个模块有助于将耦合减至最低,让代码维护更加简单。Java语言并不是按照模块化思 阅读全文
2012年11月1日 #
2012年10月31日 #
摘要:
简介在本教程中,我们将通过解释性的例子介绍 Apache Tika 框架并解释它的概念(比如 N-gram、解析、mime 检测以及内容分析),这些例子不仅适用于老练的软件开发人员,而且也同样适用于内容分析和编程的初学者。我们假设您具有 Java™ 编程语言的应用知识以及用于分析的足够内容。通过本教程,您将学会:Apache Tika 的 API、最相关的模块以及相关的函数Apache Nutch (Tika 的先驱之一)以及它的 NgramProfiler 和 LanguageIdentifier 类,它们最近被移植到了 Tika代码页检测器项目 cpdetector 及其功能什么是 Apa 阅读全文
2012年10月29日 #
该文被密码保护。 阅读全文
2012年10月28日 #
摘要:
前不久,刚学习了jms的简单入门,后面紧接着就做了一个关于jms的负载均衡的项目,做完之后颇有打通任督二脉的感觉,感觉很多之前不是很理解的东西,都有些理解了,比如服务器端的监听、具体的jms的使用等,收获有点大。流程如下图所示:客户端:xml配置,这里用到了两台服务器,connectionFactory便可以看出,因为传的是对象,用到了转换器<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans&q 阅读全文
摘要:
这几天刚学习了一下消息队列,一直苦于找不到很好很简单的上手资料,苦找几天的资料,自己终于把这一块搞的差不多理解了,下面是自己的学习小demo,仅供上手,大致理解怎么跑,方便那些和我一样苦苦找寻资料的用户吧,废话不多说,直接上代码:1、首先引入activeMQ和spring的jar包 ,直接上图上面的jar包第一个是activeMQ的,还有spring的commos-logging,spring综合包,里面包括了spring-jms,另外还要引入slf4j的两个包 (jar包见管理--文件中的 activeMQ所需jar包 如果不能看的,要么留下联系方式我看到了发给你们,要么网上找也好找 -.- 阅读全文
摘要:
转载http://huangrongyou.iteye.com/blog/1533129将已经有的MQ的Demo代码发送到博客上如何部署自己部署MQJML理论WSAD环境下JMS异步通信全攻略 (1) 学习其对JMS说明部分使用 Apache Geronimo 和 JMS 构建事件驱动的框架JMS 基本可靠性机制 和 事务机制配置参数:关于ActiveMQ的配置 好像还不错Activemq 安全机制以及稳定性研究 主要讲如何配置Active MQ教程ActiveMq官网ActiveMQ_in_Action_中文.pdf 中文版本的JSM教程Apache ActiveMQ教程ActiveMQ i 阅读全文
摘要:
项目的后台要求在更改密码后发送邮件通知用户,为了避免发送邮件时程序对用户操作的阻塞,之前中文版中使用了线程来发送邮件,而在英文版中,我决定使用JMS来异步发送邮件,让用户更改密码的操作和发送邮件的操作更进一步解耦,也在实际环境中试试JMS。 我们的环境是Spring 2.5, Tomcat 5.5,使用ActiveMQ来实现JMS传送和接收。 首先,我们在Spring中加入ActiveMQ Broker的配置: <bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean" 阅读全文
摘要:
java5引入了很多新的并发容器和工具,极大的简化了并发程序的编写。本文先介绍Collections.synchronizedXXX工厂方法创建的同步容器的不足,再介绍ConcurrentHashMap,CopyOnWriterArrayList,BlockingQueue,CountDownLatch,Semaphore,CyclicBarrier和显示锁类。一、引言所有的并发问题都来源于如何协调访问并发状态,可变状态越少,并发控制也就越容易容易。没有可变状态的对象永远是现成安全。对有可变状态的对象的并发访问必须进行加锁,对每个方法都加锁并不能保证并发访问一定处于一致的状态。在构建并发程序的 阅读全文
摘要:
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为:并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执行,Executor.execute(Runnalbe)。Executor在执行时使用内部的线程池完成操作。一、创建线程池Executors类,提供了一系列工厂方法用于创先线程池,返回的线程池都实现了ExecutorService 阅读全文
摘要:
这里提供两种在指定时间后启动线程的方法。一是通过java.util.concurrent.DelayQueue实现;二是通过java.util.concurrent.ScheduledThreadPoolExecutor实现。1. java.util.concurrent.DelayQueue类DelayQueue是一个无界阻塞队列,只有在延迟期满时才能从中提取元素。它接受实现Delayed接口的实例作为元素。<<interface>>Delayed.javapackagejava.util.concurrent;importjava.util.*;publicinte 阅读全文