[OS] vDSO + vvar(频繁调用的处理) | 存储:寄存器(高效)和栈(空间大)| ELF标准包装规范(加速程序加载)
vDSO + vvar
一、社区公告板系统(类比 vDSO + vvar)
想象你住在一个大型社区,管理员(内核)需要向居民(用户程序)提供实时信息(如天气预报、社区活动时间等)。直接让每个居民频繁敲门询问管理员效率低下(系统调用开销),于是社区设计了一个公告板系统:
- 公告板(vDSO)
-
- 功能:张贴最新信息(如时间、天气),居民无需敲门即可自行查看
- 特点:包含查看信息的说明手册(用户态函数,如
__vdso_gettimeofday
) - 对应技术:
vDSO
是内核映射到用户空间的代码库,提供无需系统调用的函数接口
- 数据更新区(vvar)
-
- 功能:管理员在此区域更新数据(如校正时钟),居民无权直接修改
- 特点:只读且受保护(内核特权区域),数据通过公告板间接访问
- 对应技术:
vvar
是内核映射的只读数据区,存储时间戳等敏感信息
二、实例解析:获取当前时间
假设你想知道当前时间(调用 gettimeofday
),流程如下:
- 传统方式(无 vDSO)
👉 每次都要敲门找管理员(系统调用)→ 耗时且频繁打扰管理员(上下文切换开销) - vDSO + vvar 优化方式
👉 步骤一:查看公告板上的手册(vDSO
中的__vdso_gettimeofday
函数)
👉 步骤二:按手册指引读取数据更新区(vvar
中的时间戳)
👉 步骤三:自行计算结果,全程无需敲门(无系统调用)
通过 vDSO 直接访问 vvar 数据
// 用户程序调用(伪代码)
struct timeval tv;
__vdso_gettimeofday(&tv, NULL); // 通过 vDSO 直接访问 vvar 数据
频繁调用的处理:之后我们要是做什么模块,也存在频繁调用的话,也可以将它封装为一个函数,进行调用时的单独数据获取
三、技术原理与生活场景映射
生活场景 | 技术实现 | 关键作用 |
公告板上的说明手册 |
| 提供数据访问方法 |
数据更新区的时钟 |
| 存放内核维护的实时信息 |
管理员定期校正时钟 | 内核更新 | 保证数据准确性 |
居民无权修改公告板 |
| 防止用户篡改敏感数据 |
四、总结
vDSO
和 vvar
的协作
- 效率提升:避免频繁打扰管理员(减少系统调用)
- 安全性:居民只能读取预设信息(内核控制数据更新)
- 透明性:用户调用标准函数(如 VDSO
gettimeofday
),无需感知底层实现
通过这种设计,Linux 内核为高频但低权限的操作(如时间查询)提供了接近用户态函数的性能。
寄存器和栈
一、场景设定:厨房工作台(寄存器)与储物架(栈)
假设你正在厨房准备一道复杂菜品(执行程序),需要管理食材和工具:
- 操作台(寄存器)
-
- 特点:空间小(仅能放3-4件物品),但取用极快(伸手即得)
- 用途:存放 当前正在使用的食材和工具(如正在切的蔬菜、手中的刀)
- 对应技术:寄存器是CPU内部的高速存储单元,直接参与运算(如
EAX
存运算结果)
- 储物架(栈)
-
- 特点:空间大(多层架子),但存取需按顺序(后放的物品先取)
- 用途:临时存放 阶段性用完但稍后还需使用的物品(如切好的洋葱、焯水后的肉)
- 对应技术:栈是内存中的数据结构,用于保存函数调用时的临时变量和返回地址
二、核心区别对比
特性 | 寄存器(操作台) | 栈(储物架) |
容量 | 极小(3-4个寄存器) | 较大(取决于内存) |
速度 | 纳秒级(CPU直接访问) | 微秒级(需通过内存总线 |
数据生命周期 | 短暂(仅当前指令使用) | 较长(跨函数调用) |
管理方式 | 由编译器硬性分配 | 自动压入/弹出(LIFO) |
典型用途 | 存储指令操作数、地址 | 保存函数参数、返回地址、局部变量 |
三、扩展案例:多人协作(多线程)
假设厨房有多个厨师(多线程):
- 每个厨师有自己的操作台(寄存器组):线程私有,互不干扰
- 共享储物架(堆内存):存放公共食材(全局变量),但需协调使用(加锁)
四、总结:为什么需要两种存储?
- 效率优先:寄存器提供闪电般的操作速度,适合高频数据(如循环计数器)
- 灵活性需求:栈支持动态深度的函数调用和临时数据保存(如递归)
- 资源分层:CPU与内存的速度差异决定了分层存储的必要性
通过这种设计,计算机既能高效处理即时运算(寄存器),又能灵活管理复杂任务流程(栈)
ELF
一、ELF文件:智能快递包裹
想象你要从上海寄送一个特殊包裹到北京,这个包裹需要自动组装零件、适配不同运输工具,还能在目的地自动激活功能。
ELF文件就是这样一个智能包裹:
- 包裹清单(ELF头)
-
- 包含发件人/收件人信息(操作系统类型)、包裹总重量(文件大小)、组装说明(程序入口地址)
- 类比:ELF头的
e_type
字段标识包裹类型(可执行文件/共享库等),就像快递单上的"文件类"标记
- 分装策略(程序头表 & 节头表)
-
- 程序头表:指导快递员如何分装包裹到不同车厢(内存段),例如易碎品放防震区(代码段只读)、液体单独包装(数据段可写)
- 节头表:详细列出每个小包裹的内容(.text节是机器指令,.data节是初始化数据),就像包裹内的物品清单[
- 动态组装能力(共享库)
包裹中的某些零件(如.so文件)允许在运输途中按需组合,类似乐高积木模块化设计(动态链接)
二、计算机存储体系:物流仓库系统
计算机存储可以类比为多层级的物流中心,每个层级的速度和容量呈金字塔分布:
╔═══════════╗║ CPU寄存器 ║ ← 操作台(直接加工食材,纳秒级)╚═══════════╝▲╔════════════════════╗║ L1/L2缓存 ║ ← 厨房储物柜(存放常用调料,微秒级)╚════════════════════╝▲╔══════════════════════╗║ 内存 ║ ← 餐厅仓库(存放当日食材,毫秒级)╚══════════════════════╝▲╔══════════════════════════╗║ 磁盘/SSD ║ ← 城市中央冷库(长期存储,秒级)╚══════════════════════════╝
各层级特性对比:
存储层级 | 类比场景 | 访问速度 | 容量 | 作用 |
寄存器 | 厨师手中的刀具(直接使用) | 1纳秒 | 几十字节 | 暂存当前计算的中间结果 |
缓存 | 厨房备料台(常用食材) | 10纳秒 | MB级 | 缓存热点数据 |
内存 | 餐厅冷藏柜(当日食材) | 100纳秒 | GB级 | 运行中的程序和数据 |
磁盘 | 城市冷链中心(长期存储) | 10毫秒 | TB级 | 持久化存储ELF等文件 |
我们可以发现暂存的读取快,持久化的读取慢
感觉硬件也是可以印证软件的《没有银弹-软件工程的本质与偶然》
三、ELF在存储体系中的旅程
以运行 ls
命令为例:
- 冷库提取(磁盘→内存)
系统从/bin/ls
读取ELF文件,就像从冷库调取预制菜到厨房(内存加载) - 拆包分装(程序头表解析)
根据程序头表将代码段(.text)装入只读区,全局变量(.data)放入可写区,类似按标签分装食材到不同储物格 - 实时烹饪(寄存器→缓存)
CPU将频繁使用的指令缓存到L1(如循环计数),就像厨师将常用调料放在手边 - 动态调味(共享库加载)
运行时加载libc.so等共享库,类似临时从中央厨房调用特色酱料包(动态链接)
四、扩展:ELF与核心转储
当程序崩溃时,系统会生成"事故现场快照"(core dump),这相当于:
- 物流公司对破损包裹进行X光扫描(记录内存状态)
- 生成详细的损坏报告(寄存器值、堆栈跟踪)
- 这些数据以ELF格式存储,供工程师(调试器)分析事故原因
五、总结:存储体系的协同
- 效率分层:高频数据在顶层(寄存器),低频数据在底层(磁盘),类似物流系统分级管理
- 格式统一:ELF作为标准包装规范,确保不同层级的"货物"能无缝流转
- 动态适应:通过链接视图(快递分装)和执行视图(运输使用)的分离,实现灵活部署[5]
这种设计使得计算机既能闪电般执行指令,又能管理海量数据。
《程序员的自我修养:链接、装载与库》
一、ELF 标准包装规范的核心设计
假设某物流公司推出一款 「ELF 智能环保快递箱」,其设计规范体现了以下原则:
- 材料标准化
-
- 生活实例:箱体必须使用可降解塑料(类似网页4中食品托盘的热压树脂材料),厚度≥0.5mm以保证抗压性
- 技术映射:ELF 标准中材料参数明确如网页2的塑料瓶企业标准,确保不同批次产品性能一致
- 结构分层防护
-
- 生活实例:内部分为代码区(硬质隔层存放电子产品)、数据区(防震泡沫存放易碎品)、动态链接区(可拆卸模块存放配件)
- 技术映射:类似ELF文件的分段装载设计(网页8的Android ELF文件结构),不同区域对应不同保护等级
- 标识规范
-
- 生活实例:包裹外侧必须印刷可回收标志、净含量、生产批次(如网页12要求印刷面积≤50%)
- 技术映射:ELF文件头包含魔数标识"7F 45 4C 46"),如同快递单上的二维码
二、操作流程规范
以工厂包装流水线为例:
- 预处理阶段
👉 质检:核对产品型号与订单一致性
👉 分类:按ELF标准将货物分为可执行件(精密仪器)、共享库(通用配件)、重定位件(组装零件) - 包装阶段
防震层填充 → 真空密封 → 智能标签写入(包含ELF格式的物流追踪码)
-
- 规范要点:每层包装需记录操作员ID(如同ELF节头表的调试信息
- 动态优化
👉 根据运输工具自动调整包装结构(如海运加强防潮层,空运减轻重量)
👉 类似ELF动态链接库按需加载
三、安全与环保要求
维度 | 生活实例 | 技术实现 |
防篡改 | 封箱胶带内置隐形流水号 | ELF文件的哈希校验段 |
循环利用 | 回收箱体自动清洁消毒 | 共享库热替换机制 |
减量化 | 根据物品体积自适应装箱 | ELF文件压缩节 |
四、扩展:ELF 标准与计算机存储的关联
ELF 包装规范的设计理念源于计算机系统的分层存储思想
- 快速响应层:包裹面单信息(寄存器级访问)
- 缓冲层:物流中转站缓存(内存级调度)
- 持久层:区域仓储中心(磁盘级存储)
这种多级协作模式,使得从上海发往纽约的包裹能像ELF程序加载般高效:
磁盘读取ELF头 → 内存加载代码段 → 寄存器执行指令
↓ ↓ ↓
仓库调拨 → 干线运输 → 最后一公里配送
五、总结:标准化带来的价值
- 效率提升:统一包装规格使自动化分拣成为可能(如同ELF文件加速程序加载)
- 成本控制:材料用量标准化减少浪费
- 环保合规:通过降解周期参数实现碳足迹追踪
相关文章:
[OS] vDSO + vvar(频繁调用的处理) | 存储:寄存器(高效)和栈(空间大)| ELF标准包装规范(加速程序加载)
vDSO vvar 一、社区公告板系统(类比 vDSO vvar) 想象你住在一个大型社区,管理员(内核)需要向居民(用户程序)提供实时信息(如天气预报、社区活动时间等)。直接让每个居…...
SQL刷题日志(day1)
1、substring_index(截取字符串) 参数说明: profile:要处理的字符串字段。,:分隔符。-1:表示从字符串的右侧开始截取,第一个出现的分隔符后面的所有内容。 SELECT SUBSTRING_INDEX(profile, ,…...
爬虫:一文掌握 curl-cffi 的详细使用(支持 TLS/JA3 指纹仿真的 cURL 库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、curl-cffi 概述1.1 curl-cffi介绍1.2 主要特性1.3 适用场景1.4 使用 curl-cffi 的注意事项1.5 与 requests 和 pycurl 对比1.6 curl-cffi 的安装二、基本使用2.1 同步请求2.2 异步请求三、高级功能3.1 模拟浏览器指…...
前端开发基础:HTML 与 CSS 入门详解
目录 一、HTML 基础 (一)HTML 概述 (二)HTML 标签 标签分类 常用标签详解 (三)HTML 注释 二、CSS 样式 (一)CSS 概述 (二)CSS 引入方式 ࿰…...
实时语音交互数字人VideoChat,可自定义形象与音色,支持音色克隆,首包延迟低至3s
简介 实时语音交互数字人,支持端到端语音方案(GLM-4-Voice - THG)和级联方案(ASR-LLM-TTS-THG)。用户可通过麦克风或文本输入,与数字人进行语音或视频交互。 目前支持的功能 支持自定义形象TTS模块添加音…...
25.OpenCV中的霍夫圆变换
OpenCV中的霍夫圆变换 在图像处理与计算机视觉中,圆形检测是一项常见的任务,应用场景包括车牌识别、瞳孔检测、交通标志识别等。霍夫圆变换(Hough Circle Transform)是一种高效且鲁棒的算法,通过在参数空间中寻找局部…...
OpenTiny使用指南
最近项目里用到了一个新的组件库——OpenTiny,但是官方文档的使用指南的描述很复杂,花了一些时间尝试才正常使用。下面是一个使用步骤的描述,可放心食用: 一、安装 TinyVue 组件库同时支持 Vue 2.0 和 Vue 3.0 框架,…...
Uniapp: 大纲
目录 一、基础巩固1.1、Uniapp:下拉选择框ba-tree-picker 二、项目配置2.1、Uniapp:修改端口号2.2、Uniapp:本地存储 一、基础巩固 1.1、Uniapp:下拉选择框ba-tree-picker 二、项目配置 2.1、Uniapp:修改端口号 2.2、Uniapp:本…...
A2A协议实现详解及示例
A2A协议概述 A2A (Agent2Agent) 是Google推出的一个开放协议,旨在使AI智能体能够安全地相互通信和协作。该协议打破了孤立智能体系统之间的壁垒,实现了复杂的跨应用自动化。[1] A2A协议的核心目标是让不同的AI代理能够相互通信、安全地交换信息以及在各…...
HTTP协议入门
文章目录 1. 概述2. 请求协议2.1 Get 方式请求协议2.2 POST 方式的请求2.3 获取请求数据 3. 响应协议3.1 响应数据格式3.2 设置响应数据 1. 概述 概念 :Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则…...
远程控制Android手机(web-scrcpy)
最近有web远程查看和控制Android手机的需求,研究了一下scrcpy,发现还是比较容易实现远程控制,所以自己就用flask写了一个web远程控制的scrcpy,算是推荐一下自己的作品,作品地址:https://github.com/baixin1…...
在AWS EC2上部署网站的完整步骤指南
本文详细介绍如何从零开始在AWS EC2实例上部署静态/动态网站,涵盖实例创建、安全组配置、环境搭建及域名绑定等关键步骤。 一、准备工作 AWS账号:访问 AWS官网 注册账号并完成信用卡绑定 本地工具: SSH客户端(Mac/Linux自带终端&…...
CentOS下,Xftp中文文件名乱码的处理方式
乱码原因 中文版Windows默认使用GBK编码,现代Linux发行版(如CentOS、Ubuntu等)默认使用UTF-8编码。Windows下正常的编码,可能在linux下无法识别,例如:Windows的GBK字节0xD6D0被Linux用UTF-8解码时…...
Linux vagrant 导入ubuntu到virtualbox
前言 vagrant 导入ubuntu虚拟机 前提要求 安装 virtualbox 和vagrant<vagrant-disksize> (Linux 方式 Windows 方式) 创建一键部署ubuntu虚拟机 /opt/vagrant 安装目录/opt/VirtualBox 安装目录/opt/ubuntu22/Vagrantfile (可配置网络IP,内存…...
2025高频面试算法总结篇【动态规划】
文章目录 直接刷题链接直达编辑距离最长回文子串完全平方数最长递增子序列正则表达式匹配零钱兑换鸡蛋掉落单词拆分 直接刷题链接直达 动态规划(Dynamic Programming, DP)是一种通过拆解子问题并利用子问题的最优解来构建整体问题的最优解的方法&#x…...
FPGA_UART
1.UART 概述 (通用异步收发传输器) 1. 基本定义 UART(Universal Asynchronous Receiver/Transmitter)是一种常见的串行通信协议,用于在设备间通过异步串行通信传输数据。它不依赖独立的时钟信号,而是通过预…...
绿算轻舟系列FPGA加速卡:驱动数字化转型的核心动力
在数字化浪潮席卷全球的今天,算力已成为推动企业创新和行业升级的核心引擎。绿算轻舟系列FPGA加速卡凭借其高性能、低延迟、高能效比的独特优势,正成为各领域智能化转型的“隐形加速器”。它以灵活的硬件架构和强大的并行计算能力,为复杂场景…...
gitee基本使用
git实用手册 git全局设置 git config --global user.name "yourname" git config --global user.email "youremail"推代码时的账号(email) 版本回退 git loggit reset –hard <码>git push -f HTTPS步骤(上传) 拉取项目 1、新建一个…...
最短路径介绍
最短路径是图论中的算法,下面将列举几个常见的算法: 🚗 一、单源最短路径(一个起点到所有点) 1. Dijkstra 算法 适用图:非负权图(不能有负权边) 思路:贪心 最小堆&am…...
VRRP 基础全解析:从结构到配置
目录 VRRP基本概述 VRRP基本结构 状态机 编辑 负载分担 (多个VRRP) VRRP基本概述 VRRP能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现网关的备份。协…...
【NIO番外篇】之组件 Buffer
目录 一、Buffer:数据界的“快递小哥”/“临时仓库管理员” 😉什么是 Buffer?它的作用是什么? 二、Buffer 的“三围”和“书签”📌:核心属性1. Capacity (容量):2. Position (位置):…...
Python基础知识(一、基础语法)
Python基础知识(一、基础语法) 字面量注释单行注释多行注释 变量数据类型数据类型查看数据类型转换 标识符命名规范不可使用关键字 运算符算数运算符赋值运算符 字符串字符串的定义方式字符串拼接占位拼接数字精度控制快速格式化 数据输入逻辑运算比较运…...
C语言题目自增在前与在后
一、题目引入 谨记真言: i的值最终都会改变 只是表达式的值不同 二、分析题目 if判断语句里面要条件为真执行时 printf语句 i 变量在前 使用i的当前值是1 i的值就是1与1相等 所以&&左边的为真 但是&&存在 必须前后都为真才为真 所以还要看&&后面…...
【口腔粘膜鳞状细胞癌】文献阅读
写在前面 看看文章,看看有没有思路 文献 The regulatory role of cancer stem cell marker gene CXCR4 in the growth and metastasis of gastric cancer IF:6.8 中科院分区:1区 医学WOS分区: Q1 目的:通过 scRNA-seq 结合大量 RNA-seq 揭示癌症干细胞…...
如何撤回刚提交的 commit
如何撤回刚提交的 commit 如果刚刚执行了 git commit 但想撤销这个提交,有几种方法可以实现,具体取决于你想达到的效果: 1. 撤销 commit 但保留更改(修改回到暂存区) git reset --soft HEAD~1这会撤销最后一次提交提…...
deepin使用autokey添加微信快捷键一键显隐ctrl+alt+w
打开deepin商店,搜索快捷键,找到autokey 快捷键管理,点击安装 点击右键新建文件夹 点击右键新建脚本 打开脚本并添加以下内容 import subprocess import time# ------------------ 配置项 ------------------ WM_CLASS "wechat…...
开源微调混合推理模型:cogito-v1-preview-qwen-32B
一、模型概述 1.1 模型特点 Cogito v1-preview-qwen-32B 是一款基于指令微调的生成式语言模型(LLM),具有以下特点: 支持直接回答(标准模式)和自我反思后再回答(推理模式)。使用 I…...
【uniapp-兼容性处理】swiper在iOS上偶发出现后几张图片白屏情况
【日期】2025-04-14 【问题】 swiper在iOS上偶发出现后几张图片白屏情况 swiper内部的几个swiper-item垂直排列,各自进行滚动,样式方面兼容性出现问题 【原因】: 原代码:(不应在swiper-item添加style属性…...
go中new和make有什么异同?
相同点:都是给变量分配内存 不同点: 作用类型不同。new通常给int、string、数组类型的变量分配内存,而make通常给slice、map、channel分配内存。返回值类型不同。new返回指向变量的指针,make返回的是变量本身new分配内存空间后&…...
RabbitMQ 深度解析:从基础到高级应用的全面指南
🐰 RabbitMQ 深度解析:从基础到高级应用的全面指南 前言📘 一、RabbitMQ 简介⚙️ 二、核心特性可靠性 🔒灵活路由 🔄高可用性 🌐多协议支持 🌍多语言客户端 💻插件机制 ὐ…...
动手强化学习之马尔可夫决策(机器人篇)
1 马尔可夫决策过程 马尔可夫决策过程(Markov Decision Process, MDP)是一种数学框架,用于建模智能体(agent)在随机环境中做决策的问题。它假设环境的状态转换具有马尔可夫性质,即未来的状态只依赖于当前状…...
【RabbitMQ】核心概念和工作流程
文章目录 RabbitMQ 工作流程流程图 Producer 和 ConsumerConnecting 和 ChannelVirtual hostQueueExchangeRabbitMQ 工作流程 RabbitMQ 工作流程 流程图 RabbitMQ 就是一个生产者/消费者模型 Producer 就是生产者、Consumer 就是消费者Broker 是 RabbitMQ 服务器生产者和消费…...
Windows 操作系统 - Windows 10 磁盘管理无法为 C 盘选择扩展卷
Windows 10 磁盘管理无法为 C 盘选择扩展卷 在 Windows 10 的磁盘管理中,无法为 C 盘选择扩展卷(选项灰色不可用),主要原因是未分配空间没有紧邻 C 盘的右侧 补充:Windows 10 磁盘管理打开方式 1. 按下快捷键【Win …...
数据结构——双向链表
首先我们要介绍一下链表的分类 链表的分类 链表说明: 虽然有这么多种链表结构,但是我们实际中用的还是两种结构:单链表(单向不带头不循环)和 双向带头循环链表 。 单链表(单向不带头不循环)&…...
Git报错remote: Verify fatal: Authentication failed for ***
解决 Git 拉取代码时报错:fatal: Authentication failed 在使用 Git 时,执行如下命令: git pull origin master出现报错: remote: Verify fatal: Authentication failed for ***一、问题原因分析 1. 使用 HTTP 协议访问&#…...
八、自动化函数
1.元素的定位 web自动化测试的操作核心是能够找到页面对应的元素,然后才能对元素进行具体的操作。 常见的元素定位方式非常多,如id,classname,tagname,xpath,cssSelector 常用的主要由cssSelector和xpath 1.1 cssSelector选择器 选择器的功能&#x…...
websoket 学习笔记
目录 基本概念 工作原理 优势 应用场景 HTTP协议与 webSoket协议之间的对比 消息推送场景 1. 轮询(Polling) 2. 长轮询(Long Polling) 3. 服务器发送事件(Server-Sent Events, SSE) 4. WebSocket…...
正版金币捕鱼海洋管家APP源码结构解析与运行环境说明
这是一款基于成熟运营逻辑开发的休闲类互动娱乐游戏《海洋管家》,采用金币流通体系,双端源码完整,结构清晰,适合用于结构学习、本地部署测试或功能参考。 整体玩法围绕捕鱼为主线,并融合了排行榜、VIP、签到、道具商城…...
大语言模型深度思考与交互增强
总则:深度智能交互的全面升级 在主流大语言模型(LLM)与用户的每一次交互中,模型需于回应或调用工具前,展开深度、自然且无过滤的思考进程。当模型判断思考有助于提升回复质量时,必须即时进行全方位的思考与…...
Vue.js 项目中 vue.config.js 常用配置项解析
Vue.js 项目中 vue.config.js 常用配置项解析 摘要 在 Vue CLI 创建的项目中,vue.config.js 是核心配置文件,用于定制化构建、开发和部署流程。本文详细解析了该文件的常用配置项,包括基础路径、开发服务器、Webpack 配置、CSS 预处理、插件…...
Javascript逗号操作符
这段代码是一个使用了生成器函数(Generator Function)的无限循环(for (;;)),内部通过switch语句控制流程。代码中有很多逗号分隔的语句,这其实是利用了JavaScript的逗号操作符(comma operator&a…...
windows系统安装驱动、cuda和cudnn
一、首先在自己的电脑里安装了nvidia的独立显卡 显卡的查找方式: CtrlShiftEsc打开任务管理器,点击性能,点击GPU 0查看显卡型号,如下图所示: 只要电脑中有nvidia的独立显卡,就可以暗转显卡驱动、cuda和cu…...
常见的 14 个 HTTP 状态码详解
文章目录 一、2xx 成功1、200 OK2、204 No Content3、206 Partial Content 二、3xx 重定向1、301 Moved Permanently2、302 Found3、303 See Other注意4、Not Modified5、307 Temporary Redirect 三、4xx 客户端错误1、400 Bad Request2、401 Unauthorized3、403 Forbidden4、4…...
DAY 44 leetcode 28--字符串.实现strStr()
题号28 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 我的解法 双指针,slow定位&…...
Nginx用途以及好处:
反向代理: 1、提高访问速度 2、进行负载均衡:所谓负载均衡,就是把大量的请求按照我们指定的的方式均衡的分配给集群中的每台服务器(不使用nginx前端会固定的访问某一台服务器 加入nginx分配到多台服务器) 3、保证后端的安全 服务器一般部署在…...
打造可控可测的星座网络:IPLOOK低轨通信仿真平台搭建实践
在低轨卫星通信迅猛发展的趋势下,空天地一体化网络正逐步成为新一代信息基础设施的核心组成。作为移动核心网领域的技术引领者,IPLOOK依托在5G核心网、NTN(非地面网络)和卫星通信仿真方面的技术优势,率先构建了自主可控…...
火车头采集动态加载Ajax数据(无分页瀑布流网站)
为了先填充好数据在上线,在本地搭建了一个网站,并用火车头采集数据填充到里面。 开始很上手,因为找的网站的分类中是有分页的。很快捷的找到页面标识。 但是问题来了,如今很多网站都是采用的Ajax加载数据,根本没有分…...
笔记:代码随想录算法训练营day67:Floyd 算法精讲、A * 算法精讲 (A star算法) 严重超时完结,不过,撒花
学习资料:代码随想录 Floyd 算法精讲 卡码网:97. 小明逛公园 首先明确floyd算法解决的是多源最短路径问题,对边的权的正负值没有要求,而且是动态规划的思想 五部曲: 定义:grid[i][j][k]表示从i出发到j…...
Electron Forge【实战】桌面应用 —— AI聊天(中)
系列教程 Electron Forge【实战】桌面应用 —— AI聊天(上) 添加本地存储 Dexie.js 用 IndexedDB 实现,Dexie.js 库简化操作 npm i dexie新建文件 src\db.ts import Dexie, { type EntityTable } from "dexie";import { Provide…...
国达陶瓷重磅推出陶瓷罗马柱外墙整装尖端新产品“冠岩臻石”
近日,记者在佛山国达建材有限公司(以下简称国达陶瓷)董事长杨建平处了解到,该公司重磅推出的“冠岩臻石”新产品,是属于陶瓷罗马柱外墙整装产品中的尖端产品。新产品自面市之后,深受高端用户的青睐与认可。…...