自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (3)
  • 收藏
  • 关注

原创 为什么要三次握手?两次握手不行吗?

三次握手的目的是为了确认客户端和服务端的接收能力和发送能力。第一次握手成功时,服务端确认客户端的发送能力和服务端的接收能力;第二次握手成功时,客户端确认服务端的发送能力和接收能力和客户端的发送能力和接收能力,但此时服务端不能确认客户端的接收能力和服务端的发送能力;第三次握手成功时,服务端和客户端都确认了双方的发送能力和接收能力。如果是两次握手还会出现一个问题,客户端的第一次SYN请求在网络中阻塞时,客户端重新发送第二次SYN请求,服务器收到第二次SYN请求后,成功与客户端两次握手,双方建立连接,在数

2021-04-28 16:57:44 1594

转载 什么是TCP的三次握手?

三次握手是指建立一个 TCP 连接时,需要客户端和服务端发送三个数据包的过程。进行三次握手是为了确定双方的接收能力和发送能力是否正常。刚开始客户端处于 Closed 状态,服务端处于 Listen 状态。第一次握手:客户端给服务端发送一个 SYN 报文,并指定客户端的初始化序列号 ISN ,此时客户端处于 SYN_SEND 状态。SYN 报文内容:首部的同步位 SYN = 1,初始序号 Sequence number = x。SYN = 1 的报文段不能携带数据,但要消耗掉一个序号。

2021-04-27 19:32:35 7597

原创 构造函数、析构函数与普通函数的区别

构造函数、析构函数与普通函数的区别:调用方式不一样:普通函数:显示调用;构造函数、析构函数:隐式调用;作用不一样:构造函数用来实例化对象;析构函数用来释放资源;

2021-04-24 15:52:53 445

转载 什么是虚函数?什么是纯虚函数?两者有什么区别?

什么是虚函数?被 virtual 关键字修饰的成员函数称为虚函数。虚函数的作用是实现多态性,即通过基类访问派生类的函数。什么是纯虚函数?在虚函数后面添加 =0 ,虚函数就成为纯虚函数,在很多情况下,基类生成对象很不合理。为了解决这个问题,引入了纯虚函数的概念,将函数定义为纯虚函数,派生类中必须重写实现纯虚函数。对于实现了纯虚函数的子类,该纯虚函数在子类中就变成了虚函数。虚函数和纯虚函数有什么区别?虚函数定义形式:成员函数前添加 virtual 关键字,纯虚函数在虚函数后添加 =0 ;含有纯

2021-04-23 20:15:33 7483 2

转载 shared_ptr的简单实现

#pragma oncetemplate<class T>class SharedPointer{public: //默认构造函数 SharedPointer():m_refCount(nullptr), m_pointer(nullptr){} //构造函数 SharedPointer(T* adoptTarget):m_pointer(adoptTarget), m_refCount(nullptr) { addReferen

2021-04-21 11:29:26 145

原创 C++中的四种智能指针

auto_ptr:auto_ptr是C98的标准,C11已经抛弃。auto_ptr是C++标准库提供的类模板,auto_ptr通过初始化指向由new创建的动态内存,它是这块内存的拥有者,一块内存不能同时被分配给两个auto_ptr,auto_ptr采用的是所有权的模式。auto_ptr被赋值或拷贝后,失去对原指针的管理。auto_ptr不能作为容器对象,因为STL的容器经常要拷贝、赋值等操作。例如:auto_ptr<string> p1(new string("I reigned

2021-04-08 15:08:35 145

原创 C++为什么使用智能指针?C++有哪些智能指针?

C++的指针有个明显的缺点,必须手动申请内存和释放内存。如果在函数中手动申请内存,最后却没有释放内存,这将导致内存泄漏。使用智能指针可以在很大程度上解决这类问题。智能指针首先是个类,当类离开作用域时,会自动执行析构函数释放资源。把释放内存的操作写入析构函数,那么释放内存的操作就会自动执行。所以说,使用智能指针可以在很大程度上解决指针不主动释放内存导致的错误。C++有以下智能指针:auto_ptrshared_ptrweak_ptrunique_ptr...

2021-01-25 21:03:00 397

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

内存指针有自己的内存空间,引用只是别名;sizeof指针,显示指针的大小为4,sizeof引用,显示被引用对象的大小;赋值指针可以被初始化为NULL,引用必须被初始化为一个已有对象的引用;指针在使用中可以指向其他对象,引用只能是一个对象的引用,不能改变;函数作为函数参数传递时,指针需要解引用才可以对对象进行操作,引用不需要,而且对引用的修改会改变引用所指向的对象;如果返回动态内存分配的对象或者内存,必须使用指针,引用可能引起内存泄漏;层级指针可以有多级指针,引用只有一.

2021-01-23 15:20:21 69

原创 ubuntu解决命令行没有颜色的问题

问题描述:我是使用的腾讯云,在Linux学习过程中,命令行一直都是没有颜色的,一开始我以为腾讯云服务器开发就是这样的。后来在解决别的问题时,发现自己没有.bashrc文件,就从网上找到了一篇为自己服务器创建.bashrc的教程。在创建好.bashrc文件后,腾讯云服务器命令行正确的显示了。参考教程:Linux添加.bashrc文件...

2021-01-22 14:54:13 2178

原创 C++中的四种类型转换

C++中的四种类型转换:const_cast、static_cast、dynamic_cast、reinterpret_cast;const_cast用于将const变量转为非const;static_cast用于各种隐式转换,比如非const转const,void*转指针等,static_cast能用于多态向上转化,如果向下转,能成功但是不安全,结果未知;dynamic_cast用于动态类型转换。只能用于含有虚函数的类,用于类层次间的向上和向下转化。只能转指针或引用。向下转化时,如

2021-01-22 11:02:52 279 4

原创 C++和C的区别

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

2021-01-21 09:47:52 107

原创 static关键字的作用

对变量而言:全局静态变量:定义:在全局变量前加上关键字static,全局变量就定义成全局静态变量;存储位置:静态存储区,在整个程序运行期间一直存在;初始化:未初始化的全局静态变量会被默认初始化为0;作用域:从定义开始到文件结尾,除声明它的文件外不可见。局部静态变量:定义:在局部变量之前加上关键字static,局部变量就定义成局部静态变量;存储位置:静态存储区;初始化:未初始化的全局静态变量会被默认初始化为0;作用域:局部作用域,当定义它的函数或者语句块结束时,作用域结束;但是.

2021-01-20 14:28:53 125

转载 const关键字的作用

修饰变量时:阻止变量的内容被改变;修饰指针时:可以指定指针本身为const,指针常量;也可以指定指针所指的数据为const,常量指针,或二者同时指定为const;修饰函数参数时:表明这是一个输入参数,在函数内部不能改变;修饰类的成员函数时:表明是一个常函数,不能修改类的成员变量。对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。...

2021-01-18 10:44:20 109

原创 前缀树问题

前缀树问题判别前缀树问题一般性质:多个字符串存在共同前缀,该共同前缀对结果有影响。前缀树通用解决方案:class Trie{public: Trie() { isEnd = false; memset(next, 0, sizeof(next)); } void insert(string word) { auto node = this; for(auto w : word) { if(

2021-01-17 19:23:45 133

原创 笛卡尔乘积问题

笛卡尔乘积问题的判别笛卡尔问题的一个特点是有很多个种类的子结果的拼接。目前遇到的只是字符串的拼接。通用解决思路分步求解结果,最后拼接;例题Leetcode 816.模糊坐标class Solution {public: vector<string> addSymbol(string s) { vector<string> res; int length = s.length(); for(int i = 1;

2021-01-16 15:33:55 607

原创 图着色问题

图着色问题的判别根据目前所做的题目,图着色问题有一个显著的特点,就是将图中的节点分成几组。解决思路对图深度优先遍历(或广度优先遍历)的过程中,进行节点着色。不同的题有不同的着色策略,这里不再详述。大致可根据分成的组的数目,设置颜色的数量。根据输入信息,生成邻接矩阵。深度优先遍历邻接矩阵,并着色。例题Leetcode 785.判断二分图class Solution {public: bool dfs(const vector<vector<int>>&am

2021-01-15 18:49:21 288

原创 目标和问题

目标和问题的判别目标和通常会给定一个数组,通过某种求和方式求解得到目标和。对于目标和的求解一般需要进行数学转换。通用解决思路添加“+”、“-”号时,可转化成0-1背包问题;减余偶数理论。设1,2,3,...,k相加求和为sum且sum是大于target的最小数,delta = (sum - target);如果delta是偶数,若1,2,3,...,k存在相加求和等于delta/2的子集,sum - delta = target,则结果便是k;如果delta不是偶数,那么(sum + k

2021-01-14 10:32:58 226

原创 vscode c++ debug vector显示不全的解决方案

问题描述:vscode c++在debug调试时vector内容显示不全的问题,详细内容显示如下:解决方案:在监视(watch)内添加表达式,格式如下*(type(*)[size])array_name最终效果:

2021-01-13 17:30:31 3854 1

原创 进程、线程、协程的区别

进程与线程的区别:调度:在引入线程的操作系统中,线程是调度和分配的基本单位,进程是资源拥有的基本单位。并发性:在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行,因此使操作系统具有更好的并发性,从而能更有效地使用系统资源和提高系统吞吐量。拥有资源:进程是拥有资源的独立单位,但一般来说,线程不拥有系统资源,但它可以访问隶属进程的资源。系统开销:进程在创建、撤销、切换时的开销,都要大于线程创建、撤销、切换时的开销。通信:进程之间通过IPC进行通信,线程间通过

2020-12-31 15:30:32 131

转载 new和malloc的区别

malloc和free是c++/c语言的库函数,需要头文件支持;new和delete是C++的关键字,需要编译器支持;使用new操作符申请内存分配时,无需指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显示地支持所需内存的大小。new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无需进行类型转换,故new是符合类型安全性的操作符。而malloc内存分配成功则是返回void*,需要通过强制类型转换将void*指针转换成我们需要的类型。new内存分配..

2020-12-29 20:16:03 138

原创 Anki 如何登陆?

Anki在下载后,是没有像QQ、微信那样明显的登陆提示,但是点击同步按钮会弹出登陆界面,我就是通过这种方式登陆的。

2020-09-24 10:33:14 5084

原创 C++ 模板类子类无法访问父类成员

首先声明问题:模板类子类无法访问父类成员。在实现<<数据结构>>邓俊辉版时,第四章遇到如下代码时,怎样都无法编译通过。#include"Vector.h"template<typename T> class Stack:public Vector<T>{ void push(T const& e) { insert(size...

2020-04-02 16:47:14 1071 2

原创 关于折半查找平均查找成功长度的推导(数据结构 邓俊辉)

来源:<<数据结构>> 邓俊辉上述C(k)的递推公式看了好久都没看懂(深刻受到清华的降维打击,差点放弃学习)。期间主要参考了如下帖子:https://ask.csdn.net/questions/699067,其回答对于我,起到了非常重要的作用。对于C(k)来说,我的理解、或者大家有误的理解是:C(k)=C(k-1)+1+2+C(k-1)+ 2 ...

2020-03-25 21:08:28 1829 1

原创 VS C2541问题 delete

问题描述error C2541: “delete”: 不能删除不是指针的对象源自<<C++ Primer>> 练习12.19。出现问题的代码如下:class StrBlob{public: friend class StrBlobPtr; using size_type = vector<string>::size_type; StrBlob...

2020-02-18 19:48:26 577

原创 C++ remove_if()

remove_if(begin,end,p)begin、end: 容器的范围迭代器,表示在这个范围内移除p:谓词参数,remove_if会移除谓词参数为true的元素起源<<C++ Primer>> 11章练习11.4,删除string中的标点符号。思路使用泛型算法中的remove_if()进行删除。while (cin >> word){...

2020-02-16 12:15:00 3758

原创 对于按字寻址和按字节寻址的理解

想要搞清按字寻址和按字节寻址就要先搞清位、字节、字长、字的定义 :位:数据存储的最小单位。计算机中最小的数据单位,一个位的取值只能是0或1;字节:由八位二进制数组成,是计算机中最基本的计量单位,也是最重要的计量单位(个人理解)。字长:计算机中对CPU在单位时间内能处理的最大二进制数的位数叫做字长。字:字是不同计算机系统中占据一个单独的地址(内存单元的编号)并作为一个单元(由一个或多个字节组合而成...

2018-05-14 17:33:18 15693 10

微博--登录功能实现

通过spring boot框架实现了微博的登录功能,主要涉及ajax、mysql、js技术

2019-01-14

微信小程序

在学习内一次实训所写的代码,内有使用说明,对于入门微信小程序具有促进作用,从一个整体的方面理解了一个微信小程序的开发过程,更重要的是入门简单,更容易产生对于开发微信小程序的兴趣,欢迎大家关注我,我是LinV

2019-01-09

个人博客的实现(php)

大三时,Web作业,实现个人博客 使用了php,mysql,html5,javascript等语言

2018-06-16

空空如也

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

TA关注的人

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