35. 搜索插入位置✅ 二分模板题 class Solution { public: int searchInsert(vector<int>& nums, int target) { int left = 0, right = nums.size() - 1, mid; while(left <= right) { mi…
多进程并发服务器 思路 ①Socket(); 创建监听套接字lfd(首字母大写是因为调用的自封装函数) ②Bind(); 绑定地址结构 Strcut sockaddr_in addr; ③Listen(); 设置监听上限 ④ while (1) { cfd = Accpet(); //接收客户端连接请求 pid = fork(); if(pid =…
双指针法:通过两个指针在一个for循环下完成两个for循环的工作,一般是将O(n^2)的时间复杂度,降为O(n) 283. 移动零✅ 简单模拟 不改变数组内元素的相对位置 复杂度O(n) class Solution { public: void moveZeroes(vector<int>& nums) { int slow …
https://zhuanlan.zhihu.com/p/139515439 范围基for循环 范围基for循环(Range-based for loop)是 C++11 引入的一种简化的循环结构,用于遍历容器(如数组、向量、集合、映射等)中的元素 基本语法: for (declaration : container) { // 对每个元素执行的操…
段错误 进入gdb调试页面,直接run,停下的位置就是段错误所在位置
面向对象 在C++中,创建对象的两种方式有本质的不同,分别代表了在栈上和在堆上创建对象 1. SpeechManager* sm = new SpeechManager(); 堆上创建对象(动态分配内存): 使用new运算符,意味着SpeechManager对象是在堆上分配的 返回类型是SpeechManager*,即指向SpeechManager…
map 新旧两种方式遍历map unordered_map<char, int> mp; for(const auto &mypair : mp) { cout << mypair.first << " " << mypair.second << endl; } 或者 for(co…
1. 两数之和✅ 错过一次没关系,第二次把握住就好 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> mp; vector<int> res;…
预备知识 网络套接字socket 属于Linux特殊文件类型(管道、套接字、字符设备、块设备) 一个文件描述符指向一个套接字(该套接字内部由内核借助两个缓冲区实现) 在通信过程中, 套接字一定是成对出现的 类比前面进程通信中的管道:一个管道掌控着两个文件描述符和一个缓冲区,而一个套接字掌控着一个文件描述符和两个缓冲区 ps:图中画的不恰当,数据流通…
协议 协议:从应用角度讲,协议就是一组规则,用于数据的传输和解释 典型协议 应用层:HTTP、FTP、NFS、SSH、telnet 传输层:TCP、UDP 网络层:IP、ICMP、IGMP 链路层:以太网帧协议、ARP 网络应用程序设计模式 c/s模式: 客户端服务器端架构 client/server 优点: 可以缓存数据,提高传输效率 协议选择灵…