自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UDP 和 TCP 协议

如果在我们写的服务器程序中,最后没有进行close,那么服务器端会停留在CLOSE_WAIT状态,而客户端会停留在FIN_WAIT_2状态,相当于4次挥手只完成了前两次,这样的程序是有bug的,并没有真正的进行4次挥手,导致资源不断被消耗。接收端处理数据的速度是有限的,如果发送方发送的数据过快,发送方来不及处理和接收,就会导致丢包等一系列的问题,因此TCP支持根据接收端的处理能力来决定发送端的发送速度,这个机制被称为。如果接收端缓冲区满了, 就会将窗口置为0;

2023-02-15 15:41:46 190

原创 Linux 信号

生活中我们有很多和信号有关的例子,比如说,你在家点了个外卖,当外卖小哥到你家门口的时候,你正在打游戏,快递小哥给你敲门,相当于向你传递了一个信号,而你本身就是具有处理这种信号的能力的,但你不一定要立刻去拿,这就是异步性,因为此时的你正在打游戏,很忙,抽不开身,所以收到这个信号会暂时不处理,而当你拿到外卖后,又可以有三种选择:1.执行默认动作,把外卖吃掉 2.忽略,继续打游戏 3.执行自定义行为,把外卖送给别人吃。可以看到进程被杀掉了,说明该信号是不能被捕获并忽略的,是强制杀人手段,除非该进程在D状态!

2022-11-07 15:58:24 345 1

原创 Linux 基础I/O

记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。当文件没有被打开的时候,文件在磁盘中,但当一个文件被打开后,文件会被读取到内存中,一个进程可以打开多个文件,而这些打开的文件操作系统需要很好的管理,所以一个文件打开,会先创建对应的内核数据结构,而操作系统会把一个进程打开的所有文件通过链表连接起来,这样对打开文件的管理变成了对链表的增删查改,

2022-10-31 10:13:36 909

原创 c++ 单例模式

缺陷:可能会在类内实现c++11的做法。

2022-10-11 15:33:08 287

原创 进程程序替换

共有六种以exec开头的函数,统称为exec函数。

2022-10-02 15:37:09 103

原创 c++的类型转换

static_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可以用static_cast,但它不能用于两个不相关的类型进行转换。cosnt_cast最常用的用途就是删除const属性,方便赋值。

2022-10-01 16:47:21 290

原创 智能指针 c++

借此,我们实际上把管理一份资源的责任托管给了一个对象,这样做法有两大好处。

2022-10-01 15:23:22 346

原创 c++ 11

什么是uuid?UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。

2022-09-27 10:05:41 75

原创 Linux 进程控制

fork之前父进程独立运行,fork之后,父子进程分别执行——》 fork之后会有两个进程,进程具有独立性,所以父进程和子进程的代码和数据都是独立的。(fork之后,父子进程谁先执行完全由调度器来决定)进程调用fork,当控制转移到内核中的fork代码后,内核会:写实拷贝通常,父子代码共享,当不进行写入时,数据也是共享的,但是当任意一方试图写入数据,便以写实拷贝的方式各自一份副本。进程退出的几种情况c/c++中main函数最后一般都会有一个 return 0 ,那为什么是0 不能是别的值呢?而这个r

2022-09-25 11:44:03 302

原创 Linux 环境变量 + 进程地址空间

通过env数组可以获得环境变量。

2022-09-24 19:13:15 210

原创 c++右值引用 下

如果能想要限制某些默认函数的生成,在c++98中是该函数设置成private,并且只声明补丁,这样只要其他人想要调用就会报错。而在c++11中,只需在该函数声明加上 =delete即可,该语法让编译器不生成对应函数的默认版本。居然全是左值,这是怎么回事呢?

2022-09-23 09:55:00 76

原创 Bloom Filter (布隆过滤器)

一种支持删除的方法:将bloom filter中的每个比特位扩展成一个小的计数器,插入元素时给k个计数器(k个哈希函数计算出的哈希地址)加一,删除元素时,给k个计数器减一,通过多占用几倍的存储空间的代价来增加删除。我们在使用看b站时,它会不停给我们推送内容,但是每次推送的内容基本上都不是重复的,那么它是怎么做到推送去重的呢?怎么快速过滤掉用户已经查看过的内容呢?但是 1. 无法确认元素是否真正在布隆过滤器中。以两个hashfunc为例实现布隆过滤器。

2022-09-20 18:04:47 1222

原创 c++ 11右值引用 上

左值引用只能引用左值,不能引用右值。但是const左值引用既可以引用左值也能引用右值。右值引用只能引用右值,不能引用左值。但是右值引用可以引用move后的左值。}

2022-09-20 16:17:19 242

原创 Linux ——进程 一

当进程退出并且父进程(使用wait()系统调用,后面讲)没有读取到子进程退出的返回代码时就会产生僵死(尸)进程僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态。进程的退出状态必须被维持下去,因为他要告诉关心它的进程(父进程),你交给我的任务,我办的怎么样了。每次运行程序时,子进程pid总是在变,但是父进程pid好像没变过,父进程是谁呢?内核(进程管理,内存管理,文件管理,驱动管理)...

2022-08-28 20:02:02 439

原创 红黑树Red- Black Tree(上)

是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是。约定:cur为当前节点,p为父节点,g为祖父节点,u为叔叔节点。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,...

2022-08-04 20:09:25 108

原创 平衡二叉搜索树 -- AVL树

AVL树平均高度大概是1.44logN + c,c是常数,搜索的时间复杂度是 o(logn)假如以pParent为根的子树不平衡,即pParent的平衡因子为2或者-2,分以下情况考虑。AVL树就是在二叉搜索树的基础上引入了平衡因子,因此AVL树也可以看成是二叉搜索树。如果在一棵原本是平衡的AVL树中插入一个新节点,可能造成不平衡,此时必须调整树的结构,二叉搜索树虽然可以缩短查找的效率,...

2022-08-02 20:43:29 894

原创 c++类和对象之多态

多态是在不同继承关系的类对象,去调用同一函数产生了不同的行为。必须通过基类的指针或者引用去调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写!public买票-全价100¥"...

2022-07-24 21:28:48 515

原创 c++ 类和对象之继承

private成员在派生类中无论以怎样方式继承都不可见。如果基类成员不想在类外被直接访问,但是需要在派生类中访问,就定义为protected。保护限定符是因为继承才出现的。基类的其他成员在子类的访问方式==Min(成员的基类访问限定符,继承方式),public>protected>private使用关键字class时默认继承方式为private,struct为public。实际运用中一般都是public继承,几乎很少使用protected/private继承。...

2022-07-21 12:55:39 214

原创 c++ 模板

如何实现一个通用的交换函数呢?(使用函数重载可以实现,但是代码重复率比较低,只要有新类型出现时,就需要用户自己增加对应的函数,并且代码可维护性较差,一个出错可能导致所有的重载均出错。)c++中,存在一个模具,通过给这个模具填充不同的材料(类型),来获得不同材料的铸件(即生成具体类型的代码)。模板是泛型编程的基础。模板分为:1.函数模板2.类模板语法格式:template返回值类型 函数名(参数列表){}(typen

2022-06-01 12:09:11 78

原创 c++初阶之类和对象(下)

1.再谈构造函数1.1构造函数体赋值在创建对象时,我们知道编译器会通过调用构造函数,给对象中各个成员变量一个合适的初始值。Date(int year= 1984, int month = 5, int day =20){ assert(year >= 0 && month >= 1 && month <= 12 && day >=1 && day <= GetMonthDay(

2022-05-25 10:34:27 131

原创 Top-K问题(堆的应用)

问题的引入:我们都知道公司有所谓的世界500强,那么全球有如此多的公司,我们要怎样又快又精确的挑出这所谓的500家企业呢?这就是所谓的 Top - K 问题 即求数据集合中前K个最大的元素或者最小的元素,一般情况下数据量都非常大。对于该问题,我们能想到的最简单的直接方式就是排序,但是,如果数据量非常的大,排序就不太可取(可能数据都不能一下子全部加载到内存中)。最佳的方法就是用堆来解决,基本思路入下:1. 用数据集合中前K个元素来建堆2. 用剩余的 N-K个元素依次与堆顶的元素比较,不满足则替.

2022-05-23 22:18:00 121

原创 C++ 类和对象初阶(中篇)

类和对象(中)1.this指针(上一章的复习):在上一篇中我们已经介绍了this指针,今天我们先通过两个小小的练习回顾一下:①下列程序的输出结果:A.编译报错 B.程序崩溃 C.正常运行class A{public: void test() { cout << "test()" << endl; }private: int _a;};int main() { A* pa = nullptr; pa->test(); re

2022-05-23 14:53:19 139

原创 c++类和对象初阶 (上篇)

类和对象1.面向过程与面向对象:我们之前学过的c语言就是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。而c++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成2. 什么是类?什么是对象?举个例子: 类就相当于一张图纸,或者蓝图,通过这个设计图纸可以设计出不同的实例物体。3. c ++ 类的引入与定义c语言中,结构体只能定义变量,但在c++中,结构体不仅可以定义变量,还可以定义函数,c++将struct变为了类。#inclu

2022-05-13 17:31:46 270

原创 c++入门之内联函数,auto关键字

内联函数1.以 inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方进行展开,没有函数压栈的开销,内联函数得以提升程序运行的效率。inline int Add(int a, int b) { return a + b;}int main() { int ret = Add(3, 5); return 0;}比如说如上图的 Add函数就是一个内联函数,会在函数调用时将其展开。·····································

2022-05-13 11:37:21 579

原创 c++之引用 &

**c++中的引用是c++与c不同的一个地方,也是c所没有的。**什么是引用? 引用不是新定义一个变量,而是给已经存在的变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间 举个例子:王小明是一个人,“王小明”就是他的名字,但是在家他妈可能会叫他 “小明”,这个 “小明” 就相当于一个别名,也就是引用。基本语法:类型 & 引用变量名(对象名) = 引用实体。int main() { int a = 10; int& ra = a; //

2022-05-10 20:42:10 246

原创 栈的应用(括号的匹配问题)【leetcode刷题】

栈的应用 leetcode刷题

2022-03-29 19:33:48 47

原创 【数据结构】--- 队列

1.什么是队列?队列:只允许在一端进行数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)的特点。入队列:进行插入操作的一端称为队尾。出队列:进行删除操作的一端称为队头。2.队列的实现:可以用数组和链表模拟实现,在这里我们用链表实现typedef int QDataType; typedef struct QueueNode { QDataType data; struct QueueNode* next; //

2022-03-29 18:59:19 1214

原创 数据结构与算法之栈的实现

数据结构与算法之栈的简介与实现,让你3分钟马上了解栈的各种特点

2022-03-29 16:47:10 1119 1

原创 栈区上内存的使用习惯

栈区的使用习惯

2022-03-25 10:21:48 182

空空如也

空空如也

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

TA关注的人

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