C++标准库本身并没有提供专门用于单元测试的功能。然而,可以使用C++标准库中的一些类和函数来进行单元测试。
C++标准库提供了一些有用的工具,例如断言宏(assert)和异常处理机制(try-catch语句),可以帮助开发者编写单元测试。
2025年07月16日
C++标准库本身并没有提供专门用于单元测试的功能。然而,可以使用C++标准库中的一些类和函数来进行单元测试。
C++标准库提供了一些有用的工具,例如断言宏(assert)和异常处理机制(try-catch语句),可以帮助开发者编写单元测试。
2025年07月16日
基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下:
connect()函数
对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三次握手,而这个连接的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知 Linux 内核,让 Linux 内核自动完成 TCP 三次握手连接(三次握手详情,请看《浅谈 TCP 三次握手》),最后把连接的结果返回给这个函数的返回值(成功连接为0, 失败为-1)。
2025年07月16日
#include <sys/socket.h>
int socket(int family,int type,int protocol);
2025年07月16日
一、下图是典型的UDP客户端/服务器通讯过程
下面依照通信流程,我们来实现一个UDP回射客户/服务器
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);
2025年07月16日
什么是网关服务器
初学linux服务器开发时,我们的服务器是很简单的,只需要一个程序完成与客户端的连接,接收客户端数据,数据处理,向客户端发送数据。
但是在处理量很大的情况下,一台机器不能满足我们的需求,此时我们应该怎么办。
我们可以将服务端的任务分摊到多台机器上完成,见下图
从图中可见,此时整个服务端主要分为了三部分。
网关服务器:负责连接客户端与逻辑服务器,在两者间完成数据转发,使用负载均衡算法保证每个逻辑服务器的工作量均衡,以及进行数据加密。
2025年07月16日
前一阵子发现服务会有偶发的服务不可用的情况,记录一下这个问题的排查过程。
现象是这样的:每天到了某个时间点,就会出现服务不稳定的情况,偶发接口调不通。
线上业务使用了lvs-nginx-tomcat三层结构,首先查看tomcat监控,没有什么特别异常的情况,响应时间和错误码没发现有什么异常,CPU、IO等等指标也都正常。
再查看nginx上的监控,发现在某个时刻这个服务的5xx报错突增,大概7、8秒之后又恢复了。
继续在nginx服务器上找线索,发现Nginx在那个时间点会出现报错:
2025年07月16日
01. TCP概述
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。
2025年07月16日
TCP是个“流”协议,即没有边界。由于这个特性以及实际的网络情况,在进行数据传输时假设我们连续调用send分别发送两段数据data1和data2,在接收端有以下几种代表性的情况: