JAVA编程:OSS报表体系实训条记
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?条记OSS报表体系实训条记
实训公司:中科六合(王海格,先生超好)
EditedbyHenEgg,Michelangelo
2005-2-21
8:00
JasperReport开支
面向OO使用服务器
Java开源数据库
J2EE需求剖析
成就:
教室体现
项目
项目:
lJava平台
(1)(编程言语)开辟情况(编译器)
(2)部署情况(使用服务器)(JDK供应软件运转服务器及基础运转前提,在此基本上的开辟必要设置)目标是重用(相干工具类)
(3)运转情况(操纵体系)
--JVM假造机是操纵体系,即运转情况
--Java包文件性
--渣滓搜集内存办理
--假造cpu(上风)
--线程
(1)+(2)+(3)一致情况复杂开辟
lJava言语
1.OO(最主要的特性)——很年夜的体系
2.可移植性JVM(其实不主要)
3.散布式JVM+AppServer——跨平台的体系
充实使用收集资本跨地区跨版图
4.平安性
Unix:平安性强范例
JVM内置强平安性>Unix
关头营业
1.性命
医疗反省公安重型产业航空
2.钱
银行
小结:
JVM是操纵体系
Java是面向对象,散布式,平安的言语
PS:以上红字粗体部分为java关头手艺
lJava假造机
1.渣滓搜集
2.散布式撑持各类协定
3.多线程线程办理
4.平安性
观点
摹拟了一台盘算机
功效
1.渣滓接纳:
(在内存中)new的对象被装载到对象堆中
A=newAir;
new出一个对象
挪用机关函数,分派在对象堆中
前往一个援用
援用计数器++
当计数器减为0,该变质变成渣滓,从名单里撤除。
渣滓搜集感化:内存泄露,空指针
渣滓搜集机制:
背景精灵线程:当CPU呈现闲置,挪用该线程(优先级低)请求CPU很快有闲置的时分(用Java先CPU再内存再次网卡)
2.供应运转时情况
操纵体系的功效,卖力调进代码,监视代码运转,匡助程序做输出输入,给程序供应一系列的撑持
供应CPU存放器收集读写文件体系平安性
ClassLoader加载
ByteCodeVerifier文件格局语法数组越界
校验4遍
Interpreter:两头代码
JIT立即编译(快)(编译本钱地代码)
安装jdk
设置情况变量
JAVA_HOMEc:j2sdk
Path;%JAVA_HOME%in
CLASSPATH.;%JAVA_HOME%lib
(ps:dos窗口不克不及主动革新,改动情况变量跋文得从头开)
14:00
类:
自界说
笼统
包:
package
把功效邻近的类组合在一同
包是绝对路径,相称于windows里的文件夹
import一个包就引进了一个定名空间
import不即是include
没写包的话,体系默许一个包
Java代码三部分
1)packagecom.project.src
2)importjava.io.*;
3)类
一个文件里能够有多个类,可是有且只要一个public类
eg1
1.staticvoidmain(String[]args)
Mainmethodisnotpublic
2.publicvoidmain(String[]args)
Exceptioninthread"main"java.lang.NoSuchMethodError:main
main是全部程序的出口,不克不及用new出来因为是static办法以是在载进内存时便间接实行以此作为其他程序的出口但main不是关头字
3.publicstaticmain(String[]args)
TestHelloWorld.java:4:invalidmethoddeclaration;returntyperequired
publicstaticmain(String[]args)
java划定必需有局限范例,没有前往值必需界说为void。可是机关函数不同意有前往范例。
4.publicstaticvoidmain(String[]args)==staticpublicvoidmain(String[]args)
会见把持符和润色符地位恣意。但习气把会见把持符放后面
5.可是前往范例不克不及放在下面二者后面
TestHelloWorld.java:4:<identifier>expected
voidstaticpublicmain(String[]args)
^
TestHelloWorld.java:8:(expected//前往值必需贴紧办法名
}
^
2errors
main不是关头字,可是本人不要用它。
6.String[]args
从arg入手下手
正文:
调程序用
//
/**/
javadoc正文
/**
*/
用javadoc酿成文档
javadocHelloWorld.java–ddoc
Java关头字&标识符&保存字
标识符开首:字母(_,$)
编码标准:
1)成心义的单词构成,第一个单词第一个字母小写,其他单词第一个字母年夜写
2)变量名和办法名一律处置。
3)常量由成心义的单词构成,一切单词全年夜写,单词之间用下划线分隔。
4)类名第一个字母年夜写
Java数据范例
1.基础数据范例(不是对象)
8种:
int,long,short,byte,float,double,char,bool.
2.援用范例
对象只能经由过程援用会见
实践上是平安的指针
数组是援用范例(由于他在C言语里是指针范例)
默许:
Char‘u0000’
boolfalse
援用null
数组null
表达式和流程把持
不要用++--,简单引发误读除在轮回内里
=与==:==只能用于基础范例,不要用于援用范例。equals
短路运算符:if(lasting!=null)&&,||
把几率最高的判别放在后面,节俭程序实行的工夫
范例转换
高位转低位,必需举行强迫范例转化,short与char的转换总要
传参和传值
基础范例传值
援用范例传援用
传的是变量的正本
把持流程,轮回
最好不要用switch(损坏封装,损耗功能,损坏流程)
分支只管用ifelse
轮回只管用for
while(true)在服务器中,做逝世轮回用
别用do-while
实习1
强迫范例转换
实习2
传参
2005-2-22
8:00
lJavaOO
最早的面向对象Smalltalk,厥后的C++,Java,Phyon,.NET
Smalltalk纯的Java不纯(基础范例等)
Java是劈面向对象的一个完成
对象->数据<-操纵
对象之间的干系–>动静
OO:按切合人的头脑习气的逻辑来剖析计划,构成了一套形式,即面向对象系统。
注重:
1.不要往承继有代码的类。有代码的类请用对象的组合.
2.承继笼统基类或接口(n个)。接口计划完,不克不及削减和修正,只能增添.
3.多重承继自己没错,必不成少,但要限定多重或单承继,损坏封装性.
多态:
手艺完成:
1.编译时:SRC反省情势范例(声明)
2.运转时:JVM反省实践范例
重载:
(编译时)
处置不异的办法名,分歧的参数列表
在编译器里用办法署名区分。(methodsignature,由办法名+参数列表构成)
不要用运算符重载
14:00
类(有用类):
1.类头
只要public和默许的,没有公有类
2.属性
static只保存一份拷贝。与类代码保留在一同
静态属性的机关办法:static{}块。
non-static
3.办法
4.机关办法(不是类的基础布局)
5.static块
l类的界说
[权限][润色]class类名
{
类体;
}
权限:有public——私有类
无public——同包类
润色:abstract笼统类,只能被承继(假如一个类内里有一个笼统办法,则这个类必需是笼统类。反之,笼统类纷歧定包括笼统办法)不克不及实例化
final最终类,完善类,不克不及被承继。只能实例化
ps:
1:一样平常静态变量被界说成常量
2:用静态办法不克不及会见实例变量,static
3:native在java中挪用当地c代码
4:构着办法:选择native(初级)
5:接口作为援用范例来利用,任何完成该接口的实例都能够存在该接口范例的变量中.
数据成员:
[权限][润色]范例变量名[=初值];
润色:static有——类变量(类名点取)
static无——实例变量(对象名点取)
final用于润色常量
staticfinalintN=5;(90%以上用到static,就加final把它酿成常量。光static损坏封装性)
办法成员:
[权限][润色]前往值范例办法名(行参列表)(传值不传参)
{
办法体;
}
润色:static(静态办法不克不及会见实例对象)
final(不同意重载)(用不到)
abstract(该类必需声明为笼统类)
native当地办法。能够挪用当地代码,好比挪用C代码。
成员权限
public>protected>(default)>private
default同包类
protected同包+子类
接口里的办法默许为:publicabstract
机关办法:(仅能初始化非静态属性,静态办法不克不及操纵非静态属性,反之能够)
办法名=类名
一样平常不是public会见权限
不克不及有任何润色
无前往值范例
假如不供应机关办法,则体系供应一个无参的机关办法。可是存在任何本人写的机关办法,缺省的机关办法当即生效。
类承继的时分,不承继机关办法。
初始化父类super()。假如父类是笼统基类,就不必加了。
super()
this()
接口界说
[权限]interface接口名
{
接口体;
}
能够承继多个接口。称为接口的拼装
接口一样平常声明为public
接口作为援用范例来利用。经由过程这些变量,能够会见一切完成该接口的办法。
实习:
1.mod02/exercise3
类的私有办法被称为类的接口。
写一个Account类放在包banking中
并用TestBanking测试
2.在banking中增加类Customer.
3.修正TestBanking。用Customer操纵Account。
2005-2-23
8:00
1.需求剖析(topn)
观点
营业
营业流程
2.用例图(修改)
例:银行的账户Account和客户Customer干系
1)客户有一个或多个账户
2)账户与一个客户联系关系(破例:联名账户)
3)客户公有、把持账户
需求剖析
整体计划
具体计划
例:银行和客户、账号的干系
银行有多少个客户
客户能够选择多家银行(跨界限)
体系中只能有一家银行(体系界限)
银行应当对客户信息保全
银行具有判决权
银行类的外部创立帐户(银行类完整创立把持帐户)
请求:
创立客户
用户提交:姓、名、最后额度、身份证号码、六位暗码
创立帐户
提交:
身份证号码、初始余额
营业:
身份证号码
帐户号码
暗码
营业选择(参数):存存款查余额
闭会尺度
提要计划
1.需求会(10~15分钟)
分头写草图
2.闭会兼并草图
修正草图
3.提交修正草图
4.兼并修正草图
5.画类图:每一个类两团体
6.组装至一台呆板,编译运转
10:43——17:30
banking项目
2005-2-24
8:00
项目总评
细节成绩:
1.只能有一个Bank,计划办法:
Sington计划形式:
机关办法公有,则不克不及从外界创立他
使用该类的静态常量来保留。
staticfinalBankbookIntance=newBank();
Bank类被加载到内存里
new出一个Bank实例,并存在静态区
privateBank()
{
customers=newCustomer;
customerNumber=0;
}
privatestaticfinalBankbankInstance=newBank();
publicstaticBankgetBankInstance(){
returnbankInstance;
}
或:
privatestaticfinalBankbankInstance=null;
publicstaticBankgetBankInstance(){
if(bankInstance=null)
bankInstance=newBank();
returnbankInstance;
}
在Test.java中
BankaBank=Bank.getBankInstance();
3.数组
援用数组是指针的指针,以是要判空
Vector,List,arrayList(只能存一品种型的对象),也要判空
4.暗码办理办法不克不及用getPassword()。要用Verify()。
上课内容:
非常
java中的非常
程序中60%代码用于处置非常
任何非常都被包装成非常对象
有非常时分,就抛出非常对象,给JVM。JVM往查挪用栈
发生非常的代码不处置非常
优点
1)用对象处置非常
2)使用假造机作非常对象的传送
3)一般代码和处置非常代码完整分隔
try
{
unsafe;
}catch(非常类e)
{
非常处置;
}
办法声明为throws,该办法有用时,必需放在try,catch布局中
publicvoidf(intscore)throwsMyException
{
if(score<0||score>100)
thrownewMyExceptino(“”);
}
承继类的时分,不克不及抛出超越父类的非常。
tips:
接口是用来管辖类,分类类的
类是用来完成接口的,实例化接口的一个工具
I/O流
输出流,输入流是把持统一个流
字符型,字节型
类库里凡有Stream都是字撙节,有Reader就是字符流
InputStreamReader把字撙节转换为字符流
//把System.in转化为一个带缓冲的字符流
BufferedReaderin=newBufferedReader(newInputStreamReader(System.in))
in.readline()
收集
增加
Client端,Server端,协定注释器
Socket毗连
协定本人定
协定的剖析器
newServerSocket
accept()
newSocket
实例:
Server端
1.new一个ServerSocket
try{
s=newServerSocket(5432);
}catch(IOExceptione){}
2.建一个逝世轮回
while(true)
{
try{
Sockets1=s.accept();
}catch(IOExceptione){}
}
3.用发生的一般Socket通信
OutputStreams1out=s1.getOutputStream();
DataOutputStreamdos=newDataOutputStream(s1out);
dos.writeUTF(input);
dos.close();
s1.close();
Client端
1.建一个一般Socket
Sockets1=newSocket(“127.0.0.1”,5432)
2.用Socket通信
InputStreamis=s1.getInputStream();
DataInputStreamdis=newDataInputStream(is);
System.out.println(dis.readUTF());
dis.close();
s1.close();
功课:
1.用例和流程
2.计划类库,Server布局
2005-2-25
8:00
多线程
营业需求并发会见
手艺需求多历程、多线程
I/O流堵塞以后历程
手艺
模子一
1.创立线程的线程
2.线程中跑的代码是哪个对象的代码
界说一个完成Runnable接口的类,完成他的run()办法,然后将这个类的实例作为Thread机关办法的参数。创立Thread类的实例。
在服务器里
newThread(Object);//Object工具类,存一切参数。(包括营业代码)
.start.
机关这个类
classBusinessClassimplementsRunnable
{
publicvoidrun()
{
代码;//挪用其他对象完成营业和交互。
}
}
见exercise/mod15/exercise1
外部类
当
外->内代码(功效)
内->内部非私有
必要有用外部类
小结:
1.newThread(类)
2.界说这个类,implementsRunnable
C/SBank项目
11:00~2005-2-2617:40
2005-3-7
8:00
温习:
面向对象:明晰,封装,笼统(针对接口编程),复用(io类,汇合类)
C/S->B/S
区分:
C/S是基于操纵体系的(JVM)和基础类库(JDK)的开辟形式。
B/S是基于已有“容器”的开辟形式。
B/S长处:屏障底层的工具
1.给贸易体系的开辟带来便利,重用基本代码和服务(事件平安性)
2.可使用经证实无效(率)的软件架构(j2ee中心形式mvc)
3.贸易的手艺撑持(第三方)
C/S长处:
1.完整把持Client,Server真个布局,利用自界说的通信/营业协定
2.能够准确界说底层服务,削减冗余和毛病
3.一切的开辟代码都是通明的,不存在黑箱
用处
B/S用于对照年夜型的,面向终极用户的贸易体系(财政、人事、物流、电子商务、事情流)
C/S用于各类软件体系(用于二次开辟),或软件产物;特别公用的贸易体系(银行,国防部)
C/S是B/S的基本。前者用的手艺后者都能用到,反之不建立。
B/S几种盛行的架构
都是一种开辟形式,完成手艺变更中
1.J2EE(开辟形式不是开辟手艺)
2..NET
3.PHP
4.CGI(perl,C)
J2EE开辟形式布局:
体系功效
客户端
Web层
把持层
营业层
数据操纵层
容器
扫瞄器
Web服务器,JSP/Servlet容器
JSP/Servlet容器,EJB容器
EJB容器,Servlet容器
EJB容器,Servlet容器
手艺
HTML,CSS,XML,JavaScript,Applet
HTTP,JSP,Servlet,HTML
JSP/Servlet,EJB,JavaBean
EJB,JavaBean,Servlet
EJB(Entity),DAO,JDO,R/OMapping
帮助手艺
美工,Flash
资本文件(国际化),MVC
资本文件(国际化),MVC。
针对容器自己的设置文件,JNDI
JMS,JTA
Tips:
JNDI:Java的目次服务(JavaNamingandDirectoryInterface)
JMS:Java动静服务
JTA:Java事件服务
EJB强侵进型容器,不保举利用。
EJB基于的两个手艺:RMI和序列化
主要级:
要学的,主要的:HTML,XML格局,HTTP,JSP,Servlet,JavaBean
要熟的:HTML,JavaScript,DAO,MVC(这两个是两种架构)
看一下:EJB,JNDI,JMS,JTA
10:00
HTML/JSP
HTML表单
JSP盘算->服务器
l客户端
ClientServer端
扫瞄器Brower---------------- 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 是一种使用者不需花费很多时间学习的语言 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 是一种突破用户端机器环境和CPU 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
页:
[1]