HTTP
- HTTP是超文本传输协议,从万维网服务器传输超文本到本地浏览器,一种约定的格式。
- 特点:
1.允许传输任意数据 用Content-Type标记
2.无状态 每次请求都没有联系
3.CS 客户端服务器模式 - 细节:
长连接:复用TCP连接 多个HTTP请求复用一个TCP 节省开销
HTTP1.0短连接 一次请求一次连接 文本格式传输
HTTP2.0长连接 二进制格式传输数据
HTTP明文传输不安全 HTTPS加入了SSL/TLS协议传输安全 - HTTPS原理
TCP三次握手 交换密钥 建立连接
Java List
List接口=>主要实现类ArrayList、LinkedList=>ArrayList底层数组默认大小10自动扩容,LinkedList底层链表无需扩容=>ArrayList扩容机制原来的1.5倍,扩容后使用Arrays.copyOf拷贝数组=>Vector底层数组线程安全扩容原来2倍=>Collections.synchronizedList获得线程安全的List,其他线程安全的数组:CopyOnWriteArrayList写时复制 占用内存 存在数据一致性问题=>数组排序Collections.sort
Redis
Redis基于内存、没有IO开销、读写速度快=>单线程,避免线程切换开销=>一般用来缓存热点数据缓解数据库压力,用来实现原子操作自增,例如用户访问数点赞数。
Mysql索引
索引类似于目录,是存储引擎提高访问速度的数据结构,数据是存在磁盘的如果没有引擎会全部加载到内存去检索
- BTREE索引:稳定、从根节点到叶子节点
- 哈希索引:无序、不支持范围查询、不支持模糊查询和最左匹配原则
- 最左匹配原则:组合索引中用到了最左边的索引 需要最左边所有索引依次 才生效
- 索引失效:没有最左匹配、%开头的like查询、upper()函数、使用or
Java虚拟机
- 双亲委派机制
一个类加载时 会层层委派给上级父类加载 不能加载则往下直到可以加载 - 垃圾回收机制
引用计数法 可达性分析
Spring
- IOC控制反转
- AOP切面编程 一些公共逻辑 例如事务管理 日志等
多线程
一些耗时较长的场景使用多线程,例如读入大量文件写入数据库或者发送邮件=>线程安全问题可以使用原子类=>synchronized是通过monitorenter和monitorexit指令实现=>CAS 比较交换
HashCode equals
equals == true 则 hashcode相同
hashcode相同 则 不一定相同