小知识点
同步和异步的区别:
在网络编程中,同步的意思是,进行收发数据,等到数据真正发送出去或者接受到,才返回;而异步的意思是,可以把数据发送到缓冲区中返回,而发送成功的消息是
通过时间进行通知的。异步可以腾出很多的cpu来处理其他事情,所以异步的方式比较灵活,线程同步是指,多个线程协同完成一件工作,一个线程需要等待其他线程完成相关的工作,才能接着往下运行。线程同步一半采用互斥体,信号量,消息等方式。
socket的阻塞和非阻塞的区别在于:
当消息发送到发送缓冲区的时候当前来到了一段数据,可是当前剩余的缓冲区大小不能容纳这段数据,对于阻塞方式他会等待这段消息写入缓冲区之后返回消息的大小,而非阻塞会写入当前剩余缓冲区大小的数据然后返回返回已经写入缓冲区数据的大小。
用多叉树转换成二叉树
在多叉树中,将当前节点的第一个分支,作为当前的左儿子,剩余的字符串为一体,作为右儿子,然后进行准换。
判断当前的数中二进制有多少个1
count = 0; while(n) { n = n&(n-1); count ++; }
然而也可以用二叉树进行索引,用叶子节点表示当前数的二进制的每一位,然后从叶子向跟节点进行递归,然后对1的个数进行累和。
还有一种是与一个数的。。。。。