自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 传输层TCP/UDP

负责数据能够从发送端传输接收端端口号(Port)标识了一个主机上进行通信的不同的应用程序;在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看);执行下面的命令, 可以看到知名端口号我们自己写一个程序使用端口号时, 要避开这些知名端口号。一个进程是否可以bind多个端口号?是一个端口号是否可以被多个进程bind?否netstat是一个用来查看网络状态的重要工具。

2024-04-23 22:25:07 744 1

原创 HTTP概述

Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度;Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个。Header: 请求的属性, 冒号分割的键值对;Header: 请求的属性, 冒号分割的键值对;是一个网页的小图标,通常显示在浏览器的标签页上或书签栏中。在后续的博客中我们会实现一个简单的HTTP通信。

2024-04-19 15:38:38 916

原创 socket编程实现TCP通信

1024。

2024-04-18 23:29:44 383 1

原创 socket套接字编程

端口号(port)是传输层协议的内容我们之前在学习系统编程的时候, 学习了 pid 表示唯一一个进程;此处我们的端口号也是唯一表示一个进程. 那么这两者之间是怎样的关系?一个进程可以绑定多个端口号;但是一个端口号不能被多个进程绑定。传输层协议(TCP和UDP)的数据段中有两个端口号, 分别叫做源端口号和目的端口号. 就是在描述 “数据是谁发的, 要发给谁”;此处我们先对TCP(Transmission Control Protocol 传输控制协议)有一个直观的认识;

2024-04-18 20:59:05 1032

原创 linux网络预备

IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4。但是并不绝对. 很多交换机也实现了网络层的转发;TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。在这个例子中, 我们的协议只有两层;但是实际的网络通信会更加复杂, 需要分更多的层次。TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型。

2024-04-07 16:42:03 1090

原创 简易线程池实现

【代码】简易线程池实现。

2024-04-02 15:37:23 757

原创 基于环形队列(信号量 + 锁)的生产者消费者模型

【代码】基于环形队列(信号量 + 锁)的生产者消费者模型。

2024-04-02 15:36:20 623

原创 基于阻塞队列(条件变量 + 锁)的生产者消费者模型

【代码】基于阻塞队列(条件变量 + 锁)的生产者消费者模型。

2024-04-02 15:35:42 433

原创 Linux线程

通过一定技术手段,将当前进程的“资源”,以一定的方式划分给不同的task_struct(PCB)。线程在进程内部执行(地址空间内部),是OS调度的基本单位(CPU不关系进程线程,它只关心PCB)。进程:承担分配系统资源的基本实体线程:OS能够进行运算调度的最小单位线程共享进程数据,但也拥有自己的一部分数据在linux下,线程没有单独的数据结构,线程与进程使用的都是task_struct。所以linux没有真正意义上的线程结构,linux是用进程PCB模拟线程的。

2024-04-02 14:51:53 826

原创 Linux信号处理

每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到,例如其中有定 义 #define SIGINT 21 – 31为普通信号(非可靠信号)34 – 64为实时信号(可靠信号)本文只讨论普通信号。

2024-03-22 14:36:01 1273

原创 Linux进程间通信

管道POSIX IPC。

2024-03-15 22:13:14 887

原创 linux文件系统

linux文件系统要点总结

2024-03-13 18:51:24 770

原创 Linux进程控制

Linux进程控制

2024-03-13 16:57:12 922

原创 Linux进程概念

Linux进程概念

2024-02-04 18:59:58 828

原创 Linux开发工具

Linux开发工具

2024-01-19 01:13:08 1055

原创 Linux基础指令

Linux基础指令

2024-01-19 01:10:53 1042

原创 C++IO流

C++IO流

2024-01-17 23:12:32 865

原创 C++类型转换

C++类型转换

2024-01-17 22:22:19 331

原创 C++特殊类设计(单例模式)

C++单例模式,懒汉饿汉分析

2024-01-17 16:26:18 574

原创 C++智能指针

C++智能指针

2024-01-17 00:42:44 388 1

原创 C++异常处理

C++异常处理

2024-01-16 00:43:31 942 1

原创 C++11常见内容汇总

C++11常见内容总结

2024-01-15 18:11:16 797 1

原创 C++哈希应用

所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。

2024-01-11 18:53:24 1003

原创 C++ 哈希

顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(),搜索的效率取决于搜索过程中元素的比较次数。理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。如果构造一种存储结构,通过某种函数**(hashFunc)使元素的存储位置与它的关键码之间能够建立**一一映射的关系,那么在查找时通过该函数可以很快找到该元素。根据待插入元素的关键码,以此函数计算出该元素的存储位置并按此位置进行存放。

2024-01-10 00:30:37 794

原创 Linux权限

Linux权限

2023-12-10 09:27:25 925

原创 C++多态

C++多态

2023-11-30 14:55:55 790

原创 C++继承

C++继承

2023-11-30 14:08:40 716

原创 C++set 和 map

C++ set和map

2023-11-30 01:07:31 398

原创 C++栈和队列

C++栈和队列,优先队列模拟实现

2023-11-14 16:59:36 31 1

原创 C++list实现

list模拟实现

2023-11-14 13:49:28 49 1

原创 C++vector容器实现

以下在Vector.h中定义以下代码在My_Vector.cpp中实现。

2023-11-07 21:37:14 30

原创 C++string类的实现

c++string类实现

2023-11-02 22:43:07 25

原创 C++sting类常见用法

C++sting类常见用法函数使用作用capacity()s.capacity()函数返回的是字符串对象内部分配的缓冲区的大小,而不是字符串的实际长度。这个大小通常会超过字符串的长度,以便在进行字符串操作时有足够的空间来容纳潜在的增长clear()s.clear()置空empty()s.empty()检查是否为空返回boolsize()s.size()返回字符串的长度push_backs.push_back(‘!’)末尾插入一个字符a

2023-11-02 22:42:07 46

原创 C++模板初阶

是C++中的一种特性,允许你编写通用函数,可以处理不同类型的参数,而不必为每种数据类型都编写不同的函数。函数模板使用参数化类型(通常用T表示)来通用化函数的参数和返回值。注意:​ 注意函数模板本身并不是函数,而是一种用于生成函数的模板。函数模板是一种通用的函数模式,它定义了函数的结构和算法,但并不生成实际的可执行代码。它是一种参数化的描述,描述了如何生成函数,而不是实际的函数。这样我们在写Swap函数时,就不用重载多种类型了。

2023-11-02 13:15:36 25

原创 C++构造函数初始化列表

再谈c++构造函数和类和对象

2023-10-30 17:29:18 39 1

原创 CC++内存管理

通过上述两个全局函数的实现知道,operator new 实际也是通过malloc来申请空间,如果malloc申请空间成功就直接返回,否则执行用户提供的空间不足应对措施,如果用户提供该措施就继续申请,否则就抛异常。new和delete是用户进行动态内存申请和释放的操作符,operator new 和operator delete是系统提供的全局函数,new在底层调用operator new全局函数来申请空间,delete在底层通过operator delete全局函数来释放空间。以下是他们的使用详情。

2023-10-29 20:37:37 39

原创 C++赋值运算符重载

C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。函数名字为:关键字operator后面接需要重载的运算符符号。函数原型:返回值类型 operator操作符(参数列表)以上代码包含了所有的常用运算符重载。

2023-10-29 20:36:25 33

原创 C++类和对象

sizeof(cc)的大小是12,成员变量在对象中,成员函数不在对象中 example: d1和d2的成员变量是不一样的,需要独立存储;但是每个对象调用的成员函数是一样的,用的是公共区域(代码段)。函数编译形成的指令存放在代码段(函数的地址就是代码段的地址),函数参数,临时变量存放在栈帧。那么问题来了,既然成员函数不在对象中,我们在初始化多个对象时,编译器怎么区分不同的对象调用函数?

2023-10-29 18:17:15 40 1

原创 # C++入门

命名空间(Namespace)是一种用于避免命名冲突和组织代码的机制。命名空间允许你将相似或相关的类、函数、变量等元素分组在一起,以便在不同部分的代码中使用它们而不会发生命名冲突在C++的std标准库中,如果我们直接使用using namespace std;我们在写代码声明变量时,会不可避免地发生命名冲突。所以我们通常不使用using namespace std;而是使用来声明某些常用的内容,其余内容用str::访问。

2023-10-29 17:55:57 38 2

空空如也

空空如也

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

TA关注的人

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