自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Vicky_Cr的博客

一个菜鸟的学习日记

  • 博客(92)
  • 收藏
  • 关注

原创 【网络】 ——图解HTTPS协议以及HTTP和HTTPS的区别

图解HTTPS一、HTTPS协议简介二、HTTPS的加密之路2.1 对称加密2.2 非对称加密2.3 混合加密三、HTTPS的缺点四、总结一、HTTPS协议简介(这次是来兑现我的承诺来啦,之前的一篇博客就讲要写篇HTTPS和HTTP区别的文章,今天是爱学习的好学生)在开始之前,我们需要明白为什么需要HTTPS,换句话说,HTTP有啥缺点内容:通信使用明文,不加密,内容可能会被窃听通...

2020-04-29 23:20:52 1617

原创 【面试复习】

面试复习P2P下载器项目1、C和C++的区别2、程序编译链接的过程3、重载、重写、重定义的区别4、你对MySQL的索引是如何理解的5、什么是事务6、数据库的锁7、什么是存储过程?8、什么是数据库的内外连接?9、内存分配的方式10、面向过程和面向对象的理解11、什么是自动化测试?自动化测试的场景12、unordered_map和map的区别13、多态的实现原理14、排序算法的时间复杂度和空间复杂度1.........

2022-07-27 14:38:29 213

原创 【C++】——内联函数、const的思维导图

inline内联函数const 用法

2022-07-27 14:30:10 123

原创 【C++】--工厂模式

什么是工厂模式?一句话概括:提供一个创建对象的接口,根据需求创建不同的子类对象工厂模式分为三种:简单工厂模式、工厂方法模式、抽象工厂模式简单工厂模式一个工厂,多个产品,产品需要有一个虚基类,通过传入参数,生成具体产品对象,并用基类指针指向该对象c++代码:#include <iostream>#include <stdlib.h>using namespace std;class product{public: virtual void show() =

2021-03-04 20:44:13 216

原创 【C++】 ——C++单例模式中的饿汉和懒汉模式

单例模式一、 单例模式的定义二、 单例模式的懒汉模式三、 单例模式的饿汉模式r四、 单例模式的应用场景二级目录三级目录一、 单例模式的定义单例模式是一种常见的软件设计模式。它的核心结构质保函一个被称为单例的特殊类。它的目的是保证一个雷仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。二、 单例模式的懒汉模式咱先记住第一句话:第一次用到类的实例的时候才回去实例化三、 单例模式的饿汉模式咱再记住第二句话:单例类定义的时候就进行实例化r四、 单例模式的应用场景二级目录三级目录

2020-05-24 22:53:07 5032 10

原创 【LeetCode题解】 ——用O(nlogn)的时间复杂度对链表排序(归并排序)

常数级时间复杂度对链表排序(为什么写这个题呢?因为恰好我们可以复习下排序算法的时间复杂度),题中要求时间复杂度为O(nlogn),显然从下表可以看出来归并排序和堆排是可以实现的,这里我采用归并排序的方法说一下思路。思路:我们先利用快慢指针的方法,找出链表的中间节点,然后对左右两个部分分别做同样的操作,直到剩下一个元素,那元素就是有序的。最后再将有序的数组归并。我这里解释一下这段代码:这个是将两个链表归并起来意思(只是完整代码的一部分),比如list1=1->4; list2=3,我们顺着

2020-05-19 13:34:50 500

原创 【Linux】 ——DNS域名解析的过程是怎样的?

DNS域名解析协议一、DNS协议简介二、域名的层次结构三、DNS域名服务器四、域名解析的全过程一、DNS协议简介DNS(Domin Name System)是一种分布式网络目录服务,主要用于域名与IP地址的相互转换,以及控制因特网的电子邮件的发送。IP地址可以唯一的标记一台主机,但是全世界的主机IP数不胜数,光靠记忆我们是无法全部记住所有的IP地址,所以用域名系统就可以将难以记忆的数字IP地址与容易记忆的域名建立映射关系。那这种映射关系其实是保存在一个叫做hosts文件中。最初,通过互联网信息中心来

2020-05-17 12:16:53 886

原创 【牛客题解】 ——二叉树的下一个节点

二叉树的下一个节点题中给出的指向父亲节点的指针,用next表示,有点会让人误解。思路:我们以以下这棵二叉树为例,中序遍历为{D,B,H,E,I,A,F,C,G}把很容易可以发现,如果要找一个节点的下一结点,比如说是B节点的下一结点,我们首先看B的右树是不是为空,如果不为空,一直沿着指向左子结点的指针找到的叶子节点即为下一个节点,在这里B的下一个节点是H;无右子树,且结点是该结点父结点的左子树,则下一结点是该结点的父结点,例如 H,下一结点是 E无右子树,且结点是该结点父结点的右子树,则我们一直

2020-05-16 22:06:30 260

原创 【Linux】 ——重新理解进程和线程

进程一、进程与线程二、进程是什么?2.2、描述进程PCB2.3、Linux下查看进程信息常用命令总结2.4、进程的状态三、线程是什么?四、进程和线程的区别一、进程与线程我感觉要想说好进程和线程的区别,是一个既简单又困难的问题,如果简单的记得“进程操作系统资源分配的基本单位,线程是CPU调度的基本单位”,很难让自己的能力得到提升。因为学计算机的应该百分之九十都记得这句话吧。我先给你看看关于进程这一节的思维导图(图片不清晰的话,可以先保存再看,图侵删),句句都是重点有没有二、进程是什么?先回忆下程序,

2020-05-16 00:43:55 265

原创 【C++】 ——亿级数据过滤之布隆过滤器

大数据处理之布隆过滤器一、布隆过滤器二、布隆过滤器的原理三、布隆过滤器不支持删除四、布隆过滤器的使用场景一、布隆过滤器秉承着学习的态度,博主对布隆过滤器产生了很大的兴趣,它适用于大数据处理,比如垃圾邮件过滤,电话黑名单,URL去重,网页黑名单等都“宁可错杀一千,也不放过一个”,这是布隆过滤器的特点,也就是说我们利用布隆过滤器判断这一邮件是垃圾邮件一定就是准确的,也有可能将有效邮件判断称垃圾邮件,布隆过滤器存在误判的可能。接下来,我们就来看看布隆过滤器的原理。二、布隆过滤器的原理在这之前,我们考虑一

2020-05-10 16:07:26 512

原创 【牛客题解】 ——表示数值的字符串

表示数值的字符串思路:设置三个标志位sign表示是否含有正负号,symbol表示是否含有小数点,hasE表示是否含有e或者E(1)如果第i位是e或者E,那它一定不能是最后一个字符,将标志位hasE设为ture(2)如果第i位是 - 或者 + ,如果之前已经有 - 或者 +,那必须在e或者E的后面,如果不是的话就返回false;如果之前没有,判断是不是出现在第一位,如果不是第一位,那也必须在...

2020-05-07 20:56:30 198

原创 【Linux】 ——分类整理的Linux常用命令

Linux常用命令1、文件管理命令1.1 cat命令1.2 chmod命令1.3 cp命令1.4 find命令1.5 head命令1.6 less命令1.7 locate命令1.8 more 命令1.9 mv命令1.10 rm命令1.11 tail命令1.12 touch命令1.13 rm命令1.14 echo命令2、文档编辑命令2.1 grep命令2.2 wc 命令3、磁盘管理命令3.1 cd命...

2020-05-06 23:32:12 289

原创 【测试】——软件测试的W模型和V模型

V模型和W模型一、 软件测试的W模型和V模型二、V模型2.1 V模型的框架2.2 V模型的优缺点三、W模型3.1 W模型的框架3.2 W模型的优缺点三、V和W模型中测试类型的概念一、 软件测试的W模型和V模型博主之前知识大概了解软件测试的W和V模型,但老忘,我就自己动手画了这两个框架,发现确实比之前记得能牢固点,所以最好的学习办法还是自己动手,记不住的话,可能就是太懒了,哈哈哈二、V模型2...

2020-05-02 19:27:23 1473

原创 【C++】 ——剑指offer的矩阵问题

1、矩阵中的路径思路:题目很容易理解,给你一个字符串和一个字符矩阵,判断这个字符串是否在矩阵中。我们先用一个标志数组来判断该位置是否被访问过。1代表访问过,0表示没有求出元素的在数组的位置,index=i*cols+j;如果我们要用递归,那终止条件就是i,j小于0,要么就是i,j越界(超出cols和rows的范围),要么就是str[k]和数组元素不相等,要么就是数组的这个位置之前访问过。...

2020-05-02 15:45:40 165

原创 【计算机网络】 ——UDP(用户数据报协议)以及TCP与UDP的区别

网络通信之UDP协议一、TCP/IP协议族二、UDP协议简介以及特点2.1 UDP数据报的首部结构2.2 UDP协议的特点三、TCP与UDP的区别四、UDP的使用场景一、TCP/IP协议族在博主阅读很多文档之后,觉得这么一句话很有道理:要想学好TCP和UDP协议,首先得清楚TCP协议和UDP协议与TCP/IP协议的联系,有时候我们以为自己懂了这个知识点,但是并没有把知识串起来。这种学习感觉像是...

2020-05-02 11:57:42 704

原创 【C++】 ——最长无重复子串

最长无重复子串思路1:利用滑动窗口,先开辟一个数组,里面存放字符串中每个字符出现的次数。如果s[i]第一次出现,那就把窗口后沿向后移动,若s[i]出现第二次,就把它的计数减1,同时窗口前沿移动一位。#include<iostream>using namespace std;#include <string>#include <stdlib.h>#...

2020-05-01 21:43:07 607

原创 【剑指offer】——剪绳子

剪绳子(这段时间写了很多题,剑指offer快写完了,算法我真的…看到算法题就不想写,但是想了下,觉得自己不能一直这么逃避,该学的还得学,过程总是要经历的,就看了道关于动态规划的题)思路:当绳子的长度小于2的时候,就返回0;绳子长度等于2时,返回1(1x1=1);当绳子长度等于3,返回2(1x2=2);设dp[1]=1,dp[2]=2,dp[3]=3,(注意,这个数组不包含前面几种情况)剩下的...

2020-04-28 15:39:36 179

原创 【C++】 ——C++11新特性之智能指针

C++11智能指针一、引入智能指针的重要性二、智能指针的原理2.1 RAII2.2 智能指针的原理三、C++库中的智能指针3.1 auto_ptr3.2 unique_ptr3.3 shared_ptr四、总结一、引入智能指针的重要性关于智能指针,其实是C++11的一种新的特性,记住一句话:它主要是解决内存泄漏问题,因为智能指针是一个类,当超出了类的作用域之后,类就会自动调用析构函数,析构函数...

2020-04-28 10:43:53 481

原创 【Linux】——应用层中的HTTP协议

一、HTTP协议介绍我发现HTTP协议要想真的搞明白的话,那真的是这一两篇博客是写不完的。因为HTTP协议的请求方法很多,头部信息也很丰富,要想全部记住和区分请求方法,还是要花点时间的。还有HTTP和HTTPS的区别等都是面试常考点。1.1 HTTP协议概要HTTP(Hypertext Transfer Protocol),超文本传输协议,允许用户通过单击链接访问资源。如下图所示,HTTP协...

2020-04-28 10:37:16 239

原创 【牛客题解】 ——序列化二叉树

序列化二叉树(能看懂这个题的都是大佬…我太菜了…)/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/cla...

2020-04-26 14:34:18 203

原创 【C++】——快速排序(前后指针,挖坑法,快慢指针法)

一、前后指针法基本思路:1.将数组的最后一个数right作为基准数key。2.分区过程:从数组的首元素begin开始向后找比key大的数(begin找大);end开始向前找比key小的数(end找小);找到后然后两者交换(swap),知道begin >= end终止遍历。最后将begin和最后一个数交换( 这个时候end不是最后一个位置),即 key作为中间数(左区间都是比key小的数...

2020-04-26 00:32:15 1311 1

原创 【Linux项目】 --P2P下载器的详细介绍

一、P2P下载器功能简介P2P下载器是一个可以跨Windows和Linux平台的P2P下载器项目,客户端通过搜索出与之相连的主机,与指定主机建立连接请求,获取共享文件列表,发送文件下载请求,服务端对客户端的请求做出响应,最终实现不同主机间共享文件的目的。客户端:   1.查看网络中的共享主机,向网络中广播配对请求,得到相应在线主机列表   2.选择一个主机获取文件列表,向指定主机发送获取列...

2020-04-23 14:11:22 6411 3

原创 【牛客题解】 ——之字形打印二叉树

之字形打印二叉树(我以为跟此次遍历二叉树一样那么简单,发现人家这个题貌似比层次遍历高一个level)思路:利用队列,队列中出一个元素,就把它的左右孩子带进去,不过先开始得设置一个标志位为false,表示他不是从左往右打印的,每一个层次遍历完,都改变falg的值,falg为false,那就翻转/*struct TreeNode { int val; struct TreeN...

2020-04-22 22:17:10 145

原创 【牛客题解】 ——判断一棵树是否为对称二叉树

判断一棵树是否为对称二叉树(对不起,我第一次做这个题的时候,写的太复杂了…不断的调用函数)思路一:先找出这个二叉树的镜像,再判断两个二叉树是否为同一个二叉树,但是这又涉及到一个问题,你得先把原来的二叉树保留下来,才能传到求镜像的函数,不然原来的树就改变了,所以要用另一个拷贝函数。/*struct TreeNode { int val; struct TreeNode *l...

2020-04-22 13:40:54 243

原创 【牛客题解】 ——正则表达式的匹配

正则表达式的匹配(我说大晚上看这个,锻炼人的思维…你信吗?)思路:1、两个都为空,返回真2、第一个为空,但是第二个不为空,返回假(如果第一个为空,但是第二个不空,是有可能返回真的,比如 “” 和 “.")3、pattern中当前位置的下一个不是“ * ”,如 bc 和 cd ,直接比较当前位置,能够匹配就继续配下一个,不匹配,直接返回false; 如果pattern的下一个是“ * ”...

2020-04-21 23:48:18 564

原创 【剑指offer】 ——构建乘积数组

构建乘积数组(我是一个没有感情的刷题机器)思路:把数字写一遍找出规律B[0] = A[1] *A[2] * A[3]…*A[n-1]B[1] = A[0] *A[2] * A[3]…*A[n-1]B[2] = A[0] *A[1] * A[3]…*A[n-1]看出来没?要是你要求B[i] ,后面的乘积就不要包含A[i]这一项了,当然意思就是说直接乘以1就好了。class Solut...

2020-04-21 15:57:02 139

原创 【数据结构】 ——删除链表中的重复节点(不保留重复节点)

删除链表中的重复节点(不保留重复节点)(剑指offer上面对这个题难度是4(总共五颗星),我寻思着,是我最近进步了?我觉得没那么难吧)说下我的思路:利用map存储链表节点的值和次数,遍历map,当map元素次数为1的时候,开辟一个新结点,将次数为1的值存储起来,挂到新链表中,最后返回新链表的头。这里要注意的是为了防止第一个和第二个就是重复节点,例如{1,1},我们在构造新链表的时候,最好加...

2020-04-20 19:12:26 401

原创 【牛客题解】 ——数组中重复的数字

(我觉得这个题很奇葩,所以写了,答案就返回了一个数字,不晓得为什么参数给的是int* 类型,满脸问号???并且要找的是数组中第一个重复的元素,意思就是说你找到重复数字,不仅要返回 true,还要把这个数字存到int* 的数组里面)思路:用map就很方便,first存放数据,second存放数字出现的次数class Solution {public: // Parameters: ...

2020-04-20 12:54:10 163

原创 【牛客题解】 ——把字符串转换成整数

这道题很简单,我昨天写的时候,没注意越界,第一次写用例只通过百分之八十五,我的天,查个越界查一个小时,算了,做出来就好,特别注意的是要先声明res为long long类型,不然就会越界思路:从后向前遍历字符串,直到遍历到str[0]停止,再单独判断str[0]class Solution {public: int StrToInt(string str) { ...

2020-04-20 12:05:08 229

原创 【牛客题解】 ——不用加减乘除做加法

不用加减乘除做加法思路1:第一步首先对两个数做异或操作(相同为0,不同为1),第二步计算进位,如果有进位,那就左移一位,和第一步所得的数继续做异或操作,直至进位为0;class Solution {public: int Add(int num1, int num2) { int temp; while(num2) { ...

2020-04-20 00:14:26 171

原创 【C++】——C++深浅拷贝以及写时拷贝的理解(调试+代码)

深浅拷贝和写时拷贝(最近好烦哦,觉得自己状态不是很好,复习的效率也不是很高,刷个LeetCode,人家写个递归,我觉得自己得想好久,调试好久,还不一定完全理解,事情也太多了)今天上课的时候,老师说深浅拷贝这个是高频考点,行吧,看不懂递归,我来看点自己可以理解的。1、浅拷贝比如说,现在有一个对象A,需求是将 A 拷贝给对象B,当B拷贝了A的数据后,当B的改变会导致A的改变,此时叫做B浅拷贝了A...

2020-04-19 20:42:53 248

原创 【牛客题解】 ——圆圈中最后剩下的数

圆圈中最后剩下的数我发现我太笨了,只能用循环队列解决!!!解法一:class node { public: int num; node* next; node(int num) { this->num=num; } };class Solution {pu...

2020-04-19 01:03:23 154

原创 【C++】 ——指针和引用的区别、数组和链表的区别

1、指针和引用的区别都是地址的概念,指针指向的是一块内存,它的内容是内存的地址,但是引用是一块内存的别名。区别:指针是一个实体,但是引用仅仅是别名引用使用时,无需解引用(*),但是指针需要解引用引用只能在定义的时候被初始化一次,之后不可改变,但是指针可变引用没有const,但是指针有const引用不能为空,但是指针可以为空sizeof引用的时候得到的是所指向变量(对象)的大小,但...

2020-04-18 23:32:14 513

原创 【C++】 ——继承的三种方式比较以及继承中小的知识点

继承1、public、protected、parivate修饰类的成员2、 public 、protected、private指定的继承方式说明3、 基类与派生类对象赋值的转化4、继承中的隐藏5、隐藏、重载、重写(覆盖)的区别6、友元与继承C++继承的一般语法为:class 派生类名:[继承方式] 基类名{ 派生类新增的成员};继承方式限定了积累成员在派生类中的访问权...

2020-04-17 16:22:25 406

原创 【LeetCode 78】 ——求子集 (两种解法)

求子集思路一:(一切尽在调试中,一个一个的把它带出来,我不知道咋说,反正就是那么个意思,但要注意的是最先开始要给存放结果的vector一个空间)class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vect...

2020-04-16 23:55:26 284

原创 【C++】 ——全排列算法

关于全排列算法,分为两种:可重复的全排列和不包含重复的元素的全排列一、含重复元素的全排列算法思路:(1)n个元素的全排列=(n-1个元素的全排列)+(另一个元素作为前缀);(2)出口:如果只有一个元素的全排列,则说明已经排完(3)不断将每个元素放作第一个元素,然后将这个元素作为前缀,并将其余元素继续全排列,等待出口,出口出去后还需要还原数组#include <iostream&g...

2020-04-16 13:42:31 1313 2

原创 【牛客题解】 ——和为S的连续正数序列

和为S的连续正数序列(今天看这个题把我给看急了,我就觉得应该用回溯,结果半天没写出来,怀着无比难过和沉重的心情看了大家都管他叫左神的大佬的解题思路,我的天,聪明的人的脑子果真跟我长的不一样,这下更难过了,非得看懂自己写出来才肯睡觉,默默埋怨一句,我咋就没有这么聪明呢)思路:这个题其实就是一个等差数列的求和问题,大佬的解法是设置一个窗口,通过计算窗口前沿和后沿之间的数的和(题中说数字是连续的,...

2020-04-16 00:28:56 193

原创 【牛客题解】 ——数组中只出现一次的数字

数组中只出现一次的数字思路一:利用unordered_map,先把数组中的数字和次数放入map中,再次遍历数组,如果次数为1,则记录结果class Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { unordered_map<...

2020-04-15 18:49:37 207

原创 【MySQL】——简单明了的MySQL基础

一、

2020-04-15 16:36:03 145

原创 【C++】 ——判断一棵树是否为平衡二叉树的两种方法

判断一棵树是否为平衡二叉树思路一:根据求树的深度的方法,依次得到每个节点左子树和右子树的高度,再次计算每个节点其左右高度差是否满足小于等于1,若都满足返回真,若不满足返回假class Solution {public: int GetDepth(TreeNode* proot) { if(proot==NULL) return 0;...

2020-04-15 00:47:05 1501

空空如也

空空如也

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

TA关注的人

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