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

Linux:基础IO---软硬链接动静态库前置知识

  • 序:上一个章节,我从硬件出发,由宏观到微观,由具体到抽象,围绕研究对象未被打开的文件来讲解,操作系统是如何对一个大块的磁盘进行管理的,从而引进inode的概念,加深了对文件的理解,本章,我将带领大家更加深入的学习,了解软硬链接的概念,知道软连接和硬链接所处理的场景,以及动静态库的概念!!!

1. 软硬链接

1.1 什么是软硬连接

想要知道什么是软硬链接,我们先看软硬链接是如何创建的!

建立硬链接:ln + [文件名]
建立软连接: ln -s + [文件名]

创建软连接后,我们发现他具有独立的inode,与被其链接的文件的inode和软连接的inode不一样。所以,软连接是一个独立的文件,因为他具有独立的inode

创建硬链接后,该硬链接的inode与被其链接的文件的inode一样。所以,硬链接不是一个独立的文件,因为他没有独立的inode。

在这里插入图片描述
我们发现当一个文件被硬链接后,文件权限后面的那个数字变成了2,且那个硬链接的文件的那个数字也是2!!!这个数字是什么意思呢?权限后面的那个数字,其实就是硬链接数,来表示一个文件有几个硬链接的。

那么问题来了,为什么硬链接的文件属性和被硬链接链接的文件的属性一模一样,而且硬链接数也一样呢?
答:这是因为这两个文件的inode是一样的,所以根据inode读出来的数据就是一模一样的。

1.2 如何理解软硬链接

问题一:该如何理解软连接?

软连接是一个独立的文件,有独立的inode,也有独立的数据块,他的数据块里面保存的是指向文件的路径(相当于windows的快捷方式
当我们删除被软连接链接的文件时,该文件被删除,该软链接所指向的文件没了,所以该软链接就失效了!!!

问题二:该如何理解硬链接?

所谓的建立硬链接,本质其实就是在特定的目录的数据块中新增文件名和指向文件的inode编号的映射关系!!!
当我们删除被硬链接链接的文件的时候,该文件的内容仍然存在,只是硬链接数减一了,如果硬链接数减一后变成了一,这不就是给一个文件取别名吗!!!

任意一个文件,无论目录,还是普通文件,都有inode
每一个inode内部,都有一个叫做引用计数的计数器(有多少个文件名指向我!)

目录里面保存的是 文件名:inode编号的映射关系
文件名1:inode1234
文件名2:inode1234
文件名3:inode1234
文件名4:inode1234
(多个不同的文件名映射同一个inode)

删除这种链接文件,有两种删发,一种是直接rm +文件名,另一种就是通过:

unlink + [链接文件名]
1.3 软硬链接的应用场景

软连接的应用场景

在这里插入图片描述
既然软连接里面是存的是被链接的文件的地址,那我们只要一个可执行程序用软链接链接,就不用去找这个文件在哪了,只需要执行软链接,不管这个文件在哪,他都会自动去找到该文件,然后执行!!!

硬连接的应用场景

在这里插入图片描述
软连接可以直接链接一个路径很深的可执行程序,可以链接目录。但是硬链接无法链接目录,但‘.’‘…’这两个文件是目录的硬链接,这是因为这是操作系统自己设定的,但操作系统不让也不允许用户给目录链接硬链接,这是因为操作系统不信任用户,用户对目录使用硬链接,很容易就造成目录下的环路问题,进而让操作系统崩溃。

2. 动静态库前置知识

2.1 补充一:数据交换的基本单位

在这里插入图片描述

问题一:为什么数据交换的单位是4KB?为什么不是我们需要多少内存空间,就申请多少空间,而是统一的用4KB呢?

1. 减少IO的次数—减少访问外设的次数—硬件
2. 基于局部性原理!!!预加载机制—软件

2.2 补充二:操作系统如何管理内存

操作系统是能看到内存的物理地址的,但用户层只能看到虚拟地址。

问题一:那么操作系统是如何管理内存的呢?

一定是先描述,再组织!!!

struct page {
//page 页必要的属性信息
}

以4GB为例,一个4KB的页框就是一个页
struct page mem_array[1048576]

由于数组是有下标的,数组的下标就是对应的页号,所以,我们对内存的的管理就转变为了对数组进行管理!!!
对于4GB中的一个地址 0x1122 3344,我们只要让他按位 &上0xFFFF F000就能知道他的页号,因为一个页号占4KB,所以,只要将低12位字节置零就可以得到该地址的页号,然后就可以通过该页号,得到对应的数据
所以,我们要访问一个内存,我们只需要先直接找到这个4KB对应的page,就能在系统中找到对应的物理页框。总结:所有申请内存的动作,都是在访问内存page数组!!!

内存管理:

1. 大块内存管理:伙伴系统算法
2. 小块内存管理(不足4KB):slab分派器

2.3 补充三:Linux中,我们每一个进程,打开的每一个文件都要有自己的inode属性和自己的文件页缓冲区

在这里插入图片描述在这里插入图片描述

当我们电脑开机的时候,这些分组中的数据(Super Block、Group Descriptor Table、Block Bitmap、inode Bitmap等都会预加载到物理内存中),其中物理内存中会存在一个链表,每一个链表就是一个Super Block的对象,是用双向链表的形式链接起来,当操作系统访问时,就知道每一个分区大概是在什么位置,每个分区中的文件系统大概是什么样,所以很多文件系统上的数据,操作系统已经给我们预加载了。

当我们在打开一个文件时,我们首先要知道该文件的文件路径和文件名,我们打开一个文件,要直接指定该文件的直接或相对路径,我们通过该文件名和文件路径就可以知道在该目录下,该文件名所映射的该文件的inode编号。

一个被打开的文件,该进程的task_struct指向文件描述符数组,在这个数组中,该文件的文件描述符会指向他文件对应的struct file,==当一个文件被打开时,我们最关心的是两个东西,一个是文件的属性,一个是文件的内容!!!==而文件属性基本都在inode Table内的对应inode的inode结构体当中。

问题一:文件的属性怎么获取?

当我们打开一个文件时,操作系统要为我们对应文件的struct file创建一个结构体struct inode,当我们要打开这个文件时,我们就要根据他的文件名,找到对应的inode的编号,然后在我们预加载到物理内存中的inode Bitmap中判断该文件是否存在,然后通过该inode找到inode Table中的inode结构体中的文件属性,将这些文件属性填到系统给struct file创建的struct inode结构体对象中。

问题二:文件的内容怎么获取?

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

其中struct file中有一个指针指向address space,而这个address space中有一棵radix_tree_root的树(多叉树或字典树),该树的节点内有个slots的(void*)的指针,这就是说,该树的每个叶子节点中,都有很多指针,每一个指针会指向一个个的struct page结构对象,而一个struct page结构就对应一个4KB大小的页,如果我要修改文件中的数据,本质就是通过这样一系列的数据结构找到这样的叶子节点指向的struct page,然后修改其物理内存中的内容!!!而这种一个个的struct page就是文件的页缓冲区!!!

补充四:基数树or基树(本质上是字典树)

在这里插入图片描述

原本字典树是有26个子节点的,这里化简为3个子节点,方便理解。

总结:

本章,从认识到理解,从理解到实现场景,我们知道了什么是软硬链接,通过对四个小点的补充,我们知道了,数据交换的基本单位—页,知道了操作系统是如何管理内存的,又通过对图片的分析,深入清楚了一个被打开的文件在内核部分是如何被修改文件内容的!!!还知道了什么是字典树的一个基本概念!!!本章的补充部分的知识,是为下一篇动静态库而做的铺垫,补齐之前学习的缺口,将知识关联,串联起来!!!

相关文章:

Linux:基础IO---软硬链接动静态库前置知识

序:上一个章节,我从硬件出发,由宏观到微观,由具体到抽象,围绕研究对象未被打开的文件来讲解,操作系统是如何对一个大块的磁盘进行管理的,从而引进inode的概念,加深了对文件的理解&am…...

Arm CPU安全通告:基于TrustZone的Cortex-M系统面临多重故障注入攻击

安全之安全(security)博客目录导读 目录 一、概述 二、致谢 三、参考文献​​​​​​Black Hat USA 2022 | Briefings Schedule 四、版本历史 一、概述 Arm注意到BlackHat 2022大会官网发布的演讲摘要《糟糕..!我又一次故障注入成功了!——如何突…...

测试第二课-------自动化测试

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…...

深入探索Linux开发工具:Vim与Yum

目录 引言 Vim:强大的文本编辑利器 Vim的基本概念 Vim的基本操作 Vim正常模式命令集 Vim末行模式命令集 Vim的配置 使用插件拓展Vim功能 Yum:便捷的Linux软件包管理器 注意事项 结语 引言 在Linux的世界里,高效的开发工具是提升生…...

玩转ChatGPT:使用深入研究功能梳理思路

一、写在前面 前我尝试用ChatGPT的Deep Research(深入研究)功能来梳理文献,效果相当不错。最近,谷歌的Gemini 2.5 Pro也推出了类似功能,从网络测评来看,其表现与ChatGPT不相上下,而且还可以免费…...

UE5蓝图实现打开和关闭界面、退出

Button_Back 和Button_Exit是创建的两个按钮事件。 1.Create Widget 创建界面(打开界面) 2.Add to Viewport 添加到视图 3.remove form Parent,Target:self 从父节点移除当前界面(关闭界面) 4.Quit Game 退…...

实现vlan间的通信

这是第一种方法(更推荐第三种) PC1划分为vlan10,PC2划分为vlan20,实现PC1和PC2之间通信很简单,我们只需将网关都设置好,将交换机的0/0/1、0/0/3设置成vlan10,0/0/2、0/0/4设置成vlan20&#xf…...

Linux上位机开发实践(opencv算法硬件加速)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 图像处理里面,opencv基本是一个标准模块。但是由于图像处理的特点,如果所有的算法都是cpu来做的话,效率会很低。…...

智慧社区数据可视化中枢平台——Axure全场景交互式大屏解决方案

在数字化治理的时代浪潮中,社区管理正面临数据碎片化、响应滞后、决策盲区等核心挑战。如何将分散的安防、环境、能源、民生服务等数据整合为可操作的智慧洞察?如何让冰冷的数字转化为社区管理者手中的决策利器?Axure智慧社区可视化大屏原型模…...

动态路由, RIP路由协议,RIPv1,RIPv2

动态路由 1、回顾 路由:从源主机到目标主机的过程 源主机发送数据给目标主机,源主机会查看自身的路由信息 如果目标主机是自己同网段,源主机查看的是直连路由 如果目标主机和自己不同网段,源主机查看的是静态路由、动态路由、默…...

C++:STL的常用容器(string/vector/deque/stack/queue/list/set/multiset/map/multimap)

程序员Amin 🙈作者简介:练习时长两年半,全栈up主 🙉个人主页:程序员Amin 🙊 P   S : 点赞是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全…...

【unity游戏开发入门到精通——UGUI】Canvas画布组件

注意:考虑到UGUI的内容比较多,我将UGUI的内容分开,并全部整合放在【unity游戏开发——UGUI】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 一、Canvas画布组件1、Canvas组件用来干啥2、场景中可以有多个Canvas对象 二、…...

MyBatis 中 Mapper 传递参数的多种方法

# MyBatis Mapper 传递参数的多种方法及其优势 在使用 MyBatis 进行数据库操作时,Mapper 接口的参数传递是一个非常基础但又十分重要的部分。不同的参数传递方式适用于不同的场景,合理选择可以大大提高代码的可读性和维护性。本文将详细介绍几种常见的 …...

学习海康VisionMaster之平行线计算

一:进一步学习了 今天学习下VisionMaster中的平行线计算,这个是拟合直线的扩展应用,针对需要计算平行线的应用场合,可以方便的生成对应的另外一条平行线 二:开始学习 1:什么是平行线计算? 如果…...

MyBatis Mapper 传递参数的多种方法

1. 使用顺序传参法(不推荐) 方法描述 直接通过位置来引用参数,例如 ( arg0 arg1 … ) 或者 (param1, param2…)。 示例代码 List<User> selectUsers(String name, Integer age); <...

探索 Vue 3 响应式系统:原理与实践

Vue 3 响应式系统凭借 Proxy 的优势&#xff0c;提供更强大、灵活的响应式方案。理解其原理与 API&#xff0c;能写出更高效、可维护的 Vue 应用。不断探索其细节&#xff0c;是进阶 Vue 开发的关键。 探索 Vue 3 响应式系统&#xff1a;原理与实践 Vue 3 的响应式系统是其核…...

【LeetCode 热题100】二叉树构造题精讲:前序 + 中序建树 有序数组构造 BST(力扣105 / 108)(Go语言版)

&#x1f331; 二叉树构造题精讲&#xff1a;前序 中序建树 & 有序数组构造 BST 本文围绕二叉树的两类构造类题目展开解析&#xff1a; 从前序与中序遍历序列构造二叉树 将有序数组转换为二叉搜索树 我们将从「已知遍历构造树」和「平衡构造 BST」两个角度&#xff0c;拆…...

开源语音文本自动对齐模型:Llama-OuteTTS-1.0-1B

OuteTTS 1.0 介绍与使用指南 1. 重要采样考虑 重复惩罚机制&#xff1a;OuteTTS 1.0 要求对最近的64个token应用重复惩罚&#xff0c;而不是对整个上下文窗口。对整个上下文窗口进行惩罚会导致输出质量下降。推荐工具&#xff1a;llama.cpp 和 EXL2 提供了可靠的输出质量&…...

基于SpringBoot的电影订票系统(源码+数据库+万字文档+ppt)

504基于SpringBoot的电影订票系统&#xff0c;系统包含两种角色&#xff1a;管理员、用户主要功能如下。 【用户功能】 首页&#xff1a;浏览系统电影动态。 资讯信息&#xff1a;获取有关电影行业的新闻和资讯。 电影信息&#xff1a;查看电影的详细信息和排片情况。 公告信…...

基于SpringBoot汽车零件商城系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

Python数据可视化:从脚本到海报级图表

Python数据可视化:从脚本到海报级图表 引言 在数据分析和科学计算领域,Python 是一种强大且灵活的工具。本文将带您了解如何使用 Python 进行数据可视化,从简单的脚本到生成高质量的海报级图表。我们将重点介绍如何使用 Matplotlib 库来创建、保存和优化图表,以便在各种场…...

使用Java截取MP4文件图片的技术指南

在多媒体处理中&#xff0c;从视频文件中截取图片是一个常见的需求。本文将详细介绍如何使用Java结合FFmpeg实现从MP4文件中截取图片的功能。我们将通过几种不同的方法来实现这一目标&#xff0c;包括直接调用FFmpeg命令行工具、使用JavaCV库以及使用JAVE库。 环境准备 在开始…...

C++(初阶)(十一)——list

十一&#xff0c;list 带头循环双向链表。 遍历方式&#xff1a;迭代器&#xff0c;不再支持operate[]&#xff0c;operate[]适用于底层是数组的结构。 remove删除值&#xff0c;如果有多个相同的值&#xff0c;都会删除。 接口介绍 下面会介绍list的一些接口 构造 构造…...

leetcode 139. Word Break

这道题用动态规划解决。 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> wordSet;for(string& word:wordDict){wordSet.insert(word);}int s_len s.size();//s的下标从1开始起算&#xff0c;dp[j]…...

5.1、深度剖析 docker run 命令:原理阐释与数据持久化实践探究

5.1、深度剖析 docker run 命令:原理阐释与数据持久化实践探究 1、更换国内yum源2、更换国内docker源3、卸载旧版docker4、docker安装5、镜像加速器6、镜像下载7、docker run命令交互式启动-it非交互式后台运行其他参数8、持久化存储目录挂载数据卷挂载数据同步1、更换国内yum…...

【AI大模型】大模型RAG技术Langchain4j 核心组件深入详解

目录 一、前言 二、Langchain4j概述 2.1 Langchain4j 是什么 2.2 Langchain4j 主要特点 2.3 Langchain4j 核心组件 2.4 Langchain4j 核心优势 三、Langchanin4j组件应用实战 3.1 前置准备 3.1.1 导入如下依赖 3.1.2 获取apikey 3.1.3 获取官方文档 3.2 聊天组件 3.…...

【Flink运行时架构】重要概念

前面我们讲了Flink运行时的核心组件和提交流程&#xff0c;但有些细节需要进一步的思考&#xff0c;一个具体的作业是怎样从编写的代码转换成TaskManager可以执行的任务的呢&#xff1f;JobManager在收到提交的作业之后&#xff0c;又是如何确定总共有多少任务、需要配置多少资…...

oracle命令上下左右键无法使用如何解决?

1、问题如图 2、解决办法 (1) 安装readline yum -y install readline* &#xff08;2&#xff09;安装 rlwrap ##下载 wget http://files.cnblogs.com/files/killkill/rlwrap-0.30.tar.gz.zip ##解压 tar -xzvf rlwrap-0.30.tar.gz.zip ##编译安装 ./configure make &&…...

[文献阅读] chinese-roberta Pre-Training With Whole Word Masking for Chinese BERT

文献信息&#xff1a;Pre-Training With Whole Word Masking for Chinese BERT | IEEE Journals & Magazine | IEEE Xplore 哈工大和科大讯飞联合发表的用于中文NLP任务的基于BERT的改进模型&#xff0c;在中文NLP任务取得了最先进的性能。 摘要 原本的BERT使用随机掩蔽的…...

QML ListView 与 C++ 模型交互

在 Qt 中&#xff0c;QML 的 ListView 可以与 C 模型进行交互&#xff0c;这是实现复杂数据展示和业务逻辑的常见方式。以下是几种主要的交互方法&#xff1a; 1. 使用 QAbstractItemModel 派生类 这是最强大和灵活的方式&#xff0c;适合复杂数据结构。 C 端实现 cpp // …...

使用SSH解决在IDEA中Push出现403的问题

错误截图&#xff1a; 控制台日志&#xff1a; 12:15:34.649: [xxx] git -c core.quotepathfalse -c log.showSignaturefalse push --progress --porcelain master refs/heads/master:master fatal: unable to access https://github.com/xxx.git/: The requested URL return…...

MacOs下解决远程终端内容复制并到本地粘贴板

常常需要在服务器上捣鼓东西&#xff0c;同时需要将内容复制到本地的需求。 1-内容是在远程终端用vim打开&#xff0c;如何用vim的类似指令达到快速复制到本地呢&#xff1f; 假设待复制的内容&#xff1a; #include <iostream> #include <cstring> using names…...

修改idea/android studio等编辑器快捷注释从当前行开头的反人类行为

不知道什么时候开始&#xff0c;idea编辑的快捷注释开始从当前行开头出现了&#xff0c;显得实在是难受&#xff0c;我只想让在当前行代码的部份开始缩进两个字符开始&#xff0c;这样才会显得更舒服。不知道有没有强迫症的猴子和我一样&#xff0c;就像下面的效果&#xff1a;…...

密码加密方式

密码加密方式全面解析 密码安全是系统安全的第一道防线&#xff0c;以下是主流的密码加密技术分类和实现方式&#xff1a; 一、基础加密方式 1. 对称加密 特点&#xff1a;加密解密使用相同密钥 AES (Advanced Encryption Standard) 密钥长度&#xff1a;128/192/256位示例…...

Python10天突击--Day 2: 实现观察者模式

以下是 Python 实现观察者模式的完整方案&#xff0c;包含同步/异步支持、类型注解、线程安全等特性&#xff1a; 1. 经典观察者模式实现 from abc import ABC, abstractmethod from typing import List, Anyclass Observer(ABC):"""观察者抽象基类""…...

【C#】.NET 8适配器模式实战:用C#实现高可用系统集成与接口桥接艺术

系统集成挑战与适配器模式的价值 当需要整合不同架构或API的系统时&#xff0c;接口兼容性问题往往成为拦路虎。**适配器设计模式&#xff08;Adapter Pattern&#xff09;**通过转换接口形态&#xff0c;完美解决这种不兼容性问题。本文将通过C# .NET 8实战演示适配器模式的基…...

方案精读:51页 财政数据信息资源目录数据标准存储及大数据资产化规划方案【附全文阅读】

该方案聚焦财政数据信息资源管理,适用于财政部门工作人员、数据管理与分析人员以及关注财政大数据应用的相关人士。 方案旨在构建财政数据资源目录,推动大数据在财政领域的应用与落地。整体规划上,以 “金财工程” 应用支撑平台为基础,建立省、市、县三级目录体系,遵循相关…...

【CVE-2024-7881】ARM CPU漏洞安全通告

安全之安全(security)博客目录导读 目录 一、概述 二、CVE详情 三、受影响产品 四、修复建议 五、致谢 六、版本历史 一、概述 基于Arm架构的部分CPU中发现一个安全问题&#xff1a;非特权上下文可能触发数据内存依赖型预取引擎&#xff08;data memory-dependent pref…...

idea中提高编译速度研究

探索过程&#xff1a; 有三种情况&#xff1a; 第一种&#xff1a; idea中用eclipse编译器编译springboot项目&#xff0c;然后debug启动Application报错找不到类。 有待继续研究。 第二种&#xff1a; idea中用javac编译器编译springboot项目&#xff0c;重新构建用时&a…...

基于Yocto构建Ubuntu 24.04 ARM64 Qt工具链

以下是基于Yocto构建Ubuntu 24.04 ARM64 Qt工具链的完整方案&#xff0c;综合多篇技术文档整理而成&#xff1a; 一、系统环境准备 Ubuntu基础系统‌ 建议选择Ubuntu 24.04 LTS服务器版或桌面版&#xff0c;需满足至少300GB磁盘空间和16GB内存‌ 若使用ARM64架构主机可直接运…...

如何使用阿里云邮件推送免费群发邮件

最近一直想利用自己的阿里云账号开一个邮件推送服务&#xff0c;同时还可以用python来实现邮件群发&#xff0c;之前没有成功&#xff0c;今天又尝试了一次终于成功了&#xff0c;现将过程记录如下&#xff0c;也便于网友们少走弯路。 一、申请阿里云账号 阿里云注册可以用淘…...

利用 Genspark 和 AI IDE 一键配置 Java 开发环境

以下是以 CSDN 博客风格撰写的文章&#xff0c;基于你提到的“利用 Genspark 和 AI IDE 实现 Java 环境一键配置”的流程。文章结构清晰&#xff0c;内容详实&#xff0c;符合 CSDN 技术博客的常见风格&#xff0c;包含标题、简介、目录、正文、代码示例和总结。 利用 Genspark…...

【软考系统架构设计师】计算机网络知识点

1、 TCP/IP协议族 2、 数据链路层 解决三个基本问题&#xff1a; 封装成帧&#xff08;在⼀段数据的前后分别添加首部和尾部&#xff09; 透明传输&#xff08;发送⽅&#xff1a;若数据部分出现帧开始符或者帧结束符&#xff0c;会在其前面加转义字符&#xff1b;接收⽅&…...

RFID技术概览

一、RFID技术定义 RFID&#xff08;Radio Frequency Identification&#xff0c;射频识别&#xff09; 是一种通过无线电信号识别目标对象并获取相关数据的非接触式自动识别技术。它利用射频信号的空间耦合&#xff08;电感或电磁耦合&#xff09;实现无物理接触的信息传递与目…...

中间件--ClickHouse-2--OLAP和OLTP

OLAP&#xff08;Online Analytical Processing&#xff0c;联机分析处理&#xff09;和OLTP&#xff08;Online Transaction Processing&#xff0c;联机事务处理&#xff09;是两种不同类型的数据处理系统&#xff0c;它们分别针对不同的应用场景和需求。 1、OLTP&#xff0…...

使用ADB工具分析Android应用崩溃原因:以闪动校园为例

使用adb工具分析模拟器或手机里app出错原因以闪动校园为例 使用ADB工具分析Android应用崩溃原因&#xff1a;以闪动校园为例 前言 应用崩溃是移动开发中常见的问题&#xff0c;尤其在复杂的Android生态系统中&#xff0c;找出崩溃原因可能十分棘手。本文将以流行的校园应用&q…...

C++双链表介绍及实现

双链表详解 1. 基本概念 双链表&#xff08;双向链表&#xff09;​ 是一种链式数据结构&#xff0c;每个节点包含两个指针&#xff1a; ​前驱指针&#xff08;pre&#xff09;​&#xff1a;指向直接前驱节点​后继指针&#xff08;next&#xff09;​&#xff1a;指向直接…...

推流265视频,网页如何支持显示265的webrtc

科技发展真快&#xff0c;以前在网页上&#xff08;一般指谷歌浏览器&#xff09;&#xff0c;要显示265的视频流&#xff0c;都是很鸡肋的办法&#xff0c;要么转码&#xff0c;要么用很慢的hls&#xff0c;体验非常不好&#xff0c;而今谷歌官方最新的浏览器已经支持265的web…...

linux多线(进)程编程——(6)共享内存

前言 话说进程君的儿子经过父亲点播后就开始闭关&#xff0c;它想要开发出一种全新的传音神通。他想&#xff0c;如果两个人的大脑生长到了一起&#xff0c;那不是就可以直接知道对方在想什么了吗&#xff0c;这样不是可以避免通过语言传递照成的浪费吗&#xff1f; 下面就是它…...

Allpairs工具下载及操作流程(联动Deepseek)

目录 一、Allpairs工具下载及操作流程二、Allpairs工具使用易错问题 Allpairs工具产生的原因 Allpairs工具的产生源于软件测试领域对高效组合测试方法的迫切需求&#xff0c;其核心目标是解决传统测试方法在多因素组合场景下用例数量爆炸和测试效率低下的问题。 一、Allpairs工…...