搜档网
当前位置:搜档网 › java日志详解

java日志详解

java日志详解
java日志详解

浅谈JAVA中的日志文件

log4的使用方法:log4是具有日志记录功能,主要通过一个配置文件来对程序进行监测

有两种配置方式:一种程序配置,一种文件配置

有三个主要单元要了解,Logger,appender,layout.

logger是进行记录的主要类,appender是记录的方式,layout是记录的格式

logger七种日志级别:debug,info,warn,error,fatal,all,off

最常用的应该是debug()和info();而warn()、error()、fatal()仅在相应事件发生后才使用

appender主要分三类,终端输出,文件输出,流输出

ConsoleAppender

FileAppender

WriterAppender

layout也分三类:简单格式,html格式,匹配格式

SimpleLayout

HTMLLayout

PatternLayout

输出简写:(用在PatternLayout)

%m 输出代码中指定的消息

%p 输出优先级

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。一般使用了它就不需使用%c了

[按照下面步骤来写吧!就可以得到我们所想要的日志文件哦!]

[按照顺序就可以将日志文件读出来了!]作用实例:

程序配置一般过程:

1.得到特定名称的logger

2.得到其中一个layout

3.根据layout得到appender

4.logger添加appender

5.logger设置级别

6.logger输出有级别的日志信息

程序:

Logger logger = Logger.getLogger(Test.class.getName()) //取得logger

SimpleLayout simpleLayut = new SimpleLayout() //取得layout FileAppender fa = new FileAppender(simpleLayout,"test.log") //取得ppender

logger.addAppender(fa)

//添加appender

logger.set((Level)Level.DEBUG) //设

置级别

logger.debug("hihihihih")

//记录信息

文件配置过程:

1.得到特定名称的logger

2.加载配置文件 (配置文件做了2-5的工作)

3.logger输出有级别的日志信息

文件配置程序:

1.Logger logger = Logger.getLogger(Test.class.getName()) //取得logger

2.使用下面的配置加载

3.输出信息

文件配置分properties,xml

读取properties:PropertyConfigurator.configure("logTest.properties");

读取xml:DOMConfigurator.configure("src/logTest.xml");

告别System.out.print()—J2SDK1.4新增Java日志框架 (一)

作为一名Java 程序员,最熟悉的、使用最多的调用恐怕莫过于System.out.print(“…”)。当你没有调试工具而要跟踪一个变量的值得时候;当你需要显示捕 获的Exception、Error的时候;当你想知道程序在运行的时候究竟发生了什么的时候,通常的做法就是调用System.out.print把他 们在终端、控制台上打印出来。这种方式对于输出信息的分类、格式化及永久保存带来诸多不便。虽然我们可以把它写入一个文件然后进行分析,但是这要需要编写 额

外的程序代码,其成本不可忽视!而由此给目标系统本身增加的复杂程度不可避免的使开发、调试陷入一个深深的迷潭。

[要知道一点:如果说能不写的代码最好不要写!]

JDK1.4的推出,使得这一切即将成为历史。让我们向System.out.print ()告别吧,使用Java Logging API为自己的程序构建一个完整的日志记录系统!

一、第一个实例先看一个简单的实例:

1 import java.util.logging.*;

2 public class SimpleLoggingTest {

3 public static void main(String args[]) {

4 //程序的其它处理

5 //使用Logger的静态方法获得一个匿

名 //Logger

6 Logger logger1 = Logger.getAnonymousLogger();

7 //记录消息

8 logger1.log(https://www.sodocs.net/doc/6918455270.html,,"第一条日志记录");

9 //程序的其它处理

10 }

11 }

实例1

注意:编译、执行该程序需要JDK1.4及以上版本的支持。

运行该程序,可以在控制台看到程序运行结果:

2003-1-14 15:09:40 SimpleLoggingTest main信息: 第一条日志记录首先,程序引用java.util.Logging包(第1行)。接着,在适当的时候获得一个Logger(记录器)类的实例(第6行,获 取一个匿名的Logger)。最后,在程序需要记录信息的地方调用Logger类的log方法进行记录(第8行,记录一个INFO级别的消息)。

二、Java Logging API

Java Logging API封装在JDK1.4.0的java.util.Logging 包中。它通过产生便于最终用户、系统管理员、故障维护工程师以及软件开发团队(工程师)进行分析的日志记录为软件的开发调试和维护提供便利的手段。它捕获 操作系统平台和执行程序的安全故障、配置错误、执行瓶颈和(或)Bug等数据信息,以纯文本、XML或程序员自定的某种方式将其格式化成日志记录,然后传递给内存、系统输出流、控制台、文件、Sockets等多种系统资源进行缓存和输出。

(一)、该软件包中的关键类。

n Logger: 应用程序进行日志记录调用的主要实体。Logger对象用于记录特定系统或应用程序的消息。

n LogRecord: 用于在日志框架和单个记录处理程序之间传递记录请求。

n Handler: 日志数据的最终输出处理器。它将LogRecord对象导出到各种目标,包括内存、输出流、控制台、文件和套接字。多种Handler子类可供用于这种用途。

图一

n Level: 定义一组标准的记录级别,可用于控制记录的输出。可以把程序配置为只输出某些级别的记录,而忽略其他级别的输出。

n Filter: 精细过滤、控制记录的内容,比记录级别所提供的控制准确得多。记录API支持通用的过滤器机制,这种机制允许应用程序代码添加任意过滤器以便控制记录的输出。

n Formatter: 为LogRecord对象的格式化提供支持。

图二

n LogManager: Java Logging框架中唯一的、全局的对象,用于维护与Logger记录器及日志服务的一系列共享的数据结构及状态。它负责整个日志框架的初始化、维护一组 全局性的Handle对象、维护一个树形结构的Logger的名字空间、诊测日志框架配置文件的改变从而重新读入并应用相关的参数以及负责程序停止运行时 整个日志框架的清理工作。

(二)Logger

1、Logger的命名空间

在SimpleLoggingTest.java实例中,我们使用了一个匿名的(没有命名的)Logger对象。在Java Logging 框架中,Logger是可以命名的。Logger的名字空间与java类的名字空间相同的结构相同:使用“。”间隔的字符串。Logger的名字空间体现 了Logger的层次结构。例如:命名为“a.b”的Logger 是命名为“a.b.c”的“父”(上一级)Logger记录器。Logger的命名可以 是任意的字符串,一般情况下,使用包或类的名字为Logger 进行命名。

Logger的名字空间由全局单列类LogManager的实例进行创建、维护。

[貌似在处理数据库的时候的DriverManage来管理数据库驱动一样了!]

匿名Logger不被存储在命名空间中。

2、创建Logger实例

Logger对象可以通过调用工厂方法getLogger或getAnonymousLogger 获取。

//获取一个名为“A”的Logger对象

Logger loggerA= Logger.getLogger(“A”);

// 获取一个名为“A.B”的Logger对象,其上级记录器为loggerA.

Logger loggerAB= Logger.getLogger(“A.B”);

//获取一个匿名Logger对象

Logger loggerTmp = Logger.getAnonymousLogger();

对非匿名Logger,getLogger先在命名空间中查找同名的Logger对象,如果有,则返回该Logger对象;如果不存在,则在命名空间中创建注册一个新的Logger对象,并与其上级Logger对象相关联。

匿名Logger对象属于创建它的对象的私有对象,只能由创建它的对象使用,记录一些临时性的日志信息。而命名Logger对象使全局性的,在日志框架的生存期内,除了创建它的对象外还,可由其它对象用于记录日志信息。

匿名的Logger对象由一个全局的的root Logger “” 对象(root Logger的名字为空)。这意味着所有匿名Logger对象将从root Logger “”中继承行为。

匿名Logger对象通常用于java Applet应用中。它去掉了在运行过程中的一班性的安全检查,允许其创建类对象对Logger的控制、状态信息进行修改,如:setLevel设置Logger的日志消息记录级别;addHandle增加Logger的Handle (处理器)对象等。

一个Logger对象可以拥有有零个到多个Handler实例。当没有Handler 时,如不禁止日志记录沿名字空间向上传递,那该Logger对象的日 志消息记录将有其拥有Handler实例的上级Logger进行处理。当一个Logger对象拥有多个 Handler实例对象时,其记录的日志数据将被所有的Handler逐一进行处理。

(三)、Handler

Handler对象接收传来的日志消息将其输出。Handler可以把日志消息输出到多种目标资源,如:输出到控制台进行显示、写入日志文件、传送到网络上的远程日志服务进行处理、写入系统日志等任何物理资源

Handler对象在创建时使用LogManager对象的相关属性的默认值(如Handler 的Filter、Formatter、Level等对象属性)进行初始化。

Handler对象可通过调用setLevel(Level.OFF)暂停工作;通过调用setLevel设置适当的记录日志消息级别恢复工作。

Handler是一个抽象类。在J2SDK1.4中,其子类及它们之间的关系见图一。

1、 MemoryHandler Handler的子类,在内存中的一个循环缓冲区用于缓存日志记录请求。通常MemoryHandler只简单的把传入的LogRecords存储到 它的内存中。这种缓存的开销非常低廉,它去掉了格式化所产生的系统消耗。当某个触发条件满足时,MemoryHandler将其缓冲的数据push(发 布)到目标Handler,由后者执行实际的输出。有三种模式触发MemoryHandler进行push 操作:a、传入的LogRecords的级别高 于 MemoryHandler预先定义的push级别;b、有其他对象显式的调用其push方法;c、其子类重载了log方法,逐一检索每个传入的 LogRecords,若符合特定的标准则进行push操作。

实例:假设我们需要跟踪一个生产环境中的一个很少出现的Bug.在大多数场合,系统化产生大量的日志记录,而我们仅只关心记录中最近的几条,那么我们只需 要使用MemoryHandler对日志记录进行缓存,当且仅当某个事件发生时将最近的几条记录从内存中 dump到制定的文件中。

//MemoryHandlerTest.java

import java.util.logging.*;

import java.io.*;

public class MemoryHandlerTest {

FileHandler fhandler;

Logger logger;

MemoryHandler mhandler;

MemoryHandlerTest() {

try {

//构造名为my.log的日志记录文件

fhandler = new FileHandler("my.log");

int numRec = 5;

//构造一个5个日志记录的MemoryHandler,

//其目标Handler为一个FileHandler

mhandler = new MemoryHandler (fhandler, numRec, Level.OFF) ;

//构造一个记录器

logger = Logger.getLogger("com.mycompany");

//为记录器添加一个MemoryHandler

logger.addHandler(mhandler);

} catch (IOException e) {

}

}

public static void main(String args[]) {

MemoryHandlerTest mt = new MemoryHandlerTest();

int trigger = (int)(Math.random()*100);

for (int i=1;i<100;i++) {

//在MemoryHandler中缓存日志记录

mt.logger.log(https://www.sodocs.net/doc/6918455270.html,,"日志记录"+i);

if (i==trigger) {

//触发事件成立,显式调用MemoryHandler的

//push方法触发目标Handler输出日志记录到

//my.log文件中

//当且仅当这个事件成立的时候就触发这个事件了!

mt.mhandler.push();

break;

}

}

}

}

实例2

2、FileHandler 文件处理器。

StreamHandler流处理器将日志记录以流的形式输出。FileHandler、ConsoleHandler、SocketHandler为 StreamHandler的子类。 ConsoleHandler 将日志记录输出到控制终端。前面的实例(实例2除外)都将日记记录数据输出到控制台。

FileHandler将日志记录输出到特定的文件,或循环的几个日志文件中。日志文件可以设置容量大小。当日志文件达到限定的容量时将被自动清空,重头开始写入新的日志记录数据。

例:创建一个容量为1Mb的文件处理器

int limit = 1000000; // 1 Mb

FileHandler fh = new FileHandler("my.log", limit, 1);

对于循环的日志文件,每个文件将被指定容量限制。当当前的日志文件的长度达到制定值后该文件被关闭,新的日志文件被创建,旧的文件将在文件名模板后追加序号。如此产生多个顺序编号的日志记录文件。

例:

try { // 创建一个拥有3个日志文件,每个容量为1Mb的文件处理

String pattern = "my%g.log";

int limit = 1000000; // 1 Mb

int numLogFiles = 3;

FileHandler fh = new FileHandler(pattern, limit, numLogFiles);

} catch (IOException e) {

}

2003-1-15 7:02:04 LoggingLevelTest main信息: INFO级消息可以看出,优先级低于INFO的日志消息不被记录。

Level的构造函数为protected便于程序员开发自己的消息级别类。

import java.util.logging.*;

//自定义消息级别

class myLevel extends Level{

//定义自己的消息级别SYSE

public static final Level SYSE = new myLevel("SYSE",

Level.SEVERE.intValue()+10);

public myLevel(String ln,int v) {

super(ln,v);

}

}

public class MyLevelTest {

public static void main(String args[]) {

Logger logger1 = Logger.getAnonymousLogger();

//设置消息级别

logger1.setLevel(myLevel.SYSE);

//记录消息

logger1.log(myLevel.SYSE,"SYSE消息");

logger1.severe("SVERE消息");

}

}

实例4

运行结果:

2003-1-15 15:40:04 MyLevelTest main

SYSE: SYSE消息

只有SYSE消息被记录,SVERE消息不被记录,因为自定义级别SYSE高于SEVERE.

(五)Formatter

Formatter负责对LogRecords进行格式化。每个记录处理器Handler同一个Formatter对象相关联。Formatter对象接收从Handler传来的LogRecord,将其格式化成字符串后返回给Handler进行输出。

Formatter是一个抽象类。在J2SDK1.4中,其子类及它们之间的关系见图二。

自定义扩展Formatter类。实例:MyFormatterTest.java

import java.util.Date;

import java.util.logging.*;

//创建每条日志记录以行的日志格式:

//时间<空格>消息级别<空格>消息ID<空格>日志信息内容<换行>

class MyFormatter extends Formatter {

public String format(LogRecord rec) {

StringBuffer buf = new StringBuffer(1000);

buf.append(new Date().toLocaleString()); //时间

buf.append(' ');

buf.append(rec.getLevel()); //消息级别

buf.append(' ');

buf.append(rec.getMillis()); //作为消息ID

buf.append(' ');

buf.append(formatMessage(rec));//格式化日志记录数

buf.append('\n'); //换行

return buf.toString();

}

}

public class MyFormatterTest {

public static void main(String args[]){

//创建记录器

Logger log1 = Logger.getLogger("MyLogger");

//创建记录处理器

Handler mh = new ConsoleHandler();

//为记录处理器设置Formatter

mh.setFormatter(new MyFormatter());

//为记录器添加记录处理器

log1.addHandler(mh);

//禁止消息处理将日志消息上传给父级处理器

log1.setUseParentHandlers(false);

//记录消息

log1.severe("消息1");

log1.warning("消息2");

https://www.sodocs.net/doc/6918455270.html,("消息3");

log1.config("消息4");

}

}

实例5

程序运行结果:

2003-1-15 16:59:38 SEVERE 1042621178968 消息1 2003-1-15 16:59:40 WARNING 1042621178985 消息2 2003-1-15 16:59:41 INFO 1042621179105 消息3

三、配置文件

J2SDK1.4的Java Logging框架的配置文件

(Windows):%J2SDK1.4_HOME%/jre/lig/logging.properties从配置文件可 以看到:(一)自定义日志配置文件:java

-Djava.util.logging.config.file=myfile(二)全局Handler在Java VM启动时被加载。

(二)全局Handler默认为java.util.logging.ConsoleHandler. handlers= java.util.logging.ConsoleHandler所以我们的任何日志记录动作都会在控制台进行显示。

(三)缺省的消息记录级别为:INFO。level= INFO在缺省情况下我们在控制台看不见低于INFO级别的日志消息。

(四)缺省的Handler消息格式为java.util.logging.SimpleFormatter

四、日志框架在程序测试中的应用

Logger类提供了两个的方法:Logger.entering() Logger.exiting () .这对我们调试自己的方法调用提供了便利的方式。

例子:记录方法调用的输入参数和输出参数 方法myMethod将一个int 追加在一个对象之后。

运行该程序应将logging.properties的

java.util.logging.ConsoleHandler.level = INFO改为:

java.util.logging.ConsoleHandler.level = ALL

import java.util.logging.*;

public class MyClass {

public String myMethod(int p1, Object p2) {

Logger logger =

Logger.getLogger("com.mycompany.MyClass");

if (logger.isLoggable(Level.FINER)) {

logger.entering(this.getClass().getNam e(), "myMethod",

new Object[]{new Integer(p1), p2});

}

String tmp = p2.toString() + p1;

if (logger.isLoggable(Level.FINER)) {

logger.exiting(this.getClass().getName (), "myMethod", tmp);

}

return tmp;

}

public static void main(String args[]) {

MyClass mc = new MyClass();

String rslt = mc.myMethod(123,"Hello");

}

}

计算机java实习日记

计算机java实习日记 【篇一:计算机毕业实习日记34篇】 实习日记 一 20010-4-1星期四 实习的第一天,感觉心里空空的,毕竟昔日在学校的作息时间,一 下子被工作所取代,还真有点不适应。其实在此之前我也作好了进 入社会的准备,以前经历过一次毕业,现在总比第一次毕业时“无所 适从”的感觉要好很多,心态也放得更为平和。如果真要说点与众不 同的话,那就是明显感觉到:多了一些信心与实在。 二 2010-4-2星期五 今天下班后回宿舍上机调试程序,一个java网站,用tomcat作服 务器,在被浏览器加载的时候总是无法显示出来,页面提示出错信息:500错误。到服务器日志查找原因,有一个“数据加载失败”的提示。数据库用的是sql server2000,原以为是tomcat配置文件的问题,到网上查了很多相关资料,改了又改一直没搞定,头都大了, 一直到12点才郁闷的关机睡觉! 三 2010-4-5星期一 工作也两三天了,员工也已熟悉,可惜他们都不是编程高手,要不 我就可以直接向他们问一些我在做网站时遇到的难题了。唉,谁叫 我找一个与专业不怎么相干的单位来实习呢!可说归说,事还得做:与客户交谈,打电话询问相关事宜,遇到好心的客户还好,不会刁 难你,要是来了一个挑三检四的就不好应付了,至少你得耍点小聪明,当然不能惹客户不高兴,要不过后会接到老板的“呼叫”的。其 实最简单的对付办法也很简单:你只管顺着客户的意思,点头即可!四 2010-4-6星期二 最近到网上找了些视频资料,看后很过瘾,可看归看,一动手写代 码就伤神了。忘说内容了,其实看的就几个与java编程相关的开源 框架(struts+spring+hibernate)而已,不过涉及到的东西就多了,开发平台用的是eclipse+myeclipse,这个还好应付,装上设一下 环境变量就搞定,跟jdk差不多。难的是在这之上的插件的应用,要

java实习周记 篇

第一周实习第一个礼拜,算是适应期。主要了解一些公司的背景、产品、发展方向等。刚到实习公司,不是像学校里的朝九晚五,而是朝八晚九。我们不可能简单的了解一些企业文化,简单的学学新的知识就可以了,我们的这个实习必将是一个繁忙的实习,也必将是一个充实的,进步的实习。来到这里,我们要忘掉大学里自由的作息时间,克服困难,养成良好的工作生活习惯?。基于各方面的原因,虽然在去之前我们做了比较充足的准备,但还是遇到了一些困难,例如学习时间长,实战比较繁多,但时间又比较的短,难以保证按时按质按量完成。下午下了班,员工们都回去了,我还在那儿练习,一直到晚上9点,才能回住处休息。中午也没有休息的地方,只能趴在电脑前休息一会,一两周下来,相当地疲惫。但我们都明白自己来实习的任务,都坚持着完成自己的任务和使命。这个星期熟悉了工作环境、java编程的环境配置。等慢慢熟悉起来,做起事情也越来越顺手了.简单的总结为几个字,那就是:多看,多问,多观察,多思考! 第二周 实习第二个礼拜,主要是熟悉java的基础语法,把基础打扎实,以后在开发中才能如鱼得水。学习总结如下几点: 1、类之间的关系:关联、聚合、继承、实现和多态。 2、基本数据类型:整数型、浮点型、字符型、布尔型。 3、常用逻辑语句和循环语句:switch只支持int类型判断,没有写break易穿透至下一个循环,jdk7.0貌似增强了支持数据类型。Break:强行退出循环;Continue:跳出当前循环。 5、修饰符:pbulic,private,protected,default。设置访问权限。 6、Static关键字:静态修饰符,它修饰的方法、类和变量可以全局调用。

java开发实习周记25篇

java开发实习周记25篇 第一周 实习第一个礼拜,算是适应期。主要了解一些公司的背景、产品、发展方向等。刚到实习公司,不是像学校里的朝九晚五,而是朝八晚九。我们不可能简单的了解一些企业文化,简单的学学新的知识就可以了,我们的这个实习必将是一个繁忙的实习,也必将是一个充实的,进步的实习。来到这里,我们要忘掉大学里自由的作息时间,克服困难,养成良好的工作生活习惯。基于各方面的原因,虽然在去之前我们做了比较充足的准备,但还是遇到了一些困难,例如学习时间长,实战比较繁多,但时间又比较的短,难以保证按时按质按量完成。下午下了班,员工们都回去了,我还在那儿练习,一直到晚上9点,才能回住处休息。中午也没有休息的地方,只能趴在电脑前休息一会,一两周下来,相当地疲惫。但我们都明白自己来实习的任务,都坚持着完成自己的任务和使命。这个星期熟悉了工作环境、java编程的环境配臵。等慢慢熟悉起来,做起事情也越来越顺手了.简单的总结为几个字,那就是:多看,多问,多观察,多思考! 第二周 实习第二个礼拜,主要是熟悉java的基础语法,把基础打扎实,以后在开发中才能如鱼得水。学习总结如下几点: 1、类之间的关系:关联、聚合、继承、实现和多态。 2、基本数据类型:整数型、浮点型、字符型、布尔型。

3、常用逻辑语句和循环语句:switch只支持int类型判断,没有写break易穿透至下一个循环,jdk7.0貌似增强了支持数据类型。 4、break:强行退出循环;continue:跳出当前循环。 5、修饰符:pbulic,private,protected,default。设臵访问权限。 6、static关键字:静态修饰符,它修饰的方法、类和变量可以全局调用。 7、final关键字:禁止重写。 8、this关键字:指向自身引用。 9、string:是不可变的字符序列。(两个string变量必须用copy的方式在内存中new出新的数据块) 10、stringbuffer:是可变的字符序列,可以直接添加字符。 第三周 实习第三个礼拜,主要是熟悉java的高级语法(核心) 继承:子类继承父类的所有属性和方法,如果方法和属性被private修饰,子类则无法读取。子类使用super关键字继承。父类无法调用子类方法。构造方法:方法名称必须与类名相同,且没有返回值。object类是所有类的父类,即java中的根类。无参构造方法默认继承object的。(构造方法的重载,实现不同参数的构造) 重载:方法相同,参数类型不同,数量不同。构造方法中也

Java开发规范

Java开发规范

目录 第1章序言 (4) 第2章java一般性研发规范 (5) 2.1 代码格式 (5) 2.1.1包、类、方法的命名规范: (5) 2.1.2方法的命名应注意避免与java中具有特殊意义的名称例如equals, hashCode,clone,finalizer等冲突 (7) 2.1.3Java bean中取得boolean类型的属性值必须使用is****形式命名 (9) 2.1.4if,else,while,for等必须使用{} (9) 2.1.5类必须包含在包里,禁止出现无包的类 (10) 2.1.6类和方法必须拥有注释,注释量占总体代码25%以上,类头部,以及方法 头部的注释应符合javadoc标准。 (11) 2.2 基本语法 (12) 2.2.1不能随意捕捉异常,原则上谁捕捉谁处理 (12) 2.2.2if,while,try,finally,switch ,synchronized ,static instantiation 里面应有相应的逻辑处理,不能为空。 (13) 2.2.3在处理循环中,不能在程序中人为的改变步长。 (14) 2.2.4将简单类型int,short,float,double等转化成字符串时,需使用其对 应类的toString方法。 (14) 2.2.5javaBean中hashCode,以及equals方法必须同时override。 (15) 2.2.6懒式方式创建对象:不能采用双检查惯用法 (18) 2.2.7不能在finally中返回值。 (19) 2.2.8Boolean实例化时,应用使用Boolean.valueOf,Boolean.TRUE, Boolean.FALSE。 (19) 2.2.9Integer,Byte,Short,Long等实例化时,应用使用valueOf (20) 2.2.10对于多个if语句嵌套的情况下能够整合尽量整合。 (20) 2.2.11override function,不能只有super.function语句,否则视为无效代码 21 2.2.12Collection.toArray的注意事项。 (21) 2.2.13对于BigDecimal方法,应避免使用float值,double值进行创建,应使 用字符串形式创建。 (22) 2.2.14String,BigDecimal,BigInteger等值类型调用replace,add等方法的注 意事项。 (23) 2.2.15需要注意的引起NullException的语句。 (23) 2.2.16ResultSet使用next时,需要判断是否具有记录再进行一下步操作。 25 2.2.17字符串使用相应的规则。 (25) 2.2.18禁止直接调用 System.gc(),System.getRuntime().gc(),System.runFinalization()。 (27) 2.2.19finalize相应的规则。 (27) 2.2.20禁止在代码中使用System.out,ex.printStackTrace打印日志。 (28) 2.2.21系统资源释放(谁创建的,谁关闭) (29) 2.2.22使用Clone时相应的规则。 (32) 2.2.23java Bean类必须实现Serialize接口。 (33)

华为Java语言编码规范标准

Java语言编码规范 Prepared by 拟制Date 日期 yyyy-mm-dd Reviewed by 评审人Date 日期 yyyy-mm-dd Approved by 批准Date 日期 yyyy-mm-dd

Revision Record 修订记录

Table of Contents 目录 1. 范围 (4) 2. 规范性引用文件 (4) 3. 术语和定义 (4) 4. 排版规范 (5) 4.1. 规则 (5) 4.2. 建议 (7) 5. 注释规范 (9) 5.1. 规则 (9) 5.2. 建议 (15) 6. 命名规范 (17) 6.1. 规则 (17) 6.2. 建议 (18) 7. 编码规范 (20) 7.1. 规则 (20) 7.2. 建议 (24) 8. JTEST规范 (26) 8.1. 规则 (26) 8.2. 建议 (27)

1.范围 本规范规定了使用Java语言编程时排版、注释、命名、编码和JTEST的规则和建议。 本规范适用于使用Java语言编程的产品和项目。 2.规范性引用文件 下列文件中的条款通过本规范的引用而成为本规范的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本规范,然而,鼓励根据本规范达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本规范。 3.术语和定义 规则:编程时强制必须遵守的原则。 建议:编程时必须加以考虑的原则。 格式:对此规范格式的说明。 说明:对此规范或建议进行必要的解释。 示例:对此规范或建议从正、反两个方面给出例子。

JAVA源代码规范

JAVA代码规范 (初稿) 2004、4 ?版本更新信息 本版本创建/修改、维护、批准涉及人员如下: 创建/修改者:XX 维护者:XX 批准者:XX 具体版本更新记录如表1-1: 表1-1 版本更新记录 修改方式:A-增加 M-修改 D-删除?目得 本文提供一整套编写高效可靠得 Java 代码得标准、约定与指南。它们以安全可靠得软件工程原则为基础,使代码易于理解、维护与增强灵活性。通过遵循一套通用得程序设计标准,显著提高 Java 软件开发者得生产效率,为开发团队得程序设计带来更大得一致性,使软件开发团队得效率明显提高。 ?规范得执行 本文档适用于公司内进行软件开发得所有技术人员,即公司内软件开发人员编写得所有源代码都必须遵循本规范。 除临时性项目之外得任何项目均应严格按照此标准执行,“临时性项目”指:?为市场推广目得而编写得示程序 ?为一次性用途而编写得临时性小程序 为学习目得而编写得测试程序 ?文档类别

本文档属标准规范类得项目限制级文档,未经总经理及总经理授权人员批准,不得提供公司以外得人员阅读与使用。 ?版本更新条件 本文档得定期评审时间为每年得1月,评审及修订步骤依据SEPG工作规范规定。此外,如遇下列条件可进行评审,并根据评审结果决定就是否需要进行修订: ?本文档所列得引用得标准已经更新。 ?本文档得使用者若对本文档有任何评论、建议或意见,请通过企业内部网络发电子邮件给SEPG,所收到得电子邮件将会在评审与修订时给予充分 得考虑。 ?使用对象 本文档得使用对象包括: ?项目管理者 ?质量保证人员 ?软件开发人员 目录 1介绍 (4) 1、1为什么要有编码规范 (4) 2通用代码格式 (4) 2、1文件组织 (4) 2、2缩进 (5) 2、3行长度 (6) 2、4换行 (6) 2、5空行 (7) 2、6空格 (7) 2、7注释 (8) 2、7、1注释约定 (8) 2、7、2实现注释得格式 (9) 2、7、3文档注释 (10) 2、7、4快速浏览javadoc (10) 2、8声明 (11) 2、8、1每行声明变量得数量 (11) 2、8、2初始化 (11) 2、8、3布局 (11) 2、8、4类与接口得声明 (12) 2、9语句 (12) 2、9、1简单语句 (12) 2、9、2复合语句 (13) 2、9、3返回语句 (13) 2、9、4if,if-else,if else-if else语句 (13)

JAVA实习周记25篇

第一周 实习第一个礼拜,算是适应期。主要了解一些公司的背景、产品、发展方向等。刚到实习公司,不是像学校里的朝九晚五,而是朝八晚九。我们不可能简单的了解一些企业文化,简单的学学新的知识就可以了,我们的这个实习必将是一个繁忙的实习,也必将是一个充实的,进步的实习。来到这里,我们要忘掉大学里自由的作息时间,克服困难,养成良好的工作生活习惯。基于各方面的原因,虽然在去之前我们做了比较充足的准备,但还是遇到了一些困难,例如学习时间长,实战比较繁多,但时间又比较的短,难以保证按时按质按量完成。下午下了班,员工们都回去了,我还在那儿练习,一直到晚上9点,才能回住处休息。中午也没有休息的地方,只能趴在电脑前休息一会,一两周下来,相当地疲惫。但我们都明白自己来实习的任务,都坚持着完成自己的任务和使命。这个星期熟悉了工作环境、java编程的环境配置。等慢慢熟悉起来,做起事情也越来越顺手了.简单的总结为几个字,那就是:多看,多问,多观察,多思考!

第二周 实习第二个礼拜,主要是熟悉java的基础语法,把基础打扎实,以后在开发中才能如鱼得水。学习总结如下几点: 1、类之间的关系:关联、聚合、继承、实现和多态。 2、基本数据类型:整数型、浮点型、字符型、布尔型。 3、常用逻辑语句和循环语句:switch只支持int类型判断,没有写break易穿透至下一个循环,jdk7.0貌似增强了支持数据类型。Break:强行退出循环;Continue:跳出当前循环。 5、修饰符:pbulic,private,protected,default。设置访问权限。 6、Static关键字:静态修饰符,它修饰的方法、类和变量可以全局调用。 7、Final关键字:禁止重写。 8、This关键字:指向自身引用。 9、string:是不可变的字符序列。(两个string变量必须用copy的方式在内存中new出新的数据块) 10、stringBuffer:是可变的字符序列,可以直接添加字符。

java日志与验证码

java日志: 日志的网上很多也: https://www.sodocs.net/doc/6918455270.html,/view/ccb3ce1efc4ffe473368abdf.html 你自己看看。我们的系统里面一般都是自己写了一个程序。将用户的操作信息,IP,时间,操作内容写入我们数据库里面。 Tomcat的日志一般我们用绿色版,它自带有日志功能。 java验证码: 1 根据一个随机值,生成一个模糊图片,然后将随机值封装到session中。 1.1 生成图片的类: package com.framework.security; import java.awt.*; import java.awt.image.BufferedImage; import java.io.Serializable; import java.util.Random; /** *随机验证码 *User: *Date:2006-11-2 *Time:11:31:00 *To change this template use File|Settings|File Templates. */ public class ImgCheckCode implements Serializable { private String charRandomCode = ""; private BufferedImage imageRandomCode; private int width; private int height; public ImgCheckCode(int width, int height) { this.width = width; this.height = height; create(4); } public ImgCheckCode(int width, int height, int length) { this.width = width; this.height = height;

(完整版)阿里巴巴编码规范(Java)题库

多选 1.如何处理单元测试产生的数据,下列哪些说法是正确的?ABC A .测试数据入库时加特殊前缀标识。 B .测试数据使用独立的测试库。 C .自动回滚单元测试产生的脏数据。 D .无须区别,统一在业务代码中进行判断和识别。 多选 2.关于并发处理,下列哪些说法符合《阿里巴巴Java开发手册》:ABC A .线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。 B .同步处理时,能锁部分代码区块的情况下不要锁整个方法;高并发时,同步调用应该考虑到性能损耗。 C .创建线程或线程池时,推荐给线程指定一个有意义的名称,方便出错时回溯。 D .推荐使用Executors.newFixedThreadPool(int x)生成指定大小的线程池。(线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式) 多选 3.下列哪些说法符合《阿里巴巴Java开发手册》:ACD A .对于“明确停止使用的代码和配置”,如方法、变量、类、配置文件、动态配置属性等要坚决从程序中清理出去,避免造成过多垃圾。 B .永久弃用的代码段注释掉即可,即不用加任何注释。 C .对于暂时被注释掉,后续可能恢复使用的代码片断,在注释代码上方,统一规定使用三个斜杠(///)来说明注释掉代码的理由。 D .不要在视图模板中加入任何复杂的逻辑。 多选 4.关于分页查询,下列哪些说法符合《阿里巴巴Java开发手册》:ABC A .分页查询,当统计的count为0时,应该直接返回,不要再执行分页查询语句。 B .iBATIS自带的queryForList(String statementName,int start,int size)分页接口有性能隐患,不允许使用。 C .定义明确的sql查询语句,通过传入参数start和size来实现分页逻辑。 D .可使用存储过程写分页逻辑,提高效率。

大学生暑假java实习日记三篇

大学生暑假java实习日记三篇 篇一 大学生活临近了尾声,这短短的三年,却是我的人生中弥足珍贵的时光。在这三年里,我从一个莽撞少年成长为一名合格的大学生,用脱胎换骨来形容并不为过。总结过去可以拨开时间的迷雾,清晰的回首所走过的路,从而为将来的人生旅程准备一些经验和教训。 大学生活主线是学习。大学学习是迥然不同于以往的一种新形式,它赋予了学习者更大的自主性和更广阔的思维空间,同时也对学习者提出了更高的要求。在这种半开放式的教学模式下,要求学习者必须有明确的学习目的,有更强的选择辨别能力和更强的自学能力。对于这个方面,我应该感谢大学这四年的学习生涯,在这期间的历次挫折与成功,使我真正知道了怎样进行自我学习,怎样有选择有目的的学习,随之而来的是自己自学能力和学习效率的提高。而学习之外的课外科技活动的参与,同时也是对所学知识的一种巩固和加强,它不仅提高了我的动手能力,拓宽了我的知识面,而且在不断的探索过程中,也促使自己学习更多更新的东西,这更进一步丰富了自己的理论知识。 实习是每一个大学毕业生必须拥有的一段经历,它使我们在实践中了解社会、在实践中巩固知识;实习又是对每一位大学毕业生专业知识的一种检验,它让我们学到了很多在课堂上根本就学不到的知识,既开阔了视野,又增长了见识,为我们以后进一步走向社会打下坚实的基础,也是我们走向工作岗位的第一步。 通过此次实习,让我学到了很多课堂上更本学不到的东西,仿佛自己一下子成熟了,懂得了做人做事的道理,也懂得了学习的意义,时间的宝贵,人生的真谛。明白人世间一生不可能都是一帆风顺的,只要勇敢去面对人生中的每个驿站!这让我清楚地感到了自己肩上的重任,看清了自己的人生方向,也让我认识到了文秘工作应支持仔细认真的工作态度,要有一种平和的心态和不耻下问的精神,不管遇到什么事都要总代表地去思考,多听别人的建议,不要太过急燥,要对自己所做事去负责,不要轻易的去承诺,承诺了就要努力去兑现。单位也培养了我的实际动手能力,增加了实际的操作经验,对实际的文秘工作的有了一个新的开始,更好地为我们今后的工作积累经验。 我知道工作是一项热情的事业,并且要持之以恒的品质精神和吃苦耐劳的品质。我觉得重要的是在这段实习期间里,我第一次真正的融入了社会,在实践中了解社会掌握了一些与人交往的技能,并且在次期间,我注意观察了前辈是怎样与上级交往,怎样处理之间的关系。利用这次难得的机会,也打开了视野,增长了见识,为我们以后进一步走向社会打下坚实的基础。

JAVA之日志操作

JAVA之日志操作-Apache 根据网络资料整理 日志论 在应用程序中输出日志有三个目的: (1)监视代码中变量的变化情况,把数据周期性地记录到文件中供其他应用进行统计分析工作。 (2)跟踪代码运行轨迹,作为日后审计的依据。 (3)担当集成开发环境中的调试器,向文件或控制台打印代码的调试信息。 Apache通用日志包(CommonsLoggingPackage)是Apache的一个开放源代码项目,它提供了一组通用的日志接口,用户可以自由地选择实现日志接口的第三方软件。通用日志包目前支持以下日志实现: ?Log4J日志器(http://jakarta.apache.org/log4j) ?JDK1.4Logging日志器(JDK1.4自带) ?SimpleLog日志器(把日志消息输出到标准系统错误流System.err) ?NoOpLog(不输出任何日志信息) 通用日志包中的两个常用接口:LogFactory和Log,分别介绍如下: ?Log接口 通用日志包把消息分为6个级别:FATAL、ERROR、WARN、INFO、DEBUG和TRACE。其中FATAL级别最高,TRACE级别最低。Log接口提供输出不同级别消息的方法:off---------------------------------最高等级的,用于关闭所有日志记录fatal(Objectmessage)-------输出FATAL级别的消息。 error(Objectmessage)-------输出ERROR级别的消息。 warn(Objectmessage)-------输出WARN级别的消息。 info(Objectmessage)-------输出INFO级别的消息。 debug(Objectmessage)-------输出DEBUG级别的消息。 trace(Objectmessage)-------输出TRACE级别的消息。 all----------------------------------最低等级的,用于打开所有日志记录

华为JAVA编码规范

1.程序块采用缩进风格,空格为4个. 说明: 对于开发工具自动生成的代码可以不一致 2.分界符(如大括号{和})应各自占一行并且在同一列,同时与引用它们的语句左 对齐,在方法的开始,类和接口的定义,以及if,for,do,while,switch,case语句都要采用上述缩进 说明: for(…) { …//your code } 3.较长(>80字符)的语句,表达式和参数要分多行,长表达式要在低优先级操作符 划分新行,操作符放在行首,新行要适当缩进,整齐,语句可读. 说明: if(filename != null && new File(logPath+filename).length() < logConfig.getFileSize()) { …//your code } 4.一行只写一条语句 说明: LogFilename wow = null; LogFilename that = null; 5.if,for,do,switch,while,case,default各占一行,它们的执行语句无论多少都要加{} 说明: if(writeToFile) { writeFileThread.interrupt(); } 6.相对独立的程序块,变量,说明要加空行 说明: if(log.getLevel() < log.getRecord()) { return ; } //空行

LogWrite writer; 7.对齐只用空格键,不用TAB键 说明: 以免使用不同的编辑器阅读程序时,因TAB键所设置的空格数不同而造成程序布局不整齐,JBuildr,UltraEdit等编辑环境,支持行首TAB替换成空格,应将该选项打开 8.两个以上的关键字,变量,常量进行对等操作时,操作符之前,之后或前后要加空 格,进行非对等操作时,如果是关系密切的立即操作符,后面不加空格(如.操作符) 说明: 采用这种松散方式编写代码目的是让程序更加清晰,由于空格所产生的清晰性是相对的,所以在已经很清晰的语句中没有必要留空格,如果语句已足够清晰,则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为java中括号已经是很清晰的标志了.在长句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部中不加空格,给操作符留空格时不要连续留两个以上空格 9.类属性和方法不要交叉放置,不同存取范围的属性和方法也不要交叉放置 说明: 类定义:{ 类公有属性定义; 类保护属性定义; 类私有属性定义; 类公有方法定义; 类保护方法定义; 类私有方法定义; } 10.源程序的有效注释量必须在30%以上 11.包的注释写入一个名为package.html的html格式的说明文件放入当前路径 12.包的注释内容:本包作用,详细描述本包内容,产品模块名称及版本,公司版本 说明: 一句话描述 详细描述 产品模块
公司版本信息

java实习日记范文3篇

java实习日记范文3篇 实习日志 经过一天一夜的行程,终于到了这座美丽的城市——青岛。拖着疲惫的身躯走出车站的那一瞬间,迎面扑来的海水的味道,将心底的那一丝疲惫伴着海风悄然的吹走。第一次如此近距离的接触海,第一次接受海风的洗礼,我的心彷佛飘荡在那泛着层层浪花的海里。 到了实训基地,我看到了久别的几个同学也是永远的同学,感到分外的高兴,每一个人都充满着本属于我们这个时代的朝气与活力。大家聚在一块永远都有说不完的话和描绘不完的未来。 实训的第一天,实训基地的组织人员为我们做了一个简单的实训典礼,介绍了我们在实训期间应该遵守的规章制度,为我们安排了一个简单的实训实施计划。老师们一直都在强调着,来到这里就要把实训当做是真正的工作,我们每时每刻都要严格的要求自己,把自己当成一个职业人来对待,要完成从学生到职业人角色的转变,征做一名合格的职员,要体验什么是正规企业的规范模式。我会努力完成这次实训内容,因为我会收获很多。 实习日志 来青岛的第二天,感觉整个身体都浸在海水的笼罩下,细细品味着还带给我们的清爽,有一种异样的感觉,同学们都玩笑的说,人生就是在不断的感受和体会这些不一样,生活才会多姿多彩。

我们遇到了具有多年开发经验,计算机工程硕士而且个性随和的讲师黄进华。接下来的九天时间他将和我们一起度过,今天主要是为我们讲解了C 弱类型: javascript ruby perl 4. Javac 编译 java进行解释和运行 archieve jar.exe主要 把一系列与.class文件相关的打包成 一个文件便于管理 5. JNI 来实现不同语言之间的调用 6. 类的命名:如果是一个单词的话 第一个字母大写 如果有两个字母合成的名称,第一个字母大写,第二个单词的第

Java日志系统框架的设计与实现

Java日志系统框架的设计与实现 在Java领域,存在大量的日志组件,open-open收录了21个日志组件。日志系统作为一种应用程序服务,对于跟踪调试、程序状态记录、崩溃数据恢复都有着重要的作用,我们可以把Java日志系统看作是必不可少的跟踪调试工具。 1.简介 日志系统是一种不可或缺的跟踪调试工具,特别是在任何无人职守的后台程序以及那些没有跟踪调试环境的系统中有着广泛的应用。长期以来,日志系统作为一种应用程序服务,对于跟踪调试、程序状态记录、崩溃数据恢复都有非常现实的意义。这种服务通常以两种方式存在: 1.日志系统作为服务进程存在。Windows中的的事件日志服务就属于这种类型,该类型的日志系统通常通过消息队列机制将所需要记录的日志由日志发送端发送给日志服务。日志发送端和日志保存端通常不在同一进程当中,日志的发送是异步过程。这种日志服务通常用于管理员监控各种系统服务的状态。 2.日志系统作为系统调用存在。Java世界中的日志系统和Unix环境下诸多守护进程所使用的日志系统都属于这种类型。日志系统的代码作为系统调用被编译进日志发送端,日志系统的运行和业务代码的运行在同一进程空间。日志的发送多数属于同步过程。这种日志服务由于能够同步反映处系统运行状态,通常用于调试跟踪和崩溃恢复。 本文建立的日志系统基本属于第二种类型,但又有所不同。该日志系统将利用Java线程技术实现一个既能够反映统一线程空间中程序运行状态的同步日志发送过程,又能够提供快速的日志记录服务,还能够提供灵活的日志格式配置和过滤机制。 1.1系统调试的误区 在控制台环境上调试Java程序时,此时往控制台或者文本文件输出一段文字是查看程序运行状态最简单的做法,但这种方式并不能解决全部的问题。有时候,对于一个我们无法实时查看系统输出的系统或者一个确实需要保留我们输出信息的系统,良好的日志系统显得相当必要。因此,不能随意的输出各种不规范的调试信息,这些随意输出的信息是不可控的,难以清除,可能为后台监控、错误排除和错误恢复带来相当大的阻力。 1.2日志系统框架的基本功能 一个完备的日志系统框架通常应当包括如下基本特性: 所输出的日志拥有自己的分类:这样在调试时便于针对不同系统的不同模块进行查询,从而快速定位到发生日志事件的代码。

(完整word版)JAVA代码规范详细版

JAVA代码规范 本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改。本文档中没有说明的地方,请参看SUN Java标准代码规范。如果两边有冲突,以SUN Java标准为准。 1. 标识符命名规范 1.1 概述 标识符的命名力求做到统一、达意和简洁。 1.1.1 统一 统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。统一是作为重要的,如果对同一概念有不同的表示方法,会使代码混乱难以理解。即使不能取得好的名称,但是只要统一,阅读起来也不会太困难,因为阅读者只要理解一次。 1.1.2 达意 达意是指,标识符能准确的表达出它所代表的意义,比如:newSupplier, OrderPaymentGatewayService等;而supplier1, service2,idtts等则不是好的命名方式。准确有两成含义,一是正确,而是丰富。如果给一个代表供应商的变量起名是order,显然没有正确表达。同样的,supplier1, 远没有targetSupplier意义丰富。 1.1.3 简洁 简洁是指,在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要简洁。比如:theOrderNameOfTheTargetSupplierWhichIsTransfered 太长,transferedTargetSupplierOrderName则较好,但是transTgtSplOrdNm就不好了。省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。 1.1.4 骆驼法则 Java中,除了包名,静态常量等特殊情况,大部分情况下标识符使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。比如: supplierName, addNewContract,而不是supplier_name, add_new_contract。

JAVA软件开发 顶岗实习周记25篇

实习第一个星期,到广州数鹏通科技有限公司人事部报道。作为公司的新人,对于各种运作和工作流程都不是很清楚,这就需要我要求自己主动去学习,去了解,以便自己能更好的为公司创造价值 这周,我向开发人员问了我们项目小组需要是用什么技术,如hibernate,spring,iBATIS,jQuery,EXTJS,DWR,easyui等等。了解了以后,我重点看了看jQuery,因为这块比较不熟悉。之后熟悉了下招聘流程。接下来帮项目经理做了个项目上线休整的静态“日志列表功能模块”之后画了流程图,如请假申请、设备申请。 在最后一天项目经理要求我看项目,部署项目,虽然其中刚刚开始遇到了不少麻烦,但是通过我主动学习后,问题很快就解决了

从这周开始,我们将开始为期一年的校外实习训练生活,这一周里,我们主要是与公司实习项目经理沟通,制定下实习的主要内容和活动安排。 通过与项目经理的沟通,初步定下我个人实习程序项目,通过My Eclipses 实现企业商品进销存管理系统,通过编程,达到实现公司项目的统计管理。同项目经理初步拟定下需求分析,接下来由个人编写实现代码程序。 在同事之间的讨论和研究中,我学习到了不少知识,这都是在我们大学课堂上所疏忽的知识点和重要的实践经验,使我受益非浅,这将成为我今后学习工作的重要财富。 接下来,完成需求文档便可以投入到程序代码的编写中去,这个环节所需要的时间是相当巨大的。一份分析得透彻的需求文档,将会给我们之后的程序编写带来很多的方便,所以,接下来需要比较细心的完成我这个项目的需求分析文档。

实习第3个星期,实际算是适应期。主要了解一些公司的背景、产品、发展方向和前景等。另外,尝试更同事多沟通,多听,从交谈中也能够学到不少东西。同事们都很热心,很照顾我,经常在我碰到困难的时候便主动伸出援助之手,令我非常感动。几天之后开始在同事的帮带下,做一些业务相关的工作,主要是在一旁协助处理一下简单的事情。也就是打根基。可别小看了这些活,虽说简单,但都是疏忽不得的,每件事情都至关重要,因为它们都是互连的。为了保证最后能够顺利,前面的每一步基础都要打好。为了能够真正的使用知识,我很严格的要求自己去做好每一件事情,即使再简单的事情我都会认真考虑几遍,因此,虽然做得不算快,但能够保证让同事们满意。同事通常也不催促,都把任务安排好,然后便交给我自己去处理,同时还不时提供一些帮助。等慢慢熟悉起来,做起事情也越来越顺手了。

java代码规范要求(公司用-补充版)

代码规范要求 为保证我公司研发代码的规范性、可读性,特制定该代码规范: 1、代码应遵循国际java代码规范 2、代码中所有switch(param){case int:break;}中case 参数应该为在类开始时定义的字符串,以增加后续研发中的可读性。例:private final int company=0; switch(param){case company:break;}不允许出现case0,case1等字样。 3、在对数据库进行大量数据读取时,应采用jdbc方式读取。以增快响应速度,减少内存消耗。数据量超过万单位时必须采用jdbc读取数据库,且应分页读取数据库。 4、方法作用必须注释,方法中传递的参数应该有注释,全局变量,局部变量都应有注释,以说明变量的意义。如方法会被多次调用,或应对二次开发则应注明返回值例:return Boolean true成功false失败; 5、代码中应该采用try catch捕获异常,且应该处理常见异常。 6、代码呈现页面不能出现null字样。 7、代码测试应用及所需捕获异常或输出信息应该采用log4j 进行输出。杜绝出现System.out.println();字样 8、代码不应出现重复定义,同一方法不能多次调用数据库,

如一个方法中需要多次调用数据库则应拆分为两个或多个。 9、同一方法中代码量超过50行则应进行拆分。 10、代码应该采用format格式化。 11、代码已经提交或二次开发时,应注明修改时间修改人修改原因修改后提交参数的内容 12、在未进行实例化的参数判断是否为空时,应该null在前例:if(null!=param) 13、在判断变量是否为空时,尽量避免采用if else应采用Parame==null?”0”:parame;进行判断赋值 14、代码应遵循可读性原则,不能出现过于冗长的代码。 15、多次在不同类中反复调用且内容相同的方法,应该写到公用代码中进行调用。 16、已经失效,且不会被调用的代码应该注销、删除。 17、代码在未经测试时,不要进行提交,以免造成现调用的其他类出现错误。 18、项目的配置文档应该遵循规范格式,尽量增加注释。 19、页面中的js脚本应该具备可读性、增加注释。Js脚本的规范遵从国际js规范。 20、页面中提交的必要的变量参数应该有验证。 21、页面提交的信息或执行时间较长、页面上传文档时应该提示用户正在执行等字样。 22、页面ext的方法复写定义应该在项目中为唯一,不得出

java实训日志

7月7日:基础学习 软件:一系列按照特定顺序组织的计算机数据和指令的集合。分为系统软件、应用软件。 程序:一系列指令它们指示计算机如何进行操作。程序的结构:输入、输出、计算、按条件执行、重复执行。 计算机语言:人与计算机交流的一种方式。分为 1、机器语言:是由二进制码组成。 2、汇编语言:符号化了的机器语言,加入了助记符 3、高级语言:JAVA、.net、C++、C、Pascal、Fortran 还了解了了解Java的用途和Java的历史,现在以及发展 了解Java的特性:可移植性、开源、安全性、健壮性、多线程。 掌握了搭建开发Java环境和编写、编译以及运行Java程序。安装JDK、配置环境变量。 7月8日:基础学习 Java变量是程序中最基本的存储单元,其要素包括数据类型,变量名和变量值。 Java标识符命名规则: 标识符由字母、下划线“_”、美元符“$”或数字组成。 标识符应以字母、下划线、美元符开头。 Java标识符大小写敏感,长度无限制。 关键字是Java中一些赋以特定的含义,用做专门用途的字符串。例如:public、main、void Java基本数据类型: 整型:int、short、byte、long 浮点型:float、double 字符型:char 布尔型:boolean Java数据类型转换时遵循的原则:1、低级类型向高级类型自动转换2、容量小的类型自动转换为容量大的数据类型 Java运算符:算术运算符:+,-,*,/,%,++,-- 位运算符:&,|,^,~,>>,<<,>>> 关系运算符:>,<,>=,<=,==,!= 逻辑运算符:!,&&,|| 赋值运算符:= 扩展赋值运算符:+=,-=,*=,/= 字符串连接运算符:+ 条件运算符号:?: 7月9日:

Java代码规范详细版

Java代码规范 1. 标识符命名规范 1.1 概述 标识符的命名力求做到统一、达意和简洁。尽量做到每个人按照规范来,多人开发如一人开发一样。 1.1.1 统一 统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。统一是作为重要的,如果对同一概念有不同的表示方法,会使代码混乱难以理解。即使不能取得好的名称,但是只要统一,阅读起来也不会太困难,因为阅读者只要理解一次。 1.1.2 达意 达意是指,标识符能准确的表达出它所代表的意义,比如:newSupplier, OrderPaymentGatewayService等;而supplier1, service2,idtts等则不是好的命名方式。准确有两成含义,一是正确,而是丰富。如果给一个代表供应商的变量起名是order,显然没有正确表达。同样的,supplier1, 远没有targetSupplier意义丰富。 1.1.3 简洁 简洁是指,在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要简洁。比如:theOrderNameOfTheTargetSupplierWhichIsTransfered 太长,transferedTargetSupplierOrderName则较好,但是transTgtSplOrdNm就不好了。省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。 1.1.4 骆驼法则 Java中,除了包名,静态常量等特殊情况,大部分情况下标识符使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。比如: supplierName, addNewContract,而不是supplier_name, add_new_contract。 1.1.5 英文vs 拼音

java代码规范详细版

Java代码规范 本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改。本文档中没有说明的地方,请参看SUN Java标准代码规范。如果两边有冲突,以SUN Java标准为准。 1. 标识符命名规范 1.1 概述 标识符的命名力求做到统一、达意和简洁。尽量做到每个人按照规范来,多人开发如一人开发一样。 1.1.1 统一 统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。统一是作为重要的,如果对同一概念有不同的表示方法,会使代码混乱难以理解。即使不能取得好的名称,但是只要统一,阅读起来也不会太困难,因为阅读者只要理解一次。 1.1.2 达意 达意是指,标识符能准确的表达出它所代表的意义,比如:newSupplier, OrderPaymentGatewayService等;而supplier1, service2,idtts等则不是好的命名方式。准确有两成含义,一是正确,而是丰富。如果给一个代表供应商的变量起名是order,显然没有正确表达。同样的,supplier1, 远没有targetSupplier意义丰富。 1.1.3 简洁 简洁是指,在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要简洁。比如:theOrderNameOfTheTargetSupplierWhichIsTransfered 太长,transferedTargetSupplierOrderName则较好,但是transTgtSplOrdNm就不好了。省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。 1.1.4 骆驼法则

相关主题