本文章,列出了一些程序员需要学习的技术和知识点,有些技术和知识点没有写道,欢迎大家进行修改和补充,有些技术公司用到,大家需要先学习,有些技术和知识点过时,大家可以了解。
本人笔记连接[[http://2863c718.wiz03.com/wapp/pages/view/share/s/0EoYso1Xqk4m2eAV4Y385xVk2vODbZ2BZ46Z2ChvzO2jhAyq|学习体系]]。
======一.前端======
=====1.前端基础=====
====1.1.html4====
=== HTML介绍===
=== HTML作用 ===
=== 常见标签 ===
(1)图片标签
(2)表单标签
(3)表格标签
(4)头标签
(5)框架集
(6)其他常见标签
====1.2.css2====
CSS概述
CSS和HTML结合的方式
CSS选择器
CSS扩展选择器
CSS盒子模型
CSS布局漂浮属性
CSS布局定位属性
==== 1.3.JavaScript基础 ====
===1.3.1.JS概述===
(1)JS与Java不同
(2)JS的历史
(3)JS语言组成
(4)JS与HTML结合方式
=== 1.3.2.JS基础 ===
(1)JS基本语法
(2)JS的数据类型
(3)JS基本语句
(4)JS运算符
(5)JS数组
(6)JS函数的定义
(7)JS中函数的重载
(8)JS中的全局变量和局部变量
=== 1.3.3.JS中常见对象 ===
String对象
Array对象
Date对象
Math对象
=== 1.3.4.JavaScript 全局函数(global) ===
=== 1.3.5.BOM对象 ===
什么是BOM
==1.3.5.1.浏览器对象的使用==
1.3.5.1.1.History
History简介
(1)back()方法
(2)forward()方法
(3)go()方法
(4)制作返回按钮
1.3.5.1.2.Location
Location对象简介
通过href属性完成超链接效果
超链接按钮效果
1.3.5.1.3.Window对象
Window对象简介
(1)方法
① confirm()
② prompt()
③ open()
④ close()
⑤ setInterval()
⑥ setTimeout()
⑦ clearInterval()
⑧ alert()
=== 1.3.6.DOM简单入门 ===
== 1.3.6.1.1.DOM简介 ==
DOM结构模型
DOM的三个级别和DHTML介绍
BOM和HTML DOM关系
== 1.3.6.2.Document对象 ==
Element对象
Node常用属性
节点名称、值和类型
父节点、子节点和兄弟节点
Node常用方法
检测子节点和属性
是否存在某节点
是否存在属性
操作DOM节点树
(1)插入节点
①appendChild方法
②insertBefore方法
(2)删除节点
(3)替换节点
(4)复制节点
(5)移动节点
innerHTML
JS常用事件
(1)鼠标移动事件
(2)鼠标点击事件
(3)加载与卸载事件
(4)聚焦与离焦时间键盘事件
(5)提交与重置事件
(6)选择与改变事件
省市县三级联动树形菜单制作
==== 1.4.Jquery ====
===1.4.1.jQuery简介===
什么是jQuery
jQuery的特点
=== 1.4.2.jQuery选择器 ===
基本选择器
层次选择器
过滤选择器
内容过滤选择器
表单域选择器
=== 1.4.3.jQuery属性操作 ===
=== 1.4.4.jQuery快捷操作 ===
class属性值操作
标签包含内容操作
css样式操作
value属性快捷操作
(1)复选框操作
(2)下拉列表操作
(3)单选按钮操作
=== 1.4.5.jQuery和DOM对象关系 ===
=== 1.4.6.jQuery框架对象分析 ===
=== 1.4.7.jQuery加载事件 ===
=== 1.4.8.jQuery普通事件操作 ===
=== 1.4.9.jQuery对文档的操作 ===
=== 1.4.10.jQuery属性选择器的使 ===
=== 1.4.11.jQuery事件绑定 ===
=== 1.4.12.jQuery动画效果小案例 ===
=====2.前端中级=====
====2.1.js进阶====
====2.2.php与数据库====
====2.3.Ajax====
====2.4.HTML5+CSS3====
=====3.前端高级=====
==== 3.1.layui ====
==== 3.2.Bootstrap ====
==== 3.3.移动端 ====
==== 3.4.Canvas画布 ====
==== 3.5.NodeJS ====
==== 3.6.AngularJS ====
==== 3.7.ES6-Babel-Webpack-Less ====
==== 3.8.Vue ====
==== 3.9.AngularJSX ====
==== 3.10.Webpack ====
==== 3.11.WebAPP-Cordova ====
==== 3.12.WebAPP-Ionic ====
==== 3.13.ES6 ====
==== 3.14.Git微信小程序 ====
==== 3.15.Gulp ====
==== 3.16.Node ====
==== 3.17.React ====
======二.后端======
=====1.Java基础=====
==== 1.1.Java编码规范 ====
源码存储规范
命名规则
书写格式
代码注释
==== 1.2.JAVA开发环境 ====
安装JDK1.7 ,开发环境目录要求
设置环境变量
==== 1.3.软件开发基础 ====
计算机基础
操作系统,文件,目录,可执行程序,常用快捷键
常用的Shell命令
常用开发语言 了解
==== 1.4.第一个JAVA程序HelloWord ====
在记事本编写程序
在Shell命令窗口编译、执行
讲解程序的编译执行过程
关键字、标识符
什么是标识符
(1)标识符的命名规范
(2)JAVA关键字
==== 1.5.数据类型 ====
数据类型简介
JAVA中的数据类型
基本数据类型
引用数据类型
基本数据类型有哪些
数据类型的取值范围
数据类型的转换
自动类型转换
强制类型转换
==== 1.6.数组 ====
数组的说明
(1)为什么用数组
(2)一维数组的声明与创建
(3)Java内存分析,堆和栈(局部变量存储)
数组的初始化
(1)静态初始化
(2)动态初始化
数组的访问
(1)通过下标访问指定元素
(2)循环访问
数组的排序
(1)冒泡排序
(2)选择排序
数组的查找
(1)顺序查找
(2)二分法查找
Arrays工具类
二维数组
(1)二维数组的声明
(2)二维数组的创建
二维数组的初始化
(1)静态初始化
(2)动态初始化
二维数组的访问
(1)通过下标访问指定元素
(2)通过循环访问数组
==== 1.7.流程控制 ====
什么是JAVA语句的执行结构
(1)JAVA语句有哪些结构
(2)顺序语句
(3)分支语句
(4)循环语句
If语句
(1)简单if语句
(2)复杂if语句
(3)if-else语句
(4)多重if语句
(5)嵌套if语句
switch语句
(1)switch语句用法
(2)switch使用String分支
(3)switch语句与if语句的区别
枚举的简单使用
(1)枚举的定义
(2)枚举的使用(结合switch的使用)
循环语句
(1)什么是循环
(2)Java中的循环语句
for循环语句
while循环
(1)while循环语句
(2)do-while循环语句
特殊流程控制语句
(1)break语句的使用
(2)continue语句的使用
(3)label 的简述
比较while和do-while的区别
==== 1.8.类.变量,方法,对象 ====
类的定义
什么是变量
变量的声明和初始化
变量的分类
变量的作用域
对象的定义
对象的创建以及内存分析
构造方法的定义
(1)构造方法的定义
(2)构造方法的使用
(3)构造方法重载
(4)构造方法与普通方法的区别
this关键字
(1)this.属性:访问本类的成员属性(成员变量与局部变量同名的情况,成员变量无效)
(2)this.方法:访问本类的成员方法
(3)this():访问本类中的构造函数
static关键字
(1)静态属性
(2)静态方法
(3)静态代码块
static的应用
(1)工具类(操作数组常用方法为例,写一个工具类)
(2)工具类的概念
类中成员变量的定义
常量、进制转换
(1)什么是常量
(2)二进制转换十进制
运算符
(1)常用运算符
(2)算术运算符
(3)赋值运算符
(4)关系运算符
(5)逻辑运算符
(6)三目运算符
(7)字符串连接运算符
(8)位运算符
(9)移位运算符
表达式的值和类型
转义字符
运算符优先级
什么是方法
(1)方法(函数)
(2)方法中的参数
① 形参
② 实参
(3)方法的返回值
方法的声明和调用
(1)声明方法的格式
(2)调用方法的格式
可变参数
(1)可变参数的写法
(2)可变参数的使用
类中方法的定义
方法的重载
内部类
(1)成员内部类
(2)静态内部类
(3)匿名内部类
(4)局部内部类
==== 1.9.面向对象 ====
1.9.1.什么是面向对象
1.9.2.面向对象的设计思想
1.9.3.面向对象和面向过程的区别
(1)面向对象
(2)面向过程
(3)区别总结
1.9.4.抽象类和抽象方法
(1)抽象类出现的原因
(2)抽象类的特点
1.9.5.封装
(1)private 的使用
(2)get/set
(3)方法的说明(讲this之前,参数与成员变量名称要不同)
1.9.6.继承
继承的概念
类的继承的使用
super关键字
继承中的构造方法
访问权限
(1)private
(2)default(默认)
(3)protected
(4)public
方法重写
(1)方法重写的规则
(2)Object 类
① equals()方法
② hashCode()方法
③ getClass()方法
④ toString()方法
final关键字
(1)final修饰的类
(2)final修饰的方法
(3)final修饰的属性
(4)final与static的区别
1.9.7.多态
什么是多态
多态的体现
对象的多态性
多态的表现形式
接口
(1)接口的概念
(2)接口的使用
① 接口的声明语法
② 接口的实现类
③ 接口的使用规则
④ 接口的使用用途
⑤ 接口与抽象类的区别
对象转型
(1)对象的向上转型
(2)instanceof 关键字
(3)对象的向下转型
==== 1.10.正则表达式 ====
(1)String 正则
(2)Pattern Matcher
(3)正则元字符
(4)正则表达式
==== 1.11.常用类 ====
1.11.1.字符串
(1)String类
(2)StringBuffer类
(3)StringBuilder类
(4)String.format() 格式化
1.11.2.基本数据类型的包装类
基本数据类型与其包装类
数据的装箱和拆箱
String 与 基本数据类型的互换
1.11.3.Date类
1.11.4.Calendar类
1.11.5.SimpleDateFormat类
1.11.6.Math类
1.11.7.Random类
1.11.8.Runtime类
1.11.9.System类
==== 1.12.异常 ====
异常的概念
异常的分类
异常的处理方式
(1)捕获异常:try..catch..finally语句
(2)抛出异常:throws和throw
自定义异常
==== 1.13.泛型的使用 ====
泛型应用在集合上
泛型类声明,方法返回泛型,方法参数泛型
泛型限定
==== 1.14.反射 ====
类的加载 Class.forName()
创建对象的两种方式(newInstance与带参数构造器)
成员变量的访问Field类和getDeclaredField方法
方法的访问与调用 Method
构造方法
==== 1.15.注解 ====
==== 1.16.集合 ====
1.16.1.集合框架介绍
(1)集合的概念
(2)集合的框架结构介绍
(3)集合与数组的对比
1.16.2.Collection接口
(1)集合对象的创建
(2)Collection中常用的方法
1.16.3.List接口
(1)List接口的存储特点
(2)List接口的实现类
① ArrayList实现类的使用
② LinkedList实现类的使用
③ ArrayList与LinkedList存储的比较
1.16.4.增强for循环
1.16.5.Iterator迭代器
(1)迭代器的工作原理
(2)迭代器的使用
1.16.6.集合工具
(1)Collections 工具类
(2)Comparable
(3)Comparator
1.16.7.Set接口
(1)集合的存储特点
(2)HashSet的实现原理
① 重写hashCode()
② 重写equals()
(3)LinkedHashSet(添加)
1.16.8.Map接口
(1)Map接口的概述
(2)Map接口的常用方法
(3)Map接口的常用实现类
(4)HashMap
(5)Hashtable 和 HashMap的区别
(6)LinkedHashMap
(7)Map的遍历:各种遍历方式 Map.Entry
==== 1.17.IO流 ====
1.17.1.File类
File类作用
File类的构造方法
File类常用方法
使用File类对文件进行操作
使用File类浏览目录中的文件和子目录
递归算法遍历目录下所有文件与子目录
1.17.2.IO概念
什么是IO流?
流的作用和原理?
1.17.3.IO流的种类
按方向分:输入流、输出流
按数据单位分:字符流、字节流
按层次分:节点流、处理流
1.17.4.字节输入流
InputStream类的常用方法
InputStream类的子类:文件输入流FileInputStream
FileInputStream构造方法和常用方法
1.17.5.字节输出流
OutputStream类的常用方法
OutputStream类的子类:文件输出类FileOutputStream
FileOutputStream构造方法和常用方法
1.17.6.字节缓冲流
字节缓冲流的构造方法
使用字节缓冲流对文件进行读写
装饰设计模式
1.17.7.字符输入流
Reader类的常用方法
Reader类的子类:FileReader
FileReader构造方法和常用方法
1.17.8.字符缓冲流
字符缓冲流构造方法
字符缓冲流的常用方法:readLine(), newLine()
字符缓冲流对文件进行读写
1.17.9.字符输出流
Writer类的常用方法
Writer类的子类:FileWriter
FileWriter构造方法和常用方法
1.17.10.转换流
InputStreamReader的构造方法
InputStreamReader的使用
OutputStreamWriter的构造方法
OutputStreamWriter的使用
1.17.11.打印流
打印流构造方法
打印流的常用操作:print(), println()
1.17.12.标准输入输出流
(1)使用System.in获取键盘数据
(2)使用System.out输出数据
1.17.13.内存流(重点掌握)
什么是内存流
内存流的构造方法
写入到内存和读取内存数据
常用方法:toByteArray(), toString()
1.17.14.数据输入输出流
DataOutputStream 使用
DataInputStream 使用
1.17.15.对象流
对象序列化
序列化的常用属性
(1)static的属性不能序列化
(2)transient的属性不能序列化
(3)serialVersionUID=1L
对象输入流ObjectInputStream
对象输出流ObjectOutputStream
1.17.16.随机流RandomAccessFile类
RandomAccessFile类的构造方法
RandomAccessFile常用操作:skipBytes() seek()
常用方法: getFilePointer() writerUTF() readUTF()
向文件中随机写入键盘文字
==== 1.18.线程 ====
1.18.1.线程和进程的介绍
进程的概念
线程的概念
进程和线程的关系以及区别
1.18.2.线程的实现实现
Runnable接口
两种实现方式的比较
1.18.3.线程的启动
调用start()方法启动线程
调用start()与调用run()的区别
1.18.4.线程的生命周期和常用方法
线程的优先级
线程的名称
线程的睡眠
线程的中断
线程的停止
1.18.5.多线程访问临界资源时的数据安全问题
synchronized关键字
同步代码块
同步方法
同步静态方法
锁对象
死锁
1.18.6.生产者消费者
1.18.7.线程池
单线程池
固定线程池
缓冲线程池
==== 1.19.网络编程 ====
1.19.1.网络通信协议介绍
TCP/IP协议
IP地址和端口号
基于TCP的网络编程
Socket和ServerSocket
UDP编程(视频)
1.19.2.URL类的使用
什么是URL类
URL的构造方法
URL类的常用方法
1.19.3.HttpURLConnection类简介(重点)
简单介绍HttpURLConnection类
HttpURLConnection的常用方法
1.19.4.HttpURLConnection类的应用
HttpURLConnection请求服务器,获取响应的文本
HttpURLConnection下载文件
1.19.5.OkHttp 简单使用
同步GET、POST请求
1.19.6.接口回调
接口回调结合多线程的应用
异步请求,利用内部类,实现接口回调
==== 1.20.Xml ====
1.20.1.XML简介
什么是XML
XML语法结构
XML元素定义
XML属性使用
自定义XML文件
XML解析的三种方式说明:SAX, PULL, DOM
1.20.2.PULL解析
PULL解析原理
PULL解析XML文件
网络XML文件解析
1.20.3.SAX解析
SAX解析的原理
SAX解析常用类介绍
SAX解析XML文件步骤
网络XML文件解析
PULL解析与SAX解析的区别
==== 1.21.Json ====
1.21.1.JSON解析简介
什么是JSON
JSON与XML之间的比较
JSON解析在网络中的应用
1.21.2.JSON的数据表示
键值对的对象表示
数组的表示
1.21.3.JSON解析
一个对象的JSON解析
多个对象的解析
复杂对象的解析
将集合转成JSON字符串
官方JSON解析
Gson解析
==== 1.22.设计模式 ====
单例设计模式
简单工厂设计模式
装饰者模式
代理模式
观察者模式
======三.Web基础======
====1.数据库====
1.1.需要学习了解的数据库
Mysql
公司使用,主要学习,MySQL 在 2008 年被Sun收购需要学习其他数据库语言作为可替代方案
oracle
Sqlserver
微软的只能在Windows平台使用,工作中基本不用,只需了解
MariaDB
PostgreSQL
MangoDB
NoSQL
1.2.Mysql
数据库简介
mysql安装和概述
mysql基本命令
mysqlDDL操作
mysqlDML操作
mysqlDQL操作
mysql模糊查询
mysql分组查询
分页
数据库约束
多表查询
查询练习
MySQL数据库的备份与恢复
1.3.JDBC
Java操作数据库
获取数据库连接
使用Statement执行更新操作
使用ResultSet执行查询操作
以面向对象思想编写JDBC
使用PreparedStatement
利用反射及JDBC元数据编写通用的查询方法
DAO设计模式
JDBC元数据JDBC获取插入记录的主键值
JDBC处理Blob
事务介绍
JDBC处理事务
批量处理
数据库连接池
(1)TOMCAT中的数据库连接池
(2)C3P0
(3)DBCP
(4)Druid
使用DBUtils
1.4.oracle
数据库简介
Oracle服务端和客户端安装
Oracle基本命令
Oracle中的用户管理
Oracle中表的管理
Oracle查询操作
Oracle中的函数表的逻辑备份与恢复
数据库约束
Oracle索引、权限
分页
====2.Tomcat====
Tomcat简介
Tomcat安装
Tomcat安装目录介绍
====3.Servlet====
3.1.Servlet概述
什么是Servlet
实现Servlet的方式
创建HelloWorld应用
3.2.Servlet接口
3.2.1.Servlet生命周期
Servlet出生
Servlet服务
Servlet的离去
3.2.2.Servlet接口相关类型
ServletRequest和ServletResponse
ServletConfig
3.2.3.GenericServlet
GenericServlet概述
GenericServlet的init()方法
实现了ServletConfig接口
3.2.4.HttpServlet
3.2.4.1.概述
3.2.4.2.HttpServlet覆盖了service()方法
3.2.4.3.<url-pattern>
(1)/XXX
(2)*.XXX
3.2.4.4.doGet()和doPost()
3.2.4.5.Response
response概述
response响应正文
(1)字符响应流
设置响应头
信息设置状态码及其他方法
重定向
(1)什么是重定向
(2)完成重定向
(3)便捷的重定向方式
(4)重定向小结
Request
(1)request概述
(2)request域方法
(3)request获取请求头数据
(4)request获取请求相关的其它方法
(5)request获取请求参数
(6)请求转发和请求包含
① 请求转发
② 请求包含
③ 请求转发与请求包含比较
④ 请求转发与重定向比较
3.3.Servlet细节
Servlet与线程安全
让服务器在启动时就创建Servlet
服务端跳转与客户端跳转
web.xml文件的继承(了解)
3.4.ServletContext
ServletContext概述
获取ServletContext
域对象的功能
获取应用初始化参数
获取资源相关方法
(1)获取真实路
(2)径获取资源流
(3)获取指定目录下所有资源路径
访问量统计
====4.编码====
4.1.请求编码
(1)直接在地址栏中给出中文
(2)在页面中发出请求
(3)GET请求解读编码
(4)POST请求解读编码
4.2.响应编码
4.3.URL编码
====5.路径问题====
与路径相关的操作
客户端路径
服务端路径
<url-pattern>
ServletContext获取资源
Class获取资源
ClassLoader获取资源
====6.注解配置Servlet====
====7.JSP====
7.1.JSP概述
什么是JSP
JSP的组成
7.2.JSP语法
JSP脚本
多个<%...%>可以通用
7.3.JSP原理
JSP是特殊的Servlet
JSP真身存放目录
7.4.再论JSP脚本
7.5.JSP注释
7.6.三个基本的脚本元素
7.7.JSP指令
7.8.JSP动作
7.9.JSP EL表达式
7.10.JSP标签库
JSTL
fmt标签库常用标签
7.11.绝对路径和相对路径
7.12.静态包含和动态包含
7.13.页面中的几个路径
7.14.验证码案例
验证码的作用
VerifyCode类
在页面中显示动态图片
在注册页面中使用验证码
RegisterServlet
总结验证码案例
7.15.MVC设计模式
7.16.JavaWeb与MVC
JSP Model1第一代
JSP Model1第二代
JSP Model2
7.17.JavaWeb经典三层框架
7.18.Filter
7.18.1.过滤器概述
Filter简介
过滤器之HelloWorld
7.18.2.过滤器详细
过滤器的生命周期
FilterConfig
FilterChain
多个过滤器执行顺序
四种拦截方式
过滤器的应用场景
设置目标资源
Filter小结
7.18.3.过滤器应用案例
分ip统计网站访问次数
粗粒度权限控制
禁用资源
解决全站字符乱码
页面静态化
7.19.JavaWeb监听器
JavaWeb监听器概述
创建与销毁监听器
操作域属性的监听器
HttpSession的监听器
7.20.国际化
什么是国际化
理解国际化
Locale类
ResourceBundle类
页面国际化
NumberFormat
DateFormat
MessageFormat
7.21.Ajax
7.21.1.js原生的ajax
7.21.2.jQuery封装的ajax
AJAX概述
(1)什么是AJAX
(2)同步交互与异步交互
(3)AJAX常见应用情景
(4)AJAX优缺点
AJAX技术
(1)AJAX第一例
(2)AJAX发送POST请求
(3)AJAX判断用户名是否已注册
(4)AJAX实现省市二级联动
7.22.文件上传和下载
文件上传
(1)文件上传的作用
(2)文件上传对页面的要求
(3)比对文件上传表单和普通文本表单的区别
(4)文件上传对Servlet的要求
commons-fileupload
(1)fileupload概述
(2)fileupload简单应用
(3)简单上传示例
文件上传细节
(1)把上传的文件放到WEB-INF目录下
(2)文件名称(完整路径、文件名称)
(3)中文乱码问题
(4)上传文件同名问题
(5)一个目录不能存放过多文件
(6)上传的单个文件的大小限制
(7)上传文件的总大小限制
(8)缓存大小与临时目录
文件下载
(1)通过Servlet下载1
(2)通过Servlet下载2
(3)通过Servlet下载3
7.23.会话
7.23.1.会话跟踪技术
什么是会话跟踪技术
会话跟踪技术使用Cookie或Session完成
7.23.2.Cookie
Cookie概述
(1)什么是Cookie
(2)Cookie规范
(3)Cookie与HTTP头
(4)Cookie的覆盖
(5)Cookie的第一例
Cookie的生命周期
(1)什么是Cookie的生命周期
(2)浏览器查看Cookie
(3)案例:显示上次访问时间
Cookie的Path
(1)什么是Cookie的路径
(2)Cookie路径与请求路径的关系
(3)设置Cookie的路径
Cookie的domain
Cookie中保存中文
显示曾经浏览过的商品
7.23.3.HttpSession
HttpSession概述
登录案例
Session实现原理
Session与浏览器
Session其他常用API
URL重写
======四.Web高级======
=====1.经典框架=====
==== 1.1.Maven ====
maven的介绍
maven的安装配置
创建maven工程之maven命令
maven核心概念之坐标
maven核心概念之依赖管理
maven核心概念之生命周期
maven核心概念之插件
maven核心概念之继承
maven核心概念之聚合
==== 1.2.MyBatis ====
1.2.1.单独使用JDBC编程问题总结
JDBC程序
JDBC编程步骤
JDBC问题总结如下
1.2.2.MyBatis介绍
1.2.3.MyBatis架构
1.2.4.MyBatis下载
1.2.5.创建数据库
1.2.6.MyBatis入门程序
(1)需求
(2)第一步:创建Java工程
(3)第二步:加入jar包
(4)第三步:log4j.properties
(5)第四步:SqlMapConfig.xml
(6)第五步:POJO类
(7)第六步:程序编写
① 查询
② 添加
③ 删除
④ 修改
(8)MyBatis解决JDBC编程的问题
1.2.7.Dao开发方法
需求
SqlSession的使用范围
(1)SqlSessionFactoryBuilder
(2)SqlSessionFactory
(3)SqlSession
原始Dao开发方式
① 映射文件
② Dao接口
③ 问题
Mapper动态代理方式
① 实现原理
② Mapper.xml
③ Mapper.java
④ 加载UserMapper.xml文件
⑤ 测试
⑥ 总结
1.2.8.SqlMapConfig.xml文件
配置内容
properties属性
settings配置
typeAliases
① mybatis支持别名
② 自定义别名
typeHandler
Mappers
① <mapper resource=""/>
② <mapper url=""/>
③ <mapper class=""/>
④ <package name=""/>
1.2.9.Mapper.xml映射文件
1.2.9.1.parameterType
#{}与${}
传递简单类型
传递POJO对象
传递POJO包装对象
① 定义包装对象
② mapper.xml映射文件
传递HashMap
1.2.9.2.resultType
输出简单类型
输出POJO对象
输出POJO列表
resultType总结
输出HashMap
1.2.9.3.resultMap
Mapper.xml定义
定义result
MapMapper接口定义
1.2.9.4.动态SQL
If
Where
Foreach
① 通过POJO传递List
② 传递单个List
③ 传递单个数组(数组中是POJO)
④ 传递单个数组(数组中是字符串类型)
sql片段
1.2.10.关联查询
商品订单数据模型
一对一查询
① 方法一
② 方法二
一对多查询
③ Sql语句
④ 定义POJO类
⑤ Mapper.xml
⑥ 定义resultMap
1)resultMap使用继承
⑦ Mapper接口
⑧ 测试
⑨ 小结
多对多查询
① 查询用户购买的商品信息
② 小结
resultMap小结
延迟加载
(1)开启延迟加载
(2)一对一查询延迟加载
① 需求
② Sql语句
③ 定义POJO类
④ Mapper.xml
⑤ 定义resultMap
⑥ Mapper接口
⑦ 测试
⑧ 延迟加载优缺点分析
一对多查询延迟加载
延迟加载小结
1.2.11.查询缓存
1.2.11.1.MyBatis缓存介绍
1.2.11.2.一级缓存
原理
测试
1.2.11.3.二级缓存
原理
开启二级缓存
实现序列化
测试
禁用二级缓存
刷新缓存
MyBatis Cache参数
MyBatis整合ehcache
(1)原理
(2)整合步骤
① 引入缓存的依赖包
② 引入缓存的配置文件
③ 开启ehcache缓存
应用场景
局限性
==== 1.3.Spring ====
1.3.1.初识Spring
1.3.1.1.简化Java开发
什么是最小侵入式
依赖注入
应用切面
使用模板消除样板式代码
1.3.1.2.Spring主要模块
1.3.2.Bean的注入
1.3.2.1.XMl配置
普通构造方法创建
静态工厂创建
实例工厂创建
属性注入方式
① 构造方法注入
② set方法注入
③ p名称空间注入
④ 对象的注入
⑤ 数组注入
⑥ List集合注入
⑦ Map注入
⑧ Properties注入
1.3.2.2.Java配置
1.3.2.3.自动配置
通过Java代码实现
通过XML配置文件实现
1.3.2.4.混合配置
1.3.2.5.Profile
Java配置
XML配置
1.3.2.6.条件注解
1.3.2.7.Bean的作用域
1.3.2.8.其他问题
1.3.3.AOP
1.3.3.1.AOP简介
1.3.3.2.AOP几个关键概念
1.3.3.3.AOP原理
1.3.3.4.AOP实现
1.3.3.4.1.通过Java代码实现
使用注解拦截
(1)前置、后置通知
(2)返回通知
(3)环绕通知
(4)异常通知
按照方法规则拦截
(1)前置、后置通知
(2)返回通知
(3)环绕通知
(4)异常通知
1.3.3.4.2.通过XML配置实现
使用注解拦截
按照方法规则拦截
(1)前置通知
(2)返回通知
(3)环绕通知
(4)异常通知
(5)后置通知
1.3.3.5.JdbcTemplate
增删改查
配合数据库连接池
1.3.3.6.Spring事务管理
回忆事务
XML配置实现
Java配置实现
1.3.3.7.Spring高级应用
1.3.3.8.服务端校验
普通校验
分组校验
校验注解
1.3.3.9.数据回显
默认方式
Model方式
@ModelAttribute
(1)解决数据回显问题
(2)方法返回值暴露为模型数据
异常处理
文件上传
JSON数据交互
(1)@RequestBody
(2)@ResponseBody
RESTful支持
(1)RESTful简介
(2)SpringMVC对RESTful的支持
静态资源访问
拦截器
==== 1.4.SpringMVC ====
1.4.1.简介
SpringMVC工作流程
SpringMVC相关组件
HelloWorld
1.4.2.组件介绍
1.4.2.1.DispatcherServlet
1.4.2.2.Controller
1.4.2.2.1.@RequestMapping
(1)URL路径映射
(2)窄化请求映射
(3)请求方法限定
1.4.2.2.2.Controller方法返回值
返回ModelAndView
返回void
(1)使用request转向页面
(2)通过response页面重定向
(3)通过response指定响应结果
返回字符串
(1)逻辑视图名
(2)Redirect重定向
(3)forward转发
1.4.2.2.3.参数绑定
默认支持的参数类型
简单数据类型
(1)简单类型
(2)@RequestParam
POJO
(1)简单pojo
(2)包装pojo
自定义参数绑定
集合类
(1)字符串数组
(2)Lis
(3)tMap
1.4.2.2.4.问题总结
404
Post时中文乱码
1.4.2.3.其他组件
=== 1.5.Freemarker ===
1.5.1.Freemarker介绍
Freemarker简介
使用引入
1.5.2.ftl基本语法
if else语句
list循环语句
输出展示
=== 1.6.SpringMVC+Freemarker案例 ===
=== 1.7.SpringMVC+AJAX实现动态树形菜单 ===
=== 1.8.MyBatis整合Spring ===
1.8.1.MyBatis与Spring整合jar
1.8.2.MyBatis配置文件
1.8.3.Spring配置文件
1.8.4.Mapper编写的三种方式
Dao接口实现类继承SqlSessionDaoSupport
使用org.mybatis.spring.mapper.MapperFactoryBean
使用Mapper扫描器
=== 1.9.MyBatis逆向工程 ===
使用方式
Mapper文件内容不覆盖而是追加
Table schema问题
=== 1.10.Struts2 ===
1.10.1.Struts2概述
1.10.2.Struts2框架入门
1.10.3.Struts2执行过程
1.10.4.Struts2核心配置文件
标签package
标签action
标签result
1.10.5.Struts2常量配置
1.10.6.分模块开发
1.10.7.Action编写方式
1.10.8.访问Action的方法
使用action标签method属性
使用通配符实现
1.10.9.结果页面配置
全局结果页面
局部结果页面
Result标签的type属性
1.10.10.Action获取表单提交数据
使用ActionContext类获取
使用ServletActionContext类获取
在Action操作域对象
1.10.11.Struts2封装获取表单数据方式
属性封装
模型驱动封装
封装到集合中
(1)封装数据到List集合中
(2)封装数据到Map集合中
Struts2拦截器概述
拦截器底层原理
重要概念
自定义拦截器
自定义登录拦截器
Struts2的标签库
Struts2总结
=== 1.11.Hibernate ===
1.11.1.Hibernate概述
什么是框架
什么是hibernate框架
什么是ORM思想
1.11.2.Hibernate入门
搭建Hibernate环境
实现添加操作
1.11.3.Hibernate配置文件详解
Hibernate映射配置文件
Hibernate核心配置文件
1.11.4.Hibernate核心API
Configuration
SessionFactory
Session
Transaction
1.11.5.Hibernate主键生成策略
1.11.6.实体类操作
添加
根据id查询
修改操作
删除操作
1.11.7.Hibernate的一级缓存
什么是缓存
Hibernate缓存
验证缓存
Hibernate一级缓存执行过程
Hibernate一级缓存特性
1.11.8.Hibernate事务操作
事务相关概念
Hibernate事务代码规范写法
Hibernate绑定session
1.11.9.Hibernate的API的使用
Query对象
Criteria对象
SQLQuery对象
1.11.10.Hibernate一对多操作
一对多映射配置
一对多级联操作
一对多级联保存
一对多级联删除
一对多修改操作
1.11.11.Hibernate查询
对象导航查询
OID查询
HQL查询
QBC查询
=== 1.12.Spring Boot ===
1.12.1.Spring Boot概述
什么是Spring Boot
Spring Boot的核心功能
Spring Boot的优缺点
1.12.2.Spring Boot快速搭建
1.12.3.Spring Boot核心
1.12.3.1.基本配置
(1)入口类和@SpringBootApplication
(2)关闭特定的自动配置
(3)定制Banner
(4)Spring Boot的配置文件
(5)Starter pom
(6)使用xml配置
1.12.3.2.外部配置
命令行参数配置
常规属性配置
类型安全配置
1.12.3.3.日志配置
1.12.3.4.Profile配置
1.12.4.Spring Boot运行原理
运作原理
核心注解
实例分析
1.12.5.Spring Boot的Web开发支持
1.12.6.Thymeleaf模板引擎
Thymeleaf基础知识
与Spring MVC集成
Spring Boot的Thymeleaf支持
案例
1.12.7.Web相关配置
Spring Boot提供的自动配置
接管Spring Boot的Web配置
注册Serlvet、Filter、Listener
1.12.8.Tomcat配置
配置Tomcat
代码配置Tomcat
替换Tomcat
SSL配置
1.12.9.Favicon配置
默认的Favicon
关闭Favicon
设置自己的Favicon
1.12.10.WebSocket
什么是WebSocket
Spring Boot提供的自动配置
案例
1.12.11.基于Bootstrap和AngularJS的现代Web应用
1.12.12.Spring Boot的数据访问
Spring Data JPA
Spring Data REST
声名式事务
(1)回忆Spring 的事务机制
(2)声名式事务
(3)注解事务行为
(4)类级别使用@Transactional
(5)Spring Boot的事务支持
(6)案例
1.12.13.数据缓存Cache
Spring的缓存支持
Spring Boot的支持
缓存切换技术
案例
1.12.14.Spring Boot企业级开发
安全控制Spring Security
批处理Spring Batch
异步消息
集成Spring Integration
=== 1.13.Shiro ===
1.13.1.Shiro简介
1.13.2.HelloWorld
1.13.3.Shiro集成Spring
1.13.4.Shiro工作流
1.13.5.权限URL配置细节
1.13.6.认证思路分析
1.13.7.实现认证流程
1.13.8.实现认证Realm
1.13.9.密码的比对
1.13.10.密码的MD5加密
1.13.11.密码的MD5盐值加密
1.13.12.多Realm验证
1.13.13.认证策略
1.13.14.把realms配置给SecurityManager
1.13.15.Shiro权限配置
1.13.16.Shiro授权流程分析
1.13.17.多Realm授权的通过标准
1.13.18.实现授权
1.13.19.标签
1.13.20.权限注解
1.13.21.从数据表中初始化资源和权限
1.13.22.会话管理
1.13.23.SessionDao
1.13.24.缓存认证和记住我的区别
1.13.25.Shiro实现Rememberme
=== 1.14.Spring Cloud ===
=====2.JavaEE进阶=====
==== 2.1.Linux ====
2.1.1.Linux简介
简介
Linux版本
2.1.2.Linux系统安装
VMware安装
CentOs安装
CentOs root用户
CentOs 使
用CentOs目录介绍
2.1.3.Linux基本命令
切换目录命令
端口查看命令
文件执行命令
解压命令
授权命令
创建目录命令
文件复制命令
chkconfig命令
2.1.4.vi编辑器&vim
2.1.5.应用安装准备
安装路径
上传文件到Linux
2.1.6.jdk安装
2.1.7.Tomcat安装
安装
启动
停止
关闭防火墙
安装zookeper
安装mysql数据库
==== 2.2.Redis ====
2.2.1.NoSQL概述
2.2.1.1.入门概述
为什么用NoSQL
什么是NoSQL
NoSQL能干什么
2.2.1.2.3V+3高
2.2.1.3.当下的NoSQL经典应用(以阿里巴巴为例)
架构发展史
阿里巴巴中文站商品信息存放
(1)商品基本信息
(2)商品描述、详情、评价信息(多文字类)
(3)商品的图片
(4)商品关键字
(5)商品的波段性的热点高频信息
(6)商品的交易、价格计算、积分累计
大型互联网应用(大数据、高并发、多样数据类型)的难点和解决方案
难点
解决办法UDSL
2.2.1.4.NoSQL数据模型简介
传统数据库模型
NoSQL数据模型
聚合模型
2.2.1.5.NoSQL数据库的四大分类
KV键值
文档型数据库(bson格式比较多)
列存储数据库
(1)Cassandra, HBase
(2)分布式文件系统
图关系数据库
四者对比
2.2.1.6.分布式数据库中CAP原理
传统的ACID分别是什么
CAP
CAP的3选2
BASE是什么
分布式和集群
2.2.2.Redis入门介绍
2.2.2.1.入门概述
VMWare上安装Linux
(1)VMWare虚拟机的安装
(2)CentOS或者RedHad5的安装
(3)VMTools的安装
(4)设置共享目录
(5)上述环境都OK后开始进行Redis的服务器安装配置
2.2.2.2.Redis的安装
Windows版安装
重要提示:
Linux版安装
2.2.2.3.Redis启动后杂项基础知识讲解
2.2.3.Redis的数据类型
2.2.3.1.Redis的五大数据类型
string(字符串)
hash(哈希,类似java里的Map)
list(列表)
set(集合)
zset(sorted set:有序集合)
2.2.3.2.Redis 键(key)
常用
案例
2.2.3.3.Redis字符串(String)
常用
案例
2.2.3.4.Redis列表(List)
常用
案例
(1)lpush/rpush/lrange
(2)lpop/rpop
(3)lindex,按照索引下标获得元素(从上到下)
(4)Llen
(5)lrem key 删N个value
(6)ltrim
(7)rpoplpush 源列表 目的列表
(8)lset key index value
(9)linsert key before/after 值1 值2
(10)性能总结
2.2.3.5.Redis集合(Set)
常用
案例
(1)sadd/smembers/sismember
(2)scard,获取集合里面的元素个数
(3)srem key value 删除集合中元素
(4)srandmember key 某个整数(随机出几个数)
(5)spop key 随机出栈
(6)smove key1 key2 在key1里某个值
(7)数学集合类
① 差集:sdiff
② 交集:sinter
③ 并集:sunion
2.2.3.6.Redis哈希(Hash)
常用
案例
(1)hset/hget/hmset/hmget/hgetall/hdel
(2)hlen hexists key key里面的某个值的key
(3)hkeys/hvals
(4)hincrby/hincrbyfloat
(5)Hsetnx
2.2.3.7.Redis有序集合Zset(sorted set)
常用
案例
(1)zadd/zrange
(2)zrangebyscore key 开始score 结束score
(3)zrem key 某score下对应的value值
(4)zcard/zcount/zrank /zscore
(5)zrevrank
(6)zrevrange
(7)zrevrangebyscore key 结束score 开始score
2.2.4.解析配置文件redis.conf
2.2.4.1.它在哪
2.2.4.2.units单位
2.2.4.3.INCLUDES包含
2.2.4.4.GENERAL通用
(1)daemonize
(2)Pidfile
(3)Port
(4)tcp-backlog
(5)Timeout
(6)Bind
(7)tcp-keepalive
(8)Loglevel
(9)Logfile
(10)syslog-enabled
(11)syslog-ident
(12)syslog-facility
(13)Databases
2.2.4.5.SNAPSHOTTING快照
(1)Save
① save 秒钟写操作次数
② 禁用
(2)stop-writes-on-bgsave-error
(3)rdbcompression
(4)rdbchecksum
(5)dbfilename
(6)Dir
2.2.4.6.REPLICATION复制
2.2.4.7.SECURITY安全
2.2.4.8.LIMITS限制
Maxclients
Maxmemory
maxmemory-policy
maxmemory-samples
2.2.4.9.APPEND ONLY MODE追加
2.2.4.10.常见配置redis.conf介绍
2.2.5.redis的持久化
2.2.5.1.RDB(Redis DataBase)
简介
Fork
配置位置
如何触发RDB快照
如何恢复
优势
劣势
如何停止
小总结
2.2.5.2.AOF(Append Only File)
概述
配置位置
AOF启动/修复/恢复
(1)正常恢复
(2)异常恢复
Rewrite
(1)是什么
(2)重写原理
(3)触发机制
优势
劣势
小总结
2.2.5.3.总结
2.2.6.Redis的事务
2.2.6.1.概述
2.2.6.2.用法
常见用法
Redis事务错误处理
watch监控
(1)悲观锁/乐观锁/CAS(Check And Set)
(2)初始化信用卡可用余额和欠额
(3)无加塞篡改,先监控再开启multi, 保证两笔金额变动在同一个事务内
(4)有加塞篡改
(5)Unwatch
(6)小结
3阶段
3特性
2.2.7.Redis的发布订阅
概述
命令
案列
2.2.8.Redis的复制(Master/Slave)
2.2.8.1.是什么
2.2.8.2.配置
2.2.8.2.1.配从(库)不配主(库)
2.2.8.2.2.从库配置:slaveof 主库IP 主库端口
2.2.8.2.3.m
2.2.8.2.4.常用3招
一主二仆
① M
② 一个Master两个Slave
③ 日志查看
④ 主从问题演示
薪火相传
反客为主
2.2.8.3.复制原理
2.2.8.4.哨兵模式(sentinel)
是什么
使用步骤
一组sentinel能同时监控多个Master
2.2.8.5.复制的缺点
2.2.9.Redis的Java客户端Jedis
2.2.9.1.搭建环境
2.2.9.2.Jedis常用操作
测试连通性
5+1
事务提交
(1)日常
(2)加锁
主从复制
(1)6379,6380启动,先各自先独立
(2)主写
(3)从读
2.2.9.3.JedisPool
获取Jedis实例需要从JedisPool中获取
用完Jedis实例需要返还给JedisPool
如果Jedis在使用过程中出错,则也需要还给JedisPool
案例见代码
(1)JedisPoolUtil
(2)调用
配置总结all
2.2.10.Spring Data Redis
简介
案例
==== 2.3.JPA ====
2.3.1.JPA概述
JPA简介
JPA HelloWorld
2.3.2.常用注解
基本注解
Transient注解
Temporal注解
Table主键生成策略
2.3.3.JPA EntityManager
2.3.4.JPA EntityTransaction
2.3.5.JPA 映射单向多对一关联关系
2.3.6.JPA 映射单向一对多关联关系
2.3.7.JPA 映射双向一对多的关联关系
2.3.8.JPA 映射双向一对一的关联关系
2.3.9.JPA 二级缓存
2.3.10.JPQL
JPQL查询缓存
ORDER BY和GROUP BY
关联查询
子查询和内建函数
DELETE和UPDATE
2.3.11.JPA整合Spring
==== 2.4.分布式系统 ====
2.4.1.RPC
什么是RPC
RPC使用场景
2.4.2.分布式介绍
分布式系统
分布式种类
分布式与集群的区别
2.4.3.Dubbo使用
dubbo服务器
2.4.4.zookeper介绍
2.4.5.zookeper安装
2.4.6.服务端应用
2.4.7.客户端应用
2.4.8.分布式架构
==== 2.5.支付宝支付 ====
==== 2.6.微信支付 ====
==== 2.7.消息队列 ====
==== 2.8.WebSocket ====
2.8.1.创建第一个WebSocket应用
创建WebSocket端点
部署端点
创建WebSocket客户端
2.8.2.WebSocket端点
2.8.3.编程式端点
2.8.4.深入Echo示例
部署阶段
接收第一个连接
WebSocket消息通信
2.8.5.WebSocket生命周期
2.8.6.高级消息处理
检查连接
异步发送WebSocket消息
(1)通过Future发送消息
(2)通过Handler发送消息
(3)区别与联系
WebSocket路径映射
Portfolio应用
2.8.7.保护WebSocket服务器端点
2.8.8.Java EE平台中的WebSocket
==== 2.9.Lucene ====
2.9.1.Lucene简介
什么是lucene
全文检索的应用场景
(1)搜索引擎
(2)站内搜索
(3)文件系统搜索
(4)总结
全文检索的定义
lucene实现全文检索的流程
2.9.2.入门案例
2.9.2.1.需求
2.9.2.2.搭建环境
(1)数据库脚本初始化
(2)lucene准备
2.9.2.3.工程搭建
2.9.2.4.索引流程
为什么采集数据
采集数据的方式
(1)网页采集
(2)数据库采集
索引文件的逻辑结构
索引
2.9.2.5.搜索流程
输入查询语句
搜索分词
搜索索引
2.9.3.Field域
Field的属性
Field的常用类型
修改入门程序的代码
2.9.4.索引维护
需求
添加索引
删除索引
修改索引
2.9.5.搜索
创建查询对象的方式
通过Query子类来查询对象
通过QueryParser创建查询对象
TopDocs
2.9.6.相关度排序
什么是相关度排序
设置bosst值影响打分
2.9.7.中文分词器
什么是中文分词器
Lucene自带的中文分词器
第三方中文分词器
Ikanalyzer
==== 2.10.Solr ====
2.10.1.Solr介绍
什么是Solr
Solr和Lucene的区别
2.10.2.Solr安装配置
下载Solr
运行环境
SolrCore配置
(1)SolrHome和SolrCore
(2)目录结构
(3)创建SolrCore
(4)配置SolrCoreSolr
工程部署管
理界面功能介绍
多SolrCore配置
2.10.3.Solr基本使用
schema.xml
配置中文分析器
配置业务Field
dataimportHandler插件
2.10.4.Solrj的使用
什么是Solrj
需求
环境准备
工程搭建
代码实现
(1)添加、修改索引
(2)删除索引
(3)查询索引
2.10.5.案例
需求
分析
(1)UI分析
(2)架构分析
环境准备
工程搭建
代码实现
==== 2.11.Nginx ====
==== 2.12.Dubbo ====
==== 2.13.Docker ====
==== 2.14.Kubernetes ====
==== 2.15.lvs ====
==== 2.16.Activemq ====
==== 2.17.Rocketmq ====
==== 2.18.Kafka ====
==== 2.19.Mycat ====
==== 2.20.Sharding-jdbc ====
==== 2.21.Zookeeper ====
==== 2.22.RPC ====
======五.工具的使用======
=====1.SVN使用=====
=====2.Git使用 =====
===== 3.Eclipse开发工具的介绍 =====
工作空间的概念
工程的概念以及命名规范
包的概念以及命名规范
(1)创建包
(2)导入包
(3)创建包的命名规范
常用快捷键的介绍
工程的导入导出
===== 4.VMware (虚拟机) =====
===== 5.IntelliJ IDEA =====
===== 6.StarUML =====
===== 7.Dreamweaver =====
===== 8.PdShell =====
===== 9.Postman =====
===== 10.Xshell 5 =====
===== 11.Xftp 5 =====
===== 12.RedisDesktopManager =====
===== 13.HiJson =====
===== 14.数据库图形化工具 =====
本文章,列出了一些程序员需要学习的技术和知识点,有些技术和知识点没有写道,欢迎大家进行修改和补充,有些技术公司用到,大家需要先学习,有些技术和知识点过时,大家可以了解。本人笔记连接[[http://2863c718.wiz03.com/wapp/pages/view/share/s/0EoYso1Xqk4m2eAV4Y385xVk2vODbZ2BZ46Z2ChvzO2jhAyq|学习体系]]。======一.前端===========1.前端基础=========1.1.html4======= HTML介绍====== HTML作用 ====== 常见标签 ===
(1)图片标签
(2)表单标签
(3)表格标签
(4)头标签
(5)框架集
(6)其他常见标签
====1.2.css2====
CSS概述
CSS和HTML结合的方式
CSS选择器
CSS扩展选择器
CSS盒子模型
CSS布局漂浮属性
CSS布局定位属性
==== 1.3.JavaScript基础 ====
===1.3.1.JS概述===
(1)JS与Java不同
(2)JS的历史
(3)JS语言组成
(4)JS与HTML结合方式
=== 1.3.2.JS基础 ===
(1)JS基本语法
(2)JS的数据类型
(3)JS基本语句
(4)JS运算符
(5)JS数组
(6)JS函数的定义
(7)JS中函数的重载
(8)JS中的全局变量和局部变量
=== 1.3.3.JS中常见对象 ===
String对象
Array对象
Date对象
Math对象
=== 1.3.4.JavaScript 全局函数(global) ===
=== 1.3.5.BOM对象 ===
什么是BOM
==1.3.5.1.浏览器对象的使用==
1.3.5.1.1.History
History简介 (1)back()方法 (2)forward()方法 (3)go()方法 (4)制作返回按钮
1.3.5.1.2.Location
Location对象简介 通过href属性完成超链接效果 超链接按钮效果
1.3.5.1.3.Window对象
Window对象简介 (1)方法 ① confirm() ② prompt() ③ open() ④ close() ⑤ setInterval() ⑥ setTimeout() ⑦ clearInterval() ⑧ alert()
=== 1.3.6.DOM简单入门 ===
== 1.3.6.1.1.DOM简介 ==
DOM结构模型
DOM的三个级别和DHTML介绍
BOM和HTML DOM关系
== 1.3.6.2.Document对象 ==
Element对象
Node常用属性
节点名称、值和类型
父节点、子节点和兄弟节点
Node常用方法
检测子节点和属性
是否存在某节点
是否存在属性
操作DOM节点树
(1)插入节点 ①appendChild方法 ②insertBefore方法 (2)删除节点 (3)替换节点 (4)复制节点 (5)移动节点
innerHTML
JS常用事件
(1)鼠标移动事件 (2)鼠标点击事件 (3)加载与卸载事件 (4)聚焦与离焦时间键盘事件 (5)提交与重置事件 (6)选择与改变事件
省市县三级联动树形菜单制作
==== 1.4.Jquery ====
===1.4.1.jQuery简介===
什么是jQuery
jQuery的特点=== 1.4.2.jQuery选择器 ===
基本选择器
层次选择器
过滤选择器
内容过滤选择器
表单域选择器
=== 1.4.3.jQuery属性操作 ===
=== 1.4.4.jQuery快捷操作 ===
class属性值操作
标签包含内容操作
css样式操作
value属性快捷操作 (1)复选框操作 (2)下拉列表操作 (3)单选按钮操作=== 1.4.5.jQuery和DOM对象关系 ===
=== 1.4.6.jQuery框架对象分析 ===
=== 1.4.7.jQuery加载事件 ===
=== 1.4.8.jQuery普通事件操作 ===
=== 1.4.9.jQuery对文档的操作 ===
=== 1.4.10.jQuery属性选择器的使 ===
=== 1.4.11.jQuery事件绑定 ===
=== 1.4.12.jQuery动画效果小案例 ===
=====2.前端中级=========2.1.js进阶========2.2.php与数据库========2.3.Ajax========2.4.HTML5+CSS3=========3.前端高级========= 3.1.layui ======== 3.2.Bootstrap ======== 3.3.移动端 ======== 3.4.Canvas画布 ======== 3.5.NodeJS ======== 3.6.AngularJS ======== 3.7.ES6-Babel-Webpack-Less ======== 3.8.Vue ======== 3.9.AngularJSX ======== 3.10.Webpack ======== 3.11.WebAPP-Cordova ======== 3.12.WebAPP-Ionic ======== 3.13.ES6 ======== 3.14.Git微信小程序 ======== 3.15.Gulp ======== 3.16.Node ======== 3.17.React ====
======二.后端===========1.Java基础=====
==== 1.1.Java编码规范 ====
源码存储规范
命名规则
书写格式
代码注释
==== 1.2.JAVA开发环境 ====
安装JDK1.7 ,开发环境目录要求
设置环境变量
==== 1.3.软件开发基础 ====
计算机基础
操作系统,文件,目录,可执行程序,常用快捷键
常用的Shell命令
常用开发语言 了解
==== 1.4.第一个JAVA程序HelloWord ====
在记事本编写程序
在Shell命令窗口编译、执行
讲解程序的编译执行过程
关键字、标识符
什么是标识符
(1)标识符的命名规范
(2)JAVA关键字
==== 1.5.数据类型 ====
数据类型简介
JAVA中的数据类型
基本数据类型
引用数据类型
基本数据类型有哪些
数据类型的取值范围
数据类型的转换
自动类型转换
强制类型转换
==== 1.6.数组 ====
数组的说明
(1)为什么用数组
(2)一维数组的声明与创建
(3)Java内存分析,堆和栈(局部变量存储)
数组的初始化
(1)静态初始化
(2)动态初始化
数组的访问
(1)通过下标访问指定元素
(2)循环访问
数组的排序
(1)冒泡排序
(2)选择排序
数组的查找
(1)顺序查找
(2)二分法查找
Arrays工具类
二维数组
(1)二维数组的声明
(2)二维数组的创建
二维数组的初始化
(1)静态初始化
(2)动态初始化
二维数组的访问
(1)通过下标访问指定元素
(2)通过循环访问数组
==== 1.7.流程控制 ====
什么是JAVA语句的执行结构
(1)JAVA语句有哪些结构
(2)顺序语句
(3)分支语句
(4)循环语句
If语句
(1)简单if语句
(2)复杂if语句
(3)if-else语句
(4)多重if语句
(5)嵌套if语句
switch语句
(1)switch语句用法
(2)switch使用String分支
(3)switch语句与if语句的区别
枚举的简单使用
(1)枚举的定义
(2)枚举的使用(结合switch的使用)
循环语句
(1)什么是循环
(2)Java中的循环语句
for循环语句
while循环
(1)while循环语句
(2)do-while循环语句
特殊流程控制语句
(1)break语句的使用
(2)continue语句的使用
(3)label 的简述
比较while和do-while的区别
==== 1.8.类.变量,方法,对象 ====
类的定义
什么是变量
变量的声明和初始化
变量的分类
变量的作用域
对象的定义
对象的创建以及内存分析
构造方法的定义
(1)构造方法的定义
(2)构造方法的使用
(3)构造方法重载
(4)构造方法与普通方法的区别
this关键字
(1)this.属性:访问本类的成员属性(成员变量与局部变量同名的情况,成员变量无效)
(2)this.方法:访问本类的成员方法
(3)this():访问本类中的构造函数
static关键字
(1)静态属性
(2)静态方法
(3)静态代码块
static的应用
(1)工具类(操作数组常用方法为例,写一个工具类)
(2)工具类的概念
类中成员变量的定义
常量、进制转换
(1)什么是常量
(2)二进制转换十进制
运算符
(1)常用运算符
(2)算术运算符
(3)赋值运算符
(4)关系运算符
(5)逻辑运算符
(6)三目运算符
(7)字符串连接运算符
(8)位运算符
(9)移位运算符
表达式的值和类型
转义字符
运算符优先级
什么是方法
(1)方法(函数)
(2)方法中的参数
① 形参
② 实参
(3)方法的返回值
方法的声明和调用
(1)声明方法的格式
(2)调用方法的格式
可变参数
(1)可变参数的写法
(2)可变参数的使用
类中方法的定义
方法的重载
内部类
(1)成员内部类
(2)静态内部类
(3)匿名内部类
(4)局部内部类
==== 1.9.面向对象 ====
1.9.1.什么是面向对象
1.9.2.面向对象的设计思想
1.9.3.面向对象和面向过程的区别
(1)面向对象
(2)面向过程
(3)区别总结
1.9.4.抽象类和抽象方法
(1)抽象类出现的原因
(2)抽象类的特点
1.9.5.封装
(1)private 的使用
(2)get/set
(3)方法的说明(讲this之前,参数与成员变量名称要不同)
1.9.6.继承
继承的概念
类的继承的使用
super关键字
继承中的构造方法
访问权限
(1)private
(2)default(默认)
(3)protected
(4)public
方法重写
(1)方法重写的规则
(2)Object 类
① equals()方法
② hashCode()方法
③ getClass()方法
④ toString()方法
final关键字
(1)final修饰的类
(2)final修饰的方法
(3)final修饰的属性
(4)final与static的区别
1.9.7.多态
什么是多态
多态的体现
对象的多态性
多态的表现形式
接口
(1)接口的概念
(2)接口的使用
① 接口的声明语法
② 接口的实现类
③ 接口的使用规则
④ 接口的使用用途
⑤ 接口与抽象类的区别
对象转型
(1)对象的向上转型
(2)instanceof 关键字
(3)对象的向下转型
==== 1.10.正则表达式 ====
(1)String 正则
(2)Pattern Matcher
(3)正则元字符
(4)正则表达式
==== 1.11.常用类 ====
1.11.1.字符串
(1)String类
(2)StringBuffer类
(3)StringBuilder类
(4)String.format() 格式化
1.11.2.基本数据类型的包装类
基本数据类型与其包装类
数据的装箱和拆箱
String 与 基本数据类型的互换
1.11.3.Date类
1.11.4.Calendar类
1.11.5.SimpleDateFormat类
1.11.6.Math类
1.11.7.Random类
1.11.8.Runtime类
1.11.9.System类
==== 1.12.异常 ====
异常的概念
异常的分类
异常的处理方式
(1)捕获异常:try..catch..finally语句
(2)抛出异常:throws和throw
自定义异常
==== 1.13.泛型的使用 ====
泛型应用在集合上
泛型类声明,方法返回泛型,方法参数泛型
泛型限定
==== 1.14.反射 ====
类的加载 Class.forName()
创建对象的两种方式(newInstance与带参数构造器)
成员变量的访问Field类和getDeclaredField方法
方法的访问与调用 Method
构造方法
==== 1.15.注解 ====
==== 1.16.集合 ====
1.16.1.集合框架介绍
(1)集合的概念
(2)集合的框架结构介绍
(3)集合与数组的对比
1.16.2.Collection接口
(1)集合对象的创建
(2)Collection中常用的方法
1.16.3.List接口
(1)List接口的存储特点
(2)List接口的实现类
① ArrayList实现类的使用
② LinkedList实现类的使用
③ ArrayList与LinkedList存储的比较
1.16.4.增强for循环
1.16.5.Iterator迭代器
(1)迭代器的工作原理
(2)迭代器的使用
1.16.6.集合工具
(1)Collections 工具类
(2)Comparable
(3)Comparator
1.16.7.Set接口
(1)集合的存储特点
(2)HashSet的实现原理
① 重写hashCode()
② 重写equals()
(3)LinkedHashSet(添加)
1.16.8.Map接口
(1)Map接口的概述
(2)Map接口的常用方法
(3)Map接口的常用实现类
(4)HashMap
(5)Hashtable 和 HashMap的区别
(6)LinkedHashMap
(7)Map的遍历:各种遍历方式 Map.Entry
==== 1.17.IO流 ====
1.17.1.File类
File类作用
File类的构造方法
File类常用方法
使用File类对文件进行操作
使用File类浏览目录中的文件和子目录
递归算法遍历目录下所有文件与子目录
1.17.2.IO概念
什么是IO流?
流的作用和原理?
1.17.3.IO流的种类
按方向分:输入流、输出流
按数据单位分:字符流、字节流
按层次分:节点流、处理流
1.17.4.字节输入流
InputStream类的常用方法
InputStream类的子类:文件输入流FileInputStream
FileInputStream构造方法和常用方法
1.17.5.字节输出流
OutputStream类的常用方法
OutputStream类的子类:文件输出类FileOutputStream
FileOutputStream构造方法和常用方法
1.17.6.字节缓冲流
字节缓冲流的构造方法
使用字节缓冲流对文件进行读写
装饰设计模式
1.17.7.字符输入流
Reader类的常用方法
Reader类的子类:FileReader
FileReader构造方法和常用方法
1.17.8.字符缓冲流
字符缓冲流构造方法
字符缓冲流的常用方法:readLine(), newLine()
字符缓冲流对文件进行读写
1.17.9.字符输出流
Writer类的常用方法
Writer类的子类:FileWriter
FileWriter构造方法和常用方法
1.17.10.转换流
InputStreamReader的构造方法
InputStreamReader的使用
OutputStreamWriter的构造方法
OutputStreamWriter的使用
1.17.11.打印流
打印流构造方法
打印流的常用操作:print(), println()
1.17.12.标准输入输出流
(1)使用System.in获取键盘数据
(2)使用System.out输出数据
1.17.13.内存流(重点掌握)
什么是内存流
内存流的构造方法
写入到内存和读取内存数据
常用方法:toByteArray(), toString()
1.17.14.数据输入输出流
DataOutputStream 使用
DataInputStream 使用
1.17.15.对象流
对象序列化
序列化的常用属性
(1)static的属性不能序列化
(2)transient的属性不能序列化
(3)serialVersionUID=1L
对象输入流ObjectInputStream
对象输出流ObjectOutputStream
1.17.16.随机流RandomAccessFile类
RandomAccessFile类的构造方法
RandomAccessFile常用操作:skipBytes() seek()
常用方法: getFilePointer() writerUTF() readUTF()
向文件中随机写入键盘文字
==== 1.18.线程 ====
1.18.1.线程和进程的介绍
进程的概念
线程的概念
进程和线程的关系以及区别
1.18.2.线程的实现实现
Runnable接口
两种实现方式的比较
1.18.3.线程的启动
调用start()方法启动线程
调用start()与调用run()的区别
1.18.4.线程的生命周期和常用方法
线程的优先级
线程的名称
线程的睡眠
线程的中断
线程的停止
1.18.5.多线程访问临界资源时的数据安全问题
synchronized关键字
同步代码块
同步方法
同步静态方法
锁对象
死锁
1.18.6.生产者消费者
1.18.7.线程池
单线程池
固定线程池
缓冲线程池
==== 1.19.网络编程 ====
1.19.1.网络通信协议介绍
TCP/IP协议
IP地址和端口号
基于TCP的网络编程
Socket和ServerSocket
UDP编程(视频)
1.19.2.URL类的使用
什么是URL类
URL的构造方法
URL类的常用方法
1.19.3.HttpURLConnection类简介(重点)
简单介绍HttpURLConnection类
HttpURLConnection的常用方法
1.19.4.HttpURLConnection类的应用
HttpURLConnection请求服务器,获取响应的文本
HttpURLConnection下载文件
1.19.5.OkHttp 简单使用
同步GET、POST请求
1.19.6.接口回调
接口回调结合多线程的应用
异步请求,利用内部类,实现接口回调
==== 1.20.Xml ====
1.20.1.XML简介
什么是XML
XML语法结构
XML元素定义
XML属性使用
自定义XML文件
XML解析的三种方式说明:SAX, PULL, DOM
1.20.2.PULL解析
PULL解析原理
PULL解析XML文件
网络XML文件解析
1.20.3.SAX解析
SAX解析的原理
SAX解析常用类介绍
SAX解析XML文件步骤
网络XML文件解析
PULL解析与SAX解析的区别
==== 1.21.Json ====
1.21.1.JSON解析简介
什么是JSON
JSON与XML之间的比较
JSON解析在网络中的应用
1.21.2.JSON的数据表示
键值对的对象表示
数组的表示
1.21.3.JSON解析
一个对象的JSON解析
多个对象的解析
复杂对象的解析
将集合转成JSON字符串
官方JSON解析
Gson解析
==== 1.22.设计模式 ====
单例设计模式
简单工厂设计模式
装饰者模式
代理模式
观察者模式======三.Web基础==========1.数据库====
1.1.需要学习了解的数据库
Mysql
公司使用,主要学习,MySQL 在 2008 年被Sun收购需要学习其他数据库语言作为可替代方案
oracle
Sqlserver
微软的只能在Windows平台使用,工作中基本不用,只需了解
MariaDB
PostgreSQL
MangoDB
NoSQL
1.2.Mysql
数据库简介
mysql安装和概述
mysql基本命令
mysqlDDL操作
mysqlDML操作
mysqlDQL操作
mysql模糊查询
mysql分组查询
分页
数据库约束
多表查询
查询练习
MySQL数据库的备份与恢复
1.3.JDBC
Java操作数据库
获取数据库连接
使用Statement执行更新操作
使用ResultSet执行查询操作
以面向对象思想编写JDBC
使用PreparedStatement
利用反射及JDBC元数据编写通用的查询方法
DAO设计模式
JDBC元数据JDBC获取插入记录的主键值
JDBC处理Blob
事务介绍
JDBC处理事务
批量处理
数据库连接池
(1)TOMCAT中的数据库连接池
(2)C3P0
(3)DBCP
(4)Druid
使用DBUtils
1.4.oracle
数据库简介
Oracle服务端和客户端安装
Oracle基本命令
Oracle中的用户管理
Oracle中表的管理
Oracle查询操作
Oracle中的函数表的逻辑备份与恢复
数据库约束
Oracle索引、权限
分页====2.Tomcat====Tomcat简介
Tomcat安装
Tomcat安装目录介绍
====3.Servlet====
3.1.Servlet概述
什么是Servlet
实现Servlet的方式
创建HelloWorld应用
3.2.Servlet接口
3.2.1.Servlet生命周期
Servlet出生
Servlet服务
Servlet的离去
3.2.2.Servlet接口相关类型
ServletRequest和ServletResponse
ServletConfig
3.2.3.GenericServlet
GenericServlet概述
GenericServlet的init()方法
实现了ServletConfig接口
3.2.4.HttpServlet
3.2.4.1.概述
3.2.4.2.HttpServlet覆盖了service()方法
3.2.4.3.<url-pattern>
(1)/XXX
(2)*.XXX
3.2.4.4.doGet()和doPost()
3.2.4.5.Response
response概述
response响应正文
(1)字符响应流
设置响应头
信息设置状态码及其他方法
重定向
(1)什么是重定向
(2)完成重定向
(3)便捷的重定向方式
(4)重定向小结
Request
(1)request概述
(2)request域方法
(3)request获取请求头数据
(4)request获取请求相关的其它方法
(5)request获取请求参数
(6)请求转发和请求包含
① 请求转发
② 请求包含
③ 请求转发与请求包含比较
④ 请求转发与重定向比较
3.3.Servlet细节
Servlet与线程安全
让服务器在启动时就创建Servlet
服务端跳转与客户端跳转
web.xml文件的继承(了解)
3.4.ServletContext
ServletContext概述
获取ServletContext
域对象的功能
获取应用初始化参数
获取资源相关方法
(1)获取真实路
(2)径获取资源流
(3)获取指定目录下所有资源路径
访问量统计
====4.编码====4.1.请求编码
(1)直接在地址栏中给出中文
(2)在页面中发出请求
(3)GET请求解读编码
(4)POST请求解读编码
4.2.响应编码
4.3.URL编码====5.路径问题====与路径相关的操作
客户端路径
服务端路径
<url-pattern>
ServletContext获取资源
Class获取资源
ClassLoader获取资源====6.注解配置Servlet========7.JSP====
7.1.JSP概述
什么是JSP
JSP的组成
7.2.JSP语法
JSP脚本
多个<%...%>可以通用
7.3.JSP原理
JSP是特殊的Servlet
JSP真身存放目录
7.4.再论JSP脚本
7.5.JSP注释
7.6.三个基本的脚本元素
7.7.JSP指令
7.8.JSP动作
7.9.JSP EL表达式
7.10.JSP标签库
JSTL
fmt标签库常用标签
7.11.绝对路径和相对路径
7.12.静态包含和动态包含
7.13.页面中的几个路径
7.14.验证码案例
验证码的作用
VerifyCode类
在页面中显示动态图片
在注册页面中使用验证码
RegisterServlet
总结验证码案例
7.15.MVC设计模式
7.16.JavaWeb与MVC
JSP Model1第一代
JSP Model1第二代
JSP Model2
7.17.JavaWeb经典三层框架
7.18.Filter
7.18.1.过滤器概述
Filter简介
过滤器之HelloWorld
7.18.2.过滤器详细
过滤器的生命周期
FilterConfig
FilterChain
多个过滤器执行顺序
四种拦截方式
过滤器的应用场景
设置目标资源
Filter小结
7.18.3.过滤器应用案例
分ip统计网站访问次数
粗粒度权限控制
禁用资源
解决全站字符乱码
页面静态化
7.19.JavaWeb监听器
JavaWeb监听器概述
创建与销毁监听器
操作域属性的监听器
HttpSession的监听器
7.20.国际化
什么是国际化
理解国际化
Locale类
ResourceBundle类
页面国际化
NumberFormat
DateFormat
MessageFormat
7.21.Ajax
7.21.1.js原生的ajax
7.21.2.jQuery封装的ajax
AJAX概述
(1)什么是AJAX
(2)同步交互与异步交互
(3)AJAX常见应用情景
(4)AJAX优缺点
AJAX技术
(1)AJAX第一例
(2)AJAX发送POST请求
(3)AJAX判断用户名是否已注册
(4)AJAX实现省市二级联动
7.22.文件上传和下载
文件上传
(1)文件上传的作用
(2)文件上传对页面的要求
(3)比对文件上传表单和普通文本表单的区别
(4)文件上传对Servlet的要求
commons-fileupload
(1)fileupload概述
(2)fileupload简单应用
(3)简单上传示例
文件上传细节
(1)把上传的文件放到WEB-INF目录下
(2)文件名称(完整路径、文件名称)
(3)中文乱码问题
(4)上传文件同名问题
(5)一个目录不能存放过多文件
(6)上传的单个文件的大小限制
(7)上传文件的总大小限制
(8)缓存大小与临时目录
文件下载
(1)通过Servlet下载1
(2)通过Servlet下载2
(3)通过Servlet下载3
7.23.会话
7.23.1.会话跟踪技术
什么是会话跟踪技术
会话跟踪技术使用Cookie或Session完成
7.23.2.Cookie
Cookie概述
(1)什么是Cookie
(2)Cookie规范
(3)Cookie与HTTP头
(4)Cookie的覆盖
(5)Cookie的第一例
Cookie的生命周期
(1)什么是Cookie的生命周期
(2)浏览器查看Cookie
(3)案例:显示上次访问时间
Cookie的Path
(1)什么是Cookie的路径
(2)Cookie路径与请求路径的关系
(3)设置Cookie的路径
Cookie的domain
Cookie中保存中文
显示曾经浏览过的商品
7.23.3.HttpSession
HttpSession概述
登录案例
Session实现原理
Session与浏览器
Session其他常用API
URL重写======四.Web高级===========1.经典框架=====
==== 1.1.Maven ====
maven的介绍
maven的安装配置
创建maven工程之maven命令
maven核心概念之坐标
maven核心概念之依赖管理
maven核心概念之生命周期
maven核心概念之插件
maven核心概念之继承
maven核心概念之聚合
==== 1.2.MyBatis ====
1.2.1.单独使用JDBC编程问题总结
JDBC程序
JDBC编程步骤
JDBC问题总结如下
1.2.2.MyBatis介绍
1.2.3.MyBatis架构
1.2.4.MyBatis下载
1.2.5.创建数据库
1.2.6.MyBatis入门程序
(1)需求
(2)第一步:创建Java工程
(3)第二步:加入jar包
(4)第三步:log4j.properties
(5)第四步:SqlMapConfig.xml
(6)第五步:POJO类
(7)第六步:程序编写
① 查询
② 添加
③ 删除
④ 修改
(8)MyBatis解决JDBC编程的问题
1.2.7.Dao开发方法
需求
SqlSession的使用范围
(1)SqlSessionFactoryBuilder
(2)SqlSessionFactory
(3)SqlSession
原始Dao开发方式
① 映射文件
② Dao接口
③ 问题
Mapper动态代理方式
① 实现原理
② Mapper.xml
③ Mapper.java
④ 加载UserMapper.xml文件
⑤ 测试
⑥ 总结
1.2.8.SqlMapConfig.xml文件
配置内容
properties属性
settings配置
typeAliases
① mybatis支持别名
② 自定义别名
typeHandler
Mappers
① <mapper resource=""/>
② <mapper url=""/>
③ <mapper class=""/>
④ <package name=""/>
1.2.9.Mapper.xml映射文件
1.2.9.1.parameterType
#{}与${}
传递简单类型
传递POJO对象
传递POJO包装对象
① 定义包装对象
② mapper.xml映射文件
传递HashMap
1.2.9.2.resultType
输出简单类型
输出POJO对象
输出POJO列表
resultType总结
输出HashMap
1.2.9.3.resultMap
Mapper.xml定义
定义result
MapMapper接口定义
1.2.9.4.动态SQL
If
Where
Foreach
① 通过POJO传递List
② 传递单个List
③ 传递单个数组(数组中是POJO)
④ 传递单个数组(数组中是字符串类型)
sql片段
1.2.10.关联查询
商品订单数据模型
一对一查询
① 方法一
② 方法二
一对多查询
③ Sql语句
④ 定义POJO类
⑤ Mapper.xml
⑥ 定义resultMap
1)resultMap使用继承
⑦ Mapper接口
⑧ 测试
⑨ 小结
多对多查询
① 查询用户购买的商品信息
② 小结
resultMap小结
延迟加载
(1)开启延迟加载
(2)一对一查询延迟加载
① 需求
② Sql语句
③ 定义POJO类
④ Mapper.xml
⑤ 定义resultMap
⑥ Mapper接口
⑦ 测试
⑧ 延迟加载优缺点分析
一对多查询延迟加载
延迟加载小结
1.2.11.查询缓存
1.2.11.1.MyBatis缓存介绍
1.2.11.2.一级缓存
原理
测试
1.2.11.3.二级缓存
原理
开启二级缓存
实现序列化
测试
禁用二级缓存
刷新缓存
MyBatis Cache参数
MyBatis整合ehcache
(1)原理
(2)整合步骤
① 引入缓存的依赖包
② 引入缓存的配置文件
③ 开启ehcache缓存
应用场景
局限性
==== 1.3.Spring ====
1.3.1.初识Spring
1.3.1.1.简化Java开发
什么是最小侵入式
依赖注入
应用切面
使用模板消除样板式代码
1.3.1.2.Spring主要模块
1.3.2.Bean的注入
1.3.2.1.XMl配置
普通构造方法创建
静态工厂创建
实例工厂创建
属性注入方式
① 构造方法注入
② set方法注入
③ p名称空间注入
④ 对象的注入
⑤ 数组注入
⑥ List集合注入
⑦ Map注入
⑧ Properties注入
1.3.2.2.Java配置
1.3.2.3.自动配置
通过Java代码实现
通过XML配置文件实现
1.3.2.4.混合配置
1.3.2.5.Profile
Java配置
XML配置
1.3.2.6.条件注解
1.3.2.7.Bean的作用域
1.3.2.8.其他问题
1.3.3.AOP
1.3.3.1.AOP简介
1.3.3.2.AOP几个关键概念
1.3.3.3.AOP原理
1.3.3.4.AOP实现
1.3.3.4.1.通过Java代码实现
使用注解拦截
(1)前置、后置通知
(2)返回通知
(3)环绕通知
(4)异常通知
按照方法规则拦截
(1)前置、后置通知
(2)返回通知
(3)环绕通知
(4)异常通知
1.3.3.4.2.通过XML配置实现
使用注解拦截
按照方法规则拦截
(1)前置通知
(2)返回通知
(3)环绕通知
(4)异常通知
(5)后置通知
1.3.3.5.JdbcTemplate
增删改查
配合数据库连接池
1.3.3.6.Spring事务管理
回忆事务
XML配置实现
Java配置实现
1.3.3.7.Spring高级应用
1.3.3.8.服务端校验
普通校验
分组校验
校验注解
1.3.3.9.数据回显
默认方式
Model方式
@ModelAttribute
(1)解决数据回显问题
(2)方法返回值暴露为模型数据
异常处理
文件上传
JSON数据交互
(1)@RequestBody
(2)@ResponseBody
RESTful支持
(1)RESTful简介
(2)SpringMVC对RESTful的支持
静态资源访问
拦截器
==== 1.4.SpringMVC ====
1.4.1.简介
SpringMVC工作流程
SpringMVC相关组件
HelloWorld
1.4.2.组件介绍
1.4.2.1.DispatcherServlet
1.4.2.2.Controller
1.4.2.2.1.@RequestMapping
(1)URL路径映射
(2)窄化请求映射
(3)请求方法限定
1.4.2.2.2.Controller方法返回值
返回ModelAndView
返回void
(1)使用request转向页面
(2)通过response页面重定向
(3)通过response指定响应结果
返回字符串
(1)逻辑视图名
(2)Redirect重定向
(3)forward转发
1.4.2.2.3.参数绑定
默认支持的参数类型
简单数据类型
(1)简单类型
(2)@RequestParam
POJO
(1)简单pojo
(2)包装pojo
自定义参数绑定
集合类
(1)字符串数组
(2)Lis
(3)tMap
1.4.2.2.4.问题总结
404
Post时中文乱码
1.4.2.3.其他组件
=== 1.5.Freemarker ===
1.5.1.Freemarker介绍
Freemarker简介
使用引入
1.5.2.ftl基本语法
if else语句
list循环语句
输出展示
=== 1.6.SpringMVC+Freemarker案例 ===
=== 1.7.SpringMVC+AJAX实现动态树形菜单 ===
=== 1.8.MyBatis整合Spring ===
1.8.1.MyBatis与Spring整合jar
1.8.2.MyBatis配置文件
1.8.3.Spring配置文件
1.8.4.Mapper编写的三种方式
Dao接口实现类继承SqlSessionDaoSupport
使用org.mybatis.spring.mapper.MapperFactoryBean
使用Mapper扫描器
=== 1.9.MyBatis逆向工程 ===
使用方式
Mapper文件内容不覆盖而是追加
Table schema问题
=== 1.10.Struts2 ===
1.10.1.Struts2概述
1.10.2.Struts2框架入门
1.10.3.Struts2执行过程
1.10.4.Struts2核心配置文件
标签package
标签action
标签result
1.10.5.Struts2常量配置
1.10.6.分模块开发
1.10.7.Action编写方式
1.10.8.访问Action的方法
使用action标签method属性
使用通配符实现
1.10.9.结果页面配置
全局结果页面
局部结果页面
Result标签的type属性
1.10.10.Action获取表单提交数据
使用ActionContext类获取
使用ServletActionContext类获取
在Action操作域对象
1.10.11.Struts2封装获取表单数据方式
属性封装
模型驱动封装
封装到集合中
(1)封装数据到List集合中
(2)封装数据到Map集合中
Struts2拦截器概述
拦截器底层原理
重要概念
自定义拦截器
自定义登录拦截器
Struts2的标签库
Struts2总结
=== 1.11.Hibernate ===
1.11.1.Hibernate概述
什么是框架
什么是hibernate框架
什么是ORM思想
1.11.2.Hibernate入门
搭建Hibernate环境
实现添加操作
1.11.3.Hibernate配置文件详解
Hibernate映射配置文件
Hibernate核心配置文件
1.11.4.Hibernate核心API
Configuration
SessionFactory
Session
Transaction
1.11.5.Hibernate主键生成策略
1.11.6.实体类操作
添加
根据id查询
修改操作
删除操作
1.11.7.Hibernate的一级缓存
什么是缓存
Hibernate缓存
验证缓存
Hibernate一级缓存执行过程
Hibernate一级缓存特性
1.11.8.Hibernate事务操作
事务相关概念
Hibernate事务代码规范写法
Hibernate绑定session
1.11.9.Hibernate的API的使用
Query对象
Criteria对象
SQLQuery对象
1.11.10.Hibernate一对多操作
一对多映射配置
一对多级联操作
一对多级联保存
一对多级联删除
一对多修改操作
1.11.11.Hibernate查询
对象导航查询
OID查询
HQL查询
QBC查询
=== 1.12.Spring Boot ===
1.12.1.Spring Boot概述
什么是Spring Boot
Spring Boot的核心功能
Spring Boot的优缺点
1.12.2.Spring Boot快速搭建
1.12.3.Spring Boot核心
1.12.3.1.基本配置
(1)入口类和@SpringBootApplication
(2)关闭特定的自动配置
(3)定制Banner
(4)Spring Boot的配置文件
(5)Starter pom
(6)使用xml配置
1.12.3.2.外部配置
命令行参数配置
常规属性配置
类型安全配置
1.12.3.3.日志配置
1.12.3.4.Profile配置
1.12.4.Spring Boot运行原理
运作原理
核心注解
实例分析
1.12.5.Spring Boot的Web开发支持
1.12.6.Thymeleaf模板引擎
Thymeleaf基础知识
与Spring MVC集成
Spring Boot的Thymeleaf支持
案例
1.12.7.Web相关配置
Spring Boot提供的自动配置
接管Spring Boot的Web配置
注册Serlvet、Filter、Listener
1.12.8.Tomcat配置
配置Tomcat
代码配置Tomcat
替换Tomcat
SSL配置
1.12.9.Favicon配置
默认的Favicon
关闭Favicon
设置自己的Favicon
1.12.10.WebSocket
什么是WebSocket
Spring Boot提供的自动配置
案例
1.12.11.基于Bootstrap和AngularJS的现代Web应用
1.12.12.Spring Boot的数据访问
Spring Data JPA
Spring Data REST
声名式事务
(1)回忆Spring 的事务机制
(2)声名式事务
(3)注解事务行为
(4)类级别使用@Transactional
(5)Spring Boot的事务支持
(6)案例
1.12.13.数据缓存Cache
Spring的缓存支持
Spring Boot的支持
缓存切换技术
案例
1.12.14.Spring Boot企业级开发
安全控制Spring Security
批处理Spring Batch
异步消息
集成Spring Integration
=== 1.13.Shiro ===
1.13.1.Shiro简介
1.13.2.HelloWorld
1.13.3.Shiro集成Spring
1.13.4.Shiro工作流
1.13.5.权限URL配置细节
1.13.6.认证思路分析
1.13.7.实现认证流程
1.13.8.实现认证Realm
1.13.9.密码的比对
1.13.10.密码的MD5加密
1.13.11.密码的MD5盐值加密
1.13.12.多Realm验证
1.13.13.认证策略
1.13.14.把realms配置给SecurityManager
1.13.15.Shiro权限配置
1.13.16.Shiro授权流程分析
1.13.17.多Realm授权的通过标准
1.13.18.实现授权
1.13.19.标签
1.13.20.权限注解
1.13.21.从数据表中初始化资源和权限
1.13.22.会话管理
1.13.23.SessionDao
1.13.24.缓存认证和记住我的区别
1.13.25.Shiro实现Rememberme
=== 1.14.Spring Cloud ===
=====2.JavaEE进阶=====
==== 2.1.Linux ====
2.1.1.Linux简介
简介
Linux版本
2.1.2.Linux系统安装
VMware安装
CentOs安装
CentOs root用户
CentOs 使
用CentOs目录介绍
2.1.3.Linux基本命令
切换目录命令
端口查看命令
文件执行命令
解压命令
授权命令
创建目录命令
文件复制命令
chkconfig命令
2.1.4.vi编辑器&vim
2.1.5.应用安装准备
安装路径
上传文件到Linux
2.1.6.jdk安装
2.1.7.Tomcat安装
安装
启动
停止
关闭防火墙
安装zookeper
安装mysql数据库
==== 2.2.Redis ====
2.2.1.NoSQL概述
2.2.1.1.入门概述
为什么用NoSQL
什么是NoSQL
NoSQL能干什么
2.2.1.2.3V+3高
2.2.1.3.当下的NoSQL经典应用(以阿里巴巴为例)
架构发展史
阿里巴巴中文站商品信息存放
(1)商品基本信息
(2)商品描述、详情、评价信息(多文字类)
(3)商品的图片
(4)商品关键字
(5)商品的波段性的热点高频信息
(6)商品的交易、价格计算、积分累计
大型互联网应用(大数据、高并发、多样数据类型)的难点和解决方案
难点
解决办法UDSL
2.2.1.4.NoSQL数据模型简介
传统数据库模型
NoSQL数据模型
聚合模型
2.2.1.5.NoSQL数据库的四大分类
KV键值
文档型数据库(bson格式比较多)
列存储数据库
(1)Cassandra, HBase
(2)分布式文件系统
图关系数据库
四者对比
2.2.1.6.分布式数据库中CAP原理
传统的ACID分别是什么
CAP
CAP的3选2
BASE是什么
分布式和集群
2.2.2.Redis入门介绍
2.2.2.1.入门概述
VMWare上安装Linux
(1)VMWare虚拟机的安装
(2)CentOS或者RedHad5的安装
(3)VMTools的安装
(4)设置共享目录
(5)上述环境都OK后开始进行Redis的服务器安装配置
2.2.2.2.Redis的安装
Windows版安装
重要提示:
Linux版安装
2.2.2.3.Redis启动后杂项基础知识讲解
2.2.3.Redis的数据类型
2.2.3.1.Redis的五大数据类型
string(字符串)
hash(哈希,类似java里的Map)
list(列表)
set(集合)
zset(sorted set:有序集合)
2.2.3.2.Redis 键(key)
常用
案例
2.2.3.3.Redis字符串(String)
常用
案例
2.2.3.4.Redis列表(List)
常用
案例
(1)lpush/rpush/lrange
(2)lpop/rpop
(3)lindex,按照索引下标获得元素(从上到下)
(4)Llen
(5)lrem key 删N个value
(6)ltrim
(7)rpoplpush 源列表 目的列表
(8)lset key index value
(9)linsert key before/after 值1 值2
(10)性能总结
2.2.3.5.Redis集合(Set)
常用
案例
(1)sadd/smembers/sismember
(2)scard,获取集合里面的元素个数
(3)srem key value 删除集合中元素
(4)srandmember key 某个整数(随机出几个数)
(5)spop key 随机出栈
(6)smove key1 key2 在key1里某个值
(7)数学集合类
① 差集:sdiff
② 交集:sinter
③ 并集:sunion
2.2.3.6.Redis哈希(Hash)
常用
案例
(1)hset/hget/hmset/hmget/hgetall/hdel
(2)hlen hexists key key里面的某个值的key
(3)hkeys/hvals
(4)hincrby/hincrbyfloat
(5)Hsetnx
2.2.3.7.Redis有序集合Zset(sorted set)
常用
案例
(1)zadd/zrange
(2)zrangebyscore key 开始score 结束score
(3)zrem key 某score下对应的value值
(4)zcard/zcount/zrank /zscore
(5)zrevrank
(6)zrevrange
(7)zrevrangebyscore key 结束score 开始score
2.2.4.解析配置文件redis.conf
2.2.4.1.它在哪
2.2.4.2.units单位
2.2.4.3.INCLUDES包含
2.2.4.4.GENERAL通用
(1)daemonize
(2)Pidfile
(3)Port
(4)tcp-backlog
(5)Timeout
(6)Bind
(7)tcp-keepalive
(8)Loglevel
(9)Logfile
(10)syslog-enabled
(11)syslog-ident
(12)syslog-facility
(13)Databases
2.2.4.5.SNAPSHOTTING快照
(1)Save
① save 秒钟写操作次数
② 禁用
(2)stop-writes-on-bgsave-error
(3)rdbcompression
(4)rdbchecksum
(5)dbfilename
(6)Dir
2.2.4.6.REPLICATION复制
2.2.4.7.SECURITY安全
2.2.4.8.LIMITS限制
Maxclients
Maxmemory
maxmemory-policy
maxmemory-samples
2.2.4.9.APPEND ONLY MODE追加
2.2.4.10.常见配置redis.conf介绍
2.2.5.redis的持久化
2.2.5.1.RDB(Redis DataBase)
简介
Fork
配置位置
如何触发RDB快照
如何恢复
优势
劣势
如何停止
小总结
2.2.5.2.AOF(Append Only File)
概述
配置位置
AOF启动/修复/恢复
(1)正常恢复
(2)异常恢复
Rewrite
(1)是什么
(2)重写原理
(3)触发机制
优势
劣势
小总结
2.2.5.3.总结
2.2.6.Redis的事务
2.2.6.1.概述
2.2.6.2.用法
常见用法
Redis事务错误处理
watch监控
(1)悲观锁/乐观锁/CAS(Check And Set)
(2)初始化信用卡可用余额和欠额
(3)无加塞篡改,先监控再开启multi, 保证两笔金额变动在同一个事务内
(4)有加塞篡改
(5)Unwatch
(6)小结
3阶段
3特性
2.2.7.Redis的发布订阅
概述
命令
案列
2.2.8.Redis的复制(Master/Slave)
2.2.8.1.是什么
2.2.8.2.配置
2.2.8.2.1.配从(库)不配主(库)
2.2.8.2.2.从库配置:slaveof 主库IP 主库端口
2.2.8.2.3.m
2.2.8.2.4.常用3招
一主二仆
① M
② 一个Master两个Slave
③ 日志查看
④ 主从问题演示
薪火相传
反客为主
2.2.8.3.复制原理
2.2.8.4.哨兵模式(sentinel)
是什么
使用步骤
一组sentinel能同时监控多个Master
2.2.8.5.复制的缺点
2.2.9.Redis的Java客户端Jedis
2.2.9.1.搭建环境
2.2.9.2.Jedis常用操作
测试连通性
5+1
事务提交
(1)日常
(2)加锁
主从复制
(1)6379,6380启动,先各自先独立
(2)主写
(3)从读
2.2.9.3.JedisPool
获取Jedis实例需要从JedisPool中获取
用完Jedis实例需要返还给JedisPool
如果Jedis在使用过程中出错,则也需要还给JedisPool
案例见代码
(1)JedisPoolUtil
(2)调用
配置总结all
2.2.10.Spring Data Redis
简介
案例
==== 2.3.JPA ====
2.3.1.JPA概述
JPA简介
JPA HelloWorld
2.3.2.常用注解
基本注解
Transient注解
Temporal注解
Table主键生成策略
2.3.3.JPA EntityManager
2.3.4.JPA EntityTransaction
2.3.5.JPA 映射单向多对一关联关系
2.3.6.JPA 映射单向一对多关联关系
2.3.7.JPA 映射双向一对多的关联关系
2.3.8.JPA 映射双向一对一的关联关系
2.3.9.JPA 二级缓存
2.3.10.JPQL
JPQL查询缓存
ORDER BY和GROUP BY
关联查询
子查询和内建函数
DELETE和UPDATE
2.3.11.JPA整合Spring
==== 2.4.分布式系统 ====
2.4.1.RPC
什么是RPC
RPC使用场景
2.4.2.分布式介绍
分布式系统
分布式种类
分布式与集群的区别
2.4.3.Dubbo使用
dubbo服务器
2.4.4.zookeper介绍
2.4.5.zookeper安装
2.4.6.服务端应用
2.4.7.客户端应用
2.4.8.分布式架构
==== 2.5.支付宝支付 ====
==== 2.6.微信支付 ====
==== 2.7.消息队列 ====
==== 2.8.WebSocket ====
2.8.1.创建第一个WebSocket应用
创建WebSocket端点
部署端点
创建WebSocket客户端
2.8.2.WebSocket端点
2.8.3.编程式端点
2.8.4.深入Echo示例
部署阶段
接收第一个连接
WebSocket消息通信
2.8.5.WebSocket生命周期
2.8.6.高级消息处理
检查连接
异步发送WebSocket消息
(1)通过Future发送消息
(2)通过Handler发送消息
(3)区别与联系
WebSocket路径映射
Portfolio应用
2.8.7.保护WebSocket服务器端点
2.8.8.Java EE平台中的WebSocket
==== 2.9.Lucene ====
2.9.1.Lucene简介
什么是lucene
全文检索的应用场景
(1)搜索引擎
(2)站内搜索
(3)文件系统搜索
(4)总结
全文检索的定义
lucene实现全文检索的流程
2.9.2.入门案例
2.9.2.1.需求
2.9.2.2.搭建环境
(1)数据库脚本初始化
(2)lucene准备
2.9.2.3.工程搭建
2.9.2.4.索引流程
为什么采集数据
采集数据的方式
(1)网页采集
(2)数据库采集
索引文件的逻辑结构
索引
2.9.2.5.搜索流程
输入查询语句
搜索分词
搜索索引
2.9.3.Field域
Field的属性
Field的常用类型
修改入门程序的代码
2.9.4.索引维护
需求
添加索引
删除索引
修改索引
2.9.5.搜索
创建查询对象的方式
通过Query子类来查询对象
通过QueryParser创建查询对象
TopDocs
2.9.6.相关度排序
什么是相关度排序
设置bosst值影响打分
2.9.7.中文分词器
什么是中文分词器
Lucene自带的中文分词器
第三方中文分词器
Ikanalyzer
==== 2.10.Solr ====
2.10.1.Solr介绍
什么是Solr
Solr和Lucene的区别
2.10.2.Solr安装配置
下载Solr
运行环境
SolrCore配置
(1)SolrHome和SolrCore
(2)目录结构
(3)创建SolrCore
(4)配置SolrCoreSolr
工程部署管
理界面功能介绍
多SolrCore配置
2.10.3.Solr基本使用
schema.xml
配置中文分析器
配置业务Field
dataimportHandler插件
2.10.4.Solrj的使用
什么是Solrj
需求
环境准备
工程搭建
代码实现
(1)添加、修改索引
(2)删除索引
(3)查询索引
2.10.5.案例
需求
分析
(1)UI分析
(2)架构分析
环境准备
工程搭建
代码实现
==== 2.11.Nginx ====
==== 2.12.Dubbo ====
==== 2.13.Docker ====
==== 2.14.Kubernetes ====
==== 2.15.lvs ====
==== 2.16.Activemq ====
==== 2.17.Rocketmq ====
==== 2.18.Kafka ====
==== 2.19.Mycat ====
==== 2.20.Sharding-jdbc ====
==== 2.21.Zookeeper ====
==== 2.22.RPC ====
======五.工具的使用======
=====1.SVN使用=====
=====2.Git使用 =====
===== 3.Eclipse开发工具的介绍 =====
工作空间的概念
工程的概念以及命名规范
包的概念以及命名规范
(1)创建包
(2)导入包
(3)创建包的命名规范
常用快捷键的介绍
工程的导入导出
===== 4.VMware (虚拟机) =====
===== 5.IntelliJ IDEA =====
===== 6.StarUML =====
===== 7.Dreamweaver =====
===== 8.PdShell =====
===== 9.Postman =====
===== 10.Xshell 5 =====
===== 11.Xftp 5 =====
===== 12.RedisDesktopManager =====
===== 13.HiJson =====
===== 14.数据库图形化工具 =====