protobuf简介Protocol Buffers(简称 protobuf)是 Google 开发的一种数据交换格式。它是一种灵活、高效且自动化的结构化数据序列化方法,类似于 XML、JSON 和其他配置文件格式,但更小、更快、更简单。我们的逻辑是有类等抽象数据构成的,而tcp是面向字节流的,我们需要将类结构序列化为字符串来传输。
主要特点:
语言无关:protobuf 支持多种编程语言...
什么是粘包TCP粘包问题是指在使用TCP协议进行网络通信时,客户端和服务器之间发送的数据包可能会被TCP协议栈在底层进行合并或者拆分,导致客户端接收到的数据不再是单独、完整的数据包,而是多个数据包的内容被粘在一起或者多个数据包的内容被拆分到不同的接收缓冲区中。
粘包原因1. 因为TCP是面向字节流的协议传输的数据是以流的形式,而流数据是没有明确的开始结尾边界,所以 TCP 也没办法判断哪一段...
介绍单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们调整系统行为
实现思路
一个类能返回一个对象的引用(永远都是同一个)和一个获得该实例的方法(必须是静态方法) getInstance
调用这个方法时,如果类持有的引用不为空就返回这个引用。如果类保持的引用为空,就创建该类的实例返回这个实例的引用
将该类的构造函数定义为私有方法,这样其他处的代码就无...
简介建造者模式(Builder Pattern)是一种在软件设计中用来组织对象的构造过程的方法。它将对象的构建和表示分离,允许独立改变构建过程或生成不同的表示形式。这种模式特别适用于那些需要创建复杂对象的场景,在这些场景中,对象的组成部分可能相互依赖或者取决于外部环境条件。
建造者模式的主要组件建造者模式通常包含以下主要组件:
产品(Product)接口:定义了一个通用的产品或对象结构。所...
简介在软件开发中,工厂模式是一种设计模式,主要用于创建对象而不暴露具体类的创建细节。这种模式的主要目标是封装创建过程,并将创建逻辑从客户端代码中解耦出来。
定义和意图:工厂模式的意图在于提供一个创建一系列相关或相互依赖的对象的过程,而无需指定这些对象的具体类。它通过定义一个工厂类来实现这一功能,该工厂类负责根据输入参数决定创建哪个具体类的实例。
常见形式工厂模式通常有以下几种常见形式:
简...
智能指针概述
为什么要有智能指针:直接用new和delete运算符极其容易导致内存泄露,而且非常难以避免,于是人们发明了智能指针这种可以自动回收内存的的工具
智能指针一共就三种:普通的指针可以单独一个指针占用一块内存,也可以多个指针共享一块内存
共享型智能指针:shared_ptr
同一块堆内存可以被多个shared_ptr共享
独享型智能指针:unique_ptr
同一块堆内存只能...
终端节点的创建所谓终端节点就是用来通信的端对端的节点,可以通过ip地址和端口构造,其的节点可以连接这个终端节点做通信
如果是客户端,可以通过对端的ip和端口构造一个endpoint对象
12345678910111213141516171819202122232425int client_endpoint() { // 定义需要解析的IP地址字符串和端口号 std::string...
操作系统的概念、功能、目标作为用户和计算机硬件之间的接口
提供的功能:
命令接口:
联机命令接口(输入一次,输出一次)
脱机命令接口(批处理命令)
程序接口:
提供系统调用(广义指令)
目标: 方便用户使用
关于库函数和系统调用的区别
库函数是语言或应用程序的一部分,可以运行在运行在用户空间中
系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中,并且...
socket编程socket的概念Socket(套接字)是计算机网络编程中的一个基本概念,它为应用程序提供了访问底层网络协议的接口,使得进程间能够通过网络进行通信。在更广泛的意义上,Socket 是操作系统提供的一个抽象层,用于简化网络编程并隐藏复杂的网络协议细节。
Socket 是两个进程间通信的端点,每个 Socket 都有唯一的地址,这个地址包括 IP 地址和端口号。IP 地址用于定位...
Python 数据类型数字在python中数字有三种类型:整数(int)、浮点数(float)、复数(complex)我们可以使用type()函数来判断一个变量或值属于哪个类,还可以通过instance()函数来检查对象是否属于特定的类
12345678910111213def checkType(a): print(a, type(a))a = 1b = 2.5c = 1+2jpri...