ArrayList
作为平时常用的一个集合,在面试中也是一个常考的点,今天整理一下它的扩容机制。
Https 简单入门
http协议传输的数据都是在网络上明文裸奔的,这样很容易会被网络的中间节点窃听、篡改、冒充。
http向https的演变过程,可以模拟成下面几步。
1. 对称加密
1 | Client -------- Server |
客户端和服务端使用对称解密算法例如AES,传输前对数据加密,然后由对方解密的方式。但这种方式在对外的web服务场景下行不通,因为需要对外暴露对称算法的钥匙。
2. 非对称加密
1 | Client ---- 🐶 ---- Server |
搭建Kubernetes集群
数据结构之八大排序
选择排序
1 | public static void selectSort(int[] array) { |
简单选择排序的比较次数与序列的初始排序无关。 假设待排序的序列有 N 个元素,则比较次数永远都是N (N - 1) / 2。而移动次数与序列的初始排序有关。当序列正序时,移动次数最少,为 0。当序列反序时,移动次数最多,为3N (N - 1) / 2。
了解Nginx架构设计
管理进程、多工作进程
nginx采用一个master管理进程、多个worker进行(cache manager | cache loader进程)的设计。
好处
- 利用多核系统的并发处理能力
- 负载均衡
- 管理进程监控工作进程的状态,负责管理其行为
- 占用资源少
- 管理其它进程,提高系统可靠性
- nginx运行中升级,实现动态扩展、定制、进化
Nginx 在启动时的流程
解析命令行,处理参数。
第2步,这里就是nginx的平滑升级(源码ngx_add_inherited_sockets方法),旧版本的master进程会通过execve系统调用来启动现版本的master进程(先fork出子进程再调用exec运行新的程序)。Nginx通过环境变量,旧版本的master告诉新版本master是在平滑升级,并对Nginx服务监听的句柄做继承处理。
Java面试知识点汇总(一)
Java中的四种引用及应用场景是什么?
- 强引用:通常new操作符创建一个对象时所返回的引用即为强引用
- 软引用:若一个对象只能通过软引用到达,那么这个对象在内存不足时会被回收
- 弱引用:若一个对象只能通过弱引用到达,那么它就会被回收(即使内存充足)
- 虚引用:虚引用是Java只最‘弱’的引用,通过它甚至不能获取被应用的对象,它存在的唯一作用就是当它指向的对象回收时,它本身会被加入到引用队列中,这样我们可以知道它指向的对象何时被销毁。
ArrayList, LinkedList, Vector的区别是什么?
ArrayList: 内部采用数组存储元素,支持高效随机访问,支持动态调整大小
LinkedList: 内部采用链表来存储元素,支持快速插入/删除元素,但不支持高效地随机访问
Vector: 可以看作线程安全版的ArrayList