1.安装idea导入jdk,选择版本。
类是对象的抽象,对象是类的实例
CTRL+alt+L 代码自动对齐
CTRL+/ 注释
2.基本数据类型(String是类,不是基本数据类型):
byte:1个字节
short:2个字节
int:4个字节
long:8个字节 //定义的类型后面要加L
float:4个字节 //定义的类型后面要加F
double:8个字节(银行计算精确的值使用decimal)
char:2个字节 //字符
boolean:0个字节(true or false)
3.递归(自己调用自己)
4.数组
array和list 的区别:
list里的元素数据类型可以不一致,并且他们的值不能计算
x=[1,2,'x','y']
array是数组,他们的数据类型必须为同一类型,值可以进行计算
x[10]={1,2,3,4,5}
5.oop面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据
面向对象编程 的三大特性:
封装、继承、多态
static是和类一起加载的,其他的方法是在类实例化之后才存在的
引用传递本质还是值的传递
类实例化之后会产生一个自己的对象
student对象就是Student类的具体实例
Student student=new Student();
构造方法:必须和类的名字相同,必须没有返回值,void也不行:无参构造(用来实例化初始值)
重点:使用new关键词,本质是在构造器!
有参构造:一旦定义了有参构造,无参构造必须显示定义
super的注意点:
super调用父类的构造方法,必须在子类构造方法的第一个
super必须只能出现在子类的方法或构造方法中
super和this不能同时调用构造方法
静态方法:方法的调用之和左边有关
非静态:重写
多态 是指方法的多态
static,private,final不可重写
extend是单继承,implement是可以多继承
异常:IO exception:EOF exception(文件已经结束了,但是还要进行读写就会报这个异常),file not found exception
process进程,thread线程
进程是一次执行的过程是动态的,一个进程里面可以包含多个线程
线程就是独立运行的,线程的开启不一定立即在执行,而是由我们的cpu执行调度
面向字符的输入流都是Reader的子类
计算机中数值以补码的方式存在。
递归的核心思想是分解
thread.sleep()方法中每个对象都有一把锁,sleep不会释放锁
高并发:(等待机制)线程同步:队列+锁syncronized(锁机制)
注解:可以被其他程序所读取
反射:反射得出的对象通过invoke方法来进行激活
反射要想访问我们类里的私有private属性,不能直接操作私有属性 需要关闭程序的安全检测,属性或者方法的使用setAccessable(true)就可以了,但是这样会降低程序的效率。
javascript:
json是一种轻量级的数据交换格式,简洁清晰层次结构,有效的提升网络传输的速率
js对象转为json字符串Json.stringify方法
反过来json字符串解析为JavaScript对象则使用Json.parse方法
BOM:浏览器对象模型
window浏览器的窗口
navigator封装了浏览器的信息
screen屏幕
location代表当前页面的url信息
document代表当前页面HTML DOM文档树,获取具体的文档树节点
DOM文档对象模型
操作dom节点要先获取dom节点
插入节点使用append追加
创建新的节点使用createElement
jQuery库存在着大量的JavaScript函数
数据库引擎MyIsam和innodb的区别
myisam节约空间速度较快,不支持事务但是支持全文索引
innodb安全性高,事务的处理,多表多用户操作
修改表的操作:修改表名alter table 旧表名 rename as 新表名
增加表的字段:alter table 表名 add id int(10)
修改表的字段:alter table 表名 modify id varchar(10)
字段重命名:alter table 表名 change id id1 int(1)
modify和change的区别
modify只能修改约束,change可以修改属性名和约束
删除表的字段:alter table 表名 drop id1
数据库备份:
直接物理文件拷贝
在可视化工具里进行导出
使用命令行导出MySQL dump
数据库三大范式
第一范式:原子性:保证每一列都不可再分
第二范式:满足第一范式的前提下,每个表只描述一件事情
第三范式:满足第二范式的前提下,确保数据表中的每一列数据都和主键直接相关,而不能间接相关
事务acid原则
开启事务:start transaction
原子性:要么都成功要么都失败
一致性:执行前后的总数保持不变
隔离性:多个事务互不干扰
持久性:事务提交之后被持久化到数据库当中去
隔离性的问题:
脏读:一个事务读取了另一个未提交的事务
不可重复读:在同一个事务中重复读表中的数据,表数据发生了改变
幻读:在一个事务内读取了别人插入的事务,导致前后读出的结果不一致
数据库连接池:dbcp,c3p0,druid
B/S浏览器和服务器:承载三高(高并发、高可用、高性能)问题所带来的影响
C/S客户端和服务器
web服务器:IIS,tomcat
web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,他代表了当前页面的web应用
重定向和转发的区别
相同点:页面都会进行跳转
不同点:转发的时候url不会发生变化
重定向时url地址栏会发生变化
jsp(Java server pages):pageContext.request.contextPath获取当前项目的路径
会话session:客户端请求服务端,服务端给客户端一个信件,下次访问带个信件来就行了(cookie)
服务器登记你来过了,下次你来的时候我匹配你(session)
可以把信息或者数据存在session中
cookie和session的区别
cookie是把用户的数据写给用户的浏览器,浏览器端保存(可以保存多个)
session是把用户的数据写到独占的session中,由服务器保存(只保存重要的信息,减少服务器资源的浪费)
session对象由服务器端创建
JavaBean一般用来和数据库字段做映射 ORM(对象关系映射)
mvc三层架构:model view controller
model:业务处理service,数据持久化dao
controller:接受用户的请求,交给业务层处理对应的代码,重定向转发
view:展示数据,提供连接发起servlet请求
filter:过滤器处理中文乱码,登录验证
resulttype:sql语句执行的返回值
parametertype:参数类型
缓存:存在内存中的临时数据
mybatis系统中默认定义两级缓存一级缓存和二级缓存
默认情况下只有一级缓存开启(SQL session级别的缓存也称作本地缓存),二级缓存需要手动开启,是基于namespace级别的缓存,为了提高拓展性,mybatis定义了缓存接口cache
一级缓存:一次回话查询同一样数据只需开启一次mysql
二级缓存:一级缓存在会话提交或者关闭之后,数据会被保存到二级缓存当中,新的会话查询就可以在耳机缓存中查询(实体类序列化,否则会报错)
spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的开源免费框架
IOC控制反转:主动权交给客户,DI依赖注入原型是set注入,本质是一种思想,DI注入是ioc的一种实现方式
通过描述或者注解并通过第三方去产生或获取对象的方式
控制:使用spring之后对象由spring创建
反转:程序本身不创建对象,而变成被动接受对象
由spring来创建管理装配
ioc创建对象的方式:默认是采用无参构造
依赖注入:
构造器注入:
set注入:
依赖:bean对象的创建依赖于spring容器
注入:bean对象的所有属性,都通过容器来注入
在spring中有三种自动装配的方式:
1在XML中显示的配置
2在Java中显示配置
3隐式的自动装配
代理模式:AOP的底层
静态代理的角色分析:
抽象角色:一般会使用抽象类或者接口来实现
真实角色:被代理的角色
代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作
客户:访问代理对象的人
动态代理:动态代理的代理类是动态生成的,不是我们直接写好的
动态代理分为两大类:基于接口的动态代理,基于类的动态代理
一个动态代理类可以代理多个类,动态代理的底层是反射机制
aop面向切面编程
主要使用执行前执行后和增强环绕
Ajax
onblur失去焦点事件
Vue
v-bind绑定事件
v-model:双向绑定
组件slot插槽
this.$emit()方法用于组件内部绑定事件
用axios做异步通信
spring boot
jsr303校验,判断我们输入的合法与否
springboot 内置了servlet容器没有web.xml如果想配置直接@Bean
注册到容器中
spring security:认证、授权
swagger api框架实时更新最新的api
分布式:由一组通过网络进行通信,完成共同任务而协调的计算机节点所组成的系统
提高机器利用率的资源调度和治理中心soa是关键
RPC协议核心:通讯,序列化
通讯:为了传输
序列化:数据传输需要转换
dubbo:rpc框架:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现