小木箱@Singapore

Results 90 issues of 小木箱@Singapore

retrofit是基于okhttp的,因此retrofit所有的工作都是围绕在请求体和响应体来展开的,Retrofit提供了各种类型的转换器以及可以自定义转换器,去构建你的请求体,以及通过转换器去序列化响应体为你想要的类型,从而保证你的请求体和响应体都是安全的

### 1. project/build.gradle 在 project/build.gradle 添加如下代码: ```groovy classpath 'com.novoda:bintray-release:0.9.2' ``` ### 2. your_moudle/build.gradle 为了上传到JCenter ```groovy apply plugin: 'com.novoda.bintray-release' publish { userOrg = 'microkibaco' //在https://bintray.com上注册的用户名 groupId = 'com.microkibaco.github' //jCenter上的路径 artifactId =...

# 1、初步认识 ## 观察者模式的定义:   在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。 ## 大白话:   其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 # 2、这个模式的结构图 ![image](https://user-images.githubusercontent.com/17723631/97501099-aef00680-19ab-11eb-8afc-ed390e4329f8.png) # 3、可以看到,该模式包含四个角色 - **抽象被观察者角色**:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。 - **抽象观察者角色**:为所有的具体观察者定义一个接口,在得到主题通知时更新自己。 - **具体被观察者角色**:也就是一个具体的主题,在集体主题的内部状态改变时,所有登记过的观察者发出通知。 - **具体观察者角色**:实现抽象观察者角色所需要的更新接口,一边使本身的状态与制图的状态相协调。 # 4、使用场景例子   有一个微信公众号服务,不定时发布一些消息,关注公众号就可以收到推送消息,取消关注就收不到推送消息。

#### IP地址 ![image](https://user-images.githubusercontent.com/17723631/97497538-9c72ce80-19a5-11eb-809b-5f0afe220e24.png) #### 端口号 ![image](https://user-images.githubusercontent.com/17723631/97497554-a4327300-19a5-11eb-9eff-6c79a7c03ade.png) 端口号规定为16位,即允许一个IP主机有2的16次方65535个不同的端口。其中: - 0~1023:分配给系统的端口号 > 我们不可以乱用 > 常用协议使用的端口:HTTP:80,FTP:21,TELNET:23 - 1024~49151:登记端口号,主要是让第三方应用使用 > 但是必须在IANA(互联网数字分配机构)按照规定手续登记, - 49152~65535:短暂端口号,是留给客户进程选择暂时使用,一个进程使用完就可以供其他进程使用。 > 在Socket使用时,可以用1024~65535的端口号

- 定义:即客户端/服务器结构,是软件系统体系结构 - 作用:充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。 > Socket正是使用这种结构建立连接的,一个套接字接客户端,一个套接字接服务器。 如图: ![image](https://user-images.githubusercontent.com/17723631/97497326-4b62da80-19a5-11eb-8e99-d2e53793bd5d.png) 可以看出,Socket的使用可以基于TCP或者UDP协议。

#### TCP - 定义:Transmission Control Protocol,即传输控制协议,是一种传输层通信协议 > 基于TCP的应用层协议有FTP、Telnet、SMTP、HTTP、POP3与DNS。 - 特点:面向连接、面向字节流、全双工通信、可靠 - **面向连接**:指的是要使用TCP传输数据,必须先建立TCP连接,传输完成后释放连接,就像打电话一样必须先拨号建立一条连接,打完后挂机释放连接。 - **全双工通信**:即一旦建立了TCP连接,通信双方可以在任何时候都能发送数据。 - **可靠的**:指的是通过TCP连接传送的数据,无差错,不丢失,不重复,并且按序到达。 - **面向字节流**:流,指的是流入到进程或从进程流出的字符序列。简单来说,虽然有时候要传输的数据流太大,TCP报文长度有限制,不能一次传输完,要把它分为好几个数据块,但是由于可靠性保证,接收方可以按顺序接收数据块然后重新组成分块之前的数据流,所以TCP看起来就像直接互相传输字节流一样,面向字节流。 - TCP建立连接 必须进行**三次握手**:若A要与B进行连接,则必须 - 第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认。即A发送信息给B - 第二次握手:服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认。即B收到连接信息后向A返回确认信息 - 第三次握手:客户端收到服务器的(SYN+ACK)报文段,并向服务器发送ACK报文段。即A收到确认信息后再次向B返回确认连接信息 > 此时,A告诉自己上层连接建立;B收到连接信息后告诉上层连接建立。...