Java心路

Java、Eclipse、Ajax......一个都不能少

 

Eclipse快捷键-方便查找,呵呵,记性不好

行注释/销注释 Ctrl+/ 
块注释/销注释 Ctrl+Shift+/   Ctrl+Shift+\
查找 查找替换 Ctrl+H  Ctrl+F
查找下一个/往回找 Ctrl+K   Ctrl+Shift+K
跳到某行 Ctrl+L,哈用惯了Editplus,不时会敲下Ctrl+G,
查找当前元素的声明 Ctrl+G
查找当前元素的所有引用 Ctrl+Shift+G
重新组织Import Ctrl+Shift+O,能帮你一次去掉所有未使用的Import声明!
快速修正 Ctrl+1
引入某个类(接口)ctrl + shift + m
加头注释 shift + alt + j
 

ctrl  +  shift  +  g:查看引用  
ctrl  +  shift  +  n:重命名  
ctrl  +  shift  +  o:导入类  
ctrl  +  shift  +  r:启动上次运行  
ctrl  +  shift  +  f:格式化代码  
ctrl  +  c:复制  
ctrl  +  v:粘贴  
ctrl  +  x:切剪  
ctrl  +  a:全选  
ctrl  +  f:查找  
ctrl  +  z:撤销  
ctrl  +  y:重做  
ctrl  +  s:保存  
---------------------------------------------------------------  
 
用的最多的应该就是CTRL+SHIFT+S  
还有格式化用的也挺多。  
---------------------------------------------------------------  
 
ctrl  +  shift  +  f  格式化代码  
ctrl  +  shift  +  o  组织导入  
F3    打开声明  
Alt  +  shift  +  r    重命名变量  
 
---------------------------------------------------------------  
 
up  
---------------------------------------------------------------  
 
Alt+/        
 
---------------------------------------------------------------  
 
alt  +  left  
alt  +  right  
ctrl  +  q  
---------------------------------------------------------------  
 
ctrl  +  shift  +  g:查看引用  
ctrl  +  shift  +  n:重命名  
ctrl  +  shift  +  f:格式化代码  
ctrl  +  c:复制  
ctrl  +  v:粘贴  
ctrl  +  a:全选  
ctrl  +  f:查找  
ctrl  +  z:撤销  
ctrl  +  s:保存  
Alt    +  /  智能提示  
---------------------------------------------------------------  
 
ctrl  +  shift  +  g:查看引用  
ctrl  +  shift  +  n:重命名  
ctrl  +  shift  +  o:导入类  
ctrl  +  shift  +  r:启动上次运行  
ctrl  +  shift  +  f:格式化代码  
ctrl  +  c:复制  
ctrl  +  v:粘贴  
ctrl  +  x:切剪  
ctrl  +  a:全选  
ctrl  +  f:查找  
ctrl  +  z:撤销  
ctrl  +  y:重做  
ctrl  +  s:保存  
Alt    +  /  智能提示  
F3    打开声明  
Alt  +  shift  +  r    重命名变量  
其实最常用的就是下面几个:  
 
ctrl  +  shift  +  o:导入类  
 
ctrl  +  shift  +  f:格式化代码  
ctrl  +  c:复制  
ctrl  +  v:粘贴  
ctrl  +  x:切剪  
ctrl  +  z:撤销  
ctrl  +  s:保存  
Alt    +  /  智能提示  
 
---------------------------------------------------------------  
 
Ctrl+M:  工作区最大化/最小化  
Alt+/:    智能提示  
F3:          察看声明  
Crtl+1:  修正错误  
 
Shift+Alt+T:  重构  
Shift+Alt+M:  提取函数  
Shift+Alt+R:  重命名  
Shift+Alt+C:  更改函数标记  
 
Ctrl+Shitf+F:  格式化代码  
 
---------------------------------------------------------------  
 
ctrl  +  shift  +  o:导入类  
atl  +  /:提示  
ctrl  +  shift  +  t:查找相关信息  
---------------------------------------------------------------  
 
Eclipse快捷键指南                                                                          
编辑  
作用域            功能            快捷键  
全局            查找并替换            Ctrl+F  
文本编辑器            查找上一个            Ctrl+Shift+K  
文本编辑器            查找下一个            Ctrl+K  
全局            撤销            Ctrl+Z  
全局            复制            Ctrl+C  
全局            恢复上一个选择            Alt+Shift+↓  
全局            剪切            Ctrl+X  
全局            快速修正            Ctrl1+1  
全局            内容辅助            Alt+/  
全局            全部选中            Ctrl+A  
全局            删除            Delete  
全局            上下文信息            Alt+?  
Alt+Shift+?  
Ctrl+Shift+Space  
Java编辑器            显示工具提示描述            F2  
Java编辑器            选择封装元素            Alt+Shift+↑  
Java编辑器            选择上一个元素            Alt+Shift+←  
Java编辑器            选择下一个元素            Alt+Shift+→  
文本编辑器            增量查找            Ctrl+J  
文本编辑器            增量逆向查找            Ctrl+Shift+J  
全局            粘贴            Ctrl+V  
全局            重做            Ctrl+Y  
   
查看  
作用域            功能            快捷键  
全局            放大            Ctrl+=  
全局            缩小            Ctrl+-  
   
窗口  
作用域            功能            快捷键  
全局            激活编辑器            F12  
全局            切换编辑器            Ctrl+Shift+W  
全局            上一个编辑器            Ctrl+Shift+F6  
全局            上一个视图            Ctrl+Shift+F7  
全局            上一个透视图            Ctrl+Shift+F8  
全局            下一个编辑器            Ctrl+F6  
全局            下一个视图            Ctrl+F7  
全局            下一个透视图            Ctrl+F8  
文本编辑器            显示标尺上下文菜单            Ctrl+W  
全局            显示视图菜单            Ctrl+F10  
全局            显示系统菜单            Alt+-  
   
导航  
作用域            功能            快捷键  
Java编辑器            打开结构            Ctrl+F3  
全局            打开类型            Ctrl+Shift+T  
全局            打开类型层次结构            F4  
全局            打开声明            F3  
全局            打开外部javadoc            Shift+F2  
全局            打开资源            Ctrl+Shift+R  
全局            后退历史记录            Alt+←  
全局            前进历史记录            Alt+→  
全局            上一个            Ctrl+,  
全局            下一个            Ctrl+.  
Java编辑器            显示大纲            Ctrl+O  
全局            在层次结构中打开类型            Ctrl+Shift+H  
全局            转至匹配的括号            Ctrl+Shift+P  
全局            转至上一个编辑位置            Ctrl+Q  
Java编辑器            转至上一个成员            Ctrl+Shift+↑  
Java编辑器            转至下一个成员            Ctrl+Shift+↓  
文本编辑器            转至行            Ctrl+L  
   
搜索  
作用域            功能            快捷键  
全局            出现在文件中            Ctrl+Shift+U  
全局            打开搜索对话框            Ctrl+H  
全局            工作区中的声明            Ctrl+G  
全局            工作区中的引用            Ctrl+Shift+G  
   
文本编辑  
作用域            功能            快捷键  
文本编辑器            改写切换            Insert  
文本编辑器            上滚行            Ctrl+↑  
文本编辑器            下滚行            Ctrl+↓  
   
文件  
作用域            功能            快捷键  
全局            保存            Ctrl+X    
Ctrl+S  
全局            打印            Ctrl+P  
全局            关闭            Ctrl+F4  
全局            全部保存            Ctrl+Shift+S  
全局            全部关闭            Ctrl+Shift+F4  
全局            属性            Alt+Enter  
全局            新建            Ctrl+N  
   
项目  
作用域            功能            快捷键  
全局            全部构建            Ctrl+B  
   
源代码  
作用域            功能            快捷键  
Java编辑器            格式化            Ctrl+Shift+F  
Java编辑器            取消注释            Ctrl+  
Java编辑器            注释            Ctrl+/  
Java编辑器            添加导入            Ctrl+Shift+M  
Java编辑器            组织导入            Ctrl+Shift+O  
Java编辑器            使用try/catch块来包围            未设置,太常用了,所以在这里列出,建议自己设置。  
也可以使用Ctrl+1自动修正。  
   
运行  
作用域            功能            快捷键  
全局            单步返回            F7  
全局            单步跳过            F6  
全局            单步跳入            F5  
全局            单步跳入选择            Ctrl+F5  
全局            调试上次启动            F11  
全局            继续            F8  
全局            使用过滤器单步执行            Shift+F5  
全局            添加/去除断点            Ctrl+Shift+B  
全局            显示            Ctrl+D  
全局            运行上次启动            Ctrl+F11  
全局            运行至行            Ctrl+R  
全局            执行            Ctrl+U  
   
重构  
作用域            功能            快捷键  
全局            撤销重构            Alt+Shift+Z  
全局            抽取方法            Alt+Shift+M  
全局            抽取局部变量            Alt+Shift+L  
全局            内联            Alt+Shift+I  
全局            移动            Alt+Shift+V  
全局            重命名            Alt+Shift+R  
全局            重做            Alt+Shift+Y 
 


posted @ 2007-02-23 23:06 bisal 阅读(37585) | 评论 (1)编辑 收藏

OA系统开发的一些感想。。。

    前段时间一直在做北京市某个区政府文书科的一个公文接收的自动化系统,自己有一些感想,在这里写出来。感觉政府中的这种OA与企业的OA确实存在着一些差 距,尤其是组织制度上,工作流的流程比较复杂,突出的一点就是显示出领导之间级别的对待,一个公文来的时候,科长总会先审查,再由文书员进行处理,之后再 给更高级的领导审阅,而催办的意见公文回来的时候又要让相关的一些领导查看,但其中的某些环节中查看和填写修改的权限又是对一些领导或人员是屏蔽的,这些 权限和功能的使用范围与领导级别又是紧密相关的,还有就是当这个系统想要试用一下的时候,因为政府内各个部门之间的关系,所以不是太好地进行测试试用,总 之,针对不同的行业,开发这样的系统都要“因地制宜”,确实存在着一些阻碍和困难。
 

posted @ 2007-01-10 13:08 bisal 阅读(619) | 评论 (1)编辑 收藏

SCJP,新的起点

        经过几天的闭门修炼,今天早上怀揣着450元钱(准备重考的钱)踏上了去往中软的路途。。。
        八点半就到了,填了表单后,决定马上就考。。。那个刘老师还挺好,一步一步指导我进行操作,正式考试开始了,前几道题没有见过,有些个题确实有些绕,从中间之后便见到了许多在参考资料中做过的题,有几道题还是觉得答案有错,亲自运行过的,不过不知道正确不正确,总之是心里有些印象。。。身边坐的前一个人考的是Oracle的,后一个人考的是IBM的认证,都是很快就交了,强人。。。我很快地做完了第一遍,看了下还剩1小时24分钟。。。在家里做过几个 Demo,结果大部分都是在52%左右,网上都是如果没有达到60%的话就别去考。。。但是当做第三个开始的时候,就感觉做题速度明显加快,能在1小时内做完第一遍。。。今天只用了30多分钟,之后开始了检查,一共检查了三遍,检查出了几道题的错,但仍有些拿不准的。。。最后下了决心,点了结束键。。。成绩单出来了,85%通过,错了9道题!其中集合类只对了66%,比较差。。。出了考场,回想了一下,心里又感觉不出一些的激动。。。也许是这段时间的忙碌让自己已经不习惯这种感觉了,也许是因为还有许多的事,许多的考试等着我去做。。。但不管怎么样,还是走过了一关,虽然有些遗憾,感觉这套题自己应该达到 90%,但毕竟还是对自己的一个考验,这期间的心理变化也许只有我自己才能够体会出来。。。在漫漫长路中,偶尔的一个驿站也许能够让你卸下一些包袱,但依旧不能太放松心情,就像现在,虽然通过了这个考试,但它只是一个基础,并不代表你就能做什么,蔡学庸曾说过,一个人有认证,又有口才,在面试中能够占有优势,但时间一长,还是需要用其它方面的优势来证明,的确是这样,能力才是我们应该拥有的,认证无非就是一张纸,多了只是增加纸的厚度,自己能力上有没有提高也许只有自己才知道。。。好了,现在又暂时少了一件事,马上就要开始复习期末考试了,不过还是希望燃气、通州那边暂时没有什么事,否则又该招架不住了。。。呵呵,加油吧!朝着又一个目标前进!   

posted @ 2006-12-19 23:24 bisal 阅读(249) | 评论 (1)编辑 收藏

java开发代码规范

一、目的   
   对于代码,首要要求是它必须正确,能够按照程序员的真实思想去运行;第二个的要求是代码必须清晰易懂,使别的程序员能够容易理解代码所进行的实际工作。 在软件工程领域,源程序的风格统一标志着可维护性、可读性,是软件项目的一个重要组成部分。而目前还没有成文的编码风格文档,以致于很多时候,程序员没有 一个共同的标准可以遵守,编码风格各异,程序可维护性差、可读性也很差。通过建立代码编写规范,形成开发小组编码约定,提高程序的可靠性、可读性、可修改 性、可维护性、可继承性和一致性,可以保证程序代码的质量,继承软件开发成果,充分利用资源,使开发人员之间的工作成果可以共享。
   本文在参考业界已有的编码风格的基础上,描述了一个基于 JBuilder 的项目风格,力求一种统一的编程风格,并从整体编码风格、代码文件风格、函数编写风格、变量风格、注释风格等几个方面进行阐述。(这些规范并不是一定要绝 对遵守,但是一定要让程序有良好的可读性)

二、整体编码风格
1、缩进
   缩进建议以4个空格为单位。建议在 Tools/Editor Options 中设置 Editor 页面的Block ident为4,Tab Size 为8。预处理语句、全局数据、标题、附加说明、函数说明、标号等均顶格书写。语句块的"{"、"}"配对对齐,并与其前一行对齐,语句块类的语句缩进建议 每个"{"、"}"单独占一行,便于匹对。JBuilder 中的默认方式是开始的"{"不是单独一行,建议更改成上述格式(在 Project/Default Project Properties 中设置 Code Style 中选择 Braces 为 Next line)。
2、空格
   原则上变量、类、常量数据和函数在其类型,修饰名称之间适当空格并据情况对齐。关键字原则上空一格,如:if ( ... ) 等。运算符的空格规定如下:"::"、"->"、"["、"]"、"++"、"--"、"~"、"!"、"+"、"-"(指正负号)、"& "(引用)等几个运算符两边不加空格(其中单目运算符系指与操作数相连的一边),其它运算符(包括大多数二目运算符和三目运算符"?:"两边均加一空格, 在作函数定义时还可据情况多空或不空格来对齐,但在函数实现时可以不用。","运算符只在其后空一格,需对齐时也可不空或多空格。不论是否有括号,对语句 行后加的注释应用适当空格与语句隔开并尽可能对齐。个人认为此项可以依照个人习惯决定遵循与否。
3、对齐
   原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。另每一行的长度不应超过屏幕太多,必要时适当换行,换行时尽可能在","处或 运算符处,换行后最好以运算符打头,并且以下各行均以该语句首行缩进,但该语句仍以首行的缩进为准,即如其下一行为“{”应与首行对齐。
   变量定义最好通过添加空格形成对齐,同一类型的变量最好放在一起。如下例所示:
int        Value;
int        Result;
int        Length;
DWORD      Size;
DWORD      BufSize;
个人认为此项可以依照个人习惯决定遵循与否。
4、空行
不 得存在无规则的空行,比如说连续十个空行。程序文件结构各部分之间空两行,若不必要也可只空一行,各函数实现之间一般空两行,由于每个函数还要 有函数说 明注释,故通常只需空一行或不空,但对于没有函数说明的情况至少应再空一行。对自己写的函数,建议也加上“//------”做分隔。函数内部数据与代码 之间应空至少一行,代码中适当处应以空行空开,建议在代码中出现变量声明时,在其前空一行。类中四个“p”之间至少空一行,在其中的数据与函数之间也应空 行。
5、注释
注释是软件可读性的具体体现。程序注释量一般占程序编码量的20%,软件工程要求不少于20%。程序注释不能用抽象 的语言,类似于"处理"、"循 环"这样 的计算机抽象语言,要精确表达出程序的处理说明。例如:"计算净需求"、"计算第一道工序的加工工时"等。避免每行程序都使用注释,可以在一段程序的前面 加一段注释,具有明确的处理逻辑。
注释必不可少,但也不应过多,不要被动的为写注释而写注释。以下是四种必要的注释:
A. 标题、附加说明。
B. 函数、类等的说明。对几乎每个函数都应有适当的说明,通常加在函数实现之前,在没有函数实现部分的情况下则加在函数原型前,其内容主要是函数的功能、目 的、算法等说明,参数说明、返回值说明等,必要时还要有一些如特别的软硬件要求等说明。公用函数、公用类的声明必须由注解说明其使用方法和设计思路,当然 选择恰当的命名格式能够帮助你把事情解释得更清楚。
C. 在代码不明晰或不可移植处必须有一定的说明。
D. 及少量的其它注释,如自定义变量的注释、代码书写时间等。
注释有块注释和行注释两种,分别是指:"/**/"和"//"建议对A用块注释,D用行注释,B、C则视情况而定,但应统一,至少在一个单元中B类注释形式应统一。具体对不同文件、结构的注释会在后面详细说明。
6、代码长度
对 于每一个函数建议尽可能控制其代码长度为53行左右,超过53行的代码要重新考虑将其拆分为两个或两个以上的函数。函数拆分规则应该一不破坏原 有算法为 基础,同时拆分出来的部分应该是可以重复利用的。对于在多个模块或者窗体中都要用到的重复性代码,完全可以将起独立成为一个具备公用性质的函数,放置于一 个公用模块中。
7、页宽
页宽应该设置为80字符。源代码一般不会超过这个宽度, 并导致无法完整显示, 但这一设置也可以灵活调整. 在任何情况下, 超长的语句应该在一个逗号或者一个操作符后折行. 一条语句折行后, 应该比原来的语句再缩进2个字符.
8、行数
一 般的集成编程环境下,每屏大概只能显示不超过50行的程序,所以这个函数大概要5-6屏显示,在某些环境下要8屏左右才能显示完。这样一来,无 论是读程 序还是修改程序,都会有困难。因此建议把完成比较独立功能的程序块抽出,单独成为一个函数。把完成相同或相近功能的程序块抽出,独立为一个子函数。可以发 现,越是上层的函数越简单,就是调用几个子函数,越是底层的函数完成的越是具体的工作。这是好程序的一个标志。这样,我们就可以在较上层函数里容易控制整 个程序的逻辑,而在底层的函数里专注于某方面的功能的实现了。

三、代码文件风格
所有的 Java(*.java) 文件都必须遵守如下的样式规则:
. 文件生成
对于规范的 JAVA 派生类,尽量用 JBuilder 的 Object Gallery 工具来生成文件格式,避免用手工制作的头文件/实现文件。
. package/import
package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。
package hotlava.net.stats;
import java.io.*;
import java.util.Observable;
import hotlava.util.Application;  
这里 java.io.* 使用来代替InputStream and OutputStream 的。
. 文件头部注释
文 件头部注释主要是表明该文件的一些信息,是程序的总体说明,可以增强程序的可读性和可维护性。文件头部注释一般位于 package/imports 语句之后,Class 描述之前。要求至少写出文件名、创建者、创建时间和内容描述。JBuilder 的 Object Gallery 工具生成的代码中会在类、工程文件中等自动添加注释,我们也要添加一些注释,其格式应该尽量约束如下:
/**
* Title:  确定鼠标位置类
* Description: 确定鼠标当前在哪个作业栏位中并返回作业号
* @Copyright: Copyright (c) 2002
* @Company: HIT
* @author: rivershan
* @version: 1.0
* @time: 2002.10.30
*/
. Class
接下来的是类的注释,一般是用来解释类的。
/**
* A class representing a set of packet and byte counters
* It is observable to allow it to be watched, but only
* reports changes when the current set is complete
*/
接下来是类定义,包含了在不同的行的 extends 和 implements
public class CounterSet
extends Observable
implements Cloneable
.Class Fields
接下来是类的成员变量:
/**
* Packet counters
*/
protected int[] packets;
public 的成员变量必须生成文档(JavaDoc)。proceted、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释。
. 存取方法
接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。(个人认为尽量分行写)
/**
* Get the counters
* @return an array containing the statistical data.  This array has been
* freshly allocated and can be modified by the caller.
*/
public int[] getPackets()
{
return copyArray(packets, offset);
}
public int[] getBytes()
{
return copyArray(bytes, offset);
}
public int[] getPackets()
{
return packets;
}
public void setPackets(int[] packets)
{
this.packets = packets;
}
其它的方法不要写在一行上
. 构造函数
接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。
访问类型("public","private" 等.)和任何"static","final"或"synchronized"应该在一行中,并且方法和参数另写一行,这样可以使方法和参数更易读。
public
CounterSet(int size)
{
  this.size = size;
}
. 克隆方法
如果这个类是可以被克隆的,那么下一步就是 clone 方法:
public
Object clone()
{
try
  {
    CounterSet obj = (CounterSet)super.clone();
    obj.packets = (int[])packets.clone();
    obj.size = size;
    return obj;
  }  
  catch(CloneNotSupportedException e)
  {
   throw new InternalError("Unexpected CloneNotSUpportedException: "
         + e.getMessage());
  }
}
. 类方法
下面开始写类的方法:
/**
* Set the packet counters
* (such as when restoring from a database)
*/
protected final
void setArray(int[] r1, int[] r2, int[] r3, int[] r4)
throws IllegalArgumentException
{
//
  // Ensure the arrays are of equal size
  //
  if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)
throw new IllegalArgumentException("Arrays must be of the same size");
  System.arraycopy(r1, 0, r3, 0, r1.length);
  System.arraycopy(r2, 0, r4, 0, r1.length);
}
. toString 方法
无论如何,每一个类都应该定义 toString 方法:
public
String toString()
{
String retval = "CounterSet: ";
   for (int i = 0; i < data.length(); i++)
   {
      retval += data.bytes.toString();
      retval += data.packets.toString();
   }
   return retval;
}
. main 方法
如果main(String[]) 方法已经定义了, 那么它应该写在类的底部.

四、函数编写风格
. 函数的命名
通 常,函数的命名也是以能表达函数的动作意义为原则的,一般是由动词打头,然后跟上表示动作对象的名词,各单词的首字母应该大写。另外,还有一些函数命名的 通用规则。如取数,则用Get打头,然后跟上要取的对象的名字;设置数,则用Set打头,然后跟上要设的对象的名字;而对象中为了响应消息进行动作的函 数,可以命名为On打头,然后是相应的消息的名称;进行主动动作的函数,可以命名为Do打头,然后是相应的动作名称。类似的规则还有很多,需要程序员多读 优秀的程序,逐渐积累经验,才能作出好的函数命名。
. 函数注释
系统自动生成的函数,如鼠标动作响应函数等,不必太多的注释和解释;
对于自行编写的函数,若是系统关键函数,则必须在函数实现部分的上方标明该函数的信息,格式如下:
/**
* 函数名:
* 编写者:
* 参考资料:
* 功  能:
* 输入参数:
* 输出参数:
* 备  注:
*/
希望尽量遵循以上格式。

五、符号风格
. 总体要求
对于各种符号的定义,都有一个共通点,就是应该使用有实际意义的英文单词或英文单词的缩写,不要使用简单但没有意义的字串,尽可能不使用阿拉伯数字,更切忌使用中文拼音的首字母。如这样的名称是不提倡的:Value1,Value2,Value3,Value4 …。
例如:
file(文件),code(编号),data(数据),pagepoint(页面指针), faxcode(传真号) ,address(地址),bank(开户银行),……
. 变量名称
变 量命名由(前缀+修饰语)构成。现在比较流行的是一套由微软的一个匈牙利软件工程师首先使用,并且在微软推广开来,现在被称之为匈牙利命名法的命名规则。 匈牙利命名法规定,使用表示标识符所对应的变量类型的英文小写缩写作为标识符的前缀,后面在使用表示变量意义的英文单词或缩写进行命名。下面是匈牙利命名 法中的一些命名方式:
(1)生存期修饰:用l(local)表示局域变量,p(public)表示全局变量,s(send)表示参数变量
(2)类型修饰:用s(AnsiString)表示字符串,c(char)表示字符,n(number)数值,i(intger)表示整数,d(double)表示双精度,f(float)浮点型,b(bool)布尔型,d(date)表示日期型.
例如:
li_length表示整形的局域变量,是用来标识长度的.ls_code表示字符型的局域变量,用来标识代码.
. 控件名称
控件命名由(前缀+修饰语)构成。前缀即为控件的名称。
按钮变量  Button+Xxxxxxx    例如:ButtonSave,ButtonExit,ButtonPrint等
题标变量  Label+Xxxxxxxx    例如:LabelName,LabelSex等
数据表变量 Table+Xxxxxx      例如:TableFile,TableCount等
查询变量  Query+Xxxxxx      例如:QueryFile,QueryCeneter等
数据源变量 DataSource+Xxx      例如:DataSourceFile,DataSourceCenter等
。。。。。。。。。。。。。。。。
(注:对于与表有关的控件“修饰语”部分最好直接用表名。)
. Package 的命名
Package 的名字应该都是由一个小写单词组成。
. Class 的命名
Class 的名字必须由一个或数个能表达该类的意思的大写字母开头而其它字母都小写的单词或缩写组成,这样能使这个 Class 的名称能更容易被理解。
. Class 变量的命名
变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。对于类的成员变量,在对其标识符命名时,要加上代表member(成员)的前缀m_。例如一个标识符为m_dwFlag,则它表示的变量是一个类型为双字的成员变量,它是代表一个标志。
. Static Final 变量的命名
Static Final 变量的名字应该都大写,并且指出完整含义。
. 参数的命名
参数的名字必须和变量的命名规范一致。
. 数组的命名
数组应该总是用下面的方式来命名:
byte[] buffer;  
而不是:
byte buffer[];
. 方法的参数
使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:
SetCounter(int size)
{
this.size = size;
}
. 神秘的数
首 先要说什么是神秘的数。我们在程序里经常会用到一些量,它是有特定的含义的。例如,现在我们写一个薪金统计程序,公司员工有50人,我们在程序里就会用 50这个数去进行各种各样的运算。在这里,50就是"神秘的数"。为什么称它为神秘呢?因为别的程序员在程序里看到50这个数,不知道它的含义,只能靠猜 了。
在程序里出现"神秘的数"会降低程序的可读性,应该尽量避免。避免的方法是把神秘的数定义为一个常量。注意这个常量的命名应该能表达该 数的意义,并且应该全部大写,以与对应于变量的标识符区别开来。例如上面50这个数,我们可以定义为一个名为NUMOFEMPLOYEES的常量来代替。 这样,别的程序员在读程序的时候就可以容易理解了。
六、程序编写风格
. exit()
exit 除了在 main 中可以被调用外,其他的地方不应该调用。因为这样做不给任何代码代码机会来截获退出。一个类似后台服务地程序不应该因为某一个库模块决定了要退出就退出。
. 异常
申明的错误应该抛出一个RuntimeException或者派生的异常。
顶层的main()函数应该截获所有的异常,并且打印(或者记录在日志中)在屏幕上。
. 垃圾收集
JAVA使用成熟的后台垃圾收集技术来代替引用计数。但是这样会导致一个问题:你必须在使用完对象的实例以后进行清场工作。比如一个prel的程序员可能这么写:
...
{
FileOutputStream fos = new FileOutputStream(projectFile);
project.save(fos, "IDE Project File");
}
...
除非输出流一出作用域就关闭,非引用计数的程序语言,比如JAVA,是不能自动完成变量的清场工作的。必须象下面一样写:
FileOutputStream fos = new FileOutputStream(projectFile);
project.save(fos, "IDE Project File");
fos.close();
. Clone
下面是一种有用的方法:
implements Cloneable
public
Object clone()
{
try
{
ThisClass obj = (ThisClass)super.clone();
obj.field1 = (int[])field1.clone();
obj.field2 = field2;
return obj;
}
catch(CloneNotSupportedException e)
{
throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage());
}
}
. final 类
绝对不要因为性能的原因将类定义为 final 的(除非程序的框架要求)
如果一个类还没有准备好被继承,最好在类文档中注明,而不要将她定义为 final 的。这是因为没有人可以保证会不会由于什么原因需要继承她。
. 访问类的成员变量
大部分的类成员变量应该定义为 protected 的来防止继承类使用他们。
注意,要用"int[] packets",而不是"int packets[]",后一种永远也不要用。
public void setPackets(int[] packets)
{
this.packets = packets;
}
CounterSet(int size)
{
this.size = size;
}
. byte 数组转换到 characters
为了将 byte 数组转换到 characters,你可以这么做:
"Hello world!".getBytes();
. Utility 类
Utility 类(仅仅提供方法的类)应该被申明为抽象的来防止被继承或被初始化。
. 初始化
下面的代码是一种很好的初始化数组的方法:
objectArguments = new Object[]
{
arguments
};
. 枚举类型
JAVA 对枚举的支持不好,但是下面的代码是一种很有用的模板:
class Colour
{
  public static final Colour BLACK = new Colour(0, 0, 0);
  public static final Colour RED = new Colour(0xFF, 0, 0);
  public static final Colour GREEN = new Colour(0, 0xFF, 0);
  public static final Colour BLUE = new Colour(0, 0, 0xFF);
  public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);
}
这种技术实现了RED, GREEN, BLUE 等可以象其他语言的枚举类型一样使用的常量。 他们可以用 ''=='' 操作符来比较。
但是这样使用有一个缺陷:如果一个用户用这样的方法来创建颜色 BLACK
new Colour(0,0,0)
那么这就是另外一个对象,''==''操作符就会产生错误。她的 equal() 方法仍然有效。由于这个原因,这个技术的缺陷最好注明在文档中,或者只在自己的包中使用。
. 混合使用 AWT 和 Swing 组件
如果要将 AWT 组件和 Swing 组件混合起来使用的话,请小心使用。实际上,尽量不要将他们混合起来使用。
. 滚动的 AWT 组件
AWT 组件绝对不要用 JscrollPane 类来实现滚动。滚动 AWT 组件的时候一定要用 AWT ScrollPane 组件来实现。
. 避免在 InternalFrame 组件中使用 AWT 组件
尽量不要这么做,要不然会出现不可预料的后果。
. Z-Order 问题
AWT 组件总是显示在 Swing 组件之上。当使用包含 AWT 组件的 POP-UP 菜单的时候要小心,尽量不要这样使用。

八、性能
在写代码的时候,从头至尾都应该考虑性能问题。这不是说时间都应该浪费在优化代码上,而是我们时刻应该提醒自己要注意代码的效率。比如:如果没有时间来实现一个高效的算法,那么我们应该在文档中记录下来,以便在以后有空的时候再来实现她。
不是所有的人都同意在写代码的时候应该优化性能这个观点的,他们认为性能优化的问题应该在项目的后期再去考虑,也就是在程序的轮廓已经实现了以后。
. 不必要的对象构造
不要在循环中构造和释放对象
. 使用 StringBuffer 对象
在 处理 String 的时候要尽量使用 StringBuffer 类,StringBuffer 类是构成 String 类的基础。String 类将 StringBuffer 类封装了起来,(以花费更多时间为代价)为开发人员提供了一个安全的接口。当我们在构造字符串的时候,我们应该用 StringBuffer 来实现大部分的工作,当工作完成后将 StringBuffer 对象再转换为需要的 String 对象。比如:如果有一个字符串必须不断地在其后添加许多字符来完成构造,那么我们应该使用 StringBuffer 对象和她的 append() 方法。如果我们用 String 对象代替 StringBuffer 对象的话,会花费许多不必要的创建和释放对象的 CPU 时间。
. 避免太多的使用 synchronized 关键字
避免不必要的使用关键字 synchronized,应该在必要的时候再使用她,这是一个避免死锁的好方法。

posted @ 2006-12-12 23:00 bisal 阅读(564) | 评论 (0)编辑 收藏

Flexsim

        今天培训了一下Flexsim这个仿真软件,以前只学过GPSS,连Arena也没有接触过,感觉Flexsim给人的第一感觉就是比较直观,动态效果比较强,不过它的许多功能还不了解,一天的培训可能仅仅接触到了皮毛,而且关于它的一些教材也比较少,只有联机帮助,据说是许多公司都是用这个仿真软件进行仿真决策,它的功能还有待进一步地探索与开发。。。

posted @ 2006-11-18 14:18 bisal 阅读(5146) | 评论 (36)编辑 收藏

SCJP备考复习。。。

   今天终于报了SCJP,交钱的时候想都没有想。。。虽然是个挑战,但毕竟还是有许多的不利因素,尽管如此,也要全力以赴,即使没有好的结果,也不能枉费这一段特殊的经历。。。加油!为了一个梦想!

posted @ 2006-10-30 21:43 bisal 阅读(265) | 评论 (1)编辑 收藏

JSP连接数据库大全

JSP连接数据库大全


一、jsp连接Oracle8/8i/9i数据库(用thin模式)

testoracle.jsp如下:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.sql.*"%>

<html>

<body>

<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

String url="jdbc:oracle:thin:@localhost:1521:orcl";

//orcl为你的数据库的SID

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);

while(rs.next()) {%>

您的第一个字段内容为:<%=rs.getString(1)%>

您的第二个字段内容为:<%=rs.getString(2)%>

<%}%>

<%out.print("数据库操作成功,恭喜你");%>

<%rs.close();

stmt.close();

conn.close();

%>

</body>

</html>


二、jsp连接Sql Server7.0/2000数据库

testsqlserver.jsp如下:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.sql.*"%>

<html>

<body>

<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";

//pubs为你的数据库的

String user="sa";

String password="";

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);

while(rs.next()) {%>

您的第一个字段内容为:<%=rs.getString(1)%>

您的第二个字段内容为:<%=rs.getString(2)%>

<%}%>

<%out.print("数据库操作成功,恭喜你");%>

<%rs.close();

stmt.close();

conn.close();

%>

</body>

</html>


三、jsp连接DB2数据库

testdb2.jsp如下:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.sql.*"%>

<html>

<body>

<%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();

String url="jdbc:db2://localhost:5000/sample";

//sample为你的数据库名

String user="admin";

String password="";

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);

while(rs.next()) {%>

您的第一个字段内容为:<%=rs.getString(1)%>

您的第二个字段内容为:<%=rs.getString(2)%>

<%}%>

<%out.print("数据库操作成功,恭喜你");%>

<%rs.close();

stmt.close();

conn.close();

%>

</body>

</html>


四、jsp连接Informix数据库

testinformix.jsp如下:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.sql.*"%>

<html>

<body>

<%Class.forName("com.informix.jdbc.IfxDriver").newInstance();

String url =

"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver;

user=testuser;password=testpassword";

//testDB为你的数据库名

Connection conn= DriverManager.getConnection(url);

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql="select * from test";

ResultSet rs=stmt.executeQuery(sql);

while(rs.next()) {%>

您的第一个字段内容为:<%=rs.getString(1)%>

您的第二个字段内容为:<%=rs.getString(2)%>

<%}%>

<%out.print("数据库操作成功,恭喜你");%>

<%rs.close();

stmt.close();

conn.close();

%>

</body>

</html>


五、jsp连接Sybase数据库

testmysql.jsp如下:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.sql.*"%>

<html>

<body>

<%Class.forName("com.sybase.jdbc.SybDriver").newInstance();

String url =" jdbc:sybase:Tds:localhost:5007/tsdata";

//tsdata为你的数据库名

Properties sysProps = System.getProperties();

SysProps.put("user","userid");

SysProps.put("password","user_password");

Connection conn= DriverManager.getConnection(url, SysProps);

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql="select * from test";

ResultSet rs=stmt.executeQuery(sql);

while(rs.next()) {%>

您的第一个字段内容为:<%=rs.getString(1)%>

您的第二个字段内容为:<%=rs.getString(2)%>

<%}%>

<%out.print("数据库操作成功,恭喜你");%>

<%rs.close();

stmt.close();

conn.close();

%>

</body>

</html>


六、jsp连接MySQL数据库

testmysql.jsp如下:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.sql.*"%>

<html>

<body>

<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();

String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=gb2312"

//testDB为你的数据库名

Connection conn= DriverManager.getConnection(url);

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql="select * from test";

ResultSet rs=stmt.executeQuery(sql);

while(rs.next()) {%>

您的第一个字段内容为:<%=rs.getString(1)%>

您的第二个字段内容为:<%=rs.getString(2)%>

<%}%>

<%out.print("数据库操作成功,恭喜你");%>

<%rs.close();

stmt.close();

conn.close();

%>

</body>

</html>


七、jsp连接PostgreSQL数据库

testmysql.jsp如下:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.sql.*"%>

<html>

<body>

<%Class.forName("org.postgresql.Driver").newInstance();

String url ="jdbc:postgresql://localhost/soft"

//soft为你的数据库名

String user="myuser";

String password="mypassword";

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);

while(rs.next()) {%>

您的第一个字段内容为:<%=rs.getString(1)%>

您的第二个字段内容为:<%=rs.getString(2)%>

<%}%>

<%out.print("数据库操作成功,恭喜你");%>

<%rs.close();

stmt.close();

conn.close();

%>

</body>

</html>




posted @ 2006-10-29 10:40 bisal 阅读(2157) | 评论 (1)编辑 收藏

ASP.NET

    开始接触ASP.NET。。。

posted @ 2006-10-29 10:32 bisal 阅读(172) | 评论 (0)编辑 收藏

在WinMe中安装java环境

  因为家里的台式机只能装到WinMe,所以刚开始的时候不能像在Win2000,WinXP中填写环境变量那样设置java环境,查了资料说需要在C盘中在autoexec.bat文件中添加环境变量的方式设置,但是用了半天,结果都没有能够成功编译运行java文件,一直不知道为什么。有一次突然当在运行中打入msconfig后看到其中有一项是“环境变量”,试了一下,结果竟然可以编译运行java文件了!真实太神奇了!后来通过查找资料发现也可以通过“帮助”程序进入msconfig设置窗口,操作的过程基本与此相同,呵呵,有时真是需要自己的实践才能让自己有比较深的体会,掌握一些东西,我觉得应用到任何一个领域都是行得通的。

posted @ 2006-10-21 21:35 bisal 阅读(227) | 评论 (0)编辑 收藏

程序员修炼之道

    看到了一篇文章,感觉颇为有道理,希望可以随时以此警示自己。要想成为一名优秀的程序员,而不是一个普通的代码蓝领的话,我觉得应该做到以下文章中谈到的几点:

1.从一门语言开始
初学编程,最忌讳就是贪多。其实编程的道理都是相同的,通一则知百,但是知百却不一定能够通一!所以切记要"专心使用一门语言",把它学透,以后自然通一则知百!通过实践证明,VB和Delphi是使用者最多的语言。

2.规范的代码
程序员与程序员之间的交流主要还是靠源程序,所以代码一定要规范(命名规范,注释规范,编写规范等等)。这样不仅便于你程序的改进,也便于向他人请教!"编程易精"的程序代码就是采用了规范的写作方式。

3.学why不记how
学编程,重要的是学会why(程序为什么这样做),而不是学习how(怎样编程)。最重要的是树立"编程的思路",而不是编程的步骤。"编程易精"就是教你思考如何做好程序。

4.学而时习之
每天学的东西多了,总要找个时间来复习一下,做好时每天晚上空下来时,一边看代码一边看实例,参照学习:想想都学了什么,还有哪些需要学习和掌握。这样不仅温习了当天的内容,还可以定下来第二天的学习计划。

5.简单最好
程序代码的编写不讲究华丽,最好的代码是最实用最简短的。这样不仅可以减少出错的机会,并且还使得整个程序显得小巧。

6.三人行必有我师
不管你的编程水平多高,都有不懂的地方,所以时刻都要向他人学习来提高自己。连孔子都可以拜小孩为师,我们还有什么面子放不下的呢?

  潘爱民也说过:“高超的技术水准加上良好的编程习惯,等于优秀程序员中的佼佼者”,希望可以真正做到这些。。。

posted @ 2006-10-14 17:41 bisal 阅读(238) | 评论 (0)编辑 收藏

仅列出标题
共5页: 上一页 1 2 3 4 5 下一页 

导航

统计

常用链接

留言簿(4)

随笔档案

文章档案

相册

Java战友兄弟

常用技术交流平台

搜索

最新评论

阅读排行榜

评论排行榜