-
最新日志
最新评论
- 吴景鹏 发表于《自由软件日——华科站成功举办》
- Twinkle 发表于《Tech Lead, new start~》
- omycle 发表于《91%通过SCSA part2,认证持久战终于结束》
- sacs à main femme 发表于《拿到我心仪的IBM T61》
- 晚点末班车 发表于《自由软件日——华科站成功举办》
存档页
分类
功能
备案/许可证编号
湘ICP备09016480号
Category Archives: Java
如何使用NetBeans开发Jython程序
Jython是什么? 维基百科:Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用Swing,AWT或者SWT。 Jython可以被动态或静态地编译成Java字节码。 Jython还包括jythonc,一个将Python代码转换成Java代码的编译器。这意味着Python程序员能够将自己用Python代码写的类库用在Java程序里。 可见,Jython是Python和Java的综合体,能直接运行于JVM之一。本文将介绍如何使用NetBeans 6.7进行Jython程序的开发。 首先需要安装NetBeans 6.7,下载地址为http://www.netbeans.org;打开NetBeans,在工具里选择插件,可用插件里可以搜索到python和jython,选中后点击安装即可。 插件安装成功后,会在工具菜单下生成Python Platforms的子菜单项,点击该菜单项,如果像图一这样拥有Jython或Python平台,则说明安装成功。 图一 Python Platform Manager 接下来就可以创建属于自己的工程了,选择文件 > 新建工程,进入以下用户界面,如图二所示: 图二 新建工程 本文用一个FeedReader工程作为Example,通过一个feedreader.py的jython程序来读取rss配置文件的内容,如图三所示: 图三 FeedReader Project 该jython程序的代码如下: from java.net import URL from java.lang import Exception from java.lang import Object from com.sun.syndication.io … Continue reading
都是defer惹的祸
今天在做Web开发时遇到一个非常奇怪的问题,一行代码居然浪费了我一个多小时的宝贵时间,还好最终顺利解决。 问题是这样的:当我在JS的 head标签里加入<script language="javascript" type="text/javascript" src="${contextPath}/js/My97DatePicker/WdatePicker.js"></script> 这行javascript代码后,发现用IE访问该页面时会弹出错误对话框,提示“Internet Explorer无法打开站点,已终止操作”,而使用Firefox则一切正常。由于目前在我国的主流浏览器仍是IE,所以这是个相当严重的问题,必须立 即解决。在对程序进行调试检查后,我把问题定位在了这行日期选择的JS代码上。难道是因为我使用的IE版本过低?而在Firefox3.5上一切正常更增 大了这种可能性。用IE 7和IE 8测试过后,彻底排除了这种可能。难道${contextPath}与程序其它部分冲突了?不是,去掉这行JS,其它的JS能正常运行!难道这行JS的内 容与程序冲突了?不是,这个日期插件目前非常流行,而且我也特意做了一个简单的demo测试过,没问题。既然其它的JS运行正常,是不是因为在页面未加载 完毕时就执行JS脚本导致对象实例找不到的原因?于是尝试在JS代码里加入defer="defer"。问题成功解决! 再次感受到了代码调试与排错的痛苦,也再次享受了成功带来的喜悦……
走进Portlet的世界
我们知道,iGoogle其实就是由一块块相对独立的应用模板组成,而这种布局可以通过Portlet技术来实现。Portlet是一种基于Java技术的web组件,由处理请求和生成动态内容的 portlet容器管理。接下来将详细介绍Portlet这种强大、有趣的技术。 Portal是什么? 在了解portlet之前有必要先了解portal。在Portlet规范里是这样讲的:“portal是一种web应用,通常用来提供个性化、单次登录、聚集各个信息源的内容,并作为信息系统表现层的宿主。聚集是指将来自各个信息源的内容集成到一个web页面里的活动”。 Portal的功能可以分为三个主要方面: 1. Portlet 容器:Portlet容器与servlet容器非常类似,所有的portlet都部署在portlet容器里,portlet容器控制portlet的生命周期并为其提供必要的资源和环境信息。Portlet容器负责初始化和销毁portlets,向portlets传送用户请求并合成响应。 2. 内容聚集:portal的主要工作之一是聚集由各种portlet应用生成的内容。 3. 公共服务:portlet服务器的一个强项是它所提供的一套公共服务: (1) 单次登录:只需登录portal服务器一次就可以访问所有其它的应用,这意味着你无需再分别登录每一个应用。 (2)个性化:个性化服务的基本实现使用户能从两方面个性化页面:第一,用户可以根据自身喜好决定标题条的颜色和控制图标。第二,用户可以决定在页面上有哪些portlets。 此外还有一些公共服务,比如机器翻译,是由portal服务器将portlet生成的内容翻译为用户要求的语言。大部分的商业portal服务器都支持手持设备访问并具有针对不同的浏览终端生成不同内容的能力。 Portlets是什么? 与servlets类似,portlets是部署在容器内用来生成动态内容的web组件。从技术角度讲portlet是一个实现了javax.portlet.Portlet接口的类,它被打包成war文件格式部署到portlet容器里。 Portlets在以下方面与servlets相似: 1. portlets由特定的容器管理。 2. portlets生成动态内容。 3. portlet的生命周期由容器管理。 4. portlets通过请求/响应模式与web客户端交互。 Portlets在以下方面与servlets相异: 1. portlets只能生成标记段,而不是整个文档。 2. portlets没有可供直接访问的URL地址。 3. portlets不能随意地生成内容。 Portlet … Continue reading
开源servlet容器——Jetty
如果让一个人说出一种开源的servlet容器,他的回答可能是Apache Tomcat。但是,Tomcat并不是孤单的,我们还有Jetty。Jetty 是一个使用Java语言编写的开源的servlet容器,它为基于Java的web内容如JSP和servlet提供运行环境。Jetty作为可选的servlet容器只是一个额外的功能,而它真正出名是因为它是作为一个可以嵌入到其他的Java代码中的servlet容器而设计的。这就是说,开发小组将Jetty作为一组Jar文件提供出来,因此你可以在你自己的代码中将servlet容器实例化成一个对象并且可以操纵这个容器对象。 Jetty在servlet容器中算不上一个新面孔,它从1998年就已经崭露头角。Jetty的发布遵循了Apache 2.0的开源协议,你可以在免费软件和商业软件中使用Jetty。 下面将介绍在MyEclipse 6.5下使用jetty的全过程。 环境:Windows XP + JDK 1.6.11 + MyEclipse 6.5 + jetty-7.0.0pre3 1. 打开myEclipse, 新建java工程Jetty,建立webapps和 logs文件夹(和src同级),在src下建立config、servlet及test文件夹,在webapps建立manage目录作为web工作目录。 2. 将${ROOT}\jetty-7.0.0pre3\lib下的三个jar包加入工程的classpath,将${Root}:\jetty-7.0.0pre3\lib\jsp-2.1下的四个jar包加入工程的classpath,copy ${ROOT}\jetty-7.0.0pre3\etc下的jetty.xml, webdefault.xml和realm.properties到src\config下,同时copy ${ROOT}\jetty-7.0.0pre3\contexts下的test.xml到src\config下并改名为manage.xml。 3. 修改jetty.xml, manage.xml,将这些配置文件中带有jetty.xml、webdefault.xml及realm.properties的路径改为src\config,并在webapps/manage下新建index.jsp。 4. 在test目录下新建Start.java,代码如下: import org.mortbay.jetty.*; import java.io.*; import org.mortbay.jetty.handler.*; import org.mortbay.xml.*; public class … Continue reading
体验纯Java数据库——Derby
Apache Derby是一个开源的、100% Java编写的、与平台无关的、易管理的关系数据库管理系统。Derby为用户提供了轻量的标准数据库引擎,它可以紧密的嵌入到任何基于Java的解决方案中。Derby确保数据完整性,并提供负责的事务处理操作。默认的配置中不包含任何独立的数据库服务器。同时,Derby 的安装过程非常简单,只需要将其 .jar 文件复制到系统中并为您的项目添加该 .jar 文件即可。 Derby拥有一个令人惊奇的特性列表。它可以支持关系数据库中的所有企业级的特性,包括崩溃恢复、事务回滚和提交、行/表级锁、视图、主键/外键约束、触发器、子查询表达式,等等。一部分的列表特性使Derby从其他的Java 关系数据库管理系统中分离出来。 Derby可以有两种部署方式: 嵌入式:Derby被单个用户的Java应用程序使用,在这种模式下,Derby和应用程序运行在同一个JVM中。Derby对于终端用户几乎是透明的,因为它的启动和终止都是由应用程序来控制,而不需要任何的管理。 服务器模式:Derby由应用程序启动,此时通过用户可以通过网络连接。在这种模式下,Derby运行在服务器主机的JVM中。其他JVM的应用程序通过连接服务器来访问数据库。 在MyEclipse里默认已经集成了Derby数据库,启动Derby只需点击MyEclipse Derby的Start即可,如下图所示: 切换到Database视图,右键选择“new”,配置数据库连接,如下图所示: 其中Driver name自定义,test是当前要新建的数据库名称,Username和Password随便填,而Jar包在MyEclipse6.5安装目录 \myeclipse\eclipse\plugins\com.genuitec.eclipse.derby_6.5.0.zmyeclipse650200806\lib下; 配置好后右键选择“Open Connection”进行连接,连接上后右键“connected to MyEclipse Derby”,选择“New Sql Editor”,然后就可以使用SQL命令进行建表操作了。 参考文献: 1. http://20032334.javaeye.com/blog/148882 2. http://blog.sina.com.cn/s/blog_5c99936e0100avkc.html
Sun Spot Demo: Switch Demo
Demo目的 该demo是HUST OpenSourceClub SunSpot组第一个demo,由张凯同学负责开发完成,目的是熟悉SunSpot的机制,练习控制SunSpot的switch和LED灯以及无线数据传输,为以后实现idea做基础练习。 Demo思路 该demo分为host application和on_sunspot application两部分,host application接受一串字符串,并对其编码(在这里我们直接使用了ASCII码),然后传输给SunSpot。SunSpot接受到这些编码后,用LED灯将每个字母及符号的二进制码表示出来。当用户记录下一串二进制码,或将其翻译成字母之后,按SunSpot上的switch1可以获取下一个编码。 Demo代码 on_sunspot application: /* * SwitchDemo.java * * Copyright (c) 2009 HUST OpenSourceClub * */ package org.hustopensourceclub.demo; import com.sun.spot.sensorboard.EDemoBoard; import com.sun.spot.sensorboard.peripheral.ITriColorLED; import com.sun.spot.sensorboard.peripheral.ISwitch; import com.sun.spot.sensorboard.peripheral.ISwitchListener; import com.sun.spot.util.Utils; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; … Continue reading
Beginning Celebration:Robocode competition in HUST
The robocode AI competition in Huazhong University of Science and Technology started successfully on November 16th, and will last for a month. The celebration attracted more than 100 students to present, and they all showed great interest in it. Agenda: … Continue reading
华中科技大学RoboCode Java机器人AI设计大赛 start~
Robocode是一个编程游戏,顾名思义,它的任务就是要参赛者通过编程自己设计出一个坦克机器人,在战场上与其他机器人同台竞技。在战场上的坦克对战 中,参赛者不能直接影响比赛过程,而是要通过在赛前为机器人编写AI来告诉机器人该如何在战场上同敌人对战。 每个 Robocode 参加者都需要利用 Java 语言元素创建他或她的机器人,这样就使从初学者到高级黑客的广大开发者都可以参与这一娱乐活动。初级的 Java 的开发者们可以学习一些基础知识:调用 API 代码、阅读 Javadoc、继承、内部类、事件处理等等。高级开发者们可以在构建“最优品种”的软件机器人竞赛中提高他们的编程技巧。 无论你是程序设计的初级入门者,还是精通程序设计的高级开发人员,都可以参与到RoboCode的对抗中来。 这里没有门槛的限制,只有思想的比拼;这里不分代码的好快,只有算法的优劣;这里没有年级年龄的高低,只有解决分析问题的良莠。无论你是否熟悉Java语 言,无论你对程序设计技巧的掌握如何,只要你有着独特的想法,有着对全局的思考和统率,有着分析解决问题的能力,有着团队配合的精神,那 么,RoboCode就一定是适合你的。 RoboCode使用简单方便,并且极易上手,只需要一行代码,就可以使你自己的机器人开动起来进行作战。只需要一点点想法,也许就可以使你自己的机器人所向披靡,并为自己带来无尚的荣誉。 想用你自己设计的机器人击败你的对手吗?想体会纯粹的智力对抗带给你的愉悦和享受么?想用自己的头脑去赢得荣誉和奖励吗?那么请加入我们,加入到RoboCode的对抗中来吧。 本次比赛由华中科技大学计算机学院,开源技术俱乐部,百度菁英俱乐部协同举办,旨在为全校同学带来一个完美的程序设计竞赛体验,提高广大同学的IT职业技能,为广大同学提供一个交流学习的平台社区。 比赛前会进行两场关于RoboCode的入门讲座,可以帮助同学们打消各种顾虑,使得同学们可以快速上手并且可以立刻参与到开发设计过程当中。 本次活动为纯公益性活动,报名无需上缴任何报名费用,并且所有参加比赛的选手都会得到一份精美的礼品。 网上报名方式:注册登录www.unix-center.net并加入华中科技大学Sun开源俱乐部社区后可于华中科技大学校园论坛版块中下载报名表。 开帘卷西风幕式及入门讲座时间地点:11月16日晚7点到9点于D9 B301教室。(可现场领取报名表进行报名) 其余比赛细则以及活动信息,奖励信息请详见Unix-Center上华中科技大学讨论区。 … Continue reading
I am fooled by “点击链接弹出confirm对话框”, by \"
不搞Web开发好多年,但最近实验室接了湖北省科技厅的一个Web项目,只得硬着头皮重新开始自己的Web开发之旅。做起来果然捉襟见肘,用的还是自己从未接触过的webwork框架。Web技术发展得太迅速,想想自己曾用过的Struts 1.0,感觉自己逐渐在被新技术所淘汰。 更不爽的是,今天居然被一个javascript的问题折腾了近一个小时,要实现的功能仅仅是:当点击链接时弹出确认对话框,选择确定时删除数据,选择取消时不处理。 如果是直接在HTML里写代码,那么使用<a href="删除的action+传递参数" onclick="return confirm('确定要删除吗?')">就可以解决,但由于开发的需要,我得将这些代码在<% %>里通过out.println("")输出来。这样问题就来了,折腾了好久,不管是将return confirm()写在另一个javascript函数里然后再调用这个函数,还是直接写在onclick里都不会弹出对话框。正当我几近绝望准备放弃时,问题终于解决了,原来都是引号惹的祸。 正确写法是:out.println("<a href='删除的action+传递参数' onclick=\"return confirm('确定要删除吗?')\">删除</a>") ; 仔细分析:问题就出在\",这也是我被逼无奈的尝试,不小心成功了,呵呵。这里你不能用'或"代替,更不能去掉,因为双引号已经存在,而return confirm()又必须要被双引号括起来,所以就只能用\"(代表双引号中的双引号)。 希望自己的一点经验能让遇到同样问题的同道人士少转弯路。
给Java初学者的一些建议(转)
1)适合自己的图书才是最好的,最好的书并不一定适合你,看自己的情况。(如果你是一个Java初学者一上手就捧一本Thinking in Java在手里,我想你的日子是不会好过的,那样的书给有一定基础的人看的,当工具书使用的,当然有一定基础后,可以跟着上边流程学,如果你能学下来,那么你的基础就不用说了)
2)看书要用心,多动脑,实践很重要,要抱着怀疑的态度看书。(再好的书也可能会出现错误,人非圣人吗!多练这个很重要,如果你光看不练,我想你年过几天会就会忘的差不多了!)
3)遇到问题多查帮助文档,还可以上网站进行搜索。(现如今的搜索引擎功能十分强大,只要你能用得到就能搜到的,还担心什么,不要碰到一点什么问题,都去烦别人,这样别人会小瞧你的!可以加一些Java交流群,对于初学者可能会有一些作用,如果你已经是高手了,我认为这样的群对你的提高不会很大)。
4)忌讳急功近利,越急就越容易走弯路。(不要急,基础虽然很简单,一个月或半年,甚至是一年,这都很正常。但出来的成效绝对是不一样的,相信你的时间不会白白浪费。)
5)我们要精而非全,语言都是相同的。学精一门语言再转其它语言也会容易的多。基础很重要,不要贪高。(这个就不用说了,如果你精通C ,改学Java还不简单,思想你已经掌握,你要学的就是一点语法,还不容易?)
6)欣赏他人的代码:初学者不要看,因为理解别人的思路原比自己写要困难的多。认为自己的基础到了一定的程度,可以看看一些开源的软件,因为那都是一些优秀的杰作,会对提高你的水平有很大帮助。注意方法
先找主线——>从界面入手——>在纸上画出结构图——>然后再分步分析)
7)在实践中提高自己的能力:边学边练,别给自己找借口。(买一些带实例的书,可以试着做一些日常生活中常用到的小程序,只有在实践中你才会发现更多的问题)。
培养自己发现、思考、解决问题的能力。(能自己想办法解决,不求别人!对于初学者很重要。)
9)心态要平衡,不要总觉得高人一等。一个事物的存在总有它的合理性。(你的技术比别人牛,这没什么,或许你是学的早,也或许你比别人反应快一点,永远不要自大,计算机是技术更新很快的行业,你不会永远都站在别人的前头的。心态平衡,不断学习,这才是王道!)
10)可以下载视频,买书,借书,在线观看。(如果你是大学生,那么不要浪费资源,一头扎头图书馆里吧。现在网络资源,网上的视频和电子书极多,还愁找不到资源吗?)
11)认证的价值不大,在一些企业还不是特殊认可,没必要花费大的精力去考。(如果你根本不缺那几个钱,又有能力的话,可以考,多少还是会有一定作用的。如果你的经济情况不怎么样就先算了。)在职学习比较困难,比较忙,压力大,时间紧
12)找工作,基础扎实,有一年开发经验,不用担心。你可能会有3K左右的工资了。
13)做开发不一定要数学好,只不过你不适合做算法方面的工作。(能当程序员的,谁都不白痴,呵呵!)
14)没有什么捷径,如果有的话,价值也就不大了。(别梦想一步登天,给自己作一个学习过程计划,先学什么,后学什么,合理一点。如果非要说有什么捷径的话,我认为培训不错,条件允许的话,这可以省掉你很多的宝贵时间,当然选择培训机构的时候一定要慎重。因为那不光是Money的问题。)
Posted in Java
Leave a comment