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

SAP HANA使用命令行快速导出导入

楔子

今天折腾了接近一下午,就为了使用SAP HANA自带的命令行工具来导出数据备份。

SAP HANA(后续简称Hana)是内存数据库,性能这一方面上还真没怕过谁。

由于SAP HANA提供了Hana Studio这个桌面工具来方便运维和DBA使用,官方的教程也是用Hana Studio进行演示的,但是这有点麻烦:

  • Hana运行在服务器上,Hana Studio作为客户端运行在终端电脑上,使用Hana的场景基本上就是数据量大导致查询慢的场景,都这种情况了,难不成还得把备份完整不压缩的数据放到运维的电脑上?

  • 跨主机导入、导出受带宽和交换机的性能影响,传输效率会不会太低了点呢?

  • 普通电脑的配置不会太高,CPU和网卡的性能不见得会很快,导入、导出效率低势必会让操作人花费大量的时间

  • Hana Studio是基于eclipse开发的,本质上是个Java程序,占用内存会比较多,如果因为导出、导入时数据太大把Hana Studio内存给撑爆了呢?这不又得重新操作了嘛!

  • 而且导数据期间,这电脑基本干不了啥事了。

那么有没有一种办法能不占用运维、DBA的主机网络、硬盘,效率还能翻上几翻的办法呢?

  • 有的,兄弟,有的。
  • 那就是命令行操作,在数据库服务器上使用一部分CPU、硬盘去执行备份。
  • 命令行操作还有个好处是可以在传输前在服务器本地压缩一下,大大减少硬盘使用量以及传输压力。

本文采用SAP HANA的命令行工具hdbsql进行处理,由于在网上找资料和AI问答都很费劲,这才花时间整理出这篇资料。

一方面这符合我目前的DevOps的工作定位————提升效率,

另一方面也能减少被Hana Studio支配的苦恼————谁愿意装这种破玩意儿,操作逻辑反人类!

我会在本文中放上官方文档相关内容以待读者自行参考,在文章最后放上我踩坑总结的操作方法。

心动不如行动,我们开始吧,始吧,吧……(说话有回音才能显得我比较高大)

环境

公司目前使用hana官方的express edition 2.00.xx.00.20240701.1镜像部署测试环境数据库。

命令同样适用于2.00.xx其他版本(暂未在其他大版本上试验过,读者可自行尝试),

理论上命令行工具的设计应是跨版本一致的。

文中 SYSTEM 假定密码为 abcdefg ,普通用户 GCREPORT_PRD 假定密码为 12345678

迁移导入到普通用户 GCREPORT_TEST 假定密码为 87654321

数据库用户及组ID为12000:79

官方文档

参考自《SAP HANA数据库–SQL参考手册》数据导入导出语句 章节。

EXPORT - 导出命令

语法:

EXPORT <object_name_list> AS <export_format> INTO <path> [WITH <export_option_list>]

语法元素:

WITH <export_option_list>: 可以使用 WITH 子句传入 EXPORT 选项。 <object_name_list> ::= <OBJECT_NAME>,... | ALL <export_import_format> ::= BINARY | CSV <path> ::= 'FULL_PATH' <export_option_list> ::= <export_option> | <export_option_list> <export_option> <export_option> ::= REPLACE | CATALOG ONLY | NO DEPENDENCIES | SCRAMBLE [BY <password>] | THREADS <number_of_threads> 

描述:

EXPORT

命令以指定的格式 BINARY 或者 CSV,导出表、视图、列视图、同义词、序列或者存储过程。临时表的数据和"no logging"表不能使用 EXPORT 导出表。

OBJECT_NAME

将导出对象的 SQL 名。欲导出所有集合下的所有对象,你要使用 ALL 关键字。如果你想导出指定集合下的对象,你应该使用集合名和星号,如"SYSTEM".“*”。

BINARY

表数据将以内部 BINARY 格式导出。使用这种方式导出数据比以 CSV 格式快几个数量级。只有列式表可以以二进制格式导出。行式表总是以 CSV 格式导出,即使指定了 BINARY 格式。

CSV

表数据将以 CSV 格式导出。导出的数据可以导入至其他数据库中。另外,导出的数据顺序可能被打乱。列式和行式表都可以以 CSV 格式导出。

FULL_PATH

将导出的服务器路径。

注意:当使用分布式系统,FULL_PATH 必须指向一个共享磁盘。由于安全性原因,路径可能不包含符号链接,也可能不指向数据库实例的文件夹内,除了’backup’ 和 'work’子文件夹。有效路径(假设数据库实例位于/usr/sap/HDB/HDB00)的例子:

'/tmp' 
'/usr/sap/HDB/HDB00/backup' 
'/usr/sap/HDB/HDB00/work' 

REPLACE

使用 REPLACE 选项,之前导出的数据将被删除,而保存最新导出的数据。如果未指定 REPLACE 选项,如果在指定目录下存在先前导出的数据,将抛出错误。

CATALOG ONLY

使用 CATALOG ONLY 选项,只导出数据库目录,不含有数据。

NO DEPENDENCIES

使用 NO DEPENDENCIES 选项,将不导出已导出对象的相关对象。

SCRAMBLE

以 CSV 格式导出时,使用 SCRAMBLE [BY '<password>'],可以扰乱敏感的客户数据。当未指定额外

的数据库,将使用默认的扰乱密码。只能扰乱字符串数据。导入数据时,扰乱数据将以乱序方式

导入,使最终用户无法读取数据,并且不可能回复原状。

THREADS

表示用于并行导出的线程数。

使用的线程数给定 THREADS 数目指定并行导出的对象数,默认为 1。增加数字可能减少导出时间,但也会影响系统性能。

应当考虑如下:

  • 对于单个表,THREADS 没有效果。

  • 对于视图或者存储过程,应使用 2 个或更多的线程(最多取决于对象数)。

  • 对于整个集合,考虑使用多于 10 个线程(最多取决于系统内核数)。

  • 对于整个 BW / ERP 系统(ALL 关键字)的上千张表,数量大的线程是合理的(最多 256)。

系统和监控视图:

你可以使用系统视图 M_EXPORT_BINARY_STATUS 监控导出的进度。

你可以在如下语句中,使用会话 ID 从相应的视图中终止导出会话。

ALTER SYSTEM CANCEL [WORK IN] SESSION 'sessionId'

导出的详细结果存储在本地会话临时表#EXPORT_RESULT。

例子:

EXPORT "SCHEMA"."*" AS CSV INTO '/tmp' WITH REPLACE SCRAMBLE THREADS 10

IMPORT - 导入命令

语法:

IMPORT <object_name_list> [AS <import_format>] FROM <path> [WITH <import_option_list>]

语法元素:

WITH <import_option_list>: 可以使用 WITH 子句传入 IMPORT 选项。 <object_name_list> ::= <object_name>,... | ALL <import_format> ::= BINARY | CSV <path> ::= 'FULL_PATH' <import_option_list> ::= <import_option> | <import_option_list> <import_option> <import_option> ::= REPLACE | CATALOG ONLY | NO DEPENDENCIES | THREADS <number_of_threads> 

描述:

IMPORT 命令导入表、视图、列视图、同义词、序列或者存储过程。临时表的数据和"no logging"表不能使用 IMPORT 导入。

OBJECT_NAME

将导入对象的 SQL 名。欲导入路径中的所有对象,你要使用 ALL 关键字。如果你想将对象导入至指定集合下,你应该使用集合名和星号,如"SYSTEM".“*”。

BINARY | CSV

导入过程可能忽略格式的定义,因为在导入过程中,将自动检测格式。将以导出的同样格式导入。

FULL_PATH

从该服务器路径导入。

注意:当使用分布式系统,FULL_PATH 必须指向一个共享磁盘。如果未指定 REPLACE 选项,在指定目录下存在相同名字的表,将抛出错误。

CATALOG ONLY

使用 CATALOG ONLY 选项,只导入数据库目录,不含有数据。

NO DEPENDENCIES

使用 NO DEPENDENCIES 选项,将不导入已导入对象的相关对象。

THREADS

表示用于并行导入的线程数。

使用的线程数给定 THREADS 数目指定并行导入的对象数,默认为 1。增加数字可能减少导入时间,但也会影响系统性能。

应当考虑如下:

  • 对于单个表,THREADS 没有效果。
  • 对于视图或者存储过程,应使用 2 个或更多的线程(最多取决于对象数)。
  • 对于整个集合,考虑使用多余 10 个线程(最多取决于系统内核数)。 对于整个 BW / ERP 系统(ALL 关键字)的上千张表,数量大的线程是合理的(最多 256)。

系统和监控视图:

你可以使用系统视图 M_IMPORT_BINARY_STATUS 监控导入的进度。

你可以在如下语句中,使用会话 ID 从相应的视图中终止导入会话。

ALTER SYSTEM CANCEL [WORK IN] SESSION 'sessionId'

导入的详细结果存储在本地会话临时表#IMPORT_RESULT。


IMPORT FROM - 将外部 csv 文件的数据导入至一个已有的表中

语法:

IMPORT FROM [<file_type>] <file_path> [INTO <table_name>] [WITH <import_from_option_list>]

语法元素:

WITH <import_from_option_list>: 可以使用 WITH 子句传入 IMPORT FROM 选项。 <file_path> ::= '<character>...' <table_name> ::= [<schema_name>.]<identifier> <import_from_option_list> ::= <import_from_option> | <import_from_option_list> <imp ort_from_option> <import_from_option> :: = THREADS <number_of_threads> | BATCH <number_of_records_of_each_commit> | TABLE LOCK | NO TYPE CHECK | SKIP FIRST <number_of_rows_to_skip> ROW | COLUMN LIST IN FIRST ROW | COLUMN LIST ( <column_name_list> ) | RECORD DELIMITED BY '<string_for_record_delimiter>' | FIELD DELIMITED BY '<string_for_field_delimiter>' | OPTIONALLY ENCLOSED BY '<character_for_optional_enclosure>' | DATE FORMAT '<string_for_date_format>' | TIME FORMAT '<string_for_time_format>' | TIMESTAMP FORMAT '<string_for_timestamp_format>' | 

描述:

IMPORT FROM 语句将外部 csv 文件的数据导入至一个已有的表中。

THREADS:表示可以用于并行导出的线程数。默认值为 1,最大值为 256。

BATCH:表示每个提交中可以插入的记录数。

THREADS 和 BATCH 可以通过启用并行加载和一次提交多条记录,实现加载的高性能。一般而言, 对于列式表, 10 个并行加载线程以及 10000 条记录的提交频率是比较好的设置。

TABLE LOCK:锁住表为了更快的导入数据至列式表。如果指定了 NO TYPE CHECK,记录将在插入时,不检查每个字段的类型。

SKIP FIRST <int> ROW:跳过插入前 n 条记录。

COLUMN LIST IN FIRST ROW:表示在 CSV 文件中第一行的列。

COLUMN LIST ( <column_name_list> ):表示将要插入的字段列表。

RECORD DELIMITED BY '<string>':表示 CSV 文件中的记录分隔符。

FIELD DELIMITED BY '<string>':表示 CSV 文件中的字段分隔符。

OPTIONALLY ENCLOSED BY '<character>':表示字段数据的可选关闭符。

DATE FORMAT '<string>':表示字符的日期格式。如果 CSV 文件有日期类型,将为日期类型字段使用指定的格式。

TIME FORMAT '<string>':表示字符的时间格式。如果 CSV 文件有时间类型,将为时间类型字段使用指定的格式。

TIMESTAMP FORMAT '<string>':表示字符的时间戳格式。如果 CSV 文件有时间戳类型,将为日期类型字段使用指定的格式。

例子:

IMPORT FROM CSV FILE '/data/data.csv' INTO "MYSCHEMA"."MYTABLE" WITH RECORD DELIMITED BY  
'\n' FIELD DELIMITED BY ',';

踩坑总结

坑1:Hana镜像的SYSTEM用户竟然没有备份的权限,只有导入的权限。

坑2:虽然SYSTEM用户有部分权限的授予权限,但Hana限制当前用户不能为当前用户赋权,导出只能由普通用户执行。

坑3:不像传统数据库SQL那样,hdbsql登录后可以输入英文单引号和双引号,但是这两者并不等同!

以下命令均在数据库服务器所在环境中执行。

导出

(仅首次需要)为用户授备份与导出权限,这里为GCREPORT_PRD用户赋权。

hdbsql -i 90 -d HXE -u SYSTEM -p 'abcdefg'
GRANT BACKUP ADMIN,EXPORT TO GCREPORT_PRD;
\q

登录GCREPORT_PRD用户,执行4线程导出操作。

hdbsql -i 90 -d HXE -u GCREPORT_PRD -p '12345678'
EXPORT GCREPORT_PRD."*" AS BINARY INTO '/hana/mounts/GCREPORT_PRD' WITH REPLACE THREADS 4;
\q

特别注意:"*"用得是英文双引号,前边的用户SCHEMA名称也可以用英文双引号包围,不能用单引号!

压缩、迁移与解压

cd /hana/mounts
tar zcf GCREPORT_PRD.tar.gz GCREPORT_PRD

假设已将GCREPORT_PRD.tar.gz移到另一个服务上,解压

cd /hana/mounts
tar zxf GCREPORT_PRD.tar.gz

授权(仅供参考)

chown 12000:79 -R GCREPORT_PRD

导入

使用SYSTEM用户导入就行,这里切换了SCHEMA,由GCREPORT_PRD导入为GCREPORT_TEST。

hdbsql -i 90 -d HXE -u SYSTEM -p 'abcdefg'
IMPORT ALL AS BINARY FROM '/hana/mounts/GCREPORT_PRD' WITH REPLACE RENAME SCHEMA GCREPORT_PRD TO GCREPORT_TEST THREADS 4;
\q

如需使用普通用户导入,则使用SYSTEM用户登录hdbsql为其赋权,执行GRANT IMPORT TO 用户名; ,然后再使用普通用户登录与导入。

今天的文章就到这里了,如果对你有启发,给我来个点赞、关注呗!

我是Hellxz,下次见!

相关文章:

SAP HANA使用命令行快速导出导入

楔子 今天折腾了接近一下午&#xff0c;就为了使用SAP HANA自带的命令行工具来导出数据备份。 SAP HANA&#xff08;后续简称Hana&#xff09;是内存数据库&#xff0c;性能这一方面上还真没怕过谁。 由于SAP HANA提供了Hana Studio这个桌面工具来方便运维和DBA使用&#xf…...

Oracle DBMS_SCHEDULER 与 DBMS_JOB 的对比

Oracle DBMS_SCHEDULER 与 DBMS_JOB 的对比 一 基本概述对比 特性DBMS_JOB (旧版)DBMS_SCHEDULER (新版)引入版本Oracle 7 (1992年)Oracle 10g R1 (2003年)当前状态已过时但仍支持推荐使用的标准设计目的基础作业调度企业级作业调度系统 二 功能特性对比 2.1 作业定义能力 …...

【音视频】音视频FLV合成实战

FFmpeg合成流程 示例本程序会⽣成⼀个合成的⾳频和视频流&#xff0c;并将它们编码和封装输出到输出⽂件&#xff0c;输出格式是根据⽂件扩展名⾃动猜测的。 示例的流程图如下所示。 ffmpeg 的 Mux 主要分为 三步操作&#xff1a; avformat_write_header &#xff1a; 写⽂件…...

10.(vue3.x+vite)div实现tooltip功能(css实现)

1:效果截图 2:代码实现 <template><div><div class="tooltip" style="margin-top: 20%; margin-left: 20%; background-color: blueviolet; color: white;...

代码随想录算法训练营第三十七天| 52. 携带研究材料 518.零钱兑换II 377. 组合总和 Ⅳ 70. 爬楼梯(进阶版)

[TOC](代码随想录算法训练营第三十七天| 52. 携带研究材料 518.零钱兑换II 377. 组合总和 Ⅳ 70. 爬楼梯(进阶版) ) 入营第三十七天 难度&#xff1a;难 计划任务 完成任务 52. 携带研究材料 动态规划五部曲&#xff1a; 1.确定dp数组以及下标含义 dp[i][j]表示从下标[0-i]的…...

数智化招标采购系统分类及功能亮点

数智化招标采购系统是郑州信源公司运用“互联网”、大数据、人工智能、区块链、物联网等新兴技术&#xff0c;结合供应链管理理念&#xff0c;以招标采购为核心&#xff0c;提供交易、管理、数据、服务、监管为一体的高标准采购管理平台&#xff0c;赋能政企用户实现采购业务全…...

CSS appearance 属性:掌握UI元素的原生外观

在现代网页设计中&#xff0c;为了达到一致的用户体验&#xff0c;我们有时需要让HTML元素模仿操作系统的默认控件样式。CSS中的appearance属性提供了一种简便的方式来控制这些元素是否以及如何显示其默认外观。本文将详细介绍appearance属性&#xff0c;并通过实际代码示例来展…...

【JavaScript】二十四、JS的执行机制事件循环 + location + navigator + history

文章目录 1、JS执行机制&#xff08;事件循环eventloop&#xff09;2、BOM的window3、location对象3.1 href属性3.2 search属性3.3 hash属性3.4 reload方法 4、navigator对象5、history对象 1、JS执行机制&#xff08;事件循环eventloop&#xff09; 以下&#xff0c;两段代码…...

CSS核心笔记002

margin塌陷问题 第一个子元素的上margin会作用在父元素上, 最后一个子元素的下margin会作用在父元素上解决 1. 给父元素设置 不为0的pandding 2. 给父元素设置宽度不为0 的border 3. 给父元素设置样式 overflow:hiddenmargin合并问题 兄弟元素的下外margin和会下面兄弟的上…...

前端路由缓存实现

场景&#xff1a;以一体化为例&#xff1a;目前页面涉及页签和大量菜单路由&#xff0c;用户想要实现页面缓存&#xff0c;即列表页、详情页甚至是编辑弹框页都要实现数据缓存。 方案&#xff1a;使用router-view的keep-alive实现 。 一、实现思路 1.需求梳理 需要缓存模块&…...

加密软件的发展:从古典密码到量子安全

在数字化时代&#xff0c;信息安全已成为个人隐私、商业机密乃至国家安全的重要基石。加密软件作为保护信息安全的核心工具&#xff0c;经历了从简单替换到复杂算法的漫长演变过程。本文将系统梳理加密软件的发展历程&#xff0c;分析当前主流技术&#xff0c;并展望未来趋势。…...

用Zotero + Word 宏,一键插入带超链接的参考文献!

第一步&#xff1a;准备好Zotero Word 确认你已经完成以下准备&#xff1a; ✅ 已安装好 Zotero ✅ 已安装好 Zotero Word 插件&#xff08;一般自动装好了&#xff09; ✅ Word 可以正常插入参考文献 ✅ 已插入好一组参考文献&#xff08;可以先插几个测试&#xff09; …...

Java SpringBoot的自定义配置

一&#xff0c;一个类多个属性的情况 application.properties配置文件写法 my.config.ip127.0.0.1 my.config.port8080自定义配置类&#xff1a;MyTestConfig import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.context.properties…...

Spring Boot 动态热更新 HTTPS 证书的实现与原理

在实际生产环境中&#xff0c;HTTPS 证书定期更新是非常常见的需求。传统方式通常要求重启服务来加载新证书&#xff0c;但在一些高可用系统中&#xff0c;重启服务会造成连接中断和短暂不可用。本篇文章将介绍如何在 Spring Boot 项目中&#xff0c;实现 不重启服务的情况下热…...

天工股份业绩大起大落:2024营收双位数下滑,稳定性或存疑

《港湾商业观察》施子夫 近期&#xff0c;江苏天工科技股份有限公司&#xff08;以下简称&#xff0c;“天工股份”&#xff09;拟公开发行股票并在北京证券交易所上市获得中国证监会同意注册&#xff0c;完成上市审核阶段中最后也是最关键的一步。 值得一提的是&#xff0c;…...

深入浅出 NVIDIA CUDA 架构与并行计算技术

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、CUDA为何重要&#xff1a;并行计算的时代 2、NVIDIA在…...

网安融合:打造网络+安全一体化的超预期体验

近日,2025锐捷网络EBG(中国)核心伙伴大会在苏州圆满落幕。来自全国2000合作伙伴齐聚苏州,共同见证这场盛会的举办。会上,锐捷网络发布了七大战略产品解决方案。其中网络安全产品事业部产品市场总监沈世海发布了“打造网络安全一体化的超预期体验”的主题报告。报告围绕让“让渠…...

通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等

通义灵码新上的外挂 Project Rules 获得了开发者的一致好评&#xff1a;最小成本适配我的开发风格、相当把团队经验沉淀下来&#xff0c;是个很好功能…… 那么有哪些现成的 Rules 可以抄作业呢&#xff0c;今天我们官方输出了 Java、TypeScript、Python、Go、JavaScript 等语…...

3D人脸扫描技术如何让真人“进入“虚拟,虚拟数字人反向“激活“现实?

随着虚拟人技术的飞速发展&#xff0c;超写实数字人已经成为数字娱乐、广告营销和虚拟互动领域的核心趋势。无论是企业家、知名主持人还是明星&#xff0c;数字分身正在以高度还原的形象替代真人参与各类活动&#xff0c;甚至成为品牌代言、直播互动的新宠。 3D人脸扫描&#…...

12孔AG调陶笛音域全解析:从E4到C6的演奏艺术

一、音域范围的精准界定 12孔AG调陶笛的音域范围为E4&#xff08;低音Mi&#xff09;至C6&#xff08;高音Do&#xff09;&#xff0c;横跨13个自然音级&#xff08;即E4-F4-G4-A4-B4-C5-D5-E5-F5-G5-A5-B5-C6&#xff09;。若以半音计算&#xff0c;实际覆盖15个半音&#xf…...

IDEA编译错误Refer to the generated Javadoc files in xxx apidocs dir

文章目录 一、IDEA编译报错 Refer to the generated Javadoc1.1、报错内容1.2、解决办法 一、IDEA编译报错 Refer to the generated Javadoc 1.1、报错内容 Command line was: /opt/jdk1.8.0_181/jre/../bin/javadoc options packagesRefer to the generated Javadoc files i…...

高效培训,借助课程编辑器塑造卓越团队​

&#xff08;一&#xff09;打造沉浸式培训体验​ 在企业人才培养体系里&#xff0c;培训是提升员工能力素质的重要手段&#xff0c;课程编辑器中的 VR 技术为企业培训带来新体验。以机械制造企业为例&#xff0c;以往员工培训靠书面资料、平面图片或简单视频讲解复杂机械设备结…...

Pikachu靶场-CSRF

CSRF (跨站请求伪造) 详细介绍与技术分析 一、什么是 CSRF? CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;&#xff0c;是一种利用已认证用户的身份&#xff0c;诱使该用户执行恶意操作的攻击手段。攻击者通过伪造一个用户请求&#xff0c…...

Flask(3): 在Linux系统上部署项目

1 前言 说实话&#xff0c;我并不想接触linux系统&#xff0c;要记住太多的命令。我更习惯windows系统&#xff0c;鼠标点点&#xff0c;只要记住少量的命令就可以了。 但是我选择了python&#xff0c;就注定无法逃避linux系统。虽然python也能在windows上很好的运行&#xff0…...

React JSX 语法深度解析与最佳实践

本文系统梳理 JSX 语法的完整知识体系。通过原理剖析、代码示例和开发警示&#xff0c;帮助开发者建立严谨的 JSX 使用认知。 一、JSX 本质解析 1.1 编译机制 JSX 通过 Babel 转换为 React.createElement 调用&#xff0c;以下为转换对照&#xff1a; // 原始 JSX <MyCo…...

岚图L3智能架构发布,9大首发新技术引领电动车变革

4月16日&#xff0c;岚图汽车在北京举办了L3级智能架构技术发布会&#xff0c;发布岚图天元智架。 据「TMT星球」了解&#xff0c;天元智架首发青云L3级智能安全行驶平台与鲲鹏L3级智能安全驾驶系统两大核心智能化技术集群&#xff0c;融合多项先进技术与黑科技&#xff0c;推…...

Nginx | Apache 配置 WebSocket 多层代理基本知识(附疑难杂症)

目录 前言1. 问题所示2. 基本知识3. 原理分析3.1 返回2003.2 返回4003.3 返回5004. 彩蛋前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 1. 问题所示 本地测试可以,上了域名的测试就不行了! WebSocket con…...

山东大学软件学院创新项目实训开发日志(18)之对话自动生成标题设为用户第一次对话发的文字

本次功能的实现主要集中在后端&#xff0c;前端代码不用改变&#xff1a; 前端界面效果展示&#xff1a;...

【web考试系统的设计】

文章目录 一、实验背景与目的二、实验设计与实现思路1. 功能架构2. 核心代码实现 总结 一、实验背景与目的 本次实验旨在深入理解Request、response对象的作用&#xff0c;Request对象的作用是与客户端交互&#xff0c;收集客户端的Form、Cookies、超链接&#xff0c;或者收集…...

【MySQL】库的操作

&#x1f3e0;个人主页&#xff1a;Yui_ &#x1f351;操作环境&#xff1a;Centos7 &#x1f680;所属专栏&#xff1a;MySQL 文章目录 1. 创建一个数据库1.1 创建一个数据库&#xff08;演示 2. 字符集和校验规则2.1 字符集2.2 校验规则2.3 知识补充&#xff1a;&#xff09;…...

Face Swap 1.3.8| 解锁专业版,无限制换脸,视频换脸,释放您的创造力

Face Swap Pro - AI Photo Editor 「换脸 - AI 照片编辑器」释放您的创造力&#xff01;通过换脸 - AI 照片编辑器&#xff0c;将您的想象变为现实&#xff0c;这是在照片和视频中交换人脸的终极应用程序。无论您是想探索不同的造型&#xff0c;穿越到另一个时代&#xff0c;还…...

AUTOSAR图解==>AUTOSAR_SWS_DefaultErrorTracer

AUTOSAR 默认错误追踪器(Default Error Tracer)详细分析 基于AUTOSAR 4.4.0规范的深入解析 目录 概述 DET模块的作用DET模块的定位 架构设计 模块架构接口设计 状态与行为 状态转换错误报告流程 API与数据结构 API概览数据类型定义 配置与扩展 模块配置回调机制 总结 1. 概述 …...

【hadoop】master一键启动hadoop集群(高可用)

之前写了一篇【hadoop】master一键启动zkServer-CSDN博客 现在是最好的安排&#xff1a; 1. cd ~ vim hadoop-all.sh #!/bin/bash# 检查参数是否为 start 或 stop if [ "$1" "start" ]; then# 启动服务sh ~/zk-all.sh startstart-dfs.shstart-yarn.s…...

细说STM32单片机FreeRTOS任务管理API函数及多任务编程的实现方法

目录 一、FreeRTOS任务管理API函数 1、任务管理API函数 2、获取任务的句柄 &#xff08;1&#xff09;函数xTaskGetCurrentTaskHandle() &#xff08;2&#xff09;函数xTaskGetIdleTaskHandle() &#xff08;3&#xff09;函数xTaskGetHandle() 3、单个任务的操作 &a…...

从0开始掌握动态规划

动态规划的核心思想 -- 以空间换时间 复杂点说通过分解问题为子问题并存储子问题解来优化复杂计算的算法策略。 简单看个问题。 一&#xff0c;初始&#xff1a;求最长连续递增子序列 nums [10,9,2,5,3,7,101,18] 求上面数组中的最长连续递增子序列&#xff0c;输出其长度 …...

解锁向量数据库:实现高效过滤与管理的实用方法

1. 带过滤的相似性搜索 大多数向量数据库不仅可以存储向量数据&#xff0c;还支持存储相关元数据。这些元数据可以包括文本原文、扩展信息、页码、文档 ID、作者、创建时间等自定义信息&#xff0c;通常用于实现数据检索。 向量数据库记录 向量(vector)元数据(metadata)id遗…...

数码管LED显示屏矩阵驱动技术详解

1. 矩阵驱动原理 矩阵驱动是LED显示屏常用的一种高效驱动方式&#xff0c;利用COM&#xff08;Common&#xff0c;公共端&#xff09;和SEG&#xff08;Segment&#xff0c;段选&#xff09;线的交叉点控制单个LED的亮灭。相比直接驱动&#xff0c;矩阵驱动可以显著减少所需I/…...

C++模板初阶

1.函数模板 模板是C中一个非常重要的东西&#xff0c;也是下一步学stl的最后一块拼图。那看看最后一块拼图是什么呢&#xff1f;C祖师爷在写C语言时遇到了有个非常难受的地方&#xff1a; 遇到有很多类型变量交换的时候就要写不同的交换函数&#xff0c;再新增类型的交换还要…...

第六章:6.3求一个3*3的整型矩阵对角线元素之和

//求一个3*3的整型矩阵对角线元素之和 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {int i 0, j 0;int arr[3][3] { 0 };printf("请输入一个3*3的矩阵:\n");for (i 0; i < 3; i){for (j 0; j < 3; j){scanf("%d", …...

Oracle 19c部署之初始化实例(三)

上一篇文章中&#xff0c;我们已经完成了数据库软件安装&#xff0c;接下来我们需要进行实例初始化工作。 一、初始化实例的两种方式 1.1 图形化初始化实例 描述&#xff1a;图形化初始化实例是通过Oracle的Database Configuration Assistant (DBCA)工具完成的。用户通过一系…...

RAGFlowwindows本地pycharm运行

Python环境准备 1. 安装pipx。如已经安装&#xff0c;可跳过本步骤&#xff1a; python -m pip install --user pipxpython -m pipx ensurepath## 验证安装pipx --version2. 安装 uv。如已经安装&#xff0c;可跳过本步骤&#xff1a; pipx install uv ## 设置为阿里云 PyPI…...

阿里云RAM账号免密登录Java最佳实践

参考官方文章地址&#xff1a;如何使用免登访问流程_阿里云集成转售解决方案-阿里云帮助中心 参考代码地址&#xff1a;如何使用安全访问服务Python及Java示例代码_阿里云集成转售解决方案-阿里云帮助中心 1. RAM的含义 阿里云的访问控制RAM&#xff08;Resource Access Manag…...

基于LightRAG进行本地RAG部署(包括单卡多卡本地模型部署、调用阿里云或DeepSeekAPI的部署方法、RAG使用方法)

1.简介 RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一种结合了检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#xff09;的自然语言处理模型架构。它旨在解决传统生成模型在面对复杂任务时可能出现的生成内容缺乏准确性和多样性的不…...

GPIO输出模式

这个 typedef enum 是 STM32 中 GPIO 模式的定义&#xff0c;每一个模式都代表着 GPIO 引脚的不同工作方式。不同的模式会影响引脚的输入或输出状态&#xff0c;以及是否具有其他功能&#xff08;如外设功能&#xff09;。接下来&#xff0c;我将详细解释每个模式的作用和如何使…...

Linux,redis数据库安装使用

Redis 非关系型数据库 介绍 安装 主从模式 哨兵模式 集群模式 redis 数据类型/增删改查 redis 持久化 redis 雪崩 击穿 穿透 LAMPredis 数据迁移 git redis 安装部署 1&#xff0c;下载或者上传redis 6.2.14 wget http://download.redis.io/releases/redis-6.2.14.tar.gz …...

3DS 转 STL 全攻略:传统工具与迪威模型网在线转换深度解析

在 3D 建模与 3D 打印的技术领域中&#xff0c;常常会遇到需要将不同格式的文件进行转换的情况。其中&#xff0c;把 3DS 文件转换为 STL 格式是较为常见的操作。3DS 文件作为一种旧版 Autodesk 3D Studio 使用的 3D 图像格式&#xff0c;存储着丰富的信息&#xff0c;包括网格…...

最新Spring Security实战教程(十一)CSRF攻防实战 - 从原理到防护的最佳实践

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…...

远程医疗系统安全升级:构建抗CC攻击的全方位防护网

随着云计算、大数据和互联网技术的不断发展&#xff0c;远程医疗系统正在逐步走进大众视野&#xff0c;为患者提供便捷高效的医疗服务。然而&#xff0c;远程医疗系统在便利性的背后也面临着严峻的网络安全挑战&#xff0c;其中&#xff0c;CC攻击&#xff08;Challenge Collap…...

【Java学习笔记】进制与进制转换

进制与进制转换 一、进制介绍 二进制&#xff1a;0、1&#xff0c;满 2 进 1&#xff0c;以 0b 或 0B 开头。 十进制&#xff1a;0-9&#xff0c;满 10 进 1。 八进制&#xff1a;0-7&#xff0c;满 8 进 1&#xff0c;以数字 0 开头表示。 十六进制&#xff1a;0-9 及 A(10…...

《SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战》​

&#x1f31f; ​大家好&#xff0c;我是摘星&#xff01;​ &#x1f31f; 今天为大家带来的是Scheduled和Quartz对比分析&#xff1a; 新手常见困惑&#xff1a; 刚学SpringBoot时&#xff0c;我发现用Scheduled写定时任务特别简单。但当我看到同事在项目里用Quartz时&…...