自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 织梦云端:网络信号原理的艺术解码

在Linux网络编程中,“信号”(Signal)是操作系统用来通知进程某个事件已经发生的一种机制。信号是一种软件中断,它可以在任何时候发送给一个进程,使得该进程可以中断当前的执行,处理该信号,然后再回到原来的执行状态。Linux系统中定义了许多信号,每个信号都有其特定的用途。SIGINT:通常在用户按下Ctrl+C时发出,用于中断程序的执行。SIGCHLD:当一个子进程终止时,父进程会收到这个信号。SIGALRM:定时器超时时发送。SIGPIPE:在尝试写入一个没有读取器的管道或socket时发送。

2024-04-29 11:11:45 1320 87

原创 【linux高性能服务器编程】项目实战——仿QQ聊天程序源码剖析

像ssh这样的登录服务通常要同时处理网络连接和用户输入,这也可以使用I/O复用来实现。我们以poll为例实现一个简单的聊天室程序,以阐述如何使用I/O 复用技术来同时处理网络连接和用户输入。该聊天室程序能让所有用户同时在线群聊,它分为客户端和服务器两个部分。其中客户端程序有两个功能:一是从标准输入终端读入用户数据,并将用户数据发送至服务器;二是往标准输出终端打印服务器发送给它的数据。服务器的功能是接收,客户数据,并把客户数据发送给每一个登录到该服务器上的客户端(数据发送者除外)。

2024-04-26 23:06:21 2034 107

原创 【Linux高性能服务器编程】两种高性能并发模式剖析——领导者/追随者模式

领导者/追随者模式是多个工作线程轮流获得事件源集合,轮流监听、分发并处理事件的一种模式。在任意时间点,程序都仅有一个领导者线程,它负责监听I/O事件。而其他线程则都是追随者,它们休眠在线程池中等待成为新的领导者。当前的领导者如果检测到IIO事件,首先要从线程池中推选出新的领导者线程,然后处理I/O事件。此时,新的领导者等待新的I/O事件,而原来的领导者则处理I/O 事件,二者实现了并发。

2024-04-24 21:43:00 1162 7

原创 【Linux高性能服务器编程】两种高性能并发模式剖析——半同步/半异步模式

首先,对于I/O模型中的同步和异步,意思是区分内核向应用程序通知的是何种I/O事件(是就绪事件还是完成事件),以及让谁来完成任务(是应用程序还是内核)。而在并发编程中,指程序按照顺序还是需要按照程序执行的需要由系统事件来驱动,常见的系统事件有:中断,信号。如下图:按照同步方式运行的线程称为同步线程,按照异步方式运行的线程称为异步线程。显然,异步线程的执行效率高,实时性强,这是很多嵌入式程序采用的模型。但编写以异步方式执行的程序相对复杂,难于调试和扩展,而且不适合于大量的并发。

2024-04-23 22:24:10 1056 3

原创 【Linux高性能服务器编程】——高性能服务器框架

hello!大家好呀!欢迎大家来到我的Linux高性能服务器编程系列之高性能服务器框架介绍,在这篇文章中,希望这篇文章能对你有所帮助,大家要是觉得我写的不错的话,那就点点免费的小爱心吧!注:这章对于高性能服务器的架构非常重要哟!!!

2024-04-22 21:48:59 1928 65

原创 【网络编程】Web服务器shttpd源码剖析——CGI支持实现

CGI(Common Gateway Interface,通用网关接口)是一种重要的互联网技术,它允许网页服务器运行外部程序来处理用户请求,并生成动态内容。CGI 是一种标准方法,用于 web 服务器传递用户请求给服务器上的应用程序,并接收应用程序的响应,然后将响应返回给用户。用户请求:用户通过浏览器发送请求给 web 服务器,请求可以是一个普通的页面请求,也可以是一个表单提交。服务器响应:web 服务器接收到请求后,如果请求的是静态内容(如 HTML 文件),服务器直接返回内容。

2024-04-20 15:15:51 1320 20

原创 【网络编程】Web服务器shttpd源码剖析——线程池调度

hello!大家好呀!欢迎大家来到我的网络编程系列之web服务器shttpd源码剖析——线程池调度,在这篇文章中,希望这篇文章能对你有所帮助,大家要是觉得我写的不错的话,那就点点免费的小爱心吧!

2024-04-18 21:45:21 1228 16

原创 【网络编程】web服务器shttpd源码剖析——命令行和文件配置解析

hello!大家好呀!欢迎大家来到我的网络编程系列之web服务器shttpd源码剖析——命令行解析,在这篇文章中,希望这篇文章能对你有所帮助,大家要是觉得我写的不错的话,那就点点免费的小爱心吧!

2024-04-17 22:06:49 1543 50

原创 【网络编程】如何创建一个自己的并发服务器?

hello!大家好呀!欢迎大家来到我的网络编程系列之如何创建一个自己的并发服务器,在这篇文章中,希望这篇文章能对你有所帮助,大家要是觉得我写的不错的话,那就点点免费的小爱心吧!

2024-04-16 23:37:25 1328 11

原创 【网络编程】Linux网络内核结构以及分布剖析

在Linux内核中,软中断(Soft Interrupt)是一种非硬件中断,它允许内核代码在不需要CPU硬件中断的情况下执行中断处理代码。软中断通常用于执行一些需要立即执行的任务,但不需要立即响应的场合,例如网络数据包的处理、磁盘I/O操作等。

2024-04-15 19:52:17 1574 51

原创 【网络编程】高性能并发服务器源码剖析

hello!大家好呀!欢迎大家来到我的网络编程系列之洪水网络攻击,在这篇文章中,希望这篇文章能对你有所帮助,大家要是觉得我写的不错的话,那就点点免费的小爱心吧!

2024-04-14 16:01:54 2182 56

原创 ​​​​网络编程探索系列 —— 洪水网络攻击

洪水攻击,也被称为拒绝服务攻击(DoS),是一种旨在通过使网络或系统资源耗尽来阻止用户访问服务的攻击手段。这种攻击通常通过发送大量请求来淹没目标系统,导致合法用户无法访问服务,其中主要利用了网络协议的安全机制或者直接使用十分简单的大量ping资源的方法来对目标机造成影响。

2024-04-13 15:25:29 2042 47

原创 ​​​​网络编程探索系列之——广播原理剖析

广播是一种网络通信技术,允许数据包(如 IP 数据包)被发送到网络上的所有设备。在广播通信中,数据包不是发送给特定的接收者,而是发送给网络中的所有设备。每个设备都会接收到这个数据包,但只有特定地址的设备会响应。广播通常用于局域网(LAN)中,允许设备之间直接通信,而不需要通过路由器。这种通信方式可以提高网络的效率,因为它避免了数据包在网络中的不必要的转发。

2024-04-12 22:13:34 2112 14

原创 [C++/Linux] UNIX域函数

Unix域套接字(Unix Domain Sockets),也称为本地套接字(Local Sockets),是一种特殊的套接字,它允许在同一台主机上的进程间进行通信。与网络套接字不同,Unix域套接字不经过网络协议栈,因此它们通常比网络套接字更快,并且不需要端口和IP地址。Unix域套接字提供了流式(SOCK_STREAM)和数据报(SOCK_DGRAM)两种通信方式,类似于TCP和UDP。流式套接字提供了可靠的双向字节流通信,而数据报套接字则提供了不可靠的双向数据报通信。

2024-04-10 20:02:14 1464 4

原创 [C++/Linux] UDP编程

UDP(用户数据报协议,User Datagram Protocol)是一种无连接的网络协议,用于在互联网上交换数据。它允许应用程序发送数据报给另一端的应用程序,但不保证数据报能成功到达,也就是说,它提供的是一种不可靠的服务。与TCP(传输控制协议)相比,UDP的优势在于它的简单性和低开销,使得它特别适合于那些对实时性要求高的应用,如视频会议和在线游戏。在编程中,使用UDP进行数据通信涉及到一系列的函数调用。这些函数调用通常通过操作系统提供的网络接口与内核进行交互。

2024-04-09 21:49:44 1065 1

原创 [C++/Linux] 网络I/O处理

I/O处理

2024-04-08 22:21:59 1917 5

原创 [C++/Linux] Linux线程详解

在Linux中,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。同一进程中的多条线程将共享该进程所拥有的全部资源,但每条线程都有各自的调用栈和程序计数器,能够独立运行。那么什么是并发与并行呢?

2024-04-04 17:33:39 1669 3

原创 Unix消息队列实例

我们创建三个文件,一个recieve.c和pa.c,pb.c 。用recieve.c来监听pa.c和pb.c发送的消息: recieve.c代码:pa.c理解: 在Unix-like系统中,函数用于从一个路径名和一个项目标识符(通常是整数)生成一个key值。这个key值用于进程间通信(IPC),比如消息队列、共享内存和信号量。函数的定义如下:复制是一个指向现有路径名的指针,通常是文件路径。 是一个整数,用于进一步区分不同的key值。重要的是要理解,生成的key值不仅取决于,还取决于。这

2024-04-02 10:58:45 975 3

原创 TCP网络编程实例

初始化服务器端的信息,包括网络协议、端口和服务器IP地址。设备与特定的网络地址和端口号绑定。,表示该服务器可接受任意网络中的请求,端口号被设为。函数向服务器发起连接。

2024-04-01 08:00:00 631 1

原创 Unix信号处理

函数是一个用于在指定时间后发送信号的函数。它允许你在程序中设置一个定时器,当定时器计时时间到达后,系统会向当前进程发送一个。函数可以设置特定信号的处理方式,可以是忽略该信号、采用默认的处理方式,或者调用自定义的信号处理函数。这个程序主要演示了信号处理的基本用法,以及父子进程之间对信号处理函数的继承。参数为 0,则之前设置的定时器会被取消,且不会设置新的定时器。函数时,程序会暂停执行两秒钟,然后继续执行后续的代码。函数会取消之前的定时器,并设置新的定时器。,表示定时器的计时时间,单位是秒。

2024-03-31 14:03:15 2017 3

原创 Unix中的进程和线程-2

1.进程对环境变量的操作1.进程对环境变量的操作getenvsetenvunsetenvgetenvsetenvunsetenv在这个程序中,我们首先使用getenv函数来获取 PATH 环境变量的当前值。然后我们使用setenv函数来创建一个新的环境变量 TEST_ENV 并为它设置一个值。接下来,我们再一次使用setenv函数来修改 PATH 环境变量的值。最后,我们使用unsetenv函数来删除我们之前创建的 TEST_ENV 环境变量。我们可以看到,通过调用getenv。

2024-03-30 15:04:41 1212 2

原创 Unix中的进程和线程-1

在Linux中,进程和线程是操作系统进行工作调度的基本单位,它们各自拥有特定的属性和作业环境。进程是指在系统中正在运行的一个应用程序。每个进程间都有各自独立的内存空间,即使是同一个程序的不同实例也不会共享这些信息。比如说,你可以打开多个计算机浏览器,它们都是独立的进程。每个进程至少有一个线程,这个线程被称为主线程。线程是进程中的一个单独的序列流,是进程的实际操作单位。线程在同一进程的上下文中运行,并共享同一进程的命名空间,这意味着它们共享同样的代码段、数据段和开放的文件资源等。

2024-03-28 19:44:18 1805 6

原创 Unix内存映射

更重要的是,每次编辑器对文件的修改,都必须把完整的文件内容重新写回磁盘,以确保数据的一致性,这将会极大地影响程序的性能。通过文件映射,编辑器可以将文件内容直接映射到内存中,将文件视为一个大数组。当修改文件时,只修改了内存中的一小部分,操作系统会负责将这部分数据写回磁盘,而不需要重新写入整个文件。通过将同一个文件映射到不同的进程内存空间中,这些进程就可以通过访问和修改这段共享内存,来交换数据和同步状态。其基本原理是,通过操作系统提供的内存管理设施,将文件的一部分或全部直接映射到进程的地址空间。

2024-03-27 19:44:11 679

原创 输入输出重定向

这个图左边是一个进程的文件描述符表,其中0,1,2分别代表系统的标准输入,标准输出,以及标准错误输出,而3为路径为/home/tarena/tt文件,我们可以使用dup函数将1复制到空文件描述符4中,从而1和4都指向标准输出。然后将fd即我们创建的文件作为1,即标准输出的输出位置,此时第一个write就会输出到我们的创建文件中,然后我们将s_fd 即屏幕输出重新复制到1中,然后关闭s_fd, 然后再次通过1。该代码是先指定一个文件参数,如果不存在就创建,然后我们将标准输出复制到s_fd(4)中。

2024-03-27 08:00:00 504

原创 Unix中仿写cp指令

我们还可以直接将这个可执行文件放入系统指令集中,这样可以代替我们的cp指令。这是一个简单的cp指令仿写,对于初学者来说很友好!

2024-03-26 21:38:37 504 2

原创 Git的使用教程

关于Git,这是一个基于Linux系统的分布式管理软件,大家肯定听说过,但是同时又有很多其他大家耳熟能详的比如,github,gitee ,以及gitlab,那么这几个是什么关系呢?Git作为安装在本机的软件,仓库类型有两种,本地仓库以及远程仓库,本地仓库是指在本机上创建Git仓库,远程仓库就是借助互联网进行代码托管服务,而github,gitee以及gitlab就是专门来托管Git的远程仓库。

2024-03-21 14:16:30 1156 1

原创 Linux基础操作

总结就是在系统访问域名时,需要对其解析为ip地址,先从本地记录查看,然后联网向DNS服务器询问对应ip地址。对于我们手动添加的第三方软件,有些不能自动集成,这需要我们手动集成(在后续会讲到)iostat -x num1 num2 ,num1是刷新间隔;进程是在操作系统种每一个运行的程序,并且会被分配一个独有的进程id。对于ip地址的定义,我就不多说了,大家自己复习计算机网络相关知识。网络监控:sar命令,sar命令其实很复杂,这里就只用来网络监测。1.nmap指令:这个命令查看的是对外开发的端口。

2024-03-16 16:21:42 1124 3

原创 Linux的ping指令连不上外网解决

第一个是当前虚拟机地址,第二个为掩码,第三个为网关,第四个为dns ,如果和我一样,就这样设置,不一样就按你自己设置。点击属性,如果你上面和我改的一样,就按我下面这样设置,如果不同,就按你自己的设置。这个问题真的困扰我了很久,我在电脑前四五个小时,查资料,腰酸背痛,终于解决了。点击NAT设置,记住子网ip,掩码,以及网关,不同可以设置和我一样。整个过程包含了常见的两种问题的解决方案,希望能帮助大家!对于这两种,我都遇到了,我在之间改来改去,终于算是从根源解决。然后在vm虚拟机中点击编辑中的虚拟网络编辑器。

2024-03-15 22:53:13 580 5

原创 Linux入门指令-2

初学linux,就当笔记啦!!

2024-03-14 23:27:57 390 1

原创 Linux基础命令学习-1

test代表任何以test结尾的文件,test*表示以test开头的文件,*test*代表包含test的文件。rm :删除文件/文件夹 rm [-r -f] 参数1 ,参数2.........参数,文件路径,必填,表示要过滤内容的文件路径,可作为管道符输入。-r 选项代表删除文件夹, -f表示强制删除,不会弹出提示。参数,关键字,必填,表示过滤的关键字,建议使用””将关键字包。选项-n,可选,表示在结果中显示匹配的行的行号。语法: wc [-c -m-1 -w] 文件路径。

2024-03-13 20:38:41 350

空空如也

空空如也

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

TA关注的人

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