摘要: commons-logging 为开发独立于日志实现系统的程序提供了一个统一的接口,我们可以在应用程序中通过设置一个环境变量来指定我们要使用的日志系统(如 log4j): System.setProperty("org.apache.commons.logging.LogFactory", "org.apache.commons.logging.impl.Log4jFactory"); Syste... 阅读全文
posted @ 2009-05-31 17:44 coding_rabbit 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 最近一直在使用 commons-httpclient-3.1.jar 模拟 HTTP client 端,但是该 jar 只是一个普通 jar 文件,不是一个 plugin, 而我们的需求是既要能在 Eclipse 中,也能在命令行中使用(即将导出的plugin jar 加入到 classpath 中),因此需要将其打包成一个 plugin。我用 Eclipse 中的 "Plug-in from e... 阅读全文
posted @ 2009-05-31 17:42 coding_rabbit 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 最近在作项目的时候,用到了 HttpClient,用它向 HTTP server 发送请求并处理返回的页面数据。我的应用类间接调用 HttpClient。在运行的时候,程序打印出了如下警告信息: log4j:WARN No appenders could be found for logger log4j:WARN Please initialize the log4j system prope... 阅读全文
posted @ 2009-05-31 17:38 coding_rabbit 阅读(827) 评论(0) 推荐(0) 编辑
摘要: 开发和部署基于 JAX-WS2.0 的 Web 服务概述 JAX-RPC 作为第一代Web 服务,是利用Web 服务部署描述符进行部署。由于不同的Web 服务器使用不同的部署描述符,因此要部署同一个Web 服务到不同的Web 服务器上去,就需要提供不同的部署描述符。这带来了极大的不便。基于 JAX-WS2.0 的 Web 服务是第二代Web服务,其特点是利用JAVA注解描述Web 服务,而不再使用... 阅读全文
posted @ 2009-05-31 17:35 coding_rabbit 阅读(1006) 评论(0) 推荐(0) 编辑
摘要: 本文是哲学家就餐问题在 linux 上的程序实现,与windows 平台的实现类似,程序上稍有不同。PhilosopherDining.cpp#include <iostream>#include <string>#include <pthread.h>#include <unistd.h>#include <semaphore.h>#i... 阅读全文
posted @ 2009-05-31 17:29 coding_rabbit 阅读(614) 评论(0) 推荐(0) 编辑
摘要: 哲学家就餐问题是多线程同步中的经典问题,本文在 windows 上用 C/C++ 实现该问题。之前在网上看到一个该问题的实现:http://dev.csdn.net/article/77/77383.shtm,是用临界区作的,但是感觉不是太好,因为当一个哲学家在试图取叉子用餐的时候,其他哲学家必须等待,而实际上,当 1 号哲学家取叉子时,3号哲学家也可以取叉子,他们是不冲突的。假设有 5 个哲学家... 阅读全文
posted @ 2009-05-31 17:25 coding_rabbit 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 多线程同步中的生产者消费者问题生产者消费者问题是多线程同步中的一个经典问题,类似的还有读者写者问题和哲学家就餐问题。本文讨论生产者消费者问题,并分别在windows和linux平台上进行了程序实现。生产者消费者问题的基本概念是:一个或多个生产者向一个缓冲区添加数据(或消息),一个或多个消费者使用这些数据完成特定的功能。每个生产者是一个独立线程,每个消费者也是一个线程。例如,2个线程从网络socke... 阅读全文
posted @ 2009-05-31 00:51 coding_rabbit 阅读(876) 评论(0) 推荐(0) 编辑
摘要: linux 平台下的实现与 windows 很相似,只有一些代码上的小的差别。1: ReaderWriterLock.h, 该文件定义了读写锁的类#ifndef ReaderWriterLock_H#define ReaderWriterLock_H#include <bits/pthreadtypes.h>#include <semaphore.h>class Reade... 阅读全文
posted @ 2009-05-30 22:40 coding_rabbit 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 前一段时间在项目开发中遇到了经典的读者写者问题,这里给出简单的程序实现。程序中用了一个互斥体 Mutex 和一个信号量 Semaphore, 当然也可以使用两个信号量。1: ReaderWriterLock.h, 该文件定义了读写锁的类#ifndef ReaderWriterLock_H#define ReaderWriterLock_Hclass ReaderWriterLock{protect... 阅读全文
posted @ 2009-05-29 20:21 coding_rabbit 阅读(418) 评论(0) 推荐(0) 编辑