- TCP三次握手与四次挥手
https://www.cnblogs.com/jainszhang/p/10641728.html
序号:表示发送的数据字节流,确保TCP传输有序,对每个字节编号
确认序号:发送方期待接收的下一序列号,接收成功后的数据字节序列号加 1。只有ACK=1时才有效。
ACK:确认序号的标志,ACK=1表示确认号有效,ACK=0表示报文不含确认序号信息
SYN:连接请求序号标志,用于建立连接,SYN=1表示请求连接
FIN:结束标志,用于释放连接,为1表示关闭本方数据流
image.png
image.png
- 为什么三次握手和四次挥手?
三次握手时,服务器同时把ACK和SYN放在一起发送到了客户端那里。
四次挥手时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方 ACK 和 FIN 一般都会分开发送。 - 为什么客户端最后还要等待2MSL?
客户端需要保证最后一次发送的ACK报文到服务器,如果服务器未收到,可以请求客户端重发,这样客户端还有时间再发,重启2MSL计时。
- JVM内模型和GC
https://www.jianshu.com/p/76959115d486 - sp跨进程共享数据
https://www.jianshu.com/p/8cd96874c127"
-
Activity启动模式
https://blog.csdn.net/weixin_44870139/article/details/112734363 -
Java多线程
https://blog.csdn.net/weixin_44797490/article/details/91006241
- 底层实现是 链表数组,JDK 8 后又加了 红黑树
- 实现了 Map 全部的方法
- key 用 Set 存放,所以想做到 key 不允许重复,key 对应的类(一般是String)需要重写 hashCode 和 equals 方法
- 允许空键和空值(但空键只有一个,且放在第一位)
- 元素是无序的,而且顺序会不定时改变(每次扩容后,都会重新哈希,也就是key通过哈希函数计算后会得出与之前不同的哈希值,这就导致哈希表里的元素是没有顺序,会随时变化的,这是因为哈希函数与桶数组容量有关,每次结点到了临界值后,就会自动扩容,扩容后桶数组容量都会乘二,而key不变,那么哈希值一定会变)
- 插入、获取的时间复杂度基本是 O(1)(前提是有适当的哈希函数,让元素分布在均匀的位置)
- 遍历整个 Map 需要的时间与数组的长度成正比(因此初始化时 HashMap 的容量不宜太大)
- 两个关键因子:初始容量、加载因子
- HashMap不是同步,HashTable是同步的,但HashTable已经弃用,如果需要线程安全,可以用synchronizedMap,例如 Map m = Collections.synchronizedMap(new HashMap(...));
Native技术与 Web技术混合开发的移动应用,基于 JSBridge。
- 不要使用 xml 方式创建,而是使用代码把 WebView 给 new 出来
- 不要让 WebView 持有对 Activity/Fragment 的 Context 引用(核心)
- 销毁时,停止 WebView 的加载,并从父控件中将其移除
- Service
https://www.jianshu.com/p/4194a352d40f
两种启动方式和生命周期
image.png - ContentProvider
https://www.jianshu.com/p/ea8bc4aaf057
Android 四大组件之一,进程间进行数据交互 & 共享,即跨进程通信。
- 广播
https://www.jianshu.com/p/ca3d87a4cdf3 - Handler机制
https://blog.csdn.net/luoyingxing/article/details/86500542
https://www.jianshu.com/p/9fe944ee02f7 - Activity生命周期
https://www.jianshu.com/p/b1ff03a7bb1f - 事件分发机制
https://www.jianshu.com/p/38015afcdb58
汇总
https://blog.csdn.net/Gaga246/article/details/123049841
https://mp.weixin.qq.com/s/mMoBTv_4FwdZcegQY5rtvw
网友评论