Boredream Blog

「day day up」

《Web页面请求的历程》 3.HTTP

时序图 补充 挥手可以4次也可以3次,服务器ACK时如果没有数据传输了,就可以同时携带FIN,即3次。 最后一次挥手不确定服务端是否收到,所以客户端会再等待一会再发一条ACK。 Http基于Tcp,Tcp可能数据有多片,都完成后交给上层Http。 因为要可靠性传输,所以Tcp每次请求出去都对应有个ACK回来。 简述流程: Tcp3次握手连接 ...

《Web页面请求的历程》 2.ARP DNS

时序图 补充 DHCP后虽然拿到了默认网关的IP,但在校园局域网内的链路层是依赖于MAC地址通信的,只有IP地址没用。 DNS部分省略了链路层通信的细节。 简述流程: 客户端广播询问默认网关的IP对应MAC地址是多少 所有主机都获取广播,只有默认网关发现target ip和自己匹配,做出响应发送自己MAC地址 客户端收到广播,记录MAC地址 客户端发送DN...

《Web页面请求的历程》 1.DHCP

最近看了一遍中科大的公开课 计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross) ,视频课程里略过了 《6.7 a day in the life of a web page request》,本章融汇了之前所学的内容完整的描述了一个Web请求的历程。这里通过时序图和wireshark抓包的方式梳理一遍。 时序图 补充 书里DHCP只有两步 ...

为什么使用Rx

网上很多讨论「怎么用」的,这里尝试从「为什么用」的角度思考 相关概念 响应式编程 介绍 WIKI 与命令式编程相对应 命令式 a = b + c 得到a的值,之后b、c改变和a无关。 响应式 b + c -> a 后续b、c的变化都会引起a改变。 函数式响应式编程 介绍 WIKI 用函数(map、filter等)实现响应式编程 Reactive Extensions 介绍 WI...

MVC MVP MVVM MVI

Android中的架构一路进化 MVC -> MVP -> MVVM 还有最新的方向 MVI 有什么区别? 为什么会进化? 如何选择使用? 以下主要以Android中各架构为例 MVC 传统写法是在Activity中,在点击等事件后,先「处理数据」再「设置视图」 此时Activity就相当于C,数据、视图逻辑都要做,在业务复杂时就会臃肿 设计架构的目标是? 让代码阅读性...

《合作的进化》

《合作的进化》 -罗伯特·阿克塞尔罗德 看书的随手笔记,比较乱。 囚徒困境 重复囚徒困境 最优解 以囚徒困境为例,讨论什么策略最好。 首先确定下,不是什么博弈情况都属于囚徒困境的。 囚徒困境条件:双方合作>双方背叛,2x双方合作 > 单方背叛 策略没有绝对的好与坏,某个策略是否好取决于和你博弈的是什么策略。 单次or有限次数囚徒困境下,背叛是纸面上最优的选项。 但如果是无限次...

《穷查理宝典》多元思维模型

书里芒格提到印象最深的一个理论就是他自创的 lollapalooza效应,多元思维模型。 大概意思是你要掌握不同学科的最基础核心的几个理论,然后当你遇到事情时,就可以多角度多思维方式看待思考,可以更好的解决问题。而单学科角度,很容易有「拿锤子看什么都像钉子」效应有不好的偏见。 书里举例提了几个基础理论,没有完整的列表。不过可以按芒格的意思自己大概整理下,主要是围绕硬科学等主流学科的基础理...

Java 线程池

什么是? 当需要异步线程执行的时候,不再新建一条,从一个已有的池子里获取闲置的线程,然后使用之,用完后放回池子。 为什么要? 无线创建线程,完成后销毁线程,浪费。线程池可以复用线程。Java线程 如何实现? 系统ThreadPoolExecutor类,可以自定义新建对象,也可以Executors工厂类创建fixed/singleThreadPool线程池。 新建线程池ThreadPool...

OkHttp3 源码解析

初始化 先 builder 创建 OkHttpClient 再 builder 创建 Request 然后 RealCall.newRealCall(request) 创建请求 最后 realCall.execute 执行 或者 realCall.enqueue 加入队列执行(走线程池) 异步调用 异步是传入回调封装成AsyncCall,然后将其加入到线程池里 Th...

Retrofit2 源码解析

Retrofit 初始化 builder模式创建,字段包括: Platform platform:平台,Android或Java8等 HttpUrl baseUrl:host地址 Call.Factory callFactory:工厂模式,创建Call用。Call是一个准备好要执行的请求接口,okhttp3里的,实现类是RealCall List converterFac...