建索引:package com.pccw; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.Date; import org.apache.lucene.analysis.Analyzer; import o ...
try { FileInputStream fi = new FileInputStream("f:/3.txt"); BufferedReader bs = new BufferedReader(new InputStreamReader(fi)); try { while(bs.readLine()!=null){ String str = bs.readLine(); System.out.println(str); } } catch (IOException e) { // TODO ...
2008-01-28

关于Lucene索引合并解决方法

关键字: lucene
由于Clustor的问题造成无法对索引进行同步,脑子中马上浮现用rmi(双机),UDP广播(多机)作通信中间件对clustor进行索引同步但这样经过测试后效率相对较低,故另辟蹊径,最终用索引合并的方式进行快速的索引整合,达到时间短索引同步快的目的。代码如下:package com.pccw; import java.io.File; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.index.IndexWriter; import org.apache.l ...
2007-11-20

Spring 2.0 AOP 与事务配置

关键字: Spring 事务
Spring 2.0 AOP 与事务配置 ************Spring 1.0的标准事务配置*************** 先定义一个baseTxService进行基本的事务定义,类型为TransactionProxyFactoryBean。如果service没有基于接口,使用cgilib来实现AOP,定义 实际的Manager类设置parent=baseTxService,target 为匿名的实际Manager类。如果需要定义特殊的事务,利用merge=true的属性,在manager的transactionAttributes节点进行新事务的定义。 xml ...
java 代码 package com.sunhill.k1c.sms.util;    import java.nio.*;       //数据转换  /**   *create by Shane about dataconvert      *PCCW BJ DEV   */&nb ...
2007-08-21

Java socket开发实例入门

关键字: Socket开发实例
socket用中文意思就是我们常说的”套接字“,我们用它来解决基于TCP/IP协议的网络通信。Java有一套功能强大而又易于使用的网络开发API,这个API是一系列的接口和类,在java.net和javax.net包中可以找到它们。套接字一般分为两种:流套接字(Stream Socket)和数据报套接字(Datagram Sockets)。关于套接字的编程可以写成一本书,本文不想在这里做深入探究(其实是本人功力还不够,嘿嘿...),这次主要是了解一下流套接字的基本开发。 一、几个重要的API: 1、InetAddress类 描述:该类在套接字编程中份演着目的地 ...
   今天突然一个同事问我webwork如果不用标签只用JSP能不能取到值?在以前还真没考虑过这个问题,不过想想webwork的基本机制我想应该是可以的于是做了一个简单的试验证实了一下首先WEBWORK的核心机制是OGNL,于是追了一下有关XWORK的代码,发现了OgnlValueStack这个有趣的东东很明显一个存放值的堆栈于是在网上搜索了一下关于OgnlValueStack的相关最后的解决方法是:在jsp中引入<%@ page import="com.opensymphony.xwork.util.OgnlValueStack"%>代码中 ...
2007-05-22

23种模式趣味解释

关键字: 设计模式
创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、BUILDER—MM最爱听的就是"我爱你"这句话了,见到不同地方的MM,要能够用她们的方言 ...
事务脚本 事务脚本比较好理解,简单来说,就是将大多是事务,以过程的形式封装起来,然后在其他层(表现层)被调用,实现一定功能(输入、查询、更新数据库)。组织事务脚本需要通过合理的方法将其模块化,例如对于数据库连接等操作,可以独立出来,成为公用的过程。 事务脚本可以通过一定的方法组织成类。事务脚本的优势在于简单有效。例如,对于一个留言本,使用Add、GetDetail等方法即可封装数据库操作,Web界面则直接调用其即可。 领域模型 领域模型是一张对象(数据、业务规则、实体等)连接成的网。 对于简单领域模型,一般来说,一个数据库表对应一个对象;复杂领域模型则由很多细粒度对象组成,通过继承、 ...
2007-04-29

又谈领域模型

关键字: 领域模型
       昨天,突然和阿敏谈起领域模型,发现自己的理解还是有些歧异于是看了坛子里robbin关于领域模型的一些探讨,又吧...老马的企业应用架构模式拿出来翻了翻好象又增加了些理解,领域模型大体分为三种(也可分为四种)分别为失血,贫血,充血/(胀血)(robbin语)下面我总结了几条关于领域模型几个形态的一些不成熟的总结: 一:失血模型,首先分为PO,DAO,SERVICE三大块,在这里PO就是领域层,但它只是个承载值的对象,除了属性并没有其他的方法所以在这里领域并没有起到它控制业务的作用,由于只有属性所以我们叫它失血,而DAO层 ...
2007-02-27

简单Socket编程,来理解Socket

关键字: socket
Server端: java 代码 package com.sunhill.socket.server;       import java.io.*;    import java.net.*;       public class tcpserver {        public  ...
前面都是用JDK自带的JMX实现来写的MBean,JMX的实现不独SUN一家,JBOSS也有自己的JMX实现。如果你使用JBOSS来做WEB服务器,那么基于JBOSS的实现来写MBean,是一个不错的选择。象我们公司就是用JBOSS的,因此所有MBean都是基于JBoss来写的。基于JBoss的MBean和基于SUN的MBean有什么不同吗?有一些不同之外,但绝大部份都一样。     下面是我最早发的一篇关于JMX的文章,是我对公司所做项目的笔记,它上面的JMX例子就是基于JBOSS的。博客搬了几次家,文章删的删丢的丢,但这篇文章还保留着,简单修改一下,再帖上吧。 一、  ...
前面用Html、jconsole等方法连接上了MBeanServer,并能够通过这些界面来操纵MBean。但有时我们需要不借助这些客户端,而是在自己的程序来操纵这些MBean,这就要求我们知道如何在代码里连接MBean。     基于上一篇为jconsole而修改的例子,给出一个示例的客户端程序,基本的操作都有了: java 代码 import java.util.Iterator;    import java.util.Set;    import javax.mana ...
前面所有看效果都是通过Html网页来看的。JDK5.0自带了一个jmx客户端,叫jconsole,位于c:\jdk\bin\jconsole.exe。我们来用用这个客户端来连接Mbean Server。   一、vm参数方式   1、还是用第一篇的那个HelloAgent,修改HelloAgent,将第一句: MBeanServer server = MBeanServerFactory.createMBeanServer(); 改为:MBeanServer server = ManagementFactory.getPlatformMBeanServer(); 注:Manage ...
在上一节是用apache的commons-modeler来开发的一个model,只不过commons-modeler帮助我们实现了很多的代码,而我们只需要写描述XML文件就行了。这一节,来一个实打实的Model Bean,不借助任何第三方工具包。例子还是沿用Hello这个类,以便于和以前的实现相比较。   一、Model MBean实例 1、Hello.java还是和以前的一样。这里它没有再加上一个MBean接口了,只是一个很普通的类。 java 代码 public class Hello{     &n ...
一、前言     每一个MBean都要有一个接口,比如前面的Hello要有一个HelloMBean接口。要多维护一个接口,的确是件麻烦的事。 Apache的commons-modeler利用JMX中的动态MBean原理很好的解决了这一问题,commons-modeler使用得我们可以只写Hello,而不用写HelloMBean这个接口。不过这是有代价的,它要求我们写一个mbean的xml描述文件(唉,少了一件事,却又多出另一件事来)。但commons-modeler还是有优点的,就是它让mbean的装配更加灵活,把多个mbean的装配都集中在一个XML文件里来了。   开始实例之前,你需 ...
一、前言     动态MBean是在运行期才定义它的属性和方法,也就是说它有什么属性和方法是可以动态改变的。动态MBean主要利用一些辅助类(构造函数类MBeanConstructorInfo、属性类MBeanAttributeInfo、方法类MBeanOperationInfo)来完成这个功能,所有的动态MBean必须实现DynamicMBean接口。DynamicMBean写好后,使用方法和第一篇文章中普通的MBean一样。     给出一个动态MBean的实例,这个实例最初动态构了一个Name属性及一个print方法,当我们执行它的print方法之后,又给此MBean新增了一个p ...
一、简介     Mbean之间的通信是必不可少的,Notification就起到了在Mbean之间沟通桥梁的作用。JMX notification 由四部分组成: Notification 这个相当于一个信息包,封装了需要传递的信息 Notification broadcaster 这相当于一个广播器,把消息广播出去 Notification listerner 这是一个监听器,用于监听广播出来的Notification消息 Notification filter 这是一个过滤器,过滤掉不需要的Notificati ...
一、JMX简介   JMX是一种JAVA的正式规范,它主要目的是让程序且有被管理的功能,那么怎么理解所谓的“被管理”呢?试想你开发了一个软件(如WEB网站),它是在24小时不简断运行的,那么你可能会想要“监控”这个软件的运行情况,比如收到了多少数据,有多少人登录等等。或者你又想“配置”这个软件,比如现在访问人数比较多,你想把数据连接池设置得大一些。   当然,你也许会专门为这些管理来开发软件,但如果你借助JMX,则会发现创建这样的管理程序是如此简单。因为你无需为管理程序来开发界面,已经有通用的JMX管理软件,如MC4J ...
一、JMX简介   什么是JMX?在一篇网文中是这样说的:"JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理",这句话我现在看着还是不知所云,云里雾里。   我们还是从JMX能给我们提供什么好处入手来理解吧。举一个应用实例:在一个系统中常常会有一些配置信息,比如服务的IP地址,端口号什么的,那么如何来写这些代码呢? 程序初哥一般是写死在程序里,到要改变时就去改程序,然后再编译发布; 程序熟手 ...
2007-02-02

JAVA RMI 实例

关键字: RMI
JAVA RMI 快速入门实例 本实例为参考多篇文章写就而成,网上及书上各类文章介绍如何使用RMI有多种实例可参考,譬如有: 1. 用命令rmiregistry启动RMI注册服务的 2. 同时创建存根(stub)和骨架(skeleton)的 3. 只创建存根类的的(jdk1.2以后版本) 4. 通过RemoteRef和rmi://协议字串方式的 5. 比较少讲到的用LocateRegistry直接在代码上启动RMI注册服务的。 以上描述并非明显分类,比如,你总是可以选择用rmiregistry或者代码LocateRegistry启动RMI注册服务 下面我将介绍一 ...