自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 抢占式调度算法和非抢占式调度算法

非抢占式调度算法是指挑选一个进程,直到这个进程进入阻塞态或者执行结束,才会从就绪进程中挑选一个进行执行.抢占式调度算法指挑选一个进程,让这个进程只运行某段时间,然后在该时间段结束后,该进程仍旧在运行时,将其挂起,接着从就绪进程中挑选另外的进程....

2022-02-06 20:43:45 6313

原创 进程和线程

进程与线程基本概念进程是系统资源分配的最小单位,线程是CPU资源调度的最小单位,线程间可以并发执行,并且共享相同的地址空间.进程主要5种状态,分别为创建态,就绪态,运行态,阻塞态,终止态就绪态指程序已经可以开始执行,但是CPU此时被占用执行态指进程已经在CPU中开始执行阻塞态指进程由于某种事件而停止执行线程的优点和缺点同一个进程中可以存在多个线程多个线程之间可以并发执行,并且共享相同的地址空间和文件等资源.进程中的一个线程崩溃时,会导致该进程的所有线程发生崩溃线程与进

2022-02-06 20:42:54 468 1

原创 什么是TCP的粘包和拆包

TCP的粘包是指TCP协议可能将数个小的包封装成一个大的包来进行传输.而分包就是指TCP协议在进行传输时将一个大的包拆分称为数个小的包来进行数据传输.

2022-02-05 16:36:39 1743 1

原创 一次完整的HTTP请求包括哪些内容

1.首先客户端与服务端经过三次握手建立连接2.建立连接后,客户端向服务端发送一个请求3.服务端接收到该请求后给予客户端一个回应4.客户端浏览器将收到的回应进行解析并呈现,之后经过四次挥手断开连接....

2022-02-05 16:18:30 2133

原创 HTTP和HTTPS的区别

1. HTTP 是超⽂本传输协议,信息是明⽂传输,存在安全⻛险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP ⽹络层之间加⼊了 SSL/TLS 安全协议,使得报⽂能够加密传输。2. HTTP 连接建⽴相对简单, TCP 三次握⼿之后便可进⾏ HTTP 的报⽂传输。⽽ HTTPS 在 TCP 三次握⼿之 后,还需进⾏ SSL/TLS 的握⼿过程,才可进⼊加密报⽂传输。3. HTTP 的端⼝号是 80,HTTPS 的端⼝号是 443。4. HTTPS 协议需要向 CA(

2022-02-05 15:50:55 925

原创 什么是HTTP协议

HTTP协议是指超文本传输协议,也就是在计算机世界里专门在两点之间进行文本,图片,视频等超文本数据的传输需要遵循的约定和规范.安全和幂等在HTTP协议中,所谓的安全就是指请求方法不会破坏服务器上面的资源.幂等是指,多次执行相同的操作,返回的结果都是相同的.HTTP的优点简单,灵活且易于扩展,应用广泛,跨平台.HTTP协议的缺点无状态和明文传输,不安全.无状态的解决方法使用cookie,cookie通过在请求和响应报文中写入cookie信息来控制客户端的状态.

2022-02-05 15:44:17 1433

原创 TCP可靠传输的实现

TCP基于以字节为单位的滑动窗口来实现可靠传输....没什么好做笔记的,那就先这样吧-_-!!!

2022-02-04 18:49:33 145

原创 TCP超时重传时间的选择

太小会造成不必要的重传,而如果设置的太大则会导致不必要的资源浪费,因此,超时重传的时间应该略微大于报文段的往返时间.由于往返时间并不是一个定值,因此我们需要计算加权平均往返时间,计算公式如下:使得超时重传的时间略大于加权平均往返时间.超时重传时间计算如下:其中,出现重传时,不重新计算加权平均往返时间,将超时重传时间增大为原来的两倍....

2022-02-04 18:15:26 1438

原创 TCP的拥塞控制

四种拥塞控制算法慢开始算法,拥塞避免算法,快重传算法,快恢复算法拥塞窗口值是几,就能发送几个数据报文段.在慢开始门限前是倍增,而在达到慢开始门限后,拥塞窗口就变为单次加1.在发生了拥塞后,将慢开始门限值更新为发生拥塞时的拥塞窗口值的一半,然后将拥塞窗口值减小为1,然后重新执行慢开始算法.慢开始指的是一开始向网络注入的报文段少,而不是其增长速率慢.发送方一旦收到三个重复确认,就知道只是丢失了个别报文段,因此不会启动慢开始算法,而是执行快恢复算法,将慢开始门限值和拥塞窗口

2022-02-04 17:53:40 1017

原创 TCP的流量控制

一般来说,每个人都会希望数据发送的快一些,但是这样会导致一个问题,就是如果发送方的发送速度过快,就会导致接收方来不及进行接受,那么就会产生数据的丢失.所谓的流量控制,其实就是使得发送方发送数据的速度不至于过快,使得接收方来得及进行接受.利用滑动窗口机制就可以很方便的在TCP上实现对于发送方的流量控制....

2022-02-04 16:42:31 233

原创 TCP与UDP的区别

首先,TCP是有连接的可靠的传输控制协议,而UDP是无连接的不可靠的用户数据报协议.对于UDP来说,因为他是无连接的不可靠的,所以他可以直接进行数据传输,支持单播,多播以及广播.TCP是有连接的可靠的,所以TCP在建立连接时需要进行三次握手,而在结束连接时则需要进行四次挥手,同时,TCP只支持单播.UDP是面向应用层报文的,TCP是面向字节流数据的而这也正是TCP实现可靠传输,流量控制和拥塞控制的基础.UDP由于无连接不可靠,所以适用于实时应用,比如说IP通话,腾讯会议等.T

2022-02-04 16:26:23 1473

原创 每日一练--有效字母的异位词

类似这种查询问题都可以使用哈希表来进行解决,也就是数组,set和unordered_map当数据量大时可以使用unordered_set,需要返回下标时使用unordered_map对于此题目来说,由于字母只有26个小写字母,所以我使用了数组进行求解,又因为我记不住字母对应的值,因此我进行了取巧的做法,我让数组存储为 该位置字母-'a'实现代码如下class Solution {public: bool isAnagram(string s, string t) {int ar

2022-02-03 22:23:50 516

原创 每日一练--两数之和

经典第一题,要求返回和为目标值的两数的下标,那么可以考虑使用哈希表来进行题解.当要求返回下标时,首先应该使用unordered_map,存放的是<T, T>此题代码如下:class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int>map; for(int i = 0;i &lt

2022-02-02 22:27:44 257

原创 每日一练--删除链表的结点

剑指Offer 18相比于原有的移除链表中元素,其只有一个结点需要移除,因此代码相比于原题有所改变,需要加上一行代码该题代码如下class Solution {public: ListNode* deleteNode(ListNode* head, int val) { ListNode * DummyHead = new ListNode(0); DummyHead->next = head; ListNode * cur ..

2022-02-01 22:25:02 118

原创 每日一练--环形链表

力扣142对于环形链表来说,我们可以设置两个指针,一个快指针和一个慢指针当快指针向前移动两步的时候,慢指针使其向前移动一步,这样相当于快指针始终在以一步接近慢指针,那么快慢指针在有环的时候一定是在环中相遇的,并且环的入口就是相遇的位置继续向前与指针从头结点开始一步步向前后相遇的位置.代码如下class Solution {public: ListNode *detectCycle(ListNode *head) { ListNode * Fast = head;

2022-02-01 21:41:27 598

原创 每日一练-移除链表元素

力扣203在进行链表的增删时,可以设置一个虚拟头结点,使得这个虚拟的头结点指向原有的头结点,此时就可以进行求解了.代码如下:class Solution {public: ListNode* removeElements(ListNode* head, int val) {ListNode * Node = new ListNode(NULL); //建立头结点Node->next = head; //建立头结点ListNode * cur = Node; /

2022-02-01 20:40:52 225

原创 数据结构--链表基础

什么是链表链表是一种通过指针串联在一起的线性结构,每一个节点都有两个部分构成,分别是数据域和指针域,指针域存放的是指向下一个结点的指针,链表的最后一个指针指向的是NULL(C++11中将NULL改为了nullptr).链表的入口节点也被称为是链表的头结点,也就是head.链表的分类链表可以分为单链表,双链表和循环链表,顾名思义,单链表指的就是单链表的结点只有指向下一个结点地址的指针,对于双链表来说,则具有指向上下两个结点地址的指针.循环链表同样, 是指首尾相连的链表,可以用来

2022-02-01 20:09:17 206

原创 每日一练-数组中的重复数字

对于此类问题来说,我们可以考虑使用哈希表来进行求解,如果使用哈希表,那么我们可以得到代码如下: class Solution {public: int findRepeatNumber(vector<int>& nums) { unordered_map<int,int>map; for(int i = 0;i<nums.size();++i){ if(map[nums[i] > 0){ return map[n

2022-01-31 20:16:36 208

原创 每日一练-二叉树中序遍历迭代写法

对于二叉树的中序遍历来说,迭代写法和前序后续都有所不同,此时需要使用指针来进行中序遍历的迭代.二叉树中序遍历的迭代写法如下:vector<int> preorderTraversal(TreeNode* root) {stack <TreeNode*> st;vector<int>result; if(root==nullptr){ return result; } TreeNode * cur=root; whi

2022-01-30 19:45:15 649

原创 目标检测中的指标都是什么意思

怎样才算检测正确?IOU大于指定阈值?类别预测正确?confidence大于指定阈值?三者都需要计入我们的考虑范围.什么是mAP?TP(True Positive): IoU>0.5的检测框数量(同一Ground Truth只计算一次).FP(False Positive): IoU<=0.5的检测框(或者是检测到同一个GT的多余检测框的数量).FN(False Negative): 没有检测到的GT的数量.Precision: TP / (TP + FP)

2022-01-29 20:03:48 4479

原创 每日一练-二叉树前序遍历迭代法

如何进行迭代遍历?二叉树的前中后序遍历都可以调用递归进行实现,如果我们了解了递归的定义,就可以知道每次使用递归都会将函数的局部变量,参数的值和返回地址等信息压入调用栈中去,然后当递归返回的时候,从递归栈的栈顶弹出上一次递归的各项参数,所以这就是递归为什么可以返回上一层位置的原因.同理,我们就可以使用栈来对二叉树进行迭代遍历.前序遍历顺序如何?前序遍历遵从根左右的顺序,因为栈为先入后出的数据结构,所以我们的入栈顺序应该为根右左,这样可以保证在出栈时,出栈顺序为根左右.二叉树的前序遍历迭代写法代

2022-01-29 18:38:10 836

原创 YOLOv1论文阅读笔记

YOLOv1论文笔记

2022-01-25 20:05:02 2946

原创 咱也想不到容器有挺多操作是一样的

equality( == )和inequality( != )运算符,返回TRUE和FALSEassignment( = )运算符,将某个容器赋值给另一个容器empty( )会在容器没有任何元素时返回TRUE,其余情况返回FALSEsize( )传用容器内当前含有的元素数clear( )则用于删除所有元素begin( )返回一个iterator,指向容器的第一个元素end( )返回的iterator则指向容器最后一个元素的下一个元素insert( ),将单一或者是某个范围内的元素

2022-01-17 07:43:46 264

原创 所以什么是函数重载,如何进行呢?

当我们需要将不同类型,不同数量的参数传入一个函数中,要如何办到呢?这时我们需要通过函数重载机制进行函数重载来实现我们的需求.函数重载基本条件:参数表不相同(参数类型不同,参数数量不同),此时可以使用相同的函数名来实现函数重载.实例代码如下所示:void test ( char ch ){}void test ( char ch, const string& ){}void test ( int ){}void test ( char ch, int){}在实际

2022-01-15 18:34:28 221

原创 将函数参数声明为reference有什么好处吗,是否有其他写法?

reference的好处(1)可以直接对传入的对象进行修改.(2)可以降低复制大型对象的负担 //如果我们定义这样一个函数void display( const vector<init> &vec){//............//}如果我们的函数实现本来就不打算改变实际对象,加上const可以使得阅读程序的人明白,我们进行地址传递主要是为了避免复制操作,而不是为了进行修改.是否有和reference效用相同的写法?可以使用pointer形式传递,此种

2022-01-14 17:45:30 341

原创 Essential C++笔记:值传递和地址传递到底是个什么东西

调用函数时,函数形参和传入的两个实参之间是什么关系?如果代表相同对象,那么如果Val1和Val2发生改变,Vec [ ix ]和Vec [ jx ]应该同时改变,但实际调用下段代码时并不会发生,他们之间唯一的联系就是拥有相同的值.void Bubble_Sort( vector<int>Vec ) {//... if ( Vec[ ix ] > Vec [ jx ] ) Swap( Vec [ ix ], Vec [ jx ] );}void S

2022-01-14 15:09:39 148

原创 经过卷积操作后矩阵尺寸大小如何计算?

卷积计算后矩阵大小

2022-01-03 19:56:38 1942

原创 咱也不知道什么是过拟合

神经网络最大的挑战是过拟合,指的是神经网络试图记忆一个数据集,而不是从中学到可以泛化到还没见过的数据的有用抽象.换句话说,神经网络学会的是基于数据集中的噪声进行预测,而不是依赖于基本信号.过拟合的产生通常是由于当前网络参数的数量多于学习特定数据集所需要的参数数量.这种情况下,网络有足够多的参数去记忆每一个细节,而不是学习高层次的抽象,相对于正则化,更好的防止过拟合方法就是使用松散定义的模型,或者说是网格结构(因为相信能在多个位置检测到相同模式,所以可以针对性的重用针对多个目标的权重)

2021-12-28 16:34:39 1173

原创 面向对象的八大设计原则

面向对象设计原则

2021-12-23 17:44:47 720

原创 c++变量和基本类型

内置类型:字符串,整形,浮点型,字符型等.变量名一般使用小写.*常用数据类型内存空间大小如下:char 1个字节int 4个字节double 8字节float 4字节自定义类型:自己定义的各种类.对象名一般使用大写字母开头.标识符如果是以多个单词构成,那么单词之间可以穿插_.对于变量的赋值和初始化并不是一个操作.初始化是在创建时赋予初始值,赋值是给一个新值将其替代.定义变量时如果并未对其进行初始化,则系统会给其一个默认值.内置类型一般称之为变量,而自定义数据类型一般称

2021-11-28 21:52:51 622

空空如也

空空如也

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

TA关注的人

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