当前位置: 首页 > 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;配置文件过于…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...

leetcode_69.x的平方根

题目如下 &#xff1a; 看到题 &#xff0c;我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历&#xff0c;我们是整数的平方根&#xff0c;所以我们分两…...