感觉很久没学习了,由于之前铺的太广,对于安卓的技术已经落后于人,现在开始记录知识点开始不可。
本文不算CSDN篇章,仅为个人日记
UDP、IP、TCP、HTTP、HTTPS的简单说明
网络分为物理层、数据层、网络层、传输层、会话层、应用层。
ip是网络层网际协议,根据协议号判断传输层给tcp还是udp。
udp是传输层数据报协议,提交小传输快,只针对数据,无需建立链接,不保证百分百收到。
tcp是传输层传输控制协议,需要三次握手进行连接,并保持长连接,四次握手断开,数据不丢失不重复。
http是应用层超文本传送协议,在tcp协议的基础上的实际应用,http的传输层百分百是tcp协议,但http协议完成后会断开连接,算是短连接,但可以并行多个。
https是在http的基础上加了一个ssl层,进行数据加密和身份认证,但需要CA证书,且比较耗电。
socket是应用层连接传输层的一个接口,可使用tcp或者udp,需要双方的ip和端口,服务器端不停轮询是否有客户端的消息,客户端需要发送心跳包保活。
个人理解网络传输流程:一个数据要发送,选择http的数据格式,通过tcp的传输方式,发送给ip的所在位置,存入ip所在物理设备中,再反过来一层层解析拿到数据。
MVC、MVP、MVVM的简单说明
MVC是Model、View、Control的简称,包含数据模型,页面视图和控制器,三者一对一相互依赖,页面显示调用控制器请求数据,控制器将数据存入数据模型,数据模型将数据处理后通知页面更新。
但是如果页面有多种样式,该页面的数据模型就会增加很多数据处理的逻辑,造成逻辑复杂且无法复用。
MVP是Model、View、Presenter的简称,包含数据模型,页面视图和主持人,数据和页面完全分离,两者依靠主持人去沟通。不管页面再多种多样,都和数据模型没有关系,解决mvc的问题,但是却给presenter增加了很多工作量。
MVVM是Model、View、ViewModel的简称,包含数据模型,页面视图和视图模型,数据模型和页面通过一个绑定器绑定在一起,当数据变化时通过监听者的模式告诉视图模型,视图模型开始更新页面。绑定器承担了setdata的工作,给view和model都省了很多工作量。
个人理解无论哪种框架代码量都不会少,只是放的位置不一样,方便了多人协作开发、单元测试和后期修改,模块间的解耦可以让开发者专心开发自己负责的模块。
有一位面试官跟我说过,每个框架都有自己的优缺点,选择框架主要是看当前项目适合哪种,自己一定要明白每种框架的优缺点,但我感觉我了解的还是太浅薄,希望各位能在评论指出问题所在。
Kotlin的简单说明
:用来定义变量类型
?用来定义可为空
object为单例模式
lazy为延迟初始化或者懒加载
is代替了instanceOf
in代替了contains
when代替了switch
可以对类进行扩展,B继承A,以A的名义写新方法,C继承B,就可以以A的名义调用该方法,其实是伪装。
今天时间不够,先发改天再写。