第一篇:Java技术课程讲稿
Java技术
北京邮电大学计算机学院 mengxw@bupt.edu.cn 孟
一 上课要求
二 语言部分参考书 孟祥武,张玉洁:《面向对象的Java语言程序设计》,北京邮电大学出版社,2001年3月 刘波,王克宏:《 Java程序设计 》,清华大学出版社 戴梅萼:《 Java问答式教程 》,清华大学出版社
三 主要教学内容 引言
1.1 Java技术概述 1.2 Java技术的发展史 Java语言 2.1 Java语言组成 2.2 Java语言类库 2.3 Java语言虚拟机规范 2.4 Java语言编译系统 2.5 Java语言解释系统 2.6 Java语言安全性 Java计算环境 3.1 Java操作系统 3.2 Java芯片 3.3 Java网络计算机 3.4 Java构件结构 3.5 Java开发环境 3.7 Jini技术 Java技术的发展 4.1 Java技术应用实例 4.2 Java技术的展望 Java虚拟机
虚拟机简介、虚拟机的体系结构与设计、虚拟机技术 Java编译技术
解释器、及时编译器、动态编译器、本地编译器、转换器 Java的中文化问题
中文字符集、程序语言的中文化、国际化、JDK对此的支持 JavaOS 宿主操作系统、JavaOS、特点 网络计算机和JavaStation 网络计算机的产生、硬件特性、特点 嵌入式Java技术 嵌入式Java平台 Java与科学计算
Java与科学和工程计算及其应用
Java主要应用在信息发布、管理、传输等信息服务领域,在传统的科学和工程计算等方面应用较少。四 主要考核内容 期末考试 考试形式:
考试内容:Java语言部分,Java相关技术。
五 教学目的 了解Java技术方面的新成果,了解目前Java技术发展的情况,对Java技术的本质有所了解。在实际应用中,科学、合理选择产品、系统,避免盲目、为进行二次开发等打下基础。目前Java技术、产品正逐步吸收计算机软件(面向对象技术、编译技术、智能技术等)方面的研究成果,通过学习,可以从更高一层看目前的Java技术、产品,可以预测它的发展。如果实际、应用项目需要,可以采用一些Java技术。
第二篇:现代教育技术课程讲稿
第一讲:教育技术概述
现代教育技术是以计算机为核心的信息技术在教育教学中的理论与技术,运用现代教育理论和技术,通过对教学过程和资源的设计、开发、应用、管理和评价,以实现教学现代化的理论与实践。
本课程以培养学生现代教育技术基本素养与基本技能为宗旨,主要介绍现代教育技术的理论基础、现代教学设计环节及内容、多媒体素材的收集获取、处理方法、多媒体教学课件的设计、制作方法、多媒体教学环境系统等。
中国现代教育技术的研究主要有两个分支,一种是学院派,主要是一部分高校专门从事教育技术教学和研究的教授专家,他们大都是注重理论研究,在理论基础的指导下关注教育技术的宏观研究,高瞻远瞩,居高临下。
另一个是实用派,注重现代教育技术在教学中的实际应用,几乎不涉及理论,只讲教学中的实战技巧和软件应用,应用中讲究简单中的灵活高效。我们通常把这派称为“现代教育实用技术”。
教育技术的产生与发展
国外教育技术的产生和演变
美国教育技术产生最早,发展脉络清晰完整,在世界上影响最大,其他国家如日本、英国、加拿大等国均以美国的教育技术理论模式做借鉴,英国、美国可作为研究教育技术发展历史的典型代表。美国教育技术的形成与发展可从三个方面追溯:一是视听教学运动推动了各类学习资源在教学中的运用;二是个别化教学促进了以学习者为中心的个性化教学的形成;三是教学系统方法的发展促进了教育技术理论核心——教学设计学科的诞生。这三个方面发展的起源不同,但都与”直观教学——视觉教学——视听教学——视听传播——教育技术“这一发展轨迹。
直观教学阶段(20世纪初-20年代)
直观教学通过运用真实的事物如标本、图片、实物、模型等直观教具来辅助教学,其实质是一种观察经验的直观技术。
代表人物:捷克教育家夸美纽斯《世界图解》,被认为是世界教育技术发展史上的最重要的成就之一,直观教学的广泛应用,对提高教学效果产生了十分明显的作用,为近代各国教育家所推崇。
“活的字母”
“活的字母”(象征字母表)出自《世界图解》一书。在字母表中,字母和一些动物的画图一一对应,动物所发出的声音就代表着字母的发音,“活的字母”因此而得名。夸美纽斯认为,传统的机械掌握字母的方法非常呆板,学生常常陷入毫无意义的发音练习之中,学而生厌。针对这种弊端,他别出心裁,独具一格,编排出“象征字母表”,使死的字母变成了会发音的“活字母”。
在《学校——游戏》剧本的第三幕第三场中,夸美纽斯描绘了他发明的“活字母”的教学过程: 教师:孩子们来吧!我们来看看这幅图画。学生:老师,我们很愿意这样做。教师;(手指着第一幅画)这是什么? 学生:鸟。
教师;说得对。什么鸟? 学生:不知道。
教师;(问另一个学生)你知道吗? 学生;也不知道。
教师:这是乌鸦。你们知道它怎么叫吗? 学生:不知道。
教师:它这样叫;啊——啊——啊。你们学它叫吧!学生;啊——啊——啊。
教师:对。你们知道这个声音怎么写吗? 学生:不知道,教师:我来教你们。这儿是“A”的写法。你们每个人在任何书里看到这样的字形,一定要(象乌鸦叫一样)“啊——啊——啊”地读出来。
教师:你们是不是想知道它是怎样写的? 学生:想知道。
教师:那很容易学。伊生:你来开始写一写,让其余的人看看。这儿是画图用的木制笔杆,用右手的三个手指这样握住它,然后自上往下这样写(大家都摹仿,最后教师又说),这儿是粉笔,把这个字母写在黑板上第一个字母的旁边,看,你们已经学会写这个字母了。你刚才写的,怎么念出来呢? 视觉教学阶段(20世纪20年代-30年代)
出现了机械的、电动的信息传播媒体:照相机、幻灯机、无声电影。最早使用视觉教育术语的是美国宾夕法尼亚州的一家出版公司,1906年,它出版了一本介绍如何拍摄照片、如何制作和利用幻灯片的书,书名就是《视觉教育》。1923年,美国教育协会建立了视觉教育分会。凡领取教师资格证者,必须修读有关视觉教学的课程。
代表人物:霍邦,《课程的视觉化》提出了媒体分类的层级模型,成为当时视觉教学理论的代表,讲教具、教材从具体到抽象成都排列,从实地见习开始,它提供的教材最具体,越往上,具体性减少,抽象性增加,最上面是词语,最抽象。
视听教学阶段(20世纪30-50年代)30年代后半叶,无线电广播、有声电影、录音机先后在教育中获得运用,人们感到视觉教育名称已经概括不了已有的实践,并开始在文章中使用视听教育的术语1931年7月,美国辛克斯公司在华盛顿做了一个电影教学的实验:在儿童看电影的前后,分别用5种测验表格考查他们的学习成绩,看电影后比看电影前成绩平均增加88分,学生增加知识量35%。美国哈佛大学在马萨诸塞州3个城市中学所进行的实验也证明,用电影教学的学生比不用电影教学的学生成绩提高20.5%。但学校缺乏专门的设备、资料和专家的理论指导而发展缓慢,却应用在工业和军队的培训中,第二次世界大战期间,美国政府生产工业培训电影457部,为军队购买了5.5万部电影放映机,花费在影片上的投资达10亿美元,将教学电影用于作战人员和军工技术人员的培训并取得了显著成效,6个月,将1200万平民训练成陆海空作战部队,把800万普通青年训练成制造军火、船舶的技术工人。也提高了人们对战后学校教学使用视听媒体的兴趣和热情。
战后十年是试听教学稳步发展的时期。1947年,美国教育协会的视觉教育分会改名为视听教学分会。
代表人物:戴尔 于1946年所著的《教学中的视听方法》。“经验之塔”三层
视听传播阶段(20世纪50-60年代)1960年,美国的视听教育协会组成特别委员会,研讨什么是视听教育。1963年2月,该委员会提出报告,建议将视听教育的名称改为视听传播,许多研讨视听教育的文章和著作,也都趋向于采用传播学作为视听教育的理论基础。传播概念和原理引入视听教学领域后,从根本上改变了视听领域的实践范畴和理论框架,即由仅仅重视教具教材的使用,转为充分关注教学信息怎样从发送者教师等,经由各种渠道媒体等,传递到接受者学生的整个传播过程。
代表人物: 拉斯韦尔 《传播在社会中的结构与功能》,最早以建立模式的方法对人类社会的传播活动进行了分析,这便是著名的“5W”模式。“5W”模式界定了传播学的研究范围和基本内容,影响极为深远。“5W”模式是:
谁(Who)→说什么(Says What)→通过什么渠道(In Which Channel)→对谁(To whom)→取得什么效果(With what effects)
“谁”就是传播者,在传播过程中担负着信息的收集、加工和传递的任务。传播者既可以是单个的人,也可以是集体或专门的机构。
“说什么”是指传播的讯息内容,它是由一组有意义的符号组成的信息组合。符号包括语言符号和非语言符号。
“渠道”,是信息传递所必须经过的中介或借助的物质载体。它可以是诸如信件、电话等人际之间的媒介,也可以是报纸、广播、电视等大众传播媒介。“对谁”,就是受传者或受众。受众是所有受传者如读者、听众、观众等的总称,它是传播的最终对象和目的地。
“效果”,是信息到达受众后在其认知、情感、行为各层面所引起的反应。它是检验传播活动是否成功的重要尺度。
教育技术阶段(20世纪70年代至今)
由于媒体技术的发展和理论观念的拓新,国际教育界深感原有视听教育的名称不能代表该领域的实践和研究范畴,1970年6月25日,美国视听教育协会改名为教育传播和技术协会(Association for Educational Communication and Technology,简称AECT)。1972年,该协会将其实践和研究的领域正式定名为教育技术。
教育技术的名称确定以后,人们便开始探讨它的定义。1970年,美国政府的一个专业咨询机构教育技术委员会在给总编和议会的一份报告中指出:“教育技术是按照具体的目标,根据对人类学习和传播的研究,以及利用人力和非人力资源的结合,从而促使教学更有效的一种系统的设计、实施、评价学与教的整个过程的方法。”
我国教育技术的产生与发展
在中国,早期,教育技术被称为“电化教育”。是我国独创的名称。电化教育这个名词是20世纪30年代在我国出现的。1935年,江苏镇江民众教育馆将该馆的大会堂定名为“电化教学讲映场”,这是我国最早使用“电化教学”这个名词。1936年,我国教育界人士在讨论为当时推行的电影、播音教育的定名问题时,提出并确立了“电化教育”这个名词。同年,南京教育部委托金陵大学举办“电化教育人员训练班”,第一次正式使用了这个名词。以后,“电化教育”这个名词便逐渐地被引用开来,一直到现在。“电化教育”是我国的特有名词。1936年,针对当时出现的利用幻灯、电影和广播进行教育传播的方式,并根据当时国外的“视听教育”的称呼,提出了“电化教育”一词并延用至二十世纪九十年代。电化教育是指在教育教学过程中,运用投影、幻灯、录音、录像、广播、电影、电视、计算机等现代教育技术,传递教育信息,并对这一过程进行设计、研究和管理的一种教育形式。是促进学校教育教学改革、提高教育教学质量的有效途径和方法。是实现教育现代化的重要内容。
视听教育阶段(20世纪70年代后期-90年代初期)
电化教育起步,一切重头做起,立机构、组队伍、添设备、编教材、出书刊、开课程、建专业、搞实验。
电化教育“三件”,硬件:两机一幕,八室一站三系统(普通电教室、学科专用电教室、多媒体综合电教室、微型电教室、视听阅览室、语言实验室、计算机室、电教教材库,卫星地面接收站,无线电广播系统、闭路电视系统、计算机网络系统)
软件:电教教材,书本教材系统和非书本教材系统
潜件:电教概念特点作用等简单阐述和七论(本质论、功能论、发展论、媒体论、过程论、方法论、管理论)
起主导作用的理论基础是戴尔的经验之塔和行为主义学习理论。80年代中后期,计算机网络技术和通信技术的不断成熟和进步,带来了信息传播技术的迅猛发展,同时也使教育技术乃至教育方式产生了革命性的变化。
信息化教育阶段(20世纪90年代中期至今)
90年代中期,随着网络的兴起,这一阶段的重要标志是教育信息高速公路——以计算机为核心的多媒体网络教育系统的建设并投入使用。
三件建设重点转变:
硬件:建设网络教室和校园网;软件:以网络课程和数字化教材建设为主;潜件建设:以网络环境下学与教的理论和方法的探究为主。
电教领域的主流技术是多媒体技术和网络技术,起主导作用的理论是建构主义学习理论。
世界各国都把科教兴国作为重要举措,对教育技术的发展给予了前所未有的关注,把发展教育技术作为教育的发展和民族发展的推动力。美国1998年投入510亿美元,使每一位公民都能利用信息技术终身学习。克林顿担任总统时曾提出,2000年美国必须实施100%的学校与国际互联网连通,使美国从小学到大学都实行“人、机、路、网”成片的先进国家。德国教育部长阿莱格尔1998年宣布,制定教育技术发展方案,重点倾向于应用多媒体教学和微机操作水平的提高。马来西亚建立了“多媒体超级走廊”,使教育信息化达到了国际水平。
中国继国家教育部颁发了《关于加强高等学校教育技术工作的意见》之后,1999年6月13日发布了《中共中央国务院关于深化教育改革全面推进素质教育的决定》中则为教育信息化和教学手段现代化的发展提出了更为明确的任务:大力提高教育技术手段的现代化水平和教育信息化程度。陈至立部长曾强调指出:“要深刻认识现代教育技术在教育教学中的重要地位及其应用的必要性和紧迫性;充分认识应用现代教育技术是现代科学技术和社会发展对教育的要求;是教育改革和发展的要求。” 教育技术正从教育改革边缘移向中心,教育技术在教育系统中的地位和作用下呈现出前所未有的重要。
2004年12月25日,教育部印发了《中小学教师教育技术能力标准(试行)》,这是中国颁布的第一个有关中小学教师的专业能力标准。该标准对教育技术作出了如下的定义:运用各种理论及技术,通过对教与学过程及相关资源的设计、开发、利用、管理和评价,实现教育教学优化的理论与实践。
第三篇:JAVA课程总结
DAY01
JavaSE第一天课程安排
##### 目标:开发第一个JAVA小程序,了解掌握相关概念
#####
内容:
1、了解计算机相关概念
2、下载安装Java开发环境
3、开发第一个Java程序
4、开发环境设置优化
5、掌握Java程序的开发运行流程
6、掌握Java相关概念
7、练习
#####----------------计算机相关概念----------------
1、计算机
1、机器
2、软件
3、数据输入----> 数据处理----> 数据输出-----(重要不紧急)
2、软件----
A、系统软件-----操作系统---windows linux B、应用软件-----QQ、CF、计算器(数据)软件的功能: 数据输入----> 数据处理----> 数据输出 数据-----123、文件、文件夹----泛称
3、计算机操作
物理操作 软件操作 GUI/CUI GUI-----图形用户接口-----Graphics User Interface(常用)CUI-----命令行用户接口---Command User Interface(了解)A、如何启动CUI
1、开始----> 附件-----> 命令提示符
2、开始----> 搜索CMD
3、win7----> shift 右击----> 打开命令行
B、DOS命令----CUI和GUI有对应关系
按规律记忆
电脑上数据分两类: 切换盘符:盘符号: 进入文件夹: cd 文件夹名
cd 路径名(进入多级)
返回上一级:cd..返回根目录:cd
1、文件
增
-----notepad/write/edit 查
-----type 文件名---查看内容 改
-----notepad/write/edit
删
-----del 文件名称
2、文件夹---dir
增----md XXX 查----dir--查看文件夹下所有文件
改----修改名称 ren 删----rd 要求:
1、简单调用----记住一个 help
2、调用 time date 等命令
3、命令如何使用--命令 /? DOS启动程序
1、DOS下进入程序所在路径
2、敲入程序名称
3、回车
需求:任意目录下启动程序,notepad可以,QQ不可以 edit cd cd..cd help 命令 /?----------不重要紧急
4、键盘使用------------重要不紧急
快捷键: 全选: ctrl + A
撤销: ctrl + Z 复制: ctrl + C 粘贴: ctrl + V 保存: ctrl + S------剪切: ctrl + X eclipse: ctrl + D----删除一整行
5、计算机语言
6、软件开发
使用计算机语言开发程序 学习计算机语言:语法
总结:了解-----
紧急-----常见的DOS命令
----------------下载安装Java开发环境----------
1、Java简介
A、詹姆斯 格斯林 B、开源----开放源代码 C、ONE体系
Open Net Environment----开放的网络环境
JavaSE-----桌面应用程序开发----核心----就业机会不多 JavaEE-----企业的分布式系统开发1)----(N从右向左数的位数)
4、负数的转换----(不不)
-10 0000 0000 概念:原反补
正数:源码反码补码都一样
负数:原码----标志位是1,计数位和正数一样
反码----计数位取反,1变0,0变1
补码----反码基础之上 +1 101 0111 1111 1111 1111 1111 1111 1111 1111----2^311 = 127 short-----2个字节16bit----最小值:-2^15=-32768 最大值:2^15* / %
++--(重点)DAY03 一.算数运算符:
1.+ 2.-
3.* 4./
/ 3 : 3 10 / 0 : 运行时异常;
10.0 / 0 :Infinity(无穷)不是异常
5.%
% 3 : 1 10 % 0 : 运行时异常
10.0 % 0 : NaN(Not A Number)不是异常-10 %-3 :-1 10 % 3 :1-10 % 3:-1 10 %-3:1 6.++: 7.--: 如果表达式中,只做++或--一件事情,那么前++/--和后++/--效果一样的; 但如果表达式中做多件事情:
前++/--:先自增/自减,然后再参与表达式的其它运算; 后++/--:先参与表达式的运算,然后在自增/自减;
二.赋值运算符
1.=:执行顺序,从右至左,并且最后返回变量; 2.+=: 3.-=: 4.*=: 5./=: 6.%=:
特点:带隐式强制转换;
byte b1 = 10;b1 = b1 + 20;//编译错误
b1 += 20;//OK的-->b1 =(byte)(b1 + 20);三.关系运算符:
1.==:判断是否相等 2.!=:判断是否不等;
3.<:左操作数是否小于右操作数; 4.>:左操作数是否大于右操作数;
5.<=:左操作数是否小于或者等于右操作数; 6.>=:左操作数是否大于或者等于右操作数;
四.逻辑运算符:
&&、||和&、|的区别:
1.逻辑&&和||具有短路行为,一旦确定整个表达式的结果,那么将不再执行剩余表达式; 1.&&(语意:并且):两边都为true,结果为:true; 2.||(语意:或者):有一边为true,结果为true;3.!(语意:不是):!true:false;!false:true 位运算符:
4.&(并且):结果同&& 5.|(或者):结果同|| DAY04 一.运算符:
1.位运算符:
1).<<(左移): 2).>>(有符号右移):
3).>>>(无符号右移)4).&(按位与):两位都是1,结果为1; 5).|(按位或):有1位为1,结果为1;
6).^(按位异或):两位相同结果为0,否则为1; 7).~(取反):1变0,0变1 2.位运算符的考点:
1).高效的计算某数 * 2 : << 2).高效的计算某数 / 2 : >> 3).&、|同&&、||的区别: 逻辑与&&、||:具有短路行为;
4).将两个变量的值交换:三次异或;
3.三目运算符: 条件表达式 ? 表达式1 : 表达式2;
二.键盘录入:
步骤:
1.import java.util.Scanner;2.Scanner sc = new Scanner(System.in);3.int : int num = sc.nextInt();
double : double d = sc.nextDouble();
String : String s = sc.next();三.选择结构:
1.if语句:
1)格式1:
if(条件表达式){ } 注意:如果if体内只有一条语句,可以省略大括号,但不建议;
2)格式2:
if(条件表达式){ //为true,执行这里
}else{ } //为false,执行这里
3)格式3:
if(条件表达式){ }else if(条件表达式2){ }else if(条件表达式3){ }else{ } 2.switch语句:
1).格式:
switch(表达式){
} case 值1: //代码 break;case 值2:
//代码 break;default: //代码 break;2).注意事项:
1.“表达式”可以产生的值:byte,short,int,char,枚举(JDK5以后),String(JDK7以后)2.case语句后跟“常量表达式”,不能是“变量”;而且不能出现相同的常量值;
3.break;语句“不是必须的”。如果不写,如果一旦case相应的值成功,但内部没有break语句,那么将会无条件(不再进行case匹配)的继续向下执行其它case中的语句,直到遇到break;语句
或者到达switch语句结束。4.多个case之间,没有顺序关系;
5.default语句“不是必须的”。可以不写,它就相当于多重if语句中最后的else。6.default语句和case语句“没有顺序关系”。
DAY05 一.while循环:
while(条件表达式){ } 二.do_while循环:
do{ }while(条件表达式);三.for循环:
for(定义循环变量表达式
;
条件表达式
;增量表达式){ } 说明:
1.三个表达式都不是必须的;但分号必须要写; 2.执行顺序:
1).定义循环变量表达式; 2).条件表达式;3).进入循环; 4).增量表达式; 5).条件表达式;
6).进入循环 7).增量表达式......四.三种循环的区别:
1.只有do_while循环是先无条件的进入循环体执行一次,然后再判断;
while和for循环都先判断,后进入循环体; 2.一般对于有明显的遍历范围的,建议首选for循环。
对于没有明显遍历范围的,一般使用while。
对于循环体中的内容,如果需要先执行一次,再判断,那么可以使用do_while DAY06 一.方法:
1.方法的作用:代码复用; 2.方法定义的格式:
修饰符 返回值类型 方法名([形参列表]){ } 修饰符:目前只需要写:public static 返回值类型:可以是任何的Java类型(基本数据类型、引用数据类型)。
如果没有返回值,这里要写void
方法名:自定义标识符;
形参列表:可以没有,但是一定写一对小括号。
如果有,每个形参是由:数据类型 形参名
多个形参,中间用逗号隔开;
3.方法内,可以写什么?
1).定义变量;
2).if语句,switch语句; 3).各种循环语句;
总之:除了不能定义方法,其它都可以; 4.方法的注意事项:
1).方法不调用不执行;2).方法与方法是平级关系,不能嵌套定义;3).方法定义的时候参数之间用逗号隔开;4).方法调用的时候不用在传递数据类型;5).如果方法有明确的返回值,一定要有return带回一个值;5.方法的重载:
1).在一个类中,可以定义多个同名的方法,但形参列表不能完全相同; 2).方法重载,跟返回值类型无关;跟形参名无关;
二.数组:
1.一维数组:
1).定义的格式:
1.动态初始化:数据类型[] 数组名 = new 数据类型[数组长度];2.静态初始化:
数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,.....,值n};
数据类型[] 数组名 = {值1,值2,值3.....值n};2).数组是“引用数据类型”,变量存储的是“引用(地址)”;
3).当new(实例化)一个数组对象时,其“值”的空间是在堆中分配的,对于各种数据类型,都会分配一个
默认值:
整数:0 小数:0.0 字符:'u0000' 布尔:false String:null 其它引用类型:null 4).数组的访问方式:使用:数组名[索引] DAY07 一.二维数组:
1.定义的格式:
数据类型[][] 数组名 = new 数据类型[第一维的长度][第二维的长度];左边也可以写成:
数据类型 数组名[][] 数据类型[] 数组名[] 数据类型[][] 数组名 = new 数据类型[][]{{值1,值2},{值3,值4},{值5,值6,值7}};数据类型[][] 数组名 = {{值1,值2},{值3,值4},{值5,值6,值7}};二.方法的值传递和引用传递: 1.当一个方法接收的是一个“基本数据类型”时,调用方法传递实参时,是将“值”复制到方法内;
在方法内,如修改其值,修改的只是“副本”,原值不会被改变;
2.当一个方法接收的是一个“引用数据类型”是,调用方法传递实参时,是将“引用”复制到方法内;
在方法内,是可以通过这个引用修改“堆”空间的内容,即使方法结束,修改会影响到原堆中的值;
DAY08
一.类:是一组相关的“属性”和“行为”的集合;
对象:是该类事物的具体体现; 二.类和对象的关系:
1.现实:
类 对象 猫 波斯猫
折耳猫 加菲猫
---------
狗 金毛
藏獒 沙皮
2.代码:
类 对象
Cat c1 = new Cat();c1.name = “波斯猫”;class Cat{
}
String name;int age;c1.age = 2;
----Cat c2 = new Cat();c2.name = “折耳猫”;c2.age = 3;----------------------------class Dog{
}
Dog d1 = new Dog();d1.name = “金毛”;String name;int age;d1.age = 2;
----Dog d2 = new Dog();d2.name = “藏獒”;d2.age = 3;
三.类的定义:
1.使用关键字:class(注意小写)2.一个java源文件中:
1).如果定义多个类,但只有一个是public的;而且源文件名必须与这个public的类名一致; 2).如果定义多个类,可以没有public类;源文件名没有一致性要求;
3).main()方法不是必须放在public类中;
3.类中可以定义什么:
1).成员变量:
A.可以是基本数据类型,也可以是任何引用数据类型; B.可以显示初始化;
class Student{
} String name = “张三”;int age = 20;C.可以隐式初始化;
整型:0 浮点:0.0 字符:'u0000' 布尔:false 引用类型:null 2).成员方法: A.可以有参数,可以没参数;
可以有返回值,可以没有返回值;
B.方法的“形参”可以是任何Java类型(基本数据类型、引用数据类型)C.方法的“返回值”可以是任何Java类型(基本数据类型、引用数据类型)D.一个类中可以定义多个同名的方法,但形参列表不完全相同,叫:方法的重载;
3).内部类(后面讲);
4.成员变量和局部变量的区别:
1).成员变量: A.定义在“类体”中;可以是任何数据类型;
B.会被自动初始化;
class Student{
} String name;void show(){ } System.out.println(“我叫:” + num);
//打印:我叫:null C.当实例化对象后,被存储在“堆”中;
D.当“对象”不被使用(没有任何引用),并被垃圾回收器回收时被清理;
2).局部变量:
A.定义在某个方法、或其它代码块中; B.必须显示初始化,否则不能访问其值;
class Student{
void show(){ String name;System.out.println(“我叫:” + name);
//编译错误。局部变量必须显示初始化才能访问其值;
} } name = “张三”;//OK。可以被赋值。
C.当方法或其它代码块被执行时,基本数据类型的“值”和引用数据类型的“引用”都是存储在“栈”中; D.当方法或代码块执行完毕时,会被立即清理;
四.对象的使用:
1.创建对象使用new关键字;会在堆中分配内存空间; 格式:
类名
变量名 = new 类名();2.一个类可以创建多个对象;
3.每个“对象”的“成员变量”在“堆”中都有一份独立的空间;
每个“对象”的“成员方法”被存储在“方法区”中,多个对象只有一个“方法空间”; 4.对象的“引用(地址)”被存储在“栈”中;
五.方法的形参:
1.可以是“基本数据类型”:
1).调用时,必须传递此类型的“值”; 2).调用时,是将值复制一份到方法内部; 3).在方法内,使用形参接收此值的副本; 4).在方法内,如果更改此值,对原值没有影响;
int a = 10;show(a);System.out.println(a);//10---public void show(int n){//n = 10 } n = 20;//对原来的a的值是没有影响的;
2.可以是“引用数据类型”:
1).调用时,必须传递此类型的“引用”;
2).调用时,是将“引用(地址)”复制一份到方法内部; 3).在方法内,使用形参接收此“引用”的副本;
4).在方法内,如果通过此引用更改堆中的值,对原堆中的值将会产生影响;
int[] arr = {14,324,435};//arr = 0x2233 show(arr);//show(0x2233)System.out.println(arr[0]);//1000
----public void show(int[] array){//array = 0x2233 } array[0] = 1000;六.匿名对象:
1.匿名对象:没有名字的对象:new Student();2.匿名对象的两种使用情况:
1).对象调用方法仅仅一次的时候:new Student().show();2).作为实际参数传递:printStudent(new Student());七.封装:
1.直接对外部暴露成员变量是很不安全的,这时可以将成员变量“私有化”,对外提供公有的 get和set方法; 2.封装的好处:
1)隐藏实现细节,提供公共的访问方式 2)提高了代码的复用性 3)提高安全性。
3.封装的原则:
1)将不需要对外提供的内容都隐藏起来。2)把属性隐藏,提供公共方法对其访问。
八.private关键字:
1.是一种“访问修饰符”(将在day10讲到);
Java中一共有四种访问修饰符:从宽到窄:public,protected,(默认),private 2.用于修饰“成员变量”和“成员方法”;
3.被private修饰的成员,只能在类的内部被其它成员访问。在类外部无法访问;
九.this关键字: 1.每个类都有一个“隐式”的变量:this;
2.它是在实例化对象时,由虚拟机自动赋值的,会被自动赋值为当前对象的“引用”。
所以每个对象内的this变量的值是不同的;
3.this关键字可以调用本对象的“成员属性”、“成员方法”、“构造方法”; 4.以下情况必须显示的使用this:
1).“局部变量”覆盖“成员变量”时,可以使用this显示的访问被覆盖的“成员变量”;
否则访问的是“局部变量”;
2).在一个构造方法中调用本类的其它构造方法;this()或this(实参);
DAY09
一.构造方法:
1.当实例化一个类的对象时,JVM会自动调用本类的一个方法:构造方法;
2.定义类时,可以不定义构造方法,编译器会自动添加一个无参,什么都不做的构造方法; 3.如果类中定义了构造方法,编译器就不会添加任何构造方法了; 4.构造方法的格式要求:
1).构造方法名必须与类名一致;
2).构造方法不能定义“返回值类型”,甚至是void;
3).构造方法不能返回一个具体的值,但内部可以使用return;语句; 注意:
1).以下代码可以编译通过:
class Student(){
} public void Student(){ }
//普通成员方法,不是构造方法;
2).以下代码不能通过编译:
class Student(){ public student(){ }
//构造方法必须同类名一致,包括大小写;
} 5.一个类中可以定义多个“构造方法”,但每个构造方法的形参列表不能完全相同,叫:构造方法的重载; 6.在一个构造方法中可以调用另一个构造方法,使用this关键字; 7.构造方法可以调用“成员方法”,但“成员方法”不能调用构造方法;
构造方法也可以调用其它构造方法;
二.static关键字:
1.static关键字:静态的,全局的。
2.可以修饰“成员变量”和“成员方法”。被static修饰的成员变量存储在方法区的“静态存储区”,只有
一份拷贝,被多个对象共享;
3.特点:
1).随着类的加载而加载
2).优先于对象存在3).被类的所有对象共享
4).可以通过类名调用,也可以通过对象名调用; 4.static关键字注意事项:
1).在静态方法中是没有this关键字的
2).静态方法只能访问静态的成员变量和静态的成员方法
三.静态变量和成员变量的区别:
1.所属不同
1).静态变量属于类,所以也称为为类变量
2).成员变量属于对象,所以也称为实例变量(对象变量)2.内存中位置不同
1).静态变量存储于方法区的静态区 2).成员变量存储于堆内存
3.内存出现时间不同 1).静态变量随着类的加载而加载,随着类的消失而消失
2).成员变量随着对象的创建而存在,随着对象的消失而消失
4.调用不同
1).静态变量可以通过类名调用,也可以通过对象调用 2).成员变量只能通过对象名调用
DAY10 一.代码块(理解):
1.普通代码块(类体中):包含:局部代码块(方法或其它代码块内)2.静态代码块:(类体中)作用:
1.初始化成员变量。执行流程:
1.普通构造代码块:每次实例化此类对象时,会被执行。它会先于“构造方法”被执行; 2.静态代码块:第一次实例化此类对象时; 3.静态代码块-->普通构造代码块-->构造方法:
二.继承(必须掌握):
1.使用关键字:extends 2.作用:代码重用。为多态提供了前提; 3.this和super的区别:
1).this:
1).在任何类中使用; 2).存储的是本类对象的引用;
3).可以访问本对象的成员变量、成员方法、构造方法;
2).super:
1).在子类中使用;
2).存储的是父类对象的引用;
3).可以访问父类对象的成员变量、成员方法、构造方法;
4.类的初始化过程:
加载class文件 堆中开辟空间 变量的默认初始化 变量的显示初始化 构造代码块初始化 构造方法初始化
成员变量-->构造代码块-->构造方法 5.Java中继承的特点:
1).Java中只能单继承; 2).Java中可以多级继承;
6.继承的好处和弊端:
好处: 1).代码复用
2).为多态提供了前提; 弊端:
1).由于继承,子类对父类产生了依赖;
三.方法重写:
1.在子类中,定义跟父类一模一样的方法,这叫:方法重写; 2.重写的规则:
1).返回值类型、方法名、形参列表:要完全一致; 2).子类的访问修饰符可以跟父类的相同,或更宽;
3.重写的意义: 1).子类保留了父类的方法,具有了自己特有的行为;
4.重写和重载的区别: 1).重写:在子类中定义跟父类一模一样的方法;
2).重载:在一个类中,定义:方法名相同,参数列表不完全相同的方法,叫:重载。跟返回值类型无关;
四.final关键字:
1.可以修饰: 成员变量:表示其变量拥有最终的值,不能被更改,成为“常量”。修饰基本数据类型:表示其值不能被修改。修饰引用数据类型,表示地址不能被修改;
成员方法:表示最终的方法。不能被重写; 类:
表示最终类。不能被继承;
局部变量:表示其值不能改变;区分:基本类型和引用类型; 方法形参:表示其值不能改变;区分:基本类型和引用类型;
DAY11
一.多态:
1.父类的引用指向子类的对象; 2.多态前提和体现
1).有继承关系 2).有方法重写
3).有父类引用指向子类对象
3.多态的转型:
1).自动转型:子类的引用转为父类的引用;Person p = new Student();2).强制转型:父类的引用转为它所指向的子类对象的引用;Student stu =(Student)p;3).在进行强制转型前,为保证安全,可以使用instanceof关键字进行判断:
if(p instanceof Student){ } Student stu =(Student)p;4.多态的好处:
1).提高了程序的维护性(由继承保证)2).提高了程序的扩展性(由多态保证)
5.多态的弊端: 1).不能访问子类特有功能(可以向下转型)6.多态时的访问规则:
1).总体规则:访问的任何成员父类中必须要有,否则编译错误;
例如:
class A{ } class B extends A{ } main(){
} A a = new B();System.out.println(a.n);//编译错误,父类中没有n int n = 20;int num = 10;2).成员变量:如果子、父类中都有,访问的是“父类”的;
class A{ } class B extends A { } main(){
} A a = new B();//多态
System.out.println(a.num);//打印10;
int num = 20;int num = 10;
普通方法:如果子、父类中都有(重写),访问的是“子类”的;
class A{
} class B extends A{
} main(){
} A a = new B();a.show();
//打印:B-->show()(访问的是子类的show());void show(){ } System.out.println(“B-->show()”);void show(){ } System.out.println(“A-->show()”);
静态方法:如果子、父类中都有(重写),访问的是“父类”的;
二.抽象类:
1.使用abstract关键字修饰;可以修饰“类”,可以修饰“成员方法”;
abstract class A{ } abstract void show();2.“抽象类”的特点:
1).不能被实例化,只能用于被继承;
2).可以包含:成员变量、构造方法、成员方法、抽象方法; 3).可以不包含抽象方法;
3.“抽象方法”的特点:
1).没有方法体;abstract void show();2).必须被子类重写。除非子类也是个抽象类;
3.子类继承抽象类使用关键字:extends,仍然是单继承;
4.一个子类继承 了一个抽象类,必须实现抽象类中所有的抽象方法;
否则子类也必须是抽象的。
例如:
abstract class A{ } class B extends A{ }
//编译错误。类B不是抽象的,继承类抽象类必须重写抽象类中的所有abstract void show();抽象方法。abstract class B extends A{ } //编译通过。类B没有重写父类中的抽象方法,但类B是抽象的。
5.abstract关键字不能和哪些关键字共存:
1.private:抽象方法就是用来被子类重写的,而私有方法不能被子类重写;
2.final:抽象类和抽象方法就是用来被子类继承和重写的,而fianl类和final方法不能
被继承和重写; 3.static:static修饰的方法在没有任何对象的情况下就会被分配内存空间;而抽象方法
没有方法体,无法分配空间;
三.接口:
1.使用interface关键字定义:只能修饰“类”:
interface IA{ } 2.“接口”的特点:
1).不能被实例化,没有构造方法,只能用于子类“实现”; 2).可以包含:
A.成员变量(常量):隐式的定义为:public static final。
例如: interface IA{
} public int num1 = 10;
//OK
上述三个关键字中任何一个都可以不写,系统会自动添加;
static final int num2 = 20;//OK final int num3 = 30;
//OK
//OK public final num4 = 40;int num5 = 50;
//OK B.抽象方法:隐式的定义为:public abstract。可以省略,系统会自动添加
例如: interface IA{
} void show1();
//OK
//OK;public void show2();abstract void show3();//OK;3).接口的功能是:扩展功能;
3.子类实现接口使用关键字:implements 4.一个子类可以同时实现多个接口;
interface IA{} interface IB{} class C implements IA,IB{ //OK的。} 5.子类实现接口时,必须重写接口中所有的抽象方法,而且必须是public的--因为
接口中抽象方法的定义隐式的是public的。
例如:
interface IA{ } class B implements IA{ void show(){ }
//编译错误。父接口的show()隐式的为public的,子类重写时void show();必须是public的;
} 5.接口编译后一样会生成.class文件。
四.多态的形式:
1.父类的多态; 2.抽象类多态; 3.接口多态;
五.类与类,类与接口,接口与接口的关系:
1.类与类:继承关系,关键字:extends,只能单继承,但是可以多层继承
2.类与接口:实现关系,关键字:implements,可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口
3.接口与接口:继承关系,关键字:extends,可以单继承,也可以多继承
例如:
interface IA{} interface IB{} interface IC extends IA,IB{} //OK的
六.抽象类和接口的区别:
1.成员区别 1).抽象类 变量,常量;有抽象方法;抽象方法,非抽象方法
七.2).接口 常量;抽象方法
2.关系区别
1).类与类 继承,单继承
2).类与接口 实现,单实现,多实现 3).接口与接口 继承,单继承,多继承
3.设计理念区别
1).抽象类 被继承体现的是:”is a”的关系。共性功能 2).接口 被实现体现的是:”like a”的关系。扩展功能
一.类名作为形参:
1.实参可以是:
1).此类对象的引用;2).null;3).此类子类对象的引用;
二.抽象类作为形参:
1.实参可以是:
1).此类子类对象的引用; 2).null;
三.接口作为形参:
1.实参可以是:
1).此接口子类对象的引用; 2).null;
四.类名作为返回值:
1.可以返回的类型:
1).此类对象的引用; 2).null;
3).此类子类对象的引用;
2.可以用什么类型接收:
1).使用此类类型;
2).不能使用某个子类类型接收;
五.抽象类作为返回值:
1.可以返回的类型:
1).null;2).此类子类对象的引用;
2.可以用什么类型接收:
1).使用此类类型;(多态)2).不能使用某个子类类型接收;
六.接口作为返回值:
1.可以返回的类型:
1).null;2).此接口子类对象的引用;
2.可以用什么类型接收:
1).使用此接口类型;(多态)2).不能使用某个子类类型接收;
DAY12
一.包:
1.定义包使用关键字:package;
1).注意事项:
A.package语句必须是程序的第一条可执行的代码 B.package语句在一个java文件中只能有一个 C.如果没有package,默认表示无包名
2.导入包使用关键字:import;
1).注意事项:
A.导入到最终的类;
B.可以使用通配符:*,只统配包下的类,不包括子包下的其它类; C.在一个类文件中,可以有多条import语句;
D.import语句必须在package语句之后,在定义类之前;
3.package,import,class有没有顺序关系? 有:package-->import-->class 二.访问修饰符:
1.用于限定“类”和“成员”被其它包下的其它类访问的; 2.四种访问修饰符:
1).public(公有):可以修饰类、成员。可以被任何包下的其它类访问; 2).protected(保护):可以修饰成员。可以被同包下的其它类访问。如果在包外
只能被子类访问;
3).(默认):可以修饰类、成员。只能被包内的其它类访问; 4).private(私有):可以修饰成员。只能被类中的其它方法访问;
3.类及成员可用的修饰符:
1).类:
默认,public,final,abstract 我们自己定义:public居多
2).成员变量:
四种权限修饰符均可,final,static 我们自己定义:private居多
3).构造方法:
四种权限修饰符均可,其他不可 我们自己定义:public 居多
4).成员方法:
四种权限修饰符均可,fianl,static,abstract 我们自己定义:public居多
三.内部类:
1.成员内部类:
1).定义在类体中,作为类的成员;
2).可以使用同类“成员方法”相同的修饰符;
2.局部内部类:
1).定义在某个方法或代码块内部;
2).不能使用“访问修饰符”,不能使用static修饰符;可以使用final和abstract 3).注意:局部内部类访问“局部变量”,要求局部变量必须是final的(常量);(重点)
3.匿名内部类:
1).就是内部类的简化写法。2).前提:存在一个类或者接口 这里的类可以是具体类也可以是抽象类。
3).格式: new 类名或者接口名(){重写方法;} 4).本质: 是一个继承了类或者实现了接口的子类匿名对象
DAY14 一.Object类:
1.所有引用数据类型(包括类库中的类,自定义类,数组)的超类; 2.定义在java.lang包,使用时不需要导包; 3.常用方法:
public class Object{ public Object(){
内存的操作;
} public int hashCode(){ //功能:用于哈希表结构的键值
//默认实现:将此对象的地址转换为int值返回;
//此方法建议子类重写;
} public final Class getClass(){ //功能:获取此对象的Class对象,在day27讲解
//此方法不能被子类重写 } public String toString(){ //功能:返回此对象的字符串表现形式;
//默认实现:全名限定的类名 + @ + hashCode(无意义)//此方法建议子类重写;
} public boolean equals(Object obj){ //功能:将当前对象与参数对象进行比较
//默认实现:比较地址(跟==的结果是一样的)//此方法建议子类重写;
} protected void finalize(){ //功能:当前对象在被垃圾回收器回收前,由垃圾回收器自动调用的方法。一般用于做些释放 //默认实现:无
//此方法根据需要由子类重写(一般我们不用)}
} protected Object clone(){
} //功能:复制此对象的副本; //默认实现:本地方法 //一般子类无需重写;
--
二.java.lang.String类:
1.一个“字符串”对象; 2.一个“引用数据类型”; 3.使用方式:
String s1 = “abc”;(常用、存储的是常量池中的地址)或:
String s1 = new String(“abc”);(存储的是堆中的地址)(在内存中创建了两个对象:1.常量池:“abc”;
class Student(extends Object){ } //默认就拥有了Object类中可以继承的方法;
2.堆:new String())
4.特点:其“值”的内容不能改变(地址可以改变);
String str = “你好”;str = “Java”;//原值被丢弃,存储了新的地址;
5.常见面试题: String s1 = “abc”;
String s2 = “abc”;System.out.println(s1 == s2);//true--------
String s1 = “Hello”;String s2 = “World”;String s3 = “HelloWorld”;String s4 = “Hello” + “World”;String s5 = s1 + s2;String s6 = “Hello” + s2;String s7 = s1 + “World”;String s8 = new String(“Hello”);System.out.println(s3 == s4);//true System.out.println(s3 == s5);//false System.out.println(s3 == s6);//false System.out.println(s3 == s7);//false System.out.println(s1 == s8);//false;6.构造方法:
public String():构造一个空字符串。效果同String str = “";public String(byte[] bytes):使用一个byte[]数组构造一个字符串;
public String(byte[] bytes,int offset,int length):使用byte[]数组的一部分构造一个字符串; public String(char[] value):使用一个字符数组构造一个字符串;
public String(char[] value,int offset,int count):使用字符数组的一部分构造一个字符串; public String(String original):使用一个字符串构造一个字符串;
7.常用方法:----注意:以下方法返回String的,都是生成一个新字符串,原字符串不变; 1).判断功能:
boolean equals(Object obj):重写父类的方法。与参数字符串比较,如果包含一样的字符序列则返回true,否则返回false;
boolean equalsIgnoreCase(String str):作用与equals()相同;但此方法不区分大小写; boolean contains(String str):判断是否包含参数字符串;
boolean startsWith(String str):判断字符串是否以参数字符串开头; boolean endsWith(String str):判断字符串是否以参数字符串结尾; boolean isEmpty():判断字符串是否是”空字符串“;
----
String s1 = ”“;String s2 = new String();String s3 = new String(”“);String s4 = null;String s5 = ”“;String s6;System.out.println(s1.isEmpty());System.out.println(s2.isEmpty());System.out.println(s3.isEmpty());// System.out.println(s4.isEmpty());
System.out.println(s1.equals(s2));System.out.println(s2.equals(s3));System.out.println(s3.equals(s1));System.out.println(s1 == s2);System.out.println(s2 == s3);System.out.println(s1 == s3);System.out.println(s1 == s5);
System.out.println(s4 == s6);-----2).获取功能:
int length():获取此字符串内部的字符数量。(区分数组的length属性)char charAt(int index):获取此字符串中index位置的字符char;int indexOf(int ch):从左向右查找,获取字符ch在字符串中第一次出现的位置。如果不包含,则返回:false
int indexOf(String str):获取字符串str在此字符串中第一次出现的位置。int indexOf(int ch,int fromIndex):从fromIndex位置开始,查找字符ch。int indexOf(String str,int fromIndex):从fromIndex位置开始,查找str。
String substring(int start):从start(包含)开始,截取到此字符串的末尾;返回一个新字符串,原字符串不变; String substring(int start,int end):从start(包含)到end(不包含)截取字符串;返回一个新字符串,原字符串不变;
3).转换功能:
byte[] getBytes():将字符串转换为一个byte[]数组。char[] toCharArray():将字符串转换为一个char[]数组;
static String valueOf(char[] chs):静态方法,将一个char[]数组转换为一个String static String valueOf(int i):静态方法,将一个int转换为一个String String toLowerCase():转换为小写; String toUpperCase():转换为大写;
String concat(String str):将参数字符串添加到本字符串的末尾。
4).替换功能:
String replace(char old,char new):使用new字符替换本字符串中的所有old字符; String replace(String old,String new):使用new字符串替换本字符串中的所有old字符串;
5).其它功能:
String trim():去掉字符串两边的空格;不包括中间的。
int compareTo(String str):重写Comparable接口的方法。按Unicode编码表的顺序与参数字符串比较;
System.out.println(”a“.compareTo(”b“));//-1 System.out.println(”a“.compareTo(”a“));//0 System.out.println(”b“.compareTo(”a“));//1 int compareToIgnoreCase(String str):不区分大小写的比较;
DAY15 一.StringBuffer类:
1.String的缓冲池类。
2.String和StringBuffer的区别:
1).String:其”值“不可变; 2).StringBuffer:其”值"可变;
当我们多次进行字符串的拼接等操作时,使用String会产生大量的垃圾空间。建议使用此类; 2.构造方法:
public StringBuffer():初始容量16 public StringBuffer(int capacity):初始容量capacity public StringBuffer(String str):使用String构造一个StringBuffer。
3.添加功能:
public StringBuffer append(String str):及各种重载的方法。将任何类型的参数添加到末尾; public StringBuffer insert(int offset,String str):将一个String插入到offset位置。原位置上的字符依次后移;
4.删除功能:
public StringBuffer deleteCharAt(int index):删除index位置上的字符
public StringBuffer delete(int start,int end):删除start到end-1处的所有字符;
5.替换功能: public StringBuffer replace(int start,int end,String str):将start到end处的所有字符替换为str;6.反转功能: public StringBuffer reverse():反转内部字符串;
7.截取功能:
public String substring(int start):截取从start到结尾,返回一个新字符串; public String substring(int start,int end):截取从start到end-1处的所有字符;
二.StringBuffer类和StringBuilder类的区别:
1.StringBuffer是线程安全的; 2.StringBuilder是线程不安全的;
三.Arrays类:
1.对数组操作的类,没有构造方法,内部包含了大量静态的工具方法; 2.常用方法:
1).public static String toString(int[] a):将int[]数组转换为String的表示形式; 2).public static void sort(int[] a):升序排序int[]数组;
3).public static int binarySearch(int[] a,int key):二分查找int[]数组中的key值;
四.包装类:
基本数据类型 byte short int long char float 包装类型
Byte Short Integer
Long Character Float Double Boolean double boolean
第四篇:Java技术路线图
在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了。但如果有清晰的指示图供参考还是非常不错的,这样我们清楚的知道我们大概处于那个阶段和水平。
Java程序员 高级特性
反射、泛型、注释符、自动装箱和拆箱、枚举类、可变
参数、可变返回类型、增强循环、静态导入
核心编程
IO、多线程、实体类、集合类、正则表达式、XML和属性文件
图形编程
AWT(Java2D/JavaSound/JMF)、Swing、SWT、JFace 网路编程
Applet、Socket/TCP/UDP、NIO、RMI、CORBA Java语法基础
类、抽象类、接口、最终类、静态类、匿名类、内部类、异常类、编码规范 Java开发环境
JDK、JVM、Eclipse、Linux Java核心编程技术
Java,设计而又非常精巧的语言。学习Java,须从Java开发环境开始,到Java语法,再到Java的核心API。
1.Java开发入门:Java开发环境的安装与使用,包括JDK命令、EclipseIDE、Linux下Java程序的开发和部署等。
2.Java语法基础:基于JDK和Eclipse环境,进行Java核心功能开发,掌握Java面向对象的语法构成,包括类、抽象类、接口、最终类、静态类、匿名类、内部类、异常的编写。
3.Java核心API:基于JDK提供的类库,掌握三大核心功能:
A。Java核心编程:包括Java编程的两大核心功能——Java输入/输出流和多线程,以及常用的辅助类库——实体类、集合类、正则表达式、XML和属性文件。B。Java图形编程:包括Sun的GUI库AWT(Java2D、JavaSound、JMF)和Swing,IBM和GUI库SWT和Jface;C.Java网路编程:Applet组件编程,Socket编程,NIO非阻塞Socket编程、RMI和CORBA分布式开发。
4.Java高级特性:掌握JDK1.4、JDK5.0、JDK6.0中的Java高级特性,包括反射、泛型、注释,以及java高级特性——自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入等。JavaEE初级软件工程师 JSF框架开发技术
配置文件(页面导航、后台Bean)、JSF组件库(JSF EL语言、HTML标签、事件处理、)、JSF核心库(格式转换、输入验证、国际化)Javaweb核心开发技术 开发环境(Eclipse、Linux)
三大组件(JSP、JavaBean、Servlet)
扩展技术(EL、JSTL、Taglib)网页开发技术
HTML、XML、CSS、JavaScript、AJAX 数据库设计技术
SQL、MySql、Oracle、SQLServer、JDBC Web服务器(Tomcat/Jetty/Resin/JBossWeb)JavaWeb核心技术:
JavaWeb项目开发的全过程可以分解为:
网页开发+数据库设计——>JavaWeb项目开发,其中,javaWeb由6项基本技术组成:JSP+JavaBean+Servlet+EL+JSTL+Taglib,而JSF正是将这6种技术进行有机结合的技术框架:
JavaEE中级软件工程师
四种经典架构SSH1、SSI1、SSH2、SSI2 Struts1表现层框架
入门配置、核心组件、标签库、国际化、数据检验、数据库开发、Sitemesh集成、集成Hibernate/iBATIS Struts2表现层框架
入门配置、核心组件、标签库、国际化、数据校验、Sitemesh集成转换器、拦截器、集成Hibernate/iBATIS Spring业务层框架
入门配置、IoC容器、MVC、标签库、国际化、数据校验、数据库开发 Hibernate持久层框架
MySQL、Oracle、SQLServer iBATIS持久层框架 MySQL、Oracle、SQLServer Web服务器(Tomcat/Jetty/Resin/JBossWeb)Java高级软件工程师 javaWeb开源技术与框架
工作流、规则引擎 搜索引擎、缓存引擎、任务调度、身份认证
报表服务、系统测试、集群、负载平衡、故障转移 JavaWeb分布式开发技术 JTA(Java事物管理)
JAAS(Java验证和授权服务)JNDI(Java命名和目录服务)JavaMail(Java邮件服务)JMS(java信息服务)WebService(web服务)JCA(java连接体系)JMS(java管理体系)
应用服务器(JBossAS/WebLogic/WebSphere)JavaEE系统架构师
面向云架构(COA)
COA、SaaS、网格计算、集群计算、分布式计算、云计算
面向资源架构(ROA)ROA、RESI 面向web服务架构(SOA)
WebService、SOA、SCA、ESB、OSGI、EAI Java设计模式
创建式模式:抽象工厂/建造者/工厂方法/原型/单例
构造型模式:适配器/桥接/组合/装饰/外观/享元/代理
行为型模式:责任链/命令/解释器/迭代子/中介者/备忘录/观察者/状态/策略/模板方法/访问者 Java与UML建模
对象图、用例图、组件图、部署图、序列图、交互图、活动图、正向工程与逆向工程 CTO首席技术官
发展战略
技术总监
团队提升
团队建设
项目管理
产品管理
企业级项目实战(带源码)地址:http://zz563143188.iteye.com/blog/1825168
收集五年的开发资料下载地址: http://pan.baidu.com/share/home?uk=4076915866&view=share
下面的更深入的有兴趣可以了解一下,我的目的不是要大家掌握下面的知识,只是希望扩展自己的思维,摘自牛人的技术博客。
/**************************************************牛人必看*****************************************************************/
系统后台框架:
前端工程师技能:
B2C电子商务基础系统架构解析 运营B2C日 久,越来越深刻的意识到IT系统对确保规范化业务流转,支撑消费者端的均一服务有着决定性的作用。于是,一直想好好整理下相关的系统架构,怎奈俗务缠身,一直拖到今日,猛然发现下周娃很可能就要出生,拖无可拖,快马加笔,居然整出来了。本文的重点是理清系统的逻辑关系,详细的功能模块请参见结尾附上的系统 架构图。
首先,聊下对系统逻辑架构的看法;我个人始终坚持认为,系统的开发与演化,前台严格follow消费者的购买流程,后台则盯牢订单流转,牢牢抓住这两条主线,才能高屋建瓴的看清B2C的逻辑链和数据流,更深刻的规划功能模块,从而更有效支撑实际业务的流转。前台系统包括:商品展示,内容展示,订单确认,支付系统,用户中心四大模块 一,商品展示
按照Ebay的内部分类,任何将商品以单个或批量的方式展示给消费者的功能均应归入此系统。因此,该系统至少包括:
A,站内搜索(搜索提示,搜索规则,搜索成功页,搜索不成功页,相似推荐)
B,导航(频道导航,其他导航如销售排行,广告位,推荐位,文字链,Also buy等)C,商品分类(品牌分类,品类分类,属性分类如剪裁形式)D,登陆页(商品列表页,商品详细页,商品活动页)
这里的访问逻辑是:A /B/C分流消费者去往相对个性化的页面,由登陆页体现商家的核心诉求和价值传递,完成call-to-action的第一步。二,内容展示
内容展示较为简单,对纯购物品牌而言包括: A,公告区 B,帮助中心
C,论坛(如需商城与论坛发生交互,则需自行开发,否则可集成discuz做同步登陆即可)大家都知道,就不多说了。三,订单确认
订单确认,就是帮助消费者正确提交订单信息的环节,看似简单,实则非常复杂,需要对很多信息逻辑判断和处理,一般由2个部分组成:
A,购物车(购物车浮层,购物车页面,无注册购买)
无注册购买是需要慎用的功能,除非刻意追求用户的短平快下单,如团购/换购,一般不推荐使用,会造成系统异常复杂,开发量也很大。B,订单提交(返回购物车,收货地址&地址薄,支付方式判断,配送方式,发票,订单标记,实付金额计算等等)值得一提的是,几乎大多数的促销逻辑运算在这个环节完成,充分考虑各种促销方式之间的互斥与重叠是系统设计的核心,需要充分考虑各种情况,避免出现逻辑漏洞。四,支付系统
与一般的想象不同,支付系统其实并不简单等于第三方支付工具接入:
A,外部支付系统(支付宝将接口,财付通接口,网银直联端口,信用ka分期端口)B,内部支付系统(账户余额,积分,礼品卡,优惠券)支付系统的逻辑设计不但需要考虑到各种极端情况的发生(如一张订单先用礼品卡,再用积分,最后网银支付),还要预留财务做账所需的相关字段,并充分考虑订单取消之后如何回滚各类内部账户。五,用户中心
用户中心的实质是用户自助功能的dashboard,一般4个部分组成: A,注册&登陆(快速注册,完整注册,注册有礼,推荐注册,密码找回,主站id登陆,open-id登陆如QQ,新浪微博等)
B,订单中心(历史订单状态,中间状态订单修改,物流追踪)
C,服务中心(各类自助服务如退款申请,退换货申请,建议与投诉等)D,信息管理(用户基本信息管理和账户信息管理)用户中心的价值在于:尽可能引导用户自行获取所需的信息并提交所需的服务,在提升服务准确率,及时性的同时降低对人工成本。
后台系统包括:商品&促销,CRM,订单处理,WMS,采购管理,财务管理,报表管理,系统设置,WA系统9大模块 一,商品&促销
商品&促销模块的核心在于确保消费者下单之前,前台内容所见即所得 A,商品管理(品类管理,品牌管理,单品管理)B,促销管理(活动管理和自定义活动模板管理)在上述模块中,最重要的是2个部分:单品管理中的批量产品生成的自动程序和活动管理中“共享与互斥”管理。前者用于大幅提升上新速度,后者避免促销活动失控。二,CRM CRM是对B2C核心资源—会员的管理,服务与再营销系统,包括如下部分: A,会员管理(会员信息的增删改查和到其他系统的链接)B,用户关怀(条件触发和人工触发相关EDM & 短信 & OB)C,定向营销(会员分组和营销活动管理)
D,客服管理(内容非常多,集成所有需前台与后台交互的功能,详情还是看图吧)E,呼叫中心(IVR,坐席管理,统计报表,参数传递与窗口嵌入)
值得注意的,EDM和短信通道市面上已经有成熟的外包服务商,一般都会外包;呼叫中心和在线客服自行开发成本太高,特别是呼叫中心系统,业务初期也都是外包的。三,订单处理
订单处理是在订单未正式进入仓储部门处理之前,对订单的前置性处理环节。A,订单录入(电话订购,网上下单,外部团购订单,无金额订单录入如礼品单)B,订单审核(自动审核和人工审核)C,RMA处理(RMA申请单和RMA处理单)
RMA的逻辑也异常复杂,需要在效率和成本之间找平衡,确保在不拖垮仓储部门的正常出入库的前提下对消费者端快速有效close工单;对内部则需要控制成本,货损不能超过预算上限。
四,WMS(Warehouse Management system仓库管理系统)
WMS的流程很长,功能模块也很多,大致分为入库管理,库存管理,出库管理和票据管理4个模块四个模块,细细道来就是另外一篇文章了,各位可以参考 我这篇文章:庖丁解牛—B2C仓储内部运作解密(上,中,下)http://blog.sina.com.cn/wangxida0855 五,采购管理
采购管理的核心是有效跟进采购合同/发票的状态,大货的采购入库/退库,财务结算和在仓库存查询和处理。
A,供应商管理(供应商信息管理,合同发票管理)B,采购单管理(PO单管理,负PO单管理)
C,库存管理(库存查询,库存占用单,库存变动log)六,财务管理
B2C的财务管理,主要是对供应商,渠道和内部费用支出的成本控制。A,供应商结算 B,渠道结算 C,配送结算 D,内部结算 说实在的,哥对财务这块也不算很了解,大家将就看看,图片上有明细。七,报表管理
报表是B2C业务的宏观表现,理论上说,每个部门的KPI都应该从中找到。A,搜索报表(站内搜索量查询)
B,销售报表(多个维度销量查询,优惠券使用情况,报表导出)C,财务报表
D,客服报表(客服日报和坐席报表)
前者反映与消费者发生的日常交互(包括正常与异常),后者考核客服的工作绩效 E,仓储物流报表
这几块报表,是业务运作的核心,涉及到公司机密,就不能写的太细了,见谅。八,系统设置
这块大家都知道是干嘛的,也就不多说了,分成三块。A,基础设置(和业务有关的一些字段值)
B,权限设置(不同账号的操作权限和操作记录)C,其他设置
九,WA系统(Web Analytcis)
网 站分析系 统,几乎全是外购,很少有能够自建的,即使自建,最多做几个简单的模块。用于实战的,要么是免费的GA(Google Analytics),要么是昂贵的Omniture。这块的知识,细细说来也是另外一篇文章了,有兴趣的同学可以看我这篇科普文章:揭秘—我所知道的网 站分析(上,下)http://blog.sina.com.cn/wangxida0855 最后,上全系统大图,再感慨一句,B2C系统,真是一个大工程啊。fr http://blog.sina.com.cn/s/blog_59d6717c0100syh3.html
第五篇:java技术架构
Java技术体系图
Java程序员
高级特性
反射、泛型、注释符、自动装箱和拆箱、枚举类、可变
参数、可变返回类型、增强循环、静态导入
核心编程
IO、多线程、实体类、集合类、正则表达式、XML和属性文件
图形编程
AWT(Java2D/JavaSound/JMF)、Swing、SWT、JFace
网路编程
Applet、Socket/TCP/UDP、NIO、RMI、CORBA
Java语法基础
类、抽象类、接口、最终类、静态类、匿名类、内部类、异常类、编码规范
Java开发环境
JDK、JVM、Eclipse、Linux
Java核心编程技术
Java,设计而又非常精巧的语言。学习Java,须从Java开发环境开始,到Java语法,再到Java的核心API。
1.Java开发入门:Java开发环境的安装与使用,包括JDK命令、EclipseIDE、Linux下Java程序的开发和部署等。
2.Java语法基础:基于JDK和Eclipse环境,进行Java核心功能开发,掌握Java面向对象的语法构成,包括类、抽象类、接口、最终类、静态类、匿名类、内部类、异常的编写。
3.Java核心API:基于JDK提供的类库,掌握三大核心功能:
A。Java核心编程:包括Java编程的两大核心功能——Java输入/输出流和多线程,以及常用的辅助类库——实体类、集合类、正则表达式、XML和属性文件。
B。Java图形编程:包括Sun的GUI库AWT(Java2D、JavaSound、JMF)和Swing,IBM和GUI库SWT和Jface;
C.Java网路编程:Applet组件编程,Socket编程,NIO非阻塞Socket编程、RMI和CORBA分布式开发。
4.Java高级特性:掌握JDK1.4、JDK5.0、JDK6.0中的Java高级特性,包括反射、泛型、注释,以及java高级特性——自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入等。
JavaEE初级软件工程师
JSF框架开发技术
配置文件(页面导航、后台Bean)、JSF组件库(JSF EL语言、HTML标签、事件处理、)、JSF核心库(格式转换、输入验证、国际化)
Javaweb核心开发技术
开发环境(Eclipse、Linux)
三大组件(JSP、JavaBean、Servlet)
扩展技术(EL、JSTL、Taglib)
网页开发技术
HTML、XML、CSS、JavaScript、AJAX
数据库设计技术
SQL、MySql、Oracle、SQLServer、JDBC
Web服务器(Tomcat/Jetty/Resin/JBossWeb)
JavaWeb核心技术:
JavaWeb项目开发的全过程可以分解为:
网页开发+数据库设计——>JavaWeb项目开发,其中,javaWeb由6项基本技术组成:JSP+JavaBean+Servlet+EL+JSTL+Taglib,而JSF正是将这6种技术进行有机结合的技术框架:
JavaEE中级软件工程师
四种经典架构SSH1、SSI1、SSH2、SSI2
Struts1表现层框架
入门配置、核心组件、标签库、国际化、数据检验、数据库开发、Sitemesh集成、集成Hibernate/iBATIS
Struts2表现层框架
入门配置、核心组件、标签库、国际化、数据校验、Sitemesh集成转换器、拦截器、集成Hibernate/iBATIS
Spring业务层框架
入门配置、IoC容器、MVC、标签库、国际化、数据校验、数据库开发
Hibernate持久层框架
MySQL、Oracle、SQLServer iBATIS持久层框架
MySQL、Oracle、SQLServer
Web服务器(Tomcat/Jetty/Resin/JBossWeb)
Java高级软件工程师
javaWeb开源技术与框架
工作流、规则引擎
搜索引擎、缓存引擎、任务调度、身份认证
报表服务、系统测试、集群、负载平衡、故障转移
JavaWeb分布式开发技术
JTA(Java事物管理)
JAAS(Java验证和授权服务)
JNDI(Java命名和目录服务)
JavaMail(Java邮件服务)
JMS(java信息服务)
WebService(web服务)
JCA(java连接体系)
JMS(java管理体系)
应用服务器(JBossAS/WebLogic/WebSphere)
JavaEE系统架构师
面向云架构(COA)
COA、SaaS、网格计算、集群计算、分布式计算、云计算
面向资源架构(ROA)
ROA、RESI
面向web服务架构(SOA)
WebService、SOA、SCA、ESB、OSGI、EAI
Java设计模式
创建式模式:抽象工厂/建造者/工厂方法/原型/单例
构造型模式:适配器/桥接/组合/装饰/外观/享元/代理
行为型模式:责任链/命令/解释器/迭代子/中介者/备忘录/观察者/状态/策略/模板方法/访问者
Java与UML建模
对象图、用例图、组件图、部署图、序列图、交互图、活动图、正向工程与逆向工程
CTO首席技术官
发展战略
技术总监
团队提升
团队建设
项目管理
产品管理