自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】const和函数参数

将。

2024-06-19 17:08:06 405 1

原创 【网络编程】进程间的通信

进程间通信意味着两个不同进程间交换数据,操作系统中应提供两个进程可以同时访问内存空间。

2024-06-15 15:18:02 282

原创 【网络编程】多进程服务器端

换言之,如果父进程未主动要求获得子进程的结束状态值,操作系统将一直保存,并让子进程长时间处于僵尸进程状态。向exit函数传递的参数值和main函数的retum语句返回的值都会传递给操作系统。进程完成工作后(执行完mian函数)应被销毁,但有时这些进程将编程僵尸进程,占用系统中重要资源。父进程和子进程一样繁忙,不能只调用waitpid函数等待子进程终止。也就是说,将子进程变成僵尸进程的正是操作系统。,进程发现自己的子进程结束时,请求操作系统调用特定函数。父进程fork函数返回子进程ID,子进程返回0。

2024-06-15 14:52:34 424

原创 【网络编程】套接字的多种可选项

可以看出,套接字可选项是分层的。IPPROTOIP层可选项是IP协议相关事项IPPROTO TCP层可选项是TCP协议相关的事项,SOLSOCKET层是套接字相关的通用可选项。

2024-06-14 16:36:57 965

原创 【网络编程】域名及网络地址

DNS(Domain Name System,域名系统),是对IP地址和域名进行互相转换的系统,其核心是DNS服务器。域名:提供网络服务的服务器端也是通过IP地址去份额,但IP地址难记,因此将容易记、易表述的域名分配并取代IP地址。DNS服务器:用IP地址、或域名进入网页,接入过程不同。域名是默认DNS赋予服务器的虚拟地址,非实际地址。DNS可以将虚拟地址转化为实际地址。一般不会轻易改变服务器域名,但会相对频繁地改变服务器 IP 地址。

2024-06-14 15:58:31 343

原创 【网络编程】优雅断开套接字连接

Linux的close函数和Windows的closesocket函数意味着完全断开连接。完全断开不仅指无法传输数据,而且也不能接收数据。2台主机正在进行双向通信,主机A发送完最后的数据后,调用close函数断开了连接,之后主机A无法再接收主机B传输的数据。实际上,是完全无法调用与接收数据相关的函数。

2024-06-14 15:36:19 274

原创 【网络编程】基于UDP的服务器端/客户端

UDP可看作是信件邮寄,邮寄过程可能会信件丢失,是一种不可靠的数据传输服务。但UDP性能更高,实现更加简洁。流控制是区分UDP和TCP的最重要标志。IP的作用就是让离开主机B的UDP数据包传递给主机B,UDP根据端口号将传到主机的数据包交付给最终的UDP套接字。

2024-06-13 21:42:55 835

原创 【网络编程】TCP原理

TCP套接字中的I/O缓冲write函数调用后并非立即传输数据,read函数调用后也非马上接收数据。write函数调用瞬间,数据将移至输出缓冲;read函数调用瞬间,从缓冲读取数据。这些IO缓冲特性可整理如下。TCP会控制数据流,不会因为缓冲溢出而丢失数据。对方套接字建立连接的过程。连接过程中套接字之间的对话如下。

2024-06-13 17:20:00 498

原创 【网络编程】基于TCP的服务器端/客户端

链路层链路层是物理连接领域标准化的结果,是最基本的领域,专门定义LAN,WAN,MAN等网络标准。IP层选择传输数据的路径。IP是面向消息的、不可靠的协议。每次传输数据会帮选择一条路径,但并不一致,若发送路径错误则选择其他路径;若发送数据丢失或错误则无法解决。IP协议无法应对数据错误。TCP/UDP层TCP和UDP层以IP层提供的路径信息为基础完成实际的数据传输,故该层又称为传输层。IP层只关注一个数据包的传输过程。

2024-06-12 21:27:22 1826 3

原创 【网络编程】地址族与数据序列

IP是Internet Protocol简写,是为了收发网络数据而分配给计算机的值,端口号是为区分程序中创建的套接字而分配给套接字的序号。网络地址分为两类:IPv4(4个字节地址族),IPv6(6个字节地址族)向套接字分配网络地址,bind函数负责。

2024-06-12 16:43:31 246

原创 【网络编程】套接字类型与协议设置

收发数据的套接字内部有缓冲(buffer),即字节数组。通过套接字传输的数据将保存到该数组。因此,收到数据不意味着马上调用read函数。只要数组不超过数组容量,则可能在数据填充满缓存后通过1次read函数读取全部,也可能分多次读取。因此,面向连接的套接字不存在数据边界。传输数据的计算机通过3次调用write函数传递100字节数据,但接收数据计算机只通过1次read函数调用就接收全部的100个字节。协议:计算机对话的通信规则,简而言之是为了完成数据交换而定好的约定。按序传输数据,传输的数据不存在数据边界。

2024-06-12 16:23:47 210

原创 【网络编程】网络编程和套接字

网络编程就是使得联网的两台计算机互相交换数据,其中包括物理连接,软件数据传输。套接字就是网络传输用的软件设备。客户端只有调用socket函数创建套接字和调用connect函数向服务器发送连接请求两个步骤。打开文件读写数据,调用函数时需传入两个参数,一个是目标文件路径,二是打开模式。文件描述符指的是方便称呼操作系统创建的文件或套接字而赋予的数。步骤二调用bind函数分配地址信息(IP地址和端口号)步骤三调用listen函数转为可接收连接状态。步骤一套接字创建:调用socket函数。基于Linux的文件操作。

2024-06-12 15:59:12 164

原创 【VVC】xCheckModeSplit()函数注解

【代码】【VVC】xCheckModeSplit()函数代码注解。

2024-06-08 21:58:22 157

原创 【VVC】类和编码树了解

四叉树在视频编码中非常重要,尤其是在高效视频编码(HEVC)和通用视频编码(VVC)标准中,用于编码单元(CU)的划分。是视频编码中一种用于灵活划分和处理编码单元(CU)的技术。它主要用于处理帧内(Intra)和帧间(Inter)预测时的不同需求,允许对亮度(Luma)和色度(Chroma)信号进行单独和独立的处理。类表示视频编码中的结构层次,用于存储编码单元(CU)、预测单元(PU)和变换单元(TU)等信息。类用于管理图像划分的过程,包括划分编码单元(CU)、预测单元(PU)和变换单元(TU)。

2024-06-08 15:39:53 732

原创 【设计模式】策略模式

【代码】【设计模式】策略模式。

2024-05-26 21:04:53 380

原创 【设计模式】备忘录模式

【代码】【设计模式】备忘录模式。

2024-05-26 16:06:12 320

原创 【设计模式】桥接模式

【代码】【设计模式】桥接模式。

2024-05-22 16:18:11 609

原创 【设计模式】适配器

两种语言,子类英语翻译器和法语翻译器继承父类翻译,继承父类构造函数,重写translateToPanda()和translateToHuman()方法,translateToPanda()接收m_foreigner->confession()忏悔并输出, translateToHuman()接收m_panda.sendMessage()回复并输出。将一个类的接口转换成用户希望的另一个接口,是不兼容的对象能够互相配合在一起工作,这种模式叫做适配器模式。适配器可以分为:容器适配器、函数适配器、迭代器适配器。

2024-05-22 15:09:05 331

原创 【设计模式】原型模式

定义:原型模式就是能过复制已有对象,而无需是代码依赖他们所属的类。换种说法,就是通过已有对象克隆出另一个新的对象,并且克隆这个对象不需要使用构造函数。克隆可能会在父类和子类之间进行,并且可能是动态的,很明显通过父类的拷贝构造函数无法实现对子类对象的拷贝。,其实这就是一个多态,我们需要给父类提供一个克隆函数并且是一个虚函数。

2024-05-20 21:20:18 396

原创 【设计模式】生成器

在这个生成器类中只要调用build方法,对应的零件就会加载到SunnyShip类的对象m_sunny中,当当船被造好之后就可以通过SunnyShip* getsunny()方法得到桑尼的实例对象。船生成器:每艘船的零部件由对应的生成器类构造完成,抽象类中定义建造海贼船所有零部件的方法,在这个类的子类中需要重写这些虚函数,分别完成桑尼号 和梅利号零件的建造。主管类:桑尼号和梅利号分别有三个规格,简约型、标准型、豪华型根据不同的规格,有选择的调用生成器中不同的建造函数,就可以得到最终的成品了。

2024-05-20 20:57:42 403

原创 【设计模式】抽象工厂模式

抽象工厂模式适用于比较复杂多变的业务场景,总体上就是给一系列功能相同但属性会发生变化的组件添加一个抽象类,可以方便后续拓展,再搭配工厂类就可以创建我们需要的对象。和ShipBody 、Weapon、Engine有依赖关系,在工厂函数中创建了它们的实例对象。抽象工厂模式较与工厂模式其创建的对象对应的类有抽象的基类。和Ship 类有依赖关系,在工厂函数中创建了它的实例对象。有三个子类,在子类中通过不同的材料来建造船体。有三个子类,在子类中给战船提供不同种类的武器。在子工厂类中生产不同型号的战船。

2024-05-19 21:50:51 316

原创 【设计模式】工厂模式

3、使用,首先创建一个工厂类对象,然后通过这个对象调用工厂函数,这样就可以生产出一个指定类型的实例对象了。每个子工厂类负责生产一种恶魔果实,相当于再次解耦,将工厂类职责再次拆分、细化。在简单工厂模式中,创建了一个工厂类,用于生产需要的对象。2、在工厂类中添加一个公共的成员函数,通过这个函数创建我们需要的对象,其一般称为工厂函数。工厂模式目的就是实现类与类之间的解耦合,使得创建对象时更简便,程序更加便于维护。1、创建一个新的类,称为工厂类,对于简单工厂模式来说,需要的工厂类只有一个。

2024-05-19 20:48:04 178

原创 【设计模式】简单工厂模式

【代码】【设计模式】简单工厂模式。

2024-05-19 16:14:25 119

原创 【设计模式】单例模式的任务队列

存储任务的容器,这个容器可以选择使用STL中的队列(queue)互斥锁,多线程访问的时候用于保护任务队列中的数据。方法:主要是对任务队列中的任务进行操作。往任务队列中添加一个任务。从任务队列中取出一个任务。从任务队列中删除一个任务。任务队列中任务是否为空。来源: 爱编程的大丙。

2024-05-18 20:49:49 395

原创 【设计模式】桥接模式-学习记录

举个例子,遥控器就是抽象接口,它具有开关电视的功能,修正抽象就是遥控器的实例,对遥控器的功能进行实现和扩展,而电视就是实现接口,具体品牌的电视机是具体实现,遥控器中包含一个对电视接口的引用,通过这种方式,遥控器和电视的实现被分离,我们可以创建多个遥控器,每个遥控器控制一个品牌的电视机,它们之间独立操作,不受电视品牌的影响,可以独立变化。桥接模式是一种结构型设计模式,其UML图像一座桥,通过抽象部分与实现部分分离,使它们可以独立变化,从而达到降低系统低耦合的目的。这些类负责实现实现化接口定义的具体操作。

2024-05-13 21:25:32 211

原创 【设计模式】单例模式-学习记录

单例模式是一种创建型设计模式,核心思想为一个类只有一个实例,并提供一个全局访问点来访问这个实例。只一个实例就是在整个应用程序中,只存在该类的一个实例对象,而不是创建多个相同类型的对象。全局访问点的意思是,为了让其他类能获取这个唯一的实例,该类提供了·一个全局访问点(通常是一个静态方法),就能获得实例。

2024-05-12 16:18:05 404

原创 【操作系统】用户态和内核态

操作系统为了保护自己而进行严格控制用户资源的访问,不需要外部资源的程序运行状态为用户态,反之需要内核操作资源时为内核态。用户态和内核态指的是程序运行时处于状态,在不同时候处于的状态可能会不同。系统调用包含以下5个内容。

2024-03-25 14:30:15 251

原创 【C++】函数对象包装器function与bind

lambda表达式本身是一个函数对象,当lambda表达式的捕获列表为空时,lambda表达式还能作为一个函数指针进行传递。function可以对普通函数、匿名函数、类成员函数、仿函数进行全面的封装。

2024-03-24 19:50:49 206

原创 【C++】lambda表达式/匿名函数

lambda表达式一般不需要说明返回值(相当于auto);有特殊情况需说明时,则应使用箭头语法方式。[捕获列表](参数列表)mutable(可选)异常属性->返回类型{lambda表达式实际是提供一个类似匿名函数的特性。lambda表达式基础。

2024-03-24 19:04:48 148

原创 【C++11】跨平台线程池

使用 C++11 标准库中的 std::thread、std::mutex、std::condition_variable、std::function 和 std::queue 等组件实现。

2024-03-24 17:20:52 174 1

原创 【C++】学习记录--condition_variable 的使用

【代码】【C++】学习记录--condition_variable 的使用。

2024-03-24 16:09:22 496 1

原创 【C++】互斥量解决多线程数据共享问题

当多个线程访问同一变量时,并且其中至少有一个线程对变量进行了写操作,就会出现数据竞争问题。数据竞争问题可以使用同步机制来确保多个线程之间对共享数据的访问是安全的。常见的同步机制包括互斥量、条件变量、、原子操作等。

2024-03-24 15:33:42 362 1

原创 【C++】学习记录--Thread线程库的使用

注意:一旦线程被分离,就不能再使用't.join()'方法等待线程结束。可以使用'joinable()'方法,其返回值为布尔值。如果线程可以被join()或detach(),则返回true,否则返回false。创建线程需要一个可调用的函数或者函数对象作为线程的入口。线程创建后,可以使用't.join*()'等待线程完成,或使用't.detach()'分离线程,让线程在后台运行。线程是进程的一个执行路径,是CPU调度与分配的的最小单元。'args'为传递给函数的参数。

2024-03-24 15:11:04 454 1

原创 【C++】排序

【代码】【C++】排序。

2024-03-19 21:23:10 257

原创 【C++】vector\deque容器案例--评委打分

案例描述有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。实现步骤创建五名选手,放到vector中 遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中 sort算法对deque容器中分数排序,去除最高和最低分 deque容器遍历一遍,累加总分 获取平均分#include <vector>#include <iostream>using namespace st

2024-03-10 21:38:44 1005 1

原创 【C++】STL

/自定义数据类型public:int m_Age;//存放对象//创建数据it!= v.end();it++)//创建数据it!= v.end();test2();return 0;

2024-03-09 15:16:36 1979 1

原创 【C++】类模板案例

类模板案例—数组类封装.cpp中。myArray.hpp中代码。

2024-03-08 17:13:37 621 1

原创 【C++】函数和类模板

函数模板的作用:建立一个通用函数,其函数返回类型和形参类型可以不具体制定,用一个代表。template--声明模板创建typename--表明其后的符号是一种数据类型,可以用class代替T--通用的数据类型,名称可替换,通常为大写字母函数模板案例案例描述:利用函数模板封装一个排序函数,对不同类型数据数组进行排序排序规则从小到大,排序算法为选择排序分别利用char数组和int数组进行测试。

2024-03-06 13:12:45 557 1

原创 【C++】二进制文件

函数原型:ostream& write(const char * buffer,int len);函数原型:istream& read(char *buffer,int len);参数解释:字符指针buffer指向内存中的一段存储空间。参数解释:字符指针buffer指向内存中一段存储空间。打开方式要指定为----ios::binary-----文件输入流对象可以通过read函数,以二进制方式读数据。二进制方式写文件主要利用流对象调用成员函数write。二进制方式读文件主要利用流对象调用成员函数read。

2024-03-03 14:00:58 549

原创 【C++】文件操作

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件类型分为两种操作文件的三大类ofstream:写操作ifstream:读操作fstream:读写操作。

2024-03-03 13:21:57 567

空空如也

空空如也

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

TA关注的人

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