第一阶段:JavaSE
编程技巧
搭建环境
跨平台原理
Java的基础语法:
变量 常量 基本类型(8个)
运算符:
结构:
方法:
static静态方法 普通方法
怎么定义方法--》public static void test(参数){...}
怎么去掉用方法 类名.方法名 调用
方法覆写(方法名相同,形参列表不同 比如:toString equals)
方法重写(体现爱父类和子类之间,父类方法不能满足子类需求的时候)
数组:
什么是数组,就是一个容器
数组的定义:
动态创建:String[] str1 =new String[]{};
静态创建:String[] str2 = {"1","2"};
数组使用:
str[index] index 从0开始
知道怎么遍历
可变参数---可以等成一个伪数组使用
面向对象:
三大特征
封装:通过权限修饰符达到一个封装效果。【常用private,可以提供方法让外面来访问,比如set/get】
继承:如果有很多公共的内容,就可以抽取到父类里面,让子类继承他
多态:一个事物的多种形态,用途:子类和父类,传递参数上面 test(Animal an)
Animal an = new Bird();
Animal an1 = new Pig();
抽象 abstract interface enum innerclass static final constractor this super this()
常用类:
包装类8个基本类型都有对应的包装类
自动装箱拆箱 基本类型和包装类型之间
StringBuilder StringBuffer String 区别:
StringBuffer这个是一个线程安全,里面的方法都有同步修饰
StringBuilder是一个线程不安全的类,效率高一点
String 一旦创建之后 长度是固定不变的
StringBuffer/StringBuilder shiyaobianhuan
常用方法:
System 类
System.out.println();
System.exit();
System.gc();
System.arrayCopy
BigDecimal--比较精确的小数
BigInterger--比long更大的值
随机数
Random
UUID.randDomUUID()
Math.randDom()
当前线程里面可以获取随机数
时间类:Date SimpleDateFormat Calendar
异常:
Throwable---》Exception/Error
Exception:运行时异常RuntimeException,费运行时异常
try-catch try-catch-finally try-finally
Throws 方法上面
Throw new Runtime Exception
自定义异常:
继承Exception或者RuntimeException
覆写 构造方法
finally final finalize区别:
finally:有没有异常都会执行
final:修饰符,修饰方法或者类
finalize:垃圾回收
说出常出现的5个异常
空指针 算术 类型转换 下标越界 io异常 ClassNotFoundException
线程:
什么是进程:正在运行的程序
什么是线程:在进程里面 可以有多个线程来组成,线程是进程里面最小单元
线程实现方式:
继承Thread
实现Runnabled接口
线程的同步:
加锁
同步方法
同步代码块
线程里面常用的方法:sleep join wait notify
池技术:连接池、线程池、常量池
线程池:装线程容器【ThreadPool】
死锁:
两个线程在相互竞争一个资源,造成彼此等待现象
Timer定时器【Timer Task】
集合:
Collection List可重复有顺序
【ArrayList、Vector(线程不安全,基于数组)LinkedList(基于链表)】
Collection Set不能重复 没有顺序
【HashSet(hashcode equals)、TreeSet(比较器Comparable Comparator)】
Map【hashMap、TreeMap、HashTable(Properties)】
实现原理:通过数组和链表 + 红黑树
泛型(掌握)
new ArrayList<Strudent>();
IO
File new File()
字符流【Reader Writer】
字节流【InputStream(FileputStream) OutputStream(FileOutputStream)】
读read 写write
正则表达式
网络编程
TCP:面向连接协议,可靠,不会丢包。TCP/IP
UDP:无连接协议,报文方式,丢包
Socket:套接字
ServerSocket:
通过Socket就可以完成及时通信
JavaWeb
html/css
超文本的标记语言 html静态页面 html标签
css做样式:(重点--选择器【类 id 标签 后代选择器】)
java基础加强与反射
常用设计模式:
单例模式 装饰模式 代理模式 工厂模式 适配器模式 模板方法模式
反射
在运行的时候,动态获取类的信息,包括构造方法、方法、字段
注解、测试、XML
注解使用掌握 自定义注解
测试(黑盒、白盒、灰盒、单元)
XML:读写/DID/Schema/Dom4j
MySQL(必须要会哦)
安装MySQL 创建库 创建表
MySQL列:varchar bigint int bit data datatime decimal LongText
MySQL重点: select*from t_table where group by order by limit having
MySQL迪卡尔积
关联查询:【内连接 外连接 自连接 子查询】索引 存储过程 函数 事务 存储引擎
jdbc 贾琏欲执事
贾-加载驱动 琏-连接数据库 欲-创建SQL对象 执-执行SQL语句 事-释放资源
PreparedStatement和Statement区别
工具盒类抽取jdbcUtils
事务ACID属性
连接池技术
JavaWeb
tomcat
http协议
Servlet的使用 生命周期 执行流程
四大作用域
九大内置对象
三大指令
session和cookie操作
重定向(redirect)和转发(farward)区别
el的使用
JSTL的使用
c:foreach c:if c:choose c:out
ModelViewController
filter filterchain
listener
防止重复提交
购物车
登录权限处理
验证码
上传下载
JS
怎么引用js
直接在标签里面使用
直接再<script>里面使用
引用外部js文件
js使用基本语法
变量:var let
常量
undefined
NAN
。。。。。
js函数使用
普通函数 function prosion(){}
匿名函数 function(){}();
构造函数 Person(){}
回调函数 settimeout(time.func)
怎么调用
定义对象
语法:new Object(),var obj = {}, var obj1 = new Person();
内置对象
Array Object Date String Number Boolean
数组Array
BOM DOM
事件定义方式
prototype
闭包
ajax
jquery:.post [重点:选择器 方法 插件 plugin]
Spring生态圈
SpringMVC-->执行流程 接收参数,传参数
Spring-->AOP DI IOC BeanFactory和FactoryBean 三层结构 事务传播机制
SpringJDBC-->jdbc封装
SpringDataJPA-->JPA封装 jpql 状态 事务并发 乐观锁 悲观锁
SVN
Spring + SpringMVC + CRUD
CMS
内务管理系统
实用技术;Spring + SpringMVC +SpringJDBC + BootStrap + MySQL
Freemark模板技术:
Template + Data ===》生成内容 java 类 HTML
为什么实用模板技术
代码生成器【提高效率】 页面静态化【提高查询效率】
缓存
ehcache
查询出来数据,放入缓存里面,来的时候,先从缓存里面搜索,如果有,直接访问,如果没有数据,直接从数据库查询放入缓存
在新增修改 删除 需要同步缓存里面内容
视图 View使用
邮箱技术
SpringMVC拦截器
SpringMVC interceptor
业务
AJax
局部刷新技术
他是怎么实现局部刷新的:
通过回调方法,在回调方法就可以实现 加载局部dom内容。异步javaScript + XML结合体
JSON
数据存储或者传输格式
evall() JSON.parse()//必须要标准的格式
JQuery
js的前端框架
写的更少,完成更多的事情
选择器:从css扩展过来的,id class 元素 层次 属性。。。
常用方法:val() html() show() append appendTo prepend prependTo clone() empty() css() prop() attr().....
插件:plugins---easyui datagrid
easyui
js代码--排错 F12 console
引入easyui 组件的使用【datagrid () form() dialog() combox() panel() button() Tabs() Tree() layout(布局) Menu() Message() Input(输入框)】
组件使用(一种是在标签里面添加class样式、一种是通过js定义)
组件
属性
方法
事件
通过组件 结合jquery 完成crud
查询 分页 高级查询
新增 删除 修改 查询
Maven
UML-->画图 ps rose powerdesinger visiro在线画图工具
类图 用例图 时序图 流程图
idea
安装
快捷键
怎么创建项目 普通项目 maven项目 maven web项目
JPA
JPA的持久层规范 实现它有很多框架 hibernate
不能手动写SQL 不能灵活控制SQL 有些性能控制不了 JPA它有自己的缓存
EntityManagerFactory
EntityManager]
Transacion
save merge remove find
一级缓存:
属于EntityManager级别缓存 同一个EntityManagerFactory 同一个EntityManager 同一个OID,自带的缓存
二级缓存:
属于EntityManagerFactory级别缓存,需要配置同一个EntityManagerFactory 不同一个EntityManager 同一个OID
查询缓存:
基于二级缓存 同一个EntityManagerFactory 不同一个EntityManager发出SQL相同 并且条件值createQuery(jpql)
EntityManager实体状态
瞬时--->new
持久---->和EntityManager发生关系
游离---->解除关系
删除---->remove
脏数据更新
一个持久化状态的数据 如果改变了非主键的值,在事务提交的时候,会自动发送update语句更新
如果改变了主键的值-----报n-n问题
JPQL
和SQL区别
JPQL操作对象 语句里面只能出现类名或者属性名,不要出现表名、列名、*
事务并发---同一个库里面事务() 不同库里面事务(分布式事务)
SpringData
SpringDataJpa
对JPA的封装
ERP(AISELL)进销存的系统
SpringDataJPA + Spring + SpringMVC +Easyui +jquery + EasyCode(模板是velocity)-->【controller service Resposity jsp js】
Shiro权限框架(权限系统) 认证和授权
EasyPOI 导入导出
HighChat
业务
产品模块 Product
采购模块
库存单
销售模块
库存单
盘点单
流程处理
数据字典
权限管理(用户 角色 权限 资源-菜单)
控制菜单的展示-菜单权限 控制按钮-功能权限 控制数据权限
Vue
前端框架 MVVM双向绑定
指令 v-model v-bind v-show v-on v-if v-test v-html v-for
表达式的语法:{{expression}}
组件的使用 全局和局部组件
elementui
路由
MyBatis
入门CRUD
Mapper接口
mapper.xml文件
批量新增 foreach 批量删除
关系:一对多 多对一 多对多(不会创建中间表,要自己创建)
支持缓存
代码生成去器
拦截器---->PageHelper
分页
jenkins持久集成 整合maven git(分布式 github)svn
rpms
一定要培养独立解决问题的能力----------->多用百度吧
技术+业务
maven多模块
第三方登录
Saas权限
Lenuce
WebService
WebSocket
阿里云部署