![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
guoshaogang
这个作者很懒,什么都没留下…
展开
-
java nio 系列学习之一
上图就是这个项目的总体结构图,从图中可以看出该程序分为这几大块:连接侦听线程、连接对象队列、发送线程池、接收线程池、分发线程、事件处理对象、监控处理对象。下面我将描述下整个连接处理过程:1、 连接侦听线程循环接收一个连接请求,如果有连接请求过来,则返回一个连接Socket对象,否则该线程就阻塞等待,直到有一个连接请求过来。2、 封装该返回的Socket对象(主要是封装获取完整包数据转载 2012-02-02 10:36:59 · 671 阅读 · 0 评论 -
追加内容到文件末尾的几种常用方法
import java.io.BufferedWriter;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.RandomAccessFile;/**转载 2012-02-04 09:26:59 · 913 阅读 · 0 评论 -
java写文件方法之比较
最近对以前开发的一个通用数据迁移的软件进行优化。除了用JDK5.0的多线程技术进行的改进之外,也比较了一下java写文件的性能。 在java写文件中,通常会使用FileOutputStream和FileWriter,FileWriter只能写文本文件。FileOutputStream也经常结合BufferedOutputStream。因为实际应用中写文本文件的情况占了大多数。所以下面测转载 2012-02-04 09:52:21 · 311 阅读 · 0 评论 -
jdk1.5中java.util.concurrent包编写多线程(一)
一般的服务器都需要线程池,比如Web、FTP等服务器,不过它们一般都自己实现了线程池,比如以前介绍过的Tomcat、Resin和Jetty等,现在有了JDK5,我们就没有必要重复造车轮了,直接使用就可以,何况使用也很方便,性能也非常高。package concurrent;import java.util.concurrent.ExecutorService;import ja转载 2012-02-10 17:47:38 · 757 阅读 · 0 评论 -
jdk1.5中java.util.concurrent包编写多线程(四)
J2SE 5.0平台包含了一个新的并发工具程序包。这个程序包中的类替并发类(concurrent classe)或并发设计中使用的应用程序建立阻塞(blocking)。该并发工具包含下面一些内容:•高性能的、灵活的线程池•异步执行事务的框架组件•为并发访问优化过的集合类宿主(host)本文介绍了J2SE 5.0框架组件类和它们的重要特性。本文的下载代码提供了一些简单的、容易使用的示转载 2012-02-10 17:51:25 · 640 阅读 · 0 评论 -
jdk1.5中java.util.concurrent包编写多线程(二)
当然线程池也要显式退出了。package concurrent;import java.io.File;import java.io.FileFilter;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import java.ut转载 2012-02-10 17:48:29 · 372 阅读 · 0 评论 -
jdk1.5中java.util.concurrent包编写多线程(三)
有时候在实际应用中,某些操作很耗时,但又不是不可或缺的步骤。比如用网页浏览器浏览新闻时,最重要的是要显示文字内容,至于与新闻相匹配的图片就没有那么重要的,所以此时首先保证文字信息先显示,而图片信息会后显示,但又不能不显示,由于下载图片是一个耗时的操作,所以必须一开始就得下载。Java的并发库的Future类就可以满足这个要求。Future的重要方法包括get()和cancel(),get()获转载 2012-02-10 17:50:50 · 395 阅读 · 0 评论 -
java NIO札记 .
最近项目使用NIO作为Socket通讯架构, 其中使用到org.apache.mina.common.ByteBuffer传输信息,其中方法buf.getString(size,Charset.forName("utf-8").newDecoder());频频报出java.nio.charset.MalformedInputException: Input length = 1,查询资料发现是由于转载 2012-02-14 16:30:00 · 972 阅读 · 2 评论 -
log4j日志配置
日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录。以下是个人经验,具体请参考Log4j文档指南。Log4j下载在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。Log4j使用Log4j的包下载完成后,解压,将其中打包好的的log4j-1.x.x.jar导转载 2012-02-15 15:34:08 · 344 阅读 · 0 评论 -
java源程序加密
Java程序的源代码很容易被别人偷看,只要有一个反编译器,任何人都可以分析别人的代码。本文讨论如何在不修改原有程序的情况下,通过加密技术保护源代码。 一、为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以。遗憾的是,Java程序的源代码很容易被别人偷看。只要有一个反编译器,任何人都可以分析别人的代码。Java的灵活性使得源代码很转载 2012-02-15 15:49:27 · 776 阅读 · 1 评论 -
打包war的几种方法
1.首先是工具比如Eclipse很方便了。 2.用winrar之类的工具,把web-info目录,及跟它同级的所有目录及文件,打包成zip文件就行了,然后把扩展名改成war! 3 Jar命令: 假定有一个Web应用:C:\myHome myHome/WEB-INF/…… myHome/files/…… myHome/image/…… myHome/src/…转载 2012-02-26 11:39:15 · 3846 阅读 · 1 评论 -
java nio 系列学习之四
前一段在网上看到了“淘宝伯岩”(boyan@taobao.com)的一份关于Java NIO 网络编程的讲义《NIO trick and trap——编写高性能Java NIO网络框架》。 其中里面提到了Java NIO在网络编程方面的应用和编程模型,同时也提到了Apache的一个开源网络框架MINA。 正好自己对于NIO对网络编程的应用也不是太熟悉,于是就简单了解了下MINA。本文并不是针对于M转载 2012-02-02 11:12:22 · 1013 阅读 · 0 评论 -
java nio 系列学习之 三
最近由于项目本身的需要,正在进行Mina框架的学习,并且将其整合到正在开发的系统中。下面将会根据实际的工作情况分享一些心得感受。一、 项目需求:我们正在开发的系统,现在主要分为两个部分,正两个部分之间需要使用TCP Socket进 行网络通讯。具体开发的难点是发送消息的部分。由于需要考虑到每次创建连接时造成的系统开销,所以使用的连接方式必须是长连接,就是保存连接,不能断开。 而且转载 2012-02-02 11:10:48 · 449 阅读 · 0 评论 -
Java NIO API详解
在JDK 1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API。对于大多数应用来说,这样的API使用很方便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来处理IO。从JDK 1.4起,NIO API作为一个基于缓冲区,并能提供非阻塞(non-blocking)IO操作的API被引入。本文对其进行深入的介绍。 N转载 2012-02-02 10:44:55 · 300 阅读 · 0 评论 -
一个简单的Thread缓冲池的实现 .
在应用中,我们常常需要Thread缓冲池来做一些事以提高程序的效率和并发性。本文演示了如何利用Queue这种数据结构实现一个简单的Thread缓冲池。 一个Thread缓冲池可以设计成以下这样:缓冲池由几个工作Thread和一个Queue组成,Client负责把任务放到Queue里面(put方法),而工作Thread就依次取出这些任务并执行它们(get方法)。 Queue的一个经典转载 2012-02-02 10:58:32 · 462 阅读 · 0 评论 -
java nio 之MappedByteBuffer,高效文件/内存映射
MappedByteBuffer是java nio引入的文件内存映射方案,读写性能极高。NIO最主要的就是实现了对异步操作的支持。其中一种通过把一个套接字通道(SocketChannel)注册到一个选择器(Selector)中,不时调用后者的选择(select)方法就能返回满足的选择键(SelectionKey),键中包含了SOCKET事件信息。这就是select模型。 SocketCh转载 2012-02-03 14:28:02 · 12151 阅读 · 0 评论 -
过程式设计和面向对象设计的比较 .
本文比较了过程式设计和面向对象设计,主要论述了过程式设计在程序开发中的一些问题及面向对象设计是如何解决这些问题的。过程式设计 总的来说,过程式的程序设计是一种自上而下的设计方法,设计者用一个main函数概括出整个应用程序需要做的事,而main函数由对一系列子函数的调用组成。对于main中的每一个子函数,都又可以再被精炼成更小的函数。重复这个过程,就可以完成一个过程式的设计。其特征是以函数为转载 2012-02-02 10:49:38 · 570 阅读 · 0 评论 -
Java网络服务器编程(NIO版) .
从Java 1.4开始提供的NIO API常用于开发高性能网络服务器,本文演示了如何用这个API开发一个TCP Echo Server。Java网络服务器编程一文演示了如何使用Java的Socket API编写一个简单的TCP Echo Server。其阻塞式IO的处理方式虽然简单,但每个客户端都需要一个单独的Thread来处理,当服务器需要同时处理大量客户端时,这种做法不再可行。使用NI转载 2012-02-02 10:55:38 · 449 阅读 · 0 评论 -
Java网络服务器编程
Java的Socket API提供了一个很方便的对象接口进行网络编程。本文用一个简单的TCP Echo Server做例子,演示了如何使用Java完成一个网络服务器。 用作例子的TCP Echo Server是按以下方式工作的:当一个客户端通过TCP连接到服务器后,客户端可以通过这个连接发送数据到服务端,而服务端接收到数据后会把这些数据用同一个TCP连接发送回客户端。服务端会一直保持这转载 2012-02-02 10:56:39 · 401 阅读 · 0 评论 -
避免在Java中使用Checked Exception .
这篇文章指出了Java中checked Exception的一些缺点,提出应该在程序设计中避免使用checked Exception,对于需要处理checked Exception的代码,可以使用ExceptionAdapter这个类对checked Exception进行包装。这篇文章的概念和ExceptionAdapter这个类均源自Bruce Eckel的Does Java need C转载 2012-02-02 10:59:21 · 345 阅读 · 0 评论 -
Java Charset的使用
大多数文本编辑器在打开文件时都能够自动检测文件的编码,那它是怎样做到的?我虽然没有实现过一个文本编辑器,但是可以猜测的是,它有一个默认的编码集合,然后尝试用每一个编码去解码打开的文件,如果能够解码则表示这就是文件的正确编码。有一些特殊情况,有些编码在文件开头有特殊的标记字节,因而可以很快检测,这里不考虑。现在的核心问题就是如何决定一个编码是否能够解码一个文件,在Java1.4中可以利用nio中的C转载 2012-02-02 12:36:34 · 3157 阅读 · 0 评论 -
利用Reflection API访问类的私有成员 .
在一些特殊的Java应用里面,有可能需要访问或修改类的私有成员,Reflection API可以帮助我们做到这一点。 下面是一个利用Reflection API修改privateField的例子。(访问私有函数也可以用类似的方法) 假设有一个类Dummy:public class Dummy { public int getValue(转载 2012-02-02 10:57:36 · 297 阅读 · 0 评论 -
Google Maps API 中文说明文档
Google Maps API 说明导言Google Maps的"Hello World"浏览器兼容性XHTML和VMLAPI更新地理、行程和其他应用范例一个简单例子地图的移动和变换在地图上添加控件事件监视显示信息浮窗地图标注响应用户点击在标记上显示信息浮窗创建图标使用图标类在地图上使用XML和异步RPC ("AJAX")API 概要GMap类事件信息浮窗标转载 2012-02-22 09:55:00 · 913 阅读 · 0 评论