|
2008年9月7日
摘要: 最近在网上看到一道Twitter的算法面试题,网上已经有人给出了答案,不过可能有些人没太看明白(我也未验证是否正确),现在给出一个比较好理解的答案。 阅读全文
摘要: 有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现
例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。 阅读全文
摘要: 在Ubuntu Linux上安装可编译成ARM架构的交叉编译环境CodeSourcery,编译完的执行文件可在Android手机上直接运行。本文阐述了如何下载、安装和使用CodeSourcery。 阅读全文
摘要: 本文介绍了如何利用Android的绘图技术随机绘制彩色实心圆。 阅读全文
摘要: 使用Google的二儿子(Nexus S)的童鞋赶紧了,Android 2.3.4已经出来了(虽然官方文档暂时还没更新,可能出来还不到24小时),如果已经是android 2.3.1,必须升级到Android 2.3.3后才能升级到2.3.4 阅读全文
摘要: 在2010中国移动开发者大会“无线互联应用开发者创业孵化”分论坛中,Frost & Sullivan首席顾问王煜全发表主题为《无线互联的布道与孵化》的演讲,他认为,由于运营商影响力的没落,以及iPhone掀起的热潮,再到 Android市场的崛起,手机操作系统带来了无线互联模式的改变。无线互联产业链正在迅速IT化,开放联机功能平台将是未来格局的奠基者,联机功能平台带来了新的产业链。 阅读全文
摘要: 乐博Android客户端是一款基于Android的新浪微博客户端。支持同时维护多个新浪微博帐号。可获得新浪微博支持的所有信息。其中包括首页微博、随便看看、我的微博、@提到我的、评论、私信、我的收藏等。发布微博支持拍照、相册、表情、话题等功能。同时可以通过内置的图像特效编辑器编辑拍摄或相册中的图片。特效目前包括马赛克、灰度、裁剪图像、任意角度旋转。除此之外,本系统还提供了两个快捷方式:乐博写写和乐博拍拍。可以将他们放在Android的桌面,分别用于快速写微博和即拍即发。当然,乐博Android客户端还有很多奇妙的功能。这就有待各位童鞋去挖掘了。未来的乐博Android客户端将会加入更具有创造性的功能,让我们共同期待她的完美表现吧!
阅读全文
摘要: 虽然Intent和静态变量都可以传递数据,但intent功能有限,static过于wrong,那么有没有一种更好的方式呢,答案是yes,这就是Application Context,一个全局的Context,详情请读者参见本文的内容。 阅读全文
摘要: “反观中国,二流的司法只能产生二流的产业,具体地讲,以抄袭和垄断为立公司之本的腾讯将这二者做到极致,创新得不到保护,小公司活不下来,中国的高科技产业面对美国的发达,只能望洋兴叹,作为个体中国人比美国人聪明,但没有好的机制让聪明才智成体系地爆发。” 阅读全文
摘要: 现在终于到讲解数据库的时间了。数据库也是Android存储方案的核心。在Android系统中使用了Sqlite数据库。Sqlite是非常轻量的数据库。从Sqlite的标志是一根羽毛就可以看出Sqlite的目标就是无论是过去、现在,还是将来,Sqlite都将以轻量级数据库的姿态出现。Sqlite虽然轻量,但在执行某些简单的SQL语句时甚至比MySQL和Postgresql还快。由于很多读者是第一次接触Sqlite数据库,因此,在介绍如何在Android中使用Sqlite之前,先在本节简单介绍一下如何在PC上建立Sqlite数据库,以及Sqlite数据库的一些特殊方面(由于本书的目的不是介绍Sqlite数据库,因此,与其他数据库类似的部分(如insert、update等)本书将不再介绍。没有掌握这些知识的读者可以参阅其他关于数据库方面的书籍。 阅读全文
摘要: 创新工场董事长兼首席执行官李开复(微博)连发十条微博总结无线趋势(腾讯科技配图) 阅读全文
摘要: 除了可以向IE中添加自定义菜单外,我们还可以向IE的工具条上添加自定义的按钮。自定义按钮同自定义菜单COM扩展的实现几乎一样, 除了在注册时需要添加的注册表项不同。 注意:同菜单扩展一样,自定义的按钮扩展也必须是IE5及以后的版本才支持。 阅读全文
摘要: IE的面板实际就是嵌入到IE浏览器中的子窗体。面板有两种显示模式,一种是垂直显示在浏览器的左侧,一种是水平显示在浏览器的下方。IE浏览器内置提供了很多的标准面板,如收藏夹和搜索面板这些是垂直的面板,而每日提示和讨论面板则是水平的面板。 阅读全文
摘要: 向IE中添加的自定义菜单,可以被用来执行可执行文件,脚本语言和COM对象的方法,对于前两种执行方式,相对比较简单,只需要对注册表进行编程就可以了,但是能够执行的功能非常有限,而使用COM组件扩展IE菜单则相对复杂,但是能够执行的功能也相对是最强大的,所以下面我就主要介绍基于COM的菜单扩展方式,还要注意的一点是只有IE5及以后的版本才支持菜单的扩展。 阅读全文
摘要: IE除了允许我们添加自定义的主菜单外,还允许在右键菜单中添加自定义的菜单,。很多著名的网络软件如网络蚂蚁,、网际快车等都在右键菜单中添加了可以用来下载文件的快捷菜单。IE的右键菜单扩展同其它COM扩展不太一样,其它扩展只要在注册表中填写一定的配置信息就可以使用了,而右键菜单扩展必须由一个JavaScript脚本来创建并调用其中的方法。由于我们的COM组件必须能从脚本语言中创建,因此右键菜单扩展的必须是一个Automation(自动化)组件,也就是说除了IUnknown接口外,还必须支持IDispatch接口。幸好,Delphi提供了内置的自动化COM组件的支持,我们只需要从TAutoObject而不是标准的TComObject派生COM组件就可以了。 阅读全文
摘要: 短信是手机中经常使用到的一种服务。然而,当手机接收到短信时,也会向系统发送广播。如果我们的应用程序要在手机接收到短信后做点什么,那就需要接收这个系统广播。
接收系统广播的步骤我们已经熟悉了,下面就按步就班地来完成这两个步骤。 阅读全文
摘要: 我们知道SharedPreferences只能保存简单类型的数据,例如,String、int等。如果想用SharedPreferences存取更复杂的数据类型(类、图像等),就需要对这些数据进行编码。我们通常会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中。
阅读全文
摘要: 如今,Android及它的绿色小机器人标志和苹果iPhone一样风靡世界,掀起了移动领域最具影响力的风暴。创造这一奇迹的人,叫Andy Rubin(安迪·罗宾),Google工程副总裁,Android开发的领头人。 阅读全文
摘要: 本文介绍了20个关于Android应用程序开发的实用工具资源,供大家分享。在google、开源平台,和来自移动电话制造商HTC,Samsung和Sony Ericsson的支持下,Android平台在市场占有率上相比去年取得的886%增长!如果我只看增长率,IPhone据统计才有61%的增长。这些 数据可以给你关于两个平台流行度的印像,但是事实上,这些数据告诉了智能机开发员的谁才是真正的赢家。在时下,智能机越来越流行,因此成为一个快速增长的 Android平台的智能机开发人员将会是一个不错的选择。
阅读全文
摘要: 现在,我说一说360的微创新,这是我这么多年来做互联网产品的一个总结,对我来说是方法论,希望能跟朋友们分享,切磋。 阅读全文
摘要: Paul Graham 是著名的程序员、博客、创业导师和风险投资家。他曾与蠕虫病毒的作者Robert Morris(现为MIT教授)共同开发了世界第一个Web应用Viaweb,1998年被Yahoo以4500万美元收购,发展为Yahoo Store。2005年他与Trevor Blackwell、Jessica Livingston(《创业者》一书作者)、Robert Morris共同创办了著名的风险投资机构Y Combinator,先后投资了reddit, Justin.tv, loopt 和 Xobni等知名2.0企业。他的博客文章更是以思想深刻、观点犀利、文笔优美而闻名世界,与Joel Spolsky(《软件随想录》作者)相比有过之而无不及。 阅读全文
摘要: 最近Android比较火,无论是摩托罗拉搭载 Android 2.2准备咸鱼翻身,还是Android Market年底将在台湾开市……这些消息足以让人们为之振奋。但当人们看到Android的外表光鲜之时,更要注意到其潜在内涵,尤其对于广大开发者,一味盲目地崇拜并扎入其中并不实为理智之举。本期,我们为您邀请到一位与代码打了15年交道的李宁,以其亲身经历和开发经验来为广大开发者提出鉴言和忠告。 阅读全文
摘要: Gallery组件主要用于横向显示图像列表,不过按常规做法。Gallery组件只能有限地显示指定的图像。也就是说,如果为Gallery组件指定了10张图像,那么当Gallery组件显示到第10张时,就不会再继续显示了。这虽然在大多数时候没有什么关系,但在某些情况下,我们希望图像显示到最后一张时再重第1张开始显示,也就是循环显示。要实现这种风格的Gallery组件,就需要对Gallery的Adapter对象进行一番改进。
阅读全文
摘要: Android这个词已强占我们的眼球有一段时间了。在此之前,提到Android,没人会和移动互联网以及Google这两个当今最火辣的词联系起来。然而,自从Google推出自己的移动操作系统Android以来,Android、Google和移动互联网就好像10年前的Windows、微软和PC操作系统一样,成为了当今最吸引眼球的组合。 阅读全文
摘要: 哈佛老师经常给学生这样的告诫:如果你想在进入社会后,在任何时候任何场合下都能得心应手并且得到应有的评价,那么你在哈佛的学习期间,就没有晒太阳的时间。 阅读全文
摘要: 东北大学计算机专业硕士。CSDN博客专家、51CTO客座专家、中国移动开发者社区技术管理员、OPhone专家、 ophonesdn版主(Id:mobileguy)、eoeandroid版主(id:androidguy)。曾任东软股份项目经理。曾领导并参与开发了十几个大中型项目。从2005年进入写作领域以来, 为程序员、电脑编程技巧与维护、电脑报、IT168、天极网等平面媒体和网络媒体撰写了一百多篇原创技术和评论文章。并在个人 blog(http://nokiaguy.blogjava.net)上发表了大量的原创技术文章。 阅读全文
摘要: 自从去年从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。 阅读全文
摘要: 《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》一书上架短短几天,就进入了互动网计算机类销售总排名第4的好成绩。现发篇Ext JS的技术文章庆祝下。在本文将介绍TreePanel组件非常有意思的一个功能:结点拖放。要使TreePanel组件的结点可以拖放非常简单,只需要将TreePanel类的enableDD选项参数设为true即可。当然,要想实现更复杂的功能,还需要配合其他的参数和事件。 阅读全文
摘要: 英文词典是手机中经常使用的应用。因此,在本文将结合Android来讨论如何实现一个
Android版的英文词典。实现英文词典的方法很多。在本文使用了SQLite数据库来保存英文单词信息。系统通过SQLite数据库中保存的单词信息来查找到与指定英文对应的中文信息。当然,实现这样一个英文词典需要解决一系列技术问题。例如,如何将保存英文单词信息的数据库文件随程序(apk文件)一起发布;发布后如何打开数据库;如何在输入前几个字母后,在AutoCompleteTextView组件提示列表中显示以所输入字符串开头的所有单词。在本章将逐渐给出这些问题的详细答案。
阅读全文
摘要: 在程序中实现交换两个数的功能并不复杂,但如果不使用中间变量,就需要动一下脑筋。在本文介绍了两个方法(其实原理都是一个)。其基本原理就是数的中和。也就是说,通过某种运算(二元运算)将a和b两个数变成一个数,并保存在其中一个变量中。然后再通过同样的运算符将a或b中和掉。这样实际上是利用了a或 b本身作为了中间变量。 阅读全文
摘要: 众所周知,AlertDialog类用于显示对话框。关于AlertDialog的基本用法在这里就不详细介绍了,网上有很多,读者可以自己搜索。那么本文要介绍的是如何随心所欲地控制AlertDialog。 阅读全文
摘要: 第1章:开发梦缘起开心网
第5章:开心桌面:完全模拟Windows桌面的开心网
第15章:移动电子相册:捕捉精彩瞬间
阅读全文
摘要: 使用智能手机,PC端的手机管理软件是不可或缺的工具。最近,一款名为豌豆荚手机精灵的管理工具悄然发布beta版。用户把手机和电脑连接上后,可以通过这款软件在电脑上方便地管理手机中的通讯录、短信、应用程序和音乐等,或者备份重要资料。产品负责人王俊煜认为豌豆荚手机精灵自我定位为的应该是 “全功能的Android手机管理软件”。 阅读全文
摘要: 《Android/OPhone 开发完全讲义》目前计算机类销售总排名:互动网(china-pub)第3名,当当网新书热卖榜销售总排名第4名。
Android系统本身提供的TextView组件并不支持边框,但可以对TextView进行扩展来添加边框。我们可以使用如下两种方法为TextView组件添加边框。
1. 编写一个继承TextView类的自定义组件,并在onDraw事件方法中画边框。
2. 使用9-patch格式的图像作为TextView的背景图来设置边框(这个背景图需要带一个边框)。 阅读全文
摘要: Notification与Toast都可以起到通知、提醒的作用。但它们的实现原理和表现形式却完全不一样。Toast其实相当于一个组件(Widget)。有些类似于没有按钮的对话框。而Notification是显示在屏幕上方状态栏中的信息。还有就是Notification需要用NotificationManager来管理,而Toast只需要简单地创建Toast对象即可。 阅读全文
摘要: 一、 PC与模拟器或真机交换文件(adb pull和adb push)
二、 Shell命令
三、创建、删除和浏览AVD设备(android) 阅读全文
摘要: 经作者测试,模拟器在运行一段时间后,adb服务有可能(在Windows进程中可找到这个服务,该服务用来为模拟器或通过USB数据线连接的真机服务)会出现异常。这时需要重新对adb服务关闭和重启。当然,重启Eclipse可能会解决问题。但那比较麻烦。如果想手工关闭adb服务,可以使用下面的命令。
adb kill-server
在关闭adb服务后,要使用如下的命令启动adb服务。
adb start-server
阅读全文
摘要: 《Android/OPhone 开发完全讲义》已出版。 阅读全文
摘要: 由CSDN和《程序员》杂志联合策划组织,旨在与业界人士分享IT产品背后的技术和用户体验故事的线下活动TUP(Technology, User Experience, Product)系列活动日前在北京丽亭华苑酒店成功举办,首期活动以“移动开发实践”为主题。原计划为200人左右的小规模高端技术人才聚会,实际到会人士超过300人,不少与会者站在会场内听完了整场论坛。 阅读全文
摘要: 最近几天,突然手机(我的是G3,估计其他android手机也有类似的情况)上不了android market了,甚至连gmail也出现网络问题(通过gprs、3g和wifi都不好使)。一开始还以为是手机的问题,后经过多次重启,刷机,还是存在 问题。最后经过验证,google更改了服务设置,相关服务(包括android market)已成了限制服务(原因吗,大家都知道,这里就不说了),但还是有办法解决地。首先下载下面的zip文件。 阅读全文
摘要: 《Android/OPhone 开发完全讲义》一书预计在6-15左右出版,现提供3个样章(第1、8和14章)试读,欢迎提出宝贵意见。 阅读全文
摘要: 经过编辑的努力,新的封面终于出来了。书将在6-15之前上市。先展示下封面和封底,欢迎提出宝贵意见。 阅读全文
摘要: 新书《Android/OPhone开发完全讲义》将在6月份出版,现在三个候选封面效果。各位看看哪个封面更好些。
阅读全文
摘要: 最近看了有道出的几个复赛题,觉得很好玩,现给出Java版的答案。先看看提干部分。如果一个数字十进制表达时,不存在连续两位数字相等,则称之为“不重复数”。例如,105,1234和12121都是“不重复数”,而11,100和 1225不算。给定一个long类型数字A,返回大于A的最小“不重复数”。 阅读全文
摘要: 文为新书《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。 阅读全文
摘要: 文为新书《Android/OPhone开发完全讲义》的内容连载。《Android/OPhone开发完全讲义》一书将在近期出版。本文的例子可以在TextView中显示一个图像。图像的大小将随着TextView组件中字体的大小而变化。 阅读全文
摘要: AutoCompleteTextView和EditText组件类似,都可以输入文本。但AutoCompleteTextView组件可以和一个字符串数组或List对象绑定,当用户输入两个及以上字符时,系统将在AutoCompleteTextView组件下方列出字符串数组中所有以输入字符开头的字符串,这一点和www.Google.com的搜索框非常相似,当输入某一个要查找的字符串时,Google搜索框就会列出以这个字符串开头的最热门的搜索字符串列表。 阅读全文
摘要: 绘制图像的基本原理是创建一个目标大小的画布,然后读取源图像,并将该图像绘制这个画布上。为了使程序通用,源图像和压缩后的目标图像应用分别使用 InputStream和OutputStream来表示。 阅读全文
摘要: 本客户端为0.9版。正在完善中。目前的功能主要包括浏览关注的微博(首页);浏览微博广场中的微博(逛逛);浏览包含“@我的”的微博;评论、转发微博;显示微博的详细信息(包括评论和转发数、图像、发表时间);刷新微博的评论和转发数;主大显示图像;支持屏幕旋转显示微博信息;刷新微博内容(获得最新的微博);写微博(包括文字微博和带图像的微博);插入表情字符;从相册中选择图像;拍照获得图像;编辑图像(在图像上绘制不同颜色的图形);在无图像的情况下任意绘制图像。同时加载数据时采用的缓冲方式,以便可以节省数据流量。在后续版本中将会继续加强绘图功能,并增加离线编辑、浏览评论、管理个人信息以及与电子书互相嵌入等等功能。 阅读全文
摘要: 由于Java是基于Unicode编码的,因此,一个汉字的长度为1,而不是2。但有时需要以字节单位获得字符串的长度。例如,“123abc长城”按字节长度计算是10,而按Unicode计算长度是8。为了获得10,需要从头扫描根据字符的Ascii来获得具体的长度。如果是标准的字符,Ascii的范围是0至255,如果是汉字或其他全角字符,Ascii会大于255。 阅读全文
摘要: 在导入或覆盖Eclipse工程时可能会出现Eclipse工程错误(Eclipse工程结点上有一个红叉)。除了Eclipse工程中的Java文件和其他文件的错误外,还有很多情况Eclipse工程中的文件并没有任何错误。这会使人莫名其妙。有时Eclipse工程可以带错误运行,但很多时候有错误就无法运行了。其中一种可能性是Eclipse工程中引用了jar文件,可以在工程属性对象话中看看jar文件的路径是否正确,或是否引用了不存在的工程。 如果引用也正确。可还是会出现工程错误,那估计就更闹心了。 阅读全文
摘要: 据国外媒体报道,谷歌将巨资收购百度,涉及金额高达300亿美元。谷歌借此重返大陆市场。 阅读全文
摘要: 今天帮别人解决一个关于 Base64 编解码的问题,竟然发现 Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因。 阅读全文
摘要: ShellExecute是windows的API函数,功能是执行可执行文件(exe)或任何关联文件(doc、txt、xls等)。但 ShellExecute是异步执行的,也就是说,不管执行的程序是否成功运行,运行的时间是长是短,ShellExecute函数都会立即返回。这样虽然可以很好地完成执行程序的工作,但却会给后续的工作带来麻烦。 阅读全文
摘要: 最近做个程序,需要将dbf和文本文件互相转换,也就是将dbf按表结构将字段和数据导成txt文件,再将txt文件导入其他的dbf表中。在 foxpro中完成这些工作简直太容易了,但很多功能必须用delphi实现。虽然可以用foxpro做个小程序,然后再用delphi调用,但比较麻烦。因此,可以用Delphi通过调用Com组件的方式直接执行foxpro命令来实现 阅读全文
摘要: 近日在做一个程序,需要在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的模拟器,所以列表项看起来完全正常。 阅读全文
摘要: HTC的IMEI可以用以下地址查询信息 IMEI或者S/N号都可以 在取下电池后就能看到
http://service.htceurope.com/htcdistributor/Default.aspx 阅读全文
摘要: 先庆祝下,刚获得OPhone SDN技术征文大赛二等奖,Dell Mini 3手机一部,支持移动的TD-SCDMA网络。现在终于可以做联机测试了,哈哈!!
文章URL
http://www.ophonesdn.com/article/list 阅读全文
摘要: Activity是Ophone系统的4个应用程序组件之一。通过传统方法显示的Activity都是充满整个屏幕,也就是全屏的Activity。事实上,Activity不仅可以全屏显示,还可以象对话框一样直接显示在屏幕上。而且可以通过单击屏幕的任何位置(包括Activity内部和Activity外部)来关闭Activity。
阅读全文
摘要: 最近一段时间智能手机市场是翻天覆地。各大厂商纷纷推出自己的手机操作系统和手机。Google、Apple、中国移动、中国联通纷纷推出或即将推出自已的智能手机操作系统(虽然有的是改装的),Google推出了Android、Apple推出了IPhone。移动推出了OMS、联通由于和apple谈判不太顺利,估计是apple和联通都很霸道,都想占大头,结果闹得很不愉快。于是联通一颗红心两手准备,在引进iphone的同时,又开发自有品牌的 UniPlus系统,这个系统当然和移动的OMS一样,也是基于Android的,但目前还没有正式推出,相关的资料也很少。看来Android以后会很火,至少在中国是这样,中国的两大移动通讯运营商都占到了Android一边。不火才怪。要不移动和联通就白投入了。那估计王建宙和常小兵就得疯了。 据说中国电信也在酝酿基于Android的手机操作系统。看来Android在中国会比美国先火了。 阅读全文
摘要: 一大早启动Eclipse3.5,突然就启不来了,而是出现下面的提示信息。 阅读全文
摘要: 中国移动开发者社区的应用测试要经过两个阶段:预测试和正式测试,预测试主要是对应用信息(如图片、文字)做非法性检查,病毒扫描,查重等;正式测试主要是检查功能、安全性、可用性等方面的问题。 阅读全文
摘要: 目前中国移动MobileMarket重点支持机型共70款,欢迎广大开发者开发以下列表机型的应用;提交到中国移动开发者社区;以后的机型会不断更新,敬请大家关注。 阅读全文
摘要: 第4章 Servlet开发基础、第8章 Java Web国际化、第10章 简单标签 阅读全文
摘要: 由于有些读者因随书光盘遗失,应广大读者的要求,特提供《Java Web开发速学宝典》一书的源代码下载,由于源代码所使用的jar包过大(随书光盘中包含了完整的源代码和jar包),在这里只提供了jar文件的列表,读者可以自行获得这些jar包。 阅读全文
摘要: 有一个表,三个字段:km、kh和cj。其中km为科目号、kh为考生号、cj为成绩,现对km和kh进行分组,并获得每组前2条记录(按cj从高到低排序)。基本思想是为每组加一个序号列,再用where取序号小于等于20的。 阅读全文
摘要: 如果你成功申请了 Google App Engine 的服务,并创建了自己的应用(Application),你会自动获得一个形如 your-application-id.appspot.com 的 URL 地址,用于你的应用程序的发布。 阅读全文
摘要: 如果 Google 企业应用套件搜索引擎应用程序已经在 Google 企业应用套件中设置好,您将在 Google 企业应用套件控制台上看到该应用程序条目。 Google 企业应用套件控制台的登录网址是:http://google.cn/a/[example.com] 。 请务必包含您的实际域名。 阅读全文
摘要: 对于缓冲区来说,最重要的操作就是读写操作。缓冲区提供了两种方法来读写缓冲区中的数据:get、put方法和array方法。而get、put方法可以有三种读写数据的方式:按顺序读写单个数据、在指定位置读写单个数据和读写数据块。除了上述的几种读写数据的方法外,CharBuffer类还提供了用于专门写字符串的put和append方法。在本文及后面的文章中将分别介绍这些读写缓冲区的方法。 阅读全文
摘要: 9月26日,在中国移动Mobile Market(以下简称MM)正式发布一个月后,首次个人开发者见面会在广州天河举行,前来参加见面会的开发者有DavidLau、王云、fonter、张晓东、李惠晶、大兵、贺海峰、老老的张等9人,中国移动派出6位经验丰富的工作人员参加了见面会。 阅读全文
摘要: 在准备刷机前先要做的事情:
1.检查你的软件版本:若高于2.73则不需要升级
2.准备下载HTC Sync并安装,HTC sync2.04下载链接:http://www.htc.com/hk-tc/supportdownloadlist.aspx?p_id=283&act=sd&cat=all ,点右侧的下载就好了,默认有中文。安装后推荐电脑重启后再进入下一步。
3.连接手机看htc sync2.04能否识别手机。(若不能,请耐心重启后再试) 阅读全文
摘要: 本书主要对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应用的读者。 阅读全文
摘要: 本文用通俗的语言描述在OPhone上如何实现视频的流畅播放及解码器的调用方法。 阅读全文
摘要: 本软件除了拥有传统的日历功能外,还具有查询天气预报、添加提醒时间,显示农历日期、天干地支、宜忌、公历、农历节日等信息。要注意的是,查询天气预报需要访问internet.。设置提醒时间主要是指设置未来的某个时间(精确到分钟)进行声音和震动提醒。如上午10:00开会,为了防止忘记或提前做些准备,可以设为9:30或其他的时间进行提醒。本系统可设置任意多个提醒时间。另外这个提醒的功能也可以当日记使用。
阅读全文
摘要: 传说中的海蓝兽是白色,但跑起来会出现淡淡的蓝色。 阅读全文
摘要: 北京时间9月4日,谷歌全球副总裁、大中华区总裁李开复正式辞职,结束其为期四年的任期。以下是李开复给中国学生的第七封信:21世纪最需要的7种人才 阅读全文
摘要: 本人与大家一样,原来只是一个普通的程序员,靠给软件公司打工谋生。后来感觉这样长期干下去没有什么前途,虽然现在年轻还可以加班加点靠拼身体吃饭,以后年纪大了怎么办?听说很多人自己单干每年靠共享软件都可以赚几十万,我为什么就不行?仗着自己技术好,并且当时已经有了成熟软件的思路,我就辞职出来加入共享软件这一行当了。 阅读全文
摘要: Google日历是相当优秀的日程管理工具,可以方便的组织、分享各类日程,Google还提供了贴心而免费的手机短信、Email提示功能,真是非常的赞。 阅读全文
摘要: Google Weather API 只支持美国地区使用邮政编码进行查询,例如:
http://www.google.com/ig/api?hl=zh-cn&weather=94043
(94043 为 山景城, 美国加州 的邮政编码) 阅读全文
摘要: 由CSDN和《程序员》杂志主办的中国软件技术英雄会今天在上海光大国际大酒店召开,此次大会将继续延续技术创富主题,针对上海IT业特色和国际IT产业发展趋势,集中探讨开发者关注的开放平台、游戏、移动等领域的相关话题。 阅读全文
摘要: 如果将同步I/O方式下的数据传输比做数据传输的零星方式(这里的零星是指在数据传输的过程中是以零星的字节方式进行的),那么就可以将非阻塞I/O方式下的数据传输比做数据传输的集装箱方式(在字节和低层数据传输之间,多了一层缓冲区,因此,可以将缓冲区看做是装载字节的集装箱)。大家可以想象,如果我们要运送比较少的货物,用集装箱好象有点不太合算,而如果要运送上百吨的货物,用集装箱来运送的成本会更低。在数据传输过程中也是一样,如果数据量很小时,使用同步I/O方式会更适合,如果数据量很大时(一般以G为单位),使用非阻塞I/O方式的效率会更高。因此,从理论上说,数据量越大,使用非阻塞I/O方式的单位成本就会越低。产生这种结果的原因和缓冲区的一些特性有着直接的关系。在本节中,将对缓冲区的一些主要特性进行讲解,使读者可以充分理解缓冲区的概念,并能通过缓冲区来提高程序的执行效率。 阅读全文
摘要: 中国软件用户群庞大,需求各异,有的技术高手混得很艰难,有的技术并不精深却过得还挺滋润,其中原因之一就是找到了自己的特色领域。蒋涛谈到了他在深圳出差时的见闻。由于有了成熟的手机模块平台,有开发者专门做宗教山寨手机,把佛像做成内置图像,用户可通过内置软件上香、上贡品,手机的成本不足300元,售价却高达2000元,售者选择在寺庙宗教场所周围卖这类手机,销量相当不错,这正是紧紧的抓住了天时地利人和。还有一个蒋涛印象深刻的,一个海归回来开发者,在深圳做低价农民工专用手机及服务,深圳招聘用工频繁人员流动巨大,而通过他们的手机及软件服务,使用者不仅可以获取最新的招工信息,在应聘工作时还可以获得相关的地图和信息服务。通过短信等收费模式,该款手机在人才招聘市场和报刊亭卖得非常火。 阅读全文
摘要: 为了使读者更好地理解非阻塞I/O,本节给出了一个简单的例子用来演示如何将非阻塞I/O应用到网络程序中。读者可以先不必管这个例子的具体细节。因为这个例子的主要目的并不是讲解非阻塞I/O的使用,而是先让读者对非阻塞I/O有一个笼统的感性认识。在看完这个例子后,读者可能会有很多疑问,在本章后面的部分将会逐渐揭开这些迷团。这个例子的主要功能是访问新浪网,并将新浪网的首页在控制台上输出。 阅读全文
摘要: 资源是您在代码中使用到的并且在编译时被打包进您的应用程序的附加文件。Android支持多种不同的文件,包括XML、PNG和JPEG文件。XML文件的格式决定于其描述的内容。这些文件将描述文件支持的类型、语法或格式。 阅读全文
摘要: 今天遇到个问题.
首先插入一个DataTime格式的数据:
string sql="insert into [table] (date_time) values('" + date_time.ToString() + "'";
执行如上命令.插入没有报告错误. 阅读全文
摘要: 今天有个公司说需要动作感应的几个小游戏!也接触android很久了,但是以前没有看过关于动作感应技术的教程,到google上也没搜索到类似教程!只有自己看API了,加上就其他平台的动作感应试试吧!就在这里记录下收获吧! 阅读全文
摘要: 中国农历算法 - 实用于公历 1901 年至 2100 年之间的 200 年 阅读全文
摘要: 在网络应用中,一般可以采用同步I/O(阻塞I/O)和非阻塞I/O两种方式进行数据通讯。这两种方式并非互相排斥和互相取代。我们可以在平时的应用中单独采用其中一种通讯方式,也可以混合使用这两种通讯方式。在本文中就什么是非阻塞I/O以及为什么要使用这种通讯方式进行了介绍,在下一篇文章中给出了一个简单的例子来演示在网络应用中如何使用非阻塞I/O进行通讯。 阅读全文
摘要: 使用ServerSocket类的implAccept方法可以使用accept方法返回一个Socket子类对象。但implAccept是protected方法,因此,必须在ServerSocket类的子类中覆盖accept方法,然后在accept方法中使用implAccept方法重新设置Socket对象。 阅读全文
摘要: 官方提供的ISO实际上拆成了两个文件,需要用HJ-Split来合并,或者直接[url=http://live- android.googlecode.com/files/liveandroidv0.2.iso%20[mininova].torrent]BT 下载完整ISO版[/url]。 阅读全文
摘要: ServerSocket类有以下三个选项:
1. SO_TIMEOUT: 设置accept方法的超时时间。
2. SO_REUSEADDR:设置服务端同一个端口是否可以多次绑定。
3. SO_RECBUF:设置接收缓冲区的大小。 阅读全文
摘要: 本文介绍了如何通过getLocalPort、getInetAddress和getLocalSocketAddress方法获得服务端的信息,以及FTP的两种模式:主动模式和被动模式,及其原理。 阅读全文
摘要: 今天看了一下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
阅读全文
摘要: ExtJS是一个非常酷的javascript客户端框架,用于做Web UI。在ie、firefox上浏览的效果非常好,近日突然想在android上试试。没有真机,就用android模拟器吧。模拟器默认访问的是 www.google.com,将该默认页改成http://www.extjs.com,然后导航到extjs的例子部分,选中一个例子,看看显示效果。 阅读全文
摘要: 在客户端和服务端的数据交互完成后,一般需要关闭网络连接。对于服务端来说,需要关闭Socket和ServerSocket。在关闭Socket后,客户端并不会马上感知自已的Socket已经关闭,也就是说,在服务端的Socket关闭后,客户端的Socket的isClosed和isConnected方法仍然会分别得到false和true。但对已关闭的Socket的输入输出流进行操作会抛出一个SocketException异常。 阅读全文
摘要: 手机阅读正在成为全球手机增值服务的一片新蓝海。最近,有关于手机阅读方面的市场竞争动作颇多。首先是美国最大连锁书店邦诺高调开张电子书店并宣布将推出电子书阅读器,欲与亚马逊、索尼同台竞争。亚马逊则立马宣布计划在电子阅读器上打广告,进一步开发新赢利模式,表现出其在电子书阅读市场一贯“老大”的先进形象。 阅读全文
摘要: 最近在做一个ExtJS的应用,以前使用时都是连网的,也没任何问题。不过最近由于某些原因,开发的机器无法连网。这下问题出来了,一个从服务端取得数据并显示的Combobox怎么也不正常了。总是显示“loading...”,数据就是出不来。看看javascript错误,竟然是从 http://extjs.com/s.gif下载s.gif。不知extjs3.0是怎么搞的。Extjs2.x还没试,不知有没有这个问题。 s.gif在本地是有的,在resources\images目录中。 阅读全文
摘要: 加快N73速度的方法,为N73速度愁的朋友快来看看吧。
1、选择
日历>选项>新日历项>待办事项
主题:Speed 预定日期:29-01-2005(dd-mm-yy) 优先等级:高
2、再选择
日历>选项>新日历项>待办事项
主题qoukie 预定日期:29-01-2005(dd-mm-yy) 优先等级:低
最后将这两项全部标示成“已完成”,切记!!!! 阅读全文
摘要: Android模拟器或真机都会有一定大小的内部存储空间(不是指内存,指的是持久化存储空间),但这并不够,有时我们需要更大的存储空间。为了在模拟器上开发使用扩展存储空间的程序,需要在PC上模拟一个SDCard的虚拟文件,然后加载到模拟器中。 阅读全文
摘要: 由于目前基于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吧,可以完全免费的哦。 阅读全文
摘要: 只有特定硬件才支持 PAE X86,因此在最初安装该操作系统时不启用此功能。有关哪些硬件支持 PAE X86 的详细信息,可以通过单击支持资源中的相应链接,查询有关 Windows Server 2003 家族中产品的硬件兼容性信息。有关如何启用 PAE X86 的详细信息,请参阅启用物理地址扩展 (PAE)。 阅读全文
摘要: 在WinXP上通过Virtual PC安装WinCE 开发WinCE程序的调试,要么用Emulator,要么用触摸屏等等硬件,模拟器不真实,硬件又难找还不易随身带。 象我这样穷得买不了带CE的PDA,懒得不想下巨型的PB、VS,要随时调试还真不容易。 试过VMWare,效果极差。今天看到vpc的介绍,倒还试成功了, 阅读全文
摘要: 在描述算法之前,先看看下面的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 阅读全文
摘要: OPhone是中国移动推出的手机操作系统平台,是基于android的,只是做了一些扩展。在界面和widget的显示效果还是有一些区别的。下面是我做的一个写blog的应用。看看它们的界面效果。 阅读全文
摘要: Android不用我多说了,这是Google在2007年推出的一款主要用于移动设备的操作系统。google在android sdk1.5中加入了appwidget api。通过这项技术,可以在android手机的主界面(Home界面)显示可以拖动的窗口,用于显示各种用户需要的信息。至于显示什么,就完全依靠开发人员的想象力了。OK,废话少说。我们先来体验一下如何开发一个显示当前时间的appwidget。这个appwidget每秒刷新一次,显示时、分和秒。 阅读全文
摘要: Here we share to you T-Mobile G1 tips and tricks, how to install apk file. How to install non market apk apps on android is so simple and easy. This step what should you do. 阅读全文
摘要: 在建立完ServerSocket对象后,通过accept方法返回的Socket对象,服务端就可以和客户端进行数据交互。Socket类和ServerSocket类都有两个得到输入输出流的方法:getInputStream和getOutputStream。对于Socket类而言,使用getInputStream方法得到的InputStream是从服务端获取数据,而getOutputStream方法得到的OutputStream是向服务端发送数据。而ServerSocket的getInputStream和getOutputStream方法也类似。InputStream从客户端读取数据,OutputStream向客户端发送数据。 阅读全文
摘要: 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地址。 阅读全文
摘要: 你还在为那慢的像牛一样的模拟器启动而苦恼么?请看刚从某大牛那学来的小技巧 阅读全文
摘要: 在前面的文章曾讨论了HTTP消息头的三个和断点继传有关的字段。一个是请求消息的字段Range,另两个是响应消息字段Accept-Ranges和Content-Range。其中Accept-Ranges用来断定Web服务器是否支持断点继传功能。在这里为了演示如何实现断点继传功能,假设Web服务器支持这个功能;因此,我们只使用Range和Content-Range来完成一个断点继传工具的开发。 阅读全文
摘要: 6月25日,中国电信举行第二次3G终端产业链高峰论坛,这继2月召开首次终端会议刚刚过去4个月。与上次终端会议不同的是,此次规格更高,除了诸多终端公司老总悉数到场外,中 国电信董事长王晓初亲自出席并做了主题演讲。会上信息显示,中国电信的软件商店准备工作月底将结束,不日将推出。 阅读全文
摘要: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 2、在tomcat中redeploy时出现outofmemory的错误. 可以有以下几个方面的原因: 阅读全文
摘要: 本文介绍了HTTP消息的学用头字段的功能和用法,如Host、Connection、Range、Date、Content-Length等,本文的需要使用HTTP模拟器进行测试,该模拟器请从如下地址下载:http://files.cnblogs.com/nokiaguy/HttpSimulator.rar 阅读全文
摘要: EJB3可以通过拦截器对Bean方法进行拦截和覆盖。这有些象AOP中的around。通过AOP的around方法,可以修改被拦截方法的返回值、参数值,甚至可以取消被拦截方法的执行。EJB3的拦截器可以用在无状态Session Bean、有状态Session Bean和消息驱动Bean(MDB)的方法中。实现拦截器的最简单的方法是使用拦截器方法。也就是说,只要在当前的Bean中使用 @AroundInvoke对某个方法进行注释(关于拦截器的类都在javax.interceptor包中),那么这个方法就会变成拦截器方法,该拦截器方法会拦截当前Bean中的所有方法。 阅读全文
摘要: 在讨论HTTP协议的具体请求和响应头字段之前,让我们先来利用以前所学的知识来实现一个HTTP模拟器。所谓HTTP模拟器就是可以在用户输入HTTP的请求消息后,由这个模拟器将HTTP请求发送给相应的服务器,再接收服务器的响应消息。这个HTTP模拟器有几下特点:
1. 可以手工输入HTTP请求,并向服务器发送。
2. 接收服务器的响应消息。
3. 消息头和实体内容分段显示,也就是说,并不是象Telnet等客户端一样将HTTP响
应消息全部显示,而是先显示消息头,然后由用户决定是否显示实体内容。
4. 集中发送请求。这个HTTP模拟器和Telnet不同的是,并不是一开始就连接服务器,而是将域名、端口以及HTTP请求消息都输完后,才连接服务器,并将这些请求发送给服务器。这样做的可以预防服务器提前关闭网络连接的现象。
5. 可以循环做上述的操作。
阅读全文
摘要: 在前面的文章中给出的SessionBean的例子都是同步调用SessionBean方法的,也就是说,只有当方法中的代码都执行完,才能返回到客户端。但在某些情况下,由于SessionBean方法的执行时间比较长,这就需要异步地调用该方法,否则客户端就需要等待比较长的时间。要实现异步调用,就需要使用本要讲的消息驱动Bean。消息驱动Bean的基本原理是客户端向消息服务器发送一条消息后,消息服务器会将该消息保存在消息队列中。在这时消息服务器中的某个消费者(读取并处理消息的对象)会读取该消息,并进行处理。发送消息的客户端被称为消息生产者。 阅读全文
摘要: 当用户在浏览器中输入一个基于HTTP协议的URL时(以http://开头的URL),就相当于通知器按着这个URL组织生成一个HTTP请求,并交过个请求发送到服务器;同时,等待服务器的响应。无论是请求还是响应,都统称为HTTP消息。 阅读全文
摘要: 坐亦禅,行亦禅,一花一世界,一叶一如来,春来花自青,秋至叶飘零,无穷般若心自在,语默动静体自然。
阅读全文
摘要: HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和 Web服务器之间的数据交换。我们在使用IE或Firefox浏览网页或下载Web资源时,通过在地址栏中输入http://host:port /path,开头的4个字母http就相当于通知浏览器使用HTTP协议来和host所确定的服务器进行通讯。 阅读全文
摘要: 在前面的文章中使用的都是容器管制的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方方关闭这两个对象。 阅读全文
摘要: 在EJB3中可以使用EntityManager对象的createQuery方法来执行JPQL(类似于Hibernate中的HQL),这非常简单。但使用createQuery方法处理JPQL时,在每次执行JPQL的过程中系统都需要对JPQL进行分析,这在一定程度上降低了系统运行时的性能。为此,EJB3提供了命名查询的概念。命名查询有些类型于数据库中的存储过程,在提交的过程中就已经被编译处理了。因此,在执行效率上要高一些。 阅读全文
摘要: 本文介绍了如何使用连接策略(JOINED Strategy)对物理表进行划分。子表与父表共享主键。 阅读全文
摘要: Sun Microsystems公司(NASDAQ: JAVA)今天宣布第七届年度“Duke选择大奖”(Duke’s Choice Awards)获奖者名单。“Duke选择大奖”计划旨在表彰过去一年里全球个人或公司开发的、最具影响力的Java技术应用。这些获奖者是由Sun公司副总裁兼Sun研究院院士James Gosling和一个由Sun公司Java技术专家组成的小组评选确定的。如需有关获奖者及其应用的详尽信息,请登录:http://www.java.com/en/dukeschoice/。 阅读全文
摘要: 如果以前使用过EJB1.x或EJB2.x的实体Bean,会发现无法通过继承实体Bean将单个表分成多表。而在EJB3中,我们可以很容易地使用@Inheritance和@DiscriminatorColumn注释来实现这个功能。 阅读全文
摘要: 本文介绍了如何使用@ManyToMany注释实现多对多的映射关系。在EJB3中多对多的映射关系需要使用一个连接表来描述。 阅读全文
摘要: 本文介绍了如使用@OneToMany注释来实现一对多的映射,以及使用@JoinTable注释指定连接表来实现一对多的单向映射。 阅读全文
摘要: 一对一映射是很常用的。在一般情况下,一个主表通过外键和从表形成一对一的关系。在EJB3中使用@OneToOne注释来映射。一对一关系除了使用外键进行关联外,也可以采用共享主键的方式连接两个表。 阅读全文
摘要: 在Socket 类中有很多方法在声明时使用throws抛出了一些异常,这些异常都是IOException的子类。在Socket类的方法中抛出最多的就是 SocketException,其余还有七个异常可供Socket类的方法抛出。这些异常的继承关系如图1所示。其中灰色背景框所描述的例外就是 Socket类的方法可能抛出的异常。 阅读全文
摘要: 在Java类中,getter和setter方法占了很大的比重。由于Java中没有定义属性的关键字;因此,getter和setter方法用于获得和设置Java类的属性值;如getName和setName方法用于设置name属性的值。如果某个属性只有getter方法,那这个属性是只读的;如果只有setter方法,那么这个属性是只写的。在Socket类中也有很多这样的属性来获得和Socket相关的信息,以及对Socket对象的状态进行设置。 阅读全文
摘要: EJB3容器通过EntityManager对象管理实体Bean,该类最主要的功能就是在记录和JavaBean之间进行互相映射。例如,我们从数据库中查出一条记录,这条记录有field1和field2两个字段,假设有一个JavaBean,也包含了field1和field2属性。那么 EntityManager可以将这条记录中的值映射到JavaBean的field1和field2属性中。也就是说,在数据库中的一条记录就对应于一个JavaBean的对象实例。下面将给出一个简单的例子来演示如何来实现一个应用实体Bean的程序。在这个例子中使用无状态的session bean通过EntityManager对象从数据表中查找一条记录,将该记录映射成实体Bean的对象实例,最后通过session bean的方法返回该记录的某个字段值。 阅读全文
摘要: 本文介绍了Base64编码的基本原理,并给出了一个简单的Base64编码的实现 阅读全文
摘要: 在Java类中,getter和setter方法占了很大的比重。由于Java中没有定义属性的关键字;因此,getter和setter方法用于获得和设置Java类的属性值;如getName和setName方法用于设置name属性的值。如果某个属性只有getter方法,那这个属性是只读的;如果只有setter方法,那么这个属性是只写的。在Socket类中也有很多这样的属性来获得和Socket相关的信息,以及对Socket对象的状态进行设置。 阅读全文
摘要: Session Bean除了可以使用注释来发布外,也可以使用相应的配置文件来发布。在这种情况下,就不需要在接口和Session Bean中使用注释了。在JBoss中需要两个文件对Session bean进行配置。这两个文件是ejb-jar.xml和jboss.xml。这两个文件应该META-INF目录中,该目录应该放在jar文件的根目录。ejb-jar.xml文件负责配置session bean, 阅读全文
摘要: 有时需要在Session Bean中初始化和释放一些资源。这些工作应该在SessionBean的@PostConstruct和@PreDestroy方法中进行。其中用 @PostConstruct注释的方法在SessionBean的构造方法调用之后以后EJB容器在处理完一些其他工作后调用。用 @PreDestroy注释的方法在SessionBean的对象实例被EJB容器销毁之前调用。 阅读全文
摘要: 客户端套接字的超时(timeout)就是指在客户端通过Socket和服务器进行通讯的过程中,由于网络延迟,网络阻塞等原因,造成服务器并未及时响应客户端的一种现象。在一段时间后,客户端由于未收到服务端的响应而抛出一个超时错误; 其中客户端所等待的时间就是超时时间。由于生产超时错误的一端都是被动端;也就是说,这一端是在接收数据,而不是发送数据。对于客户端Socket来说,只有两个地方是在接收数据;一个是在连接服务器时;另一个是在连接服务器成功后,接收服务器发过来的数据时。因此,客户端超时也分为两种类型:连接超时和读取数据超时。 阅读全文
摘要: 发布Java程序(桌面程序)最直接的方法就是将jar文件打包交给用户。不过有时jar文件很多,也很大。为了方便,sun提供了另外一种方式来通过网络发布Java程序。这就是jnlp文件。可能很多读者曾经下载过很多jnlp文件,运行后会自动从指定的网站下载相应的文件。 阅读全文
摘要: 在使用Socket来连接服务器时最简单的方式就是直接使用IP和端口,但Socket类中的connect方法并未提供这种方式,而是使用 SocketAddress类来向connect方法传递服务器的IP和端口。虽然这种方式从表面上看要麻烦一些,但它会给我们带来另外一个好处,那就是网络地址的重用。 阅读全文
摘要: 世界上最富有的人,比尔盖茨,他是个程序员,懒的读书,他就退学了。他又懒的记那些复杂的dos命令,于是,他就编了个图形的界面程序,叫什么来着?我忘了,懒的记这些东西... 阅读全文
摘要: RPM是Redhat Package Manage的缩写。透过RPM的管理,使用者可以把Source Code包装成一种Source和Binary的档案形式。利用它,我们可以用Binary的档案进行安装,用 Source 的档案形式重新整理包装。许多Linux爱好者对安装RPM包比较熟悉,但对如何在Linux下制作RPM包不甚了解,因此,我将通过实例,讲解如何在Linux下制作RPM包。 阅读全文
摘要: 在上一篇文章中我们讨论了Socket类的基本用法,并给出的例子中使用Socket类连接服务器时使用了一种最简单的连接方式,也就是通过IP和端口号来连接服务器。而为了使连接服务器的方式更灵活,Socket类不仅可以通过自身的构造方法连接服务器,而且也可以通过connect方法来连接数据库。 阅读全文
摘要: 一艘没有航行目标的船,任何方向的风都是逆风。 阅读全文
摘要: 有时客户端程序(如JSP、Servlet)会和EJB组件运行在同一个JVM上,如在同一个J2EE服务器(JBoss、Weblogic等)中运行。这时就没必要再通过远程(remote)接口访问Session Bean了,因为客户端和session bean都在同一个jvm上,只需要通过本地接口(local)访问即可。就象直接访问本地类一样(当然,不能直接访问EJB类,需要使用jndi和 local接口来获得本地接口对象。当然,也可以通过remote接口来访问ejb,不过这样会有一些性能损失。就象在同一台机器上还通过socket进行访问一样,很多性能都损耗在网络上了。 阅读全文
摘要: 网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类。通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据。在本文及后面的数篇文章中将详细讨论Socket类的使用,内容包括Socket类基础、各式各样的连接方式、get和set方法、连接过程中的超时以及关闭网络连接等。 阅读全文
摘要: 编写有状态的(Stateful)的Session Bean也非常简单,只需要将无状态注释(@Stateless)改成有状态注释(@Stateful)即可。如果使用Stateful Sessionbean,客户端在使用同一个SessionBean对象实例时可以保存状态,也就是说,在多次引用该对象时实际上在服务端是使用的同一个 Sessionbean的对象实例,而无状态sessionbean使用了不同的sessionbean对象实例,因此,是无法保存状态的。 阅读全文
摘要: 在J2SE5.0中的InetAddress类中增加了一个isReachable方法。可以使用这个方法来探测主机是否可以连通。 阅读全文
摘要: 从JDK1.4开始,Java提供了一个NetworkInterface类。这个类可以得到本机所有的物理网络接口和虚拟机等软件利用本机的物理网络接口创建的逻辑网络接口的信息。 阅读全文
摘要: 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开发模式有更透彻地理解和认识。 阅读全文
摘要: 为了区分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地址。 阅读全文
摘要: 近日,《商业周刊》公布了2009年最有前途的科技初创公司及青年创业者名单,这些企业创始人年龄都在30岁及以下。商业周刊表示,从这些创业公司来看,创新依然存在并发展良好。以下为其详细名单,包括入选初创的业务描述以及他们面对经济衰退的经验: 阅读全文
摘要: 本文中将编写一个简单的无状态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 阅读全文
摘要: Eclipse各种插件的资源链接 阅读全文
摘要: 最近测试fedora10,发现fedora竟然无法使用root用户进行登录,就算root的密码输入正确也不行。虽然大正常的工作中尽尽量避免使用 root用户进行登录。但在其他情况,如学习、完成个人的工作等,以root用户登录还是很方便的(如果用其他用户登录会有很多限制)。 阅读全文
摘要: IP地址分为普通地址和特殊地址。在前面的文章中所使用的大多数都是普通的IP地址,在本文中将介绍如何利用InetAddress类提供的十个方法来确定一个IP地址是否是一个特殊的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类型。 阅读全文
摘要: getHotAddress方法用来得到主机的IP地址,这个IP地址可能是IPv4的地址,也可能是IPv6的地址。getHostAddress方法的定义是public String getHostAddress()无论InetAddress对象是使用哪种方式创建的,getHostAddress方法都不会访问DNS服务器。如果想访问使用IPv6地址的远程主机,需要在操作系统上安装IPv6协议。 阅读全文
摘要: 大约2个月前,在Herb Sutter的网站上看到了一个链接,内容是Channel9网站对他和其他三名微软架构师就“编程语言发展”进行的采访,架构师中有Anders Hejlsberg。一看之下,就被这个视频迷住了。这些大师站在历史的高度,通观全局又不失细节,高屋建瓴,有点有面地谈到了多个语言的发展和语言间的相互关系。看完之后,感到视野得到了不小地开拓,对于语言、框架、工具的关系;对于静态(动态)类型、函数(命令)型编程;对于“可组合性”、“并发性”、“抽象层次”都有了更多的认识。 阅读全文
摘要: IBM WebSphere AS基于Apache Geronimo的社区免费版, 就像狼和狈终于走到一起,很可能要破坏应用服务器市场的平衡。IBM WebSphere Application Server的品牌,Apache Geronimo以GBean架构的开源大扫荡,免费且比JBoss的LGPL宽松得多的Apache 2.0 License, 让安全第一的商业客户,喜欢摆弄技术的程序员和只想省钱的老板可以在上面达成某种妥协。
阅读全文
摘要: 运行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文件。 阅读全文
摘要: getCanonicalHostName方法和getHostName方法一样,也是得到远程主机的域名。但它们有一个区别。getCanonicalHostName得到的是主机名,而getHostName得到的主机别名。在访问某些域名时,getCanonicalHostName方法和getHostName方法的返回值是一样的,这和DNS服务器如何解释主机名和主机别名以及它们的设置有关。如通过www.ibm.com创建InetAddress对象后,使用getCanonicalHostName方法和getHostName方法返回的结果都是www.ibm.com(有时直接返回IP地址,这可能和IBM的DNS服务器的处理机制有关)。如果DNS不允许通过IP地址得到域名,那么这两个方法就会返回IP地址来代替域名。
阅读全文
摘要: getHostName方法可以得到远程主机的域名,也可以得到本机名。getHostName方法的定义是public String getHostName(),匀样可以使用三种方法创建InetAddress对象,这三种方法为:1.使用getLocalHost方法创建InetAddress对象。2.使用域名创建InetAddress对象。3. 使用IP地址创建InetAddress对象
阅读全文
摘要: 博客搜索,是搜索引擎针对博客内容所提供的搜索服务。随着博客的兴起,各大搜索引擎纷纷推出了博客搜索功能。如果你的博客能被抓取到各大搜索引擎博客搜索的索引库中的话,那将会给你的博客带来更多的访问量。那么首先你要做的就是让搜索引擎收录你的博客。除腾讯的搜搜和微软的live搜索,国内的各大搜索引擎都先后推出了博客搜索功能。也可要参照另一篇《提升个人空间流量方法,搜索引擎提交大集合》http://www.7jbl.cn/post/12.html 阅读全文
摘要: Axis2是目前比较流行的WebService引擎。WebService被应用在很多不同的场景。例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。WebService还经常被使用在SOA中,用于 SOA各个部分交换数据。本课程重点讲解了Axis2的核心功能,并提供了三个项目以使学员理解并掌握如何将Axis2应用于不同的场景。 阅读全文
摘要: 在通过DNS查找域名的过程中,可能会经过多台中间DNS服务器才能找到指定的域名,因此,在DNS服务器上查找域名是非常昂贵的操作。在Java中为了缓解这个问题,提供了DNS缓存。当InetAddress类第一次使用某个域名(如www.csdn.net)创建InetAddress对象后,JVM就会将这个域名和它从DNS上获得的信息(如IP地址)都保存在DNS缓存中。当下一次InetAddress类再使用这个域名时,就直接从DNS缓存里获得所需的信息,而无需再访问DNS服务器。 阅读全文
摘要: 从1995年成立到今年,IBM软件集团已经走过了10个年头。从1995年起步至今,IBM软件集团已经成为全球第二大软件实体和全球领先的中间件供应商。2004年,其收入高达151亿美元,比2003年的增长8亿美元。目前,IBM软件占IBM公司总利润超过三分之一。 阅读全文
摘要: 在《创建InetAddress对象的四个静态方法》一文中通过getAllByName得到了www.csdn.net对应的四个IP地址。从理论上说,在IE(或其他的Web浏览器,如Firefox)的地址栏中输入这四个IP地址中的任何一个,都可能访问www.csdn.net。如输入http://211.100.26.124。但IE却返回了一个错误信息。在输入另外三个IP后,都会得到同样的错误信息。 阅读全文
摘要: InetAddress类是Java中用于描述IP地址的类。它在java.net包中。在Java中分别用Inet4Address和Inet6Address类来描述IPv4和IPv6的地址。这两个类都是InetAddress的子类。由于InetAddress没有public的构造方法,因此,要想创建InetAddress对象,必须得依靠它的四个静态方法。InetAddress可以通过getLocalHost方法得到本机的InetAddress对象,也可以通过getByName、getAllByName和getByAddress得到远程主机的InetAddress对象。 阅读全文
摘要: 在窗口右上方的工具栏按钮设置上,IE8新增了一个“安全”下拉菜单,增强了页面浏览的安全性考量,诸如删除浏览历史记录、InPrivate浏览、网页隐私策略等功能按钮。 阅读全文
摘要: 所有连入Internet的终端设备(包括计算机、PDA、打印机以及其他的电子设备)都有一个唯一的索引,这个索引被称为IP地址。现在Internet上的IP地址大多由四个字节组成,这种IP地址叫做IPv4。除了这种由四个字节组成的IP,在Internet上还存在一种IP,这种IP由16个字节组成,叫做IPv6。IPv4和IPv6后面的数字是Internet协议(Internet Protocol,IP)的版本号。
阅读全文
摘要: 前天刚装了个Qt4for windows,发现安装的时候MySQL等数据库插件都没有安装,像Qt X11版一样,都需要自己安装这些插件。在Qt的安装目录C:\Qt4.1.2\下,有个src目录,进入plugins\sqldrivers\mysql,可以看到两个文件,main.cpp和mysql.pro,很显然要用qmake来完成编译、生成目标。编译前,首先保证依赖的MySQL头文件和库文件正确。首先MySQL安装目录下的include中的所有文件拷到qmake时能找到的目录下,接着从 lib/opt目录下拷出libmysql.a,其实lib/opt下只有libmysql.lib和libmysql.dll,从网上搜了一下找到一个方法从libmysql.dll生成libmysql.a: 阅读全文
摘要: 我们可以通过synchronized块来同步特定的静态或非静态方法。要想实现这种需求必须为这些特性的方法定义一个类变量,然后将这些方法的代码用synchronized块括起来,并将这个类变量作为参数传入synchronized块。在使用synchronized块时应注意,synchronized块只能使用对象作为它的参数。如果是简单类型的变量(如int、char、boolean等),不能使用synchronized来同步。 阅读全文
摘要: synchronized关键字有两种用法。第一种就是在《使用Synchronized关键字同步类方法》一文中所介绍的直接用在方法的定义中。另外一种就是synchronized块。我们不仅可以通过synchronized块来同步一个对象变量。也可以使用synchronized块来同步类中的静态方法和非静态方法。 阅读全文
摘要: 要想解决“脏数据”的问题,最简单的方法就是使用synchronized关键字来使run方法同步。虽然可以使用synchronized来定义方法,但synchronized并不属于方法定义的一部分,因此,synchronized关键字不能被继承。如果在父类中的某个方法使用了synchronized关键字,而在子类中覆盖了这个方法,在子类中的这个方法默认情况下并不是同步的,而必须显式地在子类的这个方法中加上synchronized关键字才可以。当然,还可以在子类方法中调用父类中相应的方法,这样虽然子类中的方法不是同步的,但子类调用了父类的同步方法,因此,子类的方法也就相当于同步了。 阅读全文
摘要: Java中的变量分为两类:局部变量和类变量。局部变量是指在方法内定义的变量,如在run方法中定义的变量。对于这些变量来说,并不存在线程之间共享的问题。因此,它们不需要进行数据同步。类变量是在类中定义的变量,作用域是整个类。这类变量可以被多个线程共享。因此,我们需要对这类变量进行数据同步。数据同步就是指在同一时间,只能由一个线程来访问被同步的类变量,当前线程访问完这些变量后,其他线程才能继续访问。这里说的访问是指有写操作的访问,如果所有访问类变量的线程都是读操作,一般是不需要数据同步的。 阅读全文
摘要: 从线程中返回数据和向线程传递数据类似。也可以通过类成员以及回调函数来返回数据。但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪。 阅读全文
摘要: 包括DB2 Family Fundamentals(700 )、DB2 UDB V8.1 for Linux, UNIX, and Windows Database Administration(701)、DB2 UDB V8.1 Family Application Development(703)、DB2 UDB V8.1 for Linux, UNIX and Windows Advanced Database Administration(704)的考试大纲 阅读全文
摘要: 在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。本文就以上原因介绍了几种用于向线程传递数据的方法,在下一篇文章中将介绍从线程中返回数据的方法。 阅读全文
摘要: 牛新庄博士,研究方向为数据仓库和数据挖掘。是IBM官方资深培训讲师(培训DB2,AIX,MQ,WebSphere和CICS)。2002年获IBM 杰出软件专家奖,2006年获“首届中国杰出数据库工程师奖”、“2006年IT168技术卓越奖”。是中信银行、山东农信、广东农信等公司资深技术顾问,中国建设银行总行特聘资深技术专家。拥有OCP, AIX,DB2,HP-UX,MQ,CICS和WebSphere等二十多项国际认证。著有《Oracle数据库开发讲座—— Oracle9i Jdeveloper与J2EE实务应用》、《DB2应用开发实战指导》、《循序渐进DB2-系统管理、运行维护与应用案例》、《深入解析DB2-高级管理、内部体系结构与诊断案例》和《DB2性能调整与优化》等书。 阅读全文
摘要: volatile关键字相信了解Java多线程的读者都很清楚它的作用。volatile关键字用于声明简单类型变量,如int、float、boolean等数据类型。如果这些简单数据类型声明为volatile,对它们的操作就会变成原子级别的。不过在使用volatile关键字时也要慎重,并不是只要简单类型变量使用volatile修饰,对这个变量的所有操作都是原来操作,当变量的值由自身的上一个决定时,如n=n+1、n++等,volatile关键字将失效,只有当变量的值和自身上一个值无关时对该变量的操作才是原子级别的,如n = m + 1,这个就是原级别的。所以在使用volatile关键时一定要谨慎,如果自己没有把握,可以使用synchronized来代替volatile。 阅读全文
摘要: 在上面的例子中多次使用到了Thread类的join方法。我想大家可能已经猜出来join方法的功能是什么了。对,join方法的功能就是使异步执行的线程变成同步执行。也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这个线程一定会执行完。而使用join方法后,直到这个线程退出,程序才会往下执行。 阅读全文
摘要: 与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。 阅读全文
摘要: 实现Runnable接口的类必须使用Thread类的实例才能创建线程。通过Runnable接口创建线程分为两步:1. 将实现Runnable接口的类实例化。2. 建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法。最后通过Thread类的start方法建立线程。 阅读全文
摘要: 一个普通的Java类只要从Thread类继承,就可以成为一个线程类。并可通过Thread类的start方法来执行线程代码。虽然Thread类的子类可以直接实例化,但在子类中必须要覆盖Thread类的run方法才能真正运行线程的代码。 阅读全文
摘要: 线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点。因此,在操作系统中运行的任何程序都至少有一个主线程。 阅读全文
摘要: 不管你爱不爱,现在是科幻片的时代。在经济形势如此不景气的今天,我们需要更多帮助我们超脱现实的来,呃,姑且说逃避现实好了。不过话说回来,有谁不爱看那些制作精良、情节扣人心弦的科幻电影呢?那种窥探未来世界的欲望以及看到更美好明天的希望总是拖拽着我们一次次的坐在大银幕之前瞠目结舌着让爆米花从张大的嘴里掉出来。特别是对于年轻的男性影迷来说,那些巨大的机器人、可飞行的滑板、宇宙飞船或是任何形式的未来派机械的吸引力并不亚于任何安妮·海瑟薇那样的九头身美女。我们幻想乘坐宇宙飞船或时间机器到达不论时间还是空间都极遥远的异域,或者去冒险,或者去寻找希望。所以也就无怪乎从1902年首部科幻影片——乔治斯·梅里耶(Georges Melies)的《月球旅行记》(Trip to the Moon)——问世以来,科幻题材的电影一直风行到现在。
阅读全文
摘要: 要想使用Struts,至少要依靠两个配置文件:web.xml和struts-config.xml。其中web.xml用来安装Struts框架。而struts-config.xml用来配置在Struts框架中要使用的资源。如Formbean、Action、插件等。如果使用了某些插件,如Validator、Tiles等。还可能需要其他的配置文件。虽然在前面的文章中已多次使用了这两个配置文件,但都是分散介绍的。因此,在本文将对这些配置进行一下总结和回顾,以使读者对Struts的配置有一个更清醒的认识。 阅读全文
摘要: Tiles提供的模板机制可以最大限度地避免重复编写代码。实际上,Tiles模板就是的JSP页面,只是在这种JSP页面中使用Tiles标签代替确定不了的内容(相当于占位符),也就是需要在开发人员使用模板时来确定的内容。除了这一点,Tiles模板页面和普通的JSP页面完全相同。 阅读全文
摘要: 在JSP标签文件中使用Struts 2标签会带来一个问题。由于高版本的Struts 2的标签属性值默认情况下不能为EL或JSP表达式,当然,可以通过修改Struts 2默认设置来解决这个问题,但并不建议这么做。除此之外,可以通过 标签将参数值保存在ValueStack对象中,在JSP标签文件中通过Ognl表达式读取。 阅读全文
摘要: Tiles框架是Struts的一个插件。我们可以使用Tiles框架来进行页面布局设计。Tiles框架提供了一种模板机制,它可以将网页内容和布局分离,并允许先创建模板,然后在页面中再插入具体的内容。 阅读全文
摘要: 与LookupDispatchAction、DispatchAction不同,MappingDispatchAction类并不通过请求参数来指定动作,而是将一个Struts动作对应于一个Action方法。下面的例子演示了如何使用MappingDispatchAction类来将Struts 动作和Action方法相对应。 阅读全文
摘要: 虽然LookupDispatchAction类可以很好地处理拥有多个提交按钮的Form,但是必须要和属性文件相关联,而且还得在getKeyMethodMap方法中进行key和Action方法的映射,使用起来十分不方便。从Struts1.2.9开始,加入了另一个用于处理多个提交动作的EventDispatchAction类。这个类也是DispatchAction的子类,它在使用上要比LookupDispatchAction类容易的多。EventDispatchAction类的基本原理是通过 元素的parameter属性指定多个动作,中间用逗号(,)分隔。每个动作实际上就是标签的property属性值。这样EventDispatchAction类就可以根据每个标签的属性值来确定用户按的是哪个提交按钮了。 阅读全文
摘要: 有时在HTML form中需要提供多个提交按钮,这时LookupDispatchAction类就派上用场了。LookupDispatchAction是DispatchAction的子类,用于处理客户端代码中有一个Form含有多个提交按钮的情况。 阅读全文
摘要: 有时我们需要将聚合结果进行旋转,也就是说将要聚合的字段值作为字段名,将聚合结果作为记录。这可以使用传统的方法来解决,但在SQL Server2005提供了pivot函数可以更容易地解决这个问题。同时,还可以使用unpivot函数进行逆项的操作。 阅读全文
摘要: 在使用Struts动作时,每一个Action都需要编写一个类,并且要在struts-config.xml进行配置。这对于一个拥有很多Action的Web程序来说,工作量是非常大的。为此,Struts提供了DispatchAction类,这个类允许将一个Action作为一个方法来调用。在Web浏览器中通过请求参数来指定要调用的动作。 阅读全文
摘要: 上一篇文章提到了电子书营销的一些简要概括。今天早上打开CSDN,看到网友newton0214提出的问题如下。“你这好像有个前提:你发布的电子书能有“开站几个月、发布三十本电子书后就获得了几十万的下载率”的能力,不是任何资料都能有这样的效果的。就好象csdn上的资料,就算是同样热门的内容,不是所有资料都会有很高的下载率的。”
阅读全文
摘要: 在本文介绍了如何使用IncludeAction和ForwardAction类包含和转入Web资源。这两个类与 和标签的功能相同,但Struts建议使用这两个类来实现包含和转入web资源的功能。 阅读全文
摘要: 我们曾经在《Struts1.x系列教程(13):国际化》一文中讲过如何通过编程的方式实现多语言的Web页面。在本文中,我们会介绍另外一种实现多语言Web页面的方法。这种方式与《Struts1.x系列教程(13):国际化》一文中所介绍的方法的区别就是无需编写一行代码就可以完成多语言的设置。 阅读全文
摘要: 在写这一部分之前,首先感谢我的blog的所有读者对前面SEO文章的支持。写完那篇文章后,有很多朋友加我的MSN,询问相关SEO的技术和经验问题。因此,在这个系列的文章结束后,我会专门写一些关于SEO的文章,也希望大家能继续支持。不过现在,还是请允许我把这个“花钱最少的推广方式”写完吧!
阅读全文
摘要: 除了标准的org.apache.struts.action.Action类外,在Struts中还提供了另外7个Action类来完成特殊的工作。本文及后面的文章中将介绍这些Action类的用法。 阅读全文
摘要: 在Axis2中提供了一个Axis2模块(soapmonitor),该模块实现了与《WebService大讲堂之Axis2(9):编写Axis2模块(Module)》中实现的logging模块相同的功能,所不同的是,logging模块直接将SOAP请求与响应消息输出到Tomcat控制台中,而soapmonitor模块利用applet直接在页面中输出SOAP请求和响应消息。 阅读全文
摘要: 虽然ActionForm功能强大,但有些时候使用起来有些麻烦。如每建立一个用户录入界面(JSP页面),就得建立一个ActionForm子类来和这个页面对应。当然,我们可以采用嵌套属性从一定程度上弥补这个问题。但是在建立新的用户录入界面时,仍不可避免地要建立新的ActionForm子类。在Struts1.2.6及以后的Struts版本中提供了一种动态Form的技术。使得不用再建立新的ActionForm就可以封装用户提交的数据。实际上,这种技术将定义ActionForm子类的工作变成了编写XML文件的工作。 阅读全文
摘要: 对于一个面向全球的Web应用程序,按着不同国家的要求显示相关信息(称为国际化)显得尤为重要。国际化的工作非常复杂和繁琐。因为要翻译很多Web界面,信息格式等。然而,Struts为我们提供了完成国际化工作的更容易的方式。在本文将介绍如何使用Struts来简化国际化的工作。 阅读全文
摘要: 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目录中。 阅读全文
摘要: 本文介绍了Struts 1.x Validator验证框架的内置标准验证。 阅读全文
摘要: 在 《Struts1.x系列教程(10):Validator验证框架入门》一文中给出的例子中的name、age和email都是简单的属性,如果是嵌套的属性(也就是一个属性的数据类型是另外一个带有属性的类),可以使用圆点(.)符号来访问。如我们可以通过设置 元素的property属性值为“employee.salary”来验证employee属性中的salary属性。 阅读全文
摘要: 在前面几篇文章中都是使用同步方式来调用WebService。也就是说,如果被调用的WebService方法长时间不返回,客户端将一直被阻塞,直到该方法返回为止。使用同步方法来调用WebService虽然很直观,但当WebService方法由于各种原因需要很长时间才能返回的话,就会使客户端程序一直处于等待状态,这样用户是无法忍受的。当然,我们很容易就可以想到解决问题的方法,这就是多线程。解决问题的基本方法是将访问WebService的任务交由一个或多个线程来完成,而主线程并不负责访问WebService。这样即使被访问的WebService方法长时间不返回,客户端仍然可以做其他的工作。我们可以管这种通过多线程访问WebService的方式称为异步访问。虽然直接使用多线程可以很好地解决这个问题,但比较麻烦。幸好Axis2的客户端提供了异步访问WebService的功能。 阅读全文
摘要: 在现今的Web应用中经常使用Spring框架来装载JavaBean。如果要想将某些在Spring中装配的JavaBean发布成WebService,使用Axis2的Spring感知功能是非常容易做到的。在本文的例子中,除了 \webapps\axis2目录及该目录中的相关库外,还需要Spring框架中的spring.jar文件,将该文件复制到\webapps\axis2\WEB-INF\lib目录中。 阅读全文
摘要: Validator框架是一个Struts插件,最初由David Winterfeldt设计并实现。Validator框架从Struts 0.5时代就可以使用,但那时Validator框架只是被捐助的一个jar包。Apache组织为了使开发人员更方便地使用Validator框架,决定从Struts1.1开始,将Validator框架作为Struts的一部分同Struts一起发布。 阅读全文
摘要: 众所周知,Strut 2的Action类通过属性可以获得所有相关的值,如请求参数、Action配置参数、向其他Action传递属性值(通过chain结果)等等。要获得这些参数值,我们要做的唯一一件事就是在Action类中声明与参数同名的属性,在Struts 2调用Action类的Action方法(默认是execute方法)之前,就会为相应的Action属性赋值。这一切主要是依靠ValueStack对象实现的。 阅读全文
摘要: 记得2005年的时候安装的还是redhat9,时光如水,自己却在转了一圈以后回到了原地,很多时候确实需要执着。说远了,估计还是有很多人跟我一样郁闷fedora的硬盘安装的,google上的很多不一定可以在自己本机安装成功。我的这个在我机器上ok了但不一定所有的都可以按照我这样,下面来详细说明:下载Fedora-10-x86_64-DVD.iso 。google一下,到fedora项目网站可以下载,按照自己机器的需要选择。下载grub4dos-0.4.3。同样,google一下,很容易得到。
阅读全文
摘要: 本文为银河系列原创技术文章,主要包括Struts 2入门系列教程、Struts1.x入门与提高系列教程、WebService大讲堂之Axis2系列教程、Weblogic10+EJB3入门教程、JBoss5 + eclipse + EJB3开发指南、 AJAX系列教程、SQL Server2005杂谈系列教程、算法系列教程。这些文章均为笔者经验总结,有的系列文章还未完成,待不断完善中... 阅读全文
摘要: 在本文主要介绍如何来开发一个Stateless Session Bean,并在未安装WebLogic10的机器上访问Session Bean。开发EJB3 Stateless Session Bean要比开发EJB2 Stateless Session Bean容易得多,只需要几个注释就可以搞定。 阅读全文
摘要: 从《Struts1.x系列教程(8):上传单个文件》中给出的例子可以看出,在Struts1.x中上传单个文件是非常简单的,但在实际应用中,上传文件的个数一般是不确定的,如在网络硬盘中,用户可以根据自己的需要上传任意多个文件(当然,网络硬盘一次上传文件的数目一般也是有上限的,如50个,但用户可以只上传了3个文件,因此,在这种情况下,上传文件的个数也是不确定的)。如果读者用过“网易网盘”或其他类似的服务程序,它们的上传文件功能基本上都是根据用户选择的文件多少来添加要上传的文件(并不是一开始就在界面上放很多<input type=’file’>元素来让用户输入上传文件名)。为了让读者也可以使用Struts来实现这个功能,在本节将给出一个用Struts实现的类似“网易网盘”的上传任意多个文件的Web程序。 阅读全文
摘要: 勇气 + 自信 + 毅力 + 胸怀 = success 阅读全文
摘要: applet运行在沙盒中,因此,对于不了解签名的开发人员,使用applet来访问本地资源被认为是“不可能完成的任务”,然而,我们可以使用keytool、jarsigner命令对jar文件进行签名,这样applet就可以在客户端随心所欲了,当然,这和ocx控件一样,也需要客户端进行确认。 阅读全文
摘要: 经笔者测试,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。 阅读全文
摘要: 本文介绍了SQL Server2005提供的四个排名函数(row_number、rank、dense_rank和ntile),其中row_number函数最常用,可以使用这个函数实现web分页功能。rank和dense_rank函数可以处理字段重复值问题。而ntile函数用于对记录进行分组处理。 阅读全文
摘要: 在《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管理功能。 阅读全文
摘要: 在Web程序中的上传文件的功能一般会使用<input type=file.../>标签在客户端显示输入要上传的文件名的用户接口。如果读者使用过JSP/Servlet来处理客户端上传的文件就会知道,实现这个功能并不是很容易。而在Struts中为我们提供了一种机制,可以非常方便地将客户端上传的文件保存在服务端。在Struts Html标签库中提供了一个<html:file>标签,可以和FormFile类型的属性一起使用。通过这个属性返回的FormFile对象,就可以很方便地获得上传文件的InputStream对象,并做进一步地处理。 阅读全文
摘要: CTE不仅可以简化嵌套SQL语句,还可以方便地实现递归调用。如要查询一个部门下面的所有子部门,或某个省下面的所有市和行政区,只需要一个CTE就可以查出来。当然,如果不使用CTE,实现这个是比较麻烦的,如果只想用SQL实现,需要使用到游标等技术。 阅读全文
摘要: 在SQL Server中可以直接在SQL语句中嵌套其他的SQL语句,但当嵌套层次太多时,会使SQL语句难以理解和维护,而如果使用表变量(临时表)又会增加I/O开销。为了解决这个问题,在SQL Server2005中提供了CTE。使用CTE可以使被嵌套的SQL模块化,从而大大增加了SQL语句的可读性,同时又不会增加太多的I/O开锁。 阅读全文
摘要: goto语句往往被认为是跳出多层循环最简单的方法,但在Java中虽然保留了goto关键字,但却不能使用。不过Java提供了另外一种与goto语句相似的方法来解决这个问题,这就是break n和continue n语句。 阅读全文
摘要: 本文阐述了wxWidgets的由来,以及从wxWidgets的特点出发,说明了选择wxWidgets给我们带来的好处,并且通过一个典型的例子讨论了如何在C++中使用wxWidgets开发跨平台的软件。 阅读全文
摘要: 使用Axis2来管理WebService的会话(Session)状态基本上对于开发人员是透明的。在WebService类需要使用org.apache.axis2.context.MessageContext和org.apache.axis2.context.ServiceContext类来保存与获得保存在服务端的状态信息,这有些象使用HttpSession接口的getAttribute和setAttribute方法获得与设置Session域属性。 阅读全文
摘要: wxWidgets是一个跨平台的C++开发库,与MFC类似。不过配置起来比较麻烦,如果在Linux下使用Eclipse来开发基于 wxWidgets的应用程序需要进行一系列的配置,如设置include路径、library路径等。但我们可以使用一个简单的方法来快速配置 wxWidgets。 阅读全文
摘要: 最近研究wxWidgets,这是一个跨平台的C++库,在linux下编译成动态库(*.so),如果将编译后的可执行文件发布到其他机器的linux 系统中,需要带上.so文件,这就需要设置一下这些动态库的路径,一般可以使用环境变量LD_LIBRARY_PATH来设置, 阅读全文
摘要: 在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[]了。 阅读全文
摘要: 在本文将介绍一下如何使用services.xml文件将带包的POJO类发布成WebService,以及如何发布多个WebService。 阅读全文
摘要: 今天想使用一下SQL Server 2005,启动SQL Server Management Studio后,发现连不了数据库了,看了下SQL Server的服务,竟然是停止状态,启动它,但无法启动,但看日志后,发现了这样的志信息:“C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf" 已压缩,但未驻留在只读数据库或文件组中。必须将此文件解压缩。” 阅读全文
摘要: Struts Logic标签库包含了如下三类标签:循环标签:iterate标签。用于枚举数组、集合类型对象中的元素; 条件处理标签:用于是否相等、比较大小等判断。这类标签有empty、equal 、greaterEqual、greaterThan、lessEqual、lessThan、match、messagesNotPresent、messagesPresent、notEmpty、notEqual、notMatch、notPresent、present;流控制标签:用于转向其他的页面。redirect和forward属性这类标签。 阅读全文
摘要: Bean标签库共有11个标签。这些标签可以完成五种工作:获得HTTP请求信息、访问Java对象、访问JSP内嵌对象和Struts配置对象、访问Web资源和属性文件、输出信息. 阅读全文
摘要: 虽然研究生已毕业,但看到有一些难度的研究生考试题还是忍不住要做做,本文给出了09年研究生入学考试的一道数据结构题的Java实现。本文给出的算法的空间复杂度为O(1),时间复杂度为O(n)。 阅读全文
摘要: HTML标签库中的标签基本上都是和HTML Tag一一对应的。但我们经常使用的主要是 标签及其子标签。因此,在本文将介绍一下及其常用子标签的用法。 阅读全文
摘要: 在Web应用中,有些报表的生成可能需要数据库花很长时间才能计算出来;有的网站提供天气信息,它需要访问远程服务器进行SOAP调用才能得到温度信息。所有这一切都属于复杂信息的例子。在Web页面中加入过多的复杂信息可能导致Web服务器、数据库服务器负荷过重。 JSP代码块缓冲为开发者带来了随意地增加各种复杂信息的自由。
阅读全文
摘要: Struts的整个视图层(就是MVC模式中的View层)是由Struts的定制标签(或者称为定制动作)和客户端代码(Javascript、HTML等)实现的。这些Struts标签被写在JSP页面中,用于生成客户端代码、进行逻辑判断等工作,使用Struts标签可以尽量避免直接在JSP页面中直接使用Java代码,以使得JSP页面更容易编写和维护。 阅读全文
摘要: 资源文件不仅仅需要保存英文信息,在很多时候,也需要保存其他的语言信息,如中文信息。但Java的属性文件只支持英文,要想在属性文件中保存中文,需要使用\uxxxx格式,但这非常不方便,因此,本文将分别介绍如何使用native2ascii.exe和Eclipse插件的方式来解决这个问题。 阅读全文
摘要: 简单验证从本质上说就是在服务端来验证客户端提交的form中的数据。这种验证只是对form中的数据规则进行检查,如必须输入用户ID,价格不能小于0或是对email格式的验证。在这个验证过程中,并不需要访问数据库。因此,简单验证需要在用户提交form后,并且在服务器处理form中的数据之前进行。 阅读全文
摘要: 本系列教程将详细介绍Struts 1.x的基本原理和使用方法,读者可以参阅“Struts 2系列教程”来比较Struts 1.x和Struts 2.x的相同点和不同点。在这篇文章中将以一个简单的例子(mystruts)来演示如何使用MyEclipse来开发、运行Struts程序,并给出了解决ActionForm出现乱码问题的方法。读者可以从本文中了解开发Struts 1.x程序的基本过程。 阅读全文
摘要: UMD格式是国内手机阅读中使用较多的一种格式,但其公司却并没有将UMD数据格式公开,但是却用另外一种方式将其公开,你去访问一下他们的站点然后下载他的制作工具就知道。 阅读全文
摘要: 在实际的应用中,不仅需要使用WebService来传递简单类型的数据,有时也需要传递更复杂的数据,这些数据可以被称为复合类型的数据。数组与类(接口)是比较常用的复合类型。在Axis2中可以直接使用将WebService方法的参数或返回值类型声明成数组或类(接口)。但要注意,在定义数组类型时只能使用一维数组,如果想传递多维数组,可以使用分隔符进行分隔。在传递类的对象实例时,除了直接将数组类型声明成相应的类或接口,也可以将对象实例进行序列化,也就是说,将一个对象实例转换成字节数组进行传递,然后接收方再进行反序列化,还原这个对象实例。本文的示例代码演示了如何传递数组与类(接口)类型的数据,并演示如何使用字节数组上传图像。本示例的客户端代码使用Java和C#编写。 阅读全文
摘要: Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。这些都将在后面的系列教程中讲解。在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebService,并在客户端使用Java和C#调用这个WebService。 阅读全文
摘要: 实在移动互联网和PC互联网之间最重要的一个差异,是两个终端特性的差异,比如屏幕的大小,我们可以看到计算机再小,目前也不会小于 12.1寸,手机的屏幕再大,也不会大于3.5寸,这是今天的情况,再过很多年也都是这样的情况。计算机是一个全键盘的输入,在手机上是数字键盘的输入,这在过去是这样,未来五年还会是这样,这不会很快改变的,这是两个终端的特性。这种特性就导致了用户在使用过程中产生了很多的差异,这也就是我认为网站、应用软件最大的差异。我们做的是微浏览器,考虑到在手机屏幕大小和手机键盘输入方式的情况下如何让用户更快、更好的到达他需要的位置。 阅读全文
摘要: 同lex 和yacc一样,javacc也是一个免费可以获取的通用工具,它可以在很多JAVA相关的工具下载网站下载,当然,javacc所占的磁盘空间比起 lex和yacc更大一些,里面有标准的文档和examples.相对lex和yacc来说,javacc做得更人性化,更容易一些.如果你实在找不到 javacc,还是可以联系我,我这里有.现在最新的就是javacc 3.2版本. 阅读全文
摘要: Apache Tomcat 是一款非常著名的开源 Servlet/JSP 容器,被用做 Java Servlet 和 JavaServer Pages 技术的官方参考实现。如果您要了解这两种技术的细节可以查阅参考资料。 阅读全文
摘要: 众所周之,在任何面向对象的语言中(包括Java、C#),在定义抽象类时必须使用abstract关键字。虽然这已经习已为常了,但实际上abstract是为了在实现接口或继承抽象类避免歧议而必须存在的。 阅读全文
摘要: Web应用程序在浏览器中显示字符串时,由于显示长度的限制,常常需要将字符串截取后再进行显示。但目前很多流行的语言,如C#、Java内部采用的都是 Unicode 16(UCS2)编码,在这种编码中所有的字符都是两个字符,因此,如果要截取的字符串是中、英文、数字混合的,就必须按字节长度来截取字符串。在本文中给出了一个按字节长度截取字符串的方法,以便这类操作变得更容易。 阅读全文
|