- 01_Java语言发展史
- 02_计算机进制转换
- 03_计算机存储单元
- 04_命令提示符_基本介绍
- 05_命令提示符_常用命令
- 06_Java语言的跨平台性
- 07_JDK、JRE与JVM
- 08_JDK的下载与安装
- 09_环境变量的配置
- 10_HelloWorld程序的代码编写
- 11_HelloWorld程序的编译运行
- 12_-HelloWorld的常见问题与Notepad++使用
- 13_程序注释与HelloWorld说明
- 14_关键字的概念与特征
- 15_标识符的概念与规则
- 16_常量的概念与分类(1)
- 17_常量的打印输出
- 18_基本数据类型
- 19_变量的概念与定义格式
- 20_变量的基本使用
- 21_变量的注意事项
- 01_数据类型转换_自动转换
- 02_数据类型转换_强制转换
- 03_数据类型转换_注意事项
- 04_ASCII编码表
- 05_算术运算符_四则与取模运算
- 06_算术运算符_加号的多种用法
- 07_算术运算符_自增自减运算符
- 08_赋值运算符
- 09_比较运算符
- 10_逻辑运算符
- 11_三元运算符
- 12_方法入门_概念引入
- 13_方法入门_方法的定义
- 14_方法入门_方法的调用
- 15_JDK9的JShell简单使用
- 16_编译器的两点优化
- 01_流程概述与顺序结构
- 02_选择结构_单if语句
- 03_选择结构_标准if-else语句
- 04_选择结构_扩展if-else语句
- 05_练习_用if语句实现考试成绩划分
- 06_练习_用if语句替换三元运算符
- 07_选择结构_标准的switch语句
- 08_选择结构_穿透的switch语句
- 09_循环结构_循环概述与基本组成部分
- 10_循环结构_for循环
- 11_循环结构_while循环
- 12_循环结构_do-while循环
- 13_练习_用循环求出1-100之间的偶数和
- 14_三种循环的区别
- 15_循环控制_break语句
- 16_循环控制_continue语句
- 17_死循环
- 18_循环嵌套
- 01_集成开发环境IDE的概述
- 02_IntelliJ-IDEA的安装
- 03_IDEA的项目结构
- 04_IDEA的HelloWorld
- 05_IDEA的基本配置
- 06_IDEA的常用快捷键
- 07_IDEA的项目关闭打开与模块导入
- 08_复习简单方法的使用
- 09_方法的定义格式
- 10_方法的三种调用格式
- 11_方法的调用流程图解
- 12_对比有参数和无参数
- 13_对比有返回值和无返回值
- 14_方法练习1_比较两个数字是否相同
- 15_方法练习2_求出1到100的累加和
- 16_方法练习3_打印指定次数的HelloWorld
- 17_方法的注意事项
- 18_方法重载的基本使用
- 19_方法重载的注意事项
- 20_重载练习1_四种不同参数类型的方法
- 21_重载练习2_判断方法的正确重载
- 22_重载练习3_实现重载的println方法
- 01_数组的概念
- 02_数组的定义格式一_动态初始化
- 03_数组的定义格式二_静态初始化
- 04_数组的定义格式三_省略的静态初始化
- 05_访问数组元素进行获取
- 06_访问数组元素进行赋值
- 07_Java中的内存划分
- 08_一个数组的内存图
- 09_两个数组的内存图
- 10_两个引用指向同一个数组的内存图
- 11_常见问题_数组索引越界异常
- 12_常见问题_空指针异常
- 13_获取数组的长度
- 14_数组的遍历输出
- 15_求出数组中的最值
- 16_数组元素反转
- 17_数组作为方法参数_传递地址
- 18_数组作为方法返回值_返回地址
- 01_面向对象思想的概述
- 02_面向对象思想的举例
- 03_类和对象的关系
- 04_类的定义
- 05_对象的创建及其使用
- 06_手机类练习
- 07_一个对象的内存图
- 08_两个对象使用同一个方法的内存图
- 09_两个引用指向同一个对象的内存图
- 10_使用对象类型作为方法的参数
- 11_使用对象类型作为方法的返回值
- 12_成员变量和局部变量的区别
- 13_面向对象三大特征之封装性
- 14_private关键字的作用及使用
- 15_练习使用private关键字定义学生类
- 16_this关键字的作用
- 17_构造方法
- 18_定义一个标准的类
- 01_API概述和使用步骤
- 02_Scanner概述及其API文档的使用
- 03_Scanner的使用步骤
- 04_Scanner练习一_键盘输入两个数字求和
- 05_Scanner练习二_键盘输入三个数字求最大值
- 06_匿名对象的说明
- 07_匿名对象作为方法的参数和返回值
- 08_Random概述和基本使用
- 09_Random生成指定范围的随机数
- 10_Random练习一_生成1-n之间的随机数
- 11_Random练习二_猜数字小游戏
- 12_对象数组
- 13_ArrayList集合概述和基本使用
- 14_ArrayList集合的常用方法和遍历
- 15_ArrayList集合存储基本数据类型
- 16_ArrayList练习一_存储随机数字
- 17_ArrayList练习二_存储自定义对象
- 18_ArrayList练习三_按指定格式遍历集合字符串
- 19_ArrayList练习四_筛选集合中的随机数
- 01_字符串概述和特点
- 02_字符串的构造方法和直接创建
- 03_字符串的常量池
- 04_字符串的比较相关方法
- 05_字符串的获取相关方法
- 06_字符串的截取方法
- 07_字符串的转换相关方法
- 08_字符串的分割方法
- 09_练习:按指定格式拼接字符串
- 10_练习:统计输入的字符串中各种字符的个数
- 11_静态static关键字概述
- 12_静态static关键字修饰成员变量
- 13_静态static关键字修饰成员方法
- 14_静态static的内存图
- 15_静态代码块
- 16_数组工具类Arrays
- 17_Arrays练习:字符串倒序排列
- 18_数学工具类Math
- 19_Math练习:小学数学真题
- 01_继承的概述
- 02_继承的格式
- 03_继承中成员变量的访问特点
- 04_区分子类方法中重名的三种变量
- 05_继承中成员方法的访问特点
- 06_继承中方法的覆盖重写_概念与特点
- 07_继承中方法的覆盖重写_注意事项
- 08_继承中方法的覆盖重写_应用场景
- 09_继承中构造方法的访问特点
- 10_super关键字的三种用法
- 11_this关键字的三种用法
- 12_super与this关键字图解
- 13_Java继承的三个特点
- 14_抽象的概念
- 15_抽象方法和抽象类的格式
- 16_抽象方法和抽象类的使用
- 17_抽象方法和抽象类的注意事项
- 18_发红包案例_分析
- 19_发红包案例_实现
- 01_接口概述与生活举例
- 02_接口的定义基本格式
- 03_接口的抽象方法定义
- 04_接口的抽象方法使用
- 05_接口的默认方法定义
- 06_接口的默认方法使用
- 07_接口的静态方法定义
- 08_接口的静态方法使用
- 09_接口的私有方法定义
- 10_接口的私有方法使用
- 11_接口的常量定义和使用
- 12_接口的内容小结
- 13_继承父类并实现多个接口
- 14_接口之间的多继承
- 15_多态的概述
- 16_多态的格式与使用
- 17_多态中成员变量的使用特点
- 18_多态中成员方法的使用特点
- 19_使用多态的好处
- 20_对象的向上转型
- 21_对象的向下转型
- 22_用instanceof关键字进行类型判断
- 23_笔记本USB接口案例_分析
- 24_笔记本USB接口案例_实现
- 01_final关键字概念与四种用法
- 02_final关键字用于修饰类
- 03_final关键字用于修饰成员方法
- 04_final关键字用于修饰局部变量
- 05_final关键字用于修饰成员变量
- 06_四种权限修饰符
- 07_内部类的概念与分类
- 08_成员内部类的定义
- 09_成员内部类的使用
- 10_内部类的同名变量访问
- 11_局部内部类定义
- 12_局部内部类的final问题
- 13_匿名内部类
- 14_匿名内部类的注意事项
- 15_类作为成员变量类型
- 16_接口作为成员变量类型
- 17_接口作为方法的参数和或返回值
- 18_发红包案例_分析
- 19_发红包案例_普通红包平均分发
- 20_发红包案例_手气红包随机分发
- 01_Object类的toString方法
- 02_Object类的equals方法
- 03_重写Object类的equals方法
- 04_Objects类的equals方法
- 05_Object类&Objects类总结
- 06_毫秒值的概念和作用
- 07_Date类的构造方法和成员方法
- 08_DateFormat类&SimpleDateFormat类介绍
- 09_DateFormat类的format方法和parse方法
- 10_练习_请使用日期时间相关的API,计算出一个人已经出生了多少天
- 11_Calendar类介绍_获取对象的方式
- 12_Calendar类的常用成员方法
- 13_1_时间日期相关类总结
- 13_System类的常用方法
- 14_StringBuilder的原理
- 15_StringBuilder的构造方法和append方法
- 16_1System类&StringBuilder类
- 16_StringBuilder的toString方法
- 17_包装类的概念
- 18_包装类_装箱与拆箱
- 19_包装类_自动装箱与自动拆箱
- 20_包装类_基本类型与字符串类型之间的相互转换
- 21_包装类总结
- 02_Collection集合概述
- 03_集合框架介绍avi
- 04_2Collection集合
- 04_Collection集合常用功能
- 05_Iterator接口介绍
- 06_迭代器的代码实现
- 07_迭代器的实现原理
- 08_增强for循环
- 09_泛型的概念
- 10_使用泛型的好处
- 11_定义和使用含有泛型的类
- 12_定义和使用含有泛型的方法(1)
- 13_定义和使用含有泛型的接口
- 14_泛型通配符
- 15_1泛型的使用总结
- 15_斗地主案例的需求分析
- 16_斗地主案例的代码实现
- 02_数据结构_栈
- 03_数据结构_队列
- 04_数据结构_数组
- 05_数据结构_链表
- 06_数据结构_红黑树
- 07_List集合_介绍&常用方法
- 08_Arraylist集合
- 09_LinkedList集合
- 10_Vector集合
- 11_HashSet集合介绍
- 12_哈希值
- 13_HashSet集合存储数据的结构(哈希表)
- 14_Set集合存储元素不重复的原理
- 15_HashSet存储自定义类型元素
- 16_LinkedHashSet集合
- 17_可变参数
- 18_Collections集合工具类的方法_addAll&shuffle
- 19_Collections集合工具类的方法_sort(List)
- 20_Collections集合工具类的方法_sort(List,Comparator)
- 01_Map集合概述
- 02_Map常用子类
- 03_Map接口中的常用方法
- 04_Map集合遍历键找值方式
- 05_Entry键值对对象
- 06_Map集合遍历键值对方式
- 07_HashMap存储自定义类型键值
- 08_LinkedHashMap集合
- 09_Hashtable集合
- 10_练习_计算一个字符串中每个字符出现次数
- 11_JDK9对集合添加的优化_of方法
- 12_Debug追踪
- 13_斗地主案例的需求分析
- 14_斗地主案例的代码实现
- 02_异常概念&异常体系
- 03_异常分类
- 04_异常的产生过程解析
- 05_throw关键字
- 06_Objects非空判断_requireNonNull方法
- 07_throws关键字_异常处理的第一种方式,交给别人处理
- 08_try_catch_异常处理的第二种方式,自己处理异常
- 09_Throwable类中3个异常处理的方法
- 10_finally代码块
- 11_异常注意事项_多异常的捕获处理
- 12_异常注意事项_finally有return语句
- 13_异常注意事项_子父类异常
- 14_自定义异常类
- 15_自定义异常类的练习
- 16_并发与并行
- 17_进程概念
- 18_线程概念
- 19_线程调度
- 20_主线程
- 21_创建多线程程序的第一种方式_创建Thread类的子类
- 02_多线程原理_随机性打印结果
- 03_多线程原理_多线程内存图解
- 04_Thread类的常用方法_获取线程名称的方法
- 05_Thread类的常用方法_设置线程名称的方法
- 06_Thread类的常用方法_sleep
- 07_创建多线程程序的第二种方式_实现Runnable接口
- 08_Thread和Runnable的区别
- 09_匿名内部类方式实现线程的创建
- 10_线程安全问题的概述
- 11_线程安全问题的代码实现
- 12_线程安全问题产生的原理
- 13_解决线程安全问题_同步代码块
- 14_同步技术的原理
- 15_解决线程安全问题_同步方法
- 16_静态同步方法
- 17_解决线程安全问题_Lock锁
- 18_线程状态概述
- 19_等待唤醒案例分析
- 20_等待唤醒案例代码实现
- 21_Object类中wait带参方法和notifyAll方法
- 02_线程间通信
- 03_等待唤醒机制概述
- 04_等待唤醒机制需求分析
- 05_等待唤醒机制代码实现_包子类&包子铺类
- 06_等待唤醒机制代码实现_吃货类&测试类
- 07_线程池的概念和原理
- 08_线程池的代码实现
- 09_函数式编程思想概述
- 10_冗余的Runnable代码
- 11_编程思想转换&体验Lambda的更优写法
- 12_Lambda标准格式
- 13_Lambda表达式的无参数无返回值的练习
- 14_Lambda表达式有参数有返回值的练习
- 15_Lambda表达式有参数有返回值的练习(自定义接口)
- 16_Lambda省略格式&Lambda使用前提
- 02_File类的概述
- 03_File类的静态成员变量
- 04_绝对路径和相对路径
- 05_File类的构造方法
- 06_File类获取功能的方法
- 07_File类判断功能的方法
- 08_File类创建删除功能的方法
- 09_File类遍历(文件夹)目录功能
- 10_递归概念&分类&注意事项
- 11_练习_使用递归计算1-n之间的和
- 12_练习_使用递归计算阶乘
- 13_练习_递归打印多级目录
- 14_综合案例_文件搜索
- 15_FileFilter过滤器的原理和使用
- 16_FileNameFilter过滤器的使用和Lambda优化程序
- 02_IO概述(概念&分类)
- 03_一切皆为字节
- 04_字节输出流_OutputStream类&FileOutputStream类介绍
- 05_字节输出流写入数据到文件
- 06_文件存储的原理和记事本打开文
- 07_字节输出流写多个字节的方法
- 08_字节输出流的续写和换行
- 09_字节输入流_InputStream类&FileInputStream类介绍
- 10_字节输入流读取字节数据
- 11_字节输入流一次读取一个字节的原理
- 12_字节输入流一次读取多个字节
- 13_练习_文件复制
- 14_使用字节流读取中文的问题
- 15_字符输入流_Reader类&FileReader类介绍
- 16_字符输入流读取字符数据
- 17_字符输出流_Writer类&FileWriter类介绍
- 18_字符输出流的基本使用_写出单个字符到文件
- 19_flush方法和close方法的区别
- 20_字符输出流写数据的其他方法
- 21_字符输出流的续写和换行
- 22_使用try_catch_finally处理流中的异常
- 23_JDK7和JDK9流中异常的处理
- 24_使用Properties集合存储数据,遍历取出Properties集合中的数据
- 25_Properties集合中的方法store
- 26_Properties集合中的方法load
- 02_缓冲流的原理
- 03_BufferedOutputStream_字节缓冲输出流
- 04_BufferedInputStream_字节缓冲输入流
- 05_缓冲流的效率测试_复制文件
- 06_BufferedWriter_字符缓冲输出流
- 07_BufferedReader_字符缓冲输入流
- 08_练习_对文本的内容进行排序
- 09_字符编码和字符集
- 10_编码引出的问题_FileReader读取GBK格式的文件
- 11_转换流的原理
- 12_OutputStreamWriter介绍&代码实现
- 13_InputStreamReader介绍&代码实现
- 14_练习_转换文件编码
- 15_序列化和反序列化的概述
- 16_对象的序列化流_ObjectOutputStream
- 17_对象的反序列化流_ObjectInputStream
- 18_transient关键字_瞬态关键字
- 19_InvalidClassException异常_原理和解决方案
- 20_练习_序列化集合
- 21_打印流_概述和使用
- 02_软件结构
- 03_网络通信协议
- 04_网络通信协议分类
- 05_IP地址
- 06_端口号
- 07_TCP通信的概述(上)
- 08_TCP通信的概述(下)
- 09_TCP通信的客户端代码实现
- 10_TCP通信的服务器端代码实现
- 11_综合案例_文件上传的原理
- 12_综合案例_文件上传案例的客户端
- 13_综合案例_文件上传案例的服务器端
- 14_综合案例_文件上传案例阻塞问题
- 15_综合案例_文件上传案例优化(文件命名&循环接收&多线程提高效率)
- 16_模拟BS服务器分析
- 17_模拟BS服务器代码实现
- 02_函数式接口的概念&函数式接口的定义
- 03_函数式接口的使用
- 04_性能浪费的日志案例
- 05_使用Lambda优化日志案例
- 06_函数式接口作为方法的参数案例
- 07_函数式接口作为方法的返回值类型案例
- 08_常用的函数式接口_Supplier接口
- 09_常用的函数式接口_Supplier接口练习_求数组元素最大值
- 10_常用的函数式接口_Consumer接口
- 11_常用的函数式接口_Consumer接口的默认方法andThen
- 12_常用的函数式接口_Consumer接口练习_字符串拼接输出
- 13_常用的函数式接口_Predicate接口
- 14_常用的函数式接口_Predicate接口_默认方法and
- 15_常用的函数式接口_Predicate接口_默认方法or&negate
- 16_常用的函数式接口_Predicate接口练习_集合信息筛选
- 17_常用的函数式接口_Function接口
- 18_常用的函数式接口_Function接口_默认方法andThen
- 19_常用的函数式接口_Function接口练习_自定义函数模型拼接
- 02_使用传统的方式,遍历集合,对集合中的数据进行过滤
- 03_使用Stream流的方式,遍历集合,对集合中的数据进行过滤
- 04_流式思想概述
- 05_两种获取Stream流的方式
- 06_Stream流中的常用方法_forEach
- 07_Stream流中的常用方法_filter
- 08_Stream流的特点_只能使用一次
- 09_Stream流中的常用方法_map
- 10_Stream流中的常用方法_count
- 11_Stream流中的常用方法_limit
- 12_Stream流中的常用方法_skip
- 13_Stream流中的常用方法_concat
- 10_练习:集合元素处理(传统方式)
- 15_练习:集合元素处理(Stream方式)
- 16_方法引用基本介绍
- 17_方法引用_通过对象名引用成员方法
- 18_方法引用_通过类名引用静态成员方法
- 19_方法引用_通过super引用父类的成员方法
- 20_方法引用_通过this引用本类的成员方法
- 21_方法引用_类的构造器(构造方法)引用
- 22_方法引用_数组的构造器引用
- 01_今日内容(1)
- 02_Junit_测试概述
- 03_Junit_使用步骤
- 04_Junit_@Before&@After
- 05_反射_概述
- 06_反射_获取字节码Class对象的三种方式
- 07_反射_Class对象功能概述
- 08_反射_Class对象功能_获取Field
- 09_反射_Class对象功能_获取Constructor
- 10_反射_Class对象功能_获取Method
- 11_反射_案例
- 12_注解_概念
- 13_注解_JDK内置注解
- 14_注解_自定义注解_格式&本质
- 15_注解_自定义注解_属性定义
- 16_注解_自定义注解_元注解
- 17_注解_解析注解
- 18_注解_案例_简单的测试框架
- 1_今日内容(2)
- 2_数据库的基本概念
- 3_常见的数据库软件介绍
- 4_MySQL的安装
- 5_MySQL的卸载
- 6_MySQL服务启动和关闭
- 7_MySQL登录和退出
- 8_MySQL目录结构
- 9_SQL基本概念
- 10_SQL通用语法
- 11_SQL分类
- 12_DDL_操作数据库_创建&查询
- 13_DDL_操作数据库_修改&删除&使用
- 14_DDL_操作表_查询
- 15_DDL_操作表_创建
- 16_DDL_操作表_删除
- 17_DDL_操作表_修改
- 18_图形化界面工具SQLyog
- 19_DML_添加数据
- 20_DML_删除数据
- 21_DML_修改数据
- 01_今日内容(3)
- 02_DQL_排序查询
- 03_DQL_聚合函数
- 04_DQL_分组查询
- 05_DQL_分页查询
- 22_DQL_基础查询
- 23_DQL_条件查询
- 24_DQL_条件查询_模糊查询
- 06_约束_概述
- 07_约束_非空约束
- 08_约束_唯一约束
- 09_约束_主键约束
- 10_约束_主键约束_自动增长
- 11_约束_外键约束
- 12_约束_外键约束_级联操作
- 13_多表关系介绍
- 14_多表关系_一对多关系实现
- 15_多表关系_多对多关系实现
- 16_多表关系_一对一关系实现
- 17_多表关系_案例
- 18_范式概述
- 19_三大范式详解
- 20_数据库的备份和还原
- 1_今日内容(4)
- 2_多表查询_概述
- 3_多表查询_内连接
- 4_多表查询_外连接
- 5_多表查询_子查询概述
- 6_多表查询_子查询情况1&情况2
- 7_多表查询_子查询情况3
- 8_多表查询_练习1
- 9_多表查询_练习2
- 10_多表查询_练习3
- 11_事务_基本演示
- 12_事务_默认自动提交&手动提交
- 13_事务_事务四大特征
- 14_事务_事务隔离级别介绍
- 15_事务_事务隔离级别演示1
- 16_事务_事务隔离级别演示2
- 17_DCL_管理用户_增删查
- 18_DCL_管理用户_修改密码
- 19_DCL_管理权限
- 01_今日内容(5)
- 02_JDBC_概念
- 03_JDBC_快速入门
- 04_JDBC各个类详解_DriverManager_注册驱动
- 05_JDBC各个类详解_DriverManager_获取数据库连接
- 06_JDBC各个类详解_Connection
- 07_JDBC各个类详解_Statement
- 08_JDBC练习_insert语句
- 09_JDBC练习_update语句
- 10_JDBC练习_update、DDL语句
- 11_JDBC各个类详解_ResultSet_基本使用
- 12_JDBC各个类详解_ResultSet_遍历结果集
- 13_JDBC练习_select语句
- 14_JDBC工具类
- 15_JDBC练习_登录案例
- 第7节 JDBC事务管理
- 17_JDBC管理事务_概述
- 18_JDBC管理事务_实现
- 1_今日内容(6)
- 2_数据库连接池_概述
- 3_数据库连接池_实现介绍
- 4_数据库连接池_c3p0_基本使用
- 5_数据库连接池_c3p0_配置演示
- 6_数据库连接池_druid_基本使用
- 7_数据库连接池_druid_工具类
- 8_数据库连接池_druid_工具类测试
- 9_JDBCTemplate_介绍
- 10_JDBCTemplate_快速入门
- 11_JDBCTemplate_执行DML语句
- 12_JDBCTemplate_执行DQL语句
- 1_今日内容(7)
- 2_概念介绍_软件架构
- 3_概念介绍_资源分类
- 4_HTML概念介绍
- 5_HTML快速入门
- 6_HTML标签_文件标签
- 7_HTML标签_文本标签1
- 8_HTML标签_文本标签2
- 9_HTML标签_文本标签_练习
- 10_HTML标签_图片标签
- 11_HTML标签_列表标签
- 12_HTML标签_链接标签
- 13_HTML标签_块标签
- 14_HTML标签_语义化标签
- 15_HTML标签_表格标签1
- 16_HTML标签_表格标签2
- 17_HTML标签_综合案例_分析
- 18_HTML标签_综合案例_实现
- 1_今日内容(8)
- 2_HTML标签_表单标签_概述
- 3_HTML标签_表单标签_表单项input1
- 4_HTML标签_表单标签_表单项input2
- 5_HTML标签_表单标签_表单项select&textarea
- 6_HTML标签_案例1_注册页面
- 7_CSS_概述
- 8_CSS_与html结合方式
- 9_CSS_语法格式
- 10_CSS_选择器_基础选择器
- 12_CSS_选择器_扩展选择器
- 13_CSS_属性1
- 14_CSS_属性2_盒子模型
- 15_CSS_案例-注册页面
- 16_CSS_案例-注册页面2
- 17_CSS_案例-注册页面3
- 1_今日内容(9)
- 2_JavaScript_简介
- 3_JavaScript_发展史
- 4_JavaScript_语法_与html结合方式
- 5_JavaScript_语法_注释&数据类型
- 6_JavaScript_语法_变量
- 7_JavaScript_语法_变量_typeof
- 8_JavaScript_语法_一元运算符
- 9_JavaScript_语法_算数&比较运算符
- 10_JavaScript_语法_逻辑运算符
- 11_JavaScript_语法_三元运算符
- 12_JavaScript_语法_特殊语法
- 13_JavaScript_语法_流程控制语句
- 14_JavaScript_语法_练习_99乘法表
- 15_JavaScript_对象_Function
- 16_JavaScript_对象_Array
- 17_JavaScript_对象_Date
- 18_JavaScript_对象_Math
- 19_JavaScript_对象_RegExp1
- 20_JavaScript_对象_RegExp2
- 21_JavaScript_对象_RegExp3
- 22_JavaScript_对象_Global
- 01_今日内容(10)
- 02_DOM简单学习
- 03_事件简单学习
- 04_案例1_电灯开关
- 05_BOM_概述
- 06_BOM_Window_弹出方法
- 07_BOM_Window_打开关闭方法
- 09_BOM_Window_定时器方法
- 10_案例2_轮播图
- 11_BOM_Window_属性
- 12_BOM_Location
- 13_案例3_自动跳转首页
- 15_DOM_概述
- 17_DOM_Document对象_创建DOM对象
- 19_DOM_Node对象
- 20_案例4_动态表格_添加
- 21_案例4_动态表格_删除
- 22_HTMLDOM_innerHTML
- 23_HTMLDOM_样式控制
- 24_事件_概述
- 25_事件_常见事件演示
- 26_案例5_表格全选
- 27_案例6_表单检验
- 01_今日内容(11)
- 02_Bootstrap_概述
- 03_Bootstrap_快速入门
- 04_Bootstrap_栅格系统_入门
- 05_Bootstrap_栅格系统_注意事项
- 06_Bootstrap_全局CSS样式_按钮&图片
- 07_Bootstrap_全局CSS样式2_表格&表单
- 08_Bootstrap_组件_导航条&分页条
- 09_Bootstrap_插件_轮播图
- 10_案例_黑马旅游网_分析
- 11_案例_黑马旅游网_页眉部分
- 12_案例_黑马旅游网_主体&页脚
- 01_今日内容(12)
- 02_xml_概述
- 03_xml_快速入门
- 04_xml_组成部分
- 05_xml_约束概述
- 06_xml_约束_dtd
- 07_xml_约束_schema
- 08_xml_解析_解析方式
- 09_xml_解析_常见的解析器
- 10_xml_解析_Jsoup_快速入门
- 11_xml_解析_Jsoup_Jsoup对象
- 12_xml_解析_Jsoup_Document对象
- 13_xml_解析_Jsoup_Element对象
- 14_xml_解析_Jsoup_根据选择器查询
- 15_xml_解析_Jsoup_根据Xpath查询
- 01_今日内容(13)
- 02_web相关概念回顾
- 03_web服务器软件_概述
- 04_tomcat_安装&卸载&启动
- 05_tomcat_启动问题分析
- 06_tomcat_关闭
- 07_tomcat_部署项目的方式
- 08_tomcat_动态java项目的目录结构
- 09_tomcat_与IDEA集成&创建web项目
- 10_Servlet_概述
- 11_Servlet_快速入门
- 12_Servlet_执行原理
- 13_Servlet_生命周期方法
- 14_Servlet_生命周期详解
- 15_Servlet_3.0注解配置
- 16_IDEA与tomcat相关配置
- 01_今日内容(14)
- 02_Servlet_体系结构
- 03_Servlet_urlpartten配置
- 04_HTTP_概述
- 05_HTTP_请求消息_请求行
- 06_HTTP_请求消息_请求头&请求体
- 07_Request_原理
- 08_Request_继承体系
- 09_Request_获取请求行数据_方法介绍
- 10_Request_获取请求行数据_代码演示
- 11_Request_获取请求头数据
- 12_Request_获取请求体数据
- 13_Request_获取请求参数通用方式介绍
- 14_Request_获取请求参数通用方式演示
- 15_Request_获取请求参数中文乱码问题处理
- 16_Request_请求转发
- 17_Request_共享数据(域对象)
- 18_Request_获取ServletContext
- 19_登录案例_需求
- 20_登录案例_分析
- 21_登录案例_代码实现1
- 22_登录案例_代码实现2
- 23_登录案例_BeanUtils基本使用
- 24_登录案例_BeanUtils介绍
- 01_今日内容(15)
- 02_HTTP_响应消息_概述
- 03_HTTP_响应消息_响应行_状态码
- 04_HTTP_响应消息_响应头
- 05_Response_功能介绍
- 06_Response_案例1_重定向_代码实现
- 07_Response_案例1_重定向_特点
- 08_Response_案例1_路径_相对路径
- 09_Response_案例1_路径_绝对路径
- 10_Response_案例2_输出字符数据
- 11_Response_案例3_输出字节数据
- 12_Response_案例4_验证码_分析
- 13_Response_案例4_验证码_代码实现
- 14_Response_案例4_验证码_点击切换
- 15_ServletContext_概述
- 16_ServletContext_获取
- 17_ServletContext_功能_获取MIME类型
- 18_ServletContext_功能_域对象
- 19_ServletContext_功能_获取文件服务器路径
- 20_案例_文件下载_分析
- 21_案例_文件下载_代码实现
- 22_案例_文件下载_中文文件名问题
- 01_今日内容(16)
- 02_会话技术_概述
- 03_会话技术_Cookie_快速入门
- 04_会话技术_Cookie_原理分析
- 05_会话技术_Cookie_细节1_发送多个Cookie
- 06_会话技术_Cookie_细节2_Cookie存活时间
- 07_会话技术_Cookie_细节3_Cookie存储中文
- 08_会话技术_Cookie_细节4_Cookie共享
- 09_会话技术_Cookie_特点&作用
- 10_会话技术_Cookie_案例_分析
- 11_会话技术_Cookie_案例_代码实现
- 12_JSP_概念
- 13_JSP_原理
- 14_JSP_脚本
- 15_JSP_入门学习
- 16_JSP_案例_改造Cookie案例
- 17_会话技术_Session_快速入门
- 18_会话技术_Session_原理分析
- 19_会话技术_Session_细节1
- 20_会话技术_Session_细节2
- 21_会话技术_Session_细节3_session销毁
- 22_会话技术_Session_特点
- 23_案例_验证码_需求&分析
- 24_案例_验证码_代码实现
- 25_案例_验证码_细节处理
- 01_今日内容(17)
- 02_JSP_指令_概述
- 03_JSP_指令_page指令
- 04_JSP_指令_include&taglib指令
- 05_JSP_注释
- 06_JSP_内置对象
- 07_MVC_jsp演变历史
- 08_MVC_详解
- 09_EL_概述
- 10_EL_运算符
- 11_EL_获取域中存储的值
- 12_EL_获取域中存储的值_对象值
- 13_EL_获取域中存储的值_List集合&Map集合值
- 14_EL_empty运算符&隐式对象pageContext
- 15_JSTL_概述
- 16_JSTL_常用标签_if
- 17_JSTL_常用标签_choose
- 18_JSTL_常用标签_foreach
- 19_JSTL_练习
- 20_三层架构
- 21_案例_需求分析&设计
- 22_案例_环境搭建
- 23_案例_列表查询_分析
- 24_案例_列表查询_代码实现1
- 25_案例_列表查询_代码实现2
- 01_今日内容(18)
- 02_页面调整
- 03_登录功能_验证码显示
- 04_登录功能_代码实现
- 05_添加功能_分析
- 06_添加功能_实现
- 07_删除功能_分析
- 08_删除功能_代码实现
- 09_修改功能_分析
- 10_修改功能_代码实现1_用户信息回显
- 11_修改功能_代码实现2_用户修改
- 12_删除选中功能_分析
- 13_删除选中功能_代码实现_获取选中条目id
- 14_删除选中功能_代码实现_删除选中服务器代码编写
- 15_删除选中功能_代码实现_删除选中细节处理
- 16_分页查询功能_分析
- 17_分页查询功能_代码实现_分析具体步骤
- 18_分页查询功能_代码实现_后台代码实现
- 19_分页查询功能_代码实现_前台代码实现
- 20_复杂条件查询功能_分析
- 21_复杂条件查询功能_代码实现1_总记录数统计
- 22_复杂条件查询功能_代码实现2_每页数据条件查询
- 1_今日内容(19)
- 2_Filter_概述
- 3_Filter_快速入门
- 4_Filter_细节_web.xml配置方式
- 5_Filter_细节_执行流程&生命周期
- 6_Filter_细节_过滤器拦截路径配置
- 7_Filter_细节_过滤器拦截方式配置
- 8_Filter_细节_过滤器链(多个过滤器)
- 9_Filter_案例1_登录验证_分析
- 10_Filter_案例1_登录验证_代码实现
- 11_Filter_案例2_过滤敏感词汇_分析
- 12_动态代理1_基本实现步骤
- 13_动态代理2_增强方法
- 14_Filter_案例2_过滤敏感词汇_实现
- 15_Listener_概述
- 16_Listener_ServletContextListener使用
- 01_今日内容(20)
- 02_JQuery_概念
- 03_JQuery_快速入门
- 04_JQuery对象和JS对象区别与转换
- 05_JQuery事件绑定&入口函数&样式控制
- 06_JQuery_选择器_基本选择器
- 07_JQuery_选择器_层级选择器
- 08_JQuery_选择器_属性选择器
- 09_JQuery_选择器_过滤选择器
- 10_JQuery_选择器_表单过滤选择器
- 11_JQuery_DOM操作_内容操作
- 12_JQuery_DOM操作_属性操作_通用属性操作
- 13_JQuery_DOM操作_属性操作_class属性操作
- 14_JQuery_DOM操作_属性操作_CRUD操作1
- 15_JQuery_DOM操作_属性操作_CRUD操作2
- 16_JQuery_案例_隔行换色
- 17_JQuery_案例_全选全不选
- 18_JQuery_案例_qq表情选择
- 19_JQuery_案例_下拉列表选中条目左右移动
- 01_今日内容(21)
- 02_JQuery_动画1
- 03_JQuery_动画2
- 04_JQuery_遍历1_for循环
- 05_JQuery_遍历2_each方法
- 06_JQuery_遍历3_全局each&forof
- 07_JQuery_事件绑定1_标准方式
- 08_JQuery_事件绑定2_on&off
- 09_JQuery_事件绑定3_事件切换
- 10_JQuery_案例1_广告显示和隐藏
- 11_JQuery_案例2_抽奖_演示
- 12_JQuery_案例2_抽奖_实现
- 13_JQuery_插件机制
- 01_今日内容(22)
- 02_AJAX_概念
- 03_AJAX_实现_原生JS方式1
- 04_AJAX_实现_原生JS方式2
- 05_AJAX_实现_JQuery实现方式_ajax()
- 06_AJAX_实现_JQuery实现方式_ajax()_其他键值
- 07_AJAX_实现_JQuery实现方式_get&post
- 08_JSON_概念
- 09_JSON_语法_定义
- 10_JSON_语法_值的获取
- 11_JSON_解析器Jackson_java对象转json
- 12_JSON_解析器Jackson_java对象转json_注解
- 13_JSON_解析器Jackson_java对象转json_List&Map
- 14_JSON_解析器Jackson_json转Java对象
- 15_案例_校验用户名是否存在
- 01_今日内容(23)
- 02_redis_概述
- 03_redis_下载&安装
- 04_redis_数据结构介绍
- 05_redis_命令操作_string&hash
- 06_redis_命令操作_list
- 07_redis_命令操作_set&sortedset
- 08_redis_命令操作_通用命令
- 09_redis_持久化_RDB
- 10_redis_持久化_AOF
- 11_Jedis_快速入门
- 12_Jedis_操作string
- 13_Jedis_操作hash
- 14_Jedis_操作list
- 15_Jedis_操作set&sortedset
- 16_Jedis_连接池
- 17_Jedis_连接池工具类
- 18_案例_分析&环境搭建
- 19_案例_实现_查询数据库
- 20_案例_实现_redis缓存优化
- 01maven概述
- 02maven依赖管理的概念
- 03maven一键构建概念
- 04maven的安装
- 05仓库的种类和彼此关系
- 06maven标准目录结构
- 07maven常用命令
- 08maven生命周期
- 09maven概念模型图
- 10idea集成maven插件
- 11使用骨架创建maven的java工程
- 12不使用骨架创建maven的java工程
- 13使用骨架创建maven的web工程
- 14maven工程servlet实例之指定web资源包
- 15maven工程servlet实例之导入项目依赖的jar包
- 16maven工程servlet实例之jar包冲突解决
- 17maven工程运行环境修改
- 18maven的java工程取mysql数据库数据
- 01-项目导入
- 02-项目启动
- 03-技术选型
- 04-创建数据库
- 05-注册功能_功能分析
- 06-注册功能_前台_表单校验1
- 07-注册功能_前台_表单校验2
- 08-注册功能_前台_异步提交表单
- 09-注册功能_后台_Servlet代码实现
- 10-注册功能_后台_Dao代码实现
- 11-注册功能_后台_service代码实现&测试
- 12-注册功能_后台_验证码&前台数据处理
- 13-注册功能_后台_邮件激活分析
- 14-注册功能_邮件激活_发送邮件
- 15-注册功能_邮件激活_点击激活分析
- 16-注册功能_邮件激活_代码实现_Servlet
- 17-注册功能_邮件激活_代码实现_Service&Dao
- 18-登录功能_分析
- 19-登录功能_实现_Servlet
- 20-登录功能_实现_Service&Dao
- 21-登录功能_实现_前台页面
- 22-登录功能_姓名提示
- 23-退出功能
- 24-BaseServlet抽取
- 25-BaseServlet抽取_UserServlet&页面路径改写
- 26-分类数据展示功能_分析
- 27-分类数据展示功能_实现_后台代码
- 28-分类数据展示功能_实现_前台代码
- 29-分类数据展示功能_缓存优化_分析
- 30-分类数据展示功能_缓存优化_代码实现
- 34-旅游线路分页展示_分页数据展示_代码实现_Dao
- 35-旅游线路分页展示_分页数据展示_代码实现_Service
- 36-旅游线路分页展示_分页数据展示_前台代码_页码展示
- 37-旅游线路分页展示_分页数据展示_前台代码_数据展示
- 38-旅游线路分页展示_分页数据展示_前台代码_异步加载数据
- 39-旅游线路分页展示_分页数据展示_前台代码_页码处理
- 40-旅游线路查询_参数传递
- 41-旅游线路查询_后台代码
- 42-旅游线路查询_前台代码
- 43-旅游线路详情_分析
- 44-旅游线路详情_代码实现_后台代码
- 45-旅游线路详情_代码实现_前台代码
- 46-旅游线路收藏_分析
- 47-旅游线路收藏_判断是否收藏_后台代码
- 48-旅游线路收藏_判断是否收藏_前台代码
- 49-旅游线路收藏_收藏次数动态展示
- 50-旅游线路收藏_点击按钮收藏_分析
- 51-旅游线路收藏_点击按钮收藏_后台代码
- 52-旅游线路收藏_点击按钮收藏_前台代码
- 53-旅游线路收藏_点击按钮收藏_前台效果优化
- 54-作业安排
- 01-今日内容
- 02-Linux概述
- 03-虚拟机软件-VMware
- 04-Linux安装
- 05-CRT使用
- 06-Linux目录结构
- 07-Linux命令-文件列表
- 08-Linux命令-目录切换
- 09-Linux命令-目录创建和删除
- 10-Linux命令-文件查看
- 11-Linux命令-文件删除、拷贝
- 12-Linux命令-压缩、解压缩
- 13-Linux命令-查找文件、内容
- 14-Linux命令-其他常见命令
- 15-Linux命令-VIM编辑器
- 16-Linux命令-重定向输出&系统命令
- 17-Linux命令-管道
- 18-Linux权限
- 19-Linux修改ip
- 20-Linux域名映射
- 01--今日内容
- 02-Linux上的软件安装方式
- 03-常见的文件上传下载工具
- 04-Linux安装JDK
- 05-Linux安装MySQL
- 06-Linux安装Tomcat
- 07-Linux安装redis
- 08-Linux部署案例
- 09-Nginx概述
- 10-Nginx在Linux下安装
- 11-Nginx功能1-静态资源部署
- 12-Nginx功能2-虚拟主机-端口绑定
- 13-Nginx功能2-虚拟主机-域名绑定
- 14-Nginx功能3-反向代理介绍
- 15-Nginx功能3-反向代理准备
- 16-Nginx功能3-反向代理配置
- 17-Nginx功能3-负载均衡
课程目标
了解泛型、MySQL、JDBC、流、调试程序,掌握查看Java API源代码的方法。
适用人群
对Java面向对象知识有一定了解的学员。
课程简介
听强哥说Java之Java高级教程
课程目录
01.Java中的泛型
讲解Java中的泛型,编写一个泛型类。泛型技术比较复杂,工作中用的简单,不是讲课的重点。
02.MySQL简介及其下载安装
讲解如何下载安装MySQL。
03.使用WorkBench创建数据库和表
使用MySQL工具WorkBench管理数据库和表。
......
14.字节流转换为字符流并讲解打印流
15.老虎机抽奖特效
1. JVM相关
对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。
不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的。
JVM作为java运行的基础,很难相信对于JVM一点都不了解的人可以把java语言吃得很透。
我在面试有超过3年Java经验的开发者的时候, JVM几乎就是一个必问的问题了。
当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。
在JVM这个大类中,我认为需要掌握的知识有:
JVM内存模型和结构
GC原理,性能调优
调优:Thread Dump, 分析内存结构
class 二进制字节码结构, class loader 体系 , class加载过程 , 实例创建过程
方法执行过程
Java各个大版本更新提供的新特性(需要简单了解)
2. Java的运行
这条可能出看很简单,java程序的运行谁不会呢?
不过很多时候, 我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。
这个知识点是最最基本的java开发者需要掌握的,第一个肯定是教你如何在命令行中执行java程序,但是很多人一旦把java学完了,IDE用上了,就把这个都忘了。
为什么强调要知道这个呢,知道了java最纯粹的启动方式之后,你才能在启动出问题的时候,去分析当时启动的目录多少,执行命名如何,参数如何,是否有缺失等。
这样有利于你真正开发中去解决那些奇奇怪怪的可能和环境相关的问题。
在这里需要掌握的知识有:
javac 编译java文件为 class 文件
java 命令的使用, 带package的java类如何在命令行中启动
java程序涉及到的各个路径(classpath, java。library。path, java运行的主目录等)
3. 数据类型
这条没有什么好多说的,无非就是Java中的基本类型和对象类型的掌握。
可以再了解一些JDK如何自动转换方面的知识,包括装箱拆箱等,还要注意避免装箱之后的类型相等的判断。
主要知识点:
基本类型:int, long, float, double, boolean 。。。
对应的对象类型:Integer 等类型到基本类型的转换, 装箱和拆箱
Object类型:equals, hashcode
String 类型的特点
4. 对象和实例
在这方面,开发者需要了解class和instance的概念以及之间的差别, 这是java面向对象特性的一个基础。
主要知识点有:
Class和 Instance 的概念
Instance 创建的过程:
无继承:分配内存空间, 初始化变量, 调用构造函数
有继承:处理静态动作, 分配内存空间, 变量定义为初始值 , 从基类->子类, 处理定义处的初始化, 执行构造方法
需要注意的点:
静态属性等从基类->子类进行初始化
默认无参构造方法相关的特性
5. 访问控制
这也是java封装特性的一个基础,需要掌握的有:public protected default private 对于class, method, field 的修饰作用。
6. 流程控制
Java 流程控制的基础, 虽然有些语法不一定很常用,但是都需要了解,并且在合适的地方使用它们。
需要掌握的有:if, switch, loop, for, while 等流程控制的语法。
7. 面向对象编程的概念
这是一个java的核心概念,对于任何java开发者都需要熟练掌握。
Java中很多特性或者说知识点都是和java面向对象编程概念相关的。
在我的理解,一个好的开发者不仅仅需要了解这些特性(知识点)本身。
也更需要知道这些对象在java的面向对象编程概念中是如何体现出来的,这样更有利于开发者掌握java这门开发语言,以及其他面向对象编程的语言。
在这里只是简单罗列了一下,主要的知识点包括有:
面向对象三大特性:封装,继承,多态;
各自的定义概念,有哪些特性体现出来,各自的使用场景
静态多分派,动态单分派的概念
重载的概念和使用
继承:接口多实现,基类单继承
抽象,抽象类,接口
多态:方法覆盖的概念和使用
接口回调
8. static
静态属性在java日常开发中也是经常使用,需要了解和 static 关键字相关的用法,还有和其他关键字的配合使用, 如是否可以和 abstract, final 等关键字联合使用。
主要需要掌握的有:
静态属性的定义,使用,以及类加载时如何初始化
静态方法的定义和使用
静态类的定义和使用
静态代码块的定义和初始化时机
9. 基础知识点
这里主要罗列一些散落的,没有系统归类的一些java知识点。
在日常的开发中用到也不少。这块内容其实还有很多,目前只是暂时归纳了这几个在这里:
包括有:
equals
hashcode
tring/stringbuffer
final
finally
finalize
10. 集合框架
这个是一个需要多加掌握的部分,做java开发,可以说没有不用到集合框架的,这很重要,这里整理的Java集合面试题及答案你必须都要清楚。
但是这里的知识点并不难,但是对于集合最好要了解内部的实现方式,因为这样有助于你在各个不同的场景选择适合的框架来解决问题,比如有1W个元素的集合,经常要进行contains判断操作,知道了集合的特性或者内部实现,就很容易做出正确的选择。
这里包括了如下内容(并发相关不包含在内):
集合框架的体系:基础Collection ,Map
具体集合实现的内容, List ,Set ,Map 具体的实现,内部结构, 特殊的方法, 适用场景等
集合相关的工具类 Collections 等的用法
11. 异常框架
异常在java的开发中可能没有那么被重视,异常处理的最佳实战详细说明了。
一般遇到异常,直接上抛,或者随便catch一下处理之后对于程序整体运行也没有什么大的影响。不过在企业级设计开发中, 异常的设计与处理的好坏,往往就关系着这个系统整体的健壮性。
一个好的系统的异常对于开发者来说,处理应该统一,避免各处散落很多异常处理逻辑;对于系统来说,异常应该是可控的,并且是易于运维的,某些异常出现后,应该有应对的方法,知道如何运维处理,所以虽然异常框架很简单,但是对于整个企业级应用开发来说,异常处理是很重要的,处理好异常就需要了解Java中的异常体系。
这部分需要掌握的知识点不多,主要就是:
异常的体系:
Throwable
Exception
RuntimeException
Error
RuntimeException 和 一般 Exception 的区别, 具体处理方法等
12. Java IO
IO 在java中不仅仅是文件读写那么简单,也包括了 socket 网络的读写等等一切的输入输出操作。比如说 标准HTTP请求中Post的内容的读取也是一个输出的过程,等等…
对于IO,Java不仅提供了基本Input、Output相关的api,也提供了一些简化操作的Reader、Writer等api,在某些开发(涉及大量IO操作的项目)中也很重要,一般日常的开发中也会涉及(日志,临时文件的读写等)。
在这中的知识点主要有:
基本IO的体系包括有InputStream , OutputStream, Reader/Writer, 文件读取,各种流读取等,NIO 的概念, 具体使用方式和使用场景。
13. 多线程并发
多线程是Java中普遍认为比较难的一块。
多线程用好了可以有效提高cpu使用率, 提升整体系统效率, 特别是在有大量IO操作阻塞的情况下;这里整理的Java多线程面试题及答案你必须都要清楚。
但是它也是一柄双刃剑, 如果用不好,系统非但提升不大,或者没有提升,而且还会带来多线程之间的调试时等问题。
在多线程中内容有很多,只是简单说明一下Java中初步使用多线程需要掌握的知识点,以后有机会单独再详细介绍一些高级特性的使用场景。在Java技术栈公众号回复"多线程"可获取多线程系列教程。
多线程的实现和启动
callable 与 runable 区别
syncrhoized ,reentrantLock 各自特点和比对
线程池
future 异步方式获取执行结果
concurrent 包
lock
14. 网络
Java中也是提供了可以直接操作 TCP协议、UDP协议的API。
在需要强调网络性能的情况下,可以直接使用TCP/UDP 进行通讯。
在查看Tomcat等的源码中,就可以看到这些相关API的使用情况。
不过一般也比较少会直接使用TCP,会使用诸如MINA、Netty这样的框架来进行处理,因为这个方面的开发涉及不多,所以就不再详细罗列了。
15. 时间日期处理
几乎对于每个应用来说,时间日期的处理也是绕不过去的,但是JDK8 之前的时间相关API用法并不友好。
在那个时代,可以选择Joda等时间框架。到了JDK8 发布之后,全新的时间API基本融合了其他框架的优点,已经可以很好的直接使用了。
对于Java开发者来说,需要熟练地使用API来对时间和日期做相关的处理。
具体知识点不再罗列,会在以后再写个专门的文章来总结一下JDK8中时间日期API的用法。
16. XML解析/JSON解析
其实这两块内容都不是J2SE里面的内容,但是在日常开发中,和其他程序交互,和配置文件交互,越来越离不开这两种格式的解析。
不过对于一个开发者来说,能够了解一些XML/JSON具体解析的原理和方法,有助于你在各个具体的场景中更好的选择合适你的方式来使得你的程序更有效率和更加健壮。
XML:需要了解 DOM解析和 SAX解析的基本原理和各自的适用场景
JSON:需要了解一些常用JSON框架的用法, 如 Jackson, FastJson, Gson 等。
17. Maven使用
Maven也不是Java里面的内容,但是maven是革命性的,给java开发带来了巨大的便利,这30个Maven命令你必须熟悉。
从依赖的引入和管理,开发流程的更新和发布产出,乃至版本的更新,使用maven可以大大简化开发过程中的复杂度,从而节省大量时间。
可以说,maven已经成为java开发者的标配了。所以我把maven也作为一个java开发者对于基础必备的知识点。
在Java技术栈公众号回复"Maven"可获取Maven系列教程,以后会再放上一些我的一些对于maven使用的经验和技巧等,这里就不再细说了。
18. 泛型
这是JDK5开始引入的新概念,其实是个语法糖。
在编写java代码时会有些许便利, 一般的应用或者是业务的开发,只需要简单使用,不一定会用到定义泛型这样的操作。
但是开发一些基础公共组件会使用到,可以在需要的时候再细看这个部分,一般情况下只要会简单使用即可。
19. 注解
也是jdk5 之后引入的,元注解你必须了解。
spring是个优秀的框架,最开始就以xml作为标准的配置文件。
不过到了Spring3 之后,尤其是 spring-boot 兴起之后,越来越推崇使用标注来简化xml配置文件了,对于开发者来说,可以节省不少xml配置的时间。
但是劣势是在于标注散落在各个类中,不像xml,可以对所有配置有个全局性的理解和管理,所以还没有办法说完全就取代所有的xml。
对于一般开发者,会使用标注即可,一些公共组建的开发者可能会需要了解标注的定义和实现,可以在具体需要的时候再细看。
20. RMI
RemoteMethodInvocation ,Java语言特有的远程调用接口,使用还是比较简单方便,点击这里了解RMI与RPC的区别详情。
不过需要跨语言的情况下,就需要使用 webservice 等其他方式来支持。
一般来说,程序都不需要使用RMI,不过可以在特定的情况下使用,我就在一个项目中,使用RMI来进行程序远程启动停止的控制。