Linux高性能服务器编程 黑马程序员linux网络编程
网络基础该部分都是理论知识,可以去看计网书籍 1. 协议的概念一组规则,两端都遵循这个协议来进行传输 2. 七层模型和四层模型 Socket编程1. 套接字在通信过程中,套接字一定是成对出现的 一个文件描述符指向一个套接字(该套接字内部由内核借助两个缓冲区实现读写) Linux套接字实现原理: 2. 预备知识2.1 网络字节序内存中的多字节数据相对于内存地址有大端和小端之分 小端法:(PC本地存储)高位存高地址,低位存低地址 大端法:(网络存储)高位存低地址,低位存高地址 网络的数据流采用大端字节序,而本地的数据流采用小端字节序,因此要通过函数来转换: htonl –> 本地 –>网络 (IP) htons –> 本地 –> 网络 (port端口) ntohl –> 网络 –> 本地 (IP) ntohs –> 网络 –> 本地 (port) 2.2 IP地址转换函数 2.3 sockaddr数据结构#include <arpa/inet.h> struct sockaddr_in { ...
黑马程序员C++提高编程
黑马程序员C++提高编程 提高阶段主要针对泛型编程和STL技术 一、模板 模板就是建立通用的模具,大大提高复用性,也是泛型编程的思想。C++提供两种模板机制:①函数模板 ②类模板 🔴注意: ① 模板不是万能的。 ② 模板不能直接使用。 1.1 函数模板1.1.1 函数模板基础知识 语法: 12template <typename T > 函数声明或定义 解释:template— 声明创建模板;typename — 可以用class代替;T — 通用的数据类型 使用:①自动类型推导 ②显示指定类型 🟦意义:提高复用性,将类型参数化。 1234567891011121314151617//函数模板的使用template<typename T>void MySwap(T& a, T& b){ T temp = a; a = b; b = temp;}int main(){ int a = 10; int b = 20; MySwap(a,...
黑马程序员C++核心编程学习笔记
黑马程序员C++核心编程学习笔记一、内存1.1 内存四区C++程序在执行时,将内存大致分为4个区域:代码区,全局区,栈区,堆区 代码区:存放函数体的的二进制代码,操作系统管理。 🔵特点:①共享 :对于频繁被执行的程序,只需要在内存中有一份代码即可。 ②只读:目的是防止程序意外地修改了它的指令。 全局区:存放全局变量、静态变量和常量(除了const修饰的局部变量)。程序结束时由操作系统释放。 1234567891011121314151617181920212223//全局变量int g_a = 10;const int c_g_a = 10;int main(){ int l_a = 10; //静态变量 static int s_a = 10; //常量:字符串常量/const修饰的变量(全局/局部变量) const char* a = "hello"; const int c_l_a = 10; cout << "局部变量l_a的十进制地址为:" << (int)&l_a...