计算机操作系统(十七)内存管理
计算机操作系统(十七)内存管理
- 前言
- 一、内存的使用与程序重定位
- (一)内存是什么?
- (二)程序的重定位过程
- (三)总结:内存使用的核心问题
- 二、连续分区管理:早期的内存管理方案
- (一)什么是连续分区?
- (二)三种典型方案
- (三)连续分区的致命缺陷:内存碎片
- 三、分页管理:用"拆分成小块"解决碎片问题
- (一)核心思想:把内存和程序都切成小块
- (二)分页的优点
- (三)分页的问题
- 四、分段管理:从"逻辑模块"角度管理内存
- (一)为什么需要分段?
- (二)分段的核心概念
- (三)分段的优点
- (四)分段的缺点
- 五、段页式管理:集大成者
- (一)设计思想:分段+分页,取长补短
- (二)地址转换过程(稍微复杂,但更灵活)
- (三)优缺点
- (四)实际应用
前言
- 在上一篇博客中,我们深入探讨了进程同步,了解了进程间如何协调以避免冲突、有序执行。
- 进程运行离不开内存资源,因此,这一篇博客,我们将开启内存管理的学习之旅,探究操作系统是如何高效管理内存,为进程运行保驾护航的。
我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的操作系统博客专栏
https://blog.csdn.net/2402_83322742/category_12916780.html?spm=1001.2014.3001.5482
一、内存的使用与程序重定位
(一)内存是什么?
内存是计算机中用于临时存储数据和程序的硬件设备,就像我们日常办公时的"书桌"。当我们要运行一个程序(比如打开浏览器),计算机需要先把程序从硬盘(相当于"文件柜")复制到内存这个"书桌"上,CPU才能快速读取并执行。
(二)程序的重定位过程
-
程序的三种地址形态
- 逻辑地址:程序员写代码时用的"虚拟地址",比如在C语言中定义
int a=10;
,编译器会给变量a
分配一个逻辑地址(例如0x1000),这个地址不考虑实际内存位置。 - 相对地址:经过汇编或编译后生成的"相对起始地址"。比如一个程序模块的相对地址从0开始,内部函数调用使用相对地址(如调用偏移量100的函数)。
- 物理地址:内存中真实的硬件地址,就像每个内存单元的"门牌号"(例如0x80000010)。
- 逻辑地址:程序员写代码时用的"虚拟地址",比如在C语言中定义
-
为什么需要重定位?
当程序被装入内存时,它在内存中的起始位置是不确定的。比如同一个程序第一次从内存地址0x1000开始存放,第二次可能从0x5000开始。这时候程序内部的逻辑地址必须转换成对应的物理地址,否则CPU会找不到正确的数据,就像快递地址写错会导致包裹送错地方。 -
两种重定位方式
- 静态重定位:在程序装入内存时一次性完成地址转换。就像搬家前把所有家具的位置在图纸上标好,搬家时直接按图纸摆放,之后不再改变。优点是简单,缺点是程序一旦装入就不能移动位置。
- 动态重定位:程序运行时通过硬件地址转换机构(如基址寄存器)实时转换地址。就像随身携带一个"地址翻译器",走到哪里都能把逻辑地址翻译成当前位置的物理地址。优点是程序可以在内存中移动(比如内存紧凑时),缺点是需要额外的硬件支持。
(三)总结:内存使用的核心问题
程序要在内存中运行,必须解决"地址转换"的问题,而重定位就是连接逻辑世界(程序员视角)和物理世界(硬件视角)的桥梁。
二、连续分区管理:早期的内存管理方案
(一)什么是连续分区?
- 把内存划分为若干个连续的区域,每个区域分配给一个程序使用,就像把一块大蛋糕切成若干块,每块给一个人吃。
- 早期的操作系统(如DOS)常用这种方式。
(二)三种典型方案
-
单一连续分区(最简单的方案)
- 内存分为两部分:一部分给操作系统(比如Windows的内核),剩下的全部给一个应用程序。
- 缺点:一次只能运行一个程序(想想看,你不能同时打开微信和浏览器),内存利用率极低。
-
固定分区(稍微进步一点)
- 提前把内存划分为大小固定的几个分区(比如1MB、2MB、4MB),每个分区可以存放一个程序。
- 问题:如果程序大小超过分区大小,无法装入;如果程序太小,分区剩余空间浪费(比如一个500KB的程序装入1MB的分区,浪费500KB)。
-
动态分区(按需分配)
- 不再提前划分分区,而是根据程序需要动态划分。比如程序需要3MB内存,就从空闲内存中切出3MB的连续空间。
- 关键问题:如何高效分配和回收空间?
- 分配算法:
- 首次适应:从内存起始位置开始找,第一个足够大的空闲块就分配,简单但可能留下小碎片。
- 最佳适应:找最接近程序大小的空闲块,看似合理,却容易产生大量微小碎片(比如把大空闲块切成刚好够用的小块,剩下的小碎片难以利用)。
- 回收问题:当程序运行结束释放内存时,如果相邻的空闲块,需要合并成一个大的空闲块,否则会形成不连续的碎片。
- 分配算法:
(三)连续分区的致命缺陷:内存碎片
无论是固定分区还是动态分区,都会面临"碎片问题"。比如内存中有多个小的空闲块,但合起来不够一个程序使用(就像钱包里有很多零钱,但凑不出一张整钞)。为了解决这个问题,操作系统不得不定期进行"内存紧凑"(把正在运行的程序移动到连续的区域,合并空闲块),但这会消耗大量CPU资源。
三、分页管理:用"拆分成小块"解决碎片问题
(一)核心思想:把内存和程序都切成小块
-
页与页框
- 把程序逻辑地址空间划分为大小相等的"页"(Page,比如4KB大小)。
- 把物理内存划分为同样大小的"页框"(Page Frame,也叫页帧)。
- 程序的每个页可以装入任意一个页框,不需要连续,就像把一本书拆分成若干章节(页),每个章节可以放在不同的书架格子(页框)里,只要知道每个章节放在哪个格子,就能快速找到。
-
页表:记录"页"的位置
- 每个程序有一张"页表",记录逻辑页号到物理页框号的映射关系。比如逻辑页0对应物理页框5,逻辑页1对应物理页框3。
- 地址转换过程:当程序访问逻辑地址(由页号+页内偏移组成),CPU通过页表找到对应的页框号,再加上页内偏移,得到物理地址。例如:页大小4KB(12位),逻辑地址0x1234(二进制0001 0010 0011 0100),前4位(0001)是页号,后12位(0010 0011 0100)是页内偏移。通过页表查到页号1对应的页框号是3(二进制0011),物理地址就是0011 0010 0011 0100(0x3234)。
(二)分页的优点
- 几乎消除外部碎片:程序的页可以分散存储,只要有足够的页框就能装入,不会因为空闲块不连续而无法分配。
- 内存利用率高:页的大小固定(通常4KB-8KB),每个程序最后一个页即使没装满,浪费的空间也很小(最多一个页的大小),这叫"内部碎片",比连续分区的碎片问题好很多。
(三)分页的问题
- 页表占用内存:每个程序都需要页表,如果页表很大(比如64位系统),可能需要多级页表(比如二级页表、三级页表)来减少内存占用。
- 程序员无感知:分页是操作系统底层的机制,程序员不需要关心,所有地址转换由硬件和操作系统自动完成。
四、分段管理:从"逻辑模块"角度管理内存
(一)为什么需要分段?
分页解决了内存碎片问题,但它是从"物理内存划分"的角度设计的,而程序员写程序时更习惯按逻辑模块划分(比如代码段、数据段、堆栈段)。比如一个C程序包含main函数(代码段)、全局变量(数据段)、函数调用栈(堆栈段),分段管理就是把这些逻辑模块分别装入内存,每个段可以独立增长和共享。
(二)分段的核心概念
- 段:每个程序由若干个段组成,每个段有自己的名称(如代码段
.text
、数据段.data
)和长度。比如代码段可能有10KB,数据段可能有5KB。 - 段表:记录每个段的起始物理地址和长度。当程序访问逻辑地址(段号+段内偏移),首先检查段内偏移是否超过段长度(防止越界访问,比如数组下标越界),然后用段号找到段的起始地址,加上偏移得到物理地址。
(三)分段的优点
- 符合程序逻辑结构:程序员可以直观地理解内存布局,比如调试时知道代码段在哪个区域,数据段在哪个区域。
- 支持段的共享与保护:多个程序可以共享同一个代码段(比如共享C语言标准库),每个段可以设置访问权限(代码段只读,数据段可读写)。
(四)分段的缺点
- 外部碎片问题回归:每个段需要连续的内存空间,段与段之间可能产生碎片(类似动态分区管理的问题)。
- 段大小不固定:大段可能难以分配,小段可能浪费空间(但比连续分区好,因为程序可以分成多个小段)。
五、段页式管理:集大成者
(一)设计思想:分段+分页,取长补短
- 先分段,再分页:每个段被划分为若干个页,结合分段的逻辑模块化和分页的内存高效利用。
- 比如代码段分成3个页,数据段分成2个页,每个页装入页框,不需要连续。
- 地址结构:段号+段内页号+页内偏移。通过段表找到段对应的页目录表,再通过页表找到页框号,最后得到物理地址。
(二)地址转换过程(稍微复杂,但更灵活)
- 程序访问逻辑地址(段号S,段内逻辑地址A)。
- 通过段表找到该段的页目录表起始地址。
- 段内逻辑地址A分为页号P和页内偏移D。
- 通过页目录表和页表找到页框号F。
- 物理地址 = F×页大小 + D。
(三)优缺点
- 优点:
- 既有分段的逻辑清晰(支持模块划分、共享、保护),又有分页的内存高效(消除外部碎片,内部碎片少)。
- 适合大型程序和多任务系统(如Windows、Linux)。
- 缺点:
- 地址转换需要多次访问内存(段表+页表),为了加速,通常使用"快表"(TLB,高速缓存)来缓存最近访问的段页信息。
- 管理复杂度最高,需要维护段表和页表两级结构。
(四)实际应用
现代操作系统(如x86架构的Linux、Windows)普遍采用段页式管理,但为了简化,有时会让段的作用弱化(比如默认段号为0,只使用分页),但底层机制仍支持分段与分页的结合。
以上就是对本次关于操作系统博客内容的总结,后续我们将深入探讨操作系统更多知识。
我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的操作系统博客专栏
https://blog.csdn.net/2402_83322742/category_12916780.html?spm=1001.2014.3001.5482
非常感谢您的阅读,喜欢的话记得三连哦 |
相关文章:
计算机操作系统(十七)内存管理
计算机操作系统(十七)内存管理 前言一、内存的使用与程序重定位(一)内存是什么?(二)程序的重定位过程(三)总结:内存使用的核心问题 二、连续分区管理…...
Java 大视界 -- Java 大数据机器学习模型在金融市场高频交易策略优化与风险控制中的应用(327)
Java 大视界 -- Java 大数据机器学习模型在金融市场高频交易策略优化与风险控制中的应用(327) 引言:正文:一、Java 驱动的高频交易数据处理架构1.1 边缘 - 中心协同数据接入系统(SEC 17a-4 合规)1.2 多市场…...
Idea 项目远程开发 Remote Development
个人建议:Remote Development 使用体验不佳,不推荐。实际远程开发受限于网络通信速度,在开发时,基本无法SSH更新项目内容。 1. File -> Remote Development 2. New Connection Connect to SSH Connection 3. Project director…...
【驱动设计的硬件基础】CPLD和FPGA
在数字电路设计领域,CPLD(复杂可编程逻辑器件)和 FPGA(现场可编程门阵列)堪称 “变形金刚” 般的存在。它们既能像 ASIC(专用集成电路)一样实现硬件加速,又能通过软件编程快速迭代功…...
JavaScript中Object()的解析与应用
在JavaScript中,Object() 是一个基础构造函数,用于创建对象或转换值为对象类型。它既是语言的核心组成部分,也提供了一系列静态方法用于对象操作。以下是详细解析和应用示例: 一、Object() 的基本行为 作为构造函数(…...
Spring Cloud 微服务(负载均衡策略深度解析)
📌 摘要 在微服务架构中,负载均衡是实现高可用、高性能服务调用的关键机制之一。Spring Cloud 提供了基于客户端的负载均衡组件 Ribbon,结合 Feign 和 OpenFeign,实现了服务间的智能路由与流量分配。 本文将深入讲解 Spring Clo…...
从单体架构到微服务:微服务架构演进与实践
一、单体架构的困境与演进 (一)单体应用的初始优势与演进路径 在系统发展的初期,单体架构凭借其简单性和开发效率成为首选。单体应用将整个系统的所有功能模块整合在一个项目中,以单一进程的方式运行,特别适合小型系…...
Infineon AURIX TriCore TC3xx芯片内存专题报告
作者: DBGAUTOMAN 日期: 2025-06-28 摘要 本报告旨在深入分析Infineon AURIX TriCore TC3xx系列微控制器的内存架构。通过对官方技术文档的系统性研究,报告详细阐述了TC3xx的内存配置、架构设计、存储器技术特性、系统级内存管理以及性能优化策略,为相关技术开发和系统设计…...
WPF中获取主窗体
在WPF的MVVM模式中,通常不直接引用主窗体(MainWindow),而是通过依赖注入、事件聚合器或命令参数传递等方式实现逻辑解耦。以下是几种推荐方法: 方法1:依赖注入(推荐) 在ViewModel中…...
【龙泽科技】新能源汽车故障诊断仿真教学软件【吉利几何G6】
产品简介 新能源汽车故障诊断仿真教学软件是依托《全国职业院校技能大赛》“新能源汽车维修”赛项中“新能源汽车简单故障诊断与排除” 竞赛模块,自主开发的一款仿真教学软件。软件采用仿真技术模拟实际的新能源汽车故障诊断过程,主要通过对新能源汽车常…...
SpringBoot -- 以 jar 包运行(以及常见错误分析)
7.SpringBoot 以 jar 包运行 打包 在打包之前先要导入一个maven项目的打包插件,使用 springInitializr 创建的 maven 项目,已经自动导入了。如果没有需要手动导入。将下面代码,放进 Pom.xml 里面即可。 <build><plugins><p…...
求职招聘小程序源码招聘小程序搭建招聘小程序定制开发
身份:求职者、企业 求职者:完善简历,简历投递 企业:企业入驻,查看简历 企业会员:半年 、年度 权益:每日发布条数、刷新条数,简历下载数量 聊天:求职者可以和企业聊…...
Day44 预训练模型
目录 一、预训练的概念 二、常见的分类预训练模型 2.1 CNN架构预训练模型 2.2 Transformer类预训练模型 2.3 自监督预训练模型 三、图像预训练模型的发展史 四、预训练的策略 五、预训练代码实战:resnet18 六、尝试在cifar10对比alexnet 七、尝试通过ctrl进…...
【菜狗的记录】模糊聚类最大树、图神经网络、大模型量化——20250627
每日学习过程中记录的笔记,从各个网站整理下来,用于当日复盘。 如果其中的知识点能帮到你,也很荣幸呀。 -------------------------------------------------------20250622------------------------------------------------------------- …...
【Linux 设备模型框架 kobject 和 kset】
Linux 设备模型框架 kobject 和 kset 一、Linux 设备模型概述二、kobject 与 kset 的核心概念1. kobject2. kset3. 关键数据结构 三、kobject 与 kset 的实现源码四、源码解析与使用说明1. kset 的创建与初始化2. kobject 的创建与属性3. sysfs 属性操作4. 用户空间访问示例 五…...
leetcode.2014 重复k次的最长子序列
题目描述 解题思路 这一题本来在想怎么样做才能获得通用解,因为乍一看总感觉遍历的时间代价会非常高。直到后面看到提示: 提示里面专门包含了一个n < k * 8,这太反常了。后面仔细一想,有道理,最后答案的字符个数一定…...
机器学习3——参数估计之极大似然估计
参数估计 问题背景: P ( ω i ∣ x ) p ( x ∣ ω i ) P ( ω i ) p ( x ) p ( x ) ∑ j 1 c p ( x ∣ ω j ) P ( ω j ) \begin{aligned} & P\left(\omega_i \mid \mathbf{x}\right)\frac{p\left(\mathbf{x} \mid \omega_i\right) P\left(\omega_i\right)…...
利用python实现NBA数据可视化
大家好,今天我们利用python爬取NBA球星每年的比赛数据并进行可视化展示。主要用到三个模块:xpath、matplotlib。其中xpth负责爬取网站上的信息。Matplotlib是Python开发人员常用的Python绘图库,可以用来绘制各种2D图形,具有绘图质…...
杭州西湖断桥不断:3D扫描还原‘残雪‘视觉骗局
“断桥残雪”是西湖十景之一,所谓“视觉骗局”指的是在特定条件下,从远处看断桥仿佛断开的奇妙视觉效果。利用3D扫描技术还原这一效果可按以下步骤进行: 数据采集 3D扫描断桥:使用高精度的3D激光扫描仪对断桥及其周边环境进行全面…...
Dubbo服务调用超时问题解决方案
Dubbo服务调用超时问题解决方案 Dubbo服务调用超时通常由网络延迟、服务端性能瓶颈、配置不当或资源竞争引发。以下解决方案基于根本原因分类,优先采用高可信度实践: 🔍 一、排查问题根源 网络诊断 使用 ping、telnet 检查服务提供者网络连…...
视觉疲劳检测如何优化智能驾驶的险情管理
视觉分析疲劳检测在智能驾驶中的应用研究 一、背景与需求 近年来,智能驾驶领域因疲劳驾驶引发的交通事故频发,如2025年某品牌智能汽车因驾驶员疲劳导致高速追尾事件,暴露了现有技术对复杂场景的适应不足。传统疲劳检测依赖单一生理信号或车…...
C++ 第三阶段 并发与异步 - 第二节:异步任务(std::async)
目录 一、std::async 概述 1. std::async 的定义 二、std::async 的基本用法 1. 基本语法 (1) 函数调用 (2) Lambda 表达式 三、执行策略详解 1. std::launch::async 2. std::launch::deferred 3. 默认策略(std::launch::any) 四、std::futur…...
OpenCV图像添加水印
一、前言 在数字图像处理中,为图片添加水印是一项常见且重要的技术。无论是版权保护、品牌宣传还是防止未经授权的使用,水印都能发挥重要作用。OpenCV作为一款强大的计算机视觉库,提供了丰富的功能来实现各种水印效果。本教程将详细介绍如何…...
Linux信号机制:从入门到精通
嘿,小伙伴们!今天我要和大家聊一个Linux系统中非常有趣又重要的话题——信号机制。别担心,虽然信号听起来有点高深,但我会用最通俗易懂的语言,配合清晰的图表,带你彻底搞懂这个概念! 什么是信号…...
EXCEL数据报表
客单价成交金额*成交客户数 —— 提取年份 YEAR() 视图-窗口-新建窗口,就能将excel的一个子表格单拎出来成为独立窗口,方便对比查看 数据报表的单元格尽量都用公式来填补,链接到源表上去。这样当源表有新数据更新进来后,报表也…...
openGL学习(VAO和VBO)
理论 VBO void prepare() {//创建一个VBO,但是还没有分配显存GLuint vbo 0;GL_CALL( glGenBuffers(1, &vbo));cout << "vbo " << vbo << endl;//销毁一个VBOGL_CALL(glDeleteBuffers(1, &vbo));cout << "delete vbo "…...
【请关注】制造企业机械加工数据脱敏解决方案
制造企业机械加工数据脱敏解决方案 一、方案概述 在制造企业尤其是机械加工领域,数字化转型带来了生产效率的大幅提升,大量生产数据、设备运行数据、供应链数据以及客户订单数据等成为企业发展的关键驱动力。然而,这些数据中包含众多敏感信息,如客户定制产品的设计图纸(…...
2025.6.27总结
最近工作又开始内耗了,一位同事的转岗直接让我破防了,明明他工作干得很不错,会得又多,性格又好,我还经常请教他业务上的问题。我和他的关系并不算太好,但他加入其他部门,竟然让我有些不舍&#…...
Python打卡:Day38
知识点回顾: Dataset类的__getitem__和__len__方法(本质是python的特殊方法)Dataloader类minist手写数据集的了解 浙大疏锦行...
Ubuntu18.04/Mysql 5.7 建立主备模式Mysql集群
一、数据库的安装 详见https://www.jianshu.com/p/5073177eedf2 本文实验环境为阿里云的两台ubuntu18.04服务器: master ip: 172.26.138.7 slave ip: 172.26.0.209 二、修改Master的配置(# 的行是我后增加的部分): 编辑 /etc/mysql/mysql.conf.d/mysqld.…...
Linux journal 日志大小限制与管理详解
文章目录 Linux journal 日志大小限制与管理详解journal 日志的默认存储位置journal 日志大小限制配置查看当前日志占用情况手动清理日志文件按大小清理日志按时间清理日志按文件数清理日志 journald 日志机制原理简析(适当加点原理)日志筛选与导出技巧&…...
Linux基本指令篇 —— tac指令
tac 是 Linux 系统中一个非常实用的文本处理命令,它是 cat 命令的反向操作(名称也是 "cat" 的反写)。tac 是一个简单但功能强大的工具,特别适合需要反向处理文本数据的场景: 目录 一、基本功能 二、基本语法…...
【Yonghong 企业日常问题08 】永洪BI的Apache Tomcat版本升级指南
文章目录 前言操作步骤登录验证 前言 某公司业务永洪BI系统使用tomcat 9.0.97版本,接到总公司漏洞扫描整改要求需要将tomcat版本升级到9.0.97以上。 目标:tomcat 9.0.97》 9.0.98 1、下载tomcat所需要的版本 地址:https://tomcat.apache.org/download-…...
动手学Python:从零开始构建一个“文字冒险游戏”
动手学Python:从零开始构建一个“文字冒险游戏” 大家好,我是你的技术向导。今天,我们不聊高深的框架,也不谈复杂的算法,我们来做一点“复古”又极具趣味性的事情——用Python亲手打造一个属于自己的文字冒险游戏&…...
【C/C++】C++26新特性前瞻:全面解析未来编程
展望未来:C26 新特性全面解析 随着 C 标准每三年一次的迭代节奏,C26(预计于 2026 年底正式发布)正在逐步成型。相比 C20 的革命性更新和 C23 的“修补增强”,C26 继续推进现代 C 的理念——更安全、更高效、更模块化&…...
Linux系统日志与守护进程开发实战指南
Linux系统日志与守护进程开发实战指南 系统日志与守护进程 ├── 系统日志syslog │ ├── 日志路径: /var/log/syslog │ └── 核心API │ ├── openlog │ ├── syslog │ └── closelog └── 守护进程daemon└── 创建步骤├── um…...
兰洋科技上合组织论坛发表专题分享,全球液冷布局引领绿色算力未来
2025年6月17-19日,中国—上海合作组织数字技术合作发展论坛在新疆克拉玛依市举办。作为第四次上海合作组织成员国信息通信技术发展部门负责人会议的配套会议,论坛以“数字化转型助力可持续发展,数字包容促进上合共同繁荣”为主题,…...
桌面小屏幕实战课程:DesktopScreen 11 SPI 水墨屏
飞书文档https://x509p6c8to.feishu.cn/docx/doxcnlzpIgj3gosCZufBTCZxlMb SPI说明 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上占用…...
小知识点五、无刷电机闭环控制(电流)
0 前言 该部分只用于自学使用,作为笔记方便后续自查。 资料参考:http://dengfoc.com 硬件:2208云台电机MT6701磁编码器 1 电流控制理论 1.1 待解决的问题 简单回顾一下在之前的学习中,我们通过 U q U_q Uq和电角度 θ \the…...
Java 编程之备忘录模式
前言 有时候,我们真希望人生能有“CtrlZ”。在日常生活中,我们经常使用“撤销”功能,例如在写 Word、画图、写代码时一不小心操作失误,就希望能回到之前的状态。这种**“状态快照 恢复”**机制,在设计模式中就叫做&a…...
SQL SERVER存储过程
什么是存储过程 SQL 存储过程(Stored Procedure)是一个在数据库中预编译并存储的一组 SQL 语句。它们可以包含查询、插入、更新、删除等数据库操作,甚至包括控制流语句(如条件判断、循环等)。存储过程可以通过调用来执…...
Vue样式绑定与条件渲染详
一、Vue样式绑定 在Vue中,我们可以通过多种方式动态地绑定样式,让界面根据数据状态变化而自动更新样式。 1. class样式绑定 (1) 字符串写法 适用场景:样式的类名不确定,需要动态指定 <template><div><!-- 绑定…...
python基于协同过滤的动漫推荐系统
目录 技术栈介绍具体实现截图系统设计研究方法:设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理,难度适中…...
光场操控新突破!3D 光学信息处理迎来通用 PSF 工程时代--《自然》子刊:无需复杂算法,这一技术让 3D 光学成像实现 “即拍即得”念日
导语 在光学成像领域,如何突破分辨率与成像速度的瓶颈,一直是科研人员探索的焦点。近日,加州大学洛杉矶分校(UCLA)的研究团队在《Light: Science & Applications》发表论文,提出了一种通用点扩散函数&a…...
ubuntu20.04如何给appImage创建快捷方式
ubuntu20.04如何给appImage创建快捷方式 1. 确保AppImage是可执行的 chmod x /path/to/your/appimage2. 创建.desktop文件 在~/.local/share/applications/目录下创建一个新的 .desktop 文件: vi ~/.local/share/applications/your-appname.desktop添加以下内容…...
网络安全之SQL RCE漏洞
引言 堡垒机(Bastion Host),也称为跳板机或运维安全审计系统,是一种用于管理和控制对内部网络资源访问的安全设备。它的主要作用是作为运维人员访问内部服务器和网络设备的唯一入口,通过集中化的身份认证、权限管理和…...
DeepSeek网页版随机点名器
用DeepSeek帮我们生成了一个基于html5的随机点名器,效果非常棒,如果需要加入名字,请在代码中按照对应的格式添加即可。 提示词prompt 帮我生成一个随机点名的HTML5页面 生成真实一点的名字数据 点击随机按钮开始随机选择 要有闪动的效果 &…...
Elasticsearch索引字段的类型
在 Elasticsearch 中,索引字段的类型(即 Mapping 中的字段类型)对搜索和存储性能影响很大。下面是各种常用数据类型的用途及推荐使用场景总结: 1. keyword 类型(精确匹配) 适合数据: 不需要分词…...
大模型在慢性病毒性肝炎预测及诊疗方案制定中的应用研究
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、慢性病毒性肝炎概述 2.1 疾病定义与分类 2.2 发病机制与病理特征 2.3 流行病学现状 三、数据收集与预处理 3.1 数据来源 3.2 数据清洗 3.3 特征工程 四、大模型选择与构建 4.1 模型选择依据 4.2 模型…...
DAY 43 复习日
浙大疏锦行https://blog.csdn.net/weixin_45655710 第一步:寻找并准备图像数据集 在Kaggle等平台上,你可以找到大量用于图像分类任务的数据集,例如英特尔图像分类数据集 (Intel Image Classification) 或手写数字识别数据集 (Digit Recogni…...