线程
1 实现线程的三种方式
- 继承 Thread 类:重写 run 方法
- 实现 Runnable 接口:重写 run 方法
- 实现 Callable 接口:重写 call 方法
2 monitor 监视器如何实现线程同步
- 在虚拟机中,为了实现监听器互斥功能,每个对象引用与监视器、锁相关联
- 被 synchronized 修饰的代码块、方法会被放入了监视器的监视区域,确保线程必须获取锁且一次只有一个线程执行该代码(synchronized 使用隐式监听器,lock 锁使用显示监听器)
IO
1 IO 流分类
- 功能区分:输入、输出流
- 类型区分:字符、字节流(字节流以八位字节传输,字符流以十六位字符传输)
集合
1 hashmap、hashtable区别
- 存值:hashmap的key和value都可以为null,hashtable 不允许为 null
- 安全性:hashmap 非线程安全,hashtable 线程安全(hashtable 是保留类,不建议使用,多线程环境使用 concurrenthashmap)
安全
1.java 常见算法
- Hash算法:加密之后不能解密,没有秘钥,一般用于数据验证
- Base64:
- MD5:
- HMAC、SHA:
- 对称加密:加密和解密使用相同的密钥
- DES、3DES、AES
- 非对成加密:加密和解密使用不同的密钥(公钥加密-私钥解密、私钥加密-公钥解密)
- RSA、ECC、DSA
认证
1 cookie 和 session
- 存放位置不同:cookie 存放在浏览器端,session 存放在服务器端
- 存储大小不同:cookie 限制在 3k 一下,session 没有限制
- 生命周期:cookie 是累积的,到点销毁,session 是间隔的,只要没销毁时访问了则重写计算时间
- 数据类型不同:cookie 存储的是字符串类型的键值对,session存储的是 object 类型的键值对
- 创建位置:两者都是在第一个访问服务器端时创建
- session 的 sessionid 通过 cookie 保存 可以实现 http 请求有状态形式、记住我等功能