套接字通信socket
一、套接字的概念 套接字是一种用于网络通信的编程接口,它提供了一种在不同主机上的进程之间进行通信的机制。套接字允许应用程序在网络上发送和接收数据,就像文件操作允许程序在本地存储上读写数据一样。它是网络通信的端点,每个套接字都由一个 IP 地址和一个端口号组成,通过这两个元素可以唯一地标识网络中的一个通信进程。 编辑 二、套接字的类型 流式套接字(Stream Sockets): 基于 TCP(Transmission Control Protocol)协议,提供面向连接、可靠的字节流服务。 数据传输是顺序的、无差错的、无重复的,并且保证数据的完整性和可靠性。 适用于需要可靠传输的应用,如文件传输、HTTP、SMTP、FTP 等。 在 C++ 中,使用 SOCK_STREAM 常量表示。 数据报套接字(Datagram Sockets): 基于 UDP(User Datagram...
常见设计模式(C++版)
1. 单例模式1.1 什么是单例设计模式单例模式是⼀种创建型设计模式, 它的核⼼思想是保证⼀个类只有⼀个实例,并提供⼀个全局访问点来访问这个实例。 只有⼀个实例的意思是,在整个应⽤程序中,只存在该类的⼀个实例对象,⽽不是创建多个相同类型的对象。 全局访问点的意思是,为了让其他类能够获取到这个唯⼀实例,该类提供了⼀个全局访问点(通常是⼀个静态⽅法),通过这个⽅法就能获得实例。 1.2为什么要使用单例设计模式呢简易来说,单例设计模式有以下⼏个优点让我们考虑使⽤它: 全局控制:保证只有⼀个实例,这样就可以严格的控制客户怎样访问它以及何时访问它,简单的说就是对唯⼀实例的受控访问(引⽤⾃《⼤话设计模式》第21章) 节省资源:也正是因为只有⼀个实例存在,就避免多次创建了相同的对象,从⽽节省了系统资源,⽽且多个模块还可以通过单例实例共享数据。 懒加载:单例模式可以实现懒加载,只有在需要时才进⾏实例化,这⽆疑会提⾼程序的性能。 1.3...
柔性作业车间调度(FJSP)
1.1 调度问题的研究背景 生产调度是指针对一项可分解的工作(如产品制造),在尽可能满足工艺路线、资源情况、交货期等约束条件的前提下,通过下达生产指令,安排其组成部分(操作)所使用的资源、加工时间及加工的先后顺序,以获得产品制造时间或成本最优化的一项工作。 一般研究车间调度问题时,都会以经典的作业车间调度问题(job shop scheduling problem,JSP)为基础进行研究,每个工件的每道工序只能在一台机器上加工,并且仅仅只能加工一次,加工时间是确定的,如图1.1所示。 随着柔性制造系统和数控加工中心等带有一定柔性的生产系统逐渐出现,以往经典作业车间调度的研究成果不能非常快速地直接应用于新的制造模式中,于是柔性作业车间调度问题(flexible jobshop scheduling...
python基础快速入门
基础语法变量和数据类型 Python 中有多种数据类型,如整数(int)、浮点数(float)、字符串(str)、布尔值(bool)等。 变量的命名规则:由字母、数字和下划线组成,不能以数字开头。 示例: 1234age = 25name = "Alice"is_student = Truepi = 3.14 运算符 算术运算符:+、-、*、/、%、**、//。 比较运算符:==、!=、>、<、>=、<=。 逻辑运算符:and、or、not。 赋值运算符:=、+=、-=、*=、/= 等。 示例: 12345678a = 10b = 3print(a + b)print(a > b)print(not a > b)c = 5c += 2print(c) 控制流语句在 Python...
NP-hard问题
一、前置知识1.多项式 多项式是由变量(如x、y等)和系数通过有限次的加、减、乘运算得到的表达式。例如3x^2+2x + 1就是一个关于(x)的多项式 2.时间复杂度 时间复杂度是用来衡量算法运行效率的一个指标。它描述了算法运行时间随着输入规模增长而增长的量级。简单来说,就是当输入的数据量(规模)不断变大时,算法执行所需时间的增长速度。通常使用大O符号(O)来表示时间复杂度。例如,O(n)、O(n²)、O(log n)等。其中,n代表输入规模。 如果一个算法的时间复杂度是O(n),表示算法的运行时间与输入规模n成线性关系。例如,一个简单的遍历数组的算法,需要逐个访问数组中的元素,当数组元素个数为n时,算法执行时间大致与n成正比。如果时间复杂度是O(n²),则运行时间与输入规模n的平方成正比。例如,嵌套的双层循环遍历一个二维数组,当二维数组的边长为n时,执行时间会随着n的平方增长。 O(log...