自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

咖啡不懂夜的黑

向往技术,尊重学术!

  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 TCP-滑动窗口

TCP滑动窗口术语窗口合拢:窗口左边沿向右边沿靠近窗口张开:窗口右边沿向右移动时将允许发送更多的数据窗口收缩:窗口右边沿向左移动详细解释:窗口合拢发生在数据被发送和确认时窗口张开发生在对端接收进程读取已经确认的数据并释放了TCP的接受缓存窗口收缩的使用场景 结合糊涂窗口综合征窗口的左边沿受对端发送的确认序号的控制,因此不可能向左边移动。如果接收到一个指示窗口左边沿向左移动的ACK,则它被认为是一个重复ACK,并被丢弃如果左边沿到达右边沿,则称其为一个零窗口,此时发送方不能够发送任何

2020-06-03 21:48:21 290

转载 C++类的默认函数

C++类的默认函数在C++中,一个类有八个默认函数:默认构造函数;默认拷贝构造函数;默认析构函数;默认重载赋值运算符函数;默认重载取址运算符函数;默认重载取址运算符const函数;默认移动构造函数(C++11);默认重载移动赋值操作符函数(C++11)。只是声明一个空类,不做任何事情的话,编译器会自动为你生成一个默认构造函数、一个默认拷贝构造函数、一个默认重载赋值操作符函数和一个默认析构函数。这些函数只有在第一次被调用时,才会被编译器创建,当然这几个生

2020-05-30 03:18:35 762

原创 23种设计模式之单例模式

单例(Singleton)模式:控制某个类只能自行生成一个可供外部全局访问的实例。例如:Windows的窗口管理器或者任务管理器都是只有一个实例懒汉模式特点是延迟加载,直到用到的时候才会加载非线程安全,需要考虑多线程问题 #include <string> #include <stdio.h> //Lock 和 unLock借用其它类来实现,如boost void Lock(){} void unLock(){} //线程安全版本懒汉模式 cl

2020-05-29 00:25:14 154

原创 TCP协议

##TCP协议学习总结TCP头部解析: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...

2020-05-27 22:57:05 174

原创 STL迭代器是怎么删除元素的呢

这个主要考察的是迭代器失效的问题。对于序列容器vector,deque来说,使用erase(itertor)后,后边的每个元素的迭代器都会失效,但是后边每个元素都会往前移动一个位置,但是erase会返回下一个有效的迭代器;对于关联容器map set来说,使用了erase(iterator)后,当前元素的迭代器失效,但是其结构是红黑树,删除当前元素的,不会影响到下一个元素的迭代器,所以在调用erase之前,记录下一个元素的迭代器即可。对于list来说,它使用了不连续分配的内存,并且它的erase方法也

2020-05-25 01:00:48 657

原创 vector和list的区别

vector和list的区别从如下几个方面来说:概念:Vector连续存储的容器,动态数组,在堆上分配空间底层实现:数组两倍容量增长:vector 增加(插入)新元素时,如果未超过当时的容量,则还有剩余空间,那么直接添加到最后(插入指定位置),然后调整迭代器。如果没有剩余空间了,则会重新配置原有元素个数的两倍空间,然后将原空间元素通过复制的方式初始化新空间,再向新空间增加元素,最后析构并释放原空间,之前的迭代器会失效。性能:访问:O(1)插入:在最后插入(空间够):很快

2020-05-25 00:56:05 322

原创 map和set有什么区别,分别又是怎么实现的?

map和set有什么区别,分别又是怎么实现的?map和set都是C++的关联容器,其底层实现都是红黑树(RB-Tree)。由于 map 和set所开放的各种操作接口,RB-tree 也都提供了,所以几乎所有的 map 和set的操作行为,都只是转调 RB-tree 的操作行为。map和set区别在于:map中的元素是key-value(关键字—值)对:关键字起到索引的作用,值则表示与索引相关联的数据;Set与之相对就是关键字的简单集合,set中每个元素只包含一个关键字。set的迭代器

2020-05-25 00:49:03 1416

原创 C++中拷贝赋值函数的形参能否进行值传递?

请你回答一下C++中拷贝赋值函数的形参能否进行值传递?不能。如果是这种情况下,调用拷贝构造函数的时候,首先要将实参传递给形参,这个传递的时候又要调用拷贝构造函数。。如此循环,无法完成拷贝,栈也会满。...

2020-05-25 00:24:58 2376 2

原创 计算每个名字最大可能的“漂亮度”

题目给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。代码:#include <iostream>#include <string>#include <vect...

2020-05-25 00:08:08 153

原创 C++ 虚函数和多态

多态的实现主要分为静态多态和动态多态静态多态主要是重载,在编译的时候就已经确定;动态多态是用虚函数机制实现的,在运行期间动态绑定。举个例子:一个父类类型的指针指向一个子类对象时候,使用父类的指针去调用子类中重写了的父类中的虚函数的时候,会调用子类重写过后的函数,在父类中声明为加了virtual关键字的函数,在子类中重写时候不需要加virtual也是虚函数。虚函数的实现:在有虚函数的类中,类的最开始部分是一个虚函数表的指针,这个指针指向一个虚函数表,表中放了虚函数的地址,实际的虚函数在代码段(.

2020-05-25 00:07:28 169

原创 c++中的四个智能指针

C++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被11弃用:auto_ptr(c++98的方案,cpp11已经抛弃)  采用所有权模式。 auto_ptr< string> p1 (new string ("I reigned lonely as a cloud.”)); auto_ptr<string> p2; p2 = p1; //auto_ptr不会报

2020-05-25 00:06:50 363

原创 为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数

为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。C++默认的析构函数不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存。而对于不会被继承的类来说,其析构函数如果是虚函数,就会浪费内存。因此C++默认的析构函数不是虚函数,而是只有当需要当作父类时,设置为虚函数。...

2020-05-25 00:06:23 4443 2

原创 C++中++i和i++的区别

++i和i++的区别++i先自增1,再返回,i++先返回i,再自增1++i和i++的实现++i 实现:int& int::operator++(){ *this +=1; return *this;}i++ 实现:const int int::operator(int){ int oldValue = *this; ++(*this); return oldValue;}...

2020-05-25 00:05:34 1601

原创 C/C++ 中指针和引用的区别

C/C++ 中指针和引用的区别1.指针有自己的一块空间,而引用只是一个别名;2.使用sizeof看一个指针的大小是4,而引用则是被引用对象的大小;3.指针可以被初始化为NULL,而引用必须被初始化且必须是一个已有对象 的引用;4.作为参数传递时,指针需要被解引用才可以对对象进行操作,而直接对引 用的修改都会改变引用所指向的对象;5.可以有const指针,但是没有const引用;6.指针在使用中可以指向其它对象,但是引用只能是一个对象的引用,不能 被改变;7.指针可以有多级指针(**p),而引

2020-05-24 23:32:37 222

原创 c++中四种cast转换

  C++中四种类型转换是:static_cast, dynamic_cast, const_cast, reinterpret_cast为什么不使用C的强制转换?C的强制转换表面上看起来功能强大什么都能转,但是转化不够明确,不能进行错误检查,容易出错。1、const_cast  用于将const变量转为非const2、static_cast  用于各种隐式转换,比如非const转const,void*转指针等, static_cast能用于多态向上转化,如果向下转能成功但是不安全,结果未知;

2020-05-24 23:28:02 205

原创 C++和C的区别

设计思想上:C++是面向对象的语言,而C是面向过程的结构化编程语言语法上:C++具有封装、继承和多态三种特性C++相比C,增加多许多类型安全的功能,比如强制类型转换、C++支持范式编程,比如模板类、函数模板等...

2020-05-24 23:24:23 2170

原创 TCP头部解析

TCP头部解析: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Des

2020-05-24 19:20:56 729

原创 static关键字的作用 C++知识点

static关键字的作用全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量.静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。局部静态变量在局部变量之前加上关键字sta...

2020-05-24 19:15:58 125

原创 汽水瓶计算 C++实现

题目描述  有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?输...

2020-04-27 23:21:19 553

原创 给定一个字符串描述的算术表达式,计算出结果值。

题目描述:给定一个字符串描述的算术表达式,计算出结果值。输入字符串长度不超过100,合法的字符包括”+, -, *, /, (, )”,”0-9”,字符串内容的合法性及表达式语法的合法性由做题者检查。本题目只涉及整型计算。输入描述:输入算术表达式输出描述:计算出结果值示例1输入400+5输出405代码实现:#include <i...

2020-04-26 22:31:44 4051

原创 翻转单词单词顺序 C/C++实现

要求:将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符解法1:#include <string>#include <iostream>using namespace std;void reverse(char *begin, char *en...

2020-04-22 01:45:26 1561

原创 找出字符串中第一个只出现一次的字符 C++实现

题目:找出字符串中第一个只出现一次的字符输入描述:输入一个非空字符串输出描述:输出第一个只出现一次的字符,如果不存在输出-1示例1输入:asdfasdfo输出o废话不多说,直接上代码:解法1:/*思路:每出现一次,就在对应数组中计数+1*/#include<iostream>#include<string>using nam...

2020-04-21 22:12:48 4553

原创 斐波那契数列 C++实现

斐波那契数列要求:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契数列定义如下:f(n)={              0                         n=0              1                         n=1f(n−2)+f(n−1)   n>1f(n)=\begin{cases}\>\&gt...

2020-04-15 22:43:51 5790 2

原创 把字符串转换成整数 C++实现

剑指offer面试题50:把字符串转换成整数解题注意点:1、判断标记非法输入,出0到9外其他输入;但是+和-属于合法输入2、判断空指针、空字符串3、考虑溢出(int 范围为0x7FFFFFFF~0x80000000)直接上代码吧:#include <iostream>using namespace std; enum Status{kValid = 0, kInval...

2020-04-13 00:08:17 571

原创 从尾到头打印单链表 C++实现

剑指offer面试题5:从尾到头打印链表题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。解法1:利用栈实现废话不多说,直接上代码:void Solution::printListRevers(ListNode *pHead){ if(!pHead) return; std::stack<ListNode *> s_Nodes; ListNode *...

2020-04-12 15:13:24 481

原创 替字符串中的换空格 C++实现

剑指offer面试题4:替换空格题目:请实现一个函数,把字符串中的空格替换成`%20`。例如,输入 “We are happy.”,则输出“We%20are%20happy.”。时间复杂度为O(n^2)的解法思路:从头到尾扫描字符串,每一次碰到空格字符的时候做替换,即把1个字符替换成3个字符;我们必须要把空格后面所有的字符向后移动两个字节,否则就有两个字符被覆盖了。基于如上思路,代码实现...

2020-04-12 15:12:21 419

原创 有序递增二维数组查找 C++实现

剑指offer面试题3:有序递增二维数组查找题目:在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果大于要查找的数字,剔除这个数字所在的列;如果数字要小于要查找的数字,剔除这个数字所在行。也就...

2020-04-12 15:09:41 279

原创 赋值运算函数 C++实现

剑指offer面试题之赋值运算函数面试题1: 赋值运算符函数题目: 如下为类型CMyString的申明,请为该类型添加赋值运算符函数。class CMyString{public: CMyString(char *pData = NULL); CMyString(const CMyString& str); ~CMyString(void); char *m_pDat...

2020-04-12 15:07:28 204

南京邮电大学离散数学课后答案(左孝凌)

南京邮电大学左孝陵版本离散数学课后答案全集。个人文件,请勿恶意转载,发表

2013-12-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除