
Java
文章平均质量分 81
phinecos
专注于开源技术的研究与应用
展开
-
Azureus源码剖析(五)
这篇说说GUI方面,就以打开种子文件这个窗口为例,我对其代码进行了精简,拿出了一个基本的骨架。 首先来看基本的消息主循环部分:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> final Display displ原创 2009-05-13 11:40:00 · 764 阅读 · 0 评论 -
Azureus源码剖析(二) ---解析Torrent种子文件
BT种子文件使用了一种叫bencoding的编码方法来保存数据。bencoding有四种类型的数据:srings(字符串),integers(整数),lists(列表),dictionaries(字典)编码规则如下:(1)strings(字符串)编码为:字符串长度>:字符串>例如: 4:test 表示为字符串"test" 4:例子 表示为字符串“例子”字原创 2009-05-06 21:41:00 · 4138 阅读 · 0 评论 -
Azureus源码剖析(一)
整个项目运行的起点在com.aelitis.azureus.ui.Main这个类中,它只有一个main主方法,运用Java的反射机制来调用真正的起始点类org.gudy.azureus2.ui.swt.Main的实例对象。代码如下:Code highlighting produced by Actipro CodeHighlighter (freeware)http:/原创 2009-05-06 18:41:00 · 2172 阅读 · 1 评论 -
【转】Monitor Object 并发模式在 Java 同步机制中的实现
原文链接:Monitor Object 并发模式在 Java 同步机制中的实现 本文从典型的 Monitor Object 设计模式入手,从一个新的视角,来探讨 Java 语言的同步机制。 本文将从两个方面进行阐述: 使用 C++ 语言来描述 Monitor Object 设计模式。Java 对于这样一个典型的模式做了很好的语言层面的封装,因此原创 2009-01-04 21:41:00 · 1000 阅读 · 0 评论 -
【转】使用缓存构建更快的 Web 应用程序
原文链接:《使用缓存构建更快的 Web 应用程序》 使用 Java技术的 Web 开发人员可以使用缓存实用程序快速提升他们的应用程序的性能。Java 缓存系统(Java Caching System,JCS)是一个用于 Java 应用程序的强大分布式缓存系统,它是拥有简单 API 的高度可配置的工具。本文将概述 JCS 并展示如何使用它来提高 Web 应用程原创 2009-01-03 19:41:00 · 553 阅读 · 0 评论 -
Commons Collections学习笔记(三)
这个Map类是基于红黑树构建的,每个树节点有两个域,一个存放节点的Key,一个存放节点的Value,相当于是两棵红黑树,一棵是关于key的红黑树,一棵是关于Value的红黑树。 关于红黑树的详细介绍,参考《C#与数据结构--树论--红黑树(Red Black Tree)》这篇文章。Code highlighting produced by Actipro CodeHigh原创 2008-12-19 16:42:00 · 512 阅读 · 0 评论 -
Mina2.0框架源码剖析(六)
上文的内容还有一些没有结尾,这篇补上。在ExpiringMap类中,使用了一个私有内部类ExpiringObject来表示待检查超时的对象,它包括三个域,键,值,上次访问时间,以及用于上次访问时间这个域的读写锁:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlight原创 2008-12-07 20:42:00 · 1335 阅读 · 0 评论 -
Mina2.0框架源码剖析(三)
AbstractIoAcceptor类继承自AbstractIoService基类,并实现了IoAcceptor接口,它主要的成员变量是本地绑定地址。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> private final Lis原创 2008-12-04 14:42:00 · 725 阅读 · 0 评论 -
Mina2.0框架源码剖析(二)
上一篇介绍了几个核心的接口,这一篇主要介绍实现这些接口的抽象基类。首先是实现IoService接口的AbstractIoService类。它包含了一个Executor来处理到来的事件。每个AbstractIoService都一个AtomicInteger类型的id号,确保每个id的唯一性。它内部的Executor可以选择是从外部传递进构造函数中,也可以在实例内部自行构造,若原创 2008-12-04 11:42:00 · 731 阅读 · 0 评论 -
Mina2.0框架源码剖析(一)
整个框架最核心的几个包是:org.apache.mina.core.service, org.apache.mina.core.session, org.apache.mina.core.polling以及org.apache.mina.transport.socket。 这一篇先来看org.apache.mina.core.service。第一个要说的接口是IoServic原创 2008-12-03 21:42:00 · 846 阅读 · 0 评论 -
八皇后问题(递归版)
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/** * @author phinecos * @since 2008/10/31 */class EightQueen{ static final int MA原创 2008-10-31 16:44:00 · 600 阅读 · 0 评论 -
Quartz 框架快速入门(四)
Spring的scheduling.quartz包中对Quartz框架进行了封装,使得开发时不用写任何QuartSpring的代码就可以实现定时任务。Spring通过JobDetailBean,MethodInvokingJobDetailFactoryBean实现Job的定义。后者更加实用,只需指定要运行的类,和该类中要运行的方法即可,Spring将自动生成符合Quartz要求原创 2008-09-03 21:46:00 · 1769 阅读 · 1 评论 -
Quartz 框架快速入门(三)
在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Scheduler,其步骤如下:首先创建一个Web项目,将quartz-1.6.0.jar,以及lib目录下面core下所有jar,optional目录下的所有commons-beanutil原创 2008-09-03 16:46:00 · 923 阅读 · 0 评论 -
Quartz 框架快速入门(二)
尽可能的用声明式处理软件配置,其次才考虑编程式的方式。在上一篇《Quartz 框架快速入门(一)》中,如果我们要在 Job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译。这种方式只适用于小的例子程序,但是对于一个大且复杂的系统,这就成了一个问题了。因此,假如能以声明式部署 Quart Job 时,并且也是需求允许的情况下,你应该每次都选择这种方式 ·配置 quar原创 2008-09-03 15:46:00 · 1017 阅读 · 0 评论 -
Quartz 框架快速入门(一)
创建一个 Java 工程,引入几个 JAR 到工程中才能成功构建它们。首先,你需要 Quartz 的二进制版本,包的名字是 quartz-.jar。Quartz 还需要几个第三方库;这依赖于你要用到框架的什么功能而定,Commons Digester 库可以在 /lib/core 和 /lib/optional 目录中找到。如果出现java.lang.NoClassDefFou原创 2008-09-03 11:46:00 · 1059 阅读 · 0 评论 -
一个简单的线程池实现(java版)
线程池代码: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->import java.util.List;import java.util.Vector;public class ThreadPool { p原创 2008-07-19 14:47:00 · 615 阅读 · 1 评论 -
Java NIO非阻塞服务器示例
以前一直用的是“ervery thread per connection”的服务器端模式,今天试了下NIO非阻塞模式的服务器。 不过java不能实现I/O完成端口模型,这点很遗憾package com.vista.Server;import java.io.IOException;import java.net.InetSocketAddress;import原创 2008-07-17 19:47:00 · 572 阅读 · 0 评论 -
基于jabber(XMPP)架设即时通信服务
Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。 XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览原创 2008-07-15 16:47:00 · 652 阅读 · 0 评论 -
《Extensible Messaging and Presence Protocol (XMPP): Core》阅读笔记(一)
文档链接:《Extensible Messaging and Presence Protocol (XMPP): Core》客户和服务器之间端口为5222,服务器之间的端口为5269.通信协议格式:|--------------------|| stream> ||--------------------|| presence>原创 2008-07-15 14:47:00 · 639 阅读 · 0 评论 -
【转】Jabber即时通信系统服务整体框架概述
1.1. Introduction 简介第一个Jabber技术的应用是由开源社区发起并一直领导的即时消息的实时系统。Jabber即时消息(IM)系统和现有IM服务相比较由以下几个关键特点:XML为基础分布式网络开放的协议和内核代码模块化的、可扩展的系统架构本文档提供一个关于Jabber系统架构的高阶概述,主要集中介绍Jabber开源服务器的设计,目前的版本是原创 2008-07-15 12:47:00 · 844 阅读 · 0 评论 -
ExtJS 2.0入门指南
v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}Normal07.8 磅02fals原创 2008-07-14 19:47:00 · 600 阅读 · 0 评论 -
SpringSide示例之HelloWorld
Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4<!-- /* Font Definitions */@font-face{font-family:宋体;panose-1原创 2008-07-03 16:48:00 · 853 阅读 · 0 评论 -
Structs+Spring+Hibernate快速入门
Structs+Spring+Hibernate,这是很经典的一个搭配,它的开发流程也比较程式化,下面以用户注册为例。 注册页面代码:@page contentType="text/html;charset=GBK"%>html> head>title>Spring、Struts和Hibernate整合之用户注册title>head> body>${msg原创 2008-07-03 15:48:00 · 1520 阅读 · 0 评论 -
【转】“给你第二次机会”——小议PushbackInputStream
PushbackInputStream和PushbackReader是Java I/O系统里两个比较让人迷惑的类。一个允许你反悔的hook Java I/O系统是一个典型的Decorator模式的实现,它以InputStream/OutputStream为基本核心,通过继承关系,不断为该核心添加新的功能,如文件流、缓冲、加解密等。对I/O系统设计模式感兴趣的话,可以参考d原创 2008-06-25 22:48:00 · 734 阅读 · 0 评论 -
构造Soap请求调用Web Services(三)
在《用Soap消息调用Web Services(续)》这篇文章中介绍了如何在客户端发送Soap请求去调用服务器端的Web Service并输出服务器返回的结果,但还存在两个弱点,本文的目的就是对其进行改进,使得构造Soap请求发送到服务器端的流程完整。 上文的弱点有二:1)Soap请求是一个XML文件,而非灵活构造出来的。2)服务器端返回的结果仅仅是输出到控制台原创 2008-05-21 12:50:00 · 1070 阅读 · 0 评论 -
Java并发笔记(一)
1,public class HelloRunnable implements Runnable { public void run() { System.out.println("Hello from a thread!"); } public static void main(String args[]) { (new Thread(new原创 2008-05-05 21:50:00 · 565 阅读 · 0 评论 -
一个java定时器框架
ScheduleIterator接口import java.util.Date;public interface ScheduleIterator { public Date next();//获取下一个触发的时间点}Scheduler类import java.util.Date;import java.util.Timer;import java.util.TimerT原创 2008-02-25 22:52:00 · 2049 阅读 · 2 评论 -
nutch 0.9在Windows下的安装
一、环境: 1.操作系统:windowsXp,windows2000+ 2.java1.6,设置JAVA_HOME到环境变量 3.cygwin,当然这个不是必需的,只是nutch提供的脚本只能在shell环境下使用,所以使用cygwin来虚拟shell命令。 4.nutch版本:0.9 5.tomcat:6.0原创 2007-11-20 16:53:00 · 672 阅读 · 0 评论 -
体验Android
1,首先到到http://code.google.com/android/download.html下载SDK压缩包,直接解压到你需要的目录里。里面的Emulator是一个智能手机模拟器。2,然后是安装Eclipse的开发插件。1)在Eclipse的菜单里选择Software Updates > Find and Install...2)在随后出现的窗口里选Se原创 2007-11-15 10:53:00 · 695 阅读 · 0 评论 -
ubuntu下配置eclipse3.3
1,到http://www.eclipse.org/downloads/,下载eclipse3.3.1for linux版本,我下载后文件的完整名称为:eclipse-SDK-3.3.1.1-linux-gtk2,执行命令:sudo nautilus进入root权限,将压缩包解压到/opt/eclipse下,设置目录eclipse执行权:chown -R root:ro原创 2007-10-30 11:53:00 · 753 阅读 · 0 评论 -
ubuntu下配置tomcat
1,安装Jdk2,在终端中使用命令:sudo nautilus,进入root权限,将tomcat解压缩到/usr/local目录下4,在终端中使用命令: gedit ~/.bashrc,在文件末尾加入下面几行:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.原创 2007-10-29 08:53:00 · 630 阅读 · 0 评论 -
Creating top-down Web services using MyEclipse
原创 2007-10-26 12:53:00 · 625 阅读 · 0 评论 -
Heritrix研究笔记(一)
这个开源的Web爬虫,Internet Archive在它的官方文档中说只维护在linux下,我不想用那么麻烦的bash shell去设置那些环境变量什么的,所以还是偷点懒,自己写个windows命令脚本来让这个爬虫在windows下面跑起来吧,现在就跟我来吧,呵呵。 要在Windows上让Heritrix跑起来,下面三步就OK了:1)原创 2007-10-18 20:53:00 · 699 阅读 · 0 评论 -
ActiveMQ的一个bug
上午老板给了我一个小任务:解决他笔记本不连网的时候ActiveMQ无法启动的问题。我拔了网线后,启动ActiveMQ,报下面的错:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->ERROR BrokerService原创 2007-10-17 15:54:00 · 1767 阅读 · 0 评论 -
基于JMF RTP的音视频传输
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->import java.io.*;import java.awt.*;import java.net.*;import java.awt.event.*;import java.util.Vect原创 2007-09-28 22:54:00 · 3322 阅读 · 4 评论 -
JMF捕获音频
1. 捕获媒体数据的步骤:(1)查询CaptureDeviceManager,来定位你需要使用的媒体采集设备。(2)得到此设备的CaptureDeviceInfo实例。(3)从此CaptureDeviceInfo实例获得一个MediaLocator,并通过它来创建一个DataSource。(4)用此DataSource创建一个Player或P原创 2007-09-24 20:55:00 · 735 阅读 · 0 评论 -
JMF示例(二)
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->import javax.media.*;import com.sun.media.ui.*;import javax.media.protocol.*;import javax.media.pr原创 2007-09-22 22:55:00 · 710 阅读 · 0 评论 -
检查JMF的版本
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/** * Query for the particular version of JMF. */public interface QueryJMF{ public static final原创 2007-09-22 22:55:00 · 726 阅读 · 0 评论 -
【转】利用JMF进行多媒体编程
Java媒体框架(JMF)使你能够编写出功能强大的多媒体程序,却不用关心底层复杂的实现细节。JMF API的使用相对比较简单,但是能够满足几乎所有多媒体编程的需求。在这篇文章中,我将向你介绍如何用很少的代码就编写出多媒体程序。 Java多媒体框架(JMF)中包含了许多用于处理多媒体的API。它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介原创 2007-09-22 22:55:00 · 655 阅读 · 0 评论 -
JMF示例(一)
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->import java.applet.Applet;import java.awt.*;import java.awt.event.*;import java.lang.String;import原创 2007-09-22 21:55:00 · 934 阅读 · 0 评论