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

mysql 迁移达梦数据库出现的 sql 语法问题 以及迁移方案

迁移方案:

1.下载官方DM8开发版 产品下载-达梦数据

2.会下载到win系统下的左下角的开始

1.1.2 创建工程

右击空白处,新建

1.1.3 新建迁移

1.1.3.1 选择迁移方式

MySql迁移DM

1.1.3.2 配置数据源

输入你的mysql配置后,刷新,选择要迁移的数据库名

1.1.3.3 配置目的

输入你要迁入的达梦数据库的配置

1.1.3.4 迁移选项

先用默认

保持对象名大小写,不勾选,达梦默认表名和字段名都大写

1.1.3.5 指定模式

1.1.3.6 指定对象

全选你要迁移的表

1.1.3.7 审阅任务

点击完成开始迁移

1.1.3.8 迁移完成

1.1.4 查看迁移后的表

1.1.4.1 登录新用户ESO

1.1.4.2 查看表数据

迁移注意事项

1.需要避免表中的一些注释,会被视为无效的列

2.MySQL与达梦字符占位大小不同

Mysql SQL中使用的是UTF8编码。 在MySQL 中 varchar(1) 可以存一个汉字,DM 数据库是以字节为单位。gb18030 字符集,varchar(2) 才可以存一个汉字;UTF-8 字符集,varchar(3) 才可以存一个汉字。该names在MYSQL的长度为10,在迁移过程中,达梦数据库建表的names字段长度也是10,那么就会导致当该字段中文字符超过4个的时候,就会出现无法存下的问题。 如bit在mysql长度是1 在达梦中就是4 会导致结果中会有空格 "1 "

兼容性方案:

  1. 在MySQL中使用 def_flag=false 的语法在达梦数据库中会出现语法错误,因为达梦数据库无法识别 false。解决方法是将SQL语句中的 def_flag=false 替换为 def_flag=0,或者在数据层面进行调整。

public static final int DEL_FLAG_NORMAL = 0; public static final int DEL_FLAG_DELETE = 1;

  1. 逻辑删除中使用 del_flag = #{DEL_FLAG_NORMAL} 的语法在达梦数据库中会出现语法错误,无法识别 #{DEL_FLAG_NORMAL}。解决方法是在后端代码中传递正确的值。

  2. 在达梦数据库中,可能不直接支持MySQL特定的日期时间运算方式 NOW() - INTERVAL 24 HOUR。替代方法是使用类似 DATE_SUB(NOW(), INTERVAL ‘24’ HOUR)。

  3. 在达梦数据库中,特殊关键字如 user、valus 需要用双引号包裹起来,例如 “user”,“valus”。

  4. 当字段名为小写时,在SQL语句中字段值必须使用单引号,以避免将值误认为是列名。例如将 and d.data_type=“topic” 改为 and d.data_type=‘topic’。

  5. convert和 using 函数在达梦数据库中不支持,解决方法是使用类似 NLSSORT(e.expert_name,‘NLS_SORT = SCHINESE_PINYIN_M’) 替代。

  6. 在达梦数据库中进行模糊查询时,需要使用 $ 符号,例如 AND a.queues LIKE ‘%${queues}%’。

  7. 达梦数据库中用于格式化日期时间的函数可能是 TO_CHAR() 或类似的函数,而不是 DATE_FORMAT()。例如MySQL中的写法需要改为达梦中的形式,如:

Copy CodeMySQL: DATE_FORMAT( a.expiry_date, ‘%Y-%m-%d %H:%M:%S’ ) 达梦: TO_CHAR(a.expiry_date, ‘YYYY-MM-DD HH24:MI:SS’)

  1. 在系统中设置不同数据库方言(如Oracle)时,需要根据方言判断使用不同的SQL查询语句。

  2. 在达梦数据库中调用存储过程的语法是直接使用存储过程名称加上参数,例如 work(1, 2)。

注意事项:

  1. 达梦数据库脚本不支持反引号(esc键下方的符号),需要将其改为双引号,例如 “user_name”。

  2. 在数据迁移过程中,表中不能包含自增字段,否则可能导致问题。

  3. 从MySQL迁移到达梦数据库后,查询字段中可能会出现多余的空格问题,需要调整数据库的长度设置。

  4. 数据迁移中可能会出现丢失某些数据库或表中的字段的情况。

  5. 数据中包含特殊转义符号(如 ')可能会导致迁移数据失败,应将其置为空或适当处理。

  6. 特定关键字(如 ref, comment, top, domain, user, valus,description,domain,LESS等)可能会导致语法错误。

  7. 如果表设置了主键自增,但插入语句中又指定了主键值,可能会出现问题。

  8. 查询中使用单引号修饰列别名可能会引发问题,应注意避免这种写法。

  9. 达梦数据库中日期运算的语法可能与MySQL不同,需要适当调整。

  10. 使用 group_concat 函数在达梦数据库中可能不支持,应考虑使用替代函数或方法。

  11. 修改语句中列的重复使用可能会导致错误。

  12. 在WHERE条件中,字段值应使用单引号而非双引号。

  13. 在MySQL中使用 varchar(1) 可以存储1个汉字,但在达梦数据库中可能需要使用 varchar(2) 才能正确存储。

SQL 语法差异

1.虽然两者都遵循 SQL 标准,但在某些方面有一些细微的差异。例如,在子查询中,达梦数据库不允许在 FROM 子句中引用外部查询的表,而 MySQL 允许。另外,在某些函数和操作符的使用上也有一些差异。

2.达梦对sql语句大小写不敏感 而mysql对大小写敏感

3.DM和MySQL的事务处理方式也存在一些差异。DM默认情况下使用隐式事务,即不需要显式地使用BEGIN和COMMIT关键字来控制事务的开始和结束。而MySQL默认使用自动提交模式,需要使用BEGIN和COMMIT关键字来显式地控制事务的开始和结束

以下不带*号的为关键字, 带*号的为系统保留字。

DM 还将保留字进一步划分为 SQL 保留字、DM SQL 程序保留字、模式保留字、变量保留字和别名保留字。对于关键字和保留字的详细信息请查询系统视图 V$RESERVED_WORDS。

注意:关键字 ROWID、TRXID、VERSIONS_STARTTIME、VERSIONS_ENDTIME、VERSIONS_STARTTRXID、VERSIONS_ENDTRXID 和 VERSIONS_OPERATION 不能作为表的列名,即使加上双引号也不行。

CopyA ABORT、ABSOLUTE*、ABSTRACT*、ACCESSED、ACCOUNT、ACROSS、ACTION、ADD*、ADMIN*、ADVANCED、AFTER、AGGREGATE、ALL*、ALLOW_DATETIME、ALLOW_IP、ALTER*、ANALYZE、AND*、ANY*、APPLY、APR、ARCHIVE、ARCHIVEDIR、ARCHIVELOG、ARCHIVESTYLE、ARRAY*、ARRAYLEN*、AS*、ASC*、ASCII、ASENSITIVE、ASSIGN*、ASYNCHRONOUS、AT、ATTACH、AUDIT*、AUG、AUTHID、AUTHORIZATION*、AUTO、AUTO_INCREMENT*、AUTOEXTEND、AUTONOMOUS_TRANSACTION、AVG B BACKED、BACKUP、BACKUPDIR、BACKUPINFO、BACKUPSET、BADFILE、BAKFILE、BASE、BATCH、BEFORE、BEGIN*、BETWEEN*、BIGDATEDIFF*、BIGINT、BINARY*、BIT、BITMAP、BLOB、BLOCK、BOOL*、BOOLEAN、BOTH*、BRANCH、BREADTH、BREAK*、BSTRING*、BTREE、BUFFER、BUILD、BULK、BY*、BYDAY、BYHOUR、BYMINUTE、BYMONTH、BYMONTHDAY、BYSECOND、BYTE*、BYWEEKNO、BYYEARDAY C CACHE、CALCULATE、CALL*、CASCADE、CASCADED、CASE*、CASE_SENSITIVE、CAST*、CATALOG、CATCH*、CHAIN、CHANGE、CHAR*、CHARACTER、CHARACTERISTICS、CHECK*、CHECKPOINT、CIPHER、CLASS*、CLOB、CLOSE、CLUSTER*、CLUSTERBTR*、COLLATE、COLLATION*、COLLECT、COLUMN*、COLUMNS、COMMENT*、COMMIT*、COMMITTED、COMMITWORK*、COMPILE、COMPLETE、COMPRESS、COMPRESSED、CONDITIONAL、CONNECT*、CONNECT_BY_ISCYCLE、CONNECT_BY_ISLEAF、CONNECT_BY_ROOT*、CONNECT_IDLE_TIME、CONNECT_TIME、CONST*、CONSTANT、CONSTRAINT*、CONSTRAINTS、CONSTRUCTOR、CONTAINS*、CONTEXT*、CONTINUE*、CONVERT*、COPY、CORRESPONDING*、CORRUPT、COUNT、COUNTER、CPU_PER_CALL、CPU_PER_SESSION、CREATE*、CROSS*、CRYPTO*、CTLFILE、CUBE*、CUMULATIVE、CURRENT*、CURRENT_SCHEMA、CURRENT_USER、CURSOR*、CYCLE D DAILY、DANGLING、DATA、DATABASE、DATAFILE、DATE、DATEADD*、DATEDIFF*、DATEPART*、DATETIME、DAY、DBFILE、DDL、DDL_CLONE、DEBUG、DEC、DECIMAL*、DECLARE*、DECODE*、DEFAULT*、DEFERRABLE、DEFERRED、DEFINER、DELETE*、DELETING、DELIMITED、DELTA、DEMAND、DENSE_RANK、DEPTH、DEREF、DESC*、DETACH、DETERMINISTIC、DEVICE、DIAGNOSTICS、DICTIONARY、DIRECTORY、DISABLE*、DISCONNECT、DISKGROUP、DISKSPACE*、DISTINCT*、DISTRIBUTED*、DML、DO*、DOMAIN*、DOUBLE*、DOWN、DROP*、DUMP E EACH、EDITIONABLE、ELSE*、ELSEIF*、ELSIF*、EMPTY、ENABLE*、ENCRYPT、ENCRYPTION、END*、EQU*、ERROR、ERRORS、ESCAPE、EVALNAME、EVENTINFO、EVENTS、EXCEPT、EXCEPTION、EXCEPTION_INIT、EXCEPTIONS、EXCHANGE*、EXCLUDE、EXCLUDING、EXCLUSIVE、EXEC*、EXECUTE*、EXISTS*、EXIT*、EXPIRE、EXPLAIN*、EXTENDS、EXTERN*、EXTERNAL、EXTERNALLY、EXTRACT* F FAILED_LOGIN_ATTEMPS、FAILED_LOGIN_ATTEMPTS、FAST、FEB、FETCH*、FIELDS、FILE、FILEGROUP、FILESIZE、FILLFACTOR、FINAL*、FINALLY*、FIRST*、FLASHBACK*、FLOAT*、FOLLOWING、FOR*、FORALL、FORCE、FOREIGN*、FORMAT、FREQ、FREQUENCE、FRI、FROM*、FULL*、FULLY*、FUNCTION* G GENERATED、GET*、GLOBAL、GLOBALLY、GOTO*、GRANT*、GREAT、GROUP*、GROUPING* H HASH、HASHPARTMAP、HAVING*、HEXTORAW、HIGH、HOLD、HOUR、HOURLY、HUGE I IDENTIFIED、IDENTIFIER、IDENTITY*、IDENTITY_INSERT、IF*、IFNULL*、IGNORE_ROW_ON_DUPKEY_INDEX、IMAGE、IMMEDIATE*、IN*、INCLUDE、INCLUDING、INCREASE、INCREMENT、INDEX*、INDEXES、INDICES、INITIAL、INITIALIZED、INITIALLY、INLINE*、INNER*、INNERID、INPUT、INSENSITIVE、INSERT*、INSERTING、INSTANCE、INSTANTIABLE、INSTEAD、INT*、INTEGER、INTENT、INTERSECT*、INTERVAL*、INTO*、INVISIBLE、IS*、ISOLATION J JAN、JAVA、JOB、JOIN*、JSON、JSON_TABLE、JUL、JUN K KEEP*、KEY、KEYS L LABEL、LARGE、LAST、LAX、LEADING*、LEFT*、LEFTARG、LESS、LEVEL、LEVELS、LEXER*、LIKE*、LIMIT、LINK、LIST*、LNNVL*、LOB、LOCAL、LOCAL_OBJECT、LOCALLY、LOCATION、LOCK、LOCKED、LOG、LOGFILE、LOGGING、LOGIN*、LOGOFF、LOGON、LOGOUT、LONG、LONGVARBINARY、LONGVARCHAR、LOOP*、LSN M MANUAL、MAP、MAPPED、MAR、MATCH、MATCHED、MATERIALIZED、MAX、MAX_RUN_DURATION、MAXPIECESIZE、MAXSIZE、MAXVALUE、MAY、MEM_SPACE、MEMBER*、MEMORY、MERGE、MICRO、MIN、MINEXTENTS、MINUS*、MINUTE、MINUTELY、MINVALUE、MIRROR、MOD、MODE、MODIFY、MON、MONEY、MONITORING、MONTH、MONTHLY、MOUNT、MOVE、MOVEMENT、MULTISET* N NATIONAL、NATURAL*、NCHAR、NCHARACTER、NEVER、NEW*、NEXT*、NO、NOARCHIVELOG、NOAUDIT、NOBRANCH、NOCACHE、NOCOPY*、NOCYCLE*、NODE、NOLOGGING、NOMAXVALUE、NOMINVALUE、NOMONITORING、NONE、NONEDITIONABLE、NOORDER、NOPARALLEL、NORMAL、NOROWDEPENDENCIES、NOSORT、NOT*、NOT_ALLOW_DATETIME、NOT_ALLOW_IP、NOV、NOVALIDATE、NOWAIT、NULL*、NULLS、NUMBER、NUMERIC O OBJECT*、OCT、OF*、OFF、OFFLINE、OFFSET、OIDINDEX、OLD、ON*、ONCE、ONLINE、ONLY、OPEN、OPERATOR、OPTIMIZE、OPTION、OR*、ORDER*、ORDINALITY、OUT*、OUTER、OVER*、OVERLAPS、OVERLAY*、OVERRIDE*、OVERRIDING P PACKAGE、PAD、PAGE、PARALLEL、PARALLEL_ENABLE、PARMS、PARTIAL、PARTITION*、PARTITIONS、PASSING、PASSWORD、PASSWORD_GRACE_TIME、PASSWORD_LIFE_TIME、PASSWORD_LOCK_TIME、PASSWORD_POLICY、PASSWORD_REUSE_MAX、PASSWORD_REUSE_TIME、PATH、PENDANT*、PERCENT*、PIPE、PIPELINED、PIVOT、PLACING、PLS_INTEGER、PRAGMA、PREBUILT、PRECEDING、PRECISION、PRESERVE、PRETTY、PRIMARY*、PRINT*、PRIOR*、PRIVATE*、PRIVILEGE、PRIVILEGES*、PROCEDURE*、PROFILE、PROTECTED*、PUBLIC*、PURGE Q QUERY_REWRITE_INTEGRITY、QUOTA R RAISE*、RANDOMLY、RANGE、RAWTOHEX、READ、READ_PER_CALL、READ_PER_SESSION、READONLY、REAL、REBUILD、RECORD*、RECORDS、REDUCED、REF*、REFERENCE*、REFERENCES*、REFERENCING*、REFRESH、REJECT、RELATED、RELATIVE*、RENAME、REPEAT*、REPEATABLE、REPLACE、REPLAY、REPLICATE*、RESIZE、RESTORE、RESTRICT、RESTRICT_REFERENCES、RESULT、RESULT_CACHE、RETURN*、RETURNING*、REVERSE*、REVOKE*、RIGHT*、RIGHTARG、ROLE、ROLLBACK*、ROLLFILE、ROLLUP*、ROOT、ROW*、ROWCOUNT、ROWDEPENDENCIES、ROWID、ROWNUM*、ROWS*、RULE S SALT、SAMPLE、SAT、SAVE、SAVEPOINT*、SBYTE*、SCHEMA*、SCHEMABINDING、SCN、SCOPE、SCROLL、SEALED*、SEARCH、SECOND、SECONDLY、SECTION*、SEED、SELECT*、SELF、SENSITIVE、SEP、SEQUENCE、SERERR、SERIALIZABLE、SERVER、SESSION、SESSION_PER_USER、SET*、SETS*、SHADOW、SHARE、SHORT*、SHUTDOWN、SIBLINGS、SIMPLE、SINCE、SIZE、SIZEOF*、SKIP、SMALLINT、SNAPSHOT、SOME*、SOUND、SPACE、SPAN、SPATIAL、SPEED、SPFILE、SPLIT、SQL、STANDBY、STARTUP、STAT、STATEMENT、STATIC*、STDDEV、STOP、STORAGE、STORE、STRICT、STRING、STRIPING、STRUCT*、STYLE、SUBPARTITION*、SUBPARTITIONS、SUBSCRIBE、SUBSTITUTABLE、SUBSTRING、SUBTYPE、SUCCESSFUL、SUM、SUN、SUSPEND、SWITCH*、SYNC、SYNCHRONOUS、SYNONYM*、SYS_CONNECT_BY_PATH、SYSTEM T TABLE*、TABLESPACE、TASK、TEMPLATE、TEMPORARY、TEXT、THAN、THEN、THREAD、THROUGH、THROW*、THU、TIES、TIME、TIME_ZONE、TIMER、TIMES、TIMESTAMP、TIMESTAMPADD*、TIMESTAMPDIFF*、TINYINT、TO*、TOP*、TRACE、TRACKING、TRAILING*、TRANSACTION、TRANSACTIONAL、TRIGGER*、TRIGGERS、TRIM*、TRUNCATE*、TRUNCSIZE、TRXID、TRY*、TUE、TYPE、TYPEDEF*、TYPEOF* U UINT*、ULONG*、UNBOUNDED、UNCOMMITTED、UNCONDITIONAL、UNDER、UNION*、UNIQUE*、UNLIMITED、UNLOCK、UNPIVOT、UNTIL*、UNUSABLE、UP、UPDATE*、UPDATING、USAGE、USE_HASH、USE_MERGE、USE_NL、USE_NL_WITH_INDEX、USER*、USHORT*、USING* V VALUE、VALUES*、VARBINARY、VARCHAR、VARCHAR2、VARIANCE、VARRAY*、VARYING、VERIFY*、VERSIONS、VERSIONS_ENDTIME、VERSIONS_ENDTRXID、VERSIONS_OPERATION、VERSIONS_STARTTIME、VERSIONS_STARTTRXID、VERTICAL、VIEW*、VIRTUAL*、VISIBLE、VOID*、VSIZE W WAIT、WED、WEEK、WEEKLY、WHEN*、WHENEVER*、WHERE*、WHILE*、WITH*、WITHIN*、WITHOUT、WORK、WRAPPED、WRAPPER、WRITE X XML、XMLAGG*、XMLATTRIBUTES、XMLELEMENT、XMLPARSE*、XMLTABLE* Y YEAR、YEARLY Z ZONE

系统连接达梦数据库需要在pom.xml中添加依赖

com.dameng DmJdbcDriver18 8.1.2.79

jeesite.properties文件中的连接数据库配置需要改成如下图:

1.2.

在spring-context-activiti.xml文件中 需要改为下图的配置

代码中del_flag = #{DEL_FLAG_NORMAL}需要替换 可以早数据层直接把

public static final int DEL_FLAG_NORMAL = true; public static final int DEL_FLAG_DELETE = false 改为 public static final int DEL_FLAG_NORMAL = 0; public static final int DEL_FLAG_DELETE = 1

文件地址为:BaseEntity.java

在xml中也有一些是del_flag=false的 这些就需要批量替换了

在达梦数据库中,可能不直接支持MySQL特定的日期时间运算方式 NOW() - INTERVAL 24 HOUR。替代方法是使用类似 DATE_SUB(NOW(), INTERVAL ‘24’ HOUR)。

convert和 using 函数在达梦数据库中不支持,解决方法是使用类似 NLSSORT(e.expert_name,‘NLS_SORT = SCHINESE_PINYIN_M’) 替代。

达梦数据库中用于格式化日期时间的函数可能是 TO_CHAR() 或类似的函数,而不是 DATE_FORMAT()。例如MySQL中的写法需要改为达梦中的形式,如:

MySQL: DATE_FORMAT( a.expiry_date, ‘%Y-%m-%d %H:%M:%S’ ) 达梦: TO_CHAR(a.expiry_date, ‘YYYY-MM-DD HH24:MI:SS’)

mysql中查询表的结构和达梦是有差异的 因为达梦没有叫information_schema的系统表 需要用DBA_TAB_COLUMNS来查询达梦的数据库表结构 语法跟Oracle的差不多 如下图:

下图左边是原本的 右边是兼容达梦的语法

在工单自定义中行业必要字段添加的时候是需要获取我们的表 在达梦jdbc连接方式和mysql有差异 需要更改

左边mysql使用的 右边达梦使用的

文件在:WorksheetTypeColumnService.java

关键字在达梦中会被识别成无效的列 需要用""来规避 系统中关键字有user、valus domain, user, valus,description,domain,LESS

相关文章:

mysql 迁移达梦数据库出现的 sql 语法问题 以及迁移方案

迁移方案: 1.下载官方DM8开发版 产品下载-达梦数据 2.会下载到win系统下的左下角的开始 1.1.2 创建工程 右击空白处,新建 1.1.3 新建迁移 1.1.3.1 选择迁移方式 MySql迁移DM 1.1.3.2 配置数据源 输入你的mysql配置后,刷新,选择…...

深入解析css-浮动-学习小结

浮动设计初衷 类似报纸的布局栏&#xff0c;浮动是为了让图片嵌在文本流中&#xff0c;文本不会覆盖图片&#xff0c;但早期布局只有浮动&#xff0c;因此将浮动用于布局&#xff0c;后来才有了display:inline-block display: table flexbox和网格布局等 基本代码 <html&…...

【机器学习】机器学习的基本分类-无监督学习-K-Means聚类

K-Means 是一种基于划分的无监督学习算法&#xff0c;用于数据聚类任务&#xff0c;它通过迭代优化将数据分组为 k 个互斥的簇&#xff0c;使得每个簇内数据点的相似性最大化&#xff0c;而簇间的相似性最小化。它通过最小化簇内样本点到簇中心的距离平方和&#xff08;即误差平…...

.NET for Android/iOS应用的如何在各自的系统运行

1. .NET for Android 上的运行机制 Android 应用使用 Mono 运行时 或 .NET 运行时 在 Android 设备上执行。具体过程如下&#xff1a; 编译过程&#xff1a; C# 代码编写&#xff1a;开发者使用 C# 编写业务逻辑代码。编译为 IL&#xff1a;C# 代码通过 Roslyn 编译器 转换为…...

访问django后台,提示CSRF验证失败. 请求被中断403

我的项目是在服务器部署添加ip后报错的这个错误是因为 Django 的 CSRF 验证机制检测到请求的 Origin 或 Referer 头部与受信任的域名不匹配。要解决此问题&#xff0c;可以将新域名添加到 Django 的 settings.py 中的 CSRF_TRUSTED_ORIGINS 设置里. 1.非debug模式看到的报错信…...

Scala的隐式转换(1)

package hfd //需求&#xff1a; //完成一个功能&#xff0c;让所有的字符串都能调用isPhone方法&#xff0c;来校验自己是不是一个手机号 object Test37_1 {class StrongString(val str: String) {//开始你的代码def isPhone(): Boolean {val reg "1[3-9]\\d{9}".…...

华为TaurusDB与GaussDB:信创改造的“降本提效”之路

近年来&#xff0c;信创&#xff08;信息技术应用创新&#xff09;已成为中国国央企数字化转型的关键词。伴随这一浪潮&#xff0c;众多企业面临一个迫切问题&#xff1a;如何在兼顾性能与成本的前提下&#xff0c;完成核心系统的迁移改造&#xff1f;华为TaurusDB和GaussDB的加…...

Linux网络编程---本地套接字

1.概述 本地套接字 1&#xff1a;作用:本地的进程间通信 2.有关系的进程间通信 3.没有关系的进程间的通信 本地套结字实现流程和网络套结字实现相似&#xff0c;一般采用tcp 二.通信流程 本地套结字通信的流程:1.服务器端:1.1 int fd socket(AF_UNIX/AF_LOCAL,…...

数据结构之四:堆和二叉树

堆的实现:SData/Heap/heap.c Hera_Yc/bit_C_学习 - 码云 - 开源中国 树 树的概念 树&#xff1a;是一个非线性数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就…...

【论文阅读】国际开源发展经验及其对我国开源创新体系建设的启示

作者&#xff1a;包云岗老师 包云岗老师是计算机体系结构方向的大牛&#xff0c;推动了体系结构方面的开源事业! 欢迎对本栏目感兴趣的人学习"一生一芯"~ 学习体会&#xff1a; 承接前文&#xff0c;唐志敏老师讲到已有的软硬件生态系统和开发成本制约了对新结构的探…...

redis击穿,穿透,雪崩以及解决方案

目录 击穿 解决方案一 解决方案二 穿透 解决方案 雪崩 解决方案 击穿 指的是单个key在缓存中查不到&#xff0c;去数据库查询&#xff0c;这样如果并发不大或者数据库数据量不大的话是没有什么问题的。 如果数据库数据量大并且是高并发的情况下那么就可能会造成数据库压…...

时频转换 | Matlab格拉姆角和场Gramian angular summation field一维数据转二维图像方法

目录 基本介绍程序设计参考资料获取方式 基本介绍 时频转换 | Matlab格拉姆角和场Gramian angular summation field一维数据转二维图像方法 程序设计 clear clc % close all load x.mat % 导入数据 x x(1:5120); % 本数据只选择5120个点进行分析 fs 6400 ; % 数据采样频…...

qt QCryptographicHash详解

1、概述 QCryptographicHash是Qt框架中提供的一个类&#xff0c;用于实现加密散列函数&#xff0c;即哈希函数。哈希函数能够将任意长度的数据转换为固定长度的哈希值&#xff0c;也称为散列值或数据指纹。这个哈希值通常用于数据的完整性校验、密码存储等场景。QCryptographi…...

亚马逊云科技大语言模型加速OCR应用场景发展

目录 前言Amazon Bedrock关于OCR解决方案Amazon Bedrock进行OCR关键信息提取方案注册亚马逊账号API调用环境搭建 总结 前言 大语言模型是一种基于神经网络的自然语言处理技术&#xff0c;它能够学习和预测自然语言文本中的规律和模式&#xff0c;可以理解和生成自然语言的人工…...

什么是分库?分表?分库分表?

分库分表&#xff0c;是企业里面比较常见的针对高并发、数据量大的场景下的一种技术优化方案&#xff0c;所谓“分库分表”&#xff0c;根本不是一回事&#xff0c;而是三件事&#xff0c;他们要解决的问题也都不一样。 这三个事分别是“只分库不分表”、“只分表不分库”、以…...

QT 中 sqlite 数据库使用

一、前提 --pro文件添加sql模块QT core gui sql二、使用 说明 --用于与数据库建立连接QSqlDatabase--执行各种sql语句QSqlQuery--提供数据库特定的错误信息QSqlError查看qt支持的驱动 QStringList list QSqlDatabase::drivers();qDebug()<<list;连接 sqlite3 数据库 …...

不一样的CSS(4)--icon图标系列之svg

序言 上一节内容我们讲解了如何利用css去画一个五角星&#xff0c;其中包括了使用svg的方法&#xff0c;有些小伙伴们对svg的使用不是很了解&#xff0c;那么本节内容我们主要来讲一下&#xff0c;关于svg标签的的使用。 目录 序言一、svg的介绍二、安装SVG扩展插件三、SVG基…...

Level DB --- Cache

class Cache是Level DB中的重要的数据结构&#xff0c;它是一个LRU&#xff08;Least Recently Used&#xff09; Cache的实现。这里面的判断条件主要是内存大小&#xff08;而不是存储entry的个数&#xff09;。当内存达到上界&#xff0c;会释放不被使用的entry&#xff08;存…...

学在西电录播课使用python下载,通过解析m3u8协议、多线程下载ts视频块以及ffmpeg合并

本文涵盖的内容仅供个人学习使用&#xff0c;如果侵犯学校权利&#xff0c;麻烦联系我删除。 初衷 研究生必修选逃&#xff0c; 期末复习怕漏过重点题目&#xff0c;但是看学在西电的录播回放课一卡一卡的&#xff0c;于是想在空余时间一个个下载下来&#xff0c;然后到时候就…...

Springboot3介绍

一、Springboot3简介: https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html?spmwolai.workspace.0.0.68b62306Q6jtTw#getting-started.introducing-spring-boot 无论使用XML、注解、Java配置类还是他们的混合用法&#xff0c;配置文件过于…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...