随笔 - 312, 文章 - 14, 评论 - 1393, 引用 - 0
数据加载中……

java

Android开发(1):随机绘制彩色实心圆
     摘要: 本文介绍了如何利用Android的绘图技术随机绘制彩色实心圆。  阅读全文

posted @ 2011-09-06 16:06 银河使者 阅读(9622) | 评论 (2)  编辑

关于Android中传递数据的一些讨论
     摘要: 虽然Intent和静态变量都可以传递数据,但intent功能有限,static过于wrong,那么有没有一种更好的方式呢,答案是yes,这就是Application Context,一个全局的Context,详情请读者参见本文的内容。  阅读全文

posted @ 2010-11-09 16:25 银河使者 阅读(5304) | 评论 (1)  编辑

《Android/OPhone 开发完全讲义》连载(10):Sqlite数据库
     摘要: 现在终于到讲解数据库的时间了。数据库也是Android存储方案的核心。在Android系统中使用了Sqlite数据库。Sqlite是非常轻量的数据库。从Sqlite的标志是一根羽毛就可以看出Sqlite的目标就是无论是过去、现在,还是将来,Sqlite都将以轻量级数据库的姿态出现。Sqlite虽然轻量,但在执行某些简单的SQL语句时甚至比MySQL和Postgresql还快。由于很多读者是第一次接触Sqlite数据库,因此,在介绍如何在Android中使用Sqlite之前,先在本节简单介绍一下如何在PC上建立Sqlite数据库,以及Sqlite数据库的一些特殊方面(由于本书的目的不是介绍Sqlite数据库,因此,与其他数据库类似的部分(如insert、update等)本书将不再介绍。没有掌握这些知识的读者可以参阅其他关于数据库方面的书籍。  阅读全文

posted @ 2010-10-28 22:16 银河使者 阅读(6818) | 评论 (0)  编辑

《Android/OPhone开发完全讲义》连载(8):收到短信了,我该做点什么?
     摘要: 短信是手机中经常使用到的一种服务。然而,当手机接收到短信时,也会向系统发送广播。如果我们的应用程序要在手机接收到短信后做点什么,那就需要接收这个系统广播。
接收系统广播的步骤我们已经熟悉了,下面就按步就班地来完成这两个步骤。  阅读全文

posted @ 2010-09-13 16:59 银河使者 阅读(2905) | 评论 (1)  编辑

《Android/OPhone开发完全讲义》连载(7):使用SharedPreferences存取复杂数据
     摘要: 我们知道SharedPreferences只能保存简单类型的数据,例如,String、int等。如果想用SharedPreferences存取更复杂的数据类型(类、图像等),就需要对这些数据进行编码。我们通常会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中。
  阅读全文

posted @ 2010-09-08 09:49 银河使者 阅读(4050) | 评论 (5)  编辑

实用Android开发工具和资源精选
     摘要: 本文介绍了20个关于Android应用程序开发的实用工具资源,供大家分享。在google、开源平台,和来自移动电话制造商HTC,Samsung和Sony Ericsson的支持下,Android平台在市场占有率上相比去年取得的886%增长!如果我只看增长率,IPhone据统计才有61%的增长。这些 数据可以给你关于两个平台流行度的印像,但是事实上,这些数据告诉了智能机开发员的谁才是真正的赢家。在时下,智能机越来越流行,因此成为一个快速增长的 Android平台的智能机开发人员将会是一个不错的选择。
  阅读全文

posted @ 2010-08-28 09:28 银河使者 阅读(4317) | 评论 (0)  编辑

中国移动开发者社区专访:学习Android的两大法宝
     摘要: 最近Android比较火,无论是摩托罗拉搭载 Android 2.2准备咸鱼翻身,还是Android Market年底将在台湾开市……这些消息足以让人们为之振奋。但当人们看到Android的外表光鲜之时,更要注意到其潜在内涵,尤其对于广大开发者,一味盲目地崇拜并扎入其中并不实为理智之举。本期,我们为您邀请到一位与代码打了15年交道的李宁,以其亲身经历和开发经验来为广大开发者提出鉴言和忠告。  阅读全文

posted @ 2010-08-25 05:45 银河使者 阅读(4976) | 评论 (2)  编辑

可循环显示图像的Android Gallery组件
     摘要: Gallery组件主要用于横向显示图像列表,不过按常规做法。Gallery组件只能有限地显示指定的图像。也就是说,如果为Gallery组件指定了10张图像,那么当Gallery组件显示到第10张时,就不会再继续显示了。这虽然在大多数时候没有什么关系,但在某些情况下,我们希望图像显示到最后一张时再重第1张开始显示,也就是循环显示。要实现这种风格的Gallery组件,就需要对Gallery的Adapter对象进行一番改进。
  阅读全文

posted @ 2010-08-23 23:44 银河使者 阅读(5116) | 评论 (0)  编辑

移动互联网的新宠:Android之缤纷世界
     摘要: Android这个词已强占我们的眼球有一段时间了。在此之前,提到Android,没人会和移动互联网以及Google这两个当今最火辣的词联系起来。然而,自从Google推出自己的移动操作系统Android以来,Android、Google和移动互联网就好像10年前的Windows、微软和PC操作系统一样,成为了当今最吸引眼球的组合。  阅读全文

posted @ 2010-08-17 12:14 银河使者 阅读(2049) | 评论 (2)  编辑

《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》销售排名第4,发篇ExtJS的文章(拖放树结点)庆祝下
     摘要: 《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》一书上架短短几天,就进入了互动网计算机类销售总排名第4的好成绩。现发篇Ext JS的技术文章庆祝下。在本文将介绍TreePanel组件非常有意思的一个功能:结点拖放。要使TreePanel组件的结点可以拖放非常简单,只需要将TreePanel类的enableDD选项参数设为true即可。当然,要想实现更复杂的功能,还需要配合其他的参数和事件。  阅读全文

posted @ 2010-08-03 14:15 银河使者 阅读(3666) | 评论 (0)  编辑

实现基于Android的英文电子词典
     摘要: 英文词典是手机中经常使用的应用。因此,在本文将结合Android来讨论如何实现一个
Android版的英文词典。实现英文词典的方法很多。在本文使用了SQLite数据库来保存英文单词信息。系统通过SQLite数据库中保存的单词信息来查找到与指定英文对应的中文信息。当然,实现这样一个英文词典需要解决一系列技术问题。例如,如何将保存英文单词信息的数据库文件随程序(apk文件)一起发布;发布后如何打开数据库;如何在输入前几个字母后,在AutoCompleteTextView组件提示列表中显示以所输入字符串开头的所有单词。在本章将逐渐给出这些问题的详细答案。
  阅读全文

posted @ 2010-07-31 10:29 银河使者 阅读(6563) | 评论 (1)  编辑

不使用中间变量交换两个数(Java版)
     摘要: 在程序中实现交换两个数的功能并不复杂,但如果不使用中间变量,就需要动一下脑筋。在本文介绍了两个方法(其实原理都是一个)。其基本原理就是数的中和。也就是说,通过某种运算(二元运算)将a和b两个数变成一个数,并保存在其中一个变量中。然后再通过同样的运算符将a或b中和掉。这样实际上是利用了a或 b本身作为了中间变量。  阅读全文

posted @ 2010-07-28 10:29 银河使者 阅读(2787) | 评论 (8)  编辑

Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
     摘要: 众所周知,AlertDialog类用于显示对话框。关于AlertDialog的基本用法在这里就不详细介绍了,网上有很多,读者可以自己搜索。那么本文要介绍的是如何随心所欲地控制AlertDialog。  阅读全文

posted @ 2010-07-27 23:05 银河使者 阅读(4467) | 评论 (2)  编辑

《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》样章下载
     摘要: 第1章:开发梦缘起开心网

第5章:开心桌面:完全模拟Windows桌面的开心网

第15章:移动电子相册:捕捉精彩瞬间
  阅读全文

posted @ 2010-07-24 11:30 银河使者 阅读(5410) | 评论 (4)  编辑

《Android/OPhone开发完全讲义》连载(5):Notification与状态栏信息
     摘要: Notification与Toast都可以起到通知、提醒的作用。但它们的实现原理和表现形式却完全不一样。Toast其实相当于一个组件(Widget)。有些类似于没有按钮的对话框。而Notification是显示在屏幕上方状态栏中的信息。还有就是Notification需要用NotificationManager来管理,而Toast只需要简单地创建Toast对象即可。  阅读全文

posted @ 2010-07-13 08:20 银河使者 阅读(2690) | 评论 (0)  编辑

《Android/OPhone开发完全讲义》连载(4):Android SDK中常用命令行工具(二)
     摘要: 一、 PC与模拟器或真机交换文件(adb pull和adb push)
二、 Shell命令
三、创建、删除和浏览AVD设备(android)  阅读全文

posted @ 2010-07-08 20:58 银河使者 阅读(2331) | 评论 (0)  编辑

《Android/OPhone 开发完全讲义》已出版,现提供源代码下载
     摘要: 《Android/OPhone 开发完全讲义》已出版。  阅读全文

posted @ 2010-07-01 13:43 银河使者 阅读(5203) | 评论 (3)  编辑

Google 菜市场(Android Market)上不去的解决方法
     摘要: 最近几天,突然手机(我的是G3,估计其他android手机也有类似的情况)上不了android market了,甚至连gmail也出现网络问题(通过gprs、3g和wifi都不好使)。一开始还以为是手机的问题,后经过多次重启,刷机,还是存在 问题。最后经过验证,google更改了服务设置,相关服务(包括android market)已成了限制服务(原因吗,大家都知道,这里就不说了),但还是有办法解决地。首先下载下面的zip文件。  阅读全文

posted @ 2010-06-15 13:20 银河使者 阅读(2596) | 评论 (1)  编辑

《Android/OPhone 开发完全讲义》样章和目录下载
     摘要: 《Android/OPhone 开发完全讲义》一书预计在6-15左右出版,现提供3个样章(第1、8和14章)试读,欢迎提出宝贵意见。  阅读全文

posted @ 2010-06-02 14:00 银河使者 阅读(7330) | 评论 (20)  编辑

新书《Android/OPhone开发完全讲义》即将出版,看看哪个封面更好
     摘要: 新书《Android/OPhone开发完全讲义》将在6月份出版,现在三个候选封面效果。各位看看哪个封面更好些。
  阅读全文

posted @ 2010-05-26 20:47 银河使者 阅读(2457) | 评论 (12)  编辑

有道难题2009复赛题解答(Java版):求大于给定数的最小不重复数
     摘要: 最近看了有道出的几个复赛题,觉得很好玩,现给出Java版的答案。先看看提干部分。如果一个数字十进制表达时,不存在连续两位数字相等,则称之为“不重复数”。例如,105,1234和12121都是“不重复数”,而11,100和 1225不算。给定一个long类型数字A,返回大于A的最小“不重复数”。   阅读全文

posted @ 2010-05-11 16:23 银河使者 阅读(3573) | 评论 (21)  编辑

Android组件系列(1):自动完成输入内容的组件(AutoCompleteTextView )
     摘要: AutoCompleteTextView和EditText组件类似,都可以输入文本。但AutoCompleteTextView组件可以和一个字符串数组或List对象绑定,当用户输入两个及以上字符时,系统将在AutoCompleteTextView组件下方列出字符串数组中所有以输入字符开头的字符串,这一点和www.Google.com的搜索框非常相似,当输入某一个要查找的字符串时,Google搜索框就会列出以这个字符串开头的最热门的搜索字符串列表。  阅读全文

posted @ 2010-04-21 14:53 银河使者 阅读(2785) | 评论 (0)  编辑

使用Java等比例缩放图像
     摘要: 绘制图像的基本原理是创建一个目标大小的画布,然后读取源图像,并将该图像绘制这个画布上。为了使程序通用,源图像和压缩后的目标图像应用分别使用 InputStream和OutputStream来表示。  阅读全文

posted @ 2010-04-16 15:11 银河使者 阅读(3274) | 评论 (4)  编辑

在Java中按字节获得字符串长度的两种方法
     摘要: 由于Java是基于Unicode编码的,因此,一个汉字的长度为1,而不是2。但有时需要以字节单位获得字符串的长度。例如,“123abc长城”按字节长度计算是10,而按Unicode计算长度是8。为了获得10,需要从头扫描根据字符的Ascii来获得具体的长度。如果是标准的字符,Ascii的范围是0至255,如果是汉字或其他全角字符,Ascii会大于255。  阅读全文

posted @ 2010-04-11 10:53 银河使者 阅读(22646) | 评论 (3)  编辑

Android 1.5和Android 2.1在相对布局(RelativeLayout)上的区别
     摘要: 近日在做一个程序,需要在ListView中动态扩展每一个列表项。采用的方法是将列表项中某些组件的android:visibility属性设为 gone,等需要显示该组件时,再将android:visibility属性设为visible。而且列表项的布局是RelativeLayout。 android:visibility属性为gone的组件也参与了相对位置设置。例如,有A、B、C三个组件,其中B的 android:visibility属性值为gone,也就是说,B不显示。而A和C显示。相对位置是B在A的下面,C在B的下面。这么做比理论上是没问题的,由于启动的是android 2.1的模拟器,所以列表项看起来完全正常。  阅读全文

posted @ 2010-03-17 09:27 银河使者 阅读(4674) | 评论 (3)  编辑

大量Ophone/Android技术文章推荐
     摘要: 先庆祝下,刚获得OPhone SDN技术征文大赛二等奖,Dell Mini 3手机一部,支持移动的TD-SCDMA网络。现在终于可以做联机测试了,哈哈!!
文章URL
http://www.ophonesdn.com/article/list  阅读全文

posted @ 2010-01-15 13:08 银河使者 阅读(2119) | 评论 (2)  编辑

Android/Ophone中的悬浮对话框和即点即关对话框
     摘要: Activity是Ophone系统的4个应用程序组件之一。通过传统方法显示的Activity都是充满整个屏幕,也就是全屏的Activity。事实上,Activity不仅可以全屏显示,还可以象对话框一样直接显示在屏幕上。而且可以通过单击屏幕的任何位置(包括Activity内部和Activity外部)来关闭Activity。
  阅读全文

posted @ 2010-01-11 08:31 银河使者 阅读(3264) | 评论 (0)  编辑

《Java Web开发速学宝典》样章(共3章)
     摘要: 第4章 Servlet开发基础、第8章 Java Web国际化、第10章 简单标签  阅读全文

posted @ 2009-12-14 14:33 银河使者 阅读(4766) | 评论 (1)  编辑

Java Web开发速学宝典(JSP+Servlet+Struts 2 + Hibernate + Spring)源代码下载
     摘要: 由于有些读者因随书光盘遗失,应广大读者的要求,特提供《Java Web开发速学宝典》一书的源代码下载,由于源代码所使用的jar包过大(随书光盘中包含了完整的源代码和jar包),在这里只提供了jar文件的列表,读者可以自行获得这些jar包。  阅读全文

posted @ 2009-11-16 13:14 银河使者 阅读(4066) | 评论 (2)  编辑

Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据
     摘要: 对于缓冲区来说,最重要的操作就是读写操作。缓冲区提供了两种方法来读写缓冲区中的数据:get、put方法和array方法。而get、put方法可以有三种读写数据的方式:按顺序读写单个数据、在指定位置读写单个数据和读写数据块。除了上述的几种读写数据的方法外,CharBuffer类还提供了用于专门写字符串的put和append方法。在本文及后面的文章中将分别介绍这些读写缓冲区的方法。  阅读全文

posted @ 2009-10-09 09:34 银河使者 阅读(4841) | 评论 (1)  编辑

新书出版:Java Web开发速学宝典,欢迎试读
     摘要: 本书主要对Java Web的核心技术——JSP和Servlet进行讲解,此外,本书还对目前流行的MVC框架Struts 2(版本为Struts 2.1.6)的核心功能以及如何整合Spring与Hibernate进行了由浅入深的介绍。.本书分为4篇,第1篇对开发Java Web程序所必须掌握的技术进行讲解,并用一个实例带领读者进入Java Web世界;第2篇主要讲解JSP技术,使读者可以掌握JSP的核心技术;第3篇讲解Struts 2的核心内容,以及如何将Struts 2、Spring和Hibernate进行整合;第4篇是综合实例,通过对3个完整项目的学习,读者可以更好地对本书前3篇所讲的内容进行理解和消化。本书的读者对象包括:已经掌握Java基础知识,想学习Java Web技术的读者;已经掌握Java Web的基础知识,想进一步了解和掌握Java Web核心技术的读者;对JSP和Servlet技术比较熟悉,想进一步学习和掌握Struts 2,并想将Struts 2技术引入Java Web应用的读者。  阅读全文

posted @ 2009-09-21 12:11 银河使者 阅读(1919) | 评论 (0)  编辑

流媒体程序开发之:H264解码器移植到OPhone
     摘要: 本文用通俗的语言描述在OPhone上如何实现视频的流畅播放及解码器的调用方法。  阅读全文

posted @ 2009-09-20 17:54 银河使者 阅读(2638) | 评论 (1)  编辑

Java网络编程从入门到精通(33):非阻塞I/O的缓冲区(Buffer)
     摘要: 如果将同步I/O方式下的数据传输比做数据传输的零星方式(这里的零星是指在数据传输的过程中是以零星的字节方式进行的),那么就可以将非阻塞I/O方式下的数据传输比做数据传输的集装箱方式(在字节和低层数据传输之间,多了一层缓冲区,因此,可以将缓冲区看做是装载字节的集装箱)。大家可以想象,如果我们要运送比较少的货物,用集装箱好象有点不太合算,而如果要运送上百吨的货物,用集装箱来运送的成本会更低。在数据传输过程中也是一样,如果数据量很小时,使用同步I/O方式会更适合,如果数据量很大时(一般以G为单位),使用非阻塞I/O方式的效率会更高。因此,从理论上说,数据量越大,使用非阻塞I/O方式的单位成本就会越低。产生这种结果的原因和缓冲区的一些特性有着直接的关系。在本节中,将对缓冲区的一些主要特性进行讲解,使读者可以充分理解缓冲区的概念,并能通过缓冲区来提高程序的执行效率。  阅读全文

posted @ 2009-08-31 08:49 银河使者 阅读(3204) | 评论 (0)  编辑

Java网络编程从入门到精通(32):一个非阻塞I/O的例子
     摘要: 为了使读者更好地理解非阻塞I/O,本节给出了一个简单的例子用来演示如何将非阻塞I/O应用到网络程序中。读者可以先不必管这个例子的具体细节。因为这个例子的主要目的并不是讲解非阻塞I/O的使用,而是先让读者对非阻塞I/O有一个笼统的感性认识。在看完这个例子后,读者可能会有很多疑问,在本章后面的部分将会逐渐揭开这些迷团。这个例子的主要功能是访问新浪网,并将新浪网的首页在控制台上输出。  阅读全文

posted @ 2009-08-21 09:08 银河使者 阅读(3018) | 评论 (3)  编辑

Android 资源和国际化
     摘要: 资源是您在代码中使用到的并且在编译时被打包进您的应用程序的附加文件。Android支持多种不同的文件,包括XML、PNG和JPEG文件。XML文件的格式决定于其描述的内容。这些文件将描述文件支持的类型、语法或格式。  阅读全文

posted @ 2009-08-21 08:25 银河使者 阅读(3359) | 评论 (0)  编辑

Android教程之实现动作感应技术
     摘要: 今天有个公司说需要动作感应的几个小游戏!也接触android很久了,但是以前没有看过关于动作感应技术的教程,到google上也没搜索到类似教程!只有自己看API了,加上就其他平台的动作感应试试吧!就在这里记录下收获吧!  阅读全文

posted @ 2009-08-17 10:32 银河使者 阅读(922) | 评论 (0)  编辑

中国农历算法java实现
     摘要: 中国农历算法 - 实用于公历 1901 年至 2100 年之间的 200 年   阅读全文

posted @ 2009-08-16 16:53 银河使者 阅读(1428) | 评论 (2)  编辑

Java网络编程从入门到精通(31):非阻塞I/O简介
     摘要: 在网络应用中,一般可以采用同步I/O(阻塞I/O)和非阻塞I/O两种方式进行数据通讯。这两种方式并非互相排斥和互相取代。我们可以在平时的应用中单独采用其中一种通讯方式,也可以混合使用这两种通讯方式。在本文中就什么是非阻塞I/O以及为什么要使用这种通讯方式进行了介绍,在下一篇文章中给出了一个简单的例子来演示在网络应用中如何使用非阻塞I/O进行通讯。  阅读全文

posted @ 2009-08-16 10:46 银河使者 阅读(3097) | 评论 (2)  编辑

Java网络编程从入门到精通(30):定制accept方法
     摘要: 使用ServerSocket类的implAccept方法可以使用accept方法返回一个Socket子类对象。但implAccept是protected方法,因此,必须在ServerSocket类的子类中覆盖accept方法,然后在accept方法中使用implAccept方法重新设置Socket对象。  阅读全文

posted @ 2009-08-15 16:57 银河使者 阅读(2843) | 评论 (4)  编辑

Java网络编程从入门到精通(29):服务端Socket的选项
     摘要: ServerSocket类有以下三个选项:

1. SO_TIMEOUT: 设置accept方法的超时时间。

2. SO_REUSEADDR:设置服务端同一个端口是否可以多次绑定。

3. SO_RECBUF:设置接收缓冲区的大小。  阅读全文

posted @ 2009-08-12 14:50 银河使者 阅读(3178) | 评论 (1)  编辑

Java网络编程从入门到精通(28):获取ServerSocket信息的方法及FTP原理
     摘要: 本文介绍了如何通过getLocalPort、getInetAddress和getLocalSocketAddress方法获得服务端的信息,以及FTP的两种模式:主动模式和被动模式,及其原理。  阅读全文

posted @ 2009-08-12 14:27 银河使者 阅读(4783) | 评论 (1)  编辑

Java网络编程从入门到精通(27):关闭服务端连接
     摘要: 在客户端和服务端的数据交互完成后,一般需要关闭网络连接。对于服务端来说,需要关闭Socket和ServerSocket。在关闭Socket后,客户端并不会马上感知自已的Socket已经关闭,也就是说,在服务端的Socket关闭后,客户端的Socket的isClosed和isConnected方法仍然会分别得到false和true。但对已关闭的Socket的输入输出流进行操作会抛出一个SocketException异常。  阅读全文

posted @ 2009-08-04 09:26 银河使者 阅读(3690) | 评论 (3)  编辑

在Android(OPhone)模拟器中加载和使用SDCard卡
     摘要: Android模拟器或真机都会有一定大小的内部存储空间(不是指内存,指的是持久化存储空间),但这并不够,有时我们需要更大的存储空间。为了在模拟器上开发使用扩展存储空间的程序,需要在PC上模拟一个SDCard的虚拟文件,然后加载到模拟器中。  阅读全文

posted @ 2009-07-28 16:11 银河使者 阅读(3865) | 评论 (0)  编辑

想抢先体验Android操作系统的魅力吗?那就使用Android LiveCD吧!
     摘要: 由于目前基于Android的手机在国内还没有上市,就算上市,可以也比较贵。如果只是为了体验android,花几千元买个手机也不值得。不过幸好 Google想到了这一点,刚刚推出了Android LiveCD 0.2。那么什么叫LiveCD呢?就是可以刻在光盘中启动的Android,可以在PC上运行。当然,也可以使用VMWare、VirtualPC等虚拟软件来运行。或使用某些刻录软件次LiveCD刻在U盘上,那就变成了Android LiveUSB了。要注意哦,Android LiveCD可不是Android SDK中的那个模拟器,它是真正的操作系统,不是模拟的。用模拟器测程序并不一定符合真机的实际情况,而用Android LiveCD来测程序可以做到100%吻合,因为它就是真正的操作系统,唯一的不同就是一个运行在PC上,一个运行在手机上。不说废话了,先来下一个 Android LiveCD吧,可以完全免费的哦。  阅读全文

posted @ 2009-07-25 11:37 银河使者 阅读(2860) | 评论 (2)  编辑

生成n*n蛇形矩阵的算法
     摘要: 在描述算法之前,先看看下面的5*5的表格:

1 3 4 10 11
2 5 9 12 19
6 8 13 18 20
7 14 17 21 24
15 16 22 23 25

上面的表格很容易看出规律。就是从左上角第一个格开始(起始为1),然后延右上角到左下角的斜线。先从下到上,再从上到下。开始按数字递增排列。也就是说每一个斜线上分别有如下几组数字:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25  阅读全文

posted @ 2009-07-24 11:04 银河使者 阅读(8665) | 评论 (7)  编辑

android和OPhone模拟器界面对比
     摘要: OPhone是中国移动推出的手机操作系统平台,是基于android的,只是做了一些扩展。在界面和widget的显示效果还是有一些区别的。下面是我做的一个写blog的应用。看看它们的界面效果。  阅读全文

posted @ 2009-07-23 12:16 银河使者 阅读(2157) | 评论 (3)  编辑

实现一个用于显示当前时间的Google Android 窗口小部件(AppWidget)
     摘要: Android不用我多说了,这是Google在2007年推出的一款主要用于移动设备的操作系统。google在android sdk1.5中加入了appwidget api。通过这项技术,可以在android手机的主界面(Home界面)显示可以拖动的窗口,用于显示各种用户需要的信息。至于显示什么,就完全依靠开发人员的想象力了。OK,废话少说。我们先来体验一下如何开发一个显示当前时间的appwidget。这个appwidget每秒刷新一次,显示时、分和秒。  阅读全文

posted @ 2009-07-22 16:05 银河使者 阅读(2735) | 评论 (2)  编辑

Java网络编程从入门到精通(26):在服务端接收和发送数据
     摘要: 在建立完ServerSocket对象后,通过accept方法返回的Socket对象,服务端就可以和客户端进行数据交互。Socket类和ServerSocket类都有两个得到输入输出流的方法:getInputStream和getOutputStream。对于Socket类而言,使用getInputStream方法得到的InputStream是从服务端获取数据,而getOutputStream方法得到的OutputStream是向服务端发送数据。而ServerSocket的getInputStream和getOutputStream方法也类似。InputStream从客户端读取数据,OutputStream向客户端发送数据。  阅读全文

posted @ 2009-07-20 13:53 银河使者 阅读(2974) | 评论 (2)  编辑

Java网络编程从入门到精通(25):创建ServerSocket对象
     摘要: ServerSocket类的构造方法有四种重载形式,它们的定义如下:
public ServerSocket() throws IOException
public ServerSocket(int port) throws IOException
public ServerSocket(int port, int backlog) throws IOException
public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException

在上面的构造方法中涉及到了三个参数:port、backlog和bindAddr。其中port是ServerSocket对象要绑定的端口,backlog是请求队列的长度,bindAddr是ServerSocket对象要绑定的IP地址。  阅读全文

posted @ 2009-07-12 19:40 银河使者 阅读(3750) | 评论 (2)  编辑

Java网络编程从入门到精通(24):实现HTTP断点续传下载工具(附源代码)
     摘要: 在前面的文章曾讨论了HTTP消息头的三个和断点继传有关的字段。一个是请求消息的字段Range,另两个是响应消息字段Accept-Ranges和Content-Range。其中Accept-Ranges用来断定Web服务器是否支持断点继传功能。在这里为了演示如何实现断点继传功能,假设Web服务器支持这个功能;因此,我们只使用Range和Content-Range来完成一个断点继传工具的开发。  阅读全文

posted @ 2009-07-02 18:11 银河使者 阅读(4695) | 评论 (2)  编辑

Java网络编程从入门到精通(23):HTTP消息头字段
     摘要: 本文介绍了HTTP消息的学用头字段的功能和用法,如Host、Connection、Range、Date、Content-Length等,本文的需要使用HTTP模拟器进行测试,该模拟器请从如下地址下载:http://files.cnblogs.com/nokiaguy/HttpSimulator.rar  阅读全文

posted @ 2009-06-23 13:04 银河使者 阅读(3188) | 评论 (0)  编辑

Java网络编程从入门到精通(22):实现HTTP模拟器
     摘要: 在讨论HTTP协议的具体请求和响应头字段之前,让我们先来利用以前所学的知识来实现一个HTTP模拟器。所谓HTTP模拟器就是可以在用户输入HTTP的请求消息后,由这个模拟器将HTTP请求发送给相应的服务器,再接收服务器的响应消息。这个HTTP模拟器有几下特点:

1. 可以手工输入HTTP请求,并向服务器发送。

2. 接收服务器的响应消息。

3. 消息头和实体内容分段显示,也就是说,并不是象Telnet等客户端一样将HTTP响

应消息全部显示,而是先显示消息头,然后由用户决定是否显示实体内容。

4. 集中发送请求。这个HTTP模拟器和Telnet不同的是,并不是一开始就连接服务器,而是将域名、端口以及HTTP请求消息都输完后,才连接服务器,并将这些请求发送给服务器。这样做的可以预防服务器提前关闭网络连接的现象。

5. 可以循环做上述的操作。
  阅读全文

posted @ 2009-06-09 12:16 银河使者 阅读(4651) | 评论 (11)  编辑

eclipse + JBoss 5 + EJB3开发指南(14):消息驱动Bean
     摘要: 在前面的文章中给出的SessionBean的例子都是同步调用SessionBean方法的,也就是说,只有当方法中的代码都执行完,才能返回到客户端。但在某些情况下,由于SessionBean方法的执行时间比较长,这就需要异步地调用该方法,否则客户端就需要等待比较长的时间。要实现异步调用,就需要使用本要讲的消息驱动Bean。消息驱动Bean的基本原理是客户端向消息服务器发送一条消息后,消息服务器会将该消息保存在消息队列中。在这时消息服务器中的某个消费者(读取并处理消息的对象)会读取该消息,并进行处理。发送消息的客户端被称为消息生产者。  阅读全文

posted @ 2009-06-08 23:40 银河使者 阅读(2461) | 评论 (0)  编辑

Java网络编程从入门到精通(21):HTTP消息的格式
     摘要: 当用户在浏览器中输入一个基于HTTP协议的URL时(以http://开头的URL),就相当于通知器按着这个URL组织生成一个HTTP请求,并交过个请求发送到服务器;同时,等待服务器的响应。无论是请求还是响应,都统称为HTTP消息。  阅读全文

posted @ 2009-06-08 17:22 银河使者 阅读(3888) | 评论 (3)  编辑

Java网络编程从入门到精通(20):HTTP协议简介
     摘要: HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和 Web服务器之间的数据交换。我们在使用IE或Firefox浏览网页或下载Web资源时,通过在地址栏中输入http://host:port /path,开头的4个字母http就相当于通知浏览器使用HTTP协议来和host所确定的服务器进行通讯。  阅读全文

posted @ 2009-06-07 09:38 银河使者 阅读(4591) | 评论 (2)  编辑

eclipse + JBoss 5 + EJB3开发指南(13):在Servlet中访问应用程序管制EntityManager对象
     摘要: 在前面的文章中使用的都是容器管制的EntityManager对象。这类EntityManager对象是由EJB容器创建的,在这种情况下,EntityManager对象的生命周期完全由EJB容器来管理。在SessionBean中可以使用如下的代码来通知EJB容器创建 EntityManager对象:
@PersistenceContext(unitName="myentity")
protected EntityManager em;
上面的代码需要放在任意一个SessionBean的类中,EJB容器会自动创建EntityManager对象。但如果要在Servlet中直接访问 EntityManager对象,需要使用EntityManagerFactory接口的createEntityManager方法来创建 EntityManager对象,在使用完EntityManagerFactory和EntityManager对象后,可以使用相应的close方方关闭这两个对象。  阅读全文

posted @ 2009-06-06 14:07 银河使者 阅读(2169) | 评论 (2)  编辑

eclipse + JBoss 5 + EJB3开发指南(12):使用命名查询执行JPQL
     摘要: 在EJB3中可以使用EntityManager对象的createQuery方法来执行JPQL(类似于Hibernate中的HQL),这非常简单。但使用createQuery方法处理JPQL时,在每次执行JPQL的过程中系统都需要对JPQL进行分析,这在一定程度上降低了系统运行时的性能。为此,EJB3提供了命名查询的概念。命名查询有些类型于数据库中的存储过程,在提交的过程中就已经被编译处理了。因此,在执行效率上要高一些。  阅读全文

posted @ 2009-06-05 10:12 银河使者 阅读(3020) | 评论 (0)  编辑

eclipse + JBoss 5 + EJB3开发指南(11):实体Bean的连接策略(JOINED Strategy)
     摘要: 本文介绍了如何使用连接策略(JOINED Strategy)对物理表进行划分。子表与父表共享主键。  阅读全文

posted @ 2009-06-04 15:31 银河使者 阅读(2065) | 评论 (0)  编辑

“Duke选择大奖”荟萃2009最具创新的Java技术应用
     摘要: Sun Microsystems公司(NASDAQ: JAVA)今天宣布第七届年度“Duke选择大奖”(Duke’s Choice Awards)获奖者名单。“Duke选择大奖”计划旨在表彰过去一年里全球个人或公司开发的、最具影响力的Java技术应用。这些获奖者是由Sun公司副总裁兼Sun研究院院士James Gosling和一个由Sun公司Java技术专家组成的小组评选确定的。如需有关获奖者及其应用的详尽信息,请登录:http://www.java.com/en/dukeschoice/。  阅读全文

posted @ 2009-06-03 19:10 银河使者 阅读(505) | 评论 (0)  编辑

eclipse + JBoss 5 + EJB3开发指南(10):通过继承实体Bean,将单个表映射成多个表(单表策略,SINGLE_TABLE)
     摘要: 如果以前使用过EJB1.x或EJB2.x的实体Bean,会发现无法通过继承实体Bean将单个表分成多表。而在EJB3中,我们可以很容易地使用@Inheritance和@DiscriminatorColumn注释来实现这个功能。  阅读全文

posted @ 2009-06-03 16:22 银河使者 阅读(1795) | 评论 (0)  编辑

eclipse + JBoss 5 + EJB3开发指南(9):实现Entity Bean的多对多(many-to-many)映射
     摘要: 本文介绍了如何使用@ManyToMany注释实现多对多的映射关系。在EJB3中多对多的映射关系需要使用一个连接表来描述。  阅读全文

posted @ 2009-06-03 16:15 银河使者 阅读(1773) | 评论 (0)  编辑

eclipse + JBoss 5 + EJB3开发指南(8):实现Entity Bean的一对多(one-to-many)映射
     摘要: 本文介绍了如使用@OneToMany注释来实现一对多的映射,以及使用@JoinTable注释指定连接表来实现一对多的单向映射。  阅读全文

posted @ 2009-06-03 15:27 银河使者 阅读(2154) | 评论 (0)  编辑

eclipse + JBoss 5 + EJB3开发指南(7):实现Entity Bean的一对一(one-to-one)映射
     摘要: 一对一映射是很常用的。在一般情况下,一个主表通过外键和从表形成一对一的关系。在EJB3中使用@OneToOne注释来映射。一对一关系除了使用外键进行关联外,也可以采用共享主键的方式连接两个表。  阅读全文

posted @ 2009-06-03 10:51 银河使者 阅读(2125) | 评论 (1)  编辑

Java网络编程从入门到精通(19):套接字(Socket)的异常
     摘要: 在Socket 类中有很多方法在声明时使用throws抛出了一些异常,这些异常都是IOException的子类。在Socket类的方法中抛出最多的就是 SocketException,其余还有七个异常可供Socket类的方法抛出。这些异常的继承关系如图1所示。其中灰色背景框所描述的例外就是 Socket类的方法可能抛出的异常。  阅读全文

posted @ 2009-06-02 08:19 银河使者 阅读(3224) | 评论 (2)  编辑

Java网络编程从入门到精通(18):Socket类的getter和setter方法(2)
     摘要: 在Java类中,getter和setter方法占了很大的比重。由于Java中没有定义属性的关键字;因此,getter和setter方法用于获得和设置Java类的属性值;如getName和setName方法用于设置name属性的值。如果某个属性只有getter方法,那这个属性是只读的;如果只有setter方法,那么这个属性是只写的。在Socket类中也有很多这样的属性来获得和Socket相关的信息,以及对Socket对象的状态进行设置。  阅读全文

posted @ 2009-06-01 17:31 银河使者 阅读(3718) | 评论 (0)  编辑

eclipse + JBoss 5 + EJB3开发指南(6):编写第一个实体Bean程序
     摘要: EJB3容器通过EntityManager对象管理实体Bean,该类最主要的功能就是在记录和JavaBean之间进行互相映射。例如,我们从数据库中查出一条记录,这条记录有field1和field2两个字段,假设有一个JavaBean,也包含了field1和field2属性。那么 EntityManager可以将这条记录中的值映射到JavaBean的field1和field2属性中。也就是说,在数据库中的一条记录就对应于一个JavaBean的对象实例。下面将给出一个简单的例子来演示如何来实现一个应用实体Bean的程序。在这个例子中使用无状态的session bean通过EntityManager对象从数据表中查找一条记录,将该记录映射成实体Bean的对象实例,最后通过session bean的方法返回该记录的某个字段值。  阅读全文

posted @ 2009-05-29 22:02 银河使者 阅读(2579) | 评论 (0)  编辑

Base64编码原理与实现
     摘要: 本文介绍了Base64编码的基本原理,并给出了一个简单的Base64编码的实现  阅读全文

posted @ 2009-05-29 19:20 银河使者 阅读(4757) | 评论 (0)  编辑

Java网络编程从入门到精通(17):Socket类的getter和setter方法(1)
     摘要: 在Java类中,getter和setter方法占了很大的比重。由于Java中没有定义属性的关键字;因此,getter和setter方法用于获得和设置Java类的属性值;如getName和setName方法用于设置name属性的值。如果某个属性只有getter方法,那这个属性是只读的;如果只有setter方法,那么这个属性是只写的。在Socket类中也有很多这样的属性来获得和Socket相关的信息,以及对Socket对象的状态进行设置。  阅读全文

posted @ 2009-05-29 09:43 银河使者 阅读(4761) | 评论 (3)  编辑

Java网络编程从入门到精通(16):客户端套接字(Socket)的超时
     摘要: 客户端套接字的超时(timeout)就是指在客户端通过Socket和服务器进行通讯的过程中,由于网络延迟,网络阻塞等原因,造成服务器并未及时响应客户端的一种现象。在一段时间后,客户端由于未收到服务端的响应而抛出一个超时错误; 其中客户端所等待的时间就是超时时间。由于生产超时错误的一端都是被动端;也就是说,这一端是在接收数据,而不是发送数据。对于客户端Socket来说,只有两个地方是在接收数据;一个是在连接服务器时;另一个是在连接服务器成功后,接收服务器发过来的数据时。因此,客户端超时也分为两种类型:连接超时和读取数据超时。  阅读全文

posted @ 2009-05-26 08:48 银河使者 阅读(3890) | 评论 (0)  编辑

Java网络编程从入门到精通(15):为什么要使用SocketAddress来管理网络地址
     摘要: 在使用Socket来连接服务器时最简单的方式就是直接使用IP和端口,但Socket类中的connect方法并未提供这种方式,而是使用 SocketAddress类来向connect方法传递服务器的IP和端口。虽然这种方式从表面上看要麻烦一些,但它会给我们带来另外一个好处,那就是网络地址的重用。  阅读全文

posted @ 2009-05-22 09:02 银河使者 阅读(12522) | 评论 (0)  编辑

Java网络编程从入门到精通(14):多种多样的建立网络连接的方式
     摘要: 在上一篇文章中我们讨论了Socket类的基本用法,并给出的例子中使用Socket类连接服务器时使用了一种最简单的连接方式,也就是通过IP和端口号来连接服务器。而为了使连接服务器的方式更灵活,Socket类不仅可以通过自身的构造方法连接服务器,而且也可以通过connect方法来连接数据库。  阅读全文

posted @ 2009-05-18 09:01 银河使者 阅读(4197) | 评论 (2)  编辑

Java网络编程从入门到精通(13):使用Socket类接收和发送数据
     摘要: 网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类。通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据。在本文及后面的数篇文章中将详细讨论Socket类的使用,内容包括Socket类基础、各式各样的连接方式、get和set方法、连接过程中的超时以及关闭网络连接等。  阅读全文

posted @ 2009-05-14 10:21 银河使者 阅读(9214) | 评论 (3)  编辑

Java网络编程从入门到精通(12):使用isReachable方法探测主机是否可以连通
     摘要: 在J2SE5.0中的InetAddress类中增加了一个isReachable方法。可以使用这个方法来探测主机是否可以连通。  阅读全文

posted @ 2009-05-08 09:00 银河使者 阅读(4601) | 评论 (0)  编辑

Java网络编程从入门到精通(11):使用NetworkInterface类获得网络接口信息
     摘要: 从JDK1.4开始,Java提供了一个NetworkInterface类。这个类可以得到本机所有的物理网络接口和虚拟机等软件利用本机的物理网络接口创建的逻辑网络接口的信息。  阅读全文

posted @ 2009-05-08 08:53 银河使者 阅读(10254) | 评论 (9)  编辑

Java网络编程从入门到精通(10):Inet4Address类和Inet6Address类
     摘要: 为了区分IPv4和IPv6地址,Java提供了两个类:Inet4Address和Inet6Address,它们都是InetAddress类的子类,这两个类分别按着IPv4和IPv6的规则实现了InetAddress类中的public方法。它们所不同的是Inet6Address类比Inet4Address类多了一个方法:isIPv4CompatibleAddress,这个方法用来判断一个IPv6地址是否和IPv4地址兼容。和IPv4兼容的IPv6地址除了最后四个字节有值名,其他的字节都是0,如0:0:0:0:0:0.192.168.18.10、::ABCD:FAFA都是和IPv4兼容的IPv6地址。  阅读全文

posted @ 2009-05-04 19:13 银河使者 阅读(5948) | 评论 (0)  编辑

eclipse + JBoss 5 + EJB3开发指南(1):编写第一个无状态的SessionBean
     摘要: 本文中将编写一个简单的无状态SessionBean。在发布EJB时,一般需要将EJB程序以jar文件的形式进行发布。这些jar文件将被放在\server\default\deploy目录中。如果在Eclipse中开发EJB程序,需要进行一些配置。首选需要在首选项(Preferences)对话框中设置JBoss的安装目录(如D:\jboss5)。然后在运行配置对话框中添加jboss的运行项。在jboss4.2及以后的版本中,默认情况下jboss只接收来自localhost或127.0.0.1的请求,也就是只接收本地的访问。为了使 jboss接收来自其他地址的请求,在启动jboss时需要使用-b命令行参数进行设置。如下面的启动命令所示:run.bat -b 200.200.200.123,run.bat -b 0.0.0.0  阅读全文

posted @ 2009-05-01 14:39 银河使者 阅读(5273) | 评论 (3)  编辑

Java网络编程从入门到精通 (9):使用isXxx方法判断地址类型
     摘要: IP地址分为普通地址和特殊地址。在前面的文章中所使用的大多数都是普通的IP地址,在本文中将介绍如何利用InetAddress类提供的十个方法来确定一个IP地址是否是一个特殊的IP地址。  阅读全文

posted @ 2009-04-26 18:07 银河使者 阅读(4865) | 评论 (2)  编辑

Java网络编程从入门到精通(8):用getAddress方法获得IP地址
     摘要: getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址,而getAddress方法返回的是byte数组形式的IP地址。getAddress方法的定义是public byte[] getAddress()。这个方法返回的byte数组是有符号的。在Java中byte类型的取值范围是-128〜127。如果返回的IP地址的某个字节是大于127的整数,在byte数组中就是负数。由于Java中没有无符号byte类型,因此,要想显示正常的IP地址,必须使用int或long类型。  阅读全文

posted @ 2009-04-21 12:41 银河使者 阅读(5219) | 评论 (0)  编辑

Java网络编程从入门到精通(7):用getHostAddress方法获得IP地址
     摘要: getHotAddress方法用来得到主机的IP地址,这个IP地址可能是IPv4的地址,也可能是IPv6的地址。getHostAddress方法的定义是public String getHostAddress()无论InetAddress对象是使用哪种方式创建的,getHostAddress方法都不会访问DNS服务器。如果想访问使用IPv6地址的远程主机,需要在操作系统上安装IPv6协议。  阅读全文

posted @ 2009-04-21 12:33 银河使者 阅读(6473) | 评论 (0)  编辑

WebSphere社区版,Geronimo1.1八卦和GBean架构
     摘要: IBM WebSphere AS基于Apache Geronimo的社区免费版, 就像狼和狈终于走到一起,很可能要破坏应用服务器市场的平衡。IBM WebSphere Application Server的品牌,Apache Geronimo以GBean架构的开源大扫荡,免费且比JBoss的LGPL宽松得多的Apache 2.0 License, 让安全第一的商业客户,喜欢摆弄技术的程序员和只想省钱的老板可以在上面达成某种妥协。

  阅读全文

posted @ 2009-04-18 21:36 银河使者 阅读(818) | 评论 (0)  编辑

将Java程序变成可执行文件的简单方法
     摘要: 运行Java程序(SWING或SWT的桌面程序)可以直接执行.class文件或将所有的.class文件及相关的其他文件压缩成.jar文件,然后使用javaw -jar my.jar来运行程序(其中my.jar是一个jar文件名,可以是任何指定的jar文件)。但在windows下,用户习惯直接运行一个exe来执行程序。在网上有很多程序可以将my.jar或.class文件直接转换成exe文件。但很多都是将jar或.class文件放到exe里成,这样不太方便。有些工具,如javalauncher可以使用一个exe程序(用c语言写的)来调用jar文件。但有时需要在运行程序之间做些其他的工具,例如,在客户端动态从服务端下载最新版本的程序。因此,在本文将使用delphi2009实现一个简单的可以调用jar文件的程序,读者可以对这个程序进行任何扩展,本文还提供了该程序的源代码和exe文件。  阅读全文

posted @ 2009-04-15 13:58 银河使者 阅读(4441) | 评论 (2)  编辑

Java网络编程从入门到精通(6):使用getCanonicalHostName方法获得主机名
     摘要: getCanonicalHostName方法和getHostName方法一样,也是得到远程主机的域名。但它们有一个区别。getCanonicalHostName得到的是主机名,而getHostName得到的主机别名。在访问某些域名时,getCanonicalHostName方法和getHostName方法的返回值是一样的,这和DNS服务器如何解释主机名和主机别名以及它们的设置有关。如通过www.ibm.com创建InetAddress对象后,使用getCanonicalHostName方法和getHostName方法返回的结果都是www.ibm.com(有时直接返回IP地址,这可能和IBM的DNS服务器的处理机制有关)。如果DNS不允许通过IP地址得到域名,那么这两个方法就会返回IP地址来代替域名。
  阅读全文

posted @ 2009-04-14 08:56 银河使者 阅读(6533) | 评论 (0)  编辑

Java网络编程从入门到精通(5):使用InetAddress类的getHostName方法获得域名
     摘要: getHostName方法可以得到远程主机的域名,也可以得到本机名。getHostName方法的定义是public String getHostName(),匀样可以使用三种方法创建InetAddress对象,这三种方法为:1.使用getLocalHost方法创建InetAddress对象。2.使用域名创建InetAddress对象。3. 使用IP地址创建InetAddress对象
  阅读全文

posted @ 2009-04-14 08:42 银河使者 阅读(5043) | 评论 (0)  编辑

Java网络编程从入门到精通(4):DNS缓存
     摘要: 在通过DNS查找域名的过程中,可能会经过多台中间DNS服务器才能找到指定的域名,因此,在DNS服务器上查找域名是非常昂贵的操作。在Java中为了缓解这个问题,提供了DNS缓存。当InetAddress类第一次使用某个域名(如www.csdn.net)创建InetAddress对象后,JVM就会将这个域名和它从DNS上获得的信息(如IP地址)都保存在DNS缓存中。当下一次InetAddress类再使用这个域名时,就直接从DNS缓存里获得所需的信息,而无需再访问DNS服务器。  阅读全文

posted @ 2009-04-06 21:06 银河使者 阅读(4848) | 评论 (2)  编辑

IBM软件集团及五大软件品牌
     摘要: 从1995年成立到今年,IBM软件集团已经走过了10个年头。从1995年起步至今,IBM软件集团已经成为全球第二大软件实体和全球领先的中间件供应商。2004年,其收入高达151亿美元,比2003年的增长8亿美元。目前,IBM软件占IBM公司总利润超过三分之一。  阅读全文

posted @ 2009-04-02 19:29 银河使者 阅读(848) | 评论 (1)  编辑

Java网络编程从入门到精通(3):为什么不能直接通过IP访问网站
     摘要: 在《创建InetAddress对象的四个静态方法》一文中通过getAllByName得到了www.csdn.net对应的四个IP地址。从理论上说,在IE(或其他的Web浏览器,如Firefox)的地址栏中输入这四个IP地址中的任何一个,都可能访问www.csdn.net。如输入http://211.100.26.124。但IE却返回了一个错误信息。在输入另外三个IP后,都会得到同样的错误信息。  阅读全文

posted @ 2009-03-31 10:44 银河使者 阅读(4370) | 评论 (6)  编辑

Java网络编程从入门到精通(2):创建InetAddress对象的四个静态方法
     摘要: InetAddress类是Java中用于描述IP地址的类。它在java.net包中。在Java中分别用Inet4Address和Inet6Address类来描述IPv4和IPv6的地址。这两个类都是InetAddress的子类。由于InetAddress没有public的构造方法,因此,要想创建InetAddress对象,必须得依靠它的四个静态方法。InetAddress可以通过getLocalHost方法得到本机的InetAddress对象,也可以通过getByName、getAllByName和getByAddress得到远程主机的InetAddress对象。  阅读全文

posted @ 2009-03-31 10:35 银河使者 阅读(5337) | 评论 (1)  编辑

Java网络编程从入门到精通(1):Internet地址概述
     摘要: 所有连入Internet的终端设备(包括计算机、PDA、打印机以及其他的电子设备)都有一个唯一的索引,这个索引被称为IP地址。现在Internet上的IP地址大多由四个字节组成,这种IP地址叫做IPv4。除了这种由四个字节组成的IP,在Internet上还存在一种IP,这种IP由16个字节组成,叫做IPv6。IPv4和IPv6后面的数字是Internet协议(Internet Protocol,IP)的版本号。
  阅读全文

posted @ 2009-03-23 21:03 银河使者 阅读(6111) | 评论 (2)  编辑

Java多线程初学者指南(12):使用Synchronized块同步变量
     摘要: 我们可以通过synchronized块来同步特定的静态或非静态方法。要想实现这种需求必须为这些特性的方法定义一个类变量,然后将这些方法的代码用synchronized块括起来,并将这个类变量作为参数传入synchronized块。在使用synchronized块时应注意,synchronized块只能使用对象作为它的参数。如果是简单类型的变量(如int、char、boolean等),不能使用synchronized来同步。  阅读全文

posted @ 2009-03-22 21:26 银河使者 阅读(7312) | 评论 (4)  编辑

Java多线程初学者指南(11):使用Synchronized块同步方法
     摘要: synchronized关键字有两种用法。第一种就是在《使用Synchronized关键字同步类方法》一文中所介绍的直接用在方法的定义中。另外一种就是synchronized块。我们不仅可以通过synchronized块来同步一个对象变量。也可以使用synchronized块来同步类中的静态方法和非静态方法。  阅读全文

posted @ 2009-03-22 21:15 银河使者 阅读(11328) | 评论 (1)  编辑

Java多线程初学者指南(10):使用Synchronized关键字同步类方法
     摘要: 要想解决“脏数据”的问题,最简单的方法就是使用synchronized关键字来使run方法同步。虽然可以使用synchronized来定义方法,但synchronized并不属于方法定义的一部分,因此,synchronized关键字不能被继承。如果在父类中的某个方法使用了synchronized关键字,而在子类中覆盖了这个方法,在子类中的这个方法默认情况下并不是同步的,而必须显式地在子类的这个方法中加上synchronized关键字才可以。当然,还可以在子类方法中调用父类中相应的方法,这样虽然子类中的方法不是同步的,但子类调用了父类的同步方法,因此,子类的方法也就相当于同步了。  阅读全文

posted @ 2009-03-20 13:05 银河使者 阅读(9699) | 评论 (4)  编辑

Java多线程初学者指南(9):为什么要进行数据同步
     摘要: Java中的变量分为两类:局部变量和类变量。局部变量是指在方法内定义的变量,如在run方法中定义的变量。对于这些变量来说,并不存在线程之间共享的问题。因此,它们不需要进行数据同步。类变量是在类中定义的变量,作用域是整个类。这类变量可以被多个线程共享。因此,我们需要对这类变量进行数据同步。数据同步就是指在同一时间,只能由一个线程来访问被同步的类变量,当前线程访问完这些变量后,其他线程才能继续访问。这里说的访问是指有写操作的访问,如果所有访问类变量的线程都是读操作,一般是不需要数据同步的。  阅读全文

posted @ 2009-03-19 13:23 银河使者 阅读(4936) | 评论 (1)  编辑

Java多线程初学者指南(8):从线程返回数据的两种方法
     摘要: 从线程中返回数据和向线程传递数据类似。也可以通过类成员以及回调函数来返回数据。但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪。  阅读全文

posted @ 2009-03-19 13:02 银河使者 阅读(6874) | 评论 (0)  编辑

Java多线程初学者指南(7):向线程传递数据的三种方法
     摘要: 在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。本文就以上原因介绍了几种用于向线程传递数据的方法,在下一篇文章中将介绍从线程中返回数据的方法。  阅读全文

posted @ 2009-03-16 23:18 银河使者 阅读(15820) | 评论 (2)  编辑

Java多线程初学者指南(6):慎重使用volatile关键字
     摘要: volatile关键字相信了解Java多线程的读者都很清楚它的作用。volatile关键字用于声明简单类型变量,如int、float、boolean等数据类型。如果这些简单数据类型声明为volatile,对它们的操作就会变成原子级别的。不过在使用volatile关键字时也要慎重,并不是只要简单类型变量使用volatile修饰,对这个变量的所有操作都是原来操作,当变量的值由自身的上一个决定时,如n=n+1、n++等,volatile关键字将失效,只有当变量的值和自身上一个值无关时对该变量的操作才是原子级别的,如n = m + 1,这个就是原级别的。所以在使用volatile关键时一定要谨慎,如果自己没有把握,可以使用synchronized来代替volatile。  阅读全文

posted @ 2009-03-14 16:44 银河使者 阅读(9384) | 评论 (10)  编辑

Java多线程初学者指南(5):join方法的使用
     摘要: 在上面的例子中多次使用到了Thread类的join方法。我想大家可能已经猜出来join方法的功能是什么了。对,join方法的功能就是使异步执行的线程变成同步执行。也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这个线程一定会执行完。而使用join方法后,直到这个线程退出,程序才会往下执行。  阅读全文

posted @ 2009-03-12 09:07 银河使者 阅读(5967) | 评论 (14)  编辑

Java多线程初学者指南(4):线程的生命周期
     摘要: 与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。  阅读全文

posted @ 2009-03-11 12:15 银河使者 阅读(8255) | 评论 (3)  编辑

Java多线程初学者指南(3):使用Runnable接口创建线程
     摘要: 实现Runnable接口的类必须使用Thread类的实例才能创建线程。通过Runnable接口创建线程分为两步:1. 将实现Runnable接口的类实例化。2. 建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法。最后通过Thread类的start方法建立线程。  阅读全文

posted @ 2009-03-10 11:56 银河使者 阅读(5862) | 评论 (0)  编辑

Java多线程初学者指南(2):用Thread类创建线程
     摘要: 一个普通的Java类只要从Thread类继承,就可以成为一个线程类。并可通过Thread类的start方法来执行线程代码。虽然Thread类的子类可以直接实例化,但在子类中必须要覆盖Thread类的run方法才能真正运行线程的代码。  阅读全文

posted @ 2009-03-07 14:06 银河使者 阅读(6517) | 评论 (5)  编辑

Java多线程初学者指南(1):线程简介
     摘要: 线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点。因此,在操作系统中运行的任何程序都至少有一个主线程。  阅读全文

posted @ 2009-03-07 13:43 银河使者 阅读(5224) | 评论 (0)  编辑

Struts1.x系列教程(24):配置文件总结
     摘要: 要想使用Struts,至少要依靠两个配置文件:web.xml和struts-config.xml。其中web.xml用来安装Struts框架。而struts-config.xml用来配置在Struts框架中要使用的资源。如Formbean、Action、插件等。如果使用了某些插件,如Validator、Tiles等。还可能需要其他的配置文件。虽然在前面的文章中已多次使用了这两个配置文件,但都是分散介绍的。因此,在本文将对这些配置进行一下总结和回顾,以使读者对Struts的配置有一个更清醒的认识。  阅读全文

posted @ 2009-02-27 17:40 银河使者 阅读(3993) | 评论 (2)  编辑

Struts1.x系列教程(23):使用Tiles模板进行布局
     摘要: Tiles提供的模板机制可以最大限度地避免重复编写代码。实际上,Tiles模板就是的JSP页面,只是在这种JSP页面中使用Tiles标签代替确定不了的内容(相当于占位符),也就是需要在开发人员使用模板时来确定的内容。除了这一点,Tiles模板页面和普通的JSP页面完全相同。  阅读全文

posted @ 2009-02-27 17:06 银河使者 阅读(3637) | 评论 (3)  编辑

Struts1.x系列教程(22):Tiles框架简介
     摘要: Tiles框架是Struts的一个插件。我们可以使用Tiles框架来进行页面布局设计。Tiles框架提供了一种模板机制,它可以将网页内容和布局分离,并允许先创建模板,然后在页面中再插入具体的内容。  阅读全文

posted @ 2009-02-25 22:42 银河使者 阅读(3042) | 评论 (0)  编辑

Struts1.x系列教程(21):使用MappingDispatchAction类调用不同的Action方法
     摘要: 与LookupDispatchAction、DispatchAction不同,MappingDispatchAction类并不通过请求参数来指定动作,而是将一个Struts动作对应于一个Action方法。下面的例子演示了如何使用MappingDispatchAction类来将Struts 动作和Action方法相对应。  阅读全文

posted @ 2009-02-24 19:55 银河使者 阅读(2878) | 评论 (0)  编辑

Struts1.x系列教程(20):使用EventDispatchAction类处理一个form多个submit
     摘要: 虽然LookupDispatchAction类可以很好地处理拥有多个提交按钮的Form,但是必须要和属性文件相关联,而且还得在getKeyMethodMap方法中进行key和Action方法的映射,使用起来十分不方便。从Struts1.2.9开始,加入了另一个用于处理多个提交动作的EventDispatchAction类。这个类也是DispatchAction的子类,它在使用上要比LookupDispatchAction类容易的多。EventDispatchAction类的基本原理是通过元素的parameter属性指定多个动作,中间用逗号(,)分隔。每个动作实际上就是标签的property属性值。这样EventDispatchAction类就可以根据每个标签的属性值来确定用户按的是哪个提交按钮了。  阅读全文

posted @ 2009-02-24 15:07 银河使者 阅读(2369) | 评论 (1)  编辑

Struts1.x系列教程(19):LookupDispatchAction类处理一个form多个submit
     摘要: 有时在HTML form中需要提供多个提交按钮,这时LookupDispatchAction类就派上用场了。LookupDispatchAction是DispatchAction的子类,用于处理客户端代码中有一个Form含有多个提交按钮的情况。  阅读全文

posted @ 2009-02-23 21:34 银河使者 阅读(2781) | 评论 (0)  编辑

Struts1.x系列教程(18):使用DispatchAction类调用多个Action方法
     摘要: 在使用Struts动作时,每一个Action都需要编写一个类,并且要在struts-config.xml进行配置。这对于一个拥有很多Action的Web程序来说,工作量是非常大的。为此,Struts提供了DispatchAction类,这个类允许将一个Action作为一个方法来调用。在Web浏览器中通过请求参数来指定要调用的动作。  阅读全文

posted @ 2009-02-20 14:01 银河使者 阅读(5787) | 评论 (5)  编辑

Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源
     摘要: 在本文介绍了如何使用IncludeAction和ForwardAction类包含和转入Web资源。这两个类与标签的功能相同,但Struts建议使用这两个类来实现包含和转入web资源的功能。  阅读全文

posted @ 2009-02-19 10:36 银河使者 阅读(2583) | 评论 (1)  编辑

Struts1.x系列教程(16):使用LocaleAction类实现国际化的Web程序
     摘要: 我们曾经在《Struts1.x系列教程(13):国际化》一文中讲过如何通过编程的方式实现多语言的Web页面。在本文中,我们会介绍另外一种实现多语言Web页面的方法。这种方式与《Struts1.x系列教程(13):国际化》一文中所介绍的方法的区别就是无需编写一行代码就可以完成多语言的设置。  阅读全文

posted @ 2009-02-19 09:18 银河使者 阅读(2461) | 评论 (0)  编辑

Struts1.x系列教程(15):使用DownloadAction类统计文件下载次数
     摘要: 除了标准的org.apache.struts.action.Action类外,在Struts中还提供了另外7个Action类来完成特殊的工作。本文及后面的文章中将介绍这些Action类的用法。  阅读全文

posted @ 2009-02-18 10:34 银河使者 阅读(3322) | 评论 (0)  编辑

WebService大讲堂之Axis2(10):使用soapmonitor模块监视soap请求与响应消息
     摘要: 在Axis2中提供了一个Axis2模块(soapmonitor),该模块实现了与《WebService大讲堂之Axis2(9):编写Axis2模块(Module)》中实现的logging模块相同的功能,所不同的是,logging模块直接将SOAP请求与响应消息输出到Tomcat控制台中,而soapmonitor模块利用applet直接在页面中输出SOAP请求和响应消息。  阅读全文

posted @ 2009-02-17 09:22 银河使者 阅读(9202) | 评论 (8)  编辑

Struts1.x系列教程(14):动态Form
     摘要: 虽然ActionForm功能强大,但有些时候使用起来有些麻烦。如每建立一个用户录入界面(JSP页面),就得建立一个ActionForm子类来和这个页面对应。当然,我们可以采用嵌套属性从一定程度上弥补这个问题。但是在建立新的用户录入界面时,仍不可避免地要建立新的ActionForm子类。在Struts1.2.6及以后的Struts版本中提供了一种动态Form的技术。使得不用再建立新的ActionForm就可以封装用户提交的数据。实际上,这种技术将定义ActionForm子类的工作变成了编写XML文件的工作。  阅读全文

posted @ 2009-02-16 17:22 银河使者 阅读(4578) | 评论 (4)  编辑

Struts1.x系列教程(13):国际化
     摘要: 对于一个面向全球的Web应用程序,按着不同国家的要求显示相关信息(称为国际化)显得尤为重要。国际化的工作非常复杂和繁琐。因为要翻译很多Web界面,信息格式等。然而,Struts为我们提供了完成国际化工作的更容易的方式。在本文将介绍如何使用Struts来简化国际化的工作。  阅读全文

posted @ 2009-02-16 09:53 银河使者 阅读(3664) | 评论 (3)  编辑

WebService大讲堂之Axis2(9):编写Axis2模块(Module)
     摘要: Axis2可以通过模块(Module)进行扩展。Axis2模块至少需要有两个类,这两个类分别实现了Module和Handler接口。开发和使用一个Axis2模块的步骤如下:

1. 编写实现Module接口的类。Axis2模块在进行初始化、销毁等动作时会调用该类中相应的方法)。

2. 编写实现Handler接口的类。该类是Axis2模块的业务处理类。

3. 编写module.xml文件。该文件放在META-INF目录中,用于配置Axis2模块。

4. 在axis2.xml文件中配置Axis2模块。

5. 在services.xml文件中配置Axis2模块。每一个Axis2模块都需要使用元素引用才能使用。

6. 发布Axis2模块。需要使用jar命令将Axis2模块压缩成.mar包(文件扩展名必须是.mar),然后将.mar文件放在\webapps\axis2\WEB-INF\modules目录中。  阅读全文

posted @ 2009-02-16 09:05 银河使者 阅读(12759) | 评论 (3)  编辑

Struts1.x系列教程(12):Validator验证框架的内置标准验证
     摘要: 本文介绍了Struts 1.x Validator验证框架的内置标准验证。  阅读全文

posted @ 2009-02-14 19:27 银河使者 阅读(3654) | 评论 (0)  编辑

Struts1.x系列教程(11):Validator验证框架高级应用
     摘要: 在《Struts1.x系列教程(10):Validator验证框架入门》一文中给出的例子中的name、age和email都是简单的属性,如果是嵌套的属性(也就是一个属性的数据类型是另外一个带有属性的类),可以使用圆点(.)符号来访问。如我们可以通过设置元素的property属性值为“employee.salary”来验证employee属性中的salary属性。  阅读全文

posted @ 2009-02-14 19:14 银河使者 阅读(3356) | 评论 (1)  编辑

WebService大讲堂之Axis2(8):异步调用WebService
     摘要: 在前面几篇文章中都是使用同步方式来调用WebService。也就是说,如果被调用的WebService方法长时间不返回,客户端将一直被阻塞,直到该方法返回为止。使用同步方法来调用WebService虽然很直观,但当WebService方法由于各种原因需要很长时间才能返回的话,就会使客户端程序一直处于等待状态,这样用户是无法忍受的。当然,我们很容易就可以想到解决问题的方法,这就是多线程。解决问题的基本方法是将访问WebService的任务交由一个或多个线程来完成,而主线程并不负责访问WebService。这样即使被访问的WebService方法长时间不返回,客户端仍然可以做其他的工作。我们可以管这种通过多线程访问WebService的方式称为异步访问。虽然直接使用多线程可以很好地解决这个问题,但比较麻烦。幸好Axis2的客户端提供了异步访问WebService的功能。  阅读全文

posted @ 2009-02-13 14:23 银河使者 阅读(14876) | 评论 (9)  编辑

WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService
     摘要: 在现今的Web应用中经常使用Spring框架来装载JavaBean。如果要想将某些在Spring中装配的JavaBean发布成WebService,使用Axis2的Spring感知功能是非常容易做到的。在本文的例子中,除了\webapps\axis2目录及该目录中的相关库外,还需要Spring框架中的spring.jar文件,将该文件复制到\webapps\axis2\WEB-INF\lib目录中。  阅读全文

posted @ 2009-02-13 09:14 银河使者 阅读(17207) | 评论 (15)  编辑

Struts1.x系列教程(10):Validator验证框架入门
     摘要: Validator框架是一个Struts插件,最初由David Winterfeldt设计并实现。Validator框架从Struts 0.5时代就可以使用,但那时Validator框架只是被捐助的一个jar包。Apache组织为了使开发人员更方便地使用Validator框架,决定从Struts1.1开始,将Validator框架作为Struts的一部分同Struts一起发布。  阅读全文

posted @ 2009-02-12 16:55 银河使者 阅读(7767) | 评论 (7)  编辑

Struts 2杂谈(1):ValueStack对象的传送带机制
     摘要: 众所周知,Strut 2的Action类通过属性可以获得所有相关的值,如请求参数、Action配置参数、向其他Action传递属性值(通过chain结果)等等。要获得这些参数值,我们要做的唯一一件事就是在Action类中声明与参数同名的属性,在Struts 2调用Action类的Action方法(默认是execute方法)之前,就会为相应的Action属性赋值。这一切主要是依靠ValueStack对象实现的。  阅读全文

posted @ 2009-02-11 22:22 银河使者 阅读(5712) | 评论 (4)  编辑

Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)
     摘要: 在本文主要介绍如何来开发一个Stateless Session Bean,并在未安装WebLogic10的机器上访问Session Bean。开发EJB3 Stateless Session Bean要比开发EJB2 Stateless Session Bean容易得多,只需要几个注释就可以搞定。  阅读全文

posted @ 2009-02-08 21:50 银河使者 阅读(4352) | 评论 (6)  编辑

Struts1.x系列教程(9):上传任意多个文件
     摘要: 从《Struts1.x系列教程(8):上传单个文件》中给出的例子可以看出,在Struts1.x中上传单个文件是非常简单的,但在实际应用中,上传文件的个数一般是不确定的,如在网络硬盘中,用户可以根据自己的需要上传任意多个文件(当然,网络硬盘一次上传文件的数目一般也是有上限的,如50个,但用户可以只上传了3个文件,因此,在这种情况下,上传文件的个数也是不确定的)。如果读者用过“网易网盘”或其他类似的服务程序,它们的上传文件功能基本上都是根据用户选择的文件多少来添加要上传的文件(并不是一开始就在界面上放很多<input type=’file’>元素来让用户输入上传文件名)。为了让读者也可以使用Struts来实现这个功能,在本节将给出一个用Struts实现的类似“网易网盘”的上传任意多个文件的Web程序。  阅读全文

posted @ 2009-02-07 19:01 银河使者 阅读(4566) | 评论 (5)  编辑

在applet中访问本地资源
     摘要: applet运行在沙盒中,因此,对于不了解签名的开发人员,使用applet来访问本地资源被认为是“不可能完成的任务”,然而,我们可以使用keytool、jarsigner命令对jar文件进行签名,这样applet就可以在客户端随心所欲了,当然,这和ocx控件一样,也需要客户端进行确认。  阅读全文

posted @ 2009-02-06 21:46 银河使者 阅读(3170) | 评论 (2)  编辑

Struts2.1.6测试小记
     摘要: 经笔者测试,Struts2.1.6并不与Struts2.0.14完全兼容,如在struts2.1.6中还需要一个commons-fileupload-1.2.1.jar文件才能正常使用,而在struts2.0.14中并不需要这个文件。Struts2.1.6至少需要6个jar文件才能正常工作,这6个jar文件是:struts2-core-2.1.6.jar、freemarker-2.3.13.jar、commons-logging-1.0.4.jar、ognl-2.6.11.jar、xwork-2.1.2.jar、commons-fileupload-1.2.1.jar。  阅读全文

posted @ 2009-02-06 12:55 银河使者 阅读(5451) | 评论 (14)  编辑

WebService大讲堂之Axis2(6):跨服务会话(Session)管理
     摘要: 在《WebService大讲堂之Axis2(5):会话(Session)管理》一文中介绍了如何使用Axis2来管理同一个服务的会话,但对于一个复杂的系统,不可能只有一个WebService服务,例如,至少会有一个管理用户的WebService(用户登录和注册)以及处理业务的WebService。象这种情况,就必须在多个WebService服务之间共享会话状态,也称为跨服务会话(Session)管理。实现跨服务会话管理与实现同一个服务的会话管理的步骤类似,但仍然有一些差别,实现跨服务会话管理的步骤如下:

实现跨服务的Session管理需要如下三步:

1. 使用MessageContext和ServiceGroupContext获得与设置key-value对。

2. 为要进行Session管理的WebService类所对应的元素添加一个scope属性,并将该属性值设为application。

3. 在客户端使用setManageSession(true)打开Session管理功能。  阅读全文

posted @ 2009-02-03 23:42 银河使者 阅读(13826) | 评论 (20)  编辑

Struts1.x系列教程(8):上传单个文件
     摘要: 在Web程序中的上传文件的功能一般会使用<input type=file.../>标签在客户端显示输入要上传的文件名的用户接口。如果读者使用过JSP/Servlet来处理客户端上传的文件就会知道,实现这个功能并不是很容易。而在Struts中为我们提供了一种机制,可以非常方便地将客户端上传的文件保存在服务端。在Struts Html标签库中提供了一个<html:file>标签,可以和FormFile类型的属性一起使用。通过这个属性返回的FormFile对象,就可以很方便地获得上传文件的InputStream对象,并做进一步地处理。  阅读全文

posted @ 2009-02-03 09:43 银河使者 阅读(4142) | 评论 (0)  编辑

跳出多层循环的简单方法(Java版)
     摘要: goto语句往往被认为是跳出多层循环最简单的方法,但在Java中虽然保留了goto关键字,但却不能使用。不过Java提供了另外一种与goto语句相似的方法来解决这个问题,这就是break n和continue n语句。  阅读全文

posted @ 2009-01-30 11:23 银河使者 阅读(3349) | 评论 (8)  编辑

WebService大讲堂之Axis2(5):会话(Session)管理
     摘要: 使用Axis2来管理WebService的会话(Session)状态基本上对于开发人员是透明的。在WebService类需要使用org.apache.axis2.context.MessageContext和org.apache.axis2.context.ServiceContext类来保存与获得保存在服务端的状态信息,这有些象使用HttpSession接口的getAttribute和setAttribute方法获得与设置Session域属性。
  阅读全文

posted @ 2009-01-26 00:00 银河使者 阅读(18481) | 评论 (31)  编辑

WebService大讲堂之Axis2(4):二进制文件传输
     摘要: 在WebService类中除了可以使用byte[]作为传输二进制的数据类型外,也可以使用javax.activation.DataHandler作为数据类型。 不管是使用byte[],还是使用javax.activation.DataHandler作为WebService方法的数据类型,使用wsdl2java命令生成的stub类中相应方法的类型都是javax.activation.DataHandler。而象使用.net、delphi生成的stub类的相应方法类型都是byte[]。这是由于javax.activation.DataHandler类是Java特有的,对于其他语言和技术来说,并不认识javax.activation.DataHandler类,因此,也只有使用最原始的byte[]了。  阅读全文

posted @ 2009-01-22 10:28 银河使者 阅读(22446) | 评论 (18)  编辑

WebService大讲堂之Axis2(3):使用services.xml文件发布WebService
     摘要: 在本文将介绍一下如何使用services.xml文件将带包的POJO类发布成WebService,以及如何发布多个WebService。  阅读全文

posted @ 2009-01-21 18:08 银河使者 阅读(56624) | 评论 (59)  编辑

Struts1.x系列教程(7):Logic标签库
     摘要: Struts Logic标签库包含了如下三类标签:循环标签:iterate标签。用于枚举数组、集合类型对象中的元素; 条件处理标签:用于是否相等、比较大小等判断。这类标签有empty、equal 、greaterEqual、greaterThan、lessEqual、lessThan、match、messagesNotPresent、messagesPresent、notEmpty、notEqual、notMatch、notPresent、present;流控制标签:用于转向其他的页面。redirect和forward属性这类标签。  阅读全文

posted @ 2009-01-19 22:21 银河使者 阅读(4707) | 评论 (0)  编辑

Struts1.x系列教程(6):Bean标签库
     摘要: Bean标签库共有11个标签。这些标签可以完成五种工作:获得HTTP请求信息、访问Java对象、访问JSP内嵌对象和Struts配置对象、访问Web资源和属性文件、输出信息.  阅读全文

posted @ 2009-01-18 22:36 银河使者 阅读(5793) | 评论 (0)  编辑

09考研数据结构试题的一种解法(Java版)
     摘要: 虽然研究生已毕业,但看到有一些难度的研究生考试题还是忍不住要做做,本文给出了09年研究生入学考试的一道数据结构题的Java实现。本文给出的算法的空间复杂度为O(1),时间复杂度为O(n)。  阅读全文

posted @ 2009-01-17 20:50 银河使者 阅读(3477) | 评论 (7)  编辑

Struts1.x系列教程(5):HTML标签库
     摘要: HTML标签库中的标签基本上都是和HTML Tag一一对应的。但我们经常使用的主要是标签及其子标签。因此,在本文将介绍一下及其常用子标签的用法。  阅读全文

posted @ 2009-01-16 16:54 银河使者 阅读(5391) | 评论 (0)  编辑

用缓冲技术提高JSP程序性能和稳定性
     摘要: 在Web应用中,有些报表的生成可能需要数据库花很长时间才能计算出来;有的网站提供天气信息,它需要访问远程服务器进行SOAP调用才能得到温度信息。所有这一切都属于复杂信息的例子。在Web页面中加入过多的复杂信息可能导致Web服务器、数据库服务器负荷过重。 JSP代码块缓冲为开发者带来了随意地增加各种复杂信息的自由。
  阅读全文

posted @ 2009-01-16 08:57 银河使者 阅读(347) | 评论 (1)  编辑

Struts1.x系列教程(4):标签库概述与安装
     摘要: Struts的整个视图层(就是MVC模式中的View层)是由Struts的定制标签(或者称为定制动作)和客户端代码(Javascript、HTML等)实现的。这些Struts标签被写在JSP页面中,用于生成客户端代码、进行逻辑判断等工作,使用Struts标签可以尽量避免直接在JSP页面中直接使用Java代码,以使得JSP页面更容易编写和维护。  阅读全文

posted @ 2009-01-15 11:53 银河使者 阅读(4980) | 评论 (0)  编辑

Struts1.x系列教程(3):属性(资源)文件乱码问题的解决之道
     摘要: 资源文件不仅仅需要保存英文信息,在很多时候,也需要保存其他的语言信息,如中文信息。但Java的属性文件只支持英文,要想在属性文件中保存中文,需要使用\uxxxx格式,但这非常不方便,因此,本文将分别介绍如何使用native2ascii.exe和Eclipse插件的方式来解决这个问题。  阅读全文

posted @ 2009-01-14 12:36 银河使者 阅读(6692) | 评论 (3)  编辑

Struts1.x系列教程(2):简单的数据验证
     摘要: 简单验证从本质上说就是在服务端来验证客户端提交的form中的数据。这种验证只是对form中的数据规则进行检查,如必须输入用户ID,价格不能小于0或是对email格式的验证。在这个验证过程中,并不需要访问数据库。因此,简单验证需要在用户提交form后,并且在服务器处理form中的数据之前进行。  阅读全文

posted @ 2009-01-13 23:10 银河使者 阅读(6645) | 评论 (7)  编辑

Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序
     摘要: 本系列教程将详细介绍Struts 1.x的基本原理和使用方法,读者可以参阅“Struts 2系列教程”来比较Struts 1.x和Struts 2.x的相同点和不同点。在这篇文章中将以一个简单的例子(mystruts)来演示如何使用MyEclipse来开发、运行Struts程序,并给出了解决ActionForm出现乱码问题的方法。读者可以从本文中了解开发Struts 1.x程序的基本过程。  阅读全文

posted @ 2009-01-13 12:17 银河使者 阅读(42042) | 评论 (36)  编辑

手机电子书UMD数据格式实现代码(C#版)
     摘要: UMD格式是国内手机阅读中使用较多的一种格式,但其公司却并没有将UMD数据格式公开,但是却用另外一种方式将其公开,你去访问一下他们的站点然后下载他的制作工具就知道。  阅读全文

posted @ 2009-01-09 08:57 银河使者 阅读(822) | 评论 (0)  编辑

WebService大讲堂之Axis2(2):复合类型数据的传递
     摘要: 在实际的应用中,不仅需要使用WebService来传递简单类型的数据,有时也需要传递更复杂的数据,这些数据可以被称为复合类型的数据。数组与类(接口)是比较常用的复合类型。在Axis2中可以直接使用将WebService方法的参数或返回值类型声明成数组或类(接口)。但要注意,在定义数组类型时只能使用一维数组,如果想传递多维数组,可以使用分隔符进行分隔。在传递类的对象实例时,除了直接将数组类型声明成相应的类或接口,也可以将对象实例进行序列化,也就是说,将一个对象实例转换成字节数组进行传递,然后接收方再进行反序列化,还原这个对象实例。本文的示例代码演示了如何传递数组与类(接口)类型的数据,并演示如何使用字节数组上传图像。本示例的客户端代码使用Java和C#编写。  阅读全文

posted @ 2009-01-04 23:41 银河使者 阅读(27837) | 评论 (26)  编辑

WebService大讲堂之Axis2(1):用POJO实现0配置的WebService
     摘要: Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。这些都将在后面的系列教程中讲解。在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebService,并在客户端使用Java和C#调用这个WebService。  阅读全文

posted @ 2009-01-02 17:17 银河使者 阅读(72423) | 评论 (108)  编辑

图解 Tomcat 体系结构
     摘要: Apache Tomcat 是一款非常著名的开源 Servlet/JSP 容器,被用做 Java Servlet 和 JavaServer Pages 技术的官方参考实现。如果您要了解这两种技术的细节可以查阅参考资料。   阅读全文

posted @ 2008-10-12 22:56 银河使者 阅读(2731) | 评论 (1)  编辑

为什么要在定义抽象类时使用abstract关键字
     摘要: 众所周之,在任何面向对象的语言中(包括Java、C#),在定义抽象类时必须使用abstract关键字。虽然这已经习已为常了,但实际上abstract是为了在实现接口或继承抽象类避免歧议而必须存在的。  阅读全文

posted @ 2008-09-30 14:31 银河使者 阅读(1584) | 评论 (4)  编辑

用Java实现按字节长度截取字符串的方法
     摘要: Web应用程序在浏览器中显示字符串时,由于显示长度的限制,常常需要将字符串截取后再进行显示。但目前很多流行的语言,如C#、Java内部采用的都是 Unicode 16(UCS2)编码,在这种编码中所有的字符都是两个字符,因此,如果要截取的字符串是中、英文、数字混合的,就必须按字节长度来截取字符串。在本文中给出了一个按字节长度截取字符串的方法,以便这类操作变得更容易。  阅读全文

posted @ 2008-09-07 09:46 银河使者 阅读(11560) | 评论 (11)  编辑

Tomcat在处理GET和POST请求时产生的乱码问题
     摘要: 由于从Tomcat5.x后,Tomcat处理GET和POST请求时采用了不同的编码格式,因此,当Java Web程序运行在Tomcat5.x及以上版本时,需要同时考虑GET和POST请求,但也可以利用Java本身的编码能力达到通用的效果。  阅读全文

posted @ 2008-09-05 15:48 银河使者 阅读(3049) | 评论 (8)  编辑

Java编码问题解决方案大揭密
     摘要: 本文介绍了java编码的原理,对各种语言的编码(中文、日文、韩文),java属性文件如何处理中文字符以及在web应用中乱码问题的解决方案。  阅读全文

posted @ 2008-07-19 13:45 银河使者 阅读(8216) | 评论 (16)  编辑

Java支持的编码格式
     摘要: JDK提供了一个将中文转换为Unicode编码格式的工具native2ascii.exe,它位于<JDK>/bin/目录下。在DOS命令窗口下,通过native2ascii -encoding SJIS <源文件> <目标文件>即可以完成转换。  阅读全文

posted @ 2008-07-17 16:42 银河使者 阅读(2221) | 评论 (0)  编辑

用jabsorb(json) for java编写AJAX应用程序
     摘要: 本文介绍了如何使用jabsorb(json的升级版)开发基于AJAX的应用程序,主要包括在JSP和Sevlet中使用jabsorb,注册全局对象、访问集合类和异步调用技术。  阅读全文

posted @ 2008-07-04 11:03 银河使者 阅读(2985) | 评论 (2)  编辑

Web上传文件的原理及实现
     摘要: 虽然现在有很多上传组件可以利用,但是了解Web上传文件的原理,对于处理突然出现的问题会有很大的帮助,下面就来讲一下通过浏览器上传文件的基本原理。在了解了原理之后,就可以非常容易地自制满足自身需要的上传组件了。
  阅读全文

posted @ 2008-05-29 12:42 银河使者 阅读(6774) | 评论 (1)  编辑

AJAX从服务端获取数据的三种方法
     摘要: 在本文中将给出一个例子来介绍使用AJAX技术从服务端获得数据的三种方法。这个例子很简单,就是两个选择框(html中的<select>标签),通过选中第一个select的某一项后,会从服务端得到一些数据,并加载到第2个select中。这三种方法是获得XML数据,直接获得<option>字符串,以及获得在客户端可执行的javascript代码。 本文还给出了一种ajax向服务端发送中文请求时出现乱码的解决方案。  阅读全文

posted @ 2008-05-25 23:16 银河使者 阅读(7784) | 评论 (18)  编辑

Java 6 Hotspot的性能将有可能超越编译型语言
     摘要: Sun公司的Kohsuke Kawaguchi考察了Hotspot JIT在JDK6 u10 b14 debug版中产生的汇编代码,并将其记录在博客中。该博文着重阐述了Java优化的程度。  阅读全文

posted @ 2008-05-14 17:16 银河使者 阅读(889) | 评论 (6)  编辑

Java SE6调用Java编译器的两种新方法
     摘要: 在很多Java应用中需要在程序中调用Java编译器来编译和运行。但在早期的版本中(Java SE5及以前版本)中只能通过tools.jar中的com.sun.tools.javac包来调用Java编译器,但由于tools.jar不是标准的Java库,在使用时必须要设置这个jar的路径。而在Java SE6中为我们提供了标准的包来操作Java编译器,这就是javax.tools包。使用这个包,我们可以不用将jar文件路径添加到classpath中了。  阅读全文

posted @ 2008-05-13 10:25 银河使者 阅读(3022) | 评论 (3)  编辑

【转载】OpenEJB 3.0支持对枚举和集合的依赖注入及OSGi和EJB 3.0特性
     摘要: 开源轻量级EJB实现框架OpenEJB的最新版支持对枚举、集合和Maps的依赖注入(Dependency Injection,即DI),并且支持OSGi和EJB 3.0规范。在经历了一年半的开发后,OpenEJB 3.0最终版近期发布了。该版本还支持@EJB引用其他EAR文件中的本地接口、事务日志及基于HTTP协议的EJBd,同时它还支持EJB 3.0的新特性如Business Interfaces、Java Persistence API (JPA)及JAX-WS Web Services。  阅读全文

posted @ 2008-05-12 19:36 银河使者 阅读(395) | 评论 (0)  编辑

Java的多进程运行模式分析
     摘要: 一般我们在java中运行其它类中的方法时,无论是静态调用,还是动态调用,都是在当前的进程中执行的,也就是说,只有一个java虚拟机实例在运行。而有的时候,我们需要通过java代码启动多个java子进程。这样做虽然占用了一些系统资源,但会使程序更加稳定,因为新启动的程序是在不同的虚拟机进程中运行的,如果有一个进程发生异常,并不影响其它的子进程。  阅读全文

posted @ 2008-05-10 19:02 银河使者 阅读(2972) | 评论 (1)  编辑

《程序员》第9期智慧擂台题目——高频词汇提取
     摘要: 这次智慧擂台请大家在一个比较庞大的英文文本中找出M个数量最多的短语(由N个单词组成)。统一处理相同的文本文件,该文本只包含英文单词、空格和回行符,比较谁的程序效率最高。  阅读全文

posted @ 2008-05-10 09:37 银河使者 阅读(1659) | 评论 (1)  编辑

百度面试题的java实现
     摘要: 有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。  阅读全文

posted @ 2008-05-10 09:23 银河使者 阅读(6652) | 评论 (10)  编辑

一著名软件公司的java笔试算法题的答案
     摘要: 原题如下:用1、2、2、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。  阅读全文

posted @ 2008-05-10 09:19 银河使者 阅读(8060) | 评论 (11)  编辑

Java正则表达式初学者指南
     摘要: 本文将介绍如何在Java中使用正则表达式来处理文本数据。正则表达式就是一个字符串,但和普通的字符串不同的是,正则表达式是对一组相似字符串的抽象  阅读全文

posted @ 2008-05-10 09:14 银河使者 阅读(14255) | 评论 (8)  编辑

J2SE5.0中最有趣的新特性:注释(annotation)
     摘要: 本文将向你介绍J2SE5.0中的新特性之一:注释。本文将从什么是注释;J2SE5.0中预定义的注释;如何自定义注释;如何对注释进行注释以及如何在程序中读取注释5个方面进行讨论。  阅读全文

posted @ 2008-05-09 12:46 银河使者 阅读(3074) | 评论 (6)  编辑

如何防止覆盖(override)toString方法时产生递归调用
     摘要: 在Java中任何对象都继承于Object类,因此,每个类都有一个toString方法用于返回当前对象的字符串形式(可能是对象地址或其他和对象相关的信息)。在每个类中也可以覆盖toString方法以返回自定义的字符串。  阅读全文

posted @ 2008-05-07 16:07 银河使者 阅读(1973) | 评论 (7)  编辑

在Java中连接字符串时是使用+号还是使用StringBuilder
     摘要: 字符串是Java程序中最常用的一种数据结构之一。在Java中的String类已经重载的"+"。也就是说,字符串可以直接使用"+"进行连接,如String s = "abc" + "ddd";但这样做真的好吗?当然,这个问题不能简单地回答yes or no。要根据具体情况来定。在Java中提供了一个StringBuilder类(这个类只在J2SE5及以上版本提供,以前的版本使用StringBuffer类),这个类也可以起到"+"的作用。那么我们应该用哪个呢?  阅读全文

posted @ 2008-05-07 16:04 银河使者 阅读(25459) | 评论 (15)  编辑

java.lang.Object是如何成为默认父类的
     摘要: 经常有Java初学者会问为什么一个没有父类的Java类会自动从java.lang.Object类继承。如下面是一个普通的Java类:
public class Test // 从Object类继承
{
public static void main(String[] args)
{
System.out.println(new Test().toString());
}
}
从上面的代码可以看出,实际上,Test类的父类就是Object,因此,在Test中可以使用Object类的public或protected资源,如toString方法。那么Java编译器和JVM到底是如何做的呢?  阅读全文

posted @ 2008-05-06 15:14 银河使者 阅读(2767) | 评论 (0)  编辑

Java SE 6之GUI:让界面更加绚丽(下)
     摘要: 在上一篇中我介绍了Java SE 6在GUI上的部分改进。在这篇 文章中我接着介绍另外几种新的GUI功能。这些功能是:

1. 带有排序和过滤功能的JTable。

2. 增强的JTabbedPane组件

3. 增强的打印功能

4. 增强的拖放功能  阅读全文

posted @ 2008-04-30 20:19 银河使者 阅读(7906) | 评论 (6)  编辑

Java SE 6之GUI:让界面更加绚丽(上)
     摘要: Java是一种非常强大的编程语言,但Java的GUI能力一直是它的软肋。虽然Java提供2种图形解决方案,AWT和Swing。但这2种图形库的功能十分有限,使用它们并不能带来更多的用户体验。而且AWT和Swing的更新速度很慢。一直到Java SE 5也没什么明显的变化。幸好Java SE 6终于为它们增加大更强大的功能。有了这些功能,使用AWT和Swing设计的用户界面可以更贴近用户。为了使读者能够更早地体验Java SE 6 GUI的美丽,本文就Java SE 6 GUI提供的主要功能进行讨论。  阅读全文

posted @ 2008-04-29 14:34 银河使者 阅读(8033) | 评论 (10)  编辑

关于Java String对象创建问题解惑
     摘要: 先看看下面的代码

public String makinStrings()
{
String s = "Fred";
s = s + "47";
s = s.substring(2, 5);
s = s.toUpperCase();
return s.toString();
}


问:调用makinStrings方法会创建几个String对象呢?  阅读全文

posted @ 2008-04-27 10:01 银河使者 阅读(3162) | 评论 (18)  编辑

接口、类、抽象类、对象的另类解释
     摘要: 大家也许都知道做工艺器或是工厂里做生产某些产品的模具模具。如做一个金属的五角星,只要将钢水罐到五角星的模具模具里就可以很容易地制做五角星。我们也可以将类比喻成做五角星的模具。 而生产出的一个个五角星就是一个个对象。 为了建立不同的对象(有的是金属的、有的塑料的,等等),可通过向模具里灌入不同的液态材料就可以制做。这也相当于向类的构造方法中传入不同的参数(相当于不同的液态材料)。  阅读全文

posted @ 2008-04-27 09:50 银河使者 阅读(2724) | 评论 (9)  编辑