Linux
文章平均质量分 97
这个专栏收录了Linux的知识点,以及学习心得
Yawesh
劳动光荣,勤劳致富!
合作加V:YWS_yang
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【探索Linux】P.48(高级IO —— I/O多路转接之 poll )
本文全面介绍了poll函数,包括其简介、函数接口及参数说明、pollfd结构体的events和revents取值、返回值、工作原理、优缺点,并提供了使用示例和注意事项,最后进行了总结。原创 2024-08-15 22:18:56 · 1013 阅读 · 0 评论 -
【探索Linux】P.49(高级IO —— I/O多路转接之epoll )
本文全面介绍了epoll技术,包括其基本概念、相关系统调用(epoll_create、epoll_ctl、epoll_event结构体、epoll_wait)、工作原理(工作流程、事件触发模式)、优势以及使用示例。原创 2024-08-14 09:12:35 · 1101 阅读 · 2 评论 -
【探索Linux】P.47(高级IO —— I/O多路转接之 select)
本文全面介绍了select函数,包括其简介、函数原型及参数说明(特别是timeout的取值和相关结构体fd_set、timeval)、执行过程(从准备阶段到处理就绪的文件描述符)、优缺点以及使用示例。原创 2024-08-13 12:38:10 · 1184 阅读 · 0 评论 -
【探索Linux】P.46(高级IO —— 五种IO模型简介 | IO重要概念)
本文概述了五种IO模型(阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO)的定义和特点,探讨了同步通信与异步通信的概念、区别及适用场景,并解释了阻塞与非阻塞的概念及其在计算机网络和非网络通信中的应用场景。原创 2024-08-10 11:33:39 · 969 阅读 · 3 评论 -
【探索Linux】P.45(NAT技术 | NAPT技术)
这篇文章详细介绍了NAT(网络地址转换)技术,包括其引入背景、基本原理、主要类型、技术优势、面临的挑战以及实际应用场景,并特别探讨了NAPT(网络地址端口转换)的相关内容。原创 2024-08-06 13:01:11 · 2729 阅读 · 32 评论 -
【探索Linux】P.44(数据链路层 —— 以太网的帧格式 | MAC地址 | MTU | ARP协议)
这篇文章深入探讨了以太网的基础知识,包括以太网的帧结构、MAC地址的分配与作用、MTU(最大传输单元)的概念以及ARP(地址解析协议)的工作机制。原创 2024-08-03 18:02:57 · 2099 阅读 · 36 评论 -
【探索Linux】P.43(网络层 —— IP协议)
本文全面介绍了IP协议的基础,包括其核心概念、头部格式、网段划分技术、子网掩码的作用,以及如何区分私有与公网IP地址。此外,还深入探讨了路由的工作原理,包括路由表的构建和路由循环问题,旨在为读者提供一个关于IP网络通信和数据传输的综合性指南。原创 2024-07-31 13:16:50 · 1500 阅读 · 31 评论 -
【探索Linux】P.42(传输层 —— TCP面向字节流 | TCP粘包问题 | TCP异常情况 )
这篇文章深入探讨了TCP协议的面向字节流特性,分析了TCP粘包问题的原因、类型、影响以及解决策略,并讨论了TCP在异常情况下的处理方法,同时对UDP协议是否也存在粘包问题进行了探讨。原创 2024-07-27 21:18:34 · 1165 阅读 · 3 评论 -
【探索Linux】P.41(传输层 —— TCP拥塞控制 | 延迟应答 | 捎带应答 )
本文深入探讨了网络通信中的拥塞控制技术,包括慢启动机制和拥塞窗口的运用,以及延迟确认的原理和其在提高网络效率中的作用,同时分析了捎带应答技术,旨在优化网络流量控制和提升数据传输效率。原创 2024-07-23 15:53:28 · 1704 阅读 · 27 评论 -
【探索Linux】P.40(传输层 —— TCP滑动窗口 | 快重传 | 流量控制 )
本文深入探讨了TCP协议中的滑动窗口机制,分析了逐个确认的不足,并阐释了滑动窗口如何优化数据传输效率。进一步,文章详细介绍了快速重传的原理、触发条件、操作步骤,并与超时重传进行了对比分析,讨论了两者在TCP中的重要性和互补性。最后,文章对流量控制的概念、特点及实施中的注意事项进行了全面阐述,旨在为读者提供TCP传输效率和可靠性的深入理解。原创 2024-07-20 13:30:52 · 1107 阅读 · 6 评论 -
【探索Linux】P.39(传输层 —— TCP的三次 “握手” 和四次 “挥手” )
本文概述了TCP协议中建立和终止连接的两个基本过程:三次握手和四次挥手。三次握手通过交换SYN、SYN-ACK和ACK包来建立一个可靠的连接,同时防止旧连接的干扰和资源浪费。文章简要解释了两次握手的不足之处,并强调了四次挥手在确保连接有序关闭中的必要性,包括数据传输完成和资源释放。简而言之,这两个过程是TCP协议确保网络通信可靠性的关键。原创 2024-07-13 15:35:20 · 1139 阅读 · 0 评论 -
【探索Linux】P.38(传输层 —— TCP协议通信连接管理机制简介 | TCP连接状态转换)
本文全面总结了TCP协议的通信连接管理机制,包括连接的建立和终止过程。文章详细描述了TCP的状态转换图,阐释了从LISTEN到CLOSED的各个状态及其转换过程。特别地,对TIME_WAIT状态进行了深入分析,解释了其在确保连接可靠终止和防止旧数据干扰中的重要性。同时,讨论了TIME_WAIT状态对系统资源的影响,并提出了优化措施,以提高网络通信的效率和稳定性。原创 2024-07-10 11:24:47 · 1993 阅读 · 0 评论 -
【探索Linux】P.37(传输层 —— TCP协议通信机制 | 确认应答(ACK)机制 | 超时重传机制)
本文深入剖析了TCP协议中的确认应答(ACK)机制和超时重传机制,这两个关键特性共同确保了数据传输的可靠性。确认应答机制通过序列号的使用,确保了数据的有序接收和完整性,同时允许检测和指示丢包情况。而超时重传机制则通过设置超时计时器,对未被确认的数据段进行重传,以应对可能的传输失败。文章还探讨了快速重传和拥塞控制等优化措施,以及这些机制对网络性能和数据传输可靠性的影响。原创 2024-07-05 11:49:15 · 2306 阅读 · 1 评论 -
【探索Linux】P.36(传输层 —— TCP协议段格式)
本文提供了TCP协议关键特性的简明总结,包括TCP段的基本结构、控制位的功能、接收窗口大小及其在流量控制和拥塞控制中的应用,以及紧急指针的作用,旨在帮助读者快速理解TCP协议如何确保网络通信的可靠性和效率。原创 2024-07-03 11:49:59 · 1851 阅读 · 0 评论 -
【探索Linux】P.35(传输层 —— UDP协议)
本文提供了对UDP协议的全面概览,从其基础的端格式到关键特点,再到缓冲区管理,以及基于UDP的多种应用层协议。UDP以其简单、快速的特性,在不保证数据顺序和可靠性的前提下,支持了广泛的实时和流媒体应用,展示了其在现代网络通信中不可或缺的作用。原创 2024-06-26 14:10:04 · 1825 阅读 · 16 评论 -
【探索Linux】P.34(HTTPS协议)
本文深入探讨了HTTPS及其加密机制,首先解释了HTTPS的基本概念,包括加密的定义、加密的必要性以及常见的加密方法,如对称加密和非对称加密。接着,文章详细介绍了证书认证,特别是CA(证书授权中心)的作用和重要性。最后,文章重点分析了HTTPS的加密底层原理,阐明了非对称加密、对称加密和证书认证三者如何协同工作,确保数据传输的安全性和完整性。通过这三个部分,读者可以全面了解HTTPS如何保护网络通信的安全。原创 2024-06-16 19:50:32 · 1878 阅读 · 35 评论 -
【探索Linux】P.33(HTTP协议)
本文概述了网络编程的核心概念,包括URL的结构、URL编码与解码、HTTP请求方法、状态码、常见请求头和响应头。最后,通过一个简单的示例,展示了如何创建一个基本的HTTP服务器,为初学者提供了网络编程的入门知识。原创 2024-04-30 20:47:45 · 2276 阅读 · 55 评论 -
运用自定义协议设计与实现“跨网络计算器”
本篇文章详细介绍了一个网络计算服务系统的构建过程,包括日志、协议、服务器和客户端四大模块的设计和实现。日志模块提供系统运行记录,协议模块定义数据交换格式,服务器模块处理计算请求,客户端模块负责与用户交互。文章还包含了Makefile文件的编写,以简化编译过程。整个系统的设计注重模块化和实用性,旨在提供高效的远程计算服务。原创 2024-04-27 00:01:10 · 2000 阅读 · 54 评论 -
【探索Linux】P.32(自定义协议)
本文介绍了自定义网络协议的基础知识,讨论了设计时的关键考虑因素,并以一个跨网络计算器协议为例,详细展示了自定义协议的设计和实现过程。文章首先解释了自定义协议的概念,然后强调了在设计协议时需要注意的事项,如数据完整性和安全性。通过分析Protocol.hpp中的代码,文章深入讲解了如何进行数据的序列化与反序列化,定义请求和响应的结构,并在实际的网络通信中应用这些自定义协议。最终,文章总结了自定义协议的重要性和其在特定场景下的应用价值。原创 2024-04-22 13:02:25 · 1578 阅读 · 46 评论 -
【探索Linux】P.31(守护进程)
本文首先介绍了守护进程的概念和特点,探讨了它作为后台运行并独立于用户控制的进程类型。随后重点讨论了如何使用C++语言创建守护进程的主要步骤,通过详细讲解实现原理和操作方法,读者将能够全面了解创建守护进程的过程。这篇文章旨在帮助读者掌握利用C++编程语言创建守护进程的技巧,以便在项目开发中灵活应用守护进程来实现各种功能需求。原创 2024-03-29 20:41:56 · 3616 阅读 · 64 评论 -
【探索Linux】P.30(序列化和反序列化 | JSON序列化库 [ C++ ] )
JSON作为一种常用的数据交换格式,在各种编程语言中得到广泛应用。对于C++开发者来说,选择合适的JSON序列化库可以极大地简化处理JSON数据的过程。本文将介绍三种常用的C++ JSON序列化库:RapidJSON、nlohmann/json和jsoncpp。我们将重点探讨它们的特点、使用方法及示例,帮助读者更好地了解如何在C++中处理JSON数据。通过本文的学习,您将能够更加灵活、高效地操作JSON数据,提升开发效率。原创 2024-03-27 11:04:12 · 2672 阅读 · 48 评论 -
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
本文将介绍一个基于C++语言实现的TCP网络程序模拟,主要包括TCP服务器端和客户端的开发。通过学习本文,您将了解如何使用线程池管理并发连接、编写makefile文件进行项目管理、实现日志记录和将进程转变为守护进程等功能。最终,您将掌握TCP协议在实际网络通信中的应用,为您打下坚实的网络编程基础。让我们开始这次有趣的学习之旅吧!原创 2024-03-22 15:24:43 · 1530 阅读 · 44 评论 -
【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
本文将介绍如何使用UDP协议进行网络通信,并通过C++语言实现一个简单的UDP服务器端和客户端模拟。我们将学习如何编写makefile文件、实现日志记录,以及如何打开指定的终端设备文件作为标准错误输出的目标文件描述符。通过这些实例,您将更好地理解UDP协议的应用和实际工作原理。让我们开始探索UDP协议的世界吧!原创 2024-03-20 10:53:38 · 3069 阅读 · 46 评论 -
【探索Linux】P.27(网络编程套接字 —— UDP协议介绍 | TCP协议介绍 | UDP 和 TCP 的异同)
用户数据报协议(UDP,User Datagram Protocol)是一个简单的面向数据报的传输层协议,它在互联网协议族中与传输控制协议(TCP)并列,为应用程序提供了一种非常基础的服务:将应用程序数据报从一台主机发送到另一台主机。然而,与TCP不同的是,UDP不提供可靠性保证,也不实现数据包的顺序控制、重发机制或是拥塞控制。这种设计选择使得UDP在某些场景下比TCP更高效、更适用。原创 2024-03-15 02:05:37 · 3778 阅读 · 62 评论 -
【探索Linux】P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )
这篇文章详细介绍了常见的 Socket API,包括各种函数的用途和功能。首先列出了这些常见函数,并逐一进行了详细介绍。其中包括了socket()用于创建套接字、bind()用于绑定地址、listen()用于监听连接等基本函数,以及sendto()、recvfrom()等用于数据传输的函数。此外,还介绍了一些与套接字操作相关的函数,如setsockopt()、getsockopt()以及地址转换函数inet_pton()等。通过该文章,读者可以全面了解这些常见 Socket 函数的作用和用法。原创 2024-03-08 16:46:13 · 2707 阅读 · 60 评论 -
【探索Linux】P.25(网络编程套接字基本概念 —— 预备知识)
这篇文章涵盖了网络编程中的关键概念和数据结构,包括套接字基础、IP地址、端口号、网络字节序以及 `sockaddr`、`sockaddr_in` 和 `in_addr` 结构的使用。通过该文章,读者可以了解如何处理地址和端口信息以实现网络通信。原创 2024-03-06 11:33:01 · 2210 阅读 · 48 评论 -
【探索Linux】P.24(网络基础)
这篇文章主要介绍了计算机网络的基本知识,包括网络发展历史、协议概念和初识、网络传输基本流程、数据包封装和分用以及网络中的地址管理。文章从网络的发展历史开始,讲述了网络技术的演变过程,接着介绍了协议的概念和作用,以及常见的OSI参考模型和TCP/IP协议族模型。然后,文章详细描述了同一网段内和跨网段主机的文件传输流程,以及数据包封装和分用原理。最后,文章介绍了IP地址和MAC地址的含义和作用,帮助读者更好地理解网络中的地址管理。原创 2024-03-03 13:17:30 · 1497 阅读 · 34 评论 -
【探索Linux】P.23(线程池 —— 简单模拟)
本文首先介绍了线程池的概念和作用,简单说明了线程池可以有效管理和重用线程,提高系统性能和响应速度。接着给出了在Linux下实现线程池的代码结构,包括Makefile文件、头文件(Task.hpp、thread.hpp、threadPool.hpp)和源文件(testMain.cpp)。最后,文章列举了线程池的优点,包括提高性能、控制并发度、提高响应速度、简化线程管理和控制资源占用等。通过本文的内容,读者可以了解线程池的基本原理、实现代码以及优点,为进一步学习和应用线程池提供了基础知识。原创 2024-02-24 22:14:28 · 1668 阅读 · 48 评论 -
【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)
在本文中,我们将详细探讨基于环形队列的生产者消费者模型的设计和实现。我们将介绍环形队列的数据结构,分析生产者和消费者之间的同步机制,探索如何利用前文提到的POSIX信号量以及其他同步工具(如互斥锁)来实现生产者和消费者之间高效、安全的数据交换。通过具体的代码示例和案例分析,读者将能够深入理解生产者消费者模型的工作原理,掌握如何在实际项目中设计和实现基于环形队列的高效同步模型原创 2024-02-20 11:08:31 · 2046 阅读 · 39 评论 -
【探索Linux】 P.22(POSIX信号量)
POSIX信号量是一种用于进程或线程间同步的机制,它提供了一种控制资源访问的方法,确保在任何时刻只有特定数量的线程可以访问特定的资源。这在处理资源共享问题时尤其重要,比如,在操作系统、数据库管理系统等领域,正确的使用信号量可以有效避免死锁和竞态条件,保证系统的稳定运行。原创 2024-02-17 18:20:38 · 2519 阅读 · 56 评论 -
【Linux | C++ 】生产者消费者模型(Linux系统下C++ 代码模拟实现)
生产者消费者模型是多线程编程中的一个经典案例,它涉及到两类线程:生产者和消费者。生产者线程不断地生成数据,并将数据放入一个缓冲区中,消费者线程则不断地从缓冲区中获取数据,并进行相应的处理。在这个过程中,为了保证数据的完整性和正确性,需要使用同步机制来协调两类线程之间的操作,以避免数据竞争和死锁等问题的发生。本文将介绍如何使用条件变量来实现生产者消费者模型,帮助读者更好地理解多线程编程中的同步机制和技术。原创 2023-12-13 09:57:43 · 3746 阅读 · 60 评论 -
【探索Linux】P.21(多线程 | 线程同步 | 条件变量 | 线程安全)
这篇文章主要介绍了一些与多线程编程相关的概念,包括线程同步、条件变量、线程安全等。在多线程编程中,为了避免竞态条件和数据竞争等问题,需要使用锁定机制来保证共享资源的同步和互斥访问,从而实现线程安全。而条件变量则可以作为一种高级的同步机制,用于线程之间的通信和同步。此外,还介绍了可重入性和线程安全性之间的关系,以及全局变量对线程安全性的影响等问题。总之,本文为读者提供了一些基础的多线程编程知识和技巧,有助于更好地理解和应用多线程编程。原创 2023-12-10 00:25:57 · 2347 阅读 · 55 评论 -
【探索Linux】P.20(多线程 | 线程互斥 | 互斥锁 | 死锁 | 资源饥饿)
这篇文章涵盖了多线程编程中的关键概念,包括线程互斥、互斥锁、死锁和资源饥饿。在多线程编程中,线程互斥是确保多个线程安全访问共享资源的重要机制。互斥锁是一种常用的同步工具,用于实现线程互斥。然而,如果互斥锁使用不当,可能会导致死锁的发生,即多个线程相互等待对方释放资源而无法继续执行。此外,资源饥饿是另一个并发问题,指某些线程由于无法获取所需资源而陷入无法执行的状态。本文还提供了解决死锁和资源饥饿问题的方法,如预防死锁、避免死锁、检测与解除死锁以及公平性调度和优先级继承等。原创 2023-12-06 16:31:15 · 2663 阅读 · 54 评论 -
【探索Linux】P.19(多线程 | 线程的概念 | 线程控制 | 分离线程)
这篇文章介绍了多线程编程的基本概念、线程控制和分离线程等方面。多线程是一种并发编程模型,能够充分利用多核处理器的计算能力,提高程序的运行效率和响应速度。文章介绍了线程的概念,包括线程的创建、同步和互斥机制等基本概念。接着,文章介绍了线程控制,包括线程的启动、暂停、恢复和终止等操作。最后,文章介绍了分离线程,即在线程执行完毕后自动释放线程资源,避免资源泄漏和内存浪费。通过阅读这篇文章,读者可以了解多线程编程的基本知识和技巧,掌握线程的创建、控制和管理方法,以实现多任务编程和并发处理。原创 2023-12-03 01:31:26 · 2340 阅读 · 53 评论 -
【探索Linux】P.18(进程信号 —— 信号捕捉 | 信号处理 | sigaction() )
本文介绍了三个主题:信号捕捉、可重入函数与不可重入函数以及volatile关键字。在信号捕捉部分,讲解了内核实现信号捕捉的过程,并介绍了sigaction()函数的原型、参数、返回值以及使用方法。接着,文章对可重入函数和不可重入函数进行了对比,分别说明了它们的条件和特征。最后,提到了volatile关键字的作用。这些内容全面介绍了相关知识点,有助于读者理解和应用这些概念。原创 2023-11-30 03:17:18 · 4658 阅读 · 82 评论 -
【探索Linux】P.17(进程信号 —— 信号保存 | 阻塞信号 | sigprocmask() | sigpending() )
这篇文章主要介绍了与信号相关的常见概念,以及涉及到信号阻塞和信号集操作的函数。首先,文章解释了信号递达、信号未决、阻塞信号和忽略信号这些常见概念。然后,通过示意图展示了信号在内核中的表示方式。接着,介绍了sigset_t数据类型,它用于表示信号集。文章还列举了一些信号集操作函数,用于对信号集进行操作。接下来,文章详细介绍了sigprocmask()函数,该函数用于设置和修改进程的信号屏蔽字,从而实现信号的阻塞。最后,文章提及了sigpending()函数,该函数用于获取当前进程挂起的信号集。原创 2023-11-28 11:11:38 · 2848 阅读 · 63 评论 -
【探索Linux】P.16(进程信号 —— 信号产生 | 信号发送 | 核心转储)
本文介绍了信号的基本概念和产生方式。首先,介绍了信号是一种异步通知机制,用于在进程间传递消息或通知发生的事件。然后,提到了通过终端按键、调用系统函数(如kill()和abort())以及软件条件(如alarm())产生信号的方法。最后,提及了硬件异常产生信号的情况。通过本文,读者可以了解信号的基本概念和产生方式,以及其在进程间通信和错误处理中的应用价值。原创 2023-11-25 15:27:12 · 2187 阅读 · 57 评论 -
【探索Linux】P.15(进程间通信 —— system V共享内存)
本文主要介绍了System V IPC机制中的共享内存。首先,解释了System V的概念,并详细介绍了共享内存的概念、示意图和数据结构。接下来,给出了使用共享内存的步骤,包括包含头文件、获取键值、创建共享内存段、连接共享内存、访问共享内存和分离共享内存。然后,给出了一个共享内存的使用示例,涉及进程1创建共享内存并写入数据,进程2连接共享内存并读取数据。最后,总结了共享内存的优点和缺点,包括高效的数据交换、方便的数据共享以及需要开发者自行处理同步和互斥问题等。原创 2023-11-15 20:13:01 · 1165 阅读 · 50 评论 -
【探索Linux】P.14(进程间通信 | 匿名管道 | |进程池 | pipe() 函数 | mkfifo() 函数)
进程间通信(IPC)是操作系统中一个重要的概念,允许多个进程之间进行数据交换和协作。进程间通信的方式包括管道、消息队列、信号量、共享内存、套接字等,每种方式都有其特定的优势和适用场景。进程间通信对于构建分布式系统、实现并行计算、提高系统性能和可伸缩性等方面都具有重要意义。不同的应用需求和系统特点决定了选择哪种通信方式,在设计和实现过程中需要综合考虑诸如数据传输速度、可靠性、安全性和开销等因素。原创 2023-11-12 02:55:07 · 1224 阅读 · 76 评论 -
【探索Linux】P.13(文件系统 | 软硬链接 | 动态库和静态库)
本文将深入讨论 Linux 系统中的文件系统、软硬链接、动态库和静态库等概念。首先,我们介绍了 Linux 文件系统的基本概念和组成部分,包括文件和目录的层次结构以及常见的文件系统类型。接着,我们探讨了软硬链接的区别和使用方法,解释了它们在 Linux 系统中的应用场景。然后,我们详细说明了动态库和静态库的概念、特点以及使用方式,帮助读者理解它们在程序开发和编译过程中的作用。通过本文的阐述,读者将对 Linux 系统中文件系统、软硬链接、动态库和静态库有更深入的了解,为其日后的应用和开发提供有价值的指导。原创 2023-11-05 23:07:55 · 1920 阅读 · 83 评论
分享