感想随笔:

1、文本协议与二进制协议

个人理解:

1)文本协议是根据文本中出现某些字符来表达信息,如出现\n、<、{、"等等,json xml等就是文本协议;

2)二进制协议是按照字节的位置和长度来表达信息,最近半年做的push系统的消息协议就是二进制协议


2、序列化与RPC

1)所谓RPC,是进程间调用方法的一种机制,它是跨语言的;那么不同语言不同进程间如何理解消息呢,客户端把消息做一个序列化,服务端反序列化,并解析出消息中的方法名和参数,执行自己的方法后,把返回值序列化传给客户端,客户端反序列化,得到结果;lajp就是基于这种机制。

2)当然,序列化和RPC没有必然联系,它本身是为了存储和传输对象信息,把一种语言中的对象序列化后可以存储起来或者传输给其他进程来解析。protobuff就是一种序列化的机制。


3、C与操作系统API

为何C可以调用操作系统API?

1)API是源码级别的接口,unix操作系统就是用C编写的,所以提供的API也是C语言实现的,我们写程序去调用unix的API,最终的代码都是在一个环境下编译连接执行的。就像java只要import一个类,就可以调用那个类提供的方法,因为最终的代码都在JVM下执行。

2)C语言中的库,就像java中的jar包,在同一个环境下运行,所以引入库,可以编译通过;连接库,可以生成可执行文件。