目录
一、JAVA
JAVA常数默认类型
- 整数型默认为int类型
- 带小数的默认为double类型
== 访问权限控制符==
- 权限从大到小排名: public > protected > default(包访问权限) > private
- public : 随处都可以访问
- protected:同一包和不同包的子类
- default:同一包下
- private:同一个类中
成员变量、类变量、局部变量的区别
- 类变量:被static修饰的变量,被所有类实例共享
- 成员变量:1、定义在类中,整个类中都可以被访问 2、随着对象的建立而建立,随着对象的消失而消失 3、成员变量有默认初始化的值
- 局部变量:1、定义在局部范围内,例如函数内、语句内,只在所属的范围有效 2、存储在栈内存中,随着所属范围的消失而消失 3、没有初始化值
重载/重写
- 重载:同名不同参,返回值和修饰符无关(可以在同一个类或者子类中被重载)
- 重写:同名又同参,返回值相关,修饰符不能更严格(只能在子类中被重写)
final
- final修饰的方法不能被重写,可以被重载
- final不能修饰抽象类
接口
- 接口中方法的默认修饰符是public abstract,不能有方法体
- jdk8之后接口方法的修饰符可以是default和static,但是必须有方法体
线程
- start()是启动动作,线程此时就绪,还需等待cpu的调度
- run()方法才是线程获得cpu的时间,开始执行的点
- 创建线程的两种方法:
- 从Java.lang.Thread 类派生一个新的线程类,重写run()方法
- 实现Runnable()接口,重写Runnable接口中的run()方法
StringBuilder&StringBuffer
- StringBuilder线程不安全(不能同步访问),StringBuffer线程安全
- StringBuilder速度快,StringBuffer速度慢
- 都是字符串变量,改变时不会产生新的未使用对象
Object类中含有的常见方法
- clone() 创建一个该对象的副本并返回
- toString()返回该对象的字符串表示
- notify()启动此对象监视器上等待的单个线程
- notifyAll()启动此对象监视器上等待的所有线程
- wait()当前线程失去操作权限,进入等待序列
- finalize()当垃圾回收器确定不存在该对象的更多引用时,由对象的垃圾回收器调用此方法
HashMap
- key不能为空,value可以为空
JSP的9个内置对象
- pageContext 表示页容器 EL表达式、 标签 、上传
- request 服务器端取得客户端的信息:头信息 、Cookie 、请求参数 ,最大用处在MVC设计模式上
- response 服务器端回应客户端信息:Cookie、重定向
- session 表示每一个用户,用于登录验证上
- application 表示整个服务器,开始于服务器的启动,结束于服务器的关闭;实现了用户间的数据共享,可存放全局变量,是ServletContext类的实现
- config 取得初始化参数,初始化参数在web.xml文件中配置
- exception 表示的是错误页的处理操作
- page 如同this一样,代表整个jsp页面自身
- out 输出 ,但是尽量使用表达式输出
常见注解功能
- @Override:指明被注解的方法需要覆写超类中的方法
- @Deprecated:可以修饰类,方法,变量,表示注解的类,方法,变量不建议使用
- @SuppressWarning:抑制编译器编译时产生警告
JAVA并发编程的三个概念
- 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行
- 可见性:多个线程访问一个变量,当一个线程改变这个变量,其他线程能够立刻看到(当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值)
- 有序性:程序执行的顺序按照代码先后顺序执行(可以通过synchronized和Lock来保证有序性,很显然,synchronized和Lock保证每个时刻是有一个线程执行同步代码,相当于是让线程顺序执行同步代码,自然就保证了有序性)
二、算法
三、数据结构
四、计算机网络
五、SPRING
六、设计模式
单例模式
- 单例模式属于创建型模式(创建对象时隐藏对象创建的逻辑,使得在判断给定实例需要创建哪些对象时更加灵活)。
- 单例类特点:
- 单例类只能有一个实例
- 单例类必须自己创建自己的实例
- 单例类必须给所有其他对象提供这一实例
- 单例模式分类:
- 饿汉式
-
普通饿汉式实现代码1:
public class Singleton { private static Singleton singleton = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return singleton; }
-
普通饿汉式实现代码2:
public class Singleton { private Singleton(){}; private static Singleton singleton; static { singleton = new Singleton(); } public static Singleton getInstance(){ return singleton; } }
-
枚举型实现代码(唯一不会被破坏的单例实现模式):
public enum Singleton { Instance; }
-
- 懒汉式
-
普通懒汉式实现方式:
public class Singleton { private Singleton(){} private static Singleton singleton; public synchronized static Singleton getInstance(){ if(singleton == null){ singleton = new Singleton(); } return singleton; } }
-
双重检查式:
public class Singleton { private Singleton(){} private static Singleton singleton; public static Singleton getInstance(){ if(singleton == null){ synchronized (Singleton.class){ if(singleton == null){ singleton = new Singleton(); } } } return singleton; } }
-
静态内部类实现:
-
- 饿汉式
- 单例模式破坏方式
- 序列化破话单例模式:
- 反射破坏单例模式:
- 破坏方案解决:
- 序列化破坏解决:
- 反射破坏解决: