DeepSeek-OCR-2与MySQL数据库集成实战:高效存储与检索OCR识别结果
DeepSeek-OCR-2与MySQL数据库集成实战高效存储与检索OCR识别结果1. 为什么需要将OCR结果存入数据库在实际业务中我们经常遇到这样的场景每天要处理几百份合同、上千张发票、上万页的扫描文档。DeepSeek-OCR-2虽然能精准识别文字内容但如果每次都需要重新运行模型才能获取结果效率会非常低下。就像你有一本很厚的字典每次查字都要从第一页翻到最后一面显然不如把常用字提前做成索引卡片来得快。我之前在一个金融文档处理项目中就遇到过这个问题。团队用DeepSeek-OCR-2识别了两万多份贷款合同但当业务部门想快速查找抵押物价值超过500万的合同或者统计2024年第三季度签订的合同数量时只能手动打开每一份识别结果文件——这花了整整三天时间。把OCR识别结果存入MySQL数据库就像给这些文档建了一个智能目录系统。你可以用一句简单的SQL语句在几秒钟内完成原本需要数小时的手动筛选工作。更重要的是数据库还能保证数据的一致性、安全性和可追溯性避免文件丢失或版本混乱的问题。这种集成方式特别适合需要长期保存、频繁查询、多用户协作的场景比如法律事务所的案卷管理、医院的病历数字化、银行的信贷档案系统等。它不是简单地把文本扔进数据库而是构建了一套完整的文档智能管理流程。2. 数据库表结构设计思路2.1 核心表设计原则设计数据库表时我始终坚持三个原则一是贴合业务需求二是考虑查询效率三是预留扩展空间。对于OCR识别结果最核心的是要保存原始图像信息、识别文本内容和元数据这三个维度。我们先创建一个基础的ocr_documents表它包含了所有必需字段CREATE TABLE ocr_documents ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键ID, document_name VARCHAR(255) NOT NULL DEFAULT COMMENT 文档名称, file_path VARCHAR(500) NOT NULL DEFAULT COMMENT 原始文件路径, file_size INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 文件大小字节, page_count TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT 页数, ocr_status TINYINT NOT NULL DEFAULT 0 COMMENT OCR状态0-待处理1-处理中2-成功3-失败, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (id), INDEX idx_status_created (ocr_status, created_at) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENTOCR文档主表;这个表的设计考虑到了实际使用中的几个关键点file_path字段存储了原始文件位置方便后续需要重新处理ocr_status状态字段支持异步处理流程复合索引idx_status_created能快速找到待处理的新文档。2.2 识别结果表设计OCR识别结果需要单独建表因为一份文档可能有多个页面每个页面的识别内容都不同。我们创建ocr_results表来存储具体的识别文本CREATE TABLE ocr_results ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键ID, document_id BIGINT UNSIGNED NOT NULL COMMENT 关联文档ID, page_number TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT 页码, text_content LONGTEXT NOT NULL COMMENT 识别的文本内容, markdown_content LONGTEXT COMMENT Markdown格式内容如果生成了, confidence_score DECIMAL(5,4) NOT NULL DEFAULT 0.0000 COMMENT 置信度分数, processing_time_ms INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 处理耗时毫秒, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), UNIQUE KEY uk_doc_page (document_id, page_number), INDEX idx_document_id (document_id), FULLTEXT KEY ft_text_content (text_content) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENTOCR识别结果表;这里有几个值得注意的设计细节UNIQUE KEY uk_doc_page确保同一文档的同一页不会重复存储FULLTEXT KEY ft_text_content为全文搜索提供了基础confidence_score字段记录了DeepSeek-OCR-2返回的置信度便于后续质量分析。2.3 元数据与标签表设计为了支持更灵活的查询和分类我们还需要一个元数据表来存储文档的业务属性CREATE TABLE ocr_metadata ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键ID, document_id BIGINT UNSIGNED NOT NULL COMMENT 关联文档ID, key_name VARCHAR(100) NOT NULL COMMENT 元数据键名, key_value TEXT COMMENT 元数据值, data_type ENUM(string, number, date, boolean) NOT NULL DEFAULT string COMMENT 数据类型, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), INDEX idx_document_key (document_id, key_name), INDEX idx_key_value (key_name, key_value(255)) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENTOCR元数据表; -- 创建标签关联表支持多标签分类 CREATE TABLE ocr_tags ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键ID, tag_name VARCHAR(100) NOT NULL COMMENT 标签名称, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), UNIQUE KEY uk_tag_name (tag_name) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENTOCR标签表; CREATE TABLE ocr_document_tags ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键ID, document_id BIGINT UNSIGNED NOT NULL COMMENT 文档ID, tag_id BIGINT UNSIGNED NOT NULL COMMENT 标签ID, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), UNIQUE KEY uk_doc_tag (document_id, tag_id), INDEX idx_tag_id (tag_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT文档-标签关联表;这套元数据和标签系统让我们的OCR系统具备了强大的业务适配能力。比如在财务场景中可以为每份发票自动添加invoice_number、issue_date、total_amount等元数据在法律场景中可以打上contract_type:employment、jurisdiction:shanghai等标签。3. DeepSeek-OCR-2识别结果入库实现3.1 识别与存储一体化流程将DeepSeek-OCR-2的识别结果存入MySQL关键是要建立一个可靠的端到端流程。我推荐采用识别-验证-存储三步法而不是简单地把识别结果直接插入数据库。首先我们需要一个Python脚本来协调整个流程import os import json import time from datetime import datetime import mysql.connector from mysql.connector import Error from transformers import AutoModel, AutoTokenizer import torch class OCRDatabaseManager: def __init__(self, db_config): self.db_config db_config self.connection None def connect(self): 建立数据库连接 try: self.connection mysql.connector.connect(**self.db_config) return True except Error as e: print(f数据库连接失败: {e}) return False def insert_document(self, file_path, file_size, page_count): 插入新文档记录 if not self.connection: return None cursor self.connection.cursor() try: query INSERT INTO ocr_documents (document_name, file_path, file_size, page_count, ocr_status, created_at) VALUES (%s, %s, %s, %s, %s, %s) document_name os.path.basename(file_path) now datetime.now() cursor.execute(query, (document_name, file_path, file_size, page_count, 0, now)) self.connection.commit() return cursor.lastrowid except Error as e: print(f插入文档记录失败: {e}) self.connection.rollback() return None finally: cursor.close() def update_ocr_status(self, doc_id, status): 更新OCR处理状态 if not self.connection: return False cursor self.connection.cursor() try: query UPDATE ocr_documents SET ocr_status %s, updated_at %s WHERE id %s cursor.execute(query, (status, datetime.now(), doc_id)) self.connection.commit() return True except Error as e: print(f更新状态失败: {e}) self.connection.rollback() return False finally: cursor.close() # 初始化数据库管理器 db_config { host: localhost, database: ocr_system, user: ocr_user, password: your_password, charset: utf8mb4 } db_manager OCRDatabaseManager(db_config) if not db_manager.connect(): raise Exception(无法连接到数据库)这段代码展示了如何建立数据库连接和基本的CRUD操作。注意我们使用了mysql.connector而不是ORM框架因为在高并发批量插入场景下原生SQL有更好的性能控制能力。3.2 批量插入优化策略当处理大量文档时逐条插入会严重影响性能。我测试过对1000页文档逐条插入需要约47秒而使用批量插入只需3.2秒。以下是批量插入的实现def batch_insert_results(self, results_data): 批量插入OCR结果 if not self.connection: return False cursor self.connection.cursor() try: # 使用INSERT ... VALUES (...)批量语法 query INSERT INTO ocr_results (document_id, page_number, text_content, markdown_content, confidence_score, processing_time_ms, created_at) VALUES (%s, %s, %s, %s, %s, %s, %s) # 准备批量数据 batch_data [] now datetime.now() for result in results_data: batch_data.append(( result[document_id], result[page_number], result[text_content][:65535], # MySQL TEXT字段限制 result.get(markdown_content, )[:65535], result.get(confidence_score, 0.0), result.get(processing_time_ms, 0), now )) # 执行批量插入 cursor.executemany(query, batch_data) self.connection.commit() return True except Error as e: print(f批量插入失败: {e}) self.connection.rollback() return False finally: cursor.close() # 使用示例 results_data [ { document_id: 123, page_number: 1, text_content: 这是第一页的识别内容..., confidence_score: 0.92, processing_time_ms: 1245 }, # 更多页面数据... ] db_manager.batch_insert_results(results_data)批量插入的关键在于使用executemany()方法它比循环调用execute()效率高出一个数量级。同时要注意MySQL的max_allowed_packet参数设置确保能处理大文本内容。3.3 DeepSeek-OCR-2集成代码现在让我们把DeepSeek-OCR-2的识别逻辑整合进来。以下是一个完整的端到端示例class DeepSeekOCRProcessor: def __init__(self, model_namedeepseek-ai/DeepSeek-OCR-2): self.model_name model_name self.tokenizer None self.model None self._load_model() def _load_model(self): 加载DeepSeek-OCR-2模型 print(正在加载DeepSeek-OCR-2模型...) try: self.tokenizer AutoTokenizer.from_pretrained( self.model_name, trust_remote_codeTrue ) self.model AutoModel.from_pretrained( self.model_name, _attn_implementationflash_attention_2, trust_remote_codeTrue, use_safetensorsTrue ) self.model self.model.eval().cuda().to(torch.bfloat16) print(模型加载成功) except Exception as e: print(f模型加载失败: {e}) raise def process_image(self, image_file, promptimage\nFree OCR. ): 处理单张图片 start_time time.time() try: # 执行OCR识别 res self.model.infer( self.tokenizer, promptprompt, image_fileimage_file, output_pathNone, base_size1024, image_size768, crop_modeTrue, save_resultsFalse ) end_time time.time() processing_time int((end_time - start_time) * 1000) # 提取识别结果 text_content res.get(text, ) markdown_content res.get(markdown, ) confidence_score res.get(confidence, 0.0) return { text_content: text_content, markdown_content: markdown_content, confidence_score: confidence_score, processing_time_ms: processing_time } except Exception as e: print(f图片处理失败 {image_file}: {e}) return None def process_document(self, file_path, db_manager, doc_id): 处理整个文档支持PDF和图片 # 这里简化处理实际项目中需要PDF分页逻辑 if file_path.lower().endswith(.pdf): # PDF处理逻辑需要PyMuPDF等库 pass else: # 单图处理 result self.process_image(file_path) if result: # 构建结果数据 result_data { document_id: doc_id, page_number: 1, text_content: result[text_content], markdown_content: result[markdown_content], confidence_score: result[confidence_score], processing_time_ms: result[processing_time_ms] } # 更新数据库状态 db_manager.update_ocr_status(doc_id, 1) # 设置为处理中 # 插入结果 success db_manager.insert_result(result_data) if success: db_manager.update_ocr_status(doc_id, 2) # 设置为成功 print(f文档 {doc_id} 处理完成) else: db_manager.update_ocr_status(doc_id, 3) # 设置为失败 # 使用示例 processor DeepSeekOCRProcessor() # 假设我们已经通过db_manager.insert_document()获得了doc_id doc_id 123 processor.process_document(/path/to/document.jpg, db_manager, doc_id)这个处理器类封装了模型加载、图片处理和数据库交互的完整流程。实际项目中你可能需要根据具体需求调整提示词prompt比如使用|grounding|Convert the document to markdown.来获取结构化输出。4. 查询优化与实用技巧4.1 高效查询模式有了结构化的OCR数据我们可以实现各种高效的业务查询。以下是一些常用的SQL示例-- 查找包含特定关键词的所有文档利用全文索引 SELECT DISTINCT d.id, d.document_name, d.file_path FROM ocr_documents d JOIN ocr_results r ON d.id r.document_id WHERE MATCH(r.text_content) AGAINST(合同金额大于100万 IN NATURAL LANGUAGE MODE) ORDER BY d.created_at DESC LIMIT 20; -- 按日期范围和关键词组合查询 SELECT d.document_name, r.page_number, r.text_content FROM ocr_documents d JOIN ocr_results r ON d.id r.document_id WHERE d.created_at BETWEEN 2024-01-01 AND 2024-12-31 AND r.text_content LIKE %违约责任% ORDER BY d.created_at DESC; -- 统计各类型文档的数量 SELECT COUNT(*) as total_count, SUM(CASE WHEN r.confidence_score 0.9 THEN 1 ELSE 0 END) as high_confidence, SUM(CASE WHEN r.confidence_score 0.7 THEN 1 ELSE 0 END) as low_confidence FROM ocr_documents d JOIN ocr_results r ON d.id r.document_id;这些查询之所以高效是因为我们前期设计的索引发挥了作用。特别是全文索引ft_text_content让关键词搜索变得非常快速。4.2 性能优化实践在实际部署中我发现以下几个优化点对性能提升非常明显第一合理使用分区表。对于大型系统按时间分区可以大幅提升查询效率-- 按月分区的文档表 CREATE TABLE ocr_documents_partitioned ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, document_name VARCHAR(255) NOT NULL DEFAULT , file_path VARCHAR(500) NOT NULL DEFAULT , file_size INT UNSIGNED NOT NULL DEFAULT 0, page_count TINYINT UNSIGNED NOT NULL DEFAULT 1, ocr_status TINYINT NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id, created_at), INDEX idx_status_created (ocr_status, created_at) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 PARTITION BY RANGE (TO_DAYS(created_at)) ( PARTITION p202401 VALUES LESS THAN (TO_DAYS(2024-02-01)), PARTITION p202402 VALUES LESS THAN (TO_DAYS(2024-03-01)), PARTITION p202403 VALUES LESS THAN (TO_DAYS(2024-04-01)), PARTITION p_future VALUES LESS THAN MAXVALUE );第二配置合适的MySQL参数。在my.cnf中调整以下参数# 提高全文搜索性能 ft_min_word_len 2 ft_max_word_len 84 innodb_ft_enable_stopword OFF # 优化大文本处理 max_allowed_packet 64M innodb_log_file_size 256M innodb_buffer_pool_size 2G # 根据服务器内存调整 # 连接池优化 wait_timeout 28800 max_connections 200第三建立业务专用视图。为常用查询创建视图简化应用层代码-- 创建常用文档视图 CREATE VIEW ocr_documents_summary AS SELECT d.id, d.document_name, d.file_path, d.page_count, d.ocr_status, r.confidence_score, r.processing_time_ms, d.created_at, -- 提取前100字符作为摘要 LEFT(r.text_content, 100) as content_preview FROM ocr_documents d JOIN ocr_results r ON d.id r.document_id WHERE r.page_number 1; -- 只取第一页内容 -- 使用视图查询 SELECT * FROM ocr_documents_summary WHERE confidence_score 0.85 ORDER BY created_at DESC LIMIT 10;4.3 实用查询工具函数为了方便开发人员使用我编写了一些实用的查询工具函数def search_documents_by_keyword(db_manager, keyword, limit20): 按关键词搜索文档 if not db_manager.connection: return [] cursor db_manager.connection.cursor(dictionaryTrue) try: query SELECT DISTINCT d.id, d.document_name, d.file_path, r.confidence_score, d.created_at FROM ocr_documents d JOIN ocr_results r ON d.id r.document_id WHERE MATCH(r.text_content) AGAINST(%s IN NATURAL LANGUAGE MODE) ORDER BY d.created_at DESC LIMIT %s cursor.execute(query, (keyword, limit)) return cursor.fetchall() except Error as e: print(f搜索失败: {e}) return [] finally: cursor.close() def get_document_with_context(db_manager, doc_id, context_length200): 获取文档内容及上下文 if not db_manager.connection: return None cursor db_manager.connection.cursor(dictionaryTrue) try: query SELECT r.text_content, r.markdown_content, d.document_name, d.file_path FROM ocr_documents d JOIN ocr_results r ON d.id r.document_id WHERE d.id %s AND r.page_number 1 cursor.execute(query, (doc_id,)) result cursor.fetchone() if result and result[text_content]: # 截取部分内容作为预览 preview result[text_content][:context_length] ... if len(result[text_content]) context_length else result[text_content] result[preview] preview return result except Error as e: print(f获取文档失败: {e}) return None finally: cursor.close() # 使用示例 documents search_documents_by_keyword(db_manager, 保密协议, limit10) for doc in documents: print(f{doc[document_name]} - 置信度: {doc[confidence_score]:.2f}) doc_detail get_document_with_context(db_manager, 123) if doc_detail: print(f文档预览: {doc_detail[preview]})这些工具函数封装了复杂的SQL逻辑让业务代码更加简洁易读。它们还包含了错误处理和资源清理确保数据库连接的安全使用。5. 实际应用中的经验分享5.1 处理常见问题的解决方案在实际项目中我遇到了几个典型问题分享一下解决思路问题一长文本截断。MySQL的TEXT字段最大长度是65535字节而DeepSeek-OCR-2有时会生成更长的Markdown内容。我的解决方案是对超长内容进行分块存储创建ocr_results_parts表在应用层实现自动拼接逻辑或者使用MEDIUMTEXT类型16MB但要注意max_allowed_packet设置问题二中文全文搜索效果不佳。MySQL默认的全文索引对中文支持有限我采用了两种方案使用ngram全文解析器ALTER TABLE ocr_results ADD FULLTEXT(text_content) WITH PARSER ngram;或者在应用层集成Elasticsearch专门处理复杂搜索需求问题三高并发下的性能瓶颈。当多个进程同时写入数据库时会出现锁等待。解决方案包括使用连接池管理数据库连接对写操作进行队列化处理为高频查询字段添加覆盖索引-- 创建覆盖索引避免回表查询 CREATE INDEX idx_doc_status_time ON ocr_documents (ocr_status, created_at, id, document_name);5.2 生产环境部署建议基于多个项目的实践经验我总结了几条生产环境部署建议数据库配置方面使用主从复制架构读写分离定期备份和binlog归档监控慢查询日志及时优化应用架构方面采用微服务架构OCR识别服务与数据库服务分离使用消息队列如RabbitMQ解耦识别和存储流程实现重试机制和死信队列处理失败任务监控告警方面监控OCR处理成功率、平均耗时、数据库连接数设置置信度阈值告警自动标记低质量识别结果记录详细的处理日志便于问题追踪5.3 效果评估与持续改进最后想强调的是技术集成的价值最终要体现在业务效果上。我建议建立一套简单的评估体系处理效率对比集成前后处理相同文档集的时间查询效率记录典型查询的响应时间变化业务价值统计通过数据库查询节省的人力工时在我参与的一个税务文档系统中集成后实现了文档处理速度提升3.2倍从平均8.7秒/页到2.7秒/页关键词搜索响应时间从12秒降低到0.3秒以内业务人员每月节省约120小时的手动文档查找时间这些数字比任何技术参数都更有说服力。技术本身不是目的帮助业务更好地运转才是我们追求的目标。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻

灵感画廊创作秘籍:轻松玩转AI绘画的10个技巧

灵感画廊创作秘籍:轻松玩转AI绘画的10个技巧

灵感画廊创作秘籍:轻松玩转AI绘画的10个技巧 “见微知著,凝光成影。将梦境的碎片,凝结为永恒的视觉诗篇。” ——灵感画廊 Atelier of Light and Shadow 你是否曾在深夜闪过一个画面:雨巷青石板上泛着微光的伞、浮世绘里游动的锦…

2026/7/3 18:38:34 阅读更多 →
RMBG-2.0效果展示:镜面高光区域(如额头/鼻尖)分割连续性验证

RMBG-2.0效果展示:镜面高光区域(如额头/鼻尖)分割连续性验证

RMBG-2.0效果展示:镜面高光区域(如额头/鼻尖)分割连续性验证 1. 为什么镜面高光是背景移除的“试金石” 很多人以为背景移除只要能把人或商品“框出来”就行,其实真正考验模型功力的地方,恰恰藏在那些最不起眼却最难…

2026/7/3 11:52:04 阅读更多 →
Ollama部署granite-4.0-h-350m:文本提取与增强检索生成实战

Ollama部署granite-4.0-h-350m:文本提取与增强检索生成实战

Ollama部署granite-4.0-h-350m:文本提取与增强检索生成实战 1. 为什么选granite-4.0-h-350m做文本处理?轻量不等于简单 你有没有遇到过这样的场景:手头有一堆PDF合同、扫描件表格、网页爬取的杂乱文本,需要快速从中抽取出关键条…

2026/7/3 0:33:33 阅读更多 →

最新新闻

半导体百科 | 扩散与退火工艺详解:热预算控制与RTP实战

半导体百科 | 扩散与退火工艺详解:热预算控制与RTP实战

一、问题背景 做工艺整合的都知道,离子注入只是前戏,真正的重头戏在后面——退火。有一次我做0.13μm逻辑工艺的源漏注入后热工艺窗口评估,愣是被热预算计算搞崩溃了三天。因为炉管退火和RTP快速热退火的温度曲线完全不同,同样的…

2026/7/3 18:40:42 阅读更多 →
银发科技与多元渠道的“价值共振”:银发智能科技产品与线上线下渠道对接会圆满落幕

银发科技与多元渠道的“价值共振”:银发智能科技产品与线上线下渠道对接会圆满落幕

​2026年6月30日下午,由AgeClub(上海银创同行科技有限公司)主办、上海市养老科技产业园协办的“数智银发,生态共赢——银发智能科技产品与线上线下渠道对接会”在产业园403报告厅圆满举行。活动汇聚了如身机器人、程天科技、小维健…

2026/7/3 18:36:40 阅读更多 →
IntelliJ UI自动化测试框架:Remote Robot原理、配置与最佳实践

IntelliJ UI自动化测试框架:Remote Robot原理、配置与最佳实践

1. 项目概述:IntelliJ UI 测试机器人如果你正在为你的 IntelliJ IDEA 插件编写功能测试,或者想自动化一些繁琐的 IDE 操作流程,那么手动点击、肉眼观察的方式很快就会让你感到力不从心。尤其是在插件功能复杂、涉及多个对话框和菜单交互时&am…

2026/7/3 18:32:39 阅读更多 →
临沂不锈钢铝蜂窝吊顶选材技术参数与性能评测要点

临沂不锈钢铝蜂窝吊顶选材技术参数与性能评测要点

在建筑装饰材料市场,临沂不锈钢铝蜂窝吊顶产品正逐步替代传统石膏板与铝扣板吊顶,成为公共空间与高端住宅装修的热门选项。这种材料本质是一种“三明治结构”,核心在于将不锈钢面板与高强度铝蜂窝芯通过专用复合工艺紧密压合。选材与评测&…

2026/7/3 18:32:39 阅读更多 →
【hive学习笔记2】

【hive学习笔记2】

笔记关联-hive学习笔记 测试Demo 1.首先在windows上(本地)创建几个文件(放一列数据),如:2.在hive建表3.上传数据上传成功显示4.测试查询hive系统架构上图所示是hive的主要组件及其与Hadoop的交互方式&#…

2026/7/3 18:30:39 阅读更多 →
act仿真,任务层

act仿真,任务层

整体分层 任务与环境层:sim_env.py(关节空间控制)、ee_sim_env.py(末端位姿控制)、scripted_policy.py(脚本策略)、assets(MuJoCo XML 场景)。数据层:record…

2026/7/3 18:30:39 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻