达梦8数据库适配ORACLE的8个参数
目录
1、概述
1.1 概述
1.2 实验环境
2、参数简介
3、实验部分
3.1 参数BLANK_PAD_MODE
3.2 参数COMPATIBLE_MODE
3.3 参数ORDER_BY_NULLS_FLAG
3.4 参数DATETIME_FMT_MODE
3.5 参数PL_SQLCODE_COMPATIBLE
3.6 参数CALC_AS_DECIMAL
3.7 参数ENABLE_PL_SYNONYM
3.8 参数VIEW_ACCESS_MODE
1、概述
1.1 概述
本文整理了达梦8数据库适配ORACLE的8个参数,设计了3个实验场景,通过实验观察各参数在数据库中的作用。
1.2 实验环境
达梦数据库版本:DM Database 64 V8 03134284094-20231108-207962-20067
ORACLE版本:V19.3
2、参数简介
| 参数 | 含义 | 缺省值 | 属性 | 适配ORACLE值 |
| BLANK_PAD_MODE | 设置字符串比较时,结尾空格填充模式是否兼容 ORACLE。取值 0 或 1。0不兼容,1 兼容。 | 0 | 不可修改 | 1 |
| COMPATIBLE_MODE | 是否兼容其他数据库模式。0:不兼容,1:兼容 SQL92 标准,2:部分兼容 ORACLE,3:部分兼容 MS SQL SERVER,4:部分兼容 MYSQL,5:兼容 DM6,6:部分兼容 TERADATA,7:部分兼容 POSTGRES | 0 | 静态 | 2 |
| ORDER_BY_NULLS_FLAG | 控制排序时 NULL 值返回的位置,取值 0、1、2、3。0 表示 NULL 值始终在最前面返回;1 表示 ASC 升序排序时NULL 值在最后返回,DESC 降序排序时 NULL 值在最前面返回,在参数等于 1 的情况下,NULL 值的返回与 ORACLE保持一致;2 表示 ASC 升序排序时 NULL 值在最前面返回,DESC 降序排序时 NULL 值在最后返回,在参数等于2 的情况下,NULL 值的返回与 MYSQL 保持一致;3 表示在取值为 1 的基础上,将空串置于 NULL 值和非空值之间 | 0 | 动态,会话级 | 1 |
| DATETIME_FMT_MODE | 是否兼容 ORACLE 的五种日期时间类型的默认日期时间格式。0:不兼容;1:兼容 注:此参数被动态修改后仅影响新生成的会话 | 0 | 动态,系统级 | 1 |
| PL_SQLCODE_COMPATIBLE | 默认值为 0;如果设置为 1,则 PL 的异常处理中,SQLCODE 的错误码值需要尽量与 ORACLE 一致 | 0 | 静态 | 1 |
| CALC_AS_DECIMAL | 0:默认值,表示整数类型的除法、整数与字符或 BINARY 串的所有四则运算,结果都处理成整数; 1:表示将整数类型的除法、整数与字符或 BINARY 串的除法转换为 DECIMAL 处理; 2:表示将整数类型的除法、整数与字符或 BINARY 串的所有四则运算都转换为 DECIMAL 处理; 3:所有涉及整型的四则运算全部转换为 DECIMAL 处理。 注: 该 参 数 只有 在 USE_PLN_POOL 为 0 或 1 时有 效。 当 USE_PLN_POOL 为 2 或 3 时, 按 照CALC_AS_DECIMAL=2 处理 | 0 | 静态 | 1 |
| ENABLE_PL_SYNONYM | 是否可以通过同义词执行非系统用户创建的包或者存储过程。1是,0否。若设置为0,在解析过程/包名时,如果借助了同义词,则这些对象要么是系统内部创建的,或者其创建者必须为系统用户,否则一律报错 | 0 | 动态,系统级 | 1 |
| VIEW_ACCESS_MODE | 指定视图的自主访问控制机制。0:兼容 DM;1:兼容 ORACLE | 0 | 静态 | 1 |
3、实验部分
3.1 参数BLANK_PAD_MODE
从oracle迁移数据到达梦数据库中,有时会遇到主键或唯一约束创建失败的情况,这有可能跟BLANK_PAD_MODE的设置有关,通常将BLANK_PAD_MODE设置为1可以解决问题。
测试方案说明:在表中插入3条数据,数据分别是字符串a、a加1个空格、a加两个空格。在ORACLE中这样的3条数据不被视为重复数据。在达梦8中,默认情况下视为重复数据,创建主键会报错。
1)在DM8中测试BLANK_PAD_MODE=0
准备测试数据
create table tb_dm8_001
(
C1 varchar2(10) not null
);--第1条数据是:'a'
insert into tb_dm8_001 values('a');
commit;--第2条数据是:'a'+1个空格
insert into tb_dm8_001 values('a ');
commit;--第3条数据是:'a'+2个空格
insert into tb_dm8_001 values('a ');
commit;
测试是否能成功创建主键
ALTER table tb_dm8_001 ADD PRIMARY KEY(c1);

测试结果:BLANK_PAD_MODE=0时,用案例数据创建主键失败。
2)在DM8中测试BLANK_PAD_MODE=1
BLANK_PAD_MODE是初始化参数,不能修改,我们创建个新库做下面的测试。
dminit path=/dm8/datadm db_name=dbtest01 BLANK_PAD_MODE=1
启动新库
dmserver path=/dm8/datadm/dbtest01/dm.ini
准备测试数据
disql SYSDBA/SYSDBA
create table tb_dm8_002
(
C1 varchar2(10) not null
);
--第1条数据是:'a'
insert into tb_dm8_002 values('a');
commit;--第2条数据是:'a'+1个空格
insert into tb_dm8_002 values('a ');
commit;--第3条数据是:'a'+2个空格
insert into tb_dm8_002 values('a ');
commit;
测试是否能成功创建主键
ALTER table tb_dm8_002 ADD PRIMARY KEY(c1);

测试结果:BLANK_PAD_MODE=1时,用案例数据创建主键成功。
3)ORACLE中的相关测试
准备测试数据
create table tb_oracle_001
(
C1 varchar2(10) not null
);--第1条数据是:'a'
insert into tb_oracle_001 values('a');
commit;--第2条数据是:'a'+1个空格
insert into tb_oracle_001 values('a ');
commit;--第3条数据是:'a'+2个空格
insert into tb_oracle_001 values('a ');
commit;
测试是否能成功创建主键
ALTER table tb_oracle_001 ADD PRIMARY KEY(c1);

测试结果:ORACLE中用案例数据创建主键成功。
3.2 参数COMPATIBLE_MODE
静态参数,修改后要重启数据库。
是否兼容其他数据库模式。0:不兼容,1:兼容 SQL92 标准,2:部分兼容 ORACLE,3:部分兼容 MS SQL SERVER,4:部分兼容 MYSQL,5:兼容 DM6,6:部分兼容 TERADATA,7:部分兼容 POSTGRES
这个参数是达梦数据库中最重要的兼容性参数,涉及内容较多,实验略。
3.3 参数ORDER_BY_NULLS_FLAG
动态,会话级参数:
控制排序时 NULL 值返回的位置,取值 0、1、2、3。
0 表示 NULL 值始终在最前面返回;
1 表示 ASC 升序排序时NULL 值在最后返回,DESC 降序排序时 NULL 值在最前面返回,在参数等于 1 的情况下,NULL 值的返回与 ORACLE保持一致;
1)在DM8中测试ORDER_BY_NULLS_FLAG=0
准备测试数据
create table tb_dm8_order_null_0
(
id int,
C1 varchar2(10)
);
insert into tb_dm8_order_null_0 values(1,'a');
insert into tb_dm8_order_null_0 values(2,'b');
insert into tb_dm8_order_null_0 values(3,'c');
insert into tb_dm8_order_null_0 values(4,null);
commit;
测试
select * from tb_dm8_order_null_0 order by c1 asc;
select * from tb_dm8_order_null_0 order by c1 desc;

测试结果:ORDER_BY_NULLS_FLAG=0时,NULL 值始终在最前面返回。
2)在DM8中测试ORDER_BY_NULLS_FLAG=1
动态参数,设置后立即生效
sp_set_para_value(1,'ORDER_BY_NULLS_FLAG',1);
准备测试数据
create table tb_dm8_order_null_1
(
id int,
C1 varchar2(10)
);
insert into tb_dm8_order_null_1 values(1,'a');
insert into tb_dm8_order_null_1 values(2,'b');
insert into tb_dm8_order_null_1 values(3,'c');
insert into tb_dm8_order_null_1 values(4,null);
commit;
测试
select * from tb_dm8_order_null_1 order by c1 asc;
select * from tb_dm8_order_null_1 order by c1 desc;

测试结果:ORDER_BY_NULLS_FLAG=1时,ASC 升序排序时NULL 值在最后返回,DESC 降序排序时 NULL 值在最前面返回。
3)在ORACLE中的相关测试
准备测试数据
create table tb_oracle_order_null
(
id int,
C1 varchar2(10)
);
insert into tb_oracle_order_null values(1,'a');
insert into tb_oracle_order_null values(2,'b');
insert into tb_oracle_order_null values(3,'c');
insert into tb_oracle_order_null values(4,null);
commit;
测试
select * from tb_oracle_order_null order by c1 asc;
select * from tb_oracle_order_null order by c1 desc;

测试结果:在ORACLE中, ASC升序排序时NULL 值在最后返回,DESC 降序排序时 NULL 值在最前面返回
3.4 参数DATETIME_FMT_MODE
动态系统级参数,是否兼容 ORACLE 的五种日期时间类型的默认日期时间格式。0:不兼容;1:兼容。 注:此参数被动态修改后仅影响新生成的会话
1)在DM8中测试DATETIME_FMT_MODE=0

日期格式为:YYYY-MM-DD
2)在DM8中测试DATETIME_FMT_MODE=1
动态系统级参数,不需要重启数据库
sp_set_para_value(1,'DATETIME_FMT_MODE',1);
进入新会话测试

日期部分格式为:DD-MM月-YY
3)在ORACLE中的相关测试
在ORACLE中测试

日期格式为:DD-MM月-YY
3.5 参数PL_SQLCODE_COMPATIBLE
静态参数,默认值为 0;如果设置为 1,则 PL 的异常处理中,SQLCODE 的错误码值需要尽量与 ORACLE 一致。
1)在DM8中测试PL_SQLCODE_COMPATIBLE=0
制造异常1,让系统抛出异常
beginselect 2/0 from dual;
end;
/

除0错误代码是-6103
制造异常2,做异常处理,查看SQLCODE的代码值
BEGINselect 2/0 from dual;
EXCEPTION
WHEN OTHERS THEN SELECT SQLCODE ||' '|| SQLERRM;
END;
/

除0错误代码还是-6103
2)在DM8中测试PL_SQLCODE_COMPATIBLE=1
静态参数,需要重启数据库
sp_set_para_value(2,'PL_SQLCODE_COMPATIBLE',1); -- 重启服务后生效
制造异常1,让系统抛出异常
BEGINselect 2/0 from dual;
END;
/

虽然配置了兼容性参数PL_SQLCODE_COMPATIBLE=1,但是在系统抛出异常的场景中,除0错误码依然是-6103
制造异常2,做异常处理,查看SQLCODE的代码值
BEGINselect 2/0 from dual;
EXCEPTION
WHEN OTHERS THEN SELECT SQLCODE ||' '|| SQLERRM;
END;
/

测试结果:PL_SQLCODE_COMPATIBLE=1时,错误码发生了变化,现在是-1476
小结,通过上面的测试我们看到:
(1)系统抛出的异常代码不会去兼容ORACLE
(2)异常处理代码中的SQLCODE,可以配置成兼容ORACLE
3)在ORACLE中的相关测试
执行测试代码
declarevar_1 number(10,2);
beginselect 2/0 into var_1 from dual;
end;
/

Oracle除数为0的代码是1476
3.6 参数CALC_AS_DECIMAL
静态参数。
0:默认值,表示整数类型的除法、整数与字符或 BINARY 串的所有四则运算,结果都处理成整数;
1:表示将整数类型的除法、整数与字符或 BINARY 串的除法转换为 DECIMAL 处理;
2:表示将整数类型的除法、整数与字符或 BINARY 串的所有四则运算都转换为 DECIMAL 处理;
3:所有涉及整型的四则运算全部转换为 DECIMAL 处理。
注: 该 参 数 只有 在 USE_PLN_POOL 为 0 或 1 时有 效。 当 USE_PLN_POOL 为 2 或 3 时, 按 照CALC_AS_DECIMAL=2 处理
1)在DM8中测试CALC_AS_DECIMAL=0
执行测试代码
select 2/3 ;
select 5/4;
select 2.0/3;

小结:
1)这个参数适用于除数和被除数都是整数,具体可以观察实验中2/3与2.0/3的区别。
2)我们看到2/3的结果是0,而不是1,说明系统采用的是“舍位进位”而不是“四舍五入进位”。
2)在DM8中测试CALC_AS_DECIMAL=1
静态参数,配置后需要重启数据库生效
sp_set_para_value(2,'CALC_AS_DECIMAL',1);
执行测试代码
select 2/3 ;
select 5/4;
select 2.0/3;

测试结果:除法的结果有小数部分了。
3)在ORACLE中的相关测试
执行测试代码
select 2/3 from dual;
select 5/4 from dual;
select 2.0/3 from dual;

小结:通过实验我们发现,配置CALC_AS_DECIMAL=1后,达梦和ORACLE的小数位精度还是有一定差异的。
3.7 参数ENABLE_PL_SYNONYM
动态,系统级。是否可以通过同义词执行非系统用户创建的包或者存储过程。1是,0否。若设置为0,在解析过程/包名时,如果借助了同义词,则这些对象要么是系统内部创建的,或者其创建者必须为系统用户,否则一律报错
1)在DM8中测试ENABLE_PL_SYNONYM=0
创建非系统用户
create user user01 identified by "usr01";
grant "PUBLIC","RESOURCE","SOI","VTI" to user01;
用新用户登录
disql user01/user01
创建存储过程
CREATE OR REPLACE PROCEDURE "USER01"."P_TEST01" ()
ASVARNAME INT;
BEGINSELECT 1 INTO VARNAME;
END;
创建同义词
CREATE SYNONYM "USER01"."P_T01" FOR "USER01"."P_TEST01";
执行存储过程
CALL USER01.P_TEST01();

用同义词执行存储过程
CALL USER01.P_T01();

我们看到,ENABLE_PL_SYNONYM=0时,用同义词执行存储过程失败。
2)在DM8中测试ENABLE_PL_SYNONYM=1
动态参数,不需要重启
sp_set_para_value(1,'ENABLE_PL_SYNONYM',1);
调整完参数,再次测试用同义词执行非系统用户创建的存储过程
CALL USER01.P_T01();

测试结果:ENABLE_PL_SYNONYM=1时,用同义词执行存储过程成功。
3)在ORACLE中的相关测试
在ORACLE中测试,准备:
create user c##USER01 identified by "usr01";
grant PUBLIC,RESOURCE to c##USER01;CREATE OR REPLACE PROCEDURE c##user01.P_ORACLE_TEST01
ASVARNAME INT;
BEGINSELECT 1 INTO VARNAME FROM DUAL;
END;CREATE SYNONYM c##USER01.P_S01 FOR c##USER01.P_ORACLE_TEST01;
用同义词执行存储过程
CALL c##USER01.P_S01();

测试结果:ORACLE中默认可以用同义词执行存储过程。
3.8 参数VIEW_ACCESS_MODE
静态参数。
指定视图的自主访问控制机制。0:兼容 DM;1:兼容 ORACLE
实验部分待补充。(博主没有用过这个参数,有了解这个参数使用场景的欢迎在评论区留言)
本文结束!
参考文档:《DM8系统管理员手册》
2024年11月9日
相关文章:
达梦8数据库适配ORACLE的8个参数
目录 1、概述 1.1 概述 1.2 实验环境 2、参数简介 3、实验部分 3.1 参数BLANK_PAD_MODE 3.2 参数COMPATIBLE_MODE 3.3 参数ORDER_BY_NULLS_FLAG 3.4 参数DATETIME_FMT_MODE 3.5 参数PL_SQLCODE_COMPATIBLE 3.6 参数CALC_AS_DECIMAL 3.7 参数ENABLE_PL_SYNONYM 3.8…...
CSS实现文字渐变效果
效果图: 代码: h1 {font-size: 100px;color:linear-gradient(gold,deeppink);background-image:linear-gradient( -gold, deeppink); /*春意盎然*///背景被裁剪成文字的前景色。background-clip:text;/*兼容内核版本较低的浏览器*/-webkit-background-c…...
3. Redis的通用命令介绍
Redis作为一个高效的键值对存储系统,不仅支持多种数据结构,还提供了丰富的通用命令,这些命令适用于各种场景。本文将详细介绍Redis的常用通用命令,并结合具体应用场景,帮助你理解这些命令的功能与使用时机。 1. 键(key…...
[spark面试]spark与mapreduce的区别---在DAG方面
1、spark中的task是以线程实现的,而mapreduce中是以进程实现的。 进程的频繁启动和停止会增加资源的消耗。 2、spark中支持DAG,而mapreduce不支持DAG DAG的使用:为什么支持DAG会更加高效 1)、在DAG图中,会将一个job…...
tomcat启动失败和缓存清理办法
tomcat只在学校接触过并且是在window xp和win7的电脑上配置过(中途升级过电脑系统),只记得在windows系统上可以将其设置成服务管理。但我已毕业10多年了,学的知识早就不知道丢哪里了。这次为了修改一个07,08年的项目&a…...
【软件测试】需求的概念和常见模型(瀑布、螺旋、增量、迭代)
1. 什么是需求 在企业中,经常会听到:用户需求和软件需求 用户需求:没用经过合理的评估,通常就是一句话(开发一个五彩斑斓的黑)软件需求:开发人员和测试人员执行工作的依据 1.2 软件需求 在工…...
Python爬虫如何处理验证码与登录
Python爬虫如何处理验证码与登录 Python 爬虫在抓取需要登录的网站数据时,通常会遇到两个主要问题:登录验证和验证码处理。这些机制是网站用来防止自动化程序过度抓取数据的主要手段。本文将详细讲解如何使用 Python 处理登录与验证码,以便进…...
QT添加资源文件
QT添加资源文件 1.概述 这篇文章介绍为QT项目添加资源文件,例如项目中使用到的图片、音视频文件等等 2.添加资源文件 拷贝资源文件到项目中 在项目mainwindow.app文件上右键选择show in Finder 打开项目所在目录。 将图片文件夹复制到该目录中 创建资源文件结…...
负载均衡式在线oj项目开发文档(个人项目)
项目目标 需要使用的技术栈: 这个项目共分成三个模块第一个模块为公共的模块,用于解决字符串处理,文件操作,网络连接等等的问题。 第二个模块是一个编译运行的模块,这个模块的主要功能就是将用户的代码收集上来之后要…...
Python小白学习教程从入门到入坑------第二十六课 单例模式(语法进阶)
在这个节课的开始,我们先回顾一下面向对象课程中学的构造函数__init__() 目录 一、__init__() 和 __new__() 1.1 __init__() 1.2 __new__() 二、单例模式 2.1 特点 2.2 通过classmethod实现单例模式 2.3 通过装饰器实现单例模式 2.3 通过重写__new__() 实现…...
革命性AI搜索引擎!ChatGPT最新功能发布,无广告更智能!
文章目录 零、前言一、ChatGPT最新AI搜索引擎功能操作指导实战1:搜索新闻实战2:搜索天气实战3:搜索体育消息 二、感受 零、前言 大人,时代变了。 最强 AI 助力下的无广告搜索引擎终于问世。我们期待已久的这一刻终于到来了,从今天起,ChatGPT…...
windows C#-使用异常
在 C# 中,程序中的运行时错误通过使用一种称为“异常”的机制在程序中传播。 异常由遇到错误的代码引发,由能够更正错误的代码捕捉。 异常可由 .NET 运行时或由程序中的代码引发。 一旦引发了一个异常,此异常会在调用堆栈中传播,直…...
玩的花,云产品也能拼团了!!!
说起拼单大家都不陌生,电商一贯的营销手段,不过确实可以给消费者省下一笔钱。双11到了,腾讯云产品也玩起了拼团,这明显是对开发人员和各企业的福利。 对于有云产品需求的个人或企业,这次绝对是难得的一次薅羊毛机会。…...
HTML+CSS基础【快速上手】
目录 一、HTML展示 1、HTML基础结构 2、认识元素属性 (1)元素属性理解 (2)实例 3、自结束标签和注释 (1)自结束标签 (2)注释 4、语义化标签 (1)语义…...
mysql分布式锁
大家好,今天我们来看下如何使用本地MySql实现一把分布式锁,以及Mysql实现分布式锁的原理是怎么样的 MySql实现分布式锁有三种方式 1:基于行锁实现分布式锁 k1.png 实现原理 首先我们的表lock要提前存好相对应的lockName,这时候…...
探索四款强大的免费报表工具,提升数据可视化能力
概述 在当今数据驱动的时代,报表工具成为了企业分析和可视化数据的重要助手。通过这些工具,用户可以轻松地将原始数据转换为直观易懂的报表,帮助决策者更快地获取信息和做出判断。本文介绍了四款免费的报表工具,包括山海鲸报表、…...
电机可靠性影响因素研究
电机作为现代工业自动化和日常生活中不可或缺的核心设备,其可靠性直接关系到系统的整体性能和安全性。电机的可靠性不仅影响生产效率、降低维护成本,还有助于提高产品的质量和企业的市场竞争力。 一、电机可靠性的概念 电机可靠性是指电机在规定条件下和…...
GB/T 28046.4-2011 道路车辆 电气及电子设备的环境条件和试验 第4部分:气候负荷(6)
写在前面 本系列文章主要讲解道路车辆电气及电子设备的环境条件和试验GB/T 28046标准的相关知识,希望能帮助更多的同学认识和了解GB/T 28046标准。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 第4部分:气候负荷 5. 试验和要求 5.8 流动混合气体腐蚀试验 5.8.1 目的…...
后端接口返回二进制文件,前端 window.opent预览展示
详细步骤 1.修改 PreviewApi 函数: 设置 responseType 为 ‘arraybuffer’,以接收二进制数据。 export const PreviewApi (data) > request({method: post,url: /dev-api/preview,responseType: arraybuffer,data });3.处理响应: 使用…...
基于STM32的红外遥控接收器
1. 引言 红外遥控技术广泛应用于电视、空调等家用电器的控制。通过本项目,我们将学习如何使用STM32开发板搭建一个红外遥控接收器,能够接收来自遥控器的信号,并在串口终端上显示按键信息。 2. 环境准备2.1 硬件需求 - STM32开发板࿰…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
