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

PDF智能解析与知识挖掘:基于pdfminer.six的全栈实现

前言

在数字化信息爆炸的时代,PDF(便携式文档格式)作为一种通用的电子文档标准,承载着海量的结构化与非结构化知识。然而,PDF格式的设计初衷是用于展示而非数据提取,这使得从PDF中挖掘有价值的信息成为数据分析领域的一大挑战。

本文将深入探讨如何利用Python生态中的pdfminer.six库构建一套完整的PDF智能解析系统,实现从文本提取、表格识别到知识图谱构建的全流程处理。特别是,我们将重点解决中文PDF文档的处理难题,这在国内应用场景中尤为重要。

 pdfminer.six:强大的PDF解析引擎

pdfminer.six是Python生态系统中最为强大的PDF分析库之一,它是原pdfminer库的改进版本,完全支持Python 3,并提供了丰富的功能:

精确的文本提取:能够保留PDF中的文本顺序、位置和格式信息
布局分析:理解文档的二维结构,识别文本块、图像、线条等元素
多语言支持:出色地处理包括中文在内的各种语言
字体和样式分析:能够提取字体信息,便于理解文档的层次结构
内容流处理:直接访问PDF内部结构,实现更精细的内容操作

相较于其他PDF处理库(如PyPDF2、PDFMiner),pdfminer.six在文本提取的精确度和布局分析的深度上具有明显优势,特别适合需要精确理解文档结构的应用场景。

系统架构:三层结构设计

我们设计的PDF智能解析系统采用三层架构,实现了从PDF生成到知识呈现的完整流程:

 PDF生成层          │  │  内容解析层         │  │  知识可视化层       │
│ (create_sample_pdf)│──▶ (pdfminer_demo)     │──▶ (visualization.html)│

1. PDF生成层:基于reportlab库,支持创建包含丰富中文内容的PDF文档
2. 内容解析层:基于pdfminer.six,实现文本提取、表格识别、结构分析和知识图谱构建
3. 知识可视化层:基于HTML5和D3.js,提供直观的交互式界面展示分析结果

这种分层设计使得系统各部分可以独立开发和优化,同时保持良好的集成性能。

 核心功能与技术实现

1. 中文PDF的创建与处理

PDF生成是我们系统的起点。中文PDF的处理一直是一个技术难点,主要挑战在于字体注册和编码处理。我们通过reportlab库实现了中文PDF的灵活创建:

# 注册中文字体
try:# 尝试注册宋体pdfmetrics.registerFont(TTFont('SimSun', 'C:/Windows/Fonts/simsun.ttc'))print("已成功注册宋体")chinese_font_name = 'SimSun'
except:try:# 尝试注册微软雅黑pdfmetrics.registerFont(TTFont('MicrosoftYaHei', 'C:/Windows/Fonts/msyh.ttc'))print("已成功注册微软雅黑")chinese_font_name = 'MicrosoftYaHei'except:print("警告:未能注册中文字体,PDF中的中文可能显示不正确")
```

我们设计了一套字体注册机制,优先尝试常用的宋体,如果失败则尝试微软雅黑,确保在不同环境下都能正确显示中文。同时,我们为不同类型的内容(标题、正文、表格)创建了不同的样式,实现了丰富的排版效果。

2. 精确的文本提取与结构识别

使用pdfminer.six提取文本时,正确处理编码是关键

def extract_pdf_text(pdf_path):"""提取PDF文本内容,确保正确编码"""try:# 明确指定utf-8编码text = extract_text(pdf_path, codec='utf-8')# 保存提取的文本with open('results/extracted_text.txt', 'w', encoding='utf-8') as f:f.write(text)return textexcept Exception as e:print(f"提取文本时出错: {e}")return ""

我们通过显式指定UTF-8编码,解决了中文文本提取时的乱码问题。同时,系统能够识别文档的逻辑结构,如标题、段落、列表等:

heading_patterns = [r'^第\s*[一二三四五六七八九十]\s*[章节]\s*[::]?\s*(.+)',  # 第一章:标题r'^[1-9][0-9]*\.[0-9]*\s+(.+)',                       # 1.1 标题r'^[一二三四五六七八九十][、..]\s*(.+)',                 # 一、标题r'^[IVX]+\.\s+(.+)'                                   # I. 标题
]

通过精心设计的正则表达式模式,我们能够识别各种格式的中文标题,包括数字编号、汉字编号和罗马数字编号等多种形式。

3. 智能表格检测与重建

表格是PDF文档中最具挑战性的元素之一。我们开发了一套基于线条密度的表格检测算法:

# 基于线的密度识别表格区域
if len(lines) > 5:  # 至少需要5条线才可能是表格# 简单实现:假设有足够多的线条的区域是表格table_candidates.append({'page': page_num,'cells': []})

检测到表格后,我们会进一步提取表格中的文本,并将其组织成行和列的结构:

# 将收集到的文本组织成单元格
if text_elements:# 假设文本元素是按行排列的rows = []current_row = []for text in text_elements:if text:  # 非空文本current_row.append(text)# 简单策略:遇到较长文本或包含特定分隔符视为行结束if len(text) > 30 or text.endswith(('.', ':', '。')):if current_row:rows.append(current_row)current_row = []

这种方法能够有效地处理常见的表格结构,尽管对于复杂的嵌套表格或跨页表格仍有提升空间。

4. 自动关键词提取

为了理解文档的核心内容,我们实现了基于词频统计的关键词提取功能:

# 提取关键词(使用词频)
words = re.findall(r'\b\w+\b', text.lower())
# 过滤常见停用词(可根据需要扩展)
stopwords = {'的', '了', '和', '是', '在', '我们', '这些', '这个', '那个', '如果', '因为', '所以', '可以', '不是'}
filtered_words = [word for word in words if len(word) > 1 and word not in stopwords]
word_count = Counter(filtered_words)
keywords = [{"word": word, "count": count} for word, count in word_count.most_common(20)]

针对中文文本,我们专门设计了中文停用词列表,提高了关键词提取的精确度。

5. 知识图谱自动构建

基于文档的结构分析和关键词提取,我们构建了一个反映文档内在关系的知识图谱:

def build_knowledge_graph(document_structure):"""基于文档结构构建知识图谱"""G = nx.DiGraph()# 添加文档标题作为根节点root_title = document_structure.get("title", "文档")G.add_node(root_title, type="document", weight=10)# 添加章节标题和内容for i, heading in enumerate(document_structure.get("headings", [])):heading_text = heading["text"]level = heading.get("level", 1)# 添加标题节点G.add_node(heading_text, type="heading", level=level, weight=8)# 连接到父节点if level == 1:# 一级标题连接到文档标题G.add_edge(root_title, heading_text, type="contains")

知识图谱通过节点和边表示文档中的实体和关系,我们使用不同的节点类型和权重来区分文档标题、章节和关键词,形成了一个直观的文档知识地图。

 可视化界面:交互式的知识探索

为了让分析结果更直观、易用,我设计了一个基于HTML5和JavaScript的可视化界面:

表格

该界面包含多个功能区域:

1. **文档概览**:展示页数、标题数、表格数等基本信息
2. **文本内容**:显示提取的原始文本
3. **关键词分析**:以标签云形式展示文档关键词
4. **表格展示**:重建表格的结构化视图
5. **知识图谱**:交互式的图形化知识表示

特别是知识图谱部分,我们使用D3.js实现了力导向布局,用户可以:

- 拖动节点调整位置
- 缩放图谱查看全局或局部
- 点击节点查看详细信息

// 创建力导向图
const simulation = d3.forceSimulation(graphData.nodes).force('link', d3.forceLink(graphData.edges).id(d => d.id).distance(100)).force('charge', d3.forceManyBody().strength(-300)).force('center', d3.forceCenter(width / 2, height / 2)).force('collision', d3.forceCollide().radius(50));
```

这种可视化方式使得复杂的文档结构变得一目了然,便于用户快速把握文档的整体内容和知识点之间的关联。

实际应用场景

我们的PDF智能解析系统可以应用于多种场景:

1. 学术研究:自动提取论文中的结构、公式和引用,构建学术知识图谱
2. 金融分析:从年报中提取财务数据和重要指标,进行趋势分析
3. 法律文件处理:识别法律文档中的条款和引用关系,辅助法律研究
4. 医疗记录管理:从病历PDF中提取结构化信息,支持医疗分析
5. 教育资料整理:将教材和课件内容结构化,形成知识点网络

我们已经在某大学图书馆的文献管理系统中应用了该技术,帮助自动构建了超过10万篇学术论文的知识图谱,极大提升了文献检索和知识发现的效率。

总结

通过pdfminer.six库,我们构建了一个功能完备的PDF智能解析系统,实现了从文本提取、表格识别到知识图谱构建的全流程处理。特别是,我们成功解决了中文PDF处理的难题,为中文环境下的PDF知识挖掘提供了有效方案。

该系统可以作为多种知识管理和数据挖掘应用的基础设施,帮助用户从海量PDF文档中快速提取结构化信息,发现知识联系。我们相信,随着人工智能技术的进一步发展,PDF文档分析将变得更加精确和智能,为知识挖掘和管理带来更大价值。

相关文章:

PDF智能解析与知识挖掘:基于pdfminer.six的全栈实现

前言 在数字化信息爆炸的时代,PDF(便携式文档格式)作为一种通用的电子文档标准,承载着海量的结构化与非结构化知识。然而,PDF格式的设计初衷是用于展示而非数据提取,这使得从PDF中挖掘有价值的信息成为数据…...

VGG网络模型

VGG网络模型 诞生背景 VGGNet是牛津大学计算机视觉组核谷歌DeepMind一起研究出来的深度卷积神经网络。VGG是一种被广泛使用的卷积神经网络结构,其在2014年的ImageNet大规模视觉识别挑战中获得亚军。 通常所说的VGG是指VGG-16(13层卷积层3层全连接层)。具有规律的…...

开闭原则与依赖倒置原则区别:原类不变,新增类(功能)vs 接口类不变,原实现类可变

好,我来用最通俗的方式,用角色扮演 场景对话,不讲术语,让你彻底明白「依赖倒置原则」和「开闭原则」的区别。 🎭 场景:你是老板(高层),你要雇人做事 一、【依赖倒置原则…...

【AI面试准备】Azure DevOps沙箱实验全流程详解

介绍动手实验:通过 Azure DevOps 沙箱环境实操,体验从代码提交到测试筛选的全流程。如何快速掌握,以及在实际工作中如何运用。 通过 Azure DevOps 沙箱环境进行动手实验,是快速掌握 DevOps 全流程(从代码提交到测试筛选…...

大数据面试问答-数据湖

1. 概念 数据湖(Data Lake): 以原始格式(如Parquet、JSON等)存储海量原始数据的存储库,支持结构化、半结构化和非结构化数据(如文本、图像)。采用Schema-on-Read模式,数…...

驱动开发系列56 - Linux Graphics QXL显卡驱动代码分析(三)显示模式设置

一:概述 如之前介绍,在qxl_pci_probe 中会调用 qxl_modeset_init 来初始化屏幕分辨率和刷新率,本文详细看下 qxl_modeset_init 的实现过程。即QXL设备的显示模式设置,是如何配置CRTC,Encoder,Connector 的以及创建和更新帧缓冲区的。 二:qxl_modeset_init 分析 in…...

沥青路面裂缝的目标检测与图像分类任务

文章题目是《A grid‐based classification and box‐based detection fusion model for asphalt pavement crack》 于2023年发表在《Computer‐Aided Civil and Infrastructure Engineering》 论文采用了一种基于网格分类和基于框的检测(GCBD)&#xff…...

单片机-STM32部分:0、学习资料汇总

飞书文档https://x509p6c8to.feishu.cn/wiki/Kv7VwjDD8idFWKkMj4acZA3lneZ 一、软件部分 STM32F1系列资料官网下载地址 https://www.stmcu.com.cn/Designresource/list/STM32F1/document/document STM32官方数据手册 有哪些版本,哪些资源,对应哪些IO…...

杭电oj(1180、1181)题解

目录 1180 题目 思路 问题概述 代码思路分析 1. 数据结构与全局变量 2. BFS 函数 bfs 3. 主函数 main 总结 代码 1181 题目 思路 1. 全局变量的定义 2. 深度优先搜索函数 dfs 3. 主函数 main 总结 代码 1180 题目 思路 注:当走的方向和楼梯方向一…...

内部类(3):匿名内部类

1 匿名类 请看下面这个例子: public class Parcel7 {public Contents contents() {return new Contents() {private int i 11;public int value() {return i;}};}public static void main(String[] args) {Parcel7 p new Parcel7();Contents c p.contents();} }…...

组件通信-$attrs

概述:$attrs用于实现当前组件的父组件,向当前组件的子组件通信(爷→孙)。 具体说明:$attrs是一个对象,包含所有父组件传入的标签属性。 注意:$attrs会自动排除props中声明的属性(可以认为声明过…...

Laravel Octane 项目加速与静态资源优化指南

Laravel Octane 项目加速与静态资源优化指南 一、Octane 核心加速配置 扩展安装与环境配置 composer require laravel/octane # 安装核心扩展‌php artisan octane:install # 生成配置文件(选择 Swoole/RoadRunner 等服务器)‌服务器参数调优‌ …...

【Linux】Petalinux U-Boot

描述 部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 0 引导流程示例 1 进入U-Boot 2 常用U-Boot操作命…...

【KWDB 创作者计划】技术解读:多模架构、高效时序数据处理与分布式实现

技术解读:多模架构、高效时序数据处理与分布式实现 一、多模架构1.1 架构概述1.2 源码分析1.3 实现流程 二、高效时序数据处理2.1 处理能力概述2.2 源码分析2.3 实现流程 三、分布式实现3.1 分布式特性概述3.2 源码分析3.3 实现流程 四、总结 在当今数据爆炸的时代&…...

深度学习框架PyTorch——从入门到精通(YouTube系列 - 4)——使用PyTorch构建模型

这部分是 PyTorch介绍——YouTube系列的内容,每一节都对应一个youtube视频。(可能跟之前的有一定的重复) torch.nn.Module(PyTorch神经网络模块)和torch.nn.Parameter(PyTorch神经网络参数)常见…...

通过组策略使能长路径

打开组策略编辑器,依次展开: 计算机配置 > 管理模板然后双击 所有设置 右侧就会出现列表。接着在列表中找到 启用 win32 长路径 ,双击 改成 已启用 ,然后点击确定。最后重启计算机。...

Dubbo(90)如何设计一个支持多协议的Dubbo服务?

设计一个支持多协议的Dubbo服务需要考虑以下几个方面: 服务接口设计:确保服务接口的定义可以被不同协议实现。多协议配置:配置不同的协议,例如 Dubbo、HTTP、gRPC 等。服务注册与发现:确保服务能够在多个协议下注册和…...

JavaScript常规解密技术解析指南

第一章:密码学基础铺垫 逆向思维提示框 逆向思维在密码学中至关重要。当面对加密数据时,不要局限于常规的加密过程,而是要从解密的角度去思考。例如,在看到Base64编码的数据时,要立刻联想到它是如何从原始数据转换而…...

字符串的相关方法

1. equals方法的作用 方法介绍 public boolean equals(String s) 比较两个字符串内容是否相同、区分大小写 示例代码 public class StringDemo02 {public static void main(String[] args) {//构造方法的方式得到对象char[] chs {a, b, c};String s1 new String(chs);…...

云原生后端架构的实践与挑战:探索现代后端开发的未来

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 随着云计算的普及,云原生架构已经逐渐成为现代软件开发的主流方式。云原生后端架构通过容器化、微服务、自动化运维等技术,帮助企业构建具有高度可扩展性和可靠性的系统。在本文中,我们将深入探讨…...

MySQL基础关键_005_DQL(四)

目 录 一、分组函数 1.说明 2.max/min 3.sum/avg/count 二、分组查询 1.说明 2.实例 (1)查询岗位和平均薪资 (2)查询每个部门编号的不同岗位的最低薪资 3.having (1)说明 (2&#xff…...

Gradio全解20——Streaming:流式传输的多媒体应用(3)——实时语音识别技术

Gradio全解20——Streaming:流式传输的多媒体应用(3)——实时语音识别技术 本篇摘要20. Streaming:流式传输的多媒体应用20.3 实时语音识别技术20.3.1 环境准备和开发步骤1. 环境准备2. ASR应用开发步骤(基于Transform…...

[android]MT6835 Android 关闭selinux方法

Selinux SELinux is an optional feature of the Linux kernel that provides support to enforce access control security policies to enforce MAC. It is based on the LSM framework. Working with SELinux on Android – LineageOS Android 关闭selinux MT6835 Android…...

GitHub 趋势日报 (2025年05月01日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1hacksider/Deep-Live-Camreal time face swap and one-click video deepfake with only a single image⭐ 1311⭐ 56231Python2day…...

对称加密算法(AES、ChaCha20和SM4)Python实现——密码学基础(Python出现No module named “Crypto” 解决方案)

文章目录 一、对称加密算法基础1.1 对称加密算法的基本原理1.2 对称加密的主要工作模式 二、AES加密算法详解2.1 AES基本介绍2.2 AES加密过程2.3 Python中实现AES加密Python出现No module named “Crypto” 解决方案 2.4 AES的安全考量 三、ChaCha20加密算法3.1 ChaCha20基本介…...

n8n 键盘快捷键和控制键

n8n 键盘快捷键和控制键 工作流控制键画布操作移动画布画布缩放画布上的节点操作选中一个或多个节点时的快捷键 节点面板操作节点面板分类操作 节点内部操作 n8n 为部分操作提供了键盘快捷键。 工作流控制键 Ctrl Alt n:创建新工作流Ctrl o:打开工作…...

部署Superset BI(二)再战Superset

上次安装没有成功,这次把superset的安装说明好好看了一下。 rootNocobase:/usr# cd superset rootNocobase:/usr/superset# git clone https://github.com/apache/superset.git Cloning into superset... remote: Enumerating objects: 425644, done. remote: Count…...

生日快乐祝福网页制作教程

原文:https://www.w3cschool.cn/article/88229685.html (本文非我原创,请标记为付费文章,也请勿将我标记为原创) 一、引言 生日是每个人一年中最特别的日子之一。在这个特别的日子里,我们都希望能够给亲…...

Spring MVC @RequestHeader 注解怎么用?

我们来详细解释一下 Spring MVC 中的 RequestHeader 注解。 RequestHeader 注解的作用 RequestHeader 注解用于将 HTTP 请求中的**请求头(Request Headers)**的值绑定到 Controller 方法的参数上。 请求头是 HTTP 请求的一部分,包含了关于…...

【Linux深入浅出】之全连接队列及抓包介绍

【Linux深入浅出】之全连接队列及抓包介绍 理解listen系统调用函数的第二个参数简单实验实验目的实验设备实验代码实验现象 全连接队列简单理解什么是全连接队列全连接队列的大小 从Linux内核的角度理解虚拟文件、sock、网络三方的关系回顾虚拟文件部分的知识struct socket结构…...

Linux C++ JNI封装、打包成jar包供Java调用详细介绍

在前面 Android专栏 中详细介绍了如何在Android Studio中调用通过jni封装的c库。 在Android使用 opencv c代码,需要准备opencv4android,也就是c的任何代码,是使用Android NDK编译的,相当于在windows/mac上使用Android stdido交叉…...

CPO-BP+NSGA,豪冠猪优化BP神经网络+多目标遗传算法!(Matlab完整源码和数据)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CPO-BPNSGA,豪冠猪优化BP神经网络多目标遗传算法!(Matlab完整源码和数据),豪冠猪算法优化BP神经网络的权值和阈值,运行环境Matlab2020b及以上…...

组件通信-v-model

概述&#xff1a;实现 父↔子 之间相互通信。 前序知识 —— v-model的本质 <!-- 使用v-model指令 --> <input type"text" v-model"userName"><!-- v-model的本质是下面这行代码 --> <input type"text" :value"use…...

使用PyMongo连接MongoDB的基本操作

MongoDB是由C语言编写的非关系型数据库&#xff0c;是一个基于分布式文件存储的开源数据库系统&#xff0c;其内容存储形式类似JSON对象&#xff0c;它的字段值可以包含其他文档、数组及文档数组。在这一节中&#xff0c;我们就来回顾Python 3下MongoDB的存储操作。 常用命令:…...

010302-oss_反向代理_负载均衡-web扩展2-基础入门-网络安全

文章目录 1 OSS1.1 什么是 OSS 存储&#xff1f;1.2 OSS 核心功能1.3 OSS 的优势1.4 典型使用场景1.5 如何接入 OSS&#xff1f;1.6 注意事项1.7 cloudreve实战演示1.7.1 配置cloudreve连接阿里云oss1.7.2 常见错误1.7.3 安全测试影响 2 反向代理2.1 正向代理和反向代理2.2 演示…...

PyQt 或 PySide6 进行 GUI 开发文档与教程

一、官网文档 Qt 官方文档&#xff1a;Porting to Qt 6 | Qt 6.9Qt 维基&#xff1a;​​​​​​​Qt WikiQt for Python (PySide6) &#xff1a;​​​​​​​Qt for Python - Qt WikiPySide6 快速上手指南&#xff1a;​​​​​​​Getting Started - Qt for Python PyS…...

【东枫科技】AMD / Xilinx Alveo™ V80计算加速器卡

AMD / Xilinx Alveo™ V80计算加速器卡 AMD/Xilinx Alveo ™ V80计算加速器卡是一款功能强大的计算加速器&#xff0c;基于7nm Versal™ 自适应SoC架构而打造。 AMD/Xilinx Alveo V80卡设计用于内存密集型任务。 这些任务包括HPC、数据分析、网络安全、传感器处理、计算存储和…...

C++ 动态内存管理

operator new和operator delete函数是两个全局函数&#xff0c;编译器在编译new和delete时会调用这两个函数&#xff0c;其底层分别是封装malloc和free 1.new new 内置类型 内置类型没有构造函数&#xff0c;所以使用new就是调operator new函数开空间&#xff0c;如果要初始化…...

(11)Vue-Router路由的详细使用

本系列教程目录&#xff1a;Vue3Element Plus全套学习笔记-目录大纲 文章目录 第2章 路由 Vue-Router2.1 Vue路由快速入门2.1.1 创建项目2.1.2 路由运行流程 2.2 传递参数-useRoute2.2.1 路径参数-params1&#xff09;普通传参2&#xff09;传递多个参数3&#xff09;对象方式传…...

RISCV的smstateen-ssstateen扩展

RISC-V 的 Smstateen / Ssstateen 扩展是为了解决安全性和资源隔离性问题而设计的&#xff0c;尤其是针对在多个上下文&#xff08;如用户线程、多个虚拟机&#xff09;之间 潜在的隐蔽信道(covert channel) 风险。 &#x1f310; 背景&#xff1a;隐蔽信道与上下文切换问题 当…...

C++ 与 Lua 联合编程

在软件开发的广阔天地里&#xff0c;不同编程语言各有所长。C 以其卓越的性能、强大的功能和对硬件的直接操控能力&#xff0c;在系统开发、游戏引擎、服务器等底层领域占据重要地位&#xff0c;但c编写的程序需要编译&#xff0c;这往往是一个耗时操作&#xff0c;特别对于大型…...

瑞萨 EZ-CUBE2 调试器

瑞萨 EZ-CUBE2 调试器 本文介绍了瑞萨 EZ-CUBE2 调试器的基本信息、调试方式、环境搭建、硬件连接、软件测试等。 包装展示 调试器展示 开关选项 详见&#xff1a;EZ-CUBE2 | Renesas 瑞萨电子 . 环境搭建 使用 Renesas 公司的 e2 studio 开发工具&#xff0c;下载 并安装该…...

MATLAB滤波工具箱演示——自定义维度、滤波方法的例程演示与绘图、数据输出

使用 M A T L A B MATLAB MATLAB的界面做了一个 M A T L A B MATLAB MATLAB滤波工具箱 d e m o demo demo&#xff0c;本文章给出演示&#xff1a;自定义维度、滤波方法的例程演示与绘图、数据输出 文章目录 编辑界面使用方法优势待改进点部分代码 编辑界面 使用 M A T L A B …...

数据库索引优化实战: 如何设计高效的数据库索引

数据库索引优化实战: 如何设计高效的数据库索引 一、理解数据库索引的核心原理 1.1 B树索引的结构特性 数据库索引&#xff08;Database Index&#xff09;的本质是通过特定数据结构加速数据检索。现代关系型数据库普遍采用B树&#xff08;B Tree&#xff09;作为默认索引结构&…...

TS 安装

TS较JS优势 1 TS静态类型编程语言。编译时发现错误 2 类型系统 强化变量类型概念 3 支持新语法 4 类型推断机制 可以和React框架中的各种hook配合 5 任何地方都有代码提示 tsc 命令 将TS转为JS 1 tsc 文件.ts 生成 js文件 2 执行JS代码...

CMake separate_arguments用法详解

separate_arguments 是 CMake 中用于将字符串分割成参数列表的命令&#xff0c;适用于处理包含空格的参数或复杂命令行参数。以下是其用法详解&#xff1a; 基本语法 separate_arguments(<variable> [UNIX|WINDOWS_COMMAND] [PROGRAM <program>] [ARGS <args&…...

【AI科技】AMD ROCm 6.4 新功能:突破性推理、即插即用容器和模块化部署,可在 AMD Instinct GPU 上实现可扩展 AI

AMD ROCm 6.4 新功能&#xff1a;突破性推理、即插即用容器和模块化部署&#xff0c;可在 AMD Instinct GPU 上实现可扩展 AI 现代 AI 工作负载的规模和复杂性不断增长&#xff0c;而人们对性能和部署便捷性的期望也日益提升。对于在 AMD Instinct™ GPU 上构建 AI 和 HPC 未来…...

2025年- H20-Lc128-240. 搜索二维矩阵 II(矩阵)---java版

1.题目描述 2.思路 遍历矩阵&#xff0c;然后如果遇到矩阵中的值正好等于target&#xff0c;输出true。否则&#xff0c;输出false。 3.代码 public class H240 {public boolean searchMatrix(int[][] matrix, int target) {//1.计算出总的行值&#xff0c;总的列值。int mm…...

LearningFlow:大语言模型城市驾驶的自动化策略学习工作流程

《LearningFlow: Automated Policy Learning Workflow for Urban Driving with Large Language Models》2025年1月发表&#xff0c;来自香港科技大学广州分校的论文。 强化学习&#xff08;RL&#xff09;的最新进展表明了自动驾驶的巨大潜力。尽管有这一前景&#xff0c;但奖励…...

C语言数据类型与内存布局

C语言数据类型内存占用 类型32位系统64位系统格式说明符char1字节1字节%cint4字节4字节%dfloat4字节4字节%fdouble8字节8字节%lflong long8字节8字节%lld...