数据类型:
byte 1字节
shotr 2
int 4
long 8
char 2
float 4
double 8
boolean 1
面向对象特性
封装 :将对象实现细节隐藏起来,通过公共方法向外暴露对象功能
继承:子类继承父类,直接或间接获取父类的成员
多态:直接把子类赋值给父类变量,但是运行时依然表现出子类的行为特征
抽象:从已经存在的事物中抽象出所关注的行为,特性。
重载:同一类中,方法名相同,参数列表不同
重写:继承父类,方法及签名相同 ,@Override标签判断
基本类型和包装类型:
基本类型:默认值为0 存在于 栈
包装类型:默认值 null,对象 存在于 堆
集合中只能存储对象
抽象类和接口:
抽象类:不能创建实例,无方法体,子类实现,可包含抽象方法 普通方法 构造方法
接口:是一种规范,N中方法的特征集合,无构造方法 可包含抽象方法
类之间是单继承关系 接口和实现类 实现关系
抽象用于 某些相同事物概念(相同属性)的抽取, 使用抽象类是为了代码的复用
接口是为了实现多态性(特性,行为)
数组:存储相同类型的集合
设计模式:
享元模式:共享同一元素,常量池中
单例模式:暴露对外方法
责任链模式:单独开发
适配器模式:接口和抽象类
stringbuffer(安全)、stringbuilder(不安全)
集合分为 colletion 和map(双序)
collection:
List:arrarylist 、linkedlist、vector(安全的)(有序,可重复)
set:hashset、treeset (无序,不重复)
map:hashmap(数组+链表结构,可存null)、treemap,hashtable(安全的)(key-value)
arrarylist 动态数组 效率高 查询快,增删慢,默认大小10,插入数据,判断大小,改变内存存储
linnkedlist:链表结构 查询慢,增删快,首尾连接
hashset去重原理:通过hashcode找到对应hash值,通过运算找到该元素的在hash表的存储位置,
如果目前没有任何元素存储,则直接存储,若已存在其他元素,调用equals判断比较,若是ture,则重复,不允许添加,false则添加
遍历map:四种
获取key value :entryset
通过key 获取value
单独获取 ketset
迭代器遍历 entryse().iterator
常用类: string、until、math、date、sql
常见异常: 数组下标越界 空指针 io异常 算数异常 类转换异常 文件找不到异常 类找不到异常
数据库:左右链接,内连接,索引 explain 判断索引
索引 :explain查看是否有索引 index(不重复索引) ref()
事务:
原子性:要么发生 要么不发生
一致性:保证数据的完整性
隔离性:每一位用户的事务不被干扰
持久性:一旦改变 保持永久
悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁 ,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁 插入 写 场景
乐观锁:总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在Java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。 一种版本号机制 读场景
死锁:多个进程抢夺资源造成的
原因:
互斥条件:一段时间内,某资源仅为一进程占有
请求和保持条件:请求资源阻塞时,对已获得资源不放
不剥夺条件:进程已获得资源未使用完时,不能剥夺,自动释放
环路等待条件:存在环形连
实现多线程:根据返回值 分为两大类
一类:继承Thread和实现Runnable ,
二类:实现Callable重写call()传给FutureTask对象,最大的不同是Callable能返回一个异步处理的结果Future对象并能抛出异常
原文:https://www.cnblogs.com/upward/p/11295510.html