获取内部类静态成员的方法

最近需要些一个可配置的索引构建程序,需要在运行时调用Lucene包的如下类及其成员:

  引用

  Nested Class Summary

  static class Field.Index

  Specifies whether and how a field should be indexed.

  static class Field.Store

  Specifies whether and how a field should be stored.

  static class Field.TermVector

  Specifies whether and how a field should have term vectors.

  lucene api中称之为Nested Class,意为嵌套类,而嵌套类内部的File.Index的成员又是静态成员。

  引用
[code]
  Field Summary

  static Field.Index ANALYZED

  Index the tokens produced by running the field's value through an Analyzer.

微软与Eclipse成伙伴推进Azure开发

外媒消息,Eclipse欧洲峰会于本周在德国的路德维希堡举行了。微软在此宣布了一系列项目计划。其中一项是协助帮助Eclipse的开发人员开发基于Windows 7 和Windows Server 2008 R2的新功能。另一项是可以让Java和PHP的开发者在Eclipse的开发环境下,开发适用于微软Azure云平台的应用程序。对于Silverlight暨微软的富媒体应用的支持也在这些计划项目之列。

在对Windows 7 和Windows Server的支持方面,微软已经联合了Tasktop技术公司,该公司掌握着Mylyn技术。2010年上半年,该公司将发布基于EPL协议发布Eclipse扩展包。作为该公司太阳神计划的一部分,将提供专为Windows 7任务栏元素扩展而设计的SWT工具箱。

  Soyatec科技公司帮助微软开发针对Silverlight的Eclipse工具。这样Eclipse程序员就可以在熟悉的环境下为Azure开发Web应用程序了,仅仅需要安装一些专为Windows Azure设计的开源插件。目前还只有一个技术社区预览版(CTP),不过估计年底1.0版将会推出;并且已经开始为Java程序员开发一款免费的Windows Azure SDK了。

如何启动Java应用的Shell脚本

对于Java应用程序(非web应用),在部署后,常常需要一个启动脚本来加载一些第三方的jar包,并启动应用。

对于java应用程序,作者一般喜欢将程序的目录结构写成如下的方式:

myapp 


|----lib 


|----bin 


|----packages 

一些配置文件和属性文件

一个startup.sh、或bat启动脚本

其中,packages是程序的根包。其中有子包和class文件等。

在包中,有一个Main.calss的类,这个作为程序的入口。

下面给出一个最一般的写法:

[code]
startup.sh #!/bin/sh programdir="."

num=$#

temp=$CLASSPATH

#setting libs path

libs=../lib/*

append(){

temp=$temp":"$1

}

for file in $libs; do

append $file

done

export CLASSPATH=$temp:.:../:$programdir

最新消息

Google正在进行名为Noop的语言项目,针对JVM。这将是一个看起来很像Java的、运行在JVM上的语言,而目标则是在语言起步的时候就建立起依赖注入(dependency injection)以及可测试性,而无须像其他语言一样依靠第三方库。官网上称Noop的意图在于鼓励良好的编码习惯。

依赖注入之外,Noop关注可测试性、不变性、可阅读性、属性(properties)以及强类型。Noop还注重可执行的、更新及时的文档。Noop官方网站是这么叙述的:“依赖注入改变了我们编写软件的方法。”

如何销毁对象

在任何一个面向对象的语言中,这个对象销毁机制都是很重要的。因为如果对象不能够被及时的回收,那么很多没用的对象就仍然会占用内存地址。久而久之,就会导致内存耗竭,从而导致服务器当机。

在这个对象的销毁上,Java语言比其他面向对象的语言更胜一筹。因为其他面向对象的语言,需要在程序代码中手工回收废弃的对象。不过Java语言则不同。在Java语言中拥有一套完整的对象垃圾回收机制。即程序开发人员不需要手工的回收废弃的对象。垃圾回收器将回收无用对象所占用的内存资源。不过这个垃圾回收器并不是万能的,需要结合其他的对象回收方式,才能够最终解决这个对象回收的问题。在Java中,总共有三种方式可以用来解决对象回收的问题,笔者将他们称为三把利剑。

第一把剑:垃圾回收器

垃圾回收器是Java平台中用的最频繁的一种对象销毁方法。垃圾回收器会全程侦测Java应用程序的运行情况。当反先有些对象成为垃圾时,垃圾回收器就会销毁这些对象,并释放这些对象所占用的内存空间。在这里,程序开发人员需要知道,在哪些情况下垃圾回收器会认为这些对象是垃圾对象。通常情况下,如果发生以下两种情况时,系统会认为这些对象是垃圾对象,需要销毁。

如何比较对象

一、跟对象比较的几个相关的概念

为了更加审核的理解对象比较的含义以及多个比较方法之间的差异,笔者认为读者首先需要了解几个相关的概念,或者说几对关系。

一是类与对象的关系。类是具体的抽象,而对象是类的具体实现。这可能听起来还是有点模糊。做一个形象的比喻,类就好像是用来制作塑料盒子的模具,只要将PVC料注入到这个模具中就可以生产对应形状的盒子。而对象就好像是生产出来的盒子。虽然模具同一个,但是生产出来的盒子彼此之间仍然是不同的。一方面先天性就是不同的。因为根据相对论可以说明世界上没有两个相同的东西。其次后天性的影响,也会导致其不同。如生产出来后,在两个盒子上分别贴上不同的条码,他们两个就代表不同的盒子了。了解这个类与对象之间的关系,对于了解对象之间进行比较,会有很大的帮助。

二是需要知道类与对象在内存中的实际存储情况。当程序员定义一个类时(不含有静态成员或者变量),一般不会在内存中给其分配一个存储结构。而只有定义对象时,才会在内存中分配存储结构。当利用同一个类定义不同的对象时,系统会在内存中为不同的对象创建不同的存储结构。也就是说,会对应不同的内存地址。虽然同一个类中定义出来的对象,其内容可能相同(成员变量、成员方法等等都相同),但是其内存中的地址仍然是不同的。

循规蹈矩-Java开发编程规范

命名规范

定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性)

Package 的命名

Package 的名字应该都是由一个小写单词组成。

Class 的命名

Class 的名字必须由大写字母开头而其他字母都小写的单词组成

Class 变量的命名

变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。

Static Final 变量的命名

Static Final 变量的名字应该都大写,并且指出完整含义。

参数的命名

参数的名字必须和变量的命名规范一致。

数组的命名

数组应该总是用下面的方式来命名:

byte[] buffer;

而不是:

byte buffer[];

方法的参数

使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:

SetCounter(int size){ 
this.size = size; 
} 

Java 文件样式

如何对Java Web三层架构进行配置

一、软件下载:

1、java

这里使用的是jdk1.4.2。

下载地址:http://dlc.sun.com/jdk/j2sdk-1_4_2_07-windows-i586-p.exe;

2、tomcat

这里的tomcat的版本是5.0的,安装版或是解压版都是可以的。

下载地址:http://apache.linuxforum.net/dis ... a-tomcat-5.0.28.exe

3、数据库

推荐使用mysql,but暂时找不到下载地址,由于此次偶们班有课程设计要用sqlserver的,所以下面实践会使用sqlserver(找张安装盘安装)

注:连接sqlserver需要三个jar文件(文件名ms开头),可从这里下载:

http://www.softhouse.com.cn/html ... 11250300001646.html

上面包括完整的配置方法

二、软件安装 :

1.双击安装jdk。装完后在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:

(假设你的JDK安装在c:/jdk)

JDK_HOME=C:jdk

转载:Java软件架构师所要需的东西

作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。

一、Java编程入门类

对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵吞枣不求甚解”,先对Java熟悉起来再说。用很短的时间快速过一遍Java语法,连懵带猜多写写代码,要“知其然”。

1、《Java编程思想》

在有了一定的Java编程经验之后,你需要“知其所以然”了。这个时候《Java编程思想》是一本让你知其所以然的好书,它对于基本的面向对象知识有比较清楚的交待,对Java基本语法,基本类库有比较清楚的讲解,可以帮你打一个良好的Java编程基础。这本书的缺点是实在太厚,也比较罗嗦,不适合现代人快节奏学习,因此看这本书要懂得取舍,不是每章每节都值得一看的,挑重点的深入看就可以了。

2、《Agile Java》中文版

Java巧入门

学JAVA时间短了,可总没有一点自己原创的东西,今天就以写IDE开发工具的使用技巧作为我原创的开始吧,希望大家能喜欢这篇文章,也希望鄙文能对广大初学JAVA的朋友有一点帮助!在使用JCRETOR过程中,自己摸索出了一点点使用技巧,在这里供广大和我一样的初学者参考!

技巧1: 建立空项目进行JAVA编程;

在进行编程的时候最好首先建立一个空项目,然后在这个空项目里,编辑自己的JAVA程序;其实这是一个很好的习惯,你可以在这个项目里建立你自己的包,把你所编辑的源程序程序,按功能的不同分别放进不同的包里;这样在你学习JAVA一定长的时间后,你就拥有了一个属于你自己的包,这对你以后学习或查相关代码就很方便。

建立空项目的方法,或许大家都知道,不过在这里我还是罗嗦一下:):

按JCRETOR的菜单顺序,创建方法如下:

File??>New??>Project??>EmptyProject;

哈,其实很简单!祝你也早日拥有自己的类库!

技巧2: Jcretor对JDK的帮助文档提供了很好的支持;

如何使用布局管理器

很多初学者在用Java布局器自动布局画界面时,经常遇见不知道如何定义区域大小或按钮之间的距离等问题。我写过一篇《实现JAVA手动布局中各个组件能随窗口变化的方法》的文章,有读者反映算坐标不好算,问能不能用布局器实现文章中的界面。其实自动布局也可以解决定义区域大小或按钮之间的距离等问题,只是没有手动布局那么灵活。下面我就举一个例子。

首先,建一个frame文件(Application应用程序),在Design中将this中的layout设置为BorderLayout。

第二,在组件盘内点选Swing Container页签,选取Jpanel图标,在this中上方拖拽一块区域,布局器会自动调整位置与大小;同样的方法在中下方也拖拽一块区域;在Swing Container页签,选取jScrollPane图标,将jScrollPane在中间拖拽一块区域。拖拽的顺序一定要先上后下再中间。为了方便区分,在Properties的background中,将上方的Jpanel1区域设置为红色,下方的Jpanel2区域设置为橙色,中间的jScrollPane1为粉红色。将Jpanel1和Jpanel2的layout设置为flowLayout(必须要手动设置,不要采用默认值)。

Java2容器类类库介绍

容器类可以大大提高编程效率和编程能力,在Java2中,所有的容器都由SUN公司的Joshua Bloch进行了重新设计,丰富了容器类库的功能。

Java2容器类类库的用途是“保存对象”,它分为两类:

Collection----一组独立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set不能有重复元素。

Map----一组成对的“键值对”对象,即其元素是成对的对象,最典型的应用就是数据字典,并且还有其它广泛的应用。另外,Map可以返回其所有键组成的Set和其所有值组成的Collection,或其键值对组成的Set,并且还可以像数组一样扩展多维Map,只要让Map中键值对的每个“值”是一个Map即可。

1.迭代器

迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

Java中的Iterator功能比较简单,并且只能单向移动:

(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。

(2) 使用next()获得序列中的下一个元素。

顶级PHP模板引擎分享

Smarty
Smarty的特点是将模板编译成PHP脚本,然后执行这些脚本。很快,非常灵活。

Heyes Template Class
一个非常容易使用,但功能强大并且快速的模板引擎,它帮助你把页面布局和设计从代码中分离。

FastTemplate
一个简单的变量插值模板类,它分析你的模板,把变量的值从HTML代码中分离处理。

ShellPage
一个简单易用的类,可以让你的整个网站布局基于模板文件,修改模板就能改变整个站点。

STP Simple Template Parser
一个简单、轻量级并且易于使用的模板分析类。它可以从多个模板中组装一个页面,把结果页面输出到浏览器或者文件系统。

OO Template Class
一个你可以用在自己程序中的面向兑现的模板类。

SimpleTemplate
一个可以创建和结构化网站的模板引擎。它可以解析和编译模板。

bTemplate
短小但是快速的模板类,允许你把PHP逻辑代码从HTML修饰代码中分离。

Savant
一个强大且轻量级的PEAR兼容模板系统。它是非编译型的,使用PHP语言本身做为它的模板语言。

ETS - easy template system
可以使用完全相同数据重组模板的模板系统。

EasyTemplatePHP

基于Java平台的开发工具介绍

平台中立性是Java的本质特性,它使得Java无与伦比地适合于以网络为中心的计算。假如你正在开发Java应用程序,并且希望它能够运行于从网络计算机到UNIX工作站等几乎所有的平台之上,那你就应该将平台中立性奉为圣旨,时刻牢记心中。

不幸的是,很可能你正在使用Windows开发平台。许多基于Windows的开发工具实际上无助于获得平台中立性。

那么到底哪一种工具更适合于开发独立于平台的应用程序呢?当我们谈论在众多的Java虚拟机之中Java字节代码的兼容性时,这个问题变得难于回答——因为JavaDevelopmentKit仍然在快速的发展。

不过,在如今可视化程序设计的时代,我们可以轻易地鉴别出哪一个工具更好的开发了Java的平台独立性。

1.JBuilder6

推荐程度:Jbuilder6进入了Java集成开发环境的王国,它满足很多方面的应用,尤其是对于服务器方以及EJB开发者们来说。然而可能是因为这个领域中的激烈竞争,这款软件并没有完全占据集成开发环境的市场。下面具体介绍一下Jbuilder的特点:

.Jbuilder支持最新的Java技术,包括Applets﹑JSP/Servlets﹑JavaBean﹑EnterpriseJavaBeans﹑CORBA应用。

最好wordpress 插件逐个数

  管理wordpress评论的插件

Subscribe To Comments- 允许读者订阅特定一篇日志的留言提醒
WP AJAX Edit Comments- 利用AJAX技术,允许读者和管理员在日志中修改留言.
Close Old Posts- 直接关闭旧日志的留言功能.
WP Grins- 在日志中和留言框上提供可直接点击的表情.
WordPress Paged Comments- 评论分页功能,适合一些评论数较多的博客
Live Comment Preview- 实现留言实时预览最简单的方法.
Show Top Commentators- 在侧边栏显示评论榜,鼓励读者留言的好方法。
MyAvatars- 在评论中显示你 MyBlogLog上的头像
Comment Relish- 给在你博客第一次留言的读者发一封感谢信.
Favatars- 显示留言者网站的favicon图标.
Brian’s Threaded Comments- 为每个留言添加一个“回复”按钮,这样读者之间可以更好的针对某一问题讨论
Dofollow- 移除评论中的nofollow标签.
OpenID Comments for Wordpress- 允许读者使用OpenID登陆、评论.

Java 无用特性十个数列举

Java已经很庞大了,其中确实充斥了很多不常用的功能,JavaLobby中的一篇文章评出了十大最无用特性。

10) const,goto

什么?没错,它们都是Java的关键字,但它们什么也不干。

9) Java的些许趣味

像Personal Java,JavaOS.

8) 索引化的Jar

索引化的Jar是指这样的Jar文件中包含有一个特殊的索引文件(META-INF/INDEX.LIST),该文件用于指定该Jar中有哪些包。在Ant中,可用index="true".它的目的是为了Applet和Webstart应用能够延迟加载Jar文件,并提高类加载的速度。

7) bin目录中的多数exe文件

例如,javah.exe,javadoc.exe,jdb.exe,jar.exe.它们已被Ant,Maven和IDE取代了。

译者:虽然较少直接使用这些工具,但学会使用它们还是很有好处的。比如,在某时,我们手边并没有Ant,Maven或Eclipse之类的工具,特别当只是出于简单的应用,直接使用命令会更加便捷。

6) Applet

它在10年前很流行,从那开始,它的流行度就一直在下降。但Applet将会在Java SE 6 update 10中卷土重来。

从J2SE看掌握Java的标准

时常看到一些人说掌握了Java,但是让他们用Java做一个实际的项目可能又困难重重,在这里,笔者根据自己的一点理解斗胆提出自己的一些对掌握Java这个说法的标准,当然对于新手,也可以提供一个需要学习哪些内容的参考。另外这个标准仅限于J2SE部分,J2EE部分的内容有时间再另说.
1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。
2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、HtmlConverter、jar、java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解。
3、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。

为提高Java Beans铺路

  Java类的选择是真的只用一个typesafe解决方案,而其通过改进风格,这些类可以更好的代替structs,而且有他们自己的一些优势。

  举个带有两个arguments的一个返回类——一个name和一个 date of birth:

         public class PersonNameDOB { 

  private String name;

  private Date dob;

  public Date getDob() {

  return dob;

  }

  public void setDob(Date dob) {

  this.dob = dob;

  }

  public String getName() {

  return name;

  }

  public void setName(String name) {

  this.name = name;

  }

  }

Flex开源框架列举

Cairngorm
Cairngorm是一个最早最为成熟的FLEX框架,现在已归为ADOBE门下.
PureMVC
它其实是一个ActionScript 3框架,不像Cairngorm,它并不是针对FLASH,FLEX或者其它ADOBE AS3.0类。它是一个用于开发基于FLASH的AS 3.0的任何程序.
Model-Glue: Flex
Model-Glue是一种简单的MVC的FLEX框架,Model-Glue拥有COLDFUSION接口.它相比以上两款更为轻巧.
Foundry
ServeBox Foundry ( sbasfoundry )是一个ActionScript 3 / Java框架针对Flex 2应用开发者.
Guasax Flex Framework
Guasax是一个易用的程序框架,为保证新老FLEX应用的扩展.
ARP
ARP (Ariaware RIA Platform)是一个基于ActionScript的框架,它是一个Open Source Flash 项目.
Flest Framework
Flest 是一个ActionScript3 / Flex框架.

以上的框架可以从EasyMVC, Adobe FAST 和 Joeberkovitz's framework签出.
其它的一些还有

Java平台支持的三种事务模型

事务对于确保数据的完整性与一致性是至关重要的。要想完全理解事务,必须得熟悉一些基本概念、模型还有策略。Mark Richards说到“混淆事务模型与事务策略是个常见错误”。这篇文章谈到了“Java™平台所支持的三种事务模型并对基于这些模型的四种主要事务策略展开了讨论。通过使用Spring Framework及Enterprise JavaBeans(EJB)3.0的一些示例,Mark介绍了事务模型的工作方式及他们缘何能作为从基本的事务处理到高速事务处理系统的基石” 。
Java平台支持三种事务模型:
* 本地事务模型——事务由DB资源而不是应用容器或框架管理。开发者管理连接而不是事务。
* 编程式事务模型——开发者从事务管理器中获取事务,之后需要自己编写事务启动、提交、异常及回滚代码。
* 声明式事务模型——最常见的模型,又叫做容器管理事务。在这种模型下,容器管理着事务,开发者定义(声明)事务的行为和参数。
但这种支持仅能描述事务基本信息和期望行为以及使用的语法和规则。事务策略能够解决如下问题:何时需要使用REQUIRED或MANDATORY属性、特定的指令、使用哪种模型及如何对特定的情况进行优化。
Mark在之前的一篇文章中讨论了事务模型的优势与陷阱。

页面

订阅 JAVA技术网 RSS