- 博客(62)
- 收藏
- 关注
原创 C++-静态成员与友元
C语言中可以通过全局变量实现数据共享,在程序的任何位置都可以访问C++中希望某个类的多个对象之间实现数据共享,可以通过static建立一个被局限在类中使用的全局资源,该类型资源被称为静态变量(可以理解为局部变量在类中使用的全局变量)
2024-02-26 15:57:57
459
原创 C++-拷贝构造函数
类中的缺省拷贝构造函数,对指针形式的成员变量按字节复制,而不会复制指针所指向的内容,这种拷贝方式称为浅拷贝。深拷贝:为了避免浅拷贝遇到的重复重置内存问题,获得完整意义上的对象副本,必须自己定义拷贝构造函数,针对指针的成员变量,实现对指针指向内容的复制。
2024-01-10 21:57:46
426
原创 C++-构造与解析
public:stu(int m_age, string m_name) {//编译完成之后就是stu(stu *this, int m_age, string m_name);//传递参数为(&zs,18,"zhangsan");//传递参数为(&ls, 21, "lisi");return 0;this是一个用于标识对象自身的隐式指针,代表对象自身的地址。
2024-01-07 22:25:09
2126
原创 C++函数——内联函数、动态内存管理
在函数声明或定义时,将inline关键字加在函数返回类型前面就是内联函数。作用:提高代码执行效率;不需要监理函数调用时的运行环境,不需要进行参数传递,不需要跳转。
2023-12-21 20:54:50
96
原创 C++函数
在C++中,函数的形参列表中是可以有默认值的。有默认值的参数即位默认参数。在函数调用时,有默认参数可以缺省语法:返回值类型 函数名 (参数=默认值){函数体}注意事项:靠右原则,即如果某个参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值;函数声明和函数实现(即函数定义),只允许有一个默认值,即如果函数声明有默认值,则函数实现的时候就不能有缺省参数;
2023-12-20 20:51:59
73
原创 数据库之API操作
-功能:打开sqlite数据库--path:数据库文件路径--db:指向sqlite句柄的指针--返回值:成功返回SQLITE_OK,失败返回错误码(非零值)
2023-10-27 21:09:42
279
原创 域名解析与http服务器实现原理
h_addr_list:指向主机网络地址的指针数组(按网络字节顺序),由NULL终止。h_addrtype:地址类型;(AF_INET或AF_INET6)h_aliases:主机的备用名称数组,以NULL结尾指针。h_length:地址的长度(以字节为单位)h_name:主机的正式名称。
2023-08-29 23:27:29
242
原创 广播与组播
一个网络内主机号全为1的IP地址为广播地址发到该地址的数据包被所有的主机接收255.255.255.255在所有网段中都代表广播地址广播的实现。
2023-08-24 08:19:37
101
原创 套接字属性设置
执行成功返回0,否则返回-1,errno来获取错误信息。执行成功返回0,否则返回-1,errno来获取错误信息。optval:指向存放接收到的选项内容的缓冲区。optlen:指向optval所指缓冲区的大小。optval:指向存放接收到的选项内容的缓冲区。optlen:指向optval所指缓冲区的大小。optname:表示要获取的选项名称。optname:表示要设置的选项名称。sockfd:套接字描述符。level:表示选项的级别。sockfd:套接字描述符。level:表示选项的级别。
2023-08-22 07:51:55
112
原创 poll函数和epoll函数
(nfds文件描述符个数,timeout时间,单位微秒)short events;POLLPRI:有紧急数据需要读取。POLLIN:有数据可读。POLLOUT:文件可写。poll函数:事件类型。
2023-08-17 21:04:42
105
原创 网络开发-IO模型
I/O即数据的读取(接收)或写入(发送)操作通常用户进程中的一个完整I/O分为两个阶段I/O分为内存I/O、网络I/O和磁盘I/O三种。
2023-08-05 23:16:01
142
原创 IP协议与ethernet协议
—占16位,至首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节。——占8位,记为TTL,指示数据报在网络中可通过的路由器数的最大值。——占4位,可表示的最大数值是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节。——占13位,指出:较长的分组在分片后某片在原分组中的相对位置,片偏移以8个字节为偏移单位。——占8位,指出此数据报携带的数据使用何种协议,以便目的主机的IP层将数据上交给那个处理过程。——占16位,它是一个计数器,用来产生IP数据报的标识。
2023-07-31 22:31:28
542
原创 TCP连接管理与UDP协议
TCP建立连接的过程叫做握手采用三报文握手:在客户和服务器之间交换三个TCP报文段,以防止已失效的连接请求报文段突然又传送到了,因而产生TCP连接建立错误。第一次握手。
2023-07-28 22:57:48
292
原创 TCP协议如何实现可靠传输
TCP是面向连接的运输层协议,在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务。为此,在IP的数据报服务基础之上,增加了保证可靠性的一系列措施。每一条TCP连接只能有两个端点,每条TCP连接只能是点对点的(一对一)2.TCP提供可靠交付的服务3.TCP提供全双工通信(TCP协议会维护两个缓冲区,分别是接收缓冲区和发送缓冲区)4.面向字节流。
2023-07-26 22:41:15
1269
原创 socket套接字及TCP的实现框架
Berkeley UNIX操作系统定义了一种API,它又称为套接字接口(socket interface)微软公司在其操作系统中采用了套接字接口API,形成了一个稍有不同的API,并称之为windows SocketAT&T为其UNIX系统V定义了一种API,简写为TLI(Transport Layer Interface)
2023-07-18 22:40:19
66
原创 字节序及IP地址转换
字节序:指多字节数据在计算机内存中存储或网络传输时各字节的存储顺序,分为大端字节序,小端字节序;大端字节序就是存储0x11223344时现存高位11,依次往低位存储,而小端字节序则相反编程查看字节序是大端还是小端。
2023-07-17 23:09:16
157
原创 TCP_IP协议与五层体系结构
相对于OSI协议,进行了简化,其中OSI中的应用层、表示层、会话层合并为应用层,数据链接层和物理层合并为网络接口层TCP/IP 是事实上的国际标准(四层结构:应用层 运输层 网际层 网络接口层)实际上TCP/IP只有最上面的三层,最下面的网络接口层(链路层)并没有具体内容链路层所使用的各种局域网标准是由IEEE的802委员会下属的各工作组负责制定的。
2023-07-16 21:51:50
97
原创 OSI七层体系结构
网络协议(network protocol),简称协议,是为进行网络中的数据交换而建立的规则、标准或约定。三个组成要素:语法:数据与控制信息的结构或格式语义:需要发出何种控制信息,完成何种动作以及做出何种响应同步:事件实现顺序的详细说明。
2023-07-14 22:39:45
149
原创 网络编程开发及实战-什么是互联网
互联网络定义:多个网络通过一些路由器项目连接起来,构成了一个覆盖范围更大的计算机网络,即网络的网络。计算机网络的定义:由若干节点和连接这些节点的链路组成,节点可以是计算机、集线器、交换机或路由器等。核心部分:由大量网络和连接这些网络的路由器组成,为边缘部分提供服务(提供连通性和交换)边缘部分:由所有连接在互联网上的主机组成,由用户直接使用,用来进行通信和资源共享,可以分为:公用网,即按规定缴纳费用的人都可以使用的网络也可称为公众网。互联网:全球最大的、开放的、由众多网络项目连接而成的特定互连网络。
2023-07-13 23:15:09
75
原创 Flappy bird游戏开发项目-信号机制
在Linux中,软中断信号(signal,简称为信号)是在软件层次上对中断的一种模拟,用来通知进程发生了异步事件。内核可以因为内部事件而给进程发送信号,通知进程发生了某个事件。
2023-07-06 22:48:41
77
原创 Flappy bird项目-小游戏开发
Ncurses构成了一个工作在底层终端代码之上的封装,并向用户提供一个灵活高效的API(应用程序接口)。它提供了创建窗口界面,移动光标,产生颜色,处理键盘按键等功能。使程序员编写应用程序不需要关心那些底层的终端操作。Ncurses是最早的System V Release 4.0 (SVr4)中curses的一个克隆和升级。这是一个可自由配置的库,完全兼容旧版本curses。简而言之,它是一个管理应用程序在字符终端显示的库函数。Ncurses库介绍。
2023-07-05 22:27:57
68
原创 信号灯/信号量
信号灯也叫信号量:是不同进程间或一个给定进程内部不同线程间同步的机制。类似我们的PV操作概念生产者和消费者场景P(S)含义如下:if(信号量的值大于0) {申请资源的任务继续运行;信号量的值减一;} else {申请资源的任务阻塞;V(S)含义如下:信号量的值加一;if (有任务在等待资源) {唤醒等待的任务,让其继续运行Posix 有名信号灯Posix 无名信号灯(linux只支持线程同步)System V信号灯Posix有名信号灯和无名信号灯使用:使用信号等需。
2023-07-01 22:43:13
100
原创 信号的阻塞和信号集
有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数。这种情况可以通过阻塞信号实现。信号的”阻塞“是一个开关动作,指的是阻止信号被处理,但不是阻止信号产生。信号的状态:信号递达(Delivery):实际信号执行的处理过程(3种状态:忽略,执行默认动作,捕获)信号未决(Pending):从产生到递达之间的状态。
2023-06-25 10:16:17
96
原创 信号机制-(信号概念、发送定时器等)
概念:信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式,所有信号的产生及处理全部都是由内核完成的信号的产生:1、按键产生2、系统调用函数产生(raise,kill)3、硬件异常4、命令行产生(kill)5、软件条件(比如被0除,访问非法内存等)信号处理方式:1、缺省方式2、忽略信号3、捕捉信号常用信号:信号命令:信号的函数:功能:发送信号参数:pid: >0:发送信号给指定进程=0:发送信号给根调用kill函数的那个进程处于同一进程组的进程。
2023-06-21 22:43:46
83
原创 共享内存-内存映射
使一个磁盘文件与内存中的一个缓冲区相映射,进程可以像访问普通内存一样对文件进行访问,不必再调用read,wrid。mmap()的优点:实现了用户空间和内存空间的高效交互方式。
2023-06-16 23:04:54
361
原创 进程间的通信-有名管道和无名管道
如果open调用是非阻塞的(即第二个参数为O_WRONLY | O_NONBLOCK),open总会立即返回,但如果没有其他进程以只读方式打开同一个FIFO文件,open调用将返回-1,并且FIFO也不会被打开。4、.数据完整性,如果有多个进程写同一个管道,使用O_WRONLY方式打开管道,如果写入的数据长度小于等于PIPE_BUF(4K),那么或者写入全部字节,或者一个字节都不写入,系统就可以确保数据决不会交错在一起。(2)管道未满,write将数据写入,并返回实际写入的字节数。
2023-06-11 11:23:42
70
原创 线程池及GDB调试多线程
概念:通俗的讲就是一个线程的池子,可以循环的完成任务的一组线程集合必要性:我们平时创建一个线程,完成某一个任务,等待线程的退出。但当需要创建大量的线程时,假设T1为创建线程时间,T2为在线程任务执行时间,T3为线程销毁时间,当T1+T3 > T2,这时候就不划算了,使用线程池可以降低频繁创建和销毁线程所带来的开销,任务处理时间比较短的时候这个好处非常显著。线程池的基本结构:1、任务队列,存储需要处理的任务,由工作线程来处理这些任务2、线程池工作线程,它是任务队列任务的消费者,等待新任务的信号。
2023-06-05 22:32:46
65
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人