【李腾飞】Java开发经典系列(一)-JavaSE

34人 购买 好评度 -
用手机看

扫一扫继续用手机看

  • 微信扫码

  • QQ扫码

下载手机APP
收藏
  • JavaSE零基础入门
更多班级

JavaSE零基础入门

支持随到随学,23年12月过期

¥5.22

本班因教学质量问题暂时不能报名。 查看详情

课程因违反平台规定暂时不能报名。

立即购买

Java开发经典系列 ( 共6门 )

套餐价 :¥98.00 原价 :¥136.00 立即购买 查看详情

课程概述

目录

评论

老师介绍

  • 李腾飞

    李腾飞

    原尚学堂主力讲师,曾创办领航致远品牌,在清华紫光、中软等企业从事JAVA相关项目的设计开发多年,历任程序员、项目经理、架构设计师、研发总监等职位,擅长JavaEE及各种流行开源框架。实战经验相当丰富.在培训方面有着独到的授课方式。
简  介 本课程为JavaSE基础课程,是对现场线下教学视频的录播,面向零基础学员,在讲课过程中,深入贯彻面向对象(OO)的编程思想,主导“知其然,更要知其所以然”的教学原则。



Java开发经典系列介绍

      李老师从2000年起即进入Java开发领域,至今已有超过18年的开发经验,对Java相关技术、面向对象、系统架构的思想有着独到深入的理解。 2007年开始涉足Java培训,曾经是尚学堂初创时期的主力讲师,后创办领航致远品牌。 最近6年,更是深入到一线互联网企业从事架构设计、技术管理、一线开发等工作。 李老师在线下至今已经培养了几千名学员,学员广泛分布于阿里、腾讯、百度、京东、美团等知名企业,有的学员已经开始独立创业。

     本套课程是李老师的现场线下课堂录播,包括JavaSE、Servlet、JSP、Struts、Spring、Hibernate、项目实践等等,  现在拿出来分享给大家。 本套课程侧重于原理的深入介绍,推崇知其然更要知其所以然,即使随着时间的推移,有些外围的内容产生了变化,但是对于Java技术的核心是不会变化的。 认真跟着学完本套课程,你会具备更近一步深入学习分布式架构技术的基础。 但是架构技术的学习是需要实践时间的积累的。 对于零基础的学员来说,戒骄戒躁,学完本套课程以后,再经过3年左右的实践, 你就可以明确向着架构师方向进一步学习相关的技术了。

      郑重声明:本套经典系列录播课程,录制于2010-2012年间,使用JDK1.6,不喜勿购!不过话说回来,我从2000年开始使用JDK1.2,直到现在使用JDK1.8,虽然有一些变化,但是对于语言的核心及思想是没有变化的,不外乎是加了诸如范型、注解等等一些新特性罢了。就好比之前必须在web.xml中定义Servlet,现在可以直接使用注解来定义,甚至连web.xml都可以省了,变得更方便了,难道Servlet就不是Servlet了吗?  又比如有人说现在大家都用Spring MVC,还学Struts2有用吗?说句实话,如果你经历过用Servlet/JSP来开发项目的“痛苦磨难”之后,这些框架都是很容易掌握的,万变不离其宗,说的就是其原理都是大同小异的,我不相信你掌握Struts2之后再去学习Spring MVC会很痛苦。 再比如说学习工作流技术,核心在于工作流模式的理解和运用,而不在于纠结是jbpm3还是jbpm4还是Activiti或者是其他工作流引擎。 关键的关键在于,你必须能沉下心来,严格要求自己多敲代码,主动思考,多问几个为什么,不能急于求成,这样打好基础,才能具备更强的自学能力,以后才能建成高楼大厦! 

本套系列课程建议的学习时间在3到4个月。


Java开发经典系列课程体系



Java语言零基础入门目录

 

第一章:Java技术概要,目标是理解Java技术平台,理解Java基本运作机制;

主要描述JAVA技术的概要

    1. 理解JDK和JRE之间的基本差异,何谓private JRE,何谓public JRE
    2. 理解JAVA技术主要包括JAVA SE、JAVA EE、JAVA ME三大部分
      1. JAVA EE程序看起来是什么样子的?要开发JAVA EE程序,需要什么?
    3. 理解JAVA技术是如何实现跨平台这个特征的?
    4. JAVA基本数据类型都有哪些?

第二章:Java基础语法,目标是理解包、标识符、关键字、类路径、操作符等等;

    1. 理解基本数据类型之间的转换
      1. 默认如何转换?
      2. 如何进行强制类型转换?
    2. 源代码通过包的方式来进行组织
      1. 如果把一个JAVA类放到一个包里面
        1. 那么,这个JAVA类必须声明它属于哪个包(如何声明?)
        2. 编译的时候,需要指定这个类在哪里
        3. 运行的时候,需要指定全路径类名来运行
    3. 理解CLASSPATH的作用?
    4. 基本的操作符
      1. 如何进行加、减、乘、除、取余等基本运算?
      2. 关系操作符?
      3. 逻辑操作符?
      4. 短路现象
      5. 位操作符?
      6. 三元操作符?
      7. 字符串连接操作符?
      8. 流程控制语句都有哪些?
        1. if/else、while、do..while、for、switch
        2. for循环控制语句最重要

第三章:Java与面向对象基础,目标是理解Java是如何进行面向对象编程的;

    1. 对象包括什么?
      1. 状态
      2. 行为
    2. 什么是抽象?
    3. 类包括什么?
      1. Field
      2. Method
    4. 如何通过类创建一个对象?
      1. 用new关键字创建对象
    5. 有哪几种可见性?它们分别表示什么意思?
    6. Attribute/property之间的区别是什么?
      1. Attribute一般定义为什么样的可见性?
    7. 如果在一个类中,要用到另外一个包中的类,必须?
      1. 用import语句来引入那个类
    8. 实例变量与类变量的区别是什么?
    9. 实例变量与类变量的初始化值?
    10. 理解堆、方法区、栈的区别
    11. 理解方法调用的时候,值传递原则
    12. 方法调用的过程,其内存如何变化?
    13. 什么是方法的重载?

第四章:Java异常处理专题,目标是理解Java的异常处理机制;

    1. 对象转型
      1. 向上转型
      2. 向下转型(注意其中的风险)
    2. override – 方法重写(覆盖)
      1. 子类覆盖(重写)了父类的方法
    3. 多态
      1. 子类继承了父类
      2. 父类的引用指向了子类的对象
      3. 子类的方法重写了父类的方法
      4. 我们通过父类的引用去调用那些被重写的方法,虚拟机将在运行的时候确定调用的究竟是哪个方法,是哪个子类的方法(同一个方法调用,有可能调用的真正方法不一样,产生了多态性)
    4. 构造方法
      1. 构造方法可以重载
      2. 子类的构造方法必需先调用父类的构造方法
      3. 如果没有在子类中显式添加调用父类的构造方法,编译器将默认添加一个调用,以调用父类的无参构造方法
    5. this是动态绑定的
    6. private方法和static方法是静态绑定的
    7. super调用是静态绑定的
    8. 类的初始化过程
    9. finalize()方法与垃圾回收
    10. final关键字
    11. 接口与抽象类

第五章:数组与集合专题,目标是理解数组的基本概念,理解如何利用不同的集合类来操纵对象;

    1. Object类中可被重写的方法
      1. equals – 注意理解equals和==的区别
      2. hashCode
      3. toString
      4. clone
    2. JDK1.5以后版本的新语法
      1. 可变参数的方法
      2. 静态导入
    3. 编译期与运行期的错误处理
    4. 异常处理的好处
      1. 使得错误处理代码变得更有条理
      2. 不必在方法调用处检查错误
      3. 只需在一个地方处理错误
      4. 有利于将正常处理流程与异常处理流程的代码分离
    5. 异常的分类
      1. Checked exception
        1. 必需捕获
        2. 或声明重新抛出
      2. Unchecked exception
        1. 不必捕获
        2. 不必声明重新抛出
      3. 如果你要特意强调客户端必须注意到某种异常情况,并对它进行处理,则请使用checked exception,相反,如果你想对异常在某个地方进行统一处理而不是在其客户端直接处理,则请使用unchecked exception。通常unchecked exception更常用一些。
    6. 注意try{…}catch(XXXException e){…}语法中的catch顺序,如果你要catch多种异常,请按照子类->父类这种方式排列
    7. finally代码块中的代码一定会被执行!
    8. 异常转换与异常链
    9. 异常处理应该遵循的基本原则

第六章:Java常用类专题,目标是熟练掌握JDK类库中最常使用的基本类,包括字符串、正则表达式、枚举、日期处理等;

    1. 数组的定义和使用(一维及多维数组)
    2. Collection与Map之间的区别
    3. List、Set、Map之间的区别
    4. HashSet及HashMap
      1. 数据的存入规则:
        1. HashSet及HashMap中的数据,在其内部,都是用数组来存放
        2. HashSet是根据存入对象的hashCode(经过一定的运算)来决定这个对象存储在其内部数组的哪个位置
        3. HashMap是根据存入的key的hashCode(经过一定的运算)来决定key-value对(即Entry)存储在其内部数组的哪个位置
        4. 如果hashCode经过一定运算得到一个存储位置之后,在这个存储位置上已经有其它对象存在,则判断新放入对象是否与原对象相等(equals),如果与原对象相等,则将原对象覆盖,否则将其链接到原对象的后面
      2. 数据的取出规则:
        1. 数据的取出规则与数据的存入规则是相呼应的
        2. 首先根据要取出对象(key)的hashCode(经过一定的运算)来获得这个对象存储在其内部数组的哪个位置
        3. 根据存入规则可知,在这个位置上可能存在一个或多个对象,所以,会依次判断在这个位置的若干个对象,判断
          1. 这个对象的hashCode是否与要取出的对象的hashCode相等,而且
          2. 这个对象是否与要取出的对象相等(equals)
          3. 如果这两者都相等,则将内部对象取出
    5. Iterator – 为不同的集合类(不同的数据结构)提供统一的访问接口
    6. Comparable与Compatator的区别
    7. 如何选择数据结构
      1. ArrayXXX – 访问速度很快,添加对象到末端很快
      2. LinkedXXX – 往中间插入/删除数据很快
      3. HashXXX – 读取某个数据极快,遍历比较慢
      4. TreeXXX – 需要排序用它,因为已经排好序了,所以遍历也很快
    8. 自动打包解包、泛型、增强for循环
    9. 字符串的引用相等和等价关系
    10. intern方法、常量池

第七章:正则表达式和Java反射机制专题,目标是利用Java反射机制实现对象之间属性的拷贝;

 

反射机制专题:

 

    1. 正则表达式
      1. 普通字符
      2. 转义字符
      3. 能匹配多种字符的表达式
      4. 如何修饰匹配次数
      5. 匹配开头与结尾的特殊字符
      6. 分组符号的使用
      7. 贪婪与非贪婪模式(网页链接及标题的提取)
    2. StringBuffer与StringBuilder
    3. 枚举类型
    4. Date、Calendar的基本用法
      1. 创建时间
      2. 格式化处理
      3. 计算时间跨度
      4. 时间的增减运算
      5. 时区
    1. 如何获取Class对象
    2. 如何对成员变量进行操作(获取与设值)
    3. 如何对方法进行操作(获取与调用)
    4. 完成对象的属性拷贝

第八章:Java I/O(流)专题,你是否对Java I/O 这个庞大的类库体系头疼不已?经过本专题的学习,你将能轻松应付与I/O相关

的需求;

    1. 理解字节流与字符流之间的差别
    2. Adapter设计模式与原始流类
      1. FileInputStream/OutputStream/Reader/Writer
      2. ByteArrayInputStream/OutputStream
      3. StringReader/Writer
    3. Decorator设计模式与包装流类
      1. BufferedInputStream/OutputStream/Reader/Writer
      2. DataInputStream/OutputStream
      3. ObjectInputStream/OutputStream
    4. 对象序列化
      1. 要序列化一个对象,它及其属性必须实现Serializable接口
      2. 如果在序列化一个对象的时候,不希望某些属性被序列化,则可以使用transient修饰符修饰
      3. 通过反序列化的方式创建一个对象的时候,其构造方法将不会被调用!
      4. 对象->文件->对象,在这个过程中,如果对象所属的类发生变化,将无法成功反序列化!
      5. 如果希望即使其对应的类发生了变化,而依然能够反序列化的话
        1. 在JDK5以上的版本,JAVA提供了一个serialVersionUID来表示类的版本!

第九章:Java多线程专题,目标是深入理解Java的多线程机制,理解监视器模型等概念;

    1. 理解创建线程的两种方式
      1. 继承Thread类
      2. 实现Runnable接口
    2. 如果所有的非后台线程全部结束,整个程序将终止
    3. 线程的三种状态:就绪、运行、阻塞
    4. 线程让步 – 暗示其它线程可占用CPU
    5. 线程睡眠 – 停止执行一段时间
    6. 线程优先级 – 线程获取CPU时间的概率
    7. 线程合并 – 将一个线程加入另外一个线程
    8. synchronized定义临界区,或者说定义了一把锁,一定要准确理解synchronized定义的临界区(锁)是什么,多个线程在同一个时刻只能有一个线程可以获得这把锁,只有获得这把锁的线程才可以访问临界区里面的资源
      1. 如果将其放在实例方法前面,定义的临界区是this对象,this对象的所有synchronized实例方法及synchronized(this){…}代码块,都在这个临界区里面
      2. 如果将其放在静态方法前面,定义的临界区(锁)是这个类的Class对象。因此,这个类的所有静态方法及synchronized(类.class){…}代码块都在这个临界区里面
      3. synchronized(xxx){…}则可以按照我们自己的意思来指定某个临界区。
    9. wait和notify一定要用在synchronized声明的代码里面
      1. wait – 进入线程等待区,并释放锁
      2. notify – 通知等待区的某个线程苏醒过来,以便能够跟其它线程重新获得锁
      3. notifyAll – 通知等待区的所有线程苏醒过来
    10. 如何编写线程安全的代码

第十章:Java网络编程专题,目标是理解Java Socket编程技术;

    1. TCP编程 – 面向连接、可靠
      1. 发送数据时,需建立连接
      2. 服务器端通过ServerSocket(需指定端口来创建)来accept客户端的Socket
      3. 客户端通过创建Socket(需指定服务器地址以及服务器的端口)来跟服务器建立连接
      4. 一旦客户端与服务器建立连接,服务器端即可得到一个Socket对象,这个Socket对象负责和客户端的Socket对象进行通信
      5. 服务器端和客户端均可通过Socket的getInputStream和getOutputStream来接收及发送数据
    2. 可在服务器端针对每一个客户端连接的Socket对象,创建一个线程去处理
    3. System.in用于接收控制台输入
    4. UDP编程 – 非面向连接,不可靠
      1. 发送方创建DatagramSocket对象(可指定发送端口)
      2. 发送方创建DatagramPacket对象,这是一个数据包,在创建这个对象的时候,需指定
        1. 这个数据包所包含的数据
        2. 这个数据包要发送到哪台机器(即目标机器地址),或者指定发送到整个局域网(网络广播)
        3. 这个数据包要发送到目标机器的哪个端口
      3. 发送方调用DatagramSocket对象的send方法将数据包发送出去
      4. 接收方也是创建DatagramSocket对象(指定要从哪个端口接收数据,应与发送方创建的数据包中指定的端口一致)
      5. 接收方创建DatagramPacket对象(需指定一个内存缓冲区,即byte[]数组)
      6. 接收方调用DatagramSocket对象的receive方法,将接收到的数据存入DatagramPacket
      7. 接收方从DatagramPacket中取出数据

第十一章:Java GUI编程专题,目标是理解Java GUI编程基础,使用netbeans进行GUI编程;

 

资料下载报名后支持下载

* 课程提供者:李腾飞