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

原创

Twitter算法面试题详解(Java实现)
     摘要: 最近在网上看到一道Twitter的算法面试题,网上已经有人给出了答案,不过可能有些人没太看明白(我也未验证是否正确),现在给出一个比较好理解的答案。  阅读全文

posted @ 2013-11-03 18:03 银河使者 阅读(8481) | 评论 (4)  编辑

百度面试题:求绝对值最小的数
     摘要: 有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现

例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。  阅读全文

posted @ 2013-01-30 11:45 银河使者 阅读(12053) | 评论 (10)  编辑

Android深度探索(卷1):安装C/C++交叉编译环境
     摘要: 在Ubuntu Linux上安装可编译成ARM架构的交叉编译环境CodeSourcery,编译完的执行文件可在Android手机上直接运行。本文阐述了如何下载、安装和使用CodeSourcery。  阅读全文

posted @ 2013-01-28 23:28 银河使者 阅读(6205) | 评论 (0)  编辑

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

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

赶紧升级到Android 2.3.4,体验最新的Android技术
     摘要: 使用Google的二儿子(Nexus S)的童鞋赶紧了,Android 2.3.4已经出来了(虽然官方文档暂时还没更新,可能出来还不到24小时),如果已经是android 2.3.1,必须升级到Android 2.3.3后才能升级到2.3.4  阅读全文

posted @ 2011-04-29 22:20 银河使者 阅读(7334) | 评论 (5)  编辑

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

posted @ 2010-11-09 16:25 银河使者 阅读(5283) | 评论 (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 银河使者 阅读(6793) | 评论 (0)  编辑

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

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

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

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

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

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

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

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

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

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

ophonesdn对首位优秀版主mobileguy的专访
     摘要: 东北大学计算机专业硕士。CSDN博客专家、51CTO客座专家、中国移动开发者社区技术管理员、OPhone专家、 ophonesdn版主(Id:mobileguy)、eoeandroid版主(id:androidguy)。曾任东软股份项目经理。曾领导并参与开发了十几个大中型项目。从2005年进入写作领域以来, 为程序员、电脑编程技巧与维护、电脑报、IT168、天极网等平面媒体和网络媒体撰写了一百多篇原创技术和评论文章。并在个人 blog(http://nokiaguy.blogjava.net)上发表了大量的原创技术文章。   阅读全文

posted @ 2010-08-09 12:19 银河使者 阅读(1962) | 评论 (1)  编辑

OPhone1.0升级到OPhone1.5的超爽体验
     摘要: 自从去年从OPhone征文大赛得了部Dell Mini 3i手机后,一直没时间研究。最近抽了时间想研究下OPhone,结果是想当另人郁闷。Dell Mini 3i原来的系统是OPhone 1.0,相当于Android 1.1。这个版本虽然没有什么大问题,但问题是现在很多软件都是基于OPhone/Android 1.5及以上版本的。而基于OPhone 1.0或Android 1.1的软件是少之又少,没办法,除了自己写的软件,大多数软件都无法安装,最后没办法,不得不去维修点把系统升了下级,变成了OPhone 1.5。  阅读全文

posted @ 2010-08-06 18:42 银河使者 阅读(2641) | 评论 (1)  编辑

《人人都玩开心网: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 银河使者 阅读(3654) | 评论 (0)  编辑

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

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

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

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

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

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

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

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

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

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

Android软件出新招 不再只盯着应用商店
     摘要: 使用智能手机,PC端的手机管理软件是不可或缺的工具。最近,一款名为豌豆荚手机精灵的管理工具悄然发布beta版。用户把手机和电脑连接上后,可以通过这款软件在电脑上方便地管理手机中的通讯录、短信、应用程序和音乐等,或者备份重要资料。产品负责人王俊煜认为豌豆荚手机精灵自我定位为的应该是 “全功能的Android手机管理软件”。  阅读全文

posted @ 2010-07-16 14:16 银河使者 阅读(604) | 评论 (0)  编辑

《Android/OPhone开发完全讲义》连载(6):为TextView组件加上边框
     摘要: 《Android/OPhone 开发完全讲义》目前计算机类销售总排名:互动网(china-pub)第3名,当当网新书热卖榜销售总排名第4名。
Android系统本身提供的TextView组件并不支持边框,但可以对TextView进行扩展来添加边框。我们可以使用如下两种方法为TextView组件添加边框。
1. 编写一个继承TextView类的自定义组件,并在onDraw事件方法中画边框。
2. 使用9-patch格式的图像作为TextView的背景图来设置边框(这个背景图需要带一个边框)。  阅读全文

posted @ 2010-07-15 10:37 银河使者 阅读(2863) | 评论 (0)  编辑

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

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

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

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

新书内容连载(3):Android SDK中常用命令行工具(一)
     摘要: 经作者测试,模拟器在运行一段时间后,adb服务有可能(在Windows进程中可找到这个服务,该服务用来为模拟器或通过USB数据线连接的真机服务)会出现异常。这时需要重新对adb服务关闭和重启。当然,重启Eclipse可能会解决问题。但那比较麻烦。如果想手工关闭adb服务,可以使用下面的命令。

adb kill-server

在关闭adb服务后,要使用如下的命令启动adb服务。

adb start-server
  阅读全文

posted @ 2010-07-05 14:02 银河使者 阅读(2288) | 评论 (0)  编辑

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

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

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

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

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

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

《Android/OPhone开发完全讲义》最新封面,欢迎提出宝贵建议
     摘要: 经过编辑的努力,新的封面终于出来了。书将在6-15之前上市。先展示下封面和封底,欢迎提出宝贵意见。  阅读全文

posted @ 2010-05-31 18:52 银河使者 阅读(2069) | 评论 (2)  编辑

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

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

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

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

新书内容连载(2):Android中的Activity的生命周期
     摘要: 文为新书《Android/OPhone开发完全讲义》的内容连载。《Android/OPhone开发完全讲义》一书将在近期出版。Acitivty的生命周期分为4个阶段如下:
1. 开始Activity:在这个阶段依次执行3个生命周期方法:onCreate、onStart和onResume。
2. Activity 失去焦点:如果在Activity获得焦点的情况下进入其他的Activity或应用程序,这时当前的Activity会失去焦点。在这一阶段,会依次执行onPause和onStop方法。
3. Activity重新获得焦点:如果Activity重新获得焦点,会依次执行3个生命周期方法:onRestart、onStart和onResume。
4. 关闭Activity:当Activity被关闭时系统会依次执行3个生命周期方法:onPause、onStop和onDestroy。  阅读全文

posted @ 2010-05-04 11:13 银河使者 阅读(2266) | 评论 (0)  编辑

新书内容连载(1):自定义Android组件之带图像的TextView
     摘要: 文为新书《Android/OPhone开发完全讲义》的内容连载。《Android/OPhone开发完全讲义》一书将在近期出版。本文的例子可以在TextView中显示一个图像。图像的大小将随着TextView组件中字体的大小而变化。  阅读全文

posted @ 2010-04-29 09:09 银河使者 阅读(3176) | 评论 (2)  编辑

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

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

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

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

乐博Android客户端发布
     摘要: 本客户端为0.9版。正在完善中。目前的功能主要包括浏览关注的微博(首页);浏览微博广场中的微博(逛逛);浏览包含“@我的”的微博;评论、转发微博;显示微博的详细信息(包括评论和转发数、图像、发表时间);刷新微博的评论和转发数;主大显示图像;支持屏幕旋转显示微博信息;刷新微博内容(获得最新的微博);写微博(包括文字微博和带图像的微博);插入表情字符;从相册中选择图像;拍照获得图像;编辑图像(在图像上绘制不同颜色的图形);在无图像的情况下任意绘制图像。同时加载数据时采用的缓冲方式,以便可以节省数据流量。在后续版本中将会继续加强绘图功能,并增加离线编辑、浏览评论、管理个人信息以及与电子书互相嵌入等等功能。  阅读全文

posted @ 2010-04-13 10:27 银河使者 阅读(27187) | 评论 (6)  编辑

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

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

Eclipse工程错误的解决方法
     摘要: 在导入或覆盖Eclipse工程时可能会出现Eclipse工程错误(Eclipse工程结点上有一个红叉)。除了Eclipse工程中的Java文件和其他文件的错误外,还有很多情况Eclipse工程中的文件并没有任何错误。这会使人莫名其妙。有时Eclipse工程可以带错误运行,但很多时候有错误就无法运行了。其中一种可能性是Eclipse工程中引用了jar文件,可以在工程属性对象话中看看jar文件的路径是否正确,或是否引用了不存在的工程。 如果引用也正确。可还是会出现工程错误,那估计就更闹心了。  阅读全文

posted @ 2010-04-09 20:25 银河使者 阅读(3303) | 评论 (0)  编辑

判断ShellExecute函数是否执行完一个程序的方法
     摘要: ShellExecute是windows的API函数,功能是执行可执行文件(exe)或任何关联文件(doc、txt、xls等)。但 ShellExecute是异步执行的,也就是说,不管执行的程序是否成功运行,运行的时间是长是短,ShellExecute函数都会立即返回。这样虽然可以很好地完成执行程序的工作,但却会给后续的工作带来麻烦。  阅读全文

posted @ 2010-03-27 15:14 银河使者 阅读(2782) | 评论 (2)  编辑

Delphi和Foxpro整合实现txt和dbf互相转换
     摘要: 最近做个程序,需要将dbf和文本文件互相转换,也就是将dbf按表结构将字段和数据导成txt文件,再将txt文件导入其他的dbf表中。在 foxpro中完成这些工作简直太容易了,但很多功能必须用delphi实现。虽然可以用foxpro做个小程序,然后再用delphi调用,但比较麻烦。因此,可以用Delphi通过调用Com组件的方式直接执行foxpro命令来实现  阅读全文

posted @ 2010-03-24 15:44 银河使者 阅读(2357) | 评论 (1)  编辑

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 银河使者 阅读(4667) | 评论 (3)  编辑

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

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

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

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

GPhone、OPhone、UPhone、APhone、IPhone:满城尽带XPhone
     摘要: 最近一段时间智能手机市场是翻天覆地。各大厂商纷纷推出自己的手机操作系统和手机。Google、Apple、中国移动、中国联通纷纷推出或即将推出自已的智能手机操作系统(虽然有的是改装的),Google推出了Android、Apple推出了IPhone。移动推出了OMS、联通由于和apple谈判不太顺利,估计是apple和联通都很霸道,都想占大头,结果闹得很不愉快。于是联通一颗红心两手准备,在引进iphone的同时,又开发自有品牌的 UniPlus系统,这个系统当然和移动的OMS一样,也是基于Android的,但目前还没有正式推出,相关的资料也很少。看来Android以后会很火,至少在中国是这样,中国的两大移动通讯运营商都占到了Android一边。不火才怪。要不移动和联通就白投入了。那估计王建宙和常小兵就得疯了。 据说中国电信也在酝酿基于Android的手机操作系统。看来Android在中国会比美国先火了。  阅读全文

posted @ 2009-12-27 15:02 银河使者 阅读(2047) | 评论 (0)  编辑

Eclipse3.5无法启动解决方案
     摘要: 一大早启动Eclipse3.5,突然就启不来了,而是出现下面的提示信息。  阅读全文

posted @ 2009-12-25 12:33 银河使者 阅读(2715) | 评论 (5)  编辑

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

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

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

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

在SQL Server2005/2008中对记录进行分组,并获得每组前N条记录
     摘要: 有一个表,三个字段:km、kh和cj。其中km为科目号、kh为考生号、cj为成绩,现对km和kh进行分组,并获得每组前2条记录(按cj从高到低排序)。基本思想是为每组加一个序号列,再用where取序号小于等于20的。  阅读全文

posted @ 2009-10-31 21:08 银河使者 阅读(2544) | 评论 (1)  编辑

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

posted @ 2009-10-09 09:34 银河使者 阅读(4822) | 评论 (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 银河使者 阅读(1913) | 评论 (0)  编辑

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

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

android版多功能日历,欢迎大家测试
     摘要: 本软件除了拥有传统的日历功能外,还具有查询天气预报、添加提醒时间,显示农历日期、天干地支、宜忌、公历、农历节日等信息。要注意的是,查询天气预报需要访问internet.。设置提醒时间主要是指设置未来的某个时间(精确到分钟)进行声音和震动提醒。如上午10:00开会,为了防止忘记或提前做些准备,可以设为9:30或其他的时间进行提醒。本系统可设置任意多个提醒时间。另外这个提醒的功能也可以当日记使用。
  阅读全文

posted @ 2009-09-14 11:46 银河使者 阅读(4345) | 评论 (9)  编辑

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

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

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

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

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

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

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

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

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

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

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

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

关于Android LiveCD的几点问题
     摘要: 官方提供的ISO实际上拆成了两个文件,需要用HJ-Split来合并,或者直接[url=http://live- android.googlecode.com/files/liveandroidv0.2.iso%20[mininova].torrent]BT 下载完整ISO版[/url]。  阅读全文

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

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

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

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

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

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

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

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

移动的MobileMarket个人终于可以上传软件了
     摘要: 今天看了一下MobileMarket的网站(http://dev.mmarket.com/),页面变了,而且个人开发者也可以上传相关的应用了。目前MobileMarket支持如下的应用类型:

S60:程序包类型:sis,sisx,jar,wgz,swf

Windows Mobile:程序包类型:tsk,utz,hme,cab,exe

KJAVA:KJAVA为软件或游戏的作品只支持上传zip或rar包。

OMS:程序包类型: apk,wgt,wdgt
  阅读全文

posted @ 2009-08-06 09:45 银河使者 阅读(1783) | 评论 (0)  编辑

ExtJS在Android中的显示效果
     摘要: ExtJS是一个非常酷的javascript客户端框架,用于做Web UI。在ie、firefox上浏览的效果非常好,近日突然想在android上试试。没有真机,就用android模拟器吧。模拟器默认访问的是 www.google.com,将该默认页改成http://www.extjs.com,然后导航到extjs的例子部分,选中一个例子,看看显示效果。  阅读全文

posted @ 2009-08-05 13:17 银河使者 阅读(3607) | 评论 (4)  编辑

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

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

关于ExtJS3.0组件连接http://extjs.com/s.gif的问题
     摘要: 最近在做一个ExtJS的应用,以前使用时都是连网的,也没任何问题。不过最近由于某些原因,开发的机器无法连网。这下问题出来了,一个从服务端取得数据并显示的Combobox怎么也不正常了。总是显示“loading...”,数据就是出不来。看看javascript错误,竟然是从 http://extjs.com/s.gif下载s.gif。不知extjs3.0是怎么搞的。Extjs2.x还没试,不知有没有这个问题。 s.gif在本地是有的,在resources\images目录中。  阅读全文

posted @ 2009-08-01 11:30 银河使者 阅读(2563) | 评论 (3)  编辑

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

posted @ 2009-07-28 16:11 银河使者 阅读(3854) | 评论 (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 银河使者 阅读(2854) | 评论 (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 银河使者 阅读(8639) | 评论 (7)  编辑

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

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

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

posted @ 2009-07-22 16:05 银河使者 阅读(2721) | 评论 (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 银河使者 阅读(2961) | 评论 (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 银河使者 阅读(3732) | 评论 (2)  编辑

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

posted @ 2009-07-02 18:11 银河使者 阅读(4677) | 评论 (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 银河使者 阅读(3170) | 评论 (0)  编辑

eclipse + JBoss 5 + EJB3开发指南(15):拦截器方法和拦截器类
     摘要: EJB3可以通过拦截器对Bean方法进行拦截和覆盖。这有些象AOP中的around。通过AOP的around方法,可以修改被拦截方法的返回值、参数值,甚至可以取消被拦截方法的执行。EJB3的拦截器可以用在无状态Session Bean、有状态Session Bean和消息驱动Bean(MDB)的方法中。实现拦截器的最简单的方法是使用拦截器方法。也就是说,只要在当前的Bean中使用 @AroundInvoke对某个方法进行注释(关于拦截器的类都在javax.interceptor包中),那么这个方法就会变成拦截器方法,该拦截器方法会拦截当前Bean中的所有方法。  阅读全文

posted @ 2009-06-14 11:00 银河使者 阅读(1910) | 评论 (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 银河使者 阅读(4641) | 评论 (11)  编辑

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

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

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

posted @ 2009-06-08 17:22 银河使者 阅读(3874) | 评论 (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 银河使者 阅读(4578) | 评论 (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 银河使者 阅读(2159) | 评论 (2)  编辑

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

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

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

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

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

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

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

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

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

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

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

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

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

posted @ 2009-06-02 08:19 银河使者 阅读(3215) | 评论 (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 银河使者 阅读(3700) | 评论 (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 银河使者 阅读(2567) | 评论 (0)  编辑

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

posted @ 2009-05-29 19:20 银河使者 阅读(4743) | 评论 (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 银河使者 阅读(4745) | 评论 (3)  编辑

eclipse + JBoss 5 + EJB3开发指南(5):使用配置文件发布Session Bean
     摘要: Session Bean除了可以使用注释来发布外,也可以使用相应的配置文件来发布。在这种情况下,就不需要在接口和Session Bean中使用注释了。在JBoss中需要两个文件对Session bean进行配置。这两个文件是ejb-jar.xml和jboss.xml。这两个文件应该META-INF目录中,该目录应该放在jar文件的根目录。ejb-jar.xml文件负责配置session bean,  阅读全文

posted @ 2009-05-27 11:03 银河使者 阅读(3207) | 评论 (0)  编辑

eclipse + JBoss 5 + EJB3开发指南(4):Session Bean中的注释方法
     摘要: 有时需要在Session Bean中初始化和释放一些资源。这些工作应该在SessionBean的@PostConstruct和@PreDestroy方法中进行。其中用 @PostConstruct注释的方法在SessionBean的构造方法调用之后以后EJB容器在处理完一些其他工作后调用。用 @PreDestroy注释的方法在SessionBean的对象实例被EJB容器销毁之前调用。  阅读全文

posted @ 2009-05-26 17:12 银河使者 阅读(2482) | 评论 (0)  编辑

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

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

使用脚本文件(jnlp)来发布Java程序
     摘要: 发布Java程序(桌面程序)最直接的方法就是将jar文件打包交给用户。不过有时jar文件很多,也很大。为了方便,sun提供了另外一种方式来通过网络发布Java程序。这就是jnlp文件。可能很多读者曾经下载过很多jnlp文件,运行后会自动从指定的网站下载相应的文件。  阅读全文

posted @ 2009-05-22 15:38 银河使者 阅读(5848) | 评论 (4)  编辑

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

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

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

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

eclipse + JBoss 5 + EJB3开发指南(3):使用Session Bean的本地接口
     摘要: 有时客户端程序(如JSP、Servlet)会和EJB组件运行在同一个JVM上,如在同一个J2EE服务器(JBoss、Weblogic等)中运行。这时就没必要再通过远程(remote)接口访问Session Bean了,因为客户端和session bean都在同一个jvm上,只需要通过本地接口(local)访问即可。就象直接访问本地类一样(当然,不能直接访问EJB类,需要使用jndi和 local接口来获得本地接口对象。当然,也可以通过remote接口来访问ejb,不过这样会有一些性能损失。就象在同一台机器上还通过socket进行访问一样,很多性能都损耗在网络上了。  阅读全文

posted @ 2009-05-14 17:15 银河使者 阅读(2455) | 评论 (0)  编辑

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

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

eclipse + JBoss 5 + EJB3开发指南(2):编写有状态的SessionBean
     摘要: 编写有状态的(Stateful)的Session Bean也非常简单,只需要将无状态注释(@Stateless)改成有状态注释(@Stateful)即可。如果使用Stateful Sessionbean,客户端在使用同一个SessionBean对象实例时可以保存状态,也就是说,在多次引用该对象时实际上在服务端是使用的同一个 Sessionbean的对象实例,而无状态sessionbean使用了不同的sessionbean对象实例,因此,是无法保存状态的。  阅读全文

posted @ 2009-05-13 09:51 银河使者 阅读(2827) | 评论 (0)  编辑

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

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

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

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

新书出版:Java Web开发技术大全——JSP+Servlet+Struts 2+Hibernate+Spring+Ajax (附源代码)
     摘要: SSH是目前最流行的Java Web开发技术。本书通过对SSH中的各种技术循序渐进地讲解,使读者尽快掌握开发基于SSH的Web程序的方法。本书内容包括Web客户端技术、JSP/Servlet技术、Struts 2(拦截器、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean、Jdbc和Hibernate模板、事务管理、Spring AOP等)以及 Hibernate(会话、映射、标准查询API、HQL、事务管理、锁等)。除此之外,本书还提供了两个完整的实例来讲解开发SSH的详细步骤和方法。通过对这两个实例的学习,读者可以对SSH开发模式有更透彻地理解和认识。  阅读全文

posted @ 2009-05-06 08:52 银河使者 阅读(5182) | 评论 (2)  编辑

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 银河使者 阅读(5937) | 评论 (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 银河使者 阅读(5261) | 评论 (3)  编辑

Fedora10无法使用root用户登录的解决方案
     摘要: 最近测试fedora10,发现fedora竟然无法使用root用户进行登录,就算root的密码输入正确也不行。虽然大正常的工作中尽尽量避免使用 root用户进行登录。但在其他情况,如学习、完成个人的工作等,以root用户登录还是很方便的(如果用其他用户登录会有很多限制)。  阅读全文

posted @ 2009-04-28 10:00 银河使者 阅读(1611) | 评论 (1)  编辑

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

posted @ 2009-04-26 18:07 银河使者 阅读(4854) | 评论 (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 银河使者 阅读(5190) | 评论 (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 银河使者 阅读(6456) | 评论 (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 银河使者 阅读(4427) | 评论 (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 银河使者 阅读(6506) | 评论 (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 银河使者 阅读(5029) | 评论 (0)  编辑

WebService(Axis2)视频教程与QQ交流群发布
     摘要: Axis2是目前比较流行的WebService引擎。WebService被应用在很多不同的场景。例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。WebService还经常被使用在SOA中,用于 SOA各个部分交换数据。本课程重点讲解了Axis2的核心功能,并提供了三个项目以使学员理解并掌握如何将Axis2应用于不同的场景。  阅读全文

posted @ 2009-04-07 09:06 银河使者 阅读(18489) | 评论 (62)  编辑

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 银河使者 阅读(4824) | 评论 (2)  编辑

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 银河使者 阅读(4360) | 评论 (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 银河使者 阅读(5327) | 评论 (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 银河使者 阅读(6106) | 评论 (2)  编辑

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

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

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

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

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

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

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

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

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

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

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

posted @ 2009-03-16 23:18 银河使者 阅读(15798) | 评论 (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 银河使者 阅读(9362) | 评论 (10)  编辑

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

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

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

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

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

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

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

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

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

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

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

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

Struts 2杂谈(2):如何向标签文件中的Struts 2标签传递参数值
     摘要: 在JSP标签文件中使用Struts 2标签会带来一个问题。由于高版本的Struts 2的标签属性值默认情况下不能为EL或JSP表达式,当然,可以通过修改Struts 2默认设置来解决这个问题,但并不建议这么做。除此之外,可以通过标签将参数值保存在ValueStack对象中,在JSP标签文件中通过Ognl表达式读取。  阅读全文

posted @ 2009-02-26 19:51 银河使者 阅读(4444) | 评论 (2)  编辑

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

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

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

posted @ 2009-02-24 19:55 银河使者 阅读(2864) | 评论 (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 银河使者 阅读(2355) | 评论 (1)  编辑

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

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

SQL Server2005杂谈(5):将聚合记录集逆时针和顺时针旋转90度
     摘要: 有时我们需要将聚合结果进行旋转,也就是说将要聚合的字段值作为字段名,将聚合结果作为记录。这可以使用传统的方法来解决,但在SQL Server2005提供了pivot函数可以更容易地解决这个问题。同时,还可以使用unpivot函数进行逆项的操作。   阅读全文

posted @ 2009-02-21 15:38 银河使者 阅读(1834) | 评论 (3)  编辑

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

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

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

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

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

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

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

posted @ 2009-02-18 10:34 银河使者 阅读(3310) | 评论 (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 银河使者 阅读(9184) | 评论 (8)  编辑

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

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

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

posted @ 2009-02-16 09:53 银河使者 阅读(3651) | 评论 (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 银河使者 阅读(12737) | 评论 (3)  编辑

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

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

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

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

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

posted @ 2009-02-13 14:23 银河使者 阅读(14852) | 评论 (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 银河使者 阅读(17173) | 评论 (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 银河使者 阅读(7739) | 评论 (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 银河使者 阅读(5694) | 评论 (4)  编辑

银河系列原创教程
     摘要: 本文为银河系列原创技术文章,主要包括Struts 2入门系列教程、Struts1.x入门与提高系列教程、WebService大讲堂之Axis2系列教程、Weblogic10+EJB3入门教程、JBoss5 + eclipse + EJB3开发指南、 AJAX系列教程、SQL Server2005杂谈系列教程、算法系列教程。这些文章均为笔者经验总结,有的系列文章还未完成,待不断完善中...  阅读全文

posted @ 2009-02-09 14:20 银河使者 阅读(11620) | 评论 (18)  编辑

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 银河使者 阅读(4344) | 评论 (6)  编辑

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

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

成功感言
     摘要: 勇气 + 自信 + 毅力 + 胸怀 = success  阅读全文

posted @ 2009-02-07 12:30 银河使者 阅读(319) | 评论 (0)  编辑

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

posted @ 2009-02-06 21:46 银河使者 阅读(3151) | 评论 (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 银河使者 阅读(5442) | 评论 (14)  编辑

SQL Server2005杂谈(3):四个排名函数(row_number、rank、dense_rank和ntile)的比较
     摘要: 本文介绍了SQL Server2005提供的四个排名函数(row_number、rank、dense_rank和ntile),其中row_number函数最常用,可以使用这个函数实现web分页功能。rank和dense_rank函数可以处理字段重复值问题。而ntile函数用于对记录进行分组处理。  阅读全文

posted @ 2009-02-05 20:21 银河使者 阅读(7032) | 评论 (2)  编辑

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 银河使者 阅读(13811) | 评论 (20)  编辑

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

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

SQL Server2005杂谈(2):公用表表达式(CTE)的递归调用
     摘要: CTE不仅可以简化嵌套SQL语句,还可以方便地实现递归调用。如要查询一个部门下面的所有子部门,或某个省下面的所有市和行政区,只需要一个CTE就可以查出来。当然,如果不使用CTE,实现这个是比较麻烦的,如果只想用SQL实现,需要使用到游标等技术。  阅读全文

posted @ 2009-02-01 23:42 银河使者 阅读(2626) | 评论 (0)  编辑

SQL Server2005杂谈(1):使用公用表表达式(CTE)简化嵌套SQL
     摘要: 在SQL Server中可以直接在SQL语句中嵌套其他的SQL语句,但当嵌套层次太多时,会使SQL语句难以理解和维护,而如果使用表变量(临时表)又会增加I/O开销。为了解决这个问题,在SQL Server2005中提供了CTE。使用CTE可以使被嵌套的SQL模块化,从而大大增加了SQL语句的可读性,同时又不会增加太多的I/O开锁。  阅读全文

posted @ 2009-01-31 14:40 银河使者 阅读(4941) | 评论 (3)  编辑

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

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

使用wxWidgets进行跨平台的C++开发
     摘要: 本文阐述了wxWidgets的由来,以及从wxWidgets的特点出发,说明了选择wxWidgets给我们带来的好处,并且通过一个典型的例子讨论了如何在C++中使用wxWidgets开发跨平台的软件。  阅读全文

posted @ 2009-01-27 11:29 银河使者 阅读(4044) | 评论 (3)  编辑

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 银河使者 阅读(18464) | 评论 (31)  编辑

快速配置Linux + Eclipse + wxWidgets开发环境
     摘要: wxWidgets是一个跨平台的C++开发库,与MFC类似。不过配置起来比较麻烦,如果在Linux下使用Eclipse来开发基于 wxWidgets的应用程序需要进行一系列的配置,如设置include路径、library路径等。但我们可以使用一个简单的方法来快速配置 wxWidgets。  阅读全文

posted @ 2009-01-25 14:42 银河使者 阅读(2875) | 评论 (2)  编辑

linux下动态库(*.so)的路径问题
     摘要: 最近研究wxWidgets,这是一个跨平台的C++库,在linux下编译成动态库(*.so),如果将编译后的可执行文件发布到其他机器的linux 系统中,需要带上.so文件,这就需要设置一下这些动态库的路径,一般可以使用环境变量LD_LIBRARY_PATH来设置,  阅读全文

posted @ 2009-01-25 14:07 银河使者 阅读(1524) | 评论 (1)  编辑

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 银河使者 阅读(22411) | 评论 (18)  编辑

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

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

SQL Server 2005服务无法启动的解决方法
     摘要: 今天想使用一下SQL Server 2005,启动SQL Server Management Studio后,发现连不了数据库了,看了下SQL Server的服务,竟然是停止状态,启动它,但无法启动,但看日志后,发现了这样的志信息:“C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf" 已压缩,但未驻留在只读数据库或文件组中。必须将此文件解压缩。”  阅读全文

posted @ 2009-01-20 22:39 银河使者 阅读(20504) | 评论 (0)  编辑

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 银河使者 阅读(4694) | 评论 (0)  编辑

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

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

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

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

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

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

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

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

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

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

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

posted @ 2009-01-13 23:10 银河使者 阅读(6633) | 评论 (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 银河使者 阅读(42031) | 评论 (36)  编辑

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

posted @ 2009-01-04 23:41 银河使者 阅读(27784) | 评论 (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 银河使者 阅读(72353) | 评论 (108)  编辑

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

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

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

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

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

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

妙用SQL Server聚合函数和子查询迭代求和
     摘要: 本文介绍了如何通过SQL Server的sum聚合函数和多层子查询来进行迭代求和,并在最后给出了通过建立函数的方式来简化迭代求和的SQL语句。  阅读全文

posted @ 2008-09-02 12:53 银河使者 阅读(2279) | 评论 (3)  编辑

用Session和唯一索引字段实现通用Web分页功能
     摘要: 本文介绍了一种通过Web系统中的Session对象和数据表的唯一索引字段来实现Web分页的方法。这种方法是通用的,适合于所有的数据库(SQL Server、Oracle、access、paradox等),并且不需要在数据库中建立任何资源(如存储过程、视图等)。需要的唯一条件就是表中要有一个唯一索引字段。  阅读全文

posted @ 2008-08-23 17:55 银河使者 阅读(2540) | 评论 (7)  编辑

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

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

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

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

SQL Server2005杂谈(4):在SQL Server2005中按列连接字符串的三种方法
     摘要: 本文介绍了按列连接一个字符串的三种方法,其中一种方法是使用CLR(在本例中使用C#)来实现SQL Server2005的扩展聚合函数的方式来实现。这种方式更加灵活,但在实现上也更加复杂。如果能很好地掌握它,就可以实现非常“酷”的功能!  阅读全文

posted @ 2008-06-25 13:16 银河使者 阅读(2820) | 评论 (3)  编辑

MySQL数据库中的安全解决方案
     摘要: 随着网络的普及,基于网络的应用也越来越多。网络数据库就是其中之一。通过一台或几台服务器可以为很多客户提供服务,这种方式给人们带来了很多方便,但也给不法分子造成了可乘之机。由于数据都是通过网络传输的,这就可以在传输的过程中被截获,或者通过非常手段进入数据库。由于以上原因,数据库安全就显得十分重要。因此,本文就以上问题讨论了MySQL数据库在网络安全方面的一些功能。   阅读全文

posted @ 2008-06-07 17:56 银河使者 阅读(2643) | 评论 (1)  编辑

实现Java Web程序的自动登录
     摘要: 有很多Web程序中第一次登录后,在一定时间内(如2个小时)再次访问同一个Web程序时就无需再次登录,而是直接进入程序的主界面(仅限于本机)。实现这个功能关键就是服务端要识别客户的身份。而用Cookie是最简单的身从验证。  阅读全文

posted @ 2008-06-05 13:49 银河使者 阅读(12893) | 评论 (8)  编辑

透视MySQL数据库之更新语句
     摘要: 用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句。言外之意,就是对数据进行修改。在标准的SQL中有3个语句,它们是INSERT、UPDATE以及DELETE。在MySQL中又多了一个REPLACE语句,因此,本文以MySQL为背景来讨论如何使有SQL中的更新语句。   阅读全文

posted @ 2008-06-01 21:01 银河使者 阅读(3809) | 评论 (6)  编辑

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

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

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

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

MySQL查询的性能优化
     摘要: 查询是数据库技术中最常用的操作。查询操作的过程比较简单,首先从客户端发出查询的SQL语句,数据库服务端在接收到由客户端发来的SQL语句后,执行这条SQL语句,然后将查询到的结果返回给客户端。虽然过程很简单,但不同的查询方式和数据库设置,对查询的性能将会有很在的影响。因此,本文就在 MySQL中常用的查询优化技术进行讨论。  阅读全文

posted @ 2008-05-24 08:54 银河使者 阅读(4202) | 评论 (2)  编辑

使用Transact-SQL进行数据导入导出方法详解
     摘要: 本文讨论了如何通过Transact-SQL以及系统函数OPENDATASOURCE和OPENROWSET在同构和异构数据库之间进行数据的导入导出,并给出了详细的例子以供参考。  阅读全文

posted @ 2008-05-21 10:02 银河使者 阅读(2593) | 评论 (0)  编辑

Struts2教程10:国际化
     摘要: 国际化的作用就是根据不同国家的用户在访问Web或其他类型的程序时,将各种信息以本地的常用形式显示出来,如界面信息在中国,就会显示中文信息,在以英文为主的国家里,就会显示英文信息。还有就是一些信息的格式,如日期格式等。
  阅读全文

posted @ 2008-05-20 16:06 银河使者 阅读(9609) | 评论 (10)  编辑

通过MVC模式将Web视图和逻辑代码分离
     摘要: 在客户端也存在着一个MVC体系结构。我们可以将视图(V)看成是描述界面的html、css和javascript代码,而模型(M)可以看成是处理业务逻辑的javascript代码,而控制器(C)就是将这两类代码连接起来的代码(一般也是javascript代码)。  阅读全文

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

在Firefox中通过AJAX跨域访问Web资源
     摘要: 本文讨论了如何解决ajax跨域访问的问题,以及阐述了XMLHttpRequest中某些属性和方法在不同浏览器中的区别。  阅读全文

posted @ 2008-05-15 16:46 银河使者 阅读(9309) | 评论 (6)  编辑

SQL Server各种导入导出数据方式的比较
     摘要: 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理;调用命令行工具bcp处理数据;使用数据转换服务(DTS)对数据进行处理。这三种方法各有其特点,下面就它们的主要特点进行比较。   阅读全文

posted @ 2008-05-14 12:22 银河使者 阅读(4001) | 评论 (2)  编辑

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 银河使者 阅读(3012) | 评论 (3)  编辑

得到第K个大的数算法研究
     摘要: 第一种算法是最容易想到的,就是利用快速排序的思想,将一个数组分成以某一个数X为轴,左边的所有的数都比X小,而右边的数都比X大。但我快速排序不同的是,在这个算法中只考虑X的一边,而不是两边都考虑。   阅读全文

posted @ 2008-05-12 20:55 银河使者 阅读(2024) | 评论 (0)  编辑

棋盘覆盖问题的算法实现
     摘要: 在一个2^k * 2^k个方格组成的棋盘中,有一个方格与其它的不同,若使用以下四种L型骨牌覆盖除这个特殊方格的其它方格,如何覆盖。  阅读全文

posted @ 2008-05-11 22:29 银河使者 阅读(4099) | 评论 (1)  编辑

拆半查找的递归和非递归算法
     摘要: 本文给出了折半查找在递归和非递归实现   阅读全文

posted @ 2008-05-11 22:26 银河使者 阅读(2907) | 评论 (4)  编辑

全排列算法原理和实现
     摘要: 全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为
例说明如何编写全排列的递归算法。   阅读全文

posted @ 2008-05-11 15:43 银河使者 阅读(7850) | 评论 (11)  编辑

整数划分算法原理与实现
     摘要: 整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n。  阅读全文

posted @ 2008-05-11 15:41 银河使者 阅读(2005) | 评论 (0)  编辑

PHP + Apache + Windows的设置

posted @ 2008-05-10 19:24 银河使者 阅读(316) | 评论 (0)  编辑

Delphi使用资源文件全攻略
     摘要: 在通常情况下使用delphi设计程序,都是将字符串、图像等资源直接使用delphi提供的vcl控件加到*.dfm中,这样做会合修改这些资源时带来不便,如果资源被多次引用,这些资源在程序启动时都被加载到内存中,非常耗费系统资源。因此,这就需要一种新的引用资源的文件:资源文件。资源文件就是将一些资源,如字符串、图像等信息进行编译,然后在程序中引用编译后的资源文件,最后和源程序一起编译生成可执行文件。由于在资源文件中的资源是在需要时加载,因此,比较节省系统资源,而且,如果要做国际化版本的系统,只需要将资源文件一换,重新编译即可。下面就详细介绍delphi中资源文件的建立和使用。  阅读全文

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

在delphi中如何动态建立类的实例
     摘要: 在面向对象语言中,用两种方法建立类的实例:静态建立和动态建立。静态建立就是在程序中显式地建立类的实例,如c1 = TClass1.Create()。而动态建立是在只知道类名的前题下建立类的实例。动态建立在实现上要比静态建立更灵活,因为动态建立无需引用被建立类,并且更容易实现如多态等面向对象特性。  阅读全文

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

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

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

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

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

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

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

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

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

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

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

Struts2教程9:实现自已的拦截器
     摘要: 在上一篇中介绍了Struts2拦截器的原理,在这一篇中我们将学习一下如何编写自己的拦截器。实现一个拦截器非常简单。实际上,一个拦截器就是一个普通的类,只是这个类必须实现com.opensymphony.xwork2.interceptor.Interceptor接口。  阅读全文

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

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

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

在SQL Server2005中进行错误捕捉
     摘要: 任何程序都可能出现错误,在SQL Server中执行Transact-SQL也不例外。如果在Transact-SQL中发生了错误,一般有两种捕捉错误的方法,一种是在客户端代码(如 c#、delphi等)中使用类似try...catch的语句进行捕捉;另外一种就是在Transact-SQL中利用Transact-SQL本身提供的错误捕捉机制进行捕捉。如果是因为Transact-SQL语句的执行而产生的错误,如键值冲突,使用第一种和第二种方法都可以捕捉,但是如果是逻辑错误,使用客户端代码进行捕捉就不太方便。因此,本文就如何使用Transact-SQL进行错误捕捉进行了讨论。  阅读全文

posted @ 2008-05-09 09:57 银河使者 阅读(1337) | 评论 (0)  编辑

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

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

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

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

在Spring2.5中定制自己的属性编辑器
     摘要: 在装载Bean时,如果属性类型是复杂类型,如是一个类。在装配时就要先装配这个属性类型(一般为一个类),才能装配Bean,但如果使用了属性编辑器,就可以无需装载属性类型,而直接装载Bean了。  阅读全文

posted @ 2008-05-07 12:21 银河使者 阅读(1719) | 评论 (0)  编辑

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 银河使者 阅读(2757) | 评论 (0)  编辑

Struts2教程8:拦截器概述
     摘要: Struts2的拦截器和Servlet过滤器类似。在执行Action的execute方法之前,Struts2会首先执行在struts.xml中引用的拦截器,在执行完所有引用的拦截器的intercept方法后,会执行Action的execute方法。  阅读全文

posted @ 2008-05-04 14:42 银河使者 阅读(15354) | 评论 (6)  编辑

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

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

2. 增强的JTabbedPane组件

3. 增强的打印功能

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

posted @ 2008-04-30 20:19 银河使者 阅读(7897) | 评论 (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 银河使者 阅读(8019) | 评论 (10)  编辑

Struts2教程7:上传任意多个文件
     摘要: 上传文件是很多Web程序都具有的功能。在Struts1.x中已经提供了用于上传文件的组件。而在Struts2中提供了一个更为容易操作的上传文件组件。所不同的是,Struts1.x的上传组件需要一个ActionForm来传递文件,而Struts2的上传组件是一个拦截器(这个拦截器不用配置,是自动装载的)。在本文中先介绍一下如何用struts2上传单个文件,最后介绍一下用struts2上传任意多个文件。  阅读全文

posted @ 2008-04-27 21:47 银河使者 阅读(24644) | 评论 (40)  编辑

关于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 银河使者 阅读(3156) | 评论 (18)  编辑

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

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

Struts2教程6:在Action类中获得HttpServletResponse对象的四种方法
     摘要: 在struts1.x Action类的execute方法中,有四个参数,其中两个就是response和request。而在Struts2中,并没有任何参数,因此,就不能简单地从execute方法获得HttpServletResponse或HttpServletRequest对象了。但在Struts2 Action类中仍然有很多方法可以获得这些对象。本文给出了四种获得这些对象的方法。  阅读全文

posted @ 2008-04-22 18:06 银河使者 阅读(37209) | 评论 (16)  编辑

Struts2教程5:使用Validation框架验证数据
     摘要: 本文介绍了如何使用Struts2的Validation验证框架进行服务端、客户端验证,以及如何进行嵌套属性的验证。在Struts2中的Validation框架和Struts1.x提供的Validation框架类似,也是通过XML文件进行配置。  阅读全文

posted @ 2008-04-21 20:06 银河使者 阅读(37781) | 评论 (32)  编辑

Struts2教程4:使用validate方法验证数据
     摘要: 在Struts2中最简单的验证数据的方法是使用validate。我们从ActionSupport类的源代码中可以看到,ActionSupport类实现了一个Validateable接口。这个接口只有一个validate方法。如果Action类实现了这个接口,Struts2在调用execute方法之前首先会调用这个方法,我们可以在validate方法中验证,如果发生错误,可以根据错误的level选择字段级错误,还是动作级错误。并且可使用addFieldError或addActionError加入相应的错误信息,如果存在Action或Field错误,Struts2会返回“input”(这个并不用开发人员写,由Struts2自动返回),如果返回了“input”,Struts2就不会再调用execute方法了。如果不存在错误信息,Struts2在最后会调用execute方法。  阅读全文

posted @ 2008-04-17 15:17 银河使者 阅读(30939) | 评论 (14)  编辑

Struts2教程3:struts.xml常用配置解析
     摘要: 在Struts2中提供了一个默认的struts.xml文件,但如果package、action、interceptors等配置比较多时,都放到一个struts.xml文件不太容易维护。因此,就需要将struts.xml文件分成多个配置文件,然后在struts.xml文件中使用标签引用这些配置文件。  阅读全文

posted @ 2008-04-16 15:25 银河使者 阅读(47048) | 评论 (17)  编辑

Struts2教程2:处理一个form多个submit
     摘要: 在Struts2中提供了一种方法,使得无需要配置可以在同一个action类中执行不同的方法(默认执行的是execute方法)。使用这种方式也需要通过请求参来来指定要执行的动作。请求参数名的格式为action!method.action
  阅读全文

posted @ 2008-04-16 09:18 银河使者 阅读(53287) | 评论 (41)  编辑

Struts2教程1:第一个Struts2程序
     摘要: Struts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了Struts1.x的方式(当然,Struts2仍然是基于MVC模式的,也是动作驱动的,可能这是唯一没变的东西)。Struts2实际上是在Webwork基础上构建起来的MVC框架。我们从Struts2的源代码中可以看到,有很多都是直接使用的xwork(Webwork的核心技术)的包。既然从技术上来说Struts2是全新的框架,那么就让我们来学习一下这个新的框架的使用方法。
  阅读全文

posted @ 2008-04-15 22:41 银河使者 阅读(187312) | 评论 (77)  编辑