Java基础学习完成之后,最重要的是将这些基础的知识进行综合性的应用,以充分的理解面向对象的设计思想以及多线程的概念,而这就需要对大量的系统类库的使用进行详细的讲解,通过实用类库的学习才可以更好的编写项目代码。
本书一共包含有8个章节内容,每一个章节中都按照使用的分类进行了Java各个工具类的使用,从这些类的使用、
继承结构、源码分析上进行了全面的讲解,为进一步帮助同学们做好Java就业的相关工作,本书又对多线程的部分进行了J.U.C深入讲解,也分析了Java虚拟机的相关概念与调优模式。
本书附有配套视频、源代码、习题、教学课件等资源。为了帮助读者更好地学习本书,作者还提供了在线答疑。
本书适合作为高等教育本、专科院校计算机相关专业的教材,也可供广大计算机编程爱好者自学使用。
我们在用心做事,做最好的教育,写最好的图书。
沐言科技教学总监 —— 李兴华
知不觉已经度过了多年的教学以及写作生涯,在我所编写每一本图书的时候,都在思考一个本质的问题:我们学习是为了什么?有的同学也不明白,从小学一直到大学,甚至到终身我们学习的目的是什么?很多的同学说是为了找一份体面的工作,这样可以给家人带来荣耀。还有的同学说,我是接触到了软件开发后产生了浓厚的兴趣,所以即便再苦再累也会坚持学习下去。而我想说在当今这个大的环境下,后者会更适合于软件行业的需要,因为软件行业唯一不变的一条真理就是“永远都在改变”。
算了算这已经是我从事这一行业的第24年了,对于一个从事软件行业的“高龄技术人员”来讲,现在的我反而更加清楚的知道自己应该做什么。正如我的父亲从小教导我说,一个人活着就要为其他人带来帮助,帮助他人过的更好。于是在我17年的教学生涯中,我一直都在思考我能为学生们带来什么?后来我想起了那些教过我的老教师们采用的苯方法,开始无止尽的为学生加课,帮助学生一次又一次的总结与答疑。但是慢慢我又发现,随着就业环境的变化,主动学习才是一个可以让从业者长久发展的必备技能,所以我开始进一步的思考,怎样能够充分发挥出我们学生优秀的自主学习能力?让学生成为一种自发的主动行为,而不是简单的教与学的过程?是的,这需要一个良好的指引,需要告诉这些学习者学习的方向有那些,学习的本质是什么?
作为职业的软件编程讲师,我总是自嘲自己为“草根教育者”,既然是草根,那么就要扎根于需求的一线,为更多的学子提供最优质的教学服务,于是我们抛弃了所有的商业模式,只是希望可以把最完整的技术面展现给每一位学生,尽可能的讲解清楚每一个技术知识点,而这就是本套图书编写的初衷,如图所示,也是我这些年用尽力气要完成的使命。
当然,要想完成这样一套完整的图书本身就有着非常高的难度,毕竟写一本原创的图书和教学相比难度是在是太高了, 需要不断的进行知识结构的“排列组合”,才能够以递进的方式让学生逐步掌握一个知识点,才能够让图书的阅读拥有“无障碍”的特点,才能够帮助学生尽快掌握一门完整的技术。而为了达到这样的“无障碍阅读”的状态,我在图书中绘制了大量的图形,同时采用了大量提示、注意、问答形式进行重点知识的标记,即便做到了这样的程度,我还是怕学生在学习中会遇见很多未知的困难,我们又针对于每一个章节进行了详细的视频录制,希望通过这些努力可以为大家带来一本可以读懂的技术图书。
全书在Java面向对象编程与多线程的基础上继续进行了讲解,一共非为8章的讲解,主要围绕着JDK所提供的内置类库的使用以及操作原理进行讲解,同时附带有实现的源代码分析,具体的章节安排如下:
第1章、Java常用类库:本章是进行Java类库结构的系统性讲解的章节,包括了字符串类、日期时间处理、正则表达式、应用国际化、比较器等常用类库的使用,同时考虑到了后续学习还在本章中讲解了二叉树的数据结构。
第2章、IO编程:本章将围绕着数据流的操作进行讲解,基于文件的形式分析了输入流与输出流的使用,同时讲解了java.io包中提供的各类IO流工具类的使用;
第3章、Java网络编程:网络编程是IO流的操作延续,本章讲解了TCP与UDP的网络应用开发;
第4章、Java反射机制:反射机制是Java中最具有代表性的应用结构,也是后续Java开发框架所依赖的重要实现技术,本章从反射的最基础概念进行分析,一直讲解到最后的反射应用,全面的分析了反射在项目开发中的应用形式。
第5章、Java类集框架:类集是Java对数据结构的有效实现,同时也是在所有应用开发中要使用到的核心技术点,在本章的讲解中不仅讲解了类集工具类的使用,同时还基于源码进行了实现分析;
第6章、Java数据库编程:数据库是项目应用中的核心存储部件,本章通过MySQL数据库实现了JDBC的讲解,利用一系列的案例分析了数据库连接、数据库操作、事务处理的概念以及具体应用。
第7章、J.U.C并发编程:本章是现代Java开发与面试部分中不可或缺的技术内容,在本章中将充分的分析传统多线程实现的弊端,同时全面的讲解了J.U.C组件包中所包含的全部类库的使用;
第8章、深入Java虚拟机:本章的知识为Java提高部分,主要是围绕着JVM的工作原理与性能调优进行讲解,该章的内容以概念为主,而这些概念为面试或笔试过程中最为常见的内容。
虽然本书只有8章的内容,但是这8章的内容不仅包含了后续Java高级知识学习中所必须掌握的内容之外,还包括了面试与求职过程中的各项技术知识点。但是受限于篇幅的限制,还有一章“NIO”的内容无法在本书中给出,同时考虑到知识结构的完整性,NIO的内容将会随本套图书中的Netty框架部分一起出版。
图书目录:
第2章、Java常用类库 1
2.1、字符串结构支持 1
2.1.1、StringBuffer类 2
2.1.2、StringBuilder类 3
2.1.3、CharSequence接口 4
2.2、AutoCloseable接口 5
2.3、Runtime类 6
2.4、System类 9
2.5、Cleaner类 10
2.6、对象克隆 13
2.7、数字操作类 14
2.7.1、Math数学计算 14
2.7.2、Random随机数 16
2.7.3、大数字处理类 18
2.8、日期时间 21
2.8.1、Date类 21
2.8.2、Calendar类 23
2.8.3、SimpleDateFormat类 24
2.8.4、LocalDate类 27
2.8.5、多线程下的日期时间格式化 29
2.9、正则表达式 31
2.9.1、常用正则标记 32
2.9.2、String类对正则的支持 33
2.9.3、java.util.regex开发包 36
2.10、程序国际化 38
2.10.1、Locale类 38
2.10.2、资源文件 40
2.10.3、ResourceBundle 40
2.10.4、国际化数据读取 41
2.10.5、格式化文本数据 42
2.10.6、数字格式化 43
2.11、Base64加密与解密 46
2.12、UUID 47
2.13、Optional 47
2.14、ThreadLocal 48
2.15、定时调度 50
2.16、自定义事件 51
2.17、Arrays 54
2.18、比较器 55
2.18.1、Comparable接口 56
2.18.2、Comparator接口 57
2.19、二叉树 59
2.19.1、二叉树数据存储 60
2.19.2、二叉树数据获取 62
2.19.3、二叉树数据查询 63
2.19.4、二叉树数据删除 65
2.19.5、自定义Map工具类 69
2.21、本章概览 75
2.22、实战自测 76
第3章、IO编程 1
3.1、文件操作类 1
3.1.1、文件目录操作 2
3.1.2、获取文件信息 4
3.1.3、获取目录信息 5
3.1.4、文件更名 6
3.2、输入输出流 7
3.2.1、OutputStream字节输出流 8
3.2.2、InputStream字节输入流 9
3.2.3、Writer字符输出流 11
3.2.4、Reader字符输入流 12
3.2.5、字节流与字符流区别 12
3.3、转换流 13
3.4、文件拷贝 13
3.5、字符编码 14
3.6、内存操作流 15
3.7、管道流 15
3.8、RandomAccessFile 16
3.9、打印流 16
3.10、System类对IO的支持 17
3.11、BufferedReader 18
3.12、Scanner 18
3.13、对象序列化 19
3.13.1、序列化与反序列化 19
3.13.2、transient关键字 20
3.14、本章概览 21
3.15、实战自测 21
第4章、Java网络编程 1
4.1、网络编程概述 1
4.2、开发网络程序 1
4.3、ECHO程序模型 2
4.4、BIO网络模型 3
4.5、UDP网络编程 3
第5章、Java反射机制 1
5.1、认识反射机制 1
5.2、Class类对象实例化 1
5.3、反射实例化对象 2
5.4、反射与工厂设计模式 3
5.5、反射与单例设计模式 3
5.6、反射与类操作 4
5.6.1、反射调用构造方法 5
5.6.2、反射调用方法 5
5.6.3、反射调用成员属性 6
5.6.4、Unsafe工具类 6
5.7、ClassLoader类加载器 7
5.7.1、自定义文件类加载器 8
5.7.2、自定义网络类加载器 8
5.8、反射与代理设计模式 9
5.8.1、JDK动态代理机制 10
5.8.2、CGLIB动态代理机制 10
5.9、反射与Annotation 11
5.9.1、自定义Annotation 11
5.9.2、Annotation与工厂设计模式 12
5.10、反射与简单Java类 12
5.10.1、属性自动赋值实现思路 13
5.10.2、单级属性赋值 14
5.10.3、属性类型转换 14
5.10.4、级联对象实例化 14
5.10.5、级联属性赋值 15
5.11、本章概览 15
第6章、Java类集框架 1
6.1、Java类集框架简介 1
6.2、Collection集合接口 1
6.3、List集合 2
6.3.1、ArrayList子类 2
6.3.2、保存自定义类对象 3
6.3.3、LinkedList子类 4
6.3.4、Vector子类 4
6.4、Set集合 5
6.4.1、HashSet子类 5
6.4.2、TreeSet子类 6
6.4.3、TreeSet排序说明 6
6.4.4、重复元素判断 7
6.5、集合输出 8
6.5.1、Iterator迭代输出 8
6.5.2、ListIterator双向迭代输出 8
6.5.3、Enumeration枚举输出 9
6.5.4、foreach输出 9
6.6、Map集合 10
6.6.1、HashMap 10
6.6.2、LinkedHashMap 11
6.6.3、TreeMap 12
6.6.4、Hashtable 12
6.6.6、Map.Entry 13
6.6.7、Iterator迭代输出Map集合 13
6.6.8、自定义Map集合KEY 14
6.7、Stack 14
6.8、Queue 15
6.9、Properties 15
6.10、Collections工具类 16
6.11、Stream 17
6.12、本章概览 17
6.13、实战自测 17
第7章、Java数据库编程 1
7.1、MySQL数据库 1
7.1.1、MySQL简介 1
7.1.2、MySQL安装与配置 2
7.1.3、MySQL操作命令 2
7.1.4、MySQL前端工具 3
7.2、JDBC数据库连接 3
7.2.1、JDBC连接MySQL数据库 4
7.2.1、JDBC数据库连接分析 4
7.3、Statement数据操作接口 5
7.3.1、Statement数据更新操作 6
7.3.2、Statement数据查询操作 6
7.4、PreparedStatement数据操作接口 7
7.4.1、PreparedStatement接口简介 7
7.4.2、PreparedStatement数据更新 8
7.4.3、PreparedStatement数据查询 8
7.5、数据批处理 9
7.6、事务控制 10
7.7、JDBC元数据 10
7.8、本章概览 11
7.9、实战自测 11
第8章 JUC并发编程 1
8.1、JUC简介 1
8.2、TimeUnit时间单元 2
8.3、原子操作类 3
8.3.1、基本类型原子操作类 3
8.3.2、数组原子操作类 6
8.3.3、引用类型原子操作类 7
8.3.4、对象属性修改原子操作类 10
8.3.5、并发计算 11
8.4、ThreadFactory 11
8.5、线程锁 12
8.5.1、ReentrantLock 13
8.5.2、ReentrantReadWriteLock 15
8.5.3、StampedLock 17
8.5.4、Condition 20
8.5.5、LockSupport 23
8.5.6、Semaphore 24
8.5.7、CountDownLatch 25
8.5.8、CyclicBarrier 26
8.5.9、Exchanger 27
8.5.10、CompletableFuture 28
8.6、并发集合 30
8.6.1、并发单值集合类 31
8.6.2、ConcurrentHashMap 33
8.6.3、跳表集合 34
8.7、阻塞队列 35
8.7.1、BlockingQueue 36
8.7.2、BlockingDeque 38
8.7.3、延迟队列 39
8.8、线程池 44
8.8.1、创建线程池 45
8.8.2、CompletionService 48
8.8.3、ThreadPoolExecutor 49
8.9、ForkJoinPool 51
8.10、本章概要 54
第8章、深入Java虚拟机 1
8.1、JVM内存模型 1
8.2、Java对象访问模式 4
8.3、JIT即时编译器 6
8.4、JVM堆内存结构 7
8.4.1、新生代内存管理 9
8.4.2、老年代内存管理 11
8.4.3、元空间 12
8.5、JVM垃圾收集 13
8.5.1、垃圾回收算法 15
8.5.2、串行垃圾收集器 17
8.5.3、并行垃圾收集器 18
8.5.4、CMS垃圾收集器 19
8.5.5、G1垃圾收集器 19
8.5.6、ZGC垃圾收集器 23
8.6、JVM监控工具 25
8.6.1、jstat监控工具 25
8.6.2、jmap监控工具 28
8.6.3、jstack监控工具 29
8.6.4、jconsole监控工具 29
8.6.5、visualvm监控工具 30
8.7、数据引用 31
8.7.1、软引用 32
8.7.2、弱引用 33
8.7.3、引用队列 34
8.7.4、虚引用 35
8.8、本章概览 36
图书配套视频:
140101_【掌握】StringBuffer类 字符串实现了一种方便的数据存储结构,对于字符串Java也提供有多种支持,本课程主要讲解了StringBuffer的相关操作以及通过源代码分析了可更改的操作原理与使用限制。
140201_【掌握】StringBuilder类 StringBuilder是在JDK 1.5之后提供的新的可变字符串操作类,本课程通过具体的操作讲解了StringBuilder类的使用,并且基于多线程的访问机制为读者详细解释了StringBuffer与StringBuilder两个类之间的区别。
140301_【掌握】CharSequence接口 为了进行字符串操作标准的统一,JDK提供有CharSequence接口标准,本课程主要讲解CharSequence接口的作用,以及String、StringBuffer、StringBuilder三个子类对象实例之间的转换处理操作。
140401_【掌握】AutoCloseable接口 随着互联网时代的不断发展,资源的使用也越发频繁,同时资源的使用也更加紧张,为了合理的保护资源必须进行资源释放处理(close()关闭操作),本课程主要讲解异常处理与AutoCloseable自动关闭处理机制
140501_【掌握】Runtime类 JVM提供有一个描述运行状态的信息对象,本课程主要分析了单例设计模式在类库中的应用,同时讲解了内存信息取得、进程产生、垃圾回收等操作
140601_【理解】System类 System是一个系统程序类,提供有大量的常用操作方法,本课程主要讲解如何通过System类获取方法耗时统计,以及System类中提供的对象回收器方法的使用
140701_【了解】Cleaner类 GC是Java对象回收的核心处理模型,然而为了提升GC操作的性能,Java废除了传统的finalize()释放方法,本课程主要讲解JDK 1.9之后对于回收操作的实现
140801_【理解】对象克隆 克隆可以利用已有的堆内存空间的保存内容实现数据的完整复制,本课程主要讲解了对象克隆的操作实现,以及Cloneable标识接口的作用。
140901_【理解】Math数学计算 JDK提供基本的数学计算公式,这些操作都通过Math类进行包装,本课程主要讲解Math类的基本作用以及四舍五入操作
141001_【理解】Random随机数 在项目中为了保证安全往往需要提供有随机码的生成操作,在Java中提供有Random工具类,本课程主要讲解如何利用Random取得随机数,并编写了一个36选7的彩票算号程序分析了Random的基本应用
141101_【掌握】大数字处理类 Java在设计时考虑到了一些特殊的应用环境,所以专门设计了大数字类,本课程主要讲解了大数字的操作形式以及BigInteger类和BigDecimal类的操作处理。
141201_【掌握】Date类 日期是重要的程序单元,本课程主要讲解Date类的基本使用,以及Date与时间戳(long)之间的相互转换
141202_【掌握】Calendar类 为了保证精准的日期计算操作,Java提供了Calendar开发类,本课程为读者讲解了Calendar开发类的使用,并且通过具体的代码演示了日期计算操作。
141203_【掌握】SimpleDateFormat类 为了方便文本显示,Java提供有格式化处理机制,本课程主要讲解如何利用SimpleDateFormat类实现日期格式化显示,重点强调了String与Date类相互转换操作
141204_【掌握】LocalDate类 LocalDate是JDK新增的日期处理类,其可以更加准确方便的实现日期处理,本课程为读者讲解了LocalDate类的信息获取以及相应日期操作。
141205_【掌握】多线程操作下的日期时间格式化 SimpleDateFormat在设计中没有考虑并发访问问题,所以在多线程共享同一对象时会出现转换异常,本课程通过SimpleDateFormat类转换异常的产生逐步分析了LocalDate与LocalDateTime类的出现意义,以及异常的解决。
141301_【掌握】正则表达式简介 正则表达式是一个应用广泛的程序类库,为了便于读者理解正则表达式的特点,本课程利用一个简单的验证操作讲解了正则表达式的基本作用。
141302_【掌握】常用正则标记 正则表达式中的核心操作是围绕着正则标记的定义实现的,本课程主要为读者列出了基本的正则标记符号,并且要求读者详记这些标记符号
141303_【掌握】String类对正则的支持 正则表达式主要是进行字符串数据分析的,为方便进行正则处理,在Java中对String类提供了改进,本课程主要讲解了String类中支持正则的三组操作方法,并且通过案例来帮助读者分析及使用正则符号
141304_【掌握】java.util.regex开发包 String类提供的正则标记只提供了基础的实现功能,如果对于正则操作有更加严格要求的开发者就需要直接使用regex开发包中提供的类,本课程主要讲解Pattern、Matcher两个正则表达式原始工具类的基本作用
141401_【理解】程序国际化简介 为了让项目可以得到更好的推广,就必须打破语言对项目的限制,本课程主要讲解了国际化程序的实现模式以及实现的关键技术支持
141402_【理解】Locale类 Local是本地化描述类,主要用于定义语言环境,本课程主要讲解Locale类的实例化操作以及与本地语言环境的关系,同时讲解了Locale中提供的静态常量的使用
141403_【理解】资源文件 国际化程序实现的关键在于对语言文字的抽象,而这些就需要通过资源文件来进行描述,本课程讲解了资源文件的组成结构与内容定义。
141404_【理解】ResourceBundle读取资源文件 文字提示信息保存在了资源文件之中,对于资源文件的数据获取就需要通过专属工具类,本课程主要讲解资源文件以及如何利用ResourceBundle实现资源文件的读取
141405_【理解】国际化数据读取 国际化程序开发需要准备出若干个资源文件进行数据存储,在读取时通过Locale进行区分,本课程主要讲解如何结合Locale与ResourceBundle类实现不同语言文字的加载
141406_【理解】格式化文本数据 在国际化程序中支持有动态文本的操作,本课程为读者讲解动态文本的存在意义,并且通过具体的操作在资源文件中利用占位符实现动态内容定义,以及使用MessageFormat类实现文本格式化显示
141407_【理解】数字格式化 国际化程序实现过程之中需要实现对数字的文本格式化处理,本课程通过具体的操作解释了NumberFormat与DecimalFormat之间的管理,同时讲解了具体的数字、百分比以及货币格式化显示。
141501_【掌握】Base64加密与解密 为了安全的进行数据传输就需要对数据进行加密和解密操作,Base64就是Java提供的加密处理器,本课程主要讲解了Base64工具类的使用,以及加密和解密信息操作实现
141601_【掌握】UUID类 项目中对于一些不确定的资源进行编号时就需要随机生成识别码,为此JDK提供了UUID类,本课程主要讲解UUID类的使用以及生成原理
141701_【掌握】Optional类 在引用数据类型操作中null是一个重要的标记,同时由于null的存在也会带来NullPointerException异常,本课程主要讲解如何利用Optional类实现null数据的处理
141801_【掌握】ThreadLocal 本课程主要讲解ThreadLocal类的作用,并且分析了多线程访问中的引用操作问题,以及如何利用ThreadLocal类实现线程安全的引用传递操作。
141901_【理解】定时调度 定时调度可以通过线程任务的形式控制程序的周期性间隔执行处理操作,本课程主要讲解定时调度的存在意义,以及Timer类、TimerTask类的使用
142001_【理解】Arrays类 Arrays是JDK提供的一个数组操作类,本课程主要讲解Arrays类中的主要数组操作方法,并且基于源代码的方式为读者分析了二分查找法的作用以及具体实现。
142101_【掌握】比较器简介 Java中利用对象数组可以实现多个对象的线性管理,同时Arrays类内部提供的排序方法也可以实现对象数组的排序操作,本课程为读者分析了sort()方法问题并且介绍了比较器的主要作用。
142102_【掌握】Comparable接口 Comparable是一个Java内部支持比较丰富的常见比较器处理接口,本课程为读者讲解了Comparable接口组成,并且通过具体的代码实例讲解了比较器定义以及数组排序功能实现。
142103_【掌握】Comparator接口 Comparable比较器是基于类定义结构实现的,而对于未实现Comparable接口并且需要比较的操作类又提供有挽救的比较器接口,本课程主要讲解了Comparator接口的使用环境以及具体操作形式
142201_【理解】二叉树简介 二叉树是一种查询性能较高,数据保存平衡的重要数据结构,本课程主要讲解传统链表数据结构中数据存储以及数据查询所存在的问题,同时分析了二叉树存储特点以及树还原分析。
142202_【理解】二叉树数据存储 二叉树是依据借点大小关系实现排序结构存储处理,在本课程中通过具体的操作实例讲解了数据大小关系的判断以及节点存储控制操作。
142203_【理解】获取二叉树数据 二叉树本质上属于动态数组的一种应用,但是与传统对象数组最大的区别在于其是有序存放的,本课程基于二叉树的中序遍历算法实现了数据的取出。
142204_【理解】二叉树数据查询 二叉树的平衡性决定了较高的数据查询性能,而节点删除后会出现不平衡问题,本课程将通过具体的实现代码讲解如何利用二叉树实现数据查询处理
142205_【理解】二叉树数据删除 数据结构提供的最大优势在于数据存储的动态扩充以及数据的删除操作,本课程主要讲解二叉树数据删除处理以及节点重排操作
142301_【掌握】自定义Map工具类 二叉树可以实现较高的数据查询性能,同时结合树状结构的特点设计了一个完善的数据检索工具类,本课程通过具体的操作应用解释了二叉树在实际开发中的应用。
142401_【掌握】红黑树 二叉树的高性能查询的前提是保证二叉树的平衡问题,本课程主要分析了二叉树结构存在的问题以及红黑树实现原理以及,在数据增加和删除操作中的平衡修复
142501_【掌握】字符串操作 本课程主要通过案例分析StringBuffer类的使用,之所以使用StringBuffer主要是利用了其内容可修改(追加、插入、删除)的特点
142502_【掌握】生成随机数 Random类可以实现随机数的生成控制,同时也可以在随机数定义时设置数字的最大边界,在本程序中由于需要包括1和30,所以最大内容应该为31,同时剔除掉0
142503_【掌握】Email验证 在实际项目开发中,用户经常性需要进行邮件信息的录入处理,所以需要保证邮件格式的正确性,本课程主要讲解email输入数据验证处理
142504_【掌握】IP地址验证 本程序是以IPV4结构的IP地址为主进行验证分析,在进行IP地址定义时是按照8位二进制数据的形式提供的,这样就可以通过正则进行判断,同时需要对“.”转义。
142505_【掌握】HTML结构拆分 本课程实现过程之中需要注意的问题是将对应的元素标记“<font>”删除,并且依据每个属性(使用空格拆分)获取对应的数据内容,可以基于分组形式完成。
142506_【掌握】国际化应用 国际化程序的实现核心依据在于资源文件,本课程利用初始化参数的形式输入国家编码,随后根据设置的编码判断要加载的Locale类实例,获取不同的资源内容
142507_【掌握】数据排序 项目开发中经常会使用字符串根据既定的格式拼凑出要描述的一个或多个数据信息,本程序将依据每组数据的拆分符“|”进行拆分,随后在内部通过每个数据的分隔符“:”获取对应数据,由于需要排序,可以利用Comparable接口实现。
142508_【掌握】硬币投掷 硬币投掷是基于随机数的生成处理机制实现的一个数据统计操作,在该统计处理中由于需要同时返回有多个数据,所以可以结合二叉树结构中讲解的IMap工具类进行实现,本课程通过具体的代码演示了一个方法返回多个数据的处理操作。
150101_【掌握】File类基本使用 文件是磁盘的重要组成元素,IO包中通过File类描述文件,本课程主要讲解File类的常用构造方法、路径组成以及创建、删除文件的基本操作
150102_【掌握】文件目录操作 为规范化的保存文件可以通过目录的形式进行存储,本课程分析了路径分隔符以及创建文件中父目录对操作影响,同时演示了如何动态的实现父目录的创建
150103_【掌握】获取文件信息 一个文件除了自身的内容之外还会保存有一些元数据信息,本课程将通过File类取得文件基本信息的操作方法,例如:文件创建日期、大小、路径等。
150104_【掌握】获取目录信息 磁盘之中除了文件之外也包含有目录,File类可以方便的实现目录的各项操作,本课程通过具体的代码结合迭代操作实现了文件目录数据的信息获取。
150105_【掌握】文件更名 有了文件操作类的帮助,就可以针对于目录或子目录中的名称进行自动修改,本课程主要通过递归操作实现目录中文件名称的批量更名处理
150201_【掌握】数据流简介 流是IO的基本操作单元,在流设计中都会提供有输入与输出两方面支持,本课程主要讲解Java中对于文件内容操作提供的两组类以及代码操作流程
150202_【掌握】OutputStream字节输出流 本课程主要讲解OutputStream类的定义组成,同时分析了所实现的父接口的作用,并且通过实例讲解如何将字符串中的数据输出到文件之中
150203_【掌握】InputStream字节输入流 本课程主要如何利用InputStream类进行文件信息的读取以及三个read()方法与OutputStream类中三个write()方法的操作区别形式
150204_【掌握】Writer字符输出流 使用OutputStream适合于字节数据输出,这类数据适合于网络传输,但是在操作时需要进行字节数组转换操作,为了简化输出的操作,Java提供有字符输出流,直接支持字符串输出,本课程主要讲解字符流进行内容输出的操作
150205_【掌握】Reader字符输入流 字节输出流更加适合于网络的传输以及底层数据交换上,为了方便的进行文字处理,Java提供有字符输出流,本课程主要讲解字符输入流进行文件读取的操作
150206_【掌握】字节流与字符流区别 Java提供的两种流是随JDK版本升级不断完善的,为了帮助读者理解这两类流的区别,本课程将分析字节流与字符流在使用上的区别,并强调了字符流清空缓冲区的意义
150301_【理解】转换流 字节流与字符流各有特点,既然提供了两种流,就同时提供有转换支持,本课程主要讲解InputStreamReader与OutputStreamWriter实现字节流与字符流之间的转换
150401_【掌握】文件拷贝 在Dos系统中提供有文件拷贝的支持,该命令可以实现目录和文件的拷贝,Java的IO操作既然可以实现磁盘和流处理,就可以通过程序模拟此命令,本课程主要通过实战代码讲解了如何使用字节流进行文件与目录拷贝操作
150501_【掌握】字符编码 本课程主要为读者讲解在程序开发中比较常见的几种编码(ISO8859-1、GBK、GB2312、UNICODE、UTF-8)的特点,同时分析了程序乱码产生问题
150601_【掌握】内存操作流 将IO的处理操作放在内存中,这样就可以避免文件操作时所留下的磁盘痕迹,本课程主要讲解内存操作流的使用,并且通过一个大小写转换处理讲解了IO操作
150701_【掌握】管道流 Java是一门多线程编程语言,可以通过若干个线程提高程序的执行性能,所以在进行IO设计时也提供有不同线程间的管道通讯流,本课程主要讲解在两个多线程之间实现的管道IO处理操作
150801_【掌握】RandomAccessFile InputStream与Reader可以实现文件的批量读取,但是对于较大文件时的处理逻辑就会非常复杂,本课程主要讲解随机读写类的使用,并且实现了数据的写入与读取
150901_【掌握】打印流 本课程主要讲解了打印流类(PrintStream、PrintWriter)所采用的设计模式与使用。同时讲解了JDK 1.5所提供的格式化输出处理
151001_【理解】System类对IO的支持 System类中提供有屏幕显示的输出操作,实际上这也是基于IO操作实现的,本课程主要讲解System类中err、out、in三个IO常量的作用
151101_【掌握】BufferedReader缓冲输入流 本课程主要讲解了BufferedReader类的定义结构,以及如何与System.in结合实现合理的键盘输入数据操作,并且最后又利用了BufferedReader实现了文件数据的读取。
151201_【掌握】Scanner输入流 本课程主要讲解了JDK 1.5所提供的Scanner类,如何实现字节数据的读取操作操作,同时讲解了使用Scanner读取文件数据时路径分隔符的定义问题。
151301_【掌握】Serializable接口 序列化是一种对象的传输手段,Java有自己的序列化管理机制,本课程主要讲解了对象序列化的操作意义,以及对象Serializable接口的作用。
151302_【掌握】对象序列化与反序列化 序列化和反序列化需要进行二进制存储格式上的统一,为此Java提供了对象序列化操作类,本课程主要讲解ObjectOutuptStream类与ObjectInputStream类的作用,并且通过实例演示反序列化的操作
151303_【掌握】transient关键字 为了保证对象序列化的高效传输,就需要防止一些不必要成员属性的序列化处理,本课程主要讲解transient关键字在序列化中的作用与使用
151401_【掌握】输入数据比大小 Java中的键盘输入操作需要通过Sytem.in来进行处理,但是为了方便频繁的数据输入所以需要进行数据输入工具类的定义,本程序通过面向对象的方式实现了三个数据输入后的大小写内容的统计
151402_【掌握】字符串逆序处理 本程序需要通过程序逻辑输入多个不同的字符串内容,而后将每组数据进行逆序处理,在本课程中采用面向对象的设计,实现了数据的存储以及逆序控制。
151403_【掌握】输入数据排序 指定格式的文本数据输入是一种较为常见的操作形式,本课程将通过程序输入一个标准结构字符串,并利用比较器实现数据的排序处理
151404_【掌握】用户登录认证 本课程主要模拟一个用户的登录程序处理,用户通过键盘输入用户名与密码,并且利用合理的程序结构进行登录验证,同时通过static统计认证次数实现安全控制
151405_【掌握】投票选举班长 由于本程序会存在有多位候选人,所以需要将候选人的相关信息定义在单独的程序类之中,同时为了方便进行信息展示,可以通过switch实现一个控制菜单
160101_【理解】网络程序概述 网络通讯是项目开发中的重要组成部分,也是现代计算机软件的主要发展方向,本课程为读者介绍了网络七层模型的作用,同时对Socket网络程序的开发结构进行了讲解。
160102_【理解】开发网络程序 TCP是网络编程中最为常用的操作协议,本课程将利用java.net开发包中的ServerSocket与Socket两个类实现服务器端程序的开发,并且利用了telent实现了服务器代码测试。
160103_【理解】Echo程序模型 ECHO是网络程序的经典通讯模型,是一种客户端与服务器端数据交互的处理模式,本课程为读者讲解了ECHO模型的具体操作结构。
160104_【理解】BIO网络模型 BIO是网络通讯的传统模型,采用多线程的模式进行处理,本课程为读者分析了传统单线程网络服务器运行中所存在的问题,同时对传统的ECHO模型进行改造了,实现了多线程并发访问处理。
160105_【理解】UDP程序 网络编程中可靠的操作全部由TCP来实现,而除了TCP之外,也可以利用UDP进行通讯,本课程主要讲解UDP程序的特点以及实现模型
170101_【掌握】认识反射机制 反射是Java的核心处理单元,本课程主要为读者讲解反射的基本作用,同时利用Object类中的getClass()方法通过对象取得其完整信息
170201_【掌握】Class类对象实例化 Class是反射操作中最为重要的程序类,获取了Class类的实例就意味着获取了类的全部操作权限,本课程将针对于JDK支持的三种Class类对象实例化方式进行讲解
170301_【掌握】反射实例化类对象 对象实例化操作是JVM底层提供的操作支持,而除了关键字new之外也可以基于反射技术实现,本课程主要讲解如何使用Class类对象实现对象的实例化处理。
170302_【掌握】反射与工厂设计模式 工厂设计模式可以解决类结构设计的耦合问题,而通过反射可以进一步完善工厂设计模式,使其拥有更大的接口适应性,本课程主要分析传统工厂设计模式的弊端,同时讲解了如何利用反射实现工厂类定义。
170303_【掌握】反射机制与单例设计模式 在程序开发中需要不断的考虑多线程对于程序设计的影响,本课程针对于讲解过的懒汉式的单例设计模式进行了多线程访问下的分析,并且给出了同步问题的解决方案
170401_【掌握】反射获取类结构信息 一个类在定义时需要提供有包、父类等基础信息,本课程主要讲解了如何进行继承父类、父接口的信息取得。
170402_【掌握】反射调用构造方法 构造方法是对象实例化的重要结构,反射也可以准确的进行有参构造的调用,本课程主要讲解如何通过反射实现指定构造方法的调用以及参数设置。
170403_【掌握】反射调用方法 通过对象实现的方法调用虽然简单直接,但是却采用了硬编码的形式完成,当有了反射之后,基于反射的方法调用可以实现更加灵活的操作,本课程主要讲解了如何利用反射实现类中普通方法的调用。
170404_【掌握】反射调用成员属性 成员属性保存了一个对象的所有信息,通过反射可以实现成员属性的赋值与取值操作,本课程主要讲解了属性的直接操作,以及封装性取消等操作
170405_【掌握】Unsafe工具类 Java为了方便开发者使用底层操作,提供了Unsafe工具类,该类可以绕过JVM的运行机制来进行调用处理,本课程主要结合反射机制演示Unsafe类的作用
170501_【掌握】ClassLoader简介 JVM进行程序类的加载需要类加载器,Java内部提供有类加载器的支持,本课程主要是为读者讲解内置ClassLoader的使用以及ClassLoader主要作用
170502_【掌握】自定义文件类加载器 Java最大的特点在于可以方便的提供类加载的支持,这样使得程序的开发拥有极大的灵活性,本课程主要是结合IO处理程序来实现一个自定义ClassLoader类的使用
170503_【掌握】自定义网络类加载器 ClassLoader最大的方便之处是可以由用户任意定义加载程序文件的位置,除了在文件中加载之外,也可以通过网络服务器的方式进行加载,本课程通过Socket程序开发了类文件下载的服务器,并且基于ClassLoader实现了远程类的加载与使用。
170601_【掌握】静态代理设计模式分析 代理设计模式可以实现真实业务和辅助业务的有效拆分,本课程主要是讲解传统静态代理设计模式的开发以及如何与工厂设计结合使用
170602_【掌握】JDK动态代理机制 静态代理设计模式由于采用硬编码的形式,代理类不具备通用性,这样就会造成大量的重复代码,为了得到统一的代理支持可以基于动态代理设计模式完成,本课程将为读者讲解动态代理设计模式的实现。
170603_【掌握】CGLIB动态代理机制 JDK实现的动态代理机制是按照接口的形式实现的,但是开源组织又开发了基于类的代理结构,本课程主要是讲解如何基于CGLIB开发包实现动态代理设计模式
170701_【掌握】反射获取Annotation Annotation之所以可以在Java开发中得到广泛的应用,除了其结构简单之外,还可以结合反射进行配置操作,本课程主要讲解如何基于反射获取Annotation定义。
170702_【掌握】自定义Annotation 除了使用系统提供的Annotation之外,又留给开发者自定义Annotation的支持,此时就需要明确的指定Annotation的操作范围,本课程主要讲解Annotation的定义,以及结合反射获取Annotation信息处理
170703_【掌握】Annotation与工厂设计模式 Annotation是为了提供配置处理操作的,这些配置可以通过反射实现,本课程主要讲解Annotation与工厂设计模式的整合处理操作
170801_【掌握】传统类属性赋值弊端 实例化对象存在之后就需要进行属性的赋值操作,传统基于setter的赋值形式虽然简单但是过于繁琐,本课程主要讲解传统简单Java类属性设置问题
170802_【掌握】属性自动赋值实现思路 如果要想解决属性赋值的重复setter调用问题,那么就需要针对于赋值的操作结构进行定义,通过字符串给出明确处理格式,本课程主要针对于代码结构优化提出设计方案
170803_【掌握】单级属性赋值 简单Java类中的组成较为单一,在赋值中只需要通过反射考虑获取相应的Field与Method实例就可以实现赋值处理,课程主要讲解对于单个VO类实例化对象实现的属性赋值处理操作
170804_【掌握】属性类型转换 一个简单Java类中的属性类型不仅仅只有String,还会包含有整数、浮点数、日期等,本课程主要讲解如何实现多种数据类型的赋值以及转换处理操作。
170805_【掌握】级联对象实例化 一个类可以与其它类发生引用关系,以描述彼此之间的关系,这样的级联结构中就需要考虑对象实例化问题,本课程主要讲解如何在多级VO配置关系时如何通过反射技术实现动态实例化对象操作
170806_【掌握】级联属性赋值 类引用定义之后就会存在有其它引用类型的属性赋值操作,本课程主要讲解多级实例化对象属性内容的获取与其属性设置
180101_【掌握】Java类集框架简介 类集是针对于数据存储结构的标准描述,本课程主要讲解类集的发展历史以及不同JDK 版本对类集的支持,同时介绍了类集中的常用接口
180202_【掌握】Collection集合接口 Collection是单实例操作的标准接口,里面提供了大量的标准操作,本课程主要讲解的Collection接口的作用、常用子接口以及其常用操作方法
180301_【掌握】List接口简介 List是Collection最为常用的子接口,本课程主要讲解List接口的特点,同时分析了List接口的扩展方法以及常用子类定义
180302_【掌握】ArrayList子类 线性结构最方便的实现就是基于数组实现,本课程主要以ArrayList子类为读者讲解List子接口的方法特点与应用
180303_【掌握】保存自定义类对象 类集可以实现各种数据对象的保存,本课程讲解如何利用ArrayList类保存自定义类型以及equals()方法在集合中的作用
180304_【掌握】LinkedList子类 类集中链表可以线性的进行,类集中通过LinkedList实现链表结构,本课程主要为读者介绍LinkedList子类的使用以及与ArrayList类的区别
180305_【掌握】Vector子类 Vector是在类集未定义标准时提供的集合操作类,也是早期项目开发中被大量采用的集合类,本课程主要通过源代码的比较分析ArrayList与Vector类的区别
180401_【掌握】Set接口简介 在某些环境下,集合数据不需要保存有重复内容,所以Collection对此标准进行了扩充,提供了Set接口标准,本课程主要讲解Set集合接口的特点以及常用子类的定义
180402_【掌握】HashSet子类 散列是一种常见的数据存储模式,HashSet是基于散列存放的集合,本课程主要是讲解HashSet子类的继承特点以及存储特点
180403_【掌握】TreeSet子类 散列是一种常见的数据存储模式,HashSet是基于散列存放的集合,本课程主要是讲解HashSet子类的继承特点以及存储特点
180404_【掌握】TreeSet排序说明 集合可以保存任意的数据类型,但是对于TreeSet子类的实现需要有特殊要求,本课程主要是分析TreeSet子类排序使用与Comparable接口实现子类的注意事项
180405_【掌握】重复元素判断 Set集合中不允许有重复元素,本课程主要讲解了如何利用Object类中的hashCode()、equals()两个方法消除重复元素的操作
180501_【掌握】Iterator迭代输出 虽然集合提供有将数据以数组形式返回的支持,但是这类操作的性能往往不是最好的,因此在开发中迭代是一种常用的集合输出模式,本课程主要讲解了Iterator接口的定义以及元素删除问题的解决
180502_【掌握】ListIterator双向迭代输出 Iterator实现了单向迭代输出操作的支持,而Java考虑到了双向迭代的需求,提供了ListIterator接口,本课程主要分析了两种迭代操作的区别,并且通过具体的操作演示了双向迭代输出操作
180503_【掌握】Enumeration枚举输出 早期的Vector可以提供有集合保存功能,所以Java针对于此接口的输出提供了Enumeration接口,本课程主要利用Enumeration实现了Vector集合的操作
180504_【掌握】foreach输出 foreach是一种新的集合迭代输出格式,本课程主要讲解如何利用JDK 1.5的新特性实现集合输出操作,同时讲解了foreach与Iterable接口之间的关联
180601_【掌握】Map接口简介 Map是一种保存二元偶对象数据的接口标准,本课程主要介绍了Map接口与Collection接口的区别,详细的介绍了Map接口的方法,以及Map接口的常用子类
180602_【掌握】HashMap 本课程主要通过HashMap子类对Map接口方法进行验证,同时分析了HashMap源代码中对于数据保存、存储扩充、红黑树应用。
180603_【掌握】LinkedHashMap Hash采用了散列算法进行数据存储,这就造成了无序存放,但是在要求严格下需要按照顺序保存,所以提供了链表形式的Map集合,本课程主要分析了如何采用链表形式的Map集合实现数据保存
180604_【掌握】TreeMap Map集合的主要功能是依据Key实现数据查询需求,为了方便进行key排序操作提供了TreeMap集合,本课程主要讲解TreeMap子类的特点以及排序说明
180605_【掌握】Hashtable Hashtable是早期的字典实现类,可以方便的实现数据查询,本课程主要讲解了Hashtable的继承结构,并且通过源代码的分析比较了其与HashMap的区别
180606_【掌握】Map.Entry Map保存了二元偶对象,同时Map又具有数据查询功能,本课程主要讲解Map数据存储结构中,Map.Entry接口的设计意义以及数据存储与获得
180607_【掌握】Iterator迭代输出Map集合 Iterator是集合输出的标准形式,Map虽然核心的意义在于数据查询,但是依然会有输出需求,本课程主要讲解如何利用Iterator与Map.Entry输出Map集合中的全部元素
180608_【掌握】自定义Map集合 KEY Map集合定义时所保存的Key与Value类型都可以由开发者设置,本课程主要讲解使用自定义类作为key操作的注意事项,以及实际开发中的key类型选用原则
180701_【掌握】Stack栈 本课程主要讲解了栈数据结构的作用以及现实使用中的场景,同时分析了Stack类的继承结构并通过操作方法进行栈操作分析
180801_【掌握】Queue队列 在项目开发中队列可以实现一种数据缓冲区的操作形式,本课程通过具体的分析讲解了队列结构存在的意义,同时分析了Queue与Deque两个队列操作接口的区别以及具体应用。
180901_【掌握】Properties属性操作 字符串在开发中有着非常重要的意义,所以在集合定义时就提供了专门保存字符串的Properties属性操作类,同时该类还可以方便的实现数据集合的传输处理本课程主要讲解Properties类的使用以及输出及输入属性信息
181001_【理解】Collections工具类 虽然集合中提供了大量的操作方法,但是这些方法基本上都是围绕着标准数据操作的结构来定义的,为了进一步提升集合类数据操作的能力,提供有Collections类,本课程主要讲解了Collections工具类与集合间的操作关系
181101_【理解】Stream数据流 随着技术的发展集合中可能会保存越来越多的数据信息,为了方便的对这些信息进行分析,提供了Stream数据流操作,本课程主要通过实例讲解Stream接口的操作方法,并且分析了JDK中提供的原生MapReduce数据处理模型
181201_【掌握】类集序列化对象存储 Java类集可以方便的实现多个对象数据的动态存储,这样在进行若干个对象的序列化时就可以通过集合的方式实现统一操作,在本程序中基于类关联的描述实现了业务功能定义以及基于序列化方式的数据信息获取实现
181202_【掌握】部门信息查找 对象数组虽然可以方便的实现多个数据存储,但是由于其长度的限制,所以在项目开发中控制较为困难,本课程将基于类集的形式改写了传统代码实现操作,并且基于业务的设计实现级联关系数据信息的获取操作。
181203_【掌握】学生成绩统计 集合中除了可以保存多个数据内容之外,还需要考虑更多的数据统计管理,本课程通过一个实际的应用并结合具体的业务设计解决了一个学生成绩数据的计算管理操作。
190101_【掌握】数据库简介 项目中需要进行大量的数据管理,而数据管理最有效的模式就是基于数据库软件,本课程为读者分析了项目开发中数据库的作用以及编程开发的意义
190102_【掌握】MySQL数据库简介 MySQL是全球使用最广泛的开源数据库,本课程为读者介绍了MySQL数据库的发展历史以及当前的应用状况
190103_【掌握】MySQL安装与配置 MySQL数据库安装需要开发者进行大量的手工配置,其操作步骤也非常繁琐,本课程采用分布的形式为读者详细的讲解了MySQL数据库的获取、安装以及初始化配置的相关操作
190104_【掌握】MySQL操作命令 MySQL数据库采用了命令行的模式进行操作,本课程为读者讲解了MySQL的常用命令,并且利用SQL语句实现了数据表的创建、更新与查询操作
190105_【掌握】MySQL前端工具 IDEA作为流行的Java开发工具,其内部为了便于开发也提供有数据库操作客户端,本课程通过具体的操作步骤为读者演示了如何在IDEA工具中进行MySQL连接配置以及命令的执行
190201_【掌握】JDBC简介 Java是一门被广泛使用的编程语言,其自身支持有数据库开发操作,本课程主要讲解JDBC的主要作用,以及开发中几种不同的数据库连接模式
190301_【掌握】JDBC连接MySQL数据库 JDBC是一个Java提供的数据库操作标准,基于此标准可以方便的实现各类数据库的连接与操作管理,本课程主要讲解如何利用JDBC进行数据库连接
190401_【掌握】数据库连接体系分析 JDBC是基于一套标准技术服务实现的开发技术,在整个技术服务设计架构过程之中采用完善的解耦和设计思想实现不同数据库的连接管理,本课程为读者从宏观的架构上分析了JDBC连接操作的处理结构,帮助读者进一步巩固工厂设计模式在项目开发中的使用。
190501_【掌握】Statement接口简介 获取数据库连接是为了取得数据库的操作能力,而操作就需要通过Statement接口实现,本课程主要讲解Statement接口的实例化操作模式,以及接口主要方法
190502_【掌握】Statement实现数据更新操作 Statement基于标准的SQL更新语句实现数据更新操作,本课程主要讲解如何Statement接口实现数据更新操作
190503_【掌握】Statement实现数据查询操作 数据在进行查询时会将全部的内容返回到内存之中,因此Java提供了ResultSet标准操作接口,本课程主要讲解如何利用Statement接口实现数据的查询操作
190601_【掌握】Statement问题引出 Statement提供了SQL语句的直接执行能力,但是由于其只支持SQL语句所以开发中会存在有安全隐患,本课程主要讲解Statement接口的在实际开发中存在的问题
190602_【掌握】PreparedStatement接口简介 PreparedStatement接口主要是为了解决Statement接口中SQL语句直接定义所存在的安全隐患,本课程为读者详细的讲解了PreparedStatement接口的定义结构以及实例化操作。
190603_【掌握】PreparedStatement实现数据更新 PreparedStatement在实现开发中需要使用占位符的形式进行数据的配置,本课程详细的讲解了占位符的作用以及数据的具体设置操作。
190604_【掌握】PreparedStatement实现数据查询 项目开发中PreparedStatement是主要的数据库操作对象,而在数据库操作中查询是最为复杂的部分,本课程主要讲解如何利用PreparedStatement实现数据查询操作
190701_【掌握】数据批处理 单SQL的执行虽然简单,但是在频繁修改下就有可能带来性能问题,为此JDBC提供了批处理操作,本课程主要讲解Statement与PreparedStatement批处理的功能实现。
190801_【掌握】事务控制 SQL数据库中最为重要的组成就是事务支持,本课程主要讲解事务的ACID原则,同时结合批处理的问题讲解JDBC中事务的控制操作方法使用。
190901_【掌握】JDBC元数据 在JDBC开发中除了常规的程序处理之外还提供有大量的元数据信息,利用这些元数据可以动态的获取数据库名称、版本号或者查询结果的原始数据列的信息。
191001_【掌握】数据批量存储 批处理是项目开发设计中的一项重要技术手段,利用批处理的概念模型,可以极大的提升多条更新语句的执行处理速度,同时也可以减少IO占用,本课程通过两张一对多的关联结构数据表讲解了批处理在简单Java类中的应用。
191101_【掌握】数据表CRUD 商业项目开发过程之中,往往都会基于数据库实现数据存储,这样就需要围绕着数据库展开CRUD操作实现,本课程通过早先的Java数据库开发设计模型讲解了一种基于接口和抽象方法标准的数据操作的结构。
191201_【掌握】动态DDL操作 在简单Java类编写过程中经常需要根据数据表的结构来定义简单Java类,但是在一些灵活的设计中,开发者也可以根据简单Java类实现数据表的动态创建,本课程基于Annotation注解和反射机制实现了表的创建解析操作。
0701_【理解】J.U.C简介 Java作为一门多线程的编程语言,除了其自身所提供的多线程处理机制之外,还在JDK1.5后提供了J.U.C开发支持包,本课程为读者讲解了J.U.C的产生背景,同时详细的介绍了J.U.C开发包中的核心类的作用。
0702_【掌握】TimeUnit时间单元 在进行线程处理操作时,时间是最为重要的结构组成单元,所以为了简化时间计算的处理操作,提供了TimeUnit时间单元类,本课程为读者讲解了TimeUnit工具类的作用并对其内部的支持方法进行了展示。
0703_【掌握】ThreadFactory 多线程的实现结构中需要进行有效的线程名称管理,同时要有良好的线程创建机制,在J.U.C中提供了ThreadFactory线程工厂类,本课程为读者讲解了该类的具体应用。
0704_【理解】原子操作类简介 原子操作类提供了线程安全的处理支持,本课程通过传统的线程开发机制,讲解了原子操作类的产生意义,并介绍了atomic子包的类组成结构。
0705_【理解】基础类型原子操作类 Java提供了基本的数据类型支持,而传统的基础数据类型是没有线程同步支持的,为此在J.U.C开发包中提供了基础类型的原子操作类,本课程为读者讲解了基础原子操作类的实现使用,并对其源代码进行了分析。
0706_【掌握】数组原子操作类 数组作为基础的集合操作,在实际并发环境中也需要存在有同步的处理需求,为此J.U.C提供了数组相关的原子操作类,本课程为读者讲解了该类的使用。
0707_【掌握】引用类型原子操作类 引用是Java实际开发中应用最多的操作形式,为了提供安全可靠的多线程原子属性操作,提供了引用类型原子操作支持类,本课程通过实例讲解了此类的使用。
0708_【掌握】属性原子操作类 当多个线程占用同一个对象引用时,会牵扯到属性的修改问题,而为了简化多线程下的属性修改处理机制,J.U.C提供了属性修改原子操作类,利用一种专属修改器的功能实现安全的修改操作,本课程通过具体的实例为读者演示了该工具类的使用。
0709_【掌握】并发计算 多线程下的数学计算需要进行可靠的准确率的保证,所以在J.U.C中提供了并发计算的功能,本课程通过实例为读者讲解了并发计算类的使用。
0710_【理解】ThreadLocalRandom 安全的多线程访问,必然离不开有效的线程隔离,为便于多线程随机数的生成处理,J.U.C提供了ThreadLocalRandom工具类,本课程将通过实例讲解该类的使用。
0711_【掌握】线程锁 线程锁是保证数据同步处理操作的重要技术手段,在J.U.C中为了彻底解决死锁所带来的问题,专门提供了lock开发子包,本课程会对这一开发包中的主要类和实现机制进行一个综合性的分析,并重点强调了AQS的作用。
0712_【掌握】ReentrantLock 互斥锁是J.U.C锁机制中的基本组成单元,本课程为读者讲解了互斥锁的基本关联结构,并结合多线程售票程序讲解了互斥锁的具体应用。
0713_【掌握】ReentrantReadWriteLock ReentrantReadWriteLock提供了一个读写处理的同步处理类,可以避免互斥锁所带来的性能问题,本课程通过实例为读者讲解了读写锁的使用。
0714_【掌握】StampedLock 为进一步提高锁的处理性能,J.U.C提供了StampedLock,该处理机制除了可以实现读写支持之外,也提供了更高效的乐观锁机制,本课程将通过具体的实现案例进行该工具类的使用讲解。
0715_【掌握】Condition Condition可以实现自定义锁的创建管理,同时也提供了等待与唤醒机制,本课程通过一个多线程的读写操作实例,分析了Condition类的作用。
0716_【掌握】LockSupport LockSupport提供了一种类似于原生的多线程同步与唤醒操作机制,可以方便的实现线程操作的融合,本课程通过具体的操作实例讲解了LockSupport类方法的使用。
0717_【掌握】Semaphore 在系统应用资源不足时,可以通过信号量的方式来实现资源的有效分配,避免过多线程抢占而导致性能瓶颈,本课程讲解了信号量设计的目的与具体应用。
0718_【掌握】CountDownLatch CountDownLatch是在多线程协作等待中最为常用的一个程序类,在本课程中将为读者讲解该类的主要特点,并通过具体的案例进行开发演示。
0719_【掌握】CyclicBarrier 栅栏是一种多线程的等待机制,基于栅栏可以有效的实现协同线程同步处理,本课程为读者分析了CyclicBarrier类的使用特点,并通过具体的实现案例展示其具体应用。
0720_【掌握】Exchanger 在传统的生产者与消费者模型中提供有中间数据保存处理逻辑,在J.U.C中提供了Exchanger的交换空间,本课程通过具体的应用环境讲解了该类的实际应用。
0721_【掌握】CompletableFuture CompletableFuture提供了多线程统一的协调形式,可以基于Future异步多线程的实现机制实现统一调度触发,本课程将通过多线程协调的案例对这一类功能进行讲解。
0722_【掌握】并发集合 集合是Java学习和开发中的重要组成,而集合的开发一定会牵扯到多线程的操作逻辑,本课程为读者讲解了并发集合的作用,并对其进行了宏观的使用介绍。
0723_【掌握】并发单值集合类 单数据存储是项目开发中常用的集合类型,在J.U.C中提供了CopyOnWriteArrayList、CopyOnWriteArraySet集合类,本课程通过实例分析了这两个集合类的使用特点,并通过源码结构进行了实现分析。
0724_【掌握】ConcurrentHashMap ConcurrentHashMap是Map接口中最重要的实现子类,本课程主要讲解了该类的的作用,并进行其实现原理分析与应用场景分析。
0725_【掌握】跳表集合 跳表是对链表结构的一种性能改进,本课程为读者分析了跳表集合的作用,同时基于Java提供的ConcurrentSkipListMap、ConcurrentSkipListSet类讲解了跳表实现。
0726_【掌握】阻塞队列 队列实现了顺序式的数据处理缓冲,而为了进一步实现多线程下的队列管理,在J.U.C中提供了阻塞队列的支持,本课程为读者分析了BlockingQueue接口的作用,并介绍了与之相关的实现子类。
0727_【掌握】BlockingQueue BlockingQueue提供了自动数据弹出的支持,本课程通过BlockingQueue的基本子类讲解了阻塞队列的使用特点。
0728_【掌握】TransferQueue 阻塞队列虽然提供了较为方便的数据存储功能,但是传统的阻塞队列都存在有大量独占锁的处理,这样就导致了并发性能的下降,在JDK1.7后提供了TransferQueue接口,本课程将对此接口的功能进行讲解,同时分析了其实现原理。
0729_【掌握】BlockingDeque 队列结构中分为单端队列与双端队列,为此阻塞队列中也提供了BlockingDeque接口,本课程通过生产者与消费者模型讲解了双端阻塞队列的结构应用。
0730_【掌握】延迟队列 延迟队列是阻塞队列的扩展实现,通过延迟队列可以实现缓存数据的自动弹出处理,本课程为读者讲解了延迟队列的操作特点,并通过源码对其实现进行了分析。
0731_【掌握】延迟队列基本操作 为便于读者理解延迟队列,在本次课程中将通过一个基础代码的形式实现延迟队列的代码模型,以及数据弹出的处理操作。
0732_【掌握】数据缓存 缓存是应用项目开发中的重要组成技术,利用缓存可以极大的提高应用程序的吞吐量,使其更加适合于高并发操作,本课程将利用延迟队列自动弹出的特点并结合后台线程管理,开发一个动态数据缓存处理类。
0733_【掌握】线程池简介 线程池是现代高并发系统之中最重要的实现技术,本课程为读者详细的分析了传统多线程实现机制中的各类问题,并且介绍了四种不同的线程池的技术特点。
0734_【掌握】线程池创建 J.U.C提供了线程池的创建支持,本课程讲解了如何使用Executors类创建不同类型的线程池的操作,以及线程处理任务的分配。
0735_【掌握】CompletionService 线程执行时往往会携带有返回数据,而此数据就需要进行异步接收处理,本课程通过具体的实例讲解了CompletionService接口与线程返回值的接收处理。
0736_【掌握】ThreadPoolExecutor ThreadPoolExecutor是线程池实现的关键类,本课程为读者讲解了该类的使用,并通过该类直接实现了线程池的创建,同时分析了四种拒绝策略的使用环境。
0737_【理解】ForkJoinPool J.U.C提供的分支任务可以有效的发挥出硬件设备的特点,提高业务处理的操作性能,本课程为读者分析了分支任务的作用,以及与线程池的之间的结构关联。
0738_【理解】RecursiveTask分支任务 分支处理的核心在于分支任务的配置,本课程通过RecursiveTask抽象类实现了分支任务的定义,并通过一个数字累加的操作讲解了fork()与join()操作的整合。
0739_【理解】RecursiveAction分支任务 在ForkJoinTask分支任务处理中还提供有RecursiveAction操作类,该类实现了无返回值的数据计算处理,本课程为读者讲解了该任务结构的使用以及累加代码的改进。
0740_【理解】CountedCompleter分支任务 CountedCompleter是一个扩展的分支任务结构,利用其可以实现挂起分支的方便操作,本课程通过数据累加的实例,演示了该分支类的使用。
0741_【理解】ForkJoinPool.ManagedBlocker 分支处理中为了解决阻塞所带来的核心资源耗尽的问题,提供了阻塞管理器,本课程为读者分析了阻塞管理器的作用,并且依据ManagedBlocker内部接口讲解了线程池补偿操作的实现。
0742_【理解】Phaser J.U.C中Phaser是一个功能强大的处理类,可以实现CountDownLatch、CyclicBarrier以及分支处理的功能,本课程通过一系列的实例讲解了Phaser的使用以及实现架构。
0743_【理解】ReactiveStream简介 响应式编程是最近几年的程序发展主流,在响应式编程下为了保证数据流的稳定传输,提供了响应式数据流的概念,本课程通过宏观的方式为读者讲解了响应式编程的发展过程和主要概念,并对JDK 1.9后提供的响应式流开发类进行了介绍。
0744_【理解】SubmissionPublisher J.U.C内部内置了发布者的实现子类,本课程将为读者分析SubmissionPublisher子类的继承特点,并且通过了具体的案例讲解了该类中相关操作方法的使用。
0745_【理解】Reactive编程模型 响应式数据流的模型在JDK1.9之后有了新的实现,本课程将基于一个最基础的发布者与订阅者结构实现自定义类对象数据的发送与接收处理。
0746_【理解】Flow.Processor Processor实现了响应式数据流的转换处理操作功能,本课程为读者分析了Processor操作类的作用,并且通过实例讲解了其具体的应用。
0801_【掌握】JVM内存模型 Java程序执行需要JVM进程处理并且需要提供有结构合理的内存空间,掌握内存结构的划分才可以编写更佳的程序,本课程为读者讲解了JVM内存体系以及组成说明。
0802_【掌握】Java对象访问模式 Java中基于引用传递的模式实现了内存操作的直接访问,而在引用过程中就会出现有对象的访问模式,本课程为读者分析了句柄访问与指针访问操作的特点。
0803_【掌握】JIT即时编译器 JIT是提升HotSpot虚拟机处理性能的重要技术,本课程为读者讲解了JIT技术的相关概念,以及如何JIT模式的开启与关闭操作。
0804_【掌握】JVM堆内存结构 堆内存是JVM的核心组成,同时也是应用优化的主要环节,本课程为读者讲解了堆内存结构的划分,并对不同的组成部分进行了说明。
0805_【掌握】新生代内存管理 新生代实现了新对象的存储,同时又要实现分代晋级的功能,本课程为读者分析了新生代堆内存的组成结构,工作原理以及相关的内存调整策略的使用。
0806_【掌握】老年代内存管理 老年代提供了常驻对象的存储空间,也是整个JVM堆内存之中最大的一块内存空间,本课程为读者分析了老年代的作用,以及相关配置参数的使用。
0807_【掌握】元空间 元空间是HotSpot的最新支持,是一块直接的物理内存,本课程为读者分析了元空间的作用和组成形式,以及与永久代的区别。
0808_【掌握】Java垃圾收集流程 GC是Java所提供的重要的内存回收技术,由于Java堆内存进行了分代设计,所以GC的处理模式也有所划分,本课程为读者讲解了Java垃圾回收的处理流程。
0809_【了解】垃圾回收算法 垃圾回收是Java进行内存管理的重要依赖,垃圾回收都需要提供有可靠的垃圾回收算法,本课程为读者讲解了常见的垃圾回收算法概念。
0810_【了解】串行垃圾收集器 串行垃圾收集器是一种最古老的垃圾收集器,本课程为读者讲解了串行GC收集器与分代GC算法的整合,并利用特定的JVM参数实现了串行垃圾收集器的启用。
0811_【了解】并行垃圾收集器 并行垃圾收集器可以有效的提高串行垃圾收集器的处理性能,也可以减少STW的暂停时间,本课程为读者分析了并行垃圾收集器的主要特点以及使用配置。
0812_【了解】CMS垃圾收集器 CMS是在早期Java应对大内存垃圾回收时的最佳方案,本课程为读者分析了CMS的工作原理,并对CMS的处理阶段进行了说明。
0813_【掌握】G1垃圾收集器 从JDK9开始,G1成为了默认的垃圾收集器,同时G1也成功的代替了以往全部的垃圾收集器,可以较好的应付大内存的应用场景,本课程为读者讲解了G1垃圾收集器的工作原理以及相关配置参数的使用。
0814_【理解】ZGC垃圾收集器 ZGC是现今为止处理性能最高的Java垃圾收集器,也是Java未来的发展方向,本课程为读者讲解了ZGC的工作原理以及启用参数。
0815_【理解】jstat监控工具 jstat是一个JDK自带的JVM监控工具,可以以命令的方式实现指定JVM进程的监控,本课程为读者讲解了jstat相关监控命令的使用,并解释了返回数据列的信息。
0816_【理解】jmap监控工具 jmap是一个可以进行对象信息查询的工具,利用该工具可以获取当前堆内存中的全部对象统计以及堆内存的相关信息,本课程为读者讲解了jmap工具的常用形式。
0817_【理解】jstack监控工具 死锁是多线程开发中较为常见的问题,而在一个庞大的应用中如果要想解决死锁就必须首先实现代码的定位,为此在JDK提供了jstack分析工具,本课程为读者讲解了该工具的使用以及死锁线程的定位处理。
0819_【理解】visualvm监控工具 VisualVM是一个更加智能的JVM监控工具,该工具现在已经和JDK脱离开来成为一个独立的组件,本课程为读者讲解了该组件的下载以及使用操作。
0820_【理解】数据引用概述 引用是Java的核心处理模型,由于引用与GC有直接的关联,所以在Java中为了进一步实现对象的有效管理,提供了四种引用类型,本课程为读者分析了强引用的问题并介绍了四种引用类型的概念。
0821_【理解】软引用 为了避免强引用所带来的内存占用问题,JDK提供了软引用,这样可以在内存不足时通过GC实现堆内存的释放,本课程为读者讲解了软引用的实现。
0822_【理解】弱引用 弱引用可以在每次GC时进行对象清除,可以实现更加方便的内存管理,本课程为读者讲解了弱引用的特点,以及WeakHashMap类的使用。
0823_【理解】引用队列 在某个对象被回收时可以通过引用队列进行存储,这样可以便于用户实现对象清理的后续操作,本课程为读者讲解了引用队列的概念以及相关的使用操作。
0824_【理解】虚引用 虚引用是一种特殊的引用形式,可以实现无引用的处理操作,本课程为读者分析了虚引用的作用,并通过具体的实例讲解了虚引用的实现。