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

多样本整合Banksy空间聚类分析(Visium HD, Xenium, CosMx)

在空间数据分析中,传统的单细胞聚类算法,例如Seurat和Scanpy中的lovain和leiden等聚类算法,通常在处理空间数据时忽略了空间信息。然而,由于细胞状态受其周围细胞的影响,将转录组数据与细胞的空间信息结合起来进行聚类分析,有助于揭示细胞在组织中的分布和相互作用。之前我们介绍了Banksy的python版本代码使用(针对单个样本)。我们知道BANKSY是一种空间组学数据的聚类方法,通过将每个细胞的特征(基因表达)与其空间近邻特征的平均值以及邻域特征梯度相结合来进行聚类,这样就结合了细胞分子邻域特征,增强了空间结构识别。

Visium HD数据分析之空间聚类算法Banksy

这里我们介绍下针对有多个样本情况下,从一个包含多个样本细胞的Anndata对象开始,先对多样本空间坐标进行错位处理(Staggering,解决多个样本合并时坐标重叠问题),然后怎样构建空间最近邻图,再降维和harmony去批次,最后整合起来进行聚类。

1. 未经坐标偏移的两个样本空间坐标(原始)

图片

2. Stagger the spatial coordinates across the samples, so that spots from different samples do not overlap (sample specific treatment)

图片

3. Calculate Banksy matrix

图片

图片

图片

图片

4. 多样本Banksy后空间及UMAP结果

图片

代码实现:

分析环境加载

import osimport umapimport randomimport numpy as npimport pandas as pdimport scanpy as scfrom harmony import harmonizefrom banksy.initialize_banksy import initialize_banksyfrom banksy.embed_banksy import generate_banksy_matrixfrom banksy.main import concatenate_allfrom banksy_utils.umap_pca import pca_umapfrom banksy.cluster_methods import run_Leiden_partitionimport matplotlib.pyplot as pltimport warningswarnings.filterwarnings("ignore")plt.style.use('default')plt.rcParams['figure.facecolor'] = 'white'seeds = [0]random.seed(seeds[0])np.random.seed(seeds[0])

多样本数据读取及预处理

adata = sc.read_h5ad('/data/VisiumHD/CRC_demo/adata_raw.h5ad')
# 这里只是为了快速演示,所以抽了百分之十细胞进行后续分析sc.pp.sample(adata, 0.1)
adata.var["mt"] = adata.var_names.str.startswith("MT-")adata.var["ribo"] = adata.var_names.str.startswith(("RPS", "RPL"))sc.pp.calculate_qc_metrics(adata, qc_vars=["mt", "ribo"], inplace=True, log1p=True)sc.pp.filter_cells(adata, min_counts=30)sc.pp.filter_genes(adata, min_cells=10)adata = adata[adata.obs['pct_counts_mt']<20, :]# Normalizeadata.layers["counts"] = adata.X.copy()sc.pp.normalize_total(adata)

Stagger the spatial coordinates across the samples, so that spots from different samples do not overlap (sample specific treatment)​​​​​​​

adata.obs['x_pixel'] = adata.obsm['spatial'][:, 0]adata.obs['y_pixel'] = adata.obsm['spatial'][:, 1]# 为每个样本生成颜色unique_samples = adata.obs['sample'].unique()colors = plt.cm.tab20(np.linspace(0, 1, len(unique_samples)))color_dict = {sample: colors[i] for i, sample in enumerate(unique_samples)}sample_colors = [color_dict[s] for s in adata.obs['sample']]# 绘制散点图fig = plt.figure(figsize=(6, 4), constrained_layout=True)scatter = plt.scatter(    x=adata.obs['x_pixel'],    y=adata.obs['y_pixel'],    c=sample_colors,    alpha=1,    s=1.5)
# Staggeringcoords_df = pd.DataFrame(adata.obs[['x_pixel', 'y_pixel', 'sample']])coords_df['x_pixel'] = coords_df.groupby('sample')['x_pixel'].transform(lambda x: x - x.min())global_max_x = max(coords_df['x_pixel']) * 1.5#Turn samples into factorscoords_df['sample_no'] = pd.Categorical(coords_df['sample']).codes#Update x coordinatescoords_df['x_pixel'] = coords_df['x_pixel'] + coords_df['sample_no'] * global_max_x#Update staggered coords to AnnData objectadata.obs['x_pixel'] = coords_df['x_pixel']adata.obs['y_pixel'] = coords_df['y_pixel']# AFTER staggering the spatial coordinatesfig = plt.figure(figsize=(6, 4), constrained_layout=True)scatter = plt.scatter(    x=adata.obs['x_pixel'],    y=adata.obs['y_pixel'],    c=sample_colors,    alpha=1,    s=1.5)

Subset to 2000 HVGs and Running BANKSY (with AGF)​​​​​​​

sc.pp.highly_variable_genes(adata, n_top_genes=2000, flavor='seurat_v3', layer='counts', batch_key="sample")adata = adata[:, adata.var['highly_variable']]
## banksy parameters ##nbr_weight_decay = 'scaled_gaussian'k_geom = 18resolutions = [0.40]       # clustering resolution for UMAPpca_dims = [20]            # Dimensionality in which PCA reduces tolambda_list = [0.2]        # list of lambda parametersm = 1c_map =  'tab20' # specify color map# Include spatial coordinates informationcoord_keys = ('x_pixel', 'y_pixel', 'coord_xy')x_coord, y_coord, xy_coord = coord_keys[0], coord_keys[1], coord_keys[2]raw_y, raw_x = adata.obs[y_coord], adata.obs[x_coord]adata.obsm[xy_coord] = np.vstack((adata.obs[x_coord].values, adata.obs[y_coord].values)).T### run banksy ###banksy_dict = initialize_banksy(    adata,    coord_keys,    k_geom,    nbr_weight_decay=nbr_weight_decay,    max_m=m,    plt_edge_hist= True,    plt_nbr_weights= True,    plt_agf_angles=False,    plt_theta=False)banksy_dict, banksy_matrix = generate_banksy_matrix(    adata,    banksy_dict,    lambda_list,    max_m=m)banksy_dict["nonspatial"] = {    # Here we simply append the nonspatial matrix (adata.X) to obtain the nonspatial clustering results    0.0: {"adata": concatenate_all([adata.X], 0, adata=adata), }}print(banksy_dict['nonspatial'][0.0]['adata'])

Dimensionality Reduction and Harmony 

相关文章:

多样本整合Banksy空间聚类分析(Visium HD, Xenium, CosMx)

在空间数据分析中&#xff0c;传统的单细胞聚类算法&#xff0c;例如Seurat和Scanpy中的lovain和leiden等聚类算法&#xff0c;通常在处理空间数据时忽略了空间信息。然而&#xff0c;由于细胞状态受其周围细胞的影响&#xff0c;将转录组数据与细胞的空间信息结合起来进行聚类…...

【2025最新】Vm虚拟机中直接使用Ubuntu 免安装过程直接使用教程与下载

Ubuntu 是一个基于 Debian 的自由开源 Linux 操作系统&#xff0c;面向桌面、服务器和云计算平台广泛应用。 由英国公司 Canonical Ltd. 维护和发布&#xff0c;Ubuntu 强调易用性、安全性和稳定性&#xff0c;适合个人用户、开发者以及企业部署使用。 Ubuntu 默认使用 GNOME …...

【Leetcode】系列之206反转链表

反转链表 题目描述解决思路过程示例代码示例结果展示 总结 题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 解决思路 next_node:临时存放当前指针指向下一个指针的变量&#xff1b;pre:存放空指针&#xff1b;curr&#xff1…...

图灵爬虫练习平台第十九题js逆向

题十九&#xff1a;法外狂徒 该题适合JS逆向学习的小伙伴练习&#xff0c;模拟国内某大型网站 数据加密设计&#xff0c;给大家练练手 还是先f12看看是什么加密&#xff0c;发现是 返回数据最后加密了 还是先堆栈分析一下&#xff0c;直接点进去 打上断点分析一下&#xff0c;…...

Ubuntu 22初始配置(root、ssh)

1.设置root密码 并启用root用户 sudo passwd root sudo passwd -u root 2.安装ssh apt install openssh-server systemctl enable --now ssh 3.支持root通过ssh登录 vim /etc/ssh/sshd_config 是sshd_config(服务端) 不是ssh_config&#xff08;客户端&#xff09; 最后增加一…...

css3响应式布局

css3响应式布局 响应式设计是现代网页开发的重要组成部分&#xff0c;它确保网页在不同的屏幕尺寸上都有良好的显示效果。 在CSS中&#xff0c;实现响应式布局是一种常用的技术&#xff0c;旨在使网页能够根据用户的设备和屏幕尺寸自动调整其布局和样式。这种技术对于确保网站…...

【DeepSeek问答记录】请结合实例,讲解一下pytorch的DataLoader的使用方法

PyTorch的DataLoader是数据加载的核心工具&#xff0c;可高效处理批量数据、并行加载和自动打乱。以下是一个结合实例的分步讲解&#xff1a; 1. 基础使用流程 import torch from torch.utils.data import Dataset, DataLoader# 自定义数据集类&#xff08;必须实现__len__和…...

Codeforces Round 1024 (Div. 2)(A-D)

题面链接&#xff1a;Dashboard - Codeforces Round 1024 (Div. 2) - Codeforces A. Dinner Time 思路 一共n个数被分成n/p个区间&#xff0c;每个区间内的和是q&#xff0c;如果还有除构成区间外剩余的数那么就一定能构造&#xff0c;如果没有剩余就看所有区间的和是否等于…...

大语言模型强化学习双强:OpenRLHF与verl技术解析

引言 随着大语言模型&#xff08;LLM&#xff09;参数规模突破千亿级&#xff0c;如何高效完成基于人类反馈的强化学习&#xff08;RLHF&#xff09;训练成为行业焦点。OpenRLHF与verl作为开源社区两大标杆框架&#xff0c;分别以Ray分布式架构和HybridFlow混合控制器为核心&a…...

ARM Cortex-M3内核详解

目录 一、ARM Cortex-M3内核基本介绍 &#xff08;一&#xff09;基本介绍 &#xff08;二&#xff09;主要组成部分 &#xff08;三&#xff09;调试系统 二、ARM Cortex-M3内核的内核架构 三、ARM Cortex-M3内核的寄存器 四、ARM Cortex-M3内核的存储结构 五、ARM Co…...

关于高并发GIS数据处理的一点经验分享

1、背景介绍 笔者过去几年在参与某个大型央企的项目开发过程中,遇到了十分棘手的难题。其与我们平常接触的项目性质完全不同。在一般的项目中,客户一般只要求我们能够通过桌面软件对原始数据进行加工处理,将各类地理信息数据加工处理成地图/场景和工作空间,然后再将工作空…...

vue3+flask+sqlite前后端项目实战

基础环境安装 pycharm 下载地址&#xff1a; https://www.jetbrains.com/zh-cn/pycharm/download/?sectionwindows vscode 下载地址 https://code.visualstudio.com/docs/?dvwin64user python 下载地址 https://www.python.org/downloads/windows/ Node.js&#xff08;含npm…...

支付宝API-SKD-GO版

前言 支付宝api的sdk没有提供go版&#xff0c;这里自己封装了一个go版的sdk&#xff0c;有需要的朋友可以自取使用 支付宝 AliPay SDK for Go, 集成简单&#xff0c;功能完善&#xff0c;持续更新&#xff0c;支持公钥证书和普通公钥进行签名和验签。 安装 go get github.c…...

uniapp(微信小程序)>关于父子组件的样式传递问题(自定义组件样式穿透)

由于"微信小程序"存在【样式隔离机制】&#xff0c;且默认设置为isolated(启用样式隔离)&#xff0c;因此这里给出以下两种解决方案&#xff1a; 注意: 这2种方案父子组件<style>标签不能添加"scoped" 1.CSS变量穿透&#xff08;推荐: 此方案不受样…...

AI时代还需要目视解译吗?——目视解译详解

在遥感技术迅猛发展的今天&#xff0c;尽管计算机自动解译算法层出不穷&#xff0c;目视解译仍然保持着其基础性和权威性的地位。作为遥感信息提取的"黄金标准"&#xff0c;目视解译凭借人类认知系统的独特优势&#xff0c;在多个专业领域持续发挥着不可替代的作用。…...

苹果电脑笔记本macos Mac安装mixly 米思齐软件详细指南

一、下载安装包 二、安装 1、解压下载的文件&#xff0c;然后将解压后文件夹中的中文名称部分删掉只保留英文名称&#xff0c;例如&#xff1a;mixly2.0-mac 2、将mixly2.0-mac文件夹移动到当前用户的Documents路径下&#xff0c;注意路径中不要有中文。 3、进入mixly2.0-mac文…...

slackware系统详解

Slackware 是最古老的活跃维护的 Linux 发行版之一&#xff0c;由 Patrick Volkerding 于 1993 年创建。它以简洁性、稳定性和遵循 Unix 哲学为核心理念&#xff0c;适合追求高度控制和手动配置的用户。以下是 Slackware 的详细介绍&#xff1a; 1. 核心特点 简洁性 (Simplici…...

力扣210(拓扑排序)

210. 课程表 II - 力扣&#xff08;LeetCode&#xff09; 这是一道拓扑排序的模板题。简单来说&#xff0c;给出一个有向图&#xff0c;把这个有向图转成线性的排序就叫拓扑排序。如果有向图中有环就没有办法进行拓扑排序了。因此&#xff0c;拓扑排序也是图论中判断有向无环图…...

Promise/A+ 规范中文解读

一、简介 Promise/A 是一个开放、健全且通用的JavaScript Promise标准&#xff0c;由开发者制定并供开发者参考。其核心目标是定义then方法的行为&#xff0c;确保不同Promise实现的互操作性。规范聚焦于异步操作的最终结果交互机制&#xff0c;而非Promise的创建、解决或拒绝…...

多媒体预研

主要包含h265 av1 等各种 多媒体的具体应用 svac_plugin ZLMediaKit/ext-codec at master cyf88/ZLMediaKit D:\java\xiachu\otherzlm\ZLMediaKit> sip-client GB28181-Service/SipClient at master Washington-DC/GB28181-Service yolo Jackson-Tan/wvp_pro_yolo: 小…...

动态网站 LNMP

一、名词解释&#xff1a; LNMP&#xff1a; L : 代表 Linux 操作系统&#xff0c;为网站提供了可靠的运行环境N : 代表 Nginx&#xff0c;它是一款轻量级的高性能 Web 服务器&#xff0c;能够快速处理大量并 发连接&#xff0c;有效提升网站的访问速度和性能 M : 代表…...

【Leetcode刷题随笔】349. 两个数组的交集

1. 题目描述 给定两个数组nums1和nums2&#xff0c;返回它们的交集。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。 示例1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2] 题目条件&#xff1a; 1 < nums1.length, nums2.length < 10…...

如何优雅的使用CMake中的FindPkgConfig模块

背景 如果你遇到下面的场景&#xff0c;那么FindPkgConfig模块可以用来解决我们引用上游库的问题。 上游库没有提供CMake的配置文件。CMake没有提供相应的查找模块&#xff0c;即Find<PackageName>.cmake的文件。上游库提供了pkg-config使用的.pc文件。 如果上面三个条…...

Docker Volumes

Docker Volumes 是 Docker 提供的一种机制&#xff0c;用于持久化存储容器数据。与容器的生命周期不同&#xff0c;Volumes 可以独立存在&#xff0c;即使容器被删除&#xff0c;数据仍然保留。以下是关于 Docker Volumes 的详细说明&#xff1a; 1. 为什么需要 Volumes&#…...

[原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取当前用户主目录(即:~波浪符号目录)?

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...

day23 机器学习管道 Pipeline

在机器学习中&#xff0c;数据预处理、特征提取、模型训练和评估等步骤通常是按顺序执行的。为了更高效地管理和复用这些步骤&#xff0c;我们可以使用 Pipeline&#xff08;管道&#xff09;来构建一个完整的机器学习流水线。本文将详细介绍 Pipeline 的基础概念&#xff0c;并…...

The Graph:区块链数据索引的技术架构与创新实践

作为Web3生态的核心基础设施&#xff0c;The Graph通过去中心化索引协议重塑了链上数据访问的范式。其技术设计不仅解决了传统区块链数据查询的效率瓶颈&#xff0c;还通过经济模型与多链兼容性构建了一个开放的开发者生态。本文从技术角度解析其架构、机制及创新实践。 一、技…...

nginx配置sse流传输问题:直到所有内容返回后才往下传输

一、禁用缓冲&#xff08;如实时流传输&#xff09;&#xff1a; location /stream {proxy_buffering off; } 二、开启分块传输 location /your-path {proxy_chunked_transfer_encoding on; # 显式启用分块传输&#xff08;默认已启用&#xff09; }...

使用Daemonset部署日志收集守护进程

1.DaemonSet简介&#xff1a; 在Kubernetes&#xff08;简称k8s&#xff09;中&#xff0c;DaemonSet是一种控制器&#xff0c;用于确保集群中的每个&#xff08;或部分&#xff09;节点运行一个指定的Pod副本。DaemonSet非常适合需要全局部署、节点级运行的服务&#xff0c;如…...

在Mac环境下搭建Docker环境的全攻略

在Mac环境下搭建Docker环境的全攻略 在现代软件开发中&#xff0c;Docker已经成为不可或缺的工具之一。它不仅简化了应用的部署和管理&#xff0c;还极大地提升了开发效率。然而&#xff0c;在某些公司环境中&#xff0c;桌面版的Docker可能会被禁用&#xff0c;这给开发工作带…...

Go 语言 slice(切片) 的使用

序言 在许多开发语言中&#xff0c;动态数组是必不可少的一个组成部分。在实际的开发中很少会使用到数组&#xff0c;因为对于数组的大小大多数情况下我们是不能事先就确定好的&#xff0c;所以他不够灵活。动态数组通过提供自动扩容的机制&#xff0c;极大地提升了开发效率。这…...

C++ string比较、string随机访问、string字符插入、string数据删除

string的字符串进行比较&#xff0c;代码见下。 #include<iostream>using namespace std;int main() {// 1 comparestring s1 "aab";string t11 "aab";int r11 s1.compare(t11);cout << "1: " << r11 << endl;strin…...

web 自动化之 Unittest 应用:测试报告装饰器断言

文章目录 一、常见的第三方库结合 unittest 生产 html 格式测试报告1、HtmlTestRunner2、BeatifulReport 二、装饰器 unittest.skip 强制跳过&条件跳过三、unittest的常用断言方法 一、常见的第三方库结合 unittest 生产 html 格式测试报告 1、HtmlTestRunner 官网下载 …...

前端基础之《Vue(16)—Vue脚手架介绍》

一、脚手架环境 1、推荐windows10 Node vue/cli(webpack) 2、测试node安装成功 node -v npm -v 3、什么是脚手架 Vue CLI&#xff1a;CLI就是脚手架的意思 脚手架生成一套模板&#xff08;入口文件、配置文件、目录结构&#xff09; 4、常用的包管理器 npm&#xff1a;no…...

MySQL 事务(一)

文章目录 CURD不加控制&#xff0c;会有什么问题CURD满足什么属性&#xff0c;能解决上述问题&#xff1f;什么是事务为什么要有事务事务的版本支持了解事务的提交方式 事务常见操作方式研究并发场景事务的正常操作事务的非正常情况的案例结论事务操作的注意事项 CURD不加控制&…...

Dsp38335利用Bootloader实现在线升级的技术原理

1. Bootloader概述 Bootloader&#xff08;引导加载程序&#xff09;是嵌入式系统中负责在设备启动时加载和启动主程序的代码。它通常在系统的闪存或其他非易失性存储器中&#xff0c;并在系统上电时首先执行。Bootloader不仅完成启动操作&#xff0c;还能够提供后续的程序升级…...

【TVM 教程】microTVM PyTorch 教程

Apache TVM 是一个深度的深度学习编译框架&#xff0c;适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →https://tvm.hyper.ai/ 作者&#xff1a;Mehrdad Hessar 该教程展示了如何使用 PyTorch 模型进行 microTVM 主机驱动的 AOT 编译。此教程可以在使用…...

利用D435i相机进行SLAM实现建图的关键环节-----Kalibr标定工具以及常见的问题调试

在SLAM系统中&#xff0c;相机标定是获取准确的空间信息和三维重建的关键步骤。对于Intel RealSense D435i这类双目相机&#xff0c;正确的内参和外参不仅能提高位姿估计精度&#xff0c;还能显著改善重建效果。本文将详细介绍如何使用Kalibr对D435i进行双目标定&#xff0c;并…...

old kali网站下载链接爬取-Kali linux 全部版本镜像下载--Index of /kali-images

Kali linux 全部版本镜像下载 目的 出于该网站不稳定原因&#xff0c;故爬取下载链接&#xff0c;以便网友下载老版本kali from bs4 import BeautifulSoup import requests from urllib.parse import urljoinbase_url "http://old.kali.org/kali-images/" visite…...

基于千眼狼高速摄像机与三色掩模的体三维粒子图像测速PIV技术

研究背景 航空航天、能源动力领域&#xff0c;测量三维瞬态流场的速度场信息对于理解流体力学行为、优化系统设计非常关键。 传统三维粒子图像测速技术如Tomo层析PIV&#xff0c;因依赖多相机阵列&#xff0c;存在系统体积、操作复杂&#xff0c;在封闭空间测量存在困难&#…...

Tauri(2.5.1)+Leptos(0.7.8)开发桌面应用--程序启动界面

前期使用Tauri(2.5.1)Leptos(0.7.8)写了一个自用桌面小程序&#xff0c;详见&#xff1a;使用Tauri 2.3.1Leptos 0.7.8开发桌面小程序汇总_tauri 小程序-CSDN博客。 在此基础上&#xff0c;尝试给程序添加启动界面&#xff0c;效果如下图所示。 1. 添加启动画面设置 在src-ta…...

Gmsh划分网格|四点矩形

先看下面这段官方自带脚本 /*********************************************************************** Gmsh tutorial 1** Variables, elementary entities (points, curves, surfaces), physical* entities (points, curves, surfaces)********************************…...

I/O多路复用(select/poll/epoll)

通过一个进程来维护多个Socket&#xff0c;也就是I/O多路复用&#xff0c;是一种常见的并发编程技术&#xff0c;它允许单个线程或进程同时监视多个输入/输出&#xff08;I/O&#xff09;流&#xff08;例如网络连接、文件描述符&#xff09;。当任何一个I/O流准备好进行读写操…...

一键生成达梦、Oracle、MySQL 数据库 ER 图!解锁高效数据库设计!

从事企业软件项目开发的同学们一定对 ER 图很熟悉&#xff0c;可以帮助用户快速厘清数据库结构&#xff0c;方便后续维护和优化。但是在日常工作中&#xff0c;面对复杂的数据结构&#xff0c;整理表设计文档对于每一位DBA来说都很头大&#xff0c;需要将设计细节转化为条理清晰…...

学习黑客 windows 设置与控制面板详解

Windows 设置与控制面板详解&#xff1a;双剑合璧的系统配置工具 ⚙️&#x1f527; 学习目标&#xff1a;理解Windows设置和控制面板的异同、掌握系统配置的安全最佳实践 1. 引言&#xff1a;双界面的系统配置世界 &#x1f310; 在Windows操作系统中&#xff0c;有两个强大的…...

pytorch模型画质增强简单实现

使用数据增强技术可以增加数据集中图像的多样性&#xff0c;从而提高模型的性能和泛化能力&#xff0c;主要的图像增强技术包括。 亮度&#xff0c;对比度调节 在开始图像大小的调整之前我们需要导入数据&#xff08;图像以眼底图像为例&#xff09;。 from PIL import Image f…...

C++中的std::allocator

C中的std::allocator 文章目录 C中的std::allocator1.std::allocator1.1C中的placement new 和operator new1.2一个custom allocator的实现1.3使用std::allocator_traits实现allocator 1.std::allocator C中的std::allocator默默工作在CSTL中的所有容器的内存分配上&#xff0…...

Linux文件编程——read函数与lseek函数

一、read函数 在 Linux 文件编程中&#xff0c;read 函数是一个系统调用&#xff0c;用于从文件描述符&#xff08;File Descriptor&#xff09;指向的文件或设备中读取数据到缓冲区。它是 Unix/Linux 系统编程中实现底层 I/O 操作的核心函数之一。以下是 read 函数的详细使用…...

STM32 变量存储

一、存储区划分与变量分类 STM32的存储空间分为Flash&#xff08;非易失性&#xff09;和RAM&#xff08;易失性&#xff09;两大区域&#xff1a; ​Flash存储器 ​代码段&#xff08;Code&#xff09;​&#xff1a;存储程序指令和常量&#xff08;如字符串、const变量&…...

解锁性能密码:Linux 环境下 Oracle 大页配置全攻略​

在 Oracle 数据库运行过程中&#xff0c;内存管理是影响其性能的关键因素之一。大页内存&#xff08;Large Pages&#xff09;作为一种优化内存使用的技术&#xff0c;能够显著提升 Oracle 数据库的运行效率。本文将深入介绍大页内存的相关概念&#xff0c;并详细阐述 Oracle 在…...