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

Linux内存管理--系列文章柒——硬件架构

一、引子

之前文章讲解的是系统的虚拟内存,本章讲述这些硬件的架构和系统怎样统一管理这些硬件的。

二、物理内存模型

物理内存模型描述了计算机系统中的物理内存如何由操作系统组织和管理。它定义了物理内存如何划分为单元,如何寻址这些单元以及如何将它们映射到虚拟内存地址。物理内存模型对于确保高效和可靠的内存管理至关重要。
物理内存模型对操作系统管理内存分配、虚拟内存映射和内存访问模式产生重大影响。它会影响内存碎片化、缓存利用率和整体系统性能等因素。

2.1平坦内存模型(Flat Memory Model)

平坦内存模型,也称为线性内存模型,是一种简单的内存管理方式,在这种模型下,整个内存空间被视为一个连续的线性地址空间。每个地址直接对应物理内存中的一个字节,没有分段或分页的复杂性。
因为该内存模型的所有内存地址是一个连续的线性地址空间,因此Linux内核中,使用一个全局数组来管理这些物理内存页,并且内核中默认的配置是使用平坦内存模型。在Linux中最小分配的内存是4KB,所以即使是平坦内存模型,还是按来管理内存的。
特点
单一地址空间:所有程序和数据共享一个统一的地址空间,从地址0到最大地址。
无分段和分页:没有分段和分页机制,所有内存地址都是线性且连续的。
简单性:管理和编程简单,适用于内存需求较小且操作系统简单的系统。
优点
简单易用:由于没有复杂的地址转换机制,编程和调试相对简单。
效率高:没有地址转换的开销,访问内存速度快。
低开销:硬件和软件开销较低,适合资源有限的系统。
缺点
不灵活:不适合内存需求复杂的系统,难以进行内存保护和共享。
容易出错:程序错误可能会破坏整个系统内存,因为没有内存保护机制。
扩展性差:难以应对大规模内存需求,无法有效利用大内存。

2.2稀疏内存模型(Sparse Memory Model)

稀疏内存模型,也称为非连续内存模型,允许内存空间中存在大量未使用的地址区域(稀疏地址空间)。这种模型广泛用于需要大地址空间但实际使用内存较少的应用场景,如大规模数据处理、内存映射文件和某些高级编程语言的运行时系统。
在有多块非连续的物理内存时,在使用平坦内存模型的数组来初始化管理内存地址将会造成很大的内存浪费。稀疏内存模型是将物理内存划在宏观层面上分为一块一块的内存集合体,每个集合体使用一个节点来管理。内核在宏观上通过管理节点来间接的管理到每一个内存页。每个节点中管理的内存集合体也可以是不连续的,内核又将内存集合体分为多个连续内存块。在连续内存块中,内核就可以将其视为平坦内存模型来管理。
特点
稀疏地址空间:地址空间中大部分区域未使用,仅在需要时分配实际的物理内存。
虚拟内存支持:通过虚拟内存机制,将实际需要的内存区域映射到物理内存,其余部分不占用物理内存。
按需分配:内存仅在访问时分配,减少了不必要的内存占用。
优点
内存利用率高:由于仅在需要时分配内存,减少了物理内存的浪费。
支持大地址空间:可以处理非常大的地址空间,而不需要实际分配所有的物理内存。
灵活性:适合处理稀疏数据结构和大规模数据集,提供更大的灵活性。
缺点
复杂的管理:需要操作系统和硬件支持虚拟内存和按需分配,增加了系统的复杂性。
可能的性能开销:按需分配和地址转换可能带来一定的性能开销,特别是在频繁访问新的内存区域时。

2.3补充

2.3.1 物理内存模型关系

平坦内存模型通过全局数组直接管理每一个内存页。

稀疏内存模型通过内存集合体的节点管理内存集合体,并且在内存集合体中又分出多个连续内存块。内存块和内存块中间,可以不连续。每一个连续内存块都可以视为平坦内存模型。

非连续内存模型是稀疏内存模型的一种简单形式,它不允许内存集合体中出现不连续的内存块,既将内存集合体视为平坦内存模型。但较新的内核代码已经不在做特殊区分。只是将平坦内存模型和稀疏内存模型使用宏隔开。
如图
在这里插入图片描述

2.3.2 物理内存热插拔

稀疏内存模型管理内存的方式不难看出,物理内存是否可以被系统使用,就看连续内存块能否管理到相应的内存。只要能让连续内存块管理或者不管理该内存,即可实现内存的动态加载或删除。简单来说:连续内存块和连续内存块中间本就可以是不连续的,只需让没有管理连续内存块的连续内存块节点指向一个内存区域就可以动态加载,或让正在管理连续内存块的连续内存块节点指向空就可以动态删除。
需要注意的是,因为内核态的虚拟地址空间中,有一段直接映射区,这块区域是和物理内存地址直接映射的关系,这些物理内存是无法被动态删除的。一块内存是否能被动态删除是内核在初始化时就决定的。

三、CPU和物理内存架构

在多处理器系统中,内存架构是指多个处理器如何访问和共享内存资源的机制。它对于系统性能和可扩展性至关重要。上面讲了物理内存模型,下面要阐述CPU是怎么访问这些物理内存的。

3.1一致性内存访问(Uniform Memory Access,UMA)

一致性内存访问,所有处理器都共享相同的物理内存,并且访问内存的速度和延迟是均匀的。这意味着每个处理器访问内存的时间是相同的,无论内存地址是什么。
特点
统一内存访问时间:所有处理器对内存的访问时间一致。
共享内存架构:所有处理器共享相同的物理内存,没有本地和远程内存的区别。
对称多处理:UMA通常用于对称多处理(SMP)系统中,每个处理器有相同的访问权限和能力。
优点
编程简单:由于访问内存的延迟一致,程序员不需要考虑不同内存访问速度的问题。
负载均衡:可以更容易地实现负载均衡,因为所有处理器访问内存的成本相同。
硬件简单:相对于非一致性内存访问(NUMA),UMA的硬件设计相对简单。
缺点
可扩展性差:随着处理器数量增加,共享内存带宽成为瓶颈,系统性能难以线性扩展。
内存争用:所有处理器共享同一内存总线,容易出现内存争用问题,影响系统性能。

3.2非一致性内存访问(Non-Uniform Memory Access,NUMA)

非一致性内存访问,与一致性内存访问(UMA)相反。在NUMA架构中,每个处理器(或处理器组)有自己的本地内存(Local Memory),同时也可以访问其他处理器的远程内存(Remote Memory)。这种架构设计旨在提高大规模多处理器系统的可扩展性和性能。
特点
本地和远程内存:每个处理器组(或节点)有自己的本地内存,访问速度比较快;同时可以访问其他处理器组的远程内存,速度较慢。
分布式内存架构:系统内存被分割成多个区域(或节点),每个节点由处理器组成,并拥有一部分物理内存。
非均匀访问时间:访问本地内存的延迟比访问远程内存的延迟低,因此访问时间不均匀。
优点
提高扩展性:NUMA架构可以有效处理大型多处理器系统的内存访问和管理,避免了单一内存总线或互连网络的瓶颈。
减少内存争用:每个处理器组有自己的本地内存,减少了不同处理器之间因访问同一内存而产生的争用。
适应大规模并行工作负载:适合需要大量并行计算和高内存带宽的应用场景,如科学计算和大数据处理。
缺点
复杂的编程模型:NUMA架构需要考虑内存分布和访问延迟的不均匀性,编程和优化相对复杂。
高成本:相对于UMA,NUMA系统通常更昂贵,因为需要更复杂的硬件互连和内存控制器。
远程访问性能差:访问远程内存的延迟较高,可能会影响特定类型的应用程序性能。

3.3其他架构

缓存一致性共享内存(CC-UMA): 每个处理器都有自己的本地缓存,但所有处理器共享一个全局一致性视图。这种架构结合了 UMA 和 NUMA 的优点,既能提供低延迟的本地访问,又能支持大规模扩展。
分布式共享内存(DSM): 物理内存分布在多个节点上,每个节点拥有一部分内存。处理器通过消息传递访问其他节点的内存。这种架构具有高度的可扩展性,但编程和调试更加复杂。

随着多处理器系统变得越来越复杂,内存架构也将继续发展。未来的趋势包括:
混合内存架构: 使用不同类型的内存架构来满足不同的需求,例如使用 NUMA 架构来满足对高性能的需求,使用 DSM 架构来满足对可扩展性的需求。
硬件支持的一致性模型: 硬件支持更强的一致性模型,以简化编程并提高性能。
新型内存技术: 使用新的内存技术,例如非易失性内存(NVM),来提高性能和降低功耗。

本篇大致讲述了硬件的情况,可以看出稀疏内存模型就是在平坦内存模型上多加一些管理节点,非一致性内存访问的CPU就是一堆一致性内存访问的CPU捏合在一起。下一篇文章将会对内核初始化硬件信息并管理的情况进行阐述。

相关文章:

Linux内存管理--系列文章柒——硬件架构

一、引子 之前文章讲解的是系统的虚拟内存,本章讲述这些硬件的架构和系统怎样统一管理这些硬件的。 二、物理内存模型 物理内存模型描述了计算机系统中的物理内存如何由操作系统组织和管理。它定义了物理内存如何划分为单元,如何寻址这些单元以及如何…...

QQ音乐Android一面凉经

最近面试了不少公司, 近期告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是QQ音乐Android一面凉经。 面试岗位: QQ音乐Android开发工程师面试时长: 50min(提问40min 反问10min)代码考核: 无 面试问题(40min) 自我介绍 工作经历, 重点…...

浅谈进程隐藏技术

前言 在之前几篇文章已经学习了解了几种钩取的方法 浅谈调试模式钩取浅谈热补丁浅谈内联钩取原理与实现导入地址表钩取技术 这篇文章就利用钩取方式完成进程隐藏的效果。 进程遍历方法 在实现进程隐藏时,首先需要明确遍历进程的方法。 CreateToolhelp32Snapsh…...

【C++】Google Test(gtest)单元测试

文章目录 Google Test(gtest)单元测试使用示例更多用法测试夹具 Google Test(gtest)单元测试 单元测试是一种软件测试方法,它旨在将应用程序的各个部分(通常是方法或函数)分离出来并独立测试&a…...

水箱高低水位浮球液位开关

水箱高低水位浮球液位开关概述 水箱高低水位浮球液位开关是一种用于监测和控制水箱中液位的自动化设备,它能够在水箱液位达到预设的高低限制时,输出开关信号,以控制水泵或电磁阀的开闭,从而维持水箱液位在一个安全的范围内。这类设…...

Autoware内容学习与初步探索(一)

0. 简介 之前作者主要是基于ROS2,CyberRT还有AutoSar等中间件完成搭建的。有一说一,这种从头开发当然有从头开发的好处,但是如果说绝大多数的公司还是基于现成的Apollo以及Autoware来完成的。这些现成的框架中也有很多非常好的方法。目前作者…...

【手写数据库内核组件】01 解析树的结构,不同类型的数据结构组多层的链表树,抽象类型统一引用格式

不同类型的链表 ​专栏内容: postgresql使用入门基础手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 文章目录 不同类型…...

Pandas 进阶 —— 数据转换、聚合与可视化

引言 在数据分析的旅程中,Pandas 库提供了从数据转换到聚合再到可视化的全面解决方案。上篇我们掌握了数据的导入和清洗,本篇我们将探索如何通过 Pandas 对数据进行更高级的处理,包括数据转换、聚合分析以及可视化展示。 数据转换 数据转换…...

华为OD机试 - 来自异国的客人(Java 2024 D卷 100分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…...

期末上分站——计组(3)

复习题21-42 21、指令周期是指__C_。 A. CPU从主存取出一条指令的时间 B. CPU执行一条指令的时间 C. CPU从主存取出一条指令的时间加上执行这条指令的时间。 D. 时钟周期时间 22、微型机系统中外设通过适配器与主板的系统总线相连接,其功能是__D_。 A. 数据缓冲和…...

IDA*——AcWing 180. 排书

IDA* 定义 IDA*(Iterative Deepening A*)是一种结合了深度优先搜索(DFS)的递归深度限制特性和A搜索的启发式估价函数的搜索算法。它主要用于解决启发式搜索问题,尤其是当搜索空间很大或者搜索成本不确定时。 IDA* 是…...

【云计算】公有云、私有云、混合云、社区云、多云

公有云、私有云、混合云、社区云、多云 1.云计算的形态1.1 公有云1.2 私有云1.3 混合云1.4 社区云1.5 多云1.5.1 多云和混合云之间的关系1.5.2 多云的用途1.5.3 影子 IT 和多云1.5.4 优缺点 2.不同云形态的对比 1.云计算的形态 张三⾃⼰在家做饭吃,这是 私有云&…...

MySQL中的MVCC解析

MySQL中的MVCC解析 多版本并发控制是MySQL中实现高并发的一种关键技术。通过对数据进行多版本的管理,MVCC能够在保证数据一致性的同时,提高数据库的并发性能。本文将深入探讨MySQL中的MVCC机制,包括其原理、实现方式以及优势。 MVCC的原理 …...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的生日聚会(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 &#x1f…...

初识STM32:芯片基本信息

STM32简介 STM32是ST公司基于ARM公司的Cortex-M内核开发的32位微控制器。 ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构。 ST公司于1987年由意大利的SGS微电子与法国的Thomson半导体合并…...

Zabbix 配置PING监控

Zabbix PING监控介绍 如果需要判断机房的网络或者主机是否正常,这就需要使用zabbix ping,Zabbix使用外部命令fping处理ICMP ping的请求,在基于ubuntu APT方式安装zabbix后默认已存在fping程序。另外zabinx_server配置文件参数FpingLocation默…...

异常解决(三)-- Wandb fails with ServiceStartProcessError

原文链接:https://github.com/wandb/wandb/issues/5765 我的环境配置: Python3.8.16 Wandb0.17.4 在使用Wandb记录实验数据时, 报以下错误: ServiceStartProcessError: The wandb service process exited with 1. Ensure that s…...

Qt调用Matlab(一)

目录 1 概述2 创建Qt工程2.1 增加Matlab支持3 调用Matlab3.1 widget.h3.2 widget.cpp4 运行4.1 配置4.2 运行1 概述 MATLAB是MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域…...

网络爬虫(二) 哔哩哔哩热榜高频词按照图片形状排列

我们有时候需要爬取结果生成为自定义的词云图 生成自定义的词云图通常需要以下步骤: 1. 爬取数据:使用爬虫工具或库,如requests、BeautifulSoup等,可以爬取网页、论坛、社交媒体等平台上的文本数据。 2. 数据预处理&#xff1a…...

MySQL 常见错误及解决方案

1. Too many connections 运行环境:Winows11、Phpstudy V8.1.1.3、MySQL 5.7.26 同一时间 MySQL 的连接数量有限制,当超过上限时将提示下面错误信息: 1040 - Too many connections 查看当前最大连接数 mysql> show variables like %max_…...

STM32 - 内存分区与OTA

最近搞MCU,发现它与SOC之间存在诸多差异,不能沿用SOC上一些技术理论。本文以STM L4为例,总结了一些STM32 小白入门指南。 标题MCU没有DDR? 是的。MCU并没有DDR,而是让代码存储在nor flash上,临时变量和栈…...

RAG理论:ES混合搜索BM25+kNN(cosine)以及归一化

接前一篇:RAG实践:ES混合搜索BM25+kNN(cosine) https://blog.csdn.net/Xin_101/article/details/140230948 本文主要讲解混合搜索相关理论以及计算推导过程, 包括BM25、kNN以及ES中使用混合搜索分数计算过程。 详细讲解: (1)ES中如何通过BM25计算关键词搜索分数; (2)…...

分享大厂对于缓存操作的封装

hello,伙伴们好久不见,我是shigen。发现有两周没有更新我的文章了。也是因为最近比较忙,基本是993了。 缓存大家再熟悉不过了,几乎是现在任何系统的标配,并引申出来很多的问题:缓存穿透、缓存击穿、缓存雪崩…...

冯诺依曼体系结构与操作系统(Linux)

文章目录 前言冯诺依曼体系结构(硬件)操作系统(软件)总结 前言 冯诺依曼体系结构(硬件) 上图就是冯诺依曼体系结构图,主要包括输入设备,输出设备,存储器,运算…...

开源六轴协作机械臂myCobot280实现交互式乘法!让学习充满乐趣

本文经作者Fumitaka Kimizuka 授权我们翻译和转载。 原文链接:myCobotに「頷き」「首振り」「首傾げ」をしてもらう 🤖 - みかづきブログ・カスタム 引言 Fumitaka Kimizuka 创造了一个乘法表系统,帮助他的女儿享受学习乘法表的乐趣。她可以…...

[C++][CMake][嵌套的CMake]详细讲解

目录 0.前言 & 准备1.节点关系2.添加子目录3.解决问题1.根目录2.calc目录3.sort目录4.calc_test目录5.sort_test 4.注意 0.前言 & 准备 如果项目很大,或者项目中有很多的源码目录,在通过CMake管理项目的时候如果只使用一个CMakeLists.txt&#…...

尚品汇-(十三)

&#xff08;1&#xff09;查询sku列表 在ManageService 中添加 /*** SKU分页列表* param pageParam* return*/ IPage<SkuInfo> getPage(Page<SkuInfo> pageParam);接口实现类 Override public IPage<SkuInfo> getPage(Page<SkuInfo> pageParam) {Qu…...

python小练习04

三国演义词频统计与词云图绘制 import jieba import wordcloud def analysis():txt open("三国演义.txt",r,encodingutf-8).read()words jieba.lcut(txt)#精确模式counts {}for word in words:if len(word) 1:continueelif word "诸葛亮" or word &q…...

小试牛刀-Solana合约账户详解

目录 一.Solana 三.账户详解 3.1 程序账户 3.2 系统所有账户 3.3 程序派生账户(PDA) 3.4 Token账户 四、相关学习文档 五、在线编辑器 Welcome to Code Blocks blog 本篇文章主要介绍了 [Solana合约账户详解] ❤博主广交技术好友&#xff0c;喜欢文章的可以关注一下❤ …...

Spring Boot+Vue项目从零入手

Spring BootVue项目从零入手 一、前期准备 在搭建spring bootvue项目前&#xff0c;我们首先要准备好开发环境&#xff0c;所需相关环境和软件如下&#xff1a; 1、node.js 检测安装成功的方法&#xff1a;node -v 2、vue 检测安装成功的方法&#xff1a;vue -V 3、Visu…...

Vue+Xterm.js+WebSocket+JSch实现Web Shell终端

一、需求 在系统中使用Web Shell连接集群的登录节点 二、实现 前端使用Vue&#xff0c;WebSocket实现前后端通信&#xff0c;后端使用JSch ssh通讯包。 1. 前端核心代码 <template><div class"shell-container"><div id"shell"/>&l…...

用 adb 来模拟手机插上电源和拔掉电源的情形

实用的 ADB 命令 要模拟手机从 USB 充电器上拔掉的情形&#xff0c;你可以使用&#xff1a; adb shell dumpsys battery set usb 0或者&#xff0c;如果你使用的是 Android 6.0 或更高版本的设备&#xff0c;你可以使用&#xff1a; adb shell dumpsys battery unplug要重新…...

【SPIE独立出版】第四届智能交通系统与智慧城市国际学术会议(ITSSC 2024)

第四届智能交通系统与智慧城市国际学术会议&#xff08;ITSSC 2024&#xff09;将于2024年8月23-25日在中国西安举行。本次会议主要围绕智能交通、交通新能源、无人驾驶、智慧城市、智能家居、智能生活等研究领域展开讨论&#xff0c; 旨在为该研究领域的专家学者们提供一个分享…...

【Unity数据交互】如何Unity中读取Ecxel中的数据

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 专栏交流&#x1f9e7;&…...

基于深度学习LightWeight的人体姿态检测跌倒系统源码

一. LightWeight概述 light weight openpose是openpose的简化版本&#xff0c;使用了openpose的大体流程。 Light weight openpose和openpose的区别是&#xff1a; a 前者使用的是Mobilenet V1&#xff08;到conv5_5&#xff09;&#xff0c;后者使用的是Vgg19&#xff08;前10…...

SpringBoot 生产实践:没有父 starter 的打包问题

文章目录 前言一、搜索引擎二、Chat GPT三、官方文档四、小结推荐阅读 前言 今天刚准备写点文章&#xff0c;需要 SpringBoot 项目来演示效果。一时心血来潮&#xff0c;没有采用传统的方式&#xff08;即通过引入 spring-boot-starter-parent 父工程的方式&#xff09;。 &l…...

IDEA配Git

目录 前言 1.创建Git仓库&#xff0c;获得可提交渠道 2.选择本地提交的项目名 3.配置远程仓库的地址 4.新增远程仓库地址 5.开始进行commit操作 6.push由于邮箱问题被拒绝的解决方法&#xff1a; 后记 前言 以下操作都是基于你已经下载了Git的前提下进行的&#xff0c…...

51单片机STC89C52RC——14.1 直流电机调速

目录 目的/效果 1&#xff1a;电机转速同步LED呼吸灯 2 通过独立按键 控制直流电机转速。 一&#xff0c;STC单片机模块 二&#xff0c;直流电机 2.1 简介 2.2 驱动电路 2.2.1 大功率器件直接驱动 2.2.2 H桥驱动 正转 反转 2.2.3 ULN2003D 引脚、电路 2.3 PWM&…...

AI对于高考和IT行业的深远影响

目录 AI对IT行业的冲击及深远影响1. 工作自动化2. 新的就业机会3. 行业融合4. 技术升级和创新5. 数据的重要性 IT行业的冬天要持续多久&#xff1f;大学的软件开发类专业是否还值得报考&#xff1f;其他问题IT行业是否都是加班严重&#xff1f;35岁后就业困难是否普遍现象&…...

C语言下的文件详解

主要内容 文件概述文件指针文件的打开与关闭文件的读写 文件 把输入和输出的数据以文件的形式保存在计算机的外存储器上&#xff0c;可以确保数据能随时使用&#xff0c;避免反复输入和读取数据 文件概述 文件是指一组相关数据的有序集合 文件是存储数据的基本单位&#…...

Oracle PL / SQL块结构

在PL / SQL中&#xff0c;最小的有意义的代码分组被称为块。 块代码为变量声明和异常处理提供执行和作用域边界。 PL / SQL允许您创建匿名块和命名块。 命名块可以是包&#xff0c;过程&#xff0c;函数&#xff0c;触发器或对象类型。 PL / SQL是SQL的过程语言扩展&#x…...

MySQL的安装和启动

安装 版本 1&#xff0c;社区版&#xff1a;免费&#xff0c;不提供任何技术支持 2&#xff0c;商业版&#xff1a;可以试用30天&#xff0c;官方提供技术支持下载 1&#xff0c;下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 2&#xff0c;安装&#xff1a;傻…...

Prometheus概述

1.什么是prometheus Prometheus 是一个开源的服务监控系统和时序数据库&#xff0c;其提供了通用的数据模型和快捷数据采集、存储和查询接口。它的核心组件Prometheus server会定期从静态配置的监控目标或者基于服务发现自动配置的自标中进行拉取数据&#xff0c;当新拉取到的…...

【SQL】什么是最左前缀原则/最左匹配原则

最左前缀原则&#xff08;或最左匹配原则&#xff09;是关系型数据库在使用复合索引时遵循的一条重要规则。该原则指的是&#xff0c;当查询条件使用复合索引时&#xff0c;查询优化器会首先使用索引的最左边的列&#xff0c;依次向右匹配&#xff0c;直到不再满足查询条件为止…...

java项目配置logback日志

在resource目录下添加logback配置文件 <?xml version"1.0" encoding"UTF-8"?> <configuration scan"true" scanPeriod"60 seconds" debug"false"><property name"log_dir" value"/APL/log…...

Python入门 2024/7/6

目录 元组的定义和操作 字符串的定义和操作 字符串 字符串的替换 字符串的分割 字符串的规整操作&#xff08;去除前后空格&#xff09; 字符串的规整操作&#xff08;去掉前后指定字符串&#xff09; 操作 字符串的替换 字符串的分割 字符串的规整操作 统计字符串的…...

ChatGPT4深度解析:探索智能对话新境界

大模型chatgpt4分析功能初探 目录 1、探测目的 2、目标变量分析 3、特征缺失率处理 4、特征描述性分析 5、异常值分析 6、相关性分析 7、高阶特征挖掘 1、探测目的 1、分析chat4的数据分析能力&#xff0c;提高部门人效 2、给数据挖掘提供思路 3、原始数据&#xf…...

触底加载的两种思路(以vue3前端和nodejs后端为例)

一:首先,nodejs后端的代码都是一样的. 需要前端返回page参数,然后nodejs逻辑进行处理,截取页数和每页条数和总条数, 总条数用来作为判断是否有数据的条件,也可以不用,注意看下文 一:不用获取容器高度的. pinia中进行的axios请求处理 在vue文件中进行pinia中数据的导入,继续进…...

tobias实现支付宝支付

tobias是一个为支付宝支付SDK做的Flutter插件。 如何使用 你需要在pubspec.yaml中配置url_scheme。url_scheme是一个独特的字符串&#xff0c;用来重新启动你的app&#xff0c;但是请注意字符串“_”是不合法的。 在iOS端&#xff0c;你还需要配置并传入一个universal link。…...

【音视频 | RTSP】RTSP协议详解 及 抓包例子解析(详细而不赘述)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...