当前位置: 首页 > news >正文

Linux内核之网络套接字

文章目录

  • 前言
  • 一、TCP4层模型和OSI7层模型
      • OSI 7层模型
      • TCP/IP 4层模型
      • 比较
  • 二、套接字概念
  • 三、sockaddr_in和sockaddr结构体
      • `sockaddr_in`
      • `sockaddr`
      • 区别
  • 四、协议中的数据划分
      • 数据划分和首部添加流程
      • 数据接收与解析流程
      • 流程图


前言

一、TCP4层模型和OSI7层模型

OSI 7层模型

  1. 物理层 (Physical Layer):负责传输原始比特流,包括电缆、光纤和无线传输。
  2. 数据链路层 (Data Link Layer):提供错误检测和纠正,控制数据帧的流量,管理节点到节点的通信。
  3. 网络层 (Network Layer):处理数据包的路由选择和转发,管理不同网络之间的传输(如IP协议)。
  4. 传输层 (Transport Layer):提供端到端的数据传输服务,确保数据完整性和顺序(如TCP、UDP)。
  5. 会话层 (Session Layer):管理会话的建立、维护和终止,协调会话之间的交互。
  6. 表示层 (Presentation Layer):处理数据的编码和解码,确保数据在不同系统间能够被正确解释(如加密、压缩)。
  7. 应用层 (Application Layer):直接与应用程序交互,提供网络服务(如HTTP、FTP、SMTP)。

TCP/IP 4层模型

  1. 网络接口层 (Network Interface Layer):对应于OSI模型的物理层和数据链路层,负责网络硬件和数据帧的传输。
  2. 互联网层 (Internet Layer):对应于OSI模型的网络层,负责数据包的路由和寻址(如IP协议)。
  3. 传输层 (Transport Layer):对应于OSI模型的传输层,处理端到端的数据传输和错误检测(如TCP、UDP)。
  4. 应用层 (Application Layer):合并了OSI模型的会话层、表示层和应用层,提供各种网络服务和应用协议(如HTTP、FTP)。

比较

  • 层数:OSI模型有7层,TCP/IP模型有4层,TCP/IP模型的层次较少,功能上则有重叠。
  • 功能:OSI模型更为详细,分层更细;TCP/IP模型则更为实用,广泛应用于现代网络。
  • 实际应用:TCP/IP模型是互联网协议的基础,实际中更为常见。OSI模型则是一个理论模型,主要用于教学和理解网络概念。

通过了解这两种模型,可以帮助更好地理解网络协议的工作原理和网络系统的结构。
在这里插入图片描述

二、套接字概念

套接字(Socket)是网络编程中的一个基本概念,用于实现不同主机或程序之间的通信。它是一个软件结构,用于定义网络连接的端点。

主要功能

  • 标识:套接字通过IP地址和端口号来唯一标识网络中的通信端点。
  • 接口:它提供了用于建立、管理和终止网络连接的接口。
  • 协议:常用的协议包括TCP(面向连接)和UDP(无连接)。

类型

  1. 流套接字 (Stream Socket):使用TCP协议,确保数据可靠、按顺序到达,适合需要稳定连接的应用。
  2. 数据报套接字 (Datagram Socket):使用UDP协议,不保证数据的到达顺序和可靠性,适合对实时性要求高的应用。

通过套接字,应用程序可以在网络上发送和接收数据,实现通信。

三、sockaddr_in和sockaddr结构体

sockaddr_insockaddr 是网络编程中用来处理地址信息的结构体。

sockaddr_in

  • 定义sockaddr_in 是一个专门用于IPv4地址的结构体。
  • 字段
    • sin_family:地址族,通常设为 AF_INET
    • sin_port:端口号,以网络字节序存储(通常使用 htons 转换)。
    • sin_addr:IPv4地址,使用 in_addr 结构体表示。
    • sin_zero:填充字段,通常设为零,以确保结构体的大小与 sockaddr 结构体对齐。
struct sockaddr_in {sa_family_t    sin_family; // 地址族,通常是 AF_INETuint16_t       sin_port;   // 端口号struct in_addr sin_addr;   // IPv4 地址char           sin_zero[8]; // 填充字段
};

sockaddr

  • 定义sockaddr 是一个通用的地址结构体,用于表示不同类型的网络地址。
  • 字段
    • sa_family:地址族,指明地址类型(如 AF_INETAF_INET6 等)。
    • sa_data:包含地址和端口的通用字段,其具体格式取决于地址族。
struct sockaddr {sa_family_t sa_family; // 地址族char        sa_data[14]; // 地址数据
};

区别

  • sockaddr_insockaddr 的一个特定实现,用于处理IPv4地址。
  • sockaddr 是一个通用结构体,可以用来处理不同类型的地址(IPv4、IPv6等),但需要根据实际地址族进行类型转换。

在实际使用中,sockaddr_in 常用于套接字编程中,而 sockaddr 常用作函数参数,提供通用的地址接口。

四、协议中的数据划分

在网络通信中,数据在不同的协议层上进行划分,每一层都会在数据前添加一个首部(Header)。这些首部用于提供必要的控制信息,以确保数据能够正确传输到目标主机。接收到数据时,每一层会解析并去除相应的首部,最终恢复出原始的数据内容。

数据划分和首部添加流程

  1. 应用层:应用程序将数据传递给传输层,这些数据称为应用数据。在这个阶段,没有应用层首部,数据是应用程序生成的原始数据。

  2. 传输层:传输层(如TCP或UDP)在应用数据前添加传输层首部。这个首部包括了源端口号、目标端口号、序列号、确认号等信息。这个过程称为“封装”。

  3. 网络层:网络层(如IP)在传输层数据前添加网络层首部,包括源IP地址、目标IP地址和其他路由信息。

  4. 数据链路层:数据链路层在网络层数据前添加数据链路层首部(如以太网头部),包括源MAC地址、目标MAC地址和其他链路层控制信息。

  5. 物理层:数据链路层将带有首部的数据传递给物理层,物理层负责将数据转换为电信号或光信号,并通过网络介质传输。

数据接收与解析流程

  1. 物理层:物理层接收信号,将其转换回数据帧。

  2. 数据链路层:数据链路层解析数据链路层首部,提取出网络层的数据,并进行错误检查。

  3. 网络层:网络层解析网络层首部,提取出传输层的数据,并进行路由决策。

  4. 传输层:传输层解析传输层首部,提取出应用层数据,并进行数据重组(如TCP的重传和排序)。

  5. 应用层:应用层接收到的数据是原始的应用数据,经过多层解析和拆解后,交给应用程序进行处理。

流程图

下面是一个数据传输的流程图,展示了数据在各层的封装和解封装过程:

+-----------------------+
|      应用层数据       |        (Data)
+-----------------------+
| 应用层首部 (Application Header) |       (App Header)
+-----------------------+
| 传输层首部 (Transport Header)    |       (Transport Header)
+-----------------------+
| 网络层首部 (Network Header)      |       (Network Header)
+-----------------------+
| 数据链路层首部 (Data Link Header) |       (Data Link Header)
+-----------------------+
| 物理层数据 (Physical Layer Data)  |       (Physical Layer Data)
+-----------------------+

数据传输过程

  1. 应用程序发送数据:应用程序生成数据。
  2. 应用层:在应用数据前添加应用层首部。
  3. 传输层:在应用层数据前添加传输层首部。
  4. 网络层:在传输层数据前添加网络层首部。
  5. 数据链路层:在网络层数据前添加数据链路层首部。
  6. 物理层:将完整的数据帧转换为电信号并传输。

数据接收过程

  1. 物理层:接收电信号并恢复为数据帧。
  2. 数据链路层:解析数据链路层首部,提取网络层数据。
  3. 网络层:解析网络层首部,提取传输层数据。
  4. 传输层:解析传输层首部,提取应用层数据。
  5. 应用层:最终数据交给应用程序进行处理。

这个过程确保数据能够从发送方的应用程序正确传输到接收方的应用程序,中间的每一层都添加和解析首部以提供必要的通信控制。

相关文章:

Linux内核之网络套接字

文章目录 前言一、TCP4层模型和OSI7层模型OSI 7层模型TCP/IP 4层模型比较 二、套接字概念三、sockaddr_in和sockaddr结构体sockaddr_insockaddr区别 四、协议中的数据划分数据划分和首部添加流程数据接收与解析流程流程图 前言 一、TCP4层模型和OSI7层模型 OSI 7层模型 物理…...

SpringBoot事务-调度-缓存

一.Spring Boot中的事务管理 设置事务 Transactional(isolation Isolation.DEFAULT) Transactional(propagation Propagation.REQUIRED) 开启事务 EnableTransactionManagement 1. 开启事务管理 要开启 Spring 的事务管理,你需要在你的 Spring Boot 应用中添加 …...

社交媒体分析:如何利用Facebook的数据提升业务决

在数字化时代,社交媒体已经成为企业战略中不可或缺的一部分。Facebook,作为全球最大的社交平台之一,提供了丰富的数据资源,这些数据不仅能够帮助企业了解市场趋势,还能提升业务决策的精准度。本文将探讨如何有效利用Fa…...

企业中的流程组织

在每个实施SAP的企业中,除了传统的IT部门(包括SAP顾问所在的部门),必不可少的是一定形式的流程组织(Process Organization),流程组织的主要作用有 梳理企业内部业务流程,根据企业发展需要变更企业内部流程确定企业流程规范和部门…...

Redis:查询是否包含某个字符/字符串之二

上一篇:Redis:查询是否包含某个字符/字符串之一-CSDN博客 下一篇:Redis:查询是否包含某个字符/字符串之三-CSDN博客 摘要: 要查询数据,就需要遍历key,遍历value,其中包含存储等辅助…...

算法笔记|Day23贪心算法

算法笔记|Day23贪心算法 ☆☆☆☆☆leetcode 455.分发饼干题目分析代码 ☆☆☆☆☆leetcode 376. 摆动序列题目分析代码 ☆☆☆☆☆leetcode 53. 最大子序和题目分析代码 ☆☆☆☆☆leetcode 455.分发饼干 题目链接:leetcode 455.分发饼干 题目分析 优先考虑饼干…...

[星瞳科技]OpenMV使用时有哪些常见错误和解决办法?

常见代码错误 ImportError:no module named xxx 这个错误是Import错误,没有stepper这个模块。 原因: 你没有把stepper.py这个文件拖到你的板子里。见:模块的使用 拖过去之后,需要重启,使模块生效 MemoryError:FB …...

深度学习入门(二):PyTorch使用-张量的类型转换,拼接操作,索引操作,形状操作

目录 1. 张量类型转换 1.1 张量转换为 numpy 数组 1.2 numpy 转换为张量 1.3 标量张量和数字的转换 1.4 小节 2. 张量拼接操作 2.1 torch.cat 函数的使用 2.2 torch.stack 函数的使用 2.3 小节 3. 张量索引操作 3.1 简单行、列索引 3.2 列表索引 3.3 范围索引 3.…...

使用C#禁止Windows系统插入U盘(除鼠标键盘以外的USB设备)

试用网上成品的禁用U盘的相关软件,发现使用固态硬盘改装的U盘以及手机等设备,无法被禁止,无奈下,自己使用C#手搓了一个。 基本逻辑: 开机自启;启动时,修改注册表,禁止系统插入USB存…...

18. 基于ES实战海量数据检索

18. 基于ES实战海量数据检索 一. 概述二. Elasticsearch 全文检索1. 分布式搜索引擎2. 搜索引擎种类3. 倒排索引三. elastic使用1. 官网介绍2. docker安装3. elasticsearch-head工具4. 分词与内置分词4.1 内置分词器(了解即可)4.2 `IK`中文分词器三. 整合SpringCloud1. 基础配置…...

SpringBoot和Redis的交互数据操作以及Redis的持久化/删除策略和缓存问题

目录 一、SpringBoot和Redis/MySQL的数据交互 二、Redis的持久化 1、持久化过程保存什么 2、RDB方式 (1)RDB手动 (2)RDB自动 (3)RDB的优点 (4)RDB缺点 3、AOF方式 &#…...

Butterworth filter的运行原理

想象一下,你正在录制一个舞蹈表演的视频,但在录制过程中,摄像机由于风的影响稍微晃动了一下。现在,录像中的舞者看起来不再那么流畅,动作变得有点颤抖。你希望能让舞者的动作重新看起来平滑和优雅,这时你就…...

掌握SQL的威力:批量更新与删除的艺术

标题:掌握SQL的威力:批量更新与删除的艺术 在数据库管理中,批量更新(UPDATE)和删除(DELETE)操作是常见的需求,特别是在处理大量数据时。SQL作为数据库查询和操作的标准语言&#xf…...

《新一代数据可视化分析工具应用指南》正式开放下载

2024年8月12日,由DataEase开源项目组编写的《新一代数据可视化分析工具应用指南》白皮书正式面向广大用户开放下载。 《新一代数据可视化分析工具应用指南》是DataEase开源项目组为了支持企业落地并推广BI工具、推进企业数据可视化建设而编著的指导手册。通过本白皮…...

数据结构与算法——BFS(广度优先搜索)

算法介绍: 广度优先搜索(Breadth-First Search,简称BFS)是一种遍历或搜索树和图的算法,也称为宽度优先搜索,BFS算法从图的某个节点开始,依次对其所有相邻节点进行探索和遍历,然后再…...

登录 k8s-Dashboard 显示 Your connection is not private

文章目录 一、背景二、解决方案 一、背景 部署好 kubernetes-Dashboard 后使用 master节点的 ipport 登录 Dashboard 显示 Your connection is not private 无论是 Edge 还是 Google Chrome 都是这样的情况 二、解决方案 点击网页空白处,英文输入法输入&#xf…...

【Bifrost】ubuntu24.04 远程构建及clion设置编码风格google

Bifrost 构建通过clion 远程到ubuntu24.04 构建感觉是不认识这种写法,这种至少是c++11 fix : 修改absl 的构建cmakelist,明确c++17 好像还是不行error: ‘uint8_t’ was not declared in this scope加入:#include <stdint.h>可以解决一部分。那么,这种呢?/home/zha…...

批量查询全国快递单号:高效追踪物流信息

在日常生活和工作中&#xff0c;我们经常会遇到需要查询多个快递单号物流信息的情况。如果手动逐一查询&#xff0c;不仅效率低下&#xff0c;而且容易出错。为了解决这个问题&#xff0c;我们可以借助固乔科技推出的【固乔快递查询助手】软件&#xff0c;轻松实现全国快递的批…...

DVWA | CSRF(LowMedium)攻击的渗透实践

目录 概述 Low Medium 概述 CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09; 是一种网络攻击方式。 通过伪造当前用户的行为&#xff0c;让目标服务器误以为请求由当前用户发起&#xff0c;并利用当前用户权限实现业务请求伪造。 例如&a…...

Tmagic-editor低代码底层拖拽库Moveable示例学习

在前面咱们的自研低代码海报制作平台学习分享计划中分享了自己开发的基本拖拽组件&#xff0c;也只是做了最简单的基本实现。真要写产品&#xff0c;更多还是依赖相关的开源优秀库。 文章目录 参考基本拖拽基本缩放基本Scalable基本旋转基于原点的拖拽和旋转关于练习源码 参考 …...

公开测评:文件防泄密系统哪家好|4款文件防泄密软件推荐

在文件防泄密系统领域&#xff0c;有多款软件以其高效、安全和全面的功能脱颖而出&#xff0c;为企业数据保护提供了有力支持。以下是四款值得推荐的文件防泄密软件&#xff0c;它们各具特色&#xff0c;能够满足不同企业的数据安全需求。 1. 安企神软件 7天试用版https://wor…...

【wiki知识库】09.欢迎页面添加(统计浏览量)Vue修改

目录 ​编辑 一、今日目标 二、新增the-welcome组件 2.1 template 2.2 script 2.2.1 getStatistic 2.2.2 get30DayStatistic 一、今日目标 上篇文章链接&#xff1a;【wiki知识库】08.添加用户登录功能--前端Vue部分修改-CSDN博客 今天就要实现最后的东西了&#xff0c…...

ui自动化难点

位置坐标&#xff1a;可以通过滑动等方式实现 颜色显示&#xff1a;UIAuto.DEV (devsleep.com) --此工具可以解决很多属性上无法解决的问题 原理&#xff1a; 对系统控件的选择和点击实现该方法...

静态路由与默认路由和实验以及ARP工作原理

目录 1.静态路由和默认路由 1.1 静态路由 1.2 默认路由 1.3 主要区别总结 2.实验 2.1 实验 2.1.1 实验top 2.1.2 实验要求 2.2 实验配置 2.2.1 ip信息配置 2.2.2 配置静态 2.2.3配置默认 2.3 实验结果查看 3.为什么第一个ping会显示丢包&#xff1f; 3.1 ARP 工…...

美国洛杉矶大带宽服务器的运维与监控

美国洛杉矶的大带宽服务器因其优越的地理位置、高速的网络连接以及充足的带宽资源&#xff0c;在全球范围内享有很高的声誉。为了确保这些服务器的稳定运行和高效服务&#xff0c;运维与监控工作显得尤为重要。以下是一些关于美国洛杉矶大带宽服务器运维与监控方面的科普内容。…...

AtCoder Beginner Contest 367 A~D

本期封面原图 画师えびら A - Shout Everyday 题意 b点睡觉c点起床&#xff0c;问你a点是不是醒着的 思路 直接判断即可&#xff0c;注意处理跨天的情况 代码 #include <bits/stdc.h> #define mod 998244353 using namespace std; typedef long long ll; typedef …...

oracle 保留两位小数

在Oracle数据库中&#xff0c;保留两位小数可以通过多种函数实现&#xff0c;主要包括ROUND、TRUNC和TO_CHAR函数。每种函数都有其特定的使用场景和效果。 1. ROUND函数 ROUND函数用于对数值进行四舍五入操作&#xff0c;保留指定的小数位数。其基本语法为&#xff1a; ROUN…...

Aop切面技术之存储用户信息

一、背景 在我们日常项目中&#xff0c;常常会将用户的认证信息存入缓存中&#xff0c;方便我们在程序执行中&#xff0c;进行获取用户信息。本篇文章主要是介绍使用自定义注解和AOP切面技术进行实现&#xff0c;这也也是非常容易使用的。 二、代码详解 2.1 自定义注解 定义…...

FreeBSD 针对OpenSSH 高危漏洞发布紧急补丁

近日&#xff0c;FreeBSD 项目的维护者针对OpenSSH 高危漏洞发布了紧急补丁。该漏洞被追踪为 CVE-2024-7589&#xff0c;CVSS 得分为 7.4&#xff08;最高分为 10.0&#xff09;。通过利用该漏洞&#xff0c;黑客能够在权限提升的情况下远程执行任意代码。 根据上周发布的一份…...

【C语言小项目】五子棋游戏

目录 前言 一、游戏规则 1.功能分析 2.玩法分析 3.胜负判定条件 二、游戏实现思路 三、代码实现与函数封装 1.项目文件创建 2.头文件说明 3.函数封装 1&#xff09;菜单实现 2&#xff09;进度条实现 3&#xff09;main函数实现 4&#xff09;Game函数 5&#xff0…...

基于Java语言的能源管理系统-水电气热油数据采集系统

基于Java语言的能源管理系统-水电气热油数据采集系统 介绍 适用于高能耗企业、建筑、工厂、园区的水、电、气、热、油、空压机等能源数据采集、分析、报表&#xff1b; 基于SpringCloud的能源管理系统-能源管理平台源码-能源在线监测平台-双碳平台源码-SpringCloud全家桶-能管…...

人工智能在肿瘤亚型分类领域的研究进展|顶刊速递·24-08-13

小罗碎碎念 文献日推主题&#xff1a;人工智能在肿瘤亚型分类领域的研究进展 昨天晚上在研究鼻咽癌的病理学诊断指南&#xff0c;看到了下面这段话的时候&#xff0c;我问了自己一个问题——通过AI识别出肿瘤亚型的根本目的是什么&#xff1f;可以衔接哪些具体的下游任务&#…...

Taro+Vue 创建微信小程序

TaroVue 创建微信小程序 一、全局安装 tarojs/cli二、项目初始化三、现在去启动项目吧 一、全局安装 tarojs/cli npm install -g tarojs/cli //安装 npm info tarojs/cli //查看安装信息 如果正常显示版本说明成功了&#xff0c;就直接跳到第二步吧官网说&#xff1a;…...

智能安全守护,寺庙安全用电解决方案

在四川省蓬溪县城北&#xff0c;高峰山以其千年的历史沉淀和独特的文化风貌&#xff0c;默默诉说着道教与佛教交融的传奇。然而&#xff0c;2017年5月31日凌晨的一声巨响&#xff0c;打破了这里的宁静&#xff0c;一场突如其来的大火&#xff0c;让这座承载着无数信徒信仰与梦想…...

加热系统加入达温即停和保温功能

加热系统加入达温即停和保温功能 引言 ​ 我们前一节, 是通过控制io口, 直接控制加热的开关, 但是这太简单粗暴了, 如果只是那样, 和普通的家居电器,是没区别的, 我们想要更智能一点, 就是像咱们自己家的热水壶那样, 水烧滚了(水温达到100摄氏度), 就自动停止了. 加热功能&a…...

C++_2_ inline内联函数 宏函数(2/3)

C推出了inline关键字&#xff0c;其目的是为了替代C语言中的宏函数。 我们先来回顾宏函数&#xff1a; 宏函数 现有个需求&#xff1a;要求你写一个Add(x,y)的宏函数。 正确的写法有一种&#xff0c;错误的写法倒是五花八门&#xff0c;我们先来“见不贤而自省也。” // …...

ROS执行多个节点报错(遥控运动及SLAM建图)

今天在实体机器人中同时执行多个ROS节点: roslaunch rei_robot_base oryxbot_base.launchroslaunch robot_joy robot_joy.launchroslaunch oryxbot_slam oryxbot_slam_local.launch结果全部报错退出了 现在换一种执行方式: roscoreroslaunch rei_robot_base oryxbot_base.la…...

Spring Boot项目中实现文件的上传、下载和预览功能

在Spring Boot项目中实现文件的上传、下载和预览功能&#xff0c;可以通过使用Spring MVC的MultipartFile接口来处理文件上传&#xff0c;并使用HttpServletResponse或Resource来实现文件下载和预览。下面是如何实现这些功能的完整示例。 1. 引入依赖 确保在pom.xml中引入了S…...

【JAVA入门】Day21 - 时间类

【JAVA入门】Day21 - 时间类 文章目录 【JAVA入门】Day21 - 时间类一、JDK7前的时间相关类1.1 Date1.2 SimpleDateFormat1.3 Calendar 二、JDK8新增的时间相关类2.1 Date 相关类2.1.1 ZoneId 时区2.1.2 Instant 时间戳2.1.3 ZoneDateTime 带时区的时间 2.2 DateTimeFormat 相关…...

SQL server数据库备份和还原

新手小白都懂的sql server数据库备份和还原 一、备份 1.打开sql server数据库找到 2.展开找到对应的数据库文件 鼠标右击—任务–备份 3.复制名称 4.复制完点击添加 5.点击添加完之后再次点击查找路径 6.分别两个路径 原路径和新路径 &#xff08;新路径是找到原路径新建了一…...

B站搜索建库架构优化实践

前言 搜索是B站的重要基础功能&#xff0c;需要对包括视频、评论、图文等海量的站内优质资源建立索引&#xff0c;处理来自用户每日数亿的检索请求。离线索引数据的正确、高效产出是搜索业务的基础。我们在这里分享搜索离线架构整体的改造实践&#xff1a;从周期长&#xff0c;…...

XSS反射实战

目录 1.XSS向量编码 2.xss靶场训练&#xff08;easy&#xff09; 2.1第一关 2.2第二关 方法一 方法二 2.3第三关 2.4第四关 2.5第五关 2.6第六关 2.7第七关 第一种方法&#xff1a; 第二种方法&#xff1a; 第三个方法&#xff1a; 2.8第八关 1.XSS向量编码 &…...

远程消息传递的艺术:NSDistantObject在Objective-C中的妙用

标题&#xff1a;远程消息传递的艺术&#xff1a;NSDistantObject在Objective-C中的妙用 引言 在Objective-C的丰富生态中&#xff0c;NSDistantObject扮演着至关重要的角色&#xff0c;特别是在处理分布式系统中的远程消息传递。它允许对象之间跨越不同地址空间进行通信&…...

指向派生类的基类指针、强转为 void* 再转为基类指针、此时调用虚函数会发生什么?

指向派生类的基类指针、强转为 void* 再转为基类指针、此时调用虚函数会发生什么&#xff1f; 1、无论指针类型怎么转&#xff0c;类对象内存没有发生任何变化&#xff0c;还是vfptr指向虚函数表&#xff0c;下面是成员变量&#xff0c;这在编译阶段就已经确定好了&#xff1b…...

操作系统(Linux实战)-进程创建、同步与锁、通信、调度算法-学习笔记

1. 进程的基础概念 1.1 进程是什么&#xff1f; 定义&#xff1a; 进程是操作系统管理的一个程序实例。它包含程序代码及其当前活动的状态。每个进程有自己的内存地址空间&#xff0c;拥有独立的栈、堆、全局变量等。操作系统通过进程来分配资源&#xff08;如 CPU 时间、内…...

react的setState中为什么不能用++?

背景&#xff1a; 在使用react的过程中产生了一些困惑&#xff0c;handleClick函数的功能是记录点击次数&#xff0c;handleClick函数被绑定到按钮中&#xff0c;每点击一次将通过this.state.counter将累计的点击次数显示在页面上 困惑&#xff1a; 为什么不能直接写prevStat…...

2.2算法的时间复杂度与空间复杂度——经典OJ

本博客的OJ标题均已插入超链接&#xff0c;点击可直接跳转~ 一、消失的数字 1、题目描述 数组nums包含从0到n的所有整数&#xff0c;但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗&#xff1f; 2、题目分析 &#xff08;1&#xff09;numsS…...

【CentOS 】DHCP 更改为静态 IP 地址并且遇到无法联网

文章目录 引言解决方式标题1. **编辑网络配置文件**&#xff1a;标题2. **确保配置文件包含以下内容**&#xff1a;特别注意 标题3. **重启网络服务**&#xff1a;标题4. **检查配置是否生效**&#xff1a;标题5. **测试网络连接**&#xff1a;标题6. **检查路由表**&#xff1…...

Linux 操作系统 --- 信号

序言 在本篇内容中&#xff0c;将为大家介绍在操作系统中的一个重要的机制 — 信号。大家可能感到疑惑&#xff0c;好像我在使用 Linux 的过程中并没有接触过信号&#xff0c;这是啥呀&#xff1f;其实我们经常遇到过&#xff0c;当我们运行的进程当进程尝试访问非法内存地址时…...

黑马前端——days09_css

案例 1 页面框架文件 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compati…...