0%

1. 名称解释

可以用WireShark通过分析Tcp报来得知,工具显示得很清楚。

1.1 10个控制标志位 Flag

下面的含义只针对其标志位为1的情况,比如SYN=1才代表握手阶段。FIN=1代表挥手阶段。

  • SYN 表示新建连接

  • ACK 表示响应
    如果发送数据为空的话,可以发送同一个Seq的多个ACK,这个可以用来保活和窗口协商。这个单个ACK只能TCP协议实现发送,应用层只能发[ACK+PSH]

  • FIN (Finish)表示关闭连接

  • PSH (Push)表示传输数据

  • RST (Reset)表示连接重置
    这个RST的原因是因为close连接时,本地接受缓冲区还有数据。避免RST的方法就是调用close的之前,调用shutdown。netty称之为优雅关闭。

  • Nonce

  • CWR

  • ECN-Echo

  • Urgent

Flags 一共16位,目前只用到9位,剩下的7位是保留位。

1.2 Tcp传输数据中的字段

Seq(Sequence number): 本次发送得顺序号
Ack(Acknowledgment number): 确认号,其值 = 对方的seq + 对方的Tcp Segement size, 其含义代表我收到你seq号的数据了,长度是多少。
Next sequence number: 这个是期待对方返回的Ack值,这个不是在TCP协议内。

注意ACK是标志位, Ack是确认号。大小写不一样,含义也不同。

Read more »

1. 布局方式

iOS有三种基本的界面布局的方法,分别是手写UI,xib和storyboard。手写UI是最早进行UI界面布局的方法,优点是灵活自由,缺点是需要写大段的代码进行布局。xib也是比较早出现的UI布局的方式,优点是不需要手写代码,但是每个界面对应一个xib,管理起来复杂。而storyboard则是在iOS5以后出现的,是苹果官方主推的一个代替xib的策略,不仅能将xib汇总统一管理,还可以描述各种场景之间的过渡,缺点是多人协作开发时容易产生冲突。

链接:https://www.jianshu.com/p/279162f77354

Read more »

1. WebSocket介绍

WebSocket技术主要是为了解决Ajax和Comet里XMLHttpRequest附带的缺陷所引起的问题。
一旦Web服务器与客户端之间建立起WebSocket协议的通信连接,之后所欲的通信都依靠这个专用协议进行。通信过程中可互相发送JSON、XML、HTML或图片等任意格式的数据。
由于是建立在HTTP基础上的协议,因此连接的发起方仍然是客户端,但是连接一旦建立通信后,无论是客户端还是服务器端,都可以直接向对方发送报文。

WebSocket协议的主要特点:

  • 服务器端推送功能
  • 减少通信量
Read more »

1. rustup

1
2
3
rustup default nightly # use nightly version
rustup default stable # use stable version
rustup update # update rust version
Read more »

1. mac安装

1
2
3
4
./configure --prefix=$HOME/local
make
make check
make install
Read more »

1. 正则表达式的修饰符

1.1 /g

/g修饰符代表全局匹配, 查找所有匹配而非在找到第一个匹配后停止。
注意string.match和RegExp.exec的区别,前者的正则表达式不需要加上/g,而后者需要加上/g。

exec with a global regular expression is meant to be used in a loop, as it will still retrieve all matched subexpressions. So:

1
2
3
4
5
6
7
var re = /[^\/]+/g;
var match;

while (match = re.exec('/a/b/c/d')) {
// match is now the next match, in array form.
}
// No more matches.

String.match does this for you and discards the captured groups.

Read more »

1. 打开xcode时显示启动页

“Window” -> “Welcome to Xcode”
勾选”Show this window when Xcode launches”。

Read more »