网络编程(三) IO即为网络网络 I/O,多路即为多个tcp连接,复用即为共用一个线程或者进程,模型最大的优势是系统开销小,不必创建也不必维护过多的线程或者进程。IO多路复用,最主要是服务器同时可以处理监听套接字和连接套接字 可以不用多创建一个线程和进程 直接用io复用提高程序的效率。
网络编程(二) 由于进程通信的本质是要让两个不同的进程看到同一份资源,我们可以在物理内存上开辟一块空间,这块空间被称为共享内存,然后让这两个进程通过某种方式都能访问到这块内存,这样的话,两个进程之间就可以通信了。共享内存操作默认不阻塞,如果多个进程同时读写共享内存,可能出现数据混乱,共享内存需要借助其他机制来保证进程间的数据同步,比如:信号量,共享内存内部没有提供这种机制。std::condition_variable, 要搭配着mutex来使用,主要的函数为wait和notify函数。读写的内容存在于内存中。
网络编程(一) 内存是按照字节进行编址的,如果是char,int8类型的数据只占一个地址,就不会存在字节序问题。如果是short,int等占用多个字节的类型就会存在内存先存高位还是先存低位的问题,这就是字节序问题。字节序主要有两种:大端序和小端序。
每天一点C++——杂记230408 先介绍一下什么是左值,什么是右值。左值是表达是结束后仍然存在的持久化对象,可取地址,右值是表达式结束后就不再存在的临时对象,不可取地址。所有的具名变量活对象都是左值,而右值不具名。C++通过右值引用可以充分使用临时变量或者即将不使用的变量即右值资源,减少不必要的拷贝来提高效率。C++引入了右值引用&&,移动构造函数,移动赋值和std::move。
python杂记——if obj 和 if obj is None的区别 if obj;if not obj;if obj isNone; if not obj is None;if obj is not None; if obj == None