前言
Android常用知识体系是什么鬼?所谓常用知识体系,就是指对项目中重复使用率较高的功能点进行梳理。注意哦,不是Android知识体系。
古语道:学而不思则罔,思而不学则殆。如果将做项目类比为“学”,那么整理就可以类比为“思”。
在做项目过程中总是会遇到使用相同的功能,比如toast、对话框、刷新加载列表、网络框架、数据库等等,一个简单的方法就是从之前的项目中复制粘贴到新项目中,然后做一些个性化修改,好了,这就“大功告成”了。当另外一个新项目用到了,再次复制粘贴。这样是不是很low。但是当项目一个接一个的时候,这个方法是一个简单快速的方法。
那么当几乎没有项目可做的时候或者当周末有时间的时候,我们是不是应该对功能点进行一下思考呢。那么思考什么呢?
1.思考这个功能点经过多个项目的“考验”,是不是“成年”了,可以“独立”出来了;
2.思考这个功能点是不是属于常用功能,值得“独立”出来;如果是的话,为什么不把这个功能点从项目中“独立”出来呢。有人会说,我记忆好,能知道所有项目中用到的功能点,我可以随时找到。是吗?我当下很怀疑啊。
1、网络
网络协议模型
应用层:负责处理特定的应用程序细节
HTTP、FTP、DNS
传输层:为两台主机提供端到端的基础通信
TCP、UDP
网络层:控制分组传输、路由选择等
IP
链路层:操作系统设备驱动程序、网卡相关接口
TCP 和 UDP 区别
TCP 连接;可靠;有序;面向字节流;速度慢;较重量;全双工;适用于文件传输、浏览器等
- 全双工:A 给 B 发消息的同时,B 也能给 A 发
- 半双工:A 给 B 发消息的同时,B 不能给 A 发
UDP 无连接;不可靠;无序;面向报文;速度快;轻量;适用于即时通讯、视频通话等
TCP 三次握手
A:你能听到吗?
B:我能听到,你能听到吗?
A:我能听到,开始吧
A 和 B 两方都要能确保:我说的话,你能听到;你说的话,我能听到。所以需要三次握手
TCP 四次挥手
A:我说完了
B:我知道了,等一下,我可能还没说完
B:我也说完了
A:我知道了,结束吧
B 收到 A 结束的消息后 B 可能还没说完,没法立即回复结束标示,只能等说完后再告诉 A :我说完了。
POST 和 GET 区别
Get 参数放在 url 中;Post 参数放在 request Body 中
Get 可能不安全,因为参数放在 url 中
HTTPS
HTTP 是超文本传输协议,明文传输;HTTPS 使用 SSL 协议对 HTTP 传输数据进行了加密
HTTP 默认 80 端口;HTTPS 默认 443 端口
优点:安全
缺点:费时、SSL 证书收费,加密能力还是有限的,但是比 HTTP 强多了
2、Java 基础&容器&同步&设计模式
StringBuilder、StringBuffer、+、String.concat 链接字符串:
- StringBuffer 线程安全,StringBuilder 线程不安全
- +实际上是用 StringBuilder 来实现的,所以非循环体可以直接用 +,循环体不行,因为会频繁创建 StringBuilder
- String.concat 实质是 new String ,效率也低,耗时排序:StringBuilder < String