- [ Java基础 ] 你应该知道的10件关于Java 6的事情
点击:4095 发布日期:09/05
《What's New in Java SE 6 Beta 2》一文中描述了你应该知道的10件关于Java 6的事情,下面总结如下:
1、Web Services. 优先支持编写 XML web service 客户端程序。你可以用过简单的annotaion将你的API发布成.NET交互的web services. Mustang 添加了新的解析和 XML 在 Java object-mapping APIs中, 之前只在Java EE平台实现或者Java Web Services Pack中提供.
2、Scripting. 现在你可以在Java源代码中混入JavaScript了,这对开发原型很有有用,你也可以插入自己的脚本引擎。
3、Database. Mustang 将联合绑定 Java DB (Apache Derby). JDBC 4.0 增加了许多特性例如支持XML作为SQL数据类型,更好的集成Binary Large OBjects (BLOBs) 和 Character Large OBjects (CLOBs).
4、More Desktop APIs. GUI 开发者可以有更多的技巧来使用 SwingWorker utility ,以帮助GUI应用中的多线程。, JTable 分类和过滤,以及添加splash闪屏。
5、Monitoring and Management. Mustang 添加更多的诊断信息,绑定了不是很知名的 memory-heap 分析工具Jhat 来查看内核导出。
6、Compiler Access. compiler API提供编程访问javac,可以实现进程内编译,动态产生Java代码。
7、Pluggabl..
- [ Java基础 ] java实现屏幕取色
点击:82 发布日期:08/03
声明: 本文核心代码选择自langzi84的blog请看以下链接http://dev.csdn.net/article/44/article/44/44529.shtmhttp://blog.csdn.net/langzi84/archive/2004/10/21/146331.aspx
代码1。在屏幕上输出当前鼠标所在的屏幕颜色。
import java.awt.*;public class PickColor {public static void main(String[] args) {PickColor pc = new PickColor();Color color = pc.pickColor();System.out.println("color = "+color);}public Color pickColor() {Color pixel = new Color(0,0,0);Robot robot = null;Point mousepoint;int R,G,B;// MouseInfo mouseinfo = new MouseInfo();try {robot = new Robot();} catch (AWTException e) {e.printStackTrace();System.exit(1);}mousepoint = MouseInfo.getPointerInfo().getLocation();pixel = robot.getPixelColor(mousepoint.x,mousepoint.y);R = pixel.getRed();G = pixel.getGreen();return pixel;}}
代码2。使用一个GUI,输出当前鼠标所在的屏幕颜色,并改变GUI的背景色。// create by kin 2004/10/24 refer to http://dev.csdn.net/article/44/44529.shtm
import ja..
- [ Java基础 ] 利用Java技术开发Web网络课件浅议
点击:100 发布日期:08/03
随着计算机技术的飞速发展,教育信息化、网络化的进程不断深入,特别是采用TCP/IP协议的Internet/Intranet的不断普及,利用计算机技术和网络技术已成为现代教育的一个重要发展方向,基于网络的教学软件由于在现代教育中可以最大限度地利用教育资源,因而得到迅速的发展。
教学课件是指具有教学功能的计算机软件,在某种程度上能代替或辅助教师实施教学。基于Web的教学软件以Internet/Intranet网络为基础,将教学内容用Web页面来表示,这种教学课件,具有远程教学的开放性、灵活性、交互性、分散性等特点,它将某些领域的知识按照教学目标来组织知识,聚集成模块,形成层次化、网络化结构,做成页式或脚本式的课件。课件制作完成后用WWW服务器进行管理,客户端用IE等浏览器进行浏览,并通过WEB页面进行交互式的学习,实现在时空上相对独立的教学模式,与传统课堂教育方式相比,新的教育方式最重要的特点在于突破了时间和空间的限制,不再完全依赖于教师和学生之间面对面地教学。在新的教学方式下,学生充分发挥自主性,根据自己的实际情况确定学习内容和安排学习进度,从而满足了教育的普及性和独立性的需要,适合所有有学习要求的学生上网使用。这种方式已成为教学课..
- [ Java基础 ] 探索JDK1.5高级编码特征
点击:76 发布日期:08/03
本文中,我们将讨论几个在JDK1.5中新的语言特征,包括:
泛型(Generics)--为集合(collections)提供编译时类型安全,无需每刻从Collections取得一个对象就进行强制转换(cast)
增强的“for”循环(Enhanced For loop)--减少迭代器(iterator)的潜在错误(error-proneness)
自动置入/自动取出(Autoboxing/unboxing)--无需在基本类型(primitive types)(例如double)和包装类型(wrapper types)(例如Double)之间人工地进行转换。
类型安全的枚举(Typesafeenums)--提供类型安全枚举模式的各项好处。
静态导入(Static import)--无需在使用其他类的静态成员变量前缀其类名.这将使得代码更为简洁。
元数据(Metadata)--使编程人员避免编写样板化代码(boiler plate code),并提供机会进行宣告式程式设计(declarative programming)。
让我们详细讨论每个新特性,并看一些例子。
泛型(Generics)
泛型是JDK1.5中一个最“酷”的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastExceptions的可能。在JDK1.5中,你可以声明一个集合将接收/返回的对象的类型。在JDK1.4中,创建雇员名字的清单(List)需..
- [ Java基础 ] JBuilder2005实现重构之升级到JDK5.0
点击:145 发布日期:08/03
JDK 5.0在语法上做许多重大的改进,虽然在低版本JDK中开发的源代码几乎可以不做任何修改就可直接运行于JDK 5.0中。但还是有必须进行版本升级的重构,这样就可以应用JDK 5.0的for和while循环、自动装/拆箱、泛型等改进功能,在使代码更加紧凑的同时,使代码性能得到优化。所以JBuilder专门为低版本提升到JDK 5.0的程序提供了3个重构功能,方便你无缝地实现升级。 1、使工程基于JDK 5.0 虽说JBuilder 2005支持JDK 5.0,但其默认的JDK版本是1.4.2,要使工程的JDK版本为5.0,你必须安装JDK 5.0,并在JBuilder下进行相应的设置。关于JDK 5.0的详细设置我们不作过多的描述,简而言之,它主要包括以下的步骤: 1) 安装JDK 5.0(从http://java.sun.com/j2se/1.5.0/download.jsp下载)。 2) Tools->Configure->JDKs...通用指定JDK5.0的安装路径设置JDK。 3) Project->Project Properties...->在Paths设置页,将JDK设置为JDK 5.0。 4) Project->Project Properties...->Build->在Java设置页,将Language features:设置为Java 2 SDK,V 5.0(generics enabled),将Target VM设置为Java 2 SDK,v 5.0 and later。 只有将工程的JDK版本设置为J..
- [ Java基础 ] 用Java Swing作一个日历控制程序
点击:247 发布日期:08/03
日期是最基本的数据形式之一,因此很多语言或者数据库都提供了对日期的支持,或内置或提供这一类的库。Java也不例外;Java的应用编程接口提供了以跨平台独立语言的方式描述,计算,对比,显示以及便携式分析日期。在这篇文章里,我要讲讲关于Swing的自定义控制,允许你在视觉上获取时间信息而不是用敲命令的方式。用这种方法,你可以避免无效的时间信息,让你的使用者以视觉的方式得到享受。
Java中的日期
Java描述日期和时间的方法使用传统的Date命令或者Java的一些子库。不管它的名字是什么,日期的类并没有普通意义上的日期的概念(日,月,年等等)技术上讲,它仅仅是从1970年1月1日 00:00:00 GMT开始百万分之一秒的累加的一个结果。尽管这些关于日期的类有各种各样的处理日期的方法,这都是不够的。
为了方便的解决日期问题, JDK 1.1 介绍了一个抽象的类java.util.Calendar。具体的计算日期的子类都会根据日历系统使用一个指向特定日期的指针。这是因为日历系统历来就是有很多种方法来计算自己的日期(比如阳历,罗马历,阴历)。
Java应用编程接口提供了名为java.util.GregorianCalendar的类来根据阳历系统处理日期信息。
最终,名为java.text.DateFormat的类就是一..
- [ Java基础 ] 基于WebSphere MQ的收发消息程序
点击:969 发布日期:08/03
摘 要:本文从以下几个方面简述了IBM公司的商业通信中间件WebSphere MQ,首先解释了消息、队列和队列管理器的意义,在此基础上通过图示阐述了WebSphere MQ在进行通信时所采用的通信机制,以及此通信机制和通信的各应用程序之间的关系。接着通过一个实例来说明在使用Java编写程序时,如何向队列写入消息。最后简单的介绍了一下MQ的优点及其发展前景。
关键词:通信中间件,队列,队列管理器,MQ
WebSphere MQ(以下简称MQ)是IBM公司享有盛誉的商业通信中间件。它被世界范围的许多大型企业广泛采用。它提供一个具有工业标准、安全、可靠的消息传输系统。MQ基本由一个消息传输系统和一个应用程序接口组成。应用程序使用MQ的API(消息队列接口MQI)函数和队列管理器(MQ运行时刻的程序)进行通信。队列管理器在工作时,它需要用到对象如队列和通道。同时,队列管理器也是一个对象。图1所示为MQ应用程序在运行时刻的图示。
图1 运行时刻的MQ1
消息是一个信息单元,它由两部分组成:从一个程序发往另外一个程序的应用程序数据以及消息描述符或者消息头。
消息描述符用来标识消息(message ID),同时它还包括一些控制信息,如消息类型,消息过期的时间,消息优先级等等。
..
- [ Java基础 ] 深入研究Servlet线程安全性问题
点击:450 发布日期:08/03
摘 要:介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线 程安全的三种解决方案,并说明三种方案在实际开发中的取舍。 关键字:Servlet 线程安全 同步 Java内存模型 实 例变量 Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所 以,在编写代码时需要非常细致地考虑多线程的安全性问题。然而,很多人编写Servlet/JSP程序时并没有注意到多线程安全性的问题,这往往造成编写的 程 序在少量用户访问时没有任何问题,而在并发用户上升到一定值时,就会经常出现一些莫明其妙的问题。 Servlet的多线程机制 Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。当客户端第一次请求某个Servlet时,Servlet 容器将会根据web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实 例 。Servlet容器会自动使用线程池等技术来支持系统的运行,如图1所示。
图1 Servlet线程池 这样,当两个或多个线程同时访问同一个Se..
- [ Java基础 ] 用Java从网上抓取指定URL源码的方案
点击:195 发布日期:08/03
引言: 在做无线项目的时候,与通讯公司的数据通讯有一部分是通过XML交互的,所以必须要动态抓取通讯公司提供的固定的Internet上的数据,便研究了一下如何抓取固定url上的数据,现与大家分享一下。 类名GetPageCode,有一个方法GetSource,通过属性传递参数,入参控制的是要取得URL的地址,代理服务器的设置及输出方式的控制,这里大家可以再扩展自己的需要,我这里只提供了两种方式,一种是直接写到本地的某个文件中,另外一种就是返回字符串的。类里已经作了比较详细的注释,我想大家很容易就看明白了。 调用方式:
#region 测试获取远程网页 GetPageCode gpc = new GetPageCode(); gpc.Url="http://ppcode.com"; gpc.ProxyState=1;//使用代理服务器,0为不使用,设置为1后下面的代理设置才起作用 gpc.ProxyAddress="http://proxyName.com";//代理服务器地址 gpc.ProxyPort="80";//代理服务器的端口 gpc.ProxyAccount="proxy";//代理服务器账号 gpc.ProxyPassword="password";//代理服务器密码 gpc.ProxyDomain="bqc";//代理服务器域 gpc.OutFilePath=filePath;//设置输出文件路径的地方,如果不设置,则返回字符串 gpc.GetSource();//处理 string tempErr=gpc...
- [ Java基础 ] 用Java生成gif动画
点击:397 发布日期:08/03
附件提供了几个处理的类,具体用法如下例:
try{ BufferedImage src = ImageIO.read(new File("c:/ship.jpg")); // 读入文件 BufferedImage src1 = ImageIO.read(new File("c:/ship2.jpg")); // 读入文件 BufferedImage src2 = ImageIO.read(new File("c:/ship3.jpg")); // 读入文件 AnimatedGifEncoder e = new AnimatedGifEncoder(); e.setRepeat(0); e.start("c:/laoma.gif"); e.setDelay(3000); // 1 frame per sec e.addFrame(src); e.setDelay(1000); e.addFrame(src1); e.setDelay(100); e.addFrame(src2); e.finish(); }catch(IOException e){ e.printStackTrace(); }
- [ Java基础 ] 用Java设计下载软件
点击:365 发布日期:08/03
本文介绍了如何使用Java编写下载软件并实现多现程下载
“网络蚂蚁”、Falshget等许多多线程下载软件都是网友的必备工具,利用这些工具可以快速从服务器上下载比较大的文件,这些工具的工作特性是把服务器端的文件分成几个段,每个段分别、同时进行下载。编写这类程序,第一、必须对HTTP协议有较为充分的了解;第二、有效使用多线程编程手段在软件上实现。
HTTP协议的简介
HTTP协议是一种超文本传输协议(HypertextTransferProtocol),工作于网络应用层,自1990年起广泛应用于WWW的全球信息服务,HTTP协议的详细说明可以在网上查阅RFC2518、RFC2616等文档。
HTTP协议老的标准是HTTP/1.0,目前最通用的标准是HTTP/1.1。HTTP/1.1是在HTTP/1.0基础上的升级,增加了一些功能,全面兼容HTTP/1.0。HTTP/1.0不支持文件断点续传,如果服务器使用HTTP/1.0,“网络蚂蚁”的任何多线程下载程序都只能按单线程下载;好在目前的Web服务器绝大多数都采用了HTTP/1.1,所以,下面将基于HTTP/1.1进行介绍。
HTTP协议的相关重要命令
基于HTTP的浏览器浏览网页、下载文件时,工作原理类似客户机/服务器模式:浏览器向Web服务器发出一个HTTP请求行;Web服务器在收到有效的请求后,返回一个状..
- [ Java基础 ] JAVA和C++区别
点击:935 发布日期:08/03
1.指针
JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。
2.多重继承
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。
3.数据类型及类
Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。
4.自动内存管理
Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c++的new操作符。下面的语句由一个建立了一个类Read的对象,然后..
- [ Java基础 ] 一个简单的SWT程序实例及详解
点击:1314 发布日期:07/17
让我们从简单的 HelloWorld 应用程序开始。
一、将SWT添加到工程的类路径中
首先建立一个java工程。在开始使用SWT之前,需要将SWT库文件添加到工程的类路径中。步骤如下:
1. 下载SWT。在Eclipse SDK的下载页面中,提供了独立版本的SWT下载。找到标有SWT Binary and Source 的栏目。下载适合你操作系统的版本,不用解压,直接保存到硬盘中。
2. 在Eclipse菜单栏,选择File-〉Import...打开导入向导
3. 选择Existing Projects into Workspace ,点击Next按钮
4. 选择 Select archive file并使用 Browse...按钮来找到你刚才下载的SWT文件。
5. 点击Finish按钮,完成SWT导入。
6. 右键点击你建立的工程,选择Properties 来打开Properties对话框。
7. 选择 Java Build Path tab并点击Add按钮. -> Projects
8. 选择 org.eclipse.swt工程, 点击 OK,完成添加SWT库到你的工程中(见图1).
图 1
二、 SWT 代码
现在在你建立的java工程中,新建一个java文件,取名为 HelloWorld。在HelloWorld.java文件中把main()方法覆盖为以下代码:
1 public static void main(String[] args) { 2 Display display = new Display(); 3 Shell shell = new Shell(display);..
- [ Java基础 ] 跨越边界: Java 模型以外的类型策略
点击:292 发布日期:06/29
当谈到 Java 语言的类型方法时,Java 社区分为两大阵营。一些人喜欢编译时错误检查,更好的安全性,以及改善的工具 —— 这些都是静态类型所能提供的特性。而另一些人则偏爱更动态的类型体验。这一次在 跨越边界 中,您将看到两种高生产力的非 Java 语言所使用的一些截然不同的类型策略,并发现在 Java 编程中提高类型灵活性的一些方法。
在对任何编程语言的讨论中,争议较大的一个问题就是类型模型。类型决定可以使用哪些种类的工具,并影响到应用程序的设计。很多开发人员将类型与生产率或可维护性联系起来(我就是其中的一个)。典型的 Java 开发人员通常都特别乐于维护 Java 语言的类型模型的地位,强调 Java 语言可采用更好的开发工具,在编译时捕捉某些种类的 bug(例如类型不兼容和拼写错误),以及性能等方面的优势。
如果您想理解一种新的编程语言,甚至一系列语言,那么通常应该从类型策略着手。在本文中,您将看到 Java 之外的一些语言中的类型模型。我首先简要介绍任何语言设计者在类型模型中必须考虑的一些决策,着重介绍静态类型和动态类型的一些不同的决策。我将展示一些不同极端的例子 —— Objective Caml 中的静态类型和 Ruby 中的动态类型。我还将谈到 J..
- [ Java基础 ] java实现的18位身份证格式验证算法
点击:707 发布日期:06/27
公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 1、地址码 表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按 GB/T 2260 的规定执行。 2、出生日期码 表示编码对象出生的年、月、日,按 GB/T 7408 的规定执行。年、月、日代码之间不用分隔符。 例:某人出生日期为 1966年10月26日,其出生日期码为 19661026。 3、顺序码 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数千分配给女性。 4 、校验码 校验码采用ISO 7064:1983,MOD 11-2 校验码系统。 (1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和 Ai:表示第i位置上的身份证号码数字值 Wi:表示第i位置上的加权因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (2)计算模 Y = mod(S, 11) (3)通过模得到对应的校验码 Y: 0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0 X 9 8 7 6 5..
- [ Java基础 ] JAVA操作数据库方式与设计模式应用
点击:532 发布日期:06/20
1. 在业务层使用JDBC直接操作数据库-最简单,最直接的操作 1)数据库url,username,password写死在代码中
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhost:1521:orcl"; String user="scott"; String password="tiger"; Connection conn= DriverManager.getConnection(url,user,password); Statement stmt=conn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String sql="select * from test"; ResultSet rs=stmt.executeQuery(sql); 2)采用Facade和Command模式,使用DBUtil类封装JDBC操作; 数据库url,username,password可以放在配置文件中(如xml,properties,ini等)。 这种方法在小程序中应用较多。
2.DAO(Data Accessor Object)模式-松耦合的开始 DAO = data + accessor + domain object 例如User类-domain object (javabean) UserDAO类-accessor ,提供的方法getUser(int id),save(User user)内包含了JDBC操作 在业务逻辑中使用这两个类来完成数据操作。 使用Factory模式可以方便不同数据库连接之间的移植。 3.数据库资源管理模式 3.1 数据库连接池技术 资源重用,..
- [ Java基础 ] 为什么程序员不应调用“sun”包?
点击:392 发布日期:06/16
J2SEAPIDocuments是我们最常用的参考手册,但细心的朋友可能会发现,在“%JAVA_HOME%\jre\lib\rt.jar”中包含比API文档更多的类,那么其它的类为什么没有在帮助文档中出现呢?在SUN的JDKFAQ中有一篇“WhyDevelopersShouldNotWriteProgramsThatCall'sun'Packages”,该文部分地解答了这个问题,我将原文翻译如下
================================================
J2SE中的类大致可以划分为以下的各个包:
java.*,javax.*,org.*,sun.*
除了“sun”包,其它各个包都是Java平台的标准实现,并且今后也将被继续支持。一般说来,“sun”之类的包并不包含在Java平台的标准中,它与操作系统相关,在不同的操作系统(如Solaris,Windows,Linux,Mac等等)中的实现也各不相同,并且可能随着J2SE版本不定期变化。因此,直接调用“sun”包的程序代码并不是100%的Java实现。也就是说:
“java.*”包,“javax.*”包,“org.*”包是作为J2SE的API公开接口的一部分,如果程序直接调用这些包中的API,那么程序是可以运行在所有Java平台上,而与操作系统无关;但“sun.*”包并不是API公开接口的一部分,调用“sun”包的程序并不能确保工作在所有Java平台上,事实上,这样的程序并不..
- [ Java基础 ] 中国年历算法和程式
点击:691 发布日期:06/16
中国年历算法和程式 本文摘自“和荣笔记 - 中国农历二百年算法及年历”中国公历算法中国公历算法不是太难,关键是星期值的确定。这里给出了简单算法: public static int dayOfWeek(int y, int m, int d) { int w = 1; // 公历一年一月一日是星期一,所以起始值为星期日 y = (y-1)%400 + 1; // 公历星期值分部 400 年循环一次 int ly = (y-1)/4; // 闰年次数 ly = ly - (y-1)/100; ly = ly + (y-1)/400; int ry = y - 1 - ly; // 常年次数 w = w + ry; // 常年星期值增一 w = w + 2*ly; // 闰年星期值增二 w = w + dayOfYear(y,m,d); w = (w-1)%7 + 1; return w; }
中国农历算法根公历相比,中国农历的算法相当复杂。我在网上找的算法之中,eleworld.com 的算法是最好的一个。这个算法使用了大量的数据来确定农历月份和节气的分部,它仅实用于公历 1901 年到 2100 年之间的 200 年。 中国农历计算程式跟据 eleworld.com 提供的算法,我写了下面这个程式:
[HTML]/** * ChineseCalendarGB.java * Copyright (c) 1997-2002 by Dr. Herong Yang. http://www.herongyang.com/ * 中国农历算法 - 实用于公历 1901 年至 2100 年之间的 200 年 */import java.text.*;import java.u..
- [ Java基础 ] 十四种Java开发工具点评
点击:1139 发布日期:06/16
图形界面的java开发工具
JDK
Borland的JBuilder
JBuilder,JDeveloper,VisualAgeforJava
jcreater.
常见的十五种Java开发工具的特点
1、JDK(JavaDevelopmentKit)Java开发工具集
从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,
有利于理解Java面向对象的设计思想。JDK的另一个显著特点是随着Java(J2EE、J2SE
以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java
应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。
2、JavaWorkshop
3、NetBeans与SunJavaStudio5
NetBeans是开放源码的Java集成开发环境(IDE),适用于各种客户机和Web应用。
SunJavaStudio是Sun公司最新发布的商用全功能JavaIDE,支持Solaris、Linux和Win
dows平台,适于创建和部署2层JavaWeb应用和n层J2EE应用的企业开发人员使用。
NetBeans是业界第一款支持创新型Java开发的开放源码IDE。开发人员可以利用业界
强大的开发工具来构建桌面、Web或移动应用。同时,通过NetBeans和开放的API的模块
化结构,第三方能够非常轻松地扩展或集成NetBeans平台。
NetBeans3.5.1主要针对一般Java软件的开发者,而Java..
- [ Java基础 ] 变态级JAVA程序员面试32问
点击:1417 发布日期:06/13
第一,谈谈final,finally,finalize的区别。
第二,AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
第三,StaticNestedClass和InnerClass的不同,说得越多越好(面试题有的很笼统)。
第四,&和&&的区别。
第五,HashMap和Hashtable的区别。
第六,Collection和Collections的区别。
第七,什么时候用assert.
第八,GC是什么?为什么要有GC?
第九,Strings=newString("xyz");创建了几个StringObject?
第十,Math.round(11.5)等於多少?Math.round(-11.5)等於多少?
第十一,shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?
第十二,sleep()和wait()有什么区别?
第十三,Java有没有goto?
第十四,数组有没有length()这个方法?String有没有length()这个方法?
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?
第十七,给我一个你最常见到的runtimeexception.
第十八,error和exception有什么区别?
..
- [ Java基础 ] 学习Java的30个基本概念
点击:1242 发布日期:06/13
在我们学习Java的过程中,掌握其中的基本概念对我们的学习无论是J2SE,J2EE,J2ME都是很重要的,J2SE是Java的基础,所以有必要对其中的基本概念做以归纳,以便大家在以后的学习过程中更好的理解java的精髓,在此我总结了30条基本的概念.
Java概述:
目前Java主要应用于中间件的开发(middleware)---处理客户机于服务器之间的通信技术,早期的实践证明,Java不适合pc应用程序的开发,其发展逐渐变成在开发手持设备,互联网信息站,及车载计算机的开发.Java于其他语言所不同的是程序运行时提供了平台的独立性,称许可以在windows,solaris,linux其他操作系统上使用完全相同的代码.Java的语法与C++语法类似,C++/C程序员很容易掌握,而且Java是完全的彻底的面向对象的,其中提出了很好的GC(GarbageCollector)垃圾处理机制,防止内存溢出.
Java的白皮书为我们提出了Java语言的11个关键特性.
(1)Easy:Java的语法比C++的相对简单,另一个方面就是Java能使软件在很小的机器上运行,基础解释其和类库的支持的大小约为40kb,增加基本的标准库和线程支持的内存需要增加125kb.
(2)分布式:Java带有很强大的TCP/IP协议族的例程库,Java应用程序能够通过URL来穿过网络来访问远程对象,由于servlet机制的出现,使Ja..
- [ Java基础 ] 理解并解决IE的内存泄漏方式
点击:430 发布日期:06/13
本文将讲书述losures引起的IE内存泄漏,在本文中Closures翻译成闭包或闭包函数。最近在网上看到一个对Closures的解释,它是这么说的:
<HTML> <HEAD> <script language="javascript"> function initpage() { window.setTimeout("window.location.reload()", 500, "javascript"); } </script> </HEAD> <body onload="initpage()" > <div class='menu' id='menu'></div> <script language='javascript'> hookup(document.getElementById('menu')); function hookup(element) { element.attachEvent( "onmouseover", mouse); function mouse () {} } </script> </body> </HTML> In this code, the handler (the mouse function) is nested inside the attacher (the hookup function). This arrangement means that the handler is closed over the scope of the caller (this arrangement is named a "closure"). 闭包函数(Closures) 由于闭包函数会使程序员在不知不觉中创建出循环引用,所以它对资源泄漏常常有着不可推卸的责任。而在闭包函数自己被释放前,我们很难判断父函数的参数以及它的局部变量是否能被释放。实..
- [ Java基础 ] 企业级应用中的Applet和Servlet的通信
点击:448 发布日期:06/13
在今天的多层结构的web应用程序的设计中,我们可以同时使用Java applet和Servlet。Applet为建立功能强大的动态界面提供了便利的机制,Servlet为web服务器或者其他应用服务器处理请求提供了高效率的手段。 Sun公司的应用程序模型描述了在Java2平台下开发企业级的Java应用的最好的规范。一种被推荐的规范是:在前端使用Applet、HTML和JSP,在后端使用Enterprise JavaBeans支持的Servlet及其他成分。 这种体系结构的关键是在客户端的Applet和在服务器说?ervlet之间的通信。但是由于Applet受浏览器安全模式的限制,在一个Applet中存取数据和信息并不想看上去的那么简单。在这篇文章中,我们将解释在Applet-Servlet结构中开发者所面对的限制,并探讨几个不同的可以在Applet和Servlet之间转输数据的通信策略。 如果你已经熟悉Applet和Servlet,这肯定会对你阅读本文有帮助,如果你还不是那么熟悉,那也没关系,我们会简要地介绍它们。APPLET和SERVLET的简介 Applet Java applets实际上是运行在web页面上的Java程序。它是一个继承于java.applet.applet的Java类,它通过引用被嵌入到HTML..
- [ Java基础 ] 用Java实现FTP服务器
点击:372 发布日期:06/13
FTP 命令 FTP 的主要操作都是基于各种命令基础之上的。常用的命令有: ◆ 设置传输模式,它包括ASCⅡ(文本) 和BINARY 二进制模式; ◆ 目录操作,改变或显示远程计算机的当前目录(cd、dir/ls 命令); ◆ 连接操作,open命令用于建立同远程计算机的连接;close命令用于关闭连接; ◆ 发送操作,put命令用于传送文件到远程计算机;mput 命令用于传送多个文件到远程计算机; ◆ 获取操作,get命令用于接收一个文件;mget命令用于接收多个文件。 编程思路 根据FTP 的工作原理,在主函数中建立一个服务器套接字端口,等待客户端请求,一旦客户端请求被接受,服务器程序就建立一个服务器分线程,处理客户端的命令。如果客户端需要和服务器端进行文件的传输,则建立一个新的套接字连接来完成文件的操作。 编程技巧说明 1.主函数设计 在主函数中,完成服务器端口的侦听和服务线程的创建。我们利用一个静态字符串变量initDir 来保存服务器线程运行时所在的工作目录。服务器的初始工作目录是由程序运行时用户输入的,缺省为C盘的根目录。 具体的代码如下:
public class ftpServer extends Thread{ private Socket socketCli..
- [ Java基础 ] 触摸Java编程中的“文档”和“包”
点击:293 发布日期:06/13
什么是包
Java中的包(Package)其实指的就是目录,它是为了更好地管理Java类(Class)和接口(Interface)。Java语言的包可以被另一个Java开发包所使用。如果我们要引用某个包中的类,用import关键字来标明即可。比如:
importjava.util.
date=newDate
提示:importjava.util.??表示java.util中的所有公有类和接口被引入到当前包。这里的?匹配符可以调入多个类名。
常用的Java标准包
JDK为我们提供了很多标准的Java类和接口,这些包是写Java程序所必需的,知道了每种包所包含的类和接口,并且熟悉这些类和接口是每个Java编程人员都应该掌握的基本技能。
Java中常用的包有:Java.applet、java.awt、java.i、java.lang、java.net和java.util等等。其中java.applet包含了一些设计小应用程序(Applet)的类和接口;java.awt是一个窗口工具箱包(awt?AbstractWindowToolkit),里面是一些GUI界面相关的类;java.io包支持输入输出,比如文件输入流类:FileInputStream等;java.lang包含线程、异常、系统、整数等相关的类,是Java程序中默认加载的一个包;java.net这个类支持TCP/IP网络协议,并包含Socket类及URL相关的类,是网络编程中要使用的;java.util包含一些程序的公用类,如Dat..
- [ Java基础 ] 对象引用是怎样严重影响垃圾收集器的
点击:141 发布日期:06/13
如果您认为 Java 游戏开发人员是 Java 编程世界的一级方程式赛车手,那么您就会明白为什么他们会如此地重视程序的性能。 游戏开发人员几乎每天都要面对的性能问题,往往超过了一般程序员考虑问题的范围。哪里可以找到这些特殊的开发人员呢?Java 游戏社区就是一个好去处。 虽然在这个站点可能没有很多关于服务器端的应用,但是我们依然可以从中受益,看看这些“惜比特如金”的游戏开发人员每天所面对的,我们往往能从中得到宝贵的经验。让我们开始游戏吧! 对象泄漏 游戏程序员跟其他程序员一样——他们也需要理解 Java 运行时环境的一些微妙之处,比如垃圾收集。垃圾收集可能是使您感到难于理解的较难的概念之一, 因为它并不能总是毫无遗漏地解决 Java 运行时环境中堆管理的问题。似乎有很多类似这样的讨论,它的开头或结尾写着:“我的问题是关于垃圾收集”。 假如您正面遭遇内存耗尽(out-of-memory)的错误。于是您使用检测工具想要找到问题所在,但这是徒劳的。您很容易想到另外一个比较可信的原因:这是 Java 虚拟机堆管理的问题,而不会认为这是您自己的程序的缘故。但是,正如 Java 游戏社区的资深专家不止一次地解释的,Java 虚拟机并不..
- [ Java基础 ] 用Java简单实现文件分割与合并
点击:194 发布日期:06/13
主要应用IO的RandomAccessFile(听说断点续传也是用它实现)
import java.io.*;class Fen{String fileName;int size;Fen(String fileName,String size){this.fileName = fileName;this.size = Integer.parseInt(size)*1024; }public void cut()throws Exception{int maxx = 0;File inFile = new File(fileName);int fileLength = (int)inFile.length(); //取得文件的大小int value; //取得要分割的个数RandomAccessFile inn = new RandomAccessFile(inFile,"r");//打开要分割的文件value = fileLength/size;int i=0;int j=0;//根据要分割的数目输出文件for (;j
- [ Java基础 ] Java socket 入门编程实例
点击:374 发布日期:06/13
这是一个C/S之间通信的例子,在JDK1.4下测试通过.//服务器端源程序tcpserver.java
import java.io.*;import java.net.*;public class tcpserver {public static void main(String[] args) throws IOException{ServerSocket svrsoc=null;Socket soc=null;DataInputStream in=null;PrintStream out=null;InetAddress clientIP=null;String str=null;try{svrsoc=new ServerSocket(8000);System.out.println("Server start....");soc=svrsoc.accept();in=new DataInputStream(soc.getInputStream());out=new PrintStream(soc.getOutputStream());clientIP=soc.getInetAddress();System.out.println("Client's IP address:"+clientIP);out.println("welcome.....");str=in.readLine();while (!str.equals("quit")){System.out.println("Client said:"+str);str=in.readLine();}System.out.println("Client want to leave");}catch(Exception e){System.out.println("error:"+e);}finally{in.close();out.close();soc.close();svrsoc.close();System.exit(0);}}}//客户端源程序tcpclient.javaimport java.io.*;import java.net.*;public class tcpclient {public static void main(..
- [ Java基础 ] Java基础-如何编写一个JAVA的队列类
点击:166 发布日期:06/13
队列是设计程序中常用的一种数据结构。它类似日常生活中的排队现象,采用一种被称为“先进先出”(LIFO)的存储结构。数据元素只能从队尾进入,从队首取出。在队列中,数据元素可以任意增减,但数据元素的次序不会改变。每当有数据元素从队列中被取出,后面的数据元素依次向前移动一位。所以,任何时候从队列中读到的都是队首的数据。
根据这些特点,对队列定义了以下六种操作:
enq(x) 向队列插入一个值为x的元素; deq() 从队列删除一个元素; front() 从队列中读一个元素,但队列保持不变; empty() 判断队列是否为空,空则返回真; clear() 清空队列; search(x) 查找距队首最近的元素的位置,若不存在,返回-1。 Vector类是JAVA中专门负责处理对象元素有序存储和任意增删的类,因此,用Vector可以快速实现JAVA的队列类。
public class Queue extends java.util.Vector { public Queue() { super(); } public synchronized void enq(Object x) { super.addElement(x); } public synchronized Object deq() { /* 队列若为空,引发EmptyQueueException异常 */ if( this..
- [ Java基础 ] Java中的浮点数分析
点击:142 发布日期:06/13
浮点数分为单精度和双精度,Java中的单精度和双精度分别为float和double.你们知道float和double是怎么存储的吗?
float占4个字节,double占8个字节,为了方便起见,这里就只讨论float类型. float其实和一个int型的大小是一样的,一共32位,第一位表示符号,2-9表示指数,后面23位表示小数部分.这里不多说,请参考:http://blog.csdn.net/treeroot/archive/2004/09/05/95071.aspx
这里只举一个例子,希望能抛砖引玉,就是研究一下浮点数0.1的存储形式,先运行这个程序.
public class Test{ public static void main(String[] args) { int x = 0x3d800000; int i = 1 << 22; int j = 1 << 4; float f = 0.1f; int y = Float.floatToIntBits(f); float rest = f - ( (float) 1) / j; while (i > 0) { j <<= 1; float deta = ( (float) 1) / j; if (rest >= deta) { rest -= deta; x |= i; } i >>= 1; } pr(x); pr(y); } static void pr(int i) { System.out.println(Integer.toBinaryString(i)); } } ..
- 共有276条信息 1 - 30 1/10页 30个/页 上一页 下一页