- 博客(95)
- 资源 (8)
- 收藏
- 关注
原创 teamtalk文件服务器学习篇
msg_server 处理(== CID_FILE_REQUEST==) 信令,调用 HandleClientFileRequest 函数,转发给 file_server,信令为 (,里面包含了对应的file_server的ip和port地址,以及其他的必要信息,接受方收到后也是要登录file_server。,此时附带了task_id 和 对应的file_server的ip和port地址。真正开始传输文件时先要登录 file_server,使用user 和 task_id,并注明自己的角色。
2024-08-16 23:57:52
777
原创 c++11并发与多线程
第五节 互斥量概念、用法、死锁演示及解决详解(1)互斥量(mutex)的基本概念(2)互斥量的用法(2.1)lock(),unlock()(2.2)std::lock_guard类模板(3)死锁(3.1)死锁演示(3.2)死锁的一般解决方案(3.3)std::lock()函数模板(3.4)std::lock_guard的std::adopt_lock参数第六节 unique_lock详解(1)unique_lock取代lock_guardunique_lock是一个类模板,工作中
2021-11-07 22:57:18
576
原创 C/C++面经
目录C/C++形参和实参(区别、背后实现过程)、返回值内存变量指针和引用语言函数类构造函数拷贝、赋值继承重载运算符关键字const宏定义overload、override、overwrite访问权限volatilestatic转换模板网络编程调试算法?C/C++2、结构体内存对齐问题?形参和实参(区别、背后实现过程)、返回值4、在传递函数参数时,什么时候该使用指针,什么时候该使用引用呢?45、形参与实参的区别?46、值传递、指针传递、引用传递的区别和效率77、C++中的指针参数传递和引用参数传
2021-10-11 22:34:58
553
原创 刷题笔记(9)---排序
目录排序算法冒泡排序迭代递归选择排序迭代递归插入排序希尔排序快速排序(递归)归并排序迭代递归堆排序计数排序桶排序基数排序排序算法冒泡排序迭代递归选择排序迭代递归插入排序希尔排序快速排序(递归)归并排序迭代递归堆排序计数排序桶排序基数排序...
2021-09-20 19:35:47
154
原创 刷题笔记---动态规划
目录动态规划二级目录动态规划入门509. 斐波那契数70. 爬楼梯343. 整数拆分96.不同的二叉搜索树(××)01背包问题416. 分割等和子集(××)494. 目标和(××)474.一和零(××)完全背包问题动态规划二级目录1.确定dp数组(dp table)以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组动态规划入门509. 斐波那契数// An highlighted blockvar foo = 'bar';70. 爬楼梯//
2021-09-09 15:52:37
99
原创 刷题笔记(7)---回溯
目录回溯组合问题77. 组合216. 组合总和 III17. 电话号码的字母组合39. 组合总和40.组合总和II(很重要,未学习)回溯组合问题77. 组合class Solution {private: vector<int> path; // 用来存放符合条件结果 vector<vector<int>> result; // 存放符合条件结果的集合 void backtracking(int n, int k, int sta
2021-08-28 23:27:46
268
原创 刷题笔记(6)---哈希表
目录哈希表二级目录三级目录242. 有效的字母异位词349. 两个数组的交集202. 快乐数1. 两数之和15. 三数之和(没看懂)18. 四数之和哈希表二级目录三级目录242. 有效的字母异位词class Solution {public: bool isAnagram(string s, string t) { int record[26] = {0}; for(int i=0; i<s.size(); ++i) { record[s[i] -
2021-08-26 23:13:56
220
原创 刷题笔记(5)---字符串
目录字符串二级目录三级目录344. 反转字符串541. 反转字符串 II剑指 Offer 05. 替换空格151. 翻转字符串里的单词剑指 Offer 58 - II. 左旋转字符串KMP(未仔细学习过)28. 实现 strStr()字符串二级目录三级目录344. 反转字符串class Solution {public: void reverseString(vector<char>& s) { int l = 0, r = s.size() - 1;
2021-08-26 15:29:30
137
原创 刷题笔记(4)---数组
目录一级目录二级目录三级目录27. 移除元素26.删除排序数组中的重复项一级目录二级目录三级目录27. 移除元素class Solution {public: int removeElement(vector<int>& nums, int val) {/* for(vector<int>::iterator it = nums.begin(); it!=nums.end(); ++it) { i
2021-08-25 20:35:30
378
原创 刷题笔记(3)---二叉树
目录二叉树二级目录110. 平衡二叉树98. 验证二叉搜索树572. 另一棵树的子树104. 二叉树的最大深度二叉树二级目录110. 平衡二叉树链接: 110. 平衡二叉树.class Solution {public: int level(TreeNode* root) { if (root == nullptr) { return 0; } return max(level(root-
2021-08-22 15:51:33
861
原创 刷题笔记(2)---栈和队列
目录栈和队列栈的用途队列的用途1. 通过stack实现特殊顺序的读取232. 用栈实现队列面试题 03.05. 栈排序“save or later”问题20. 有效的括号3. ⽤stack解决Top-Down结构的问题栈和队列栈的用途可以⽤Stack作为辅助,实现深度优先算法(Depth first search,DFS),或者将递归转为while循环递归本⾝就是相当于把函数本⾝⼀层⼀层加到操作系统的内存栈上⼊栈操作相当于递归调⽤⾃⾝,出栈操作相当于递归返回。队列的用途我们可以⽤Queue作为辅
2021-08-21 23:30:10
168
原创 刷题笔记(1)---链表
目录一级目录链表83. 删除排序链表中的重复元素82. 删除排序链表中的重复元素 II追赶指针技巧876. 链表的中间结点剑指 Offer 22. 链表中倒数第k个节点141. 环形链表142. 环形链表 II一级目录链表83. 删除排序链表中的重复元素链接: 83.删除排序链表中的重复元素.class Solution {public: ListNode* deleteDuplicates(ListNode* head) { if(head == nullptr)
2021-08-21 19:57:56
178
原创 来探一探C++的引用
这里写目录标题创建引用变量引用用作函数参数按值传递与按引用传递使用const的理由引用用作类对象何时使用引用参数创建引用变量1. 引用是已定义变量的别名(另一个名称)。 定义引用的一般格式:类型 &引用名 = 变量名; 例如:int a = 1; int &ra = a; // b是a的别名,因此a和b是同一个单元 注意:定义引用时一定要初始化,指明该引用变量是谁的别名。 2. 引用的主要用途: 2.1 用作函数的形参(主要指结构和对象参数)。通
2021-07-30 15:51:19
94
原创 TCP三次握手和四次挥手------抓包实验
这里写目录标题实验准备与介绍TCP三次握手和四次挥手演示TCP的连接的建立与关闭TCP 三次握⼿异常情况分析TCP 第⼀次握⼿的 SYN 丢包了,会发⽣什么?问题1:我的测试结果是重连了4次,但是内核定义为6,这是为什么呢?实验一小结TCP 第⼆次握⼿的 SYN、ACK 丢包了,会发⽣什么?问题2:我的测试结果是重连了3次,但是内核定义为2,这是为什么呢?实验二小结TCP 第三次握⼿的 ACK 包丢了,会发⽣什么?实验三小结实验准备与介绍阿里云服务器(IP:106.14.165.89)虚拟机客户端(I
2021-07-29 21:28:15
1458
原创 虚函数与多态(一)
这里写目录标题多态静态绑定与动态绑定虚函数虚析构函数虚表指针基类派生类object slicing与虚函数overload、override、overwrite多态1.多态性是面对对象程序设计的重要特征之一。2.多态性是指发出同样的消息被不同类型的对象接收时可能导致完全不同的行为。3.多态的实现: 3.1函数重载 3.2运算符重载 3.3模板 3.4虚函数静态绑定与动态绑定1.静态绑定 绑定过程出现在编译阶段,在编译期就已经确定要调用的函数。 2.动态绑定 绑定过程工作在程
2021-07-26 21:28:05
393
原创 虚继承对C++对象内存模型造成的影响
这里写目录标题回顾类/对象大小计算虚基类表回顾类/对象大小计算虚基类表1.virtual base table 1.1本类地址与虚基类表指针地址的差 1.2虚基类地址与虚基类表指针地址的差 2.virtual base table pointer(vbptr)#include <iostream>using namespace std;class BB{public: int bb_;};class B2 : virtual public BB{pub
2021-07-26 20:25:58
234
2
原创 继承(二)
目录转换与继承派生类到基类的转换基类到派生类的转换多重继承虚继承与虚基类虚基类及其派生类构造函数转换与继承派生类对象也是基类对象。这意味着在使用基类的地方可以用派生类来替换。派生类到基类的转换1.当派生类以public方式继承基类时,编译器可自动执行的转换(向上转换upcasting安全转换) 1.1 派生类对象指针自动转化为基类对象指针 1.2 派生类对象引用自动转化为基类对象引用 1.3 派生类对象自动转化为基类对象(特有的成员消失) 2.当派生类以private/protected
2021-07-26 19:23:20
104
原创 继承(一)
目录代码重用继承公有、私有、保护继承默认继承保护级别接口继承与实现继承继承与重定义继承与组合不能自动继承的成员函数继承与构造函数友元关系与继承静态成员与继承代码重用C++很重要的一个特征就是代码重用。在C语言中重用代码的方式是拷贝代码、修改代码。C++中可以用继承或组合的方式来重用。通过继承或组合现有的类来创建新类,而不是重新创建它们。继承1.继承是使用已经编写好的类来创建新类,新的类具有原有类的所有属性和操作,也可以在原有类的基础上做一些修改和增补。2.新类称为派生类或子类,原有类称为基类或
2021-07-25 22:05:42
131
原创 运算符重载(二)
目录++运算符重载前置++运算符重载后置自增和后置自减的重载!运算符重载赋值运算符重载++运算符重载前置++运算符重载1.成员函数的方式重载,原型为: 函数原型 & operator ++(); 2.友元函数的方式重载,原型为: friend 函数原型 & operator ++(类类型 &);后置自增和后置自减的重载1.成员函数的方式重载,原型为: 函数原型 operator ++(int); 2.友元函数的方式重载,原型为: friend 函数原型
2021-07-25 17:49:08
84
转载 运算符重载(一)---成员/非成员函数重载
目录运算符重载成员函数重载Complex.hComplex.cppmain非成员函数重载Complex.hComplex.cpp运算符重载规则运算符重载1.运算符重载允许把标准运算符(如+、-、*、/、>等)应用于自定义数据类型的对象2.直观自然,可以提高程序的可读性3.体现了C++的可扩充性4.运算符重载仅仅只是语法上的方便,它是函数调用的方式5.运算符重载,本质上是函数重载6.不要滥用重载、因为它只是语法上的方便,所以只有在涉及的代码更容易写、尤其是更易读时才有必要重载。
2021-07-24 09:33:48
1352
原创 对象的使用(三)---mutable/const对象/const成员函数
目录const成员函数const对象mutableconst汇总const成员函数1.const 成员函数不会修改对象的状态2.const成员函数只能访问数据成员的值,而不能修改它const对象1.如果把一个对象指定为const,就是告诉编译器不要修改它2.const对象的定义 2.1const 类名 对象名(参数表); 3.const对象不能调用非const成员函数mutable用mutable修饰的数据成员即使在const对象或在const成员函数中都可以被修改。#in
2021-07-24 08:35:44
208
原创 static与单例模式
目录static与单例模式演示1演示2线程安全的单例模式类的实现static与单例模式1.保证一个类只有一个实例,并提供一个全局访问点2.禁止拷贝演示1#include <iostream>using namespace std;class Singleton{public: static Singleton* GetInstance() { if (instance_ == NULL) { instance_ = new Singleton; }
2021-07-24 08:06:12
311
原创 对象的使用(二)---static关键字
目录static函数用法四种对象的作用域与生存期static用法总结演示2(internal linkage)演示2(external linkage)演示static函数用法#include <iostream>using namespace std;class Date{public: Date(int year) : year_(year) { } static bool IsLeapYear(int year) { return (year % 4 ==
2021-07-24 00:43:21
86
原创 对象的使用(一)---static关键字
目录static成员演示第1条CountedObject.hCountedObject.cppmain演示第6条static成员函数类/对象大小计算static成员1.对于特定类型的全体对象而言,有时候可能需要访问一个全局的变量。比如说统计某种类型对象已创建的数量。2.如果我们用全局变量会破坏数据的封装,一般的用户代码都可以修改这个全局变量,这时我们可以用类的静态成员来解决这个问题。3.非static数据成员存在于类类型的每个对象中,static数据成员独立该类的任意对象存在,它是与类关联的对象,不
2021-07-23 23:14:42
151
原创 构造函数与析构函数(四)---深拷贝与浅拷贝
目录深拷贝与浅拷贝浅拷贝String.hString.cppmain深拷贝String.hString.cppmain赋值操作深拷贝String.hString.cppmain禁止拷贝空类默认产生的成员深拷贝与浅拷贝浅拷贝String.h#ifndef _STRING_H#define _STRING_Hclass String{public: String(const char* str = nullptr); ~String(); void Display();private
2021-07-23 22:19:11
364
原创 构造函数与析构函数(三)---构造函数
目录构造函数初始化列表对象成员及其初始化const成员、引用成员初始化枚举拷贝构造函数拷贝构造函数调用的几种情况构造函数初始化列表1.推荐在构造函数初始化列表中进行初始化2.构造函数的执行分为两个阶段 2.1 初始化段 2.2 普通计算段对象成员及其初始化#include <iostream>using namespace std;class Object{public: Object(int num) : num_(num) { cout << "
2021-07-23 20:50:49
126
原创 构造函数与析构函数(二)
目录头文件Test.h实现文件Test.cpp转换构造函数赋值与初始化区别explicit头文件Test.h#pragma onceclass Test{public: Test(); Test(int num); ~Test(); void Display(); Test& operator=(const Test& other);private: int num_;};实现文件Test.cpp#include "Test.h"#include &
2021-07-23 16:45:13
93
原创 构造函数与析构函数(一)
目录头文件Test.h实现文件Test.cpp构造函数默认构造函数重载构造函数构造函数与new运算符newnew operatoroperator new全局对象的构造先于main函数析构造函数析构函数与数组析构函数与delete运算符析构函数可以显示调用头文件Test.h#pragma onceclass Test{public: Test(); Test(int num); ~Test(); void Display();private: int num_;};实现文件
2021-07-23 15:55:31
131
转载 云中网络的隔离GRE、VXLAN:虽然住一个小区,也要保护隐私
对于云平台中的隔离问题,前面咱们用的策略一直都是 VLAN,但是我们也说过这种策略的问题,VLAN 只有 12 位,共 4096 个。当时设计的时候,看起来是够了,但是现在绝对不够用,怎么办呢?一种方式是修改这个协议。这种方法往往不可行,因为当这个协议形成一定标准后,千千万万设备上跑的程序都要按这个规则来。现在说改就放,谁去挨个儿告诉这些程序呢?很显然,这是一项不可能的工程。另一种方式就是扩展,在原来包的格式的基础上扩展出一个头,里面包含足够用于区分租户的 ID,外层的包的格式尽量和传统的一样,依然兼容
2021-07-13 12:38:54
738
转载 软件定义网络:共享基础设施的小区物业管理办法
目录软件定义网络(SDN)OpenFlow 和 OpenvSwitchSDN实验一:用 OpenvSwitch 实现 VLAN 的功能实验二:用 OpenvSwitch 模拟网卡绑定,连接交换机如何在云计算中使用 OpenvSwitch?小结上一节我们说到,使用原生的 VLAN 和 Linux 网桥的方式来进行云平台的管理,但是这样在灵活性、隔离性方面都显得不足,而且整个网络缺少统一的视图、统一的管理。可以这样比喻,云计算就像大家一起住公寓,要共享小区里面的基础设施,其中网络就相当于小区里面的电梯、楼道
2021-07-11 22:43:52
272
转载 云中网络:自己拿地成本高,购买公寓更灵活
这里写目录标题虚拟网卡的原理虚拟网卡连接到云中共享与互通问题隔离问题小结前面我们讲了,数据中心里面堆着一大片一大片的机器,用网络连接起来,机器数目一旦非常多,人们就发现,维护这么一大片机器还挺麻烦的,有好多不灵活的地方。采购不灵活:如果客户需要一台电脑,那就需要自己采购、上架、插网线、安装操作系统,周期非常长。一旦采购了,一用就 N 年,不能退货,哪怕业务不做了,机器还在数据中心里留着。运维不灵活:一旦需要扩容 CPU、内存、硬盘,都需要去机房手动弄,非常麻烦。规格不灵活:采购的机器往往动不动几
2021-07-11 22:28:33
94
原创 哈希表实现---C语言版
目录声明代码实现运行结果声明以下内容仅供学习,如有侵权,联系作者删除。参考文献:王道考研系列数据结构、B站up主:C语言技术网链接: C语言技术网代码实现/* * 程序名:hash.c,此程序演示哈希表的实现,数据元素单链表带头结点。 * 作者:jack 日期:20210711 * 参考作者:C语言技术网(www.freecplus.net), B站UP主:C语言技术网*/#include <stdio.h>#include <stdlib.h>#inclu
2021-07-11 14:48:47
1629
转载 60 天攻克数据结构与算法
目录在这篇文章里,对专栏内容重新做了一次梳理,将整个专栏拆分成四个阶段,列出了每个阶段的核心知识点、标注了每个知识点的难易程度(E-Easy,M-Medium,H-Hard),并用 1-10 分说明其重要性。...
2021-07-11 14:02:20
129
转载 UDP协议:因性善而简单,难免碰到“城会玩”
目录TCP 和 UDP 有哪些区别?UDP 包头是什么样的?UDP 的三大特点UDP 的三大使用场景基于 UDP 的“城会玩”的五个例子“城会玩”一:网页或者 APP 的访问“城会玩”二:流媒体的协议“城会玩”三:实时游戏“城会玩”四:IoT 物联网“城会玩”五:移动通信领域小结讲完了 IP 层以后,接下来我们开始讲传输层。传输层里比较重要的两个协议,一个是 TCP,一个是 UDP。对于不从事底层开发的人员来讲,或者对于开发应用的人来讲,最常用的就是这两个协议。由于面试的时候,这两个协议经常会被放在一起问
2021-07-11 13:50:07
288
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人