【我和openGauss的故事】记一次基于在银河麒麟系统上适配openGauss进阶之旅

银河麒麟服务器V10SP1-x86_64-Build20/20210518安装openGauss-3.0.0企业版单实例安装部署 银河麒麟服务器操作系统安装gaussdb单实例 阅读详情

【我和openGauss的故事】记一次基于在银河麒麟系统上适配openGauss进阶之旅

每天译点晓知识 2023-07-14 18:50 发表于openGauss

开篇

1、数据库架构

图片

百度百科:openGauss 是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss采用木兰宽松许可证v2发行,提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力特性。同时,openGauss也是一个开源、免费的数据库平台,鼓励社区贡献、合作。

2、核心特性

  • 高性能
  • 提供了面向多核架构的并发控制技术结合鲲鹏硬件优化,在两路鲲鹏下TPCC Benchmark达成性能150万tpmc。
  • 针对当前硬件多核NUMA的架构趋势,在内核关键结构上采用了Numa-Aware的数据结构。
  • 提供Sql-bypass智能快速引擎技术。
  • 针对频繁更新场景,提供Ustore存储引擎。
  • 高可用
  • 支持主备同步,异步以及级联备机多种部署模式。
  • 数据页CRC校验,损坏数据页通过备机自动修复。
  • 备机并行恢复,10秒内可升主提供服务。
  • 提供基于Paxos分布式一致性协议的日志复制及选主框架。
  • 高安全

支持全密态计算,访问控制、加密认证、数据库审计、动态数据脱敏等安全特性,提供全方位端到端的数据安全保护。

  • 易运维
  • 基于AI的智能参数调优和索引推荐,提供AI自动参数推荐。
  • 慢SQL诊断,多维性能自监控视图,实时掌控系统的性能表现。
  • 提供在线自学习的SQL时间预测。
  • 全开放
  • 采用木兰宽松许可证协议,允许对代码自由修改,使用,引用。
  • 提供伙伴认证,培训体系和高校课程。

写在前面的话,每一篇摘文都以实际案例场景出发,抽出空余时间记录每一次mark历程,在不一样的业务实际场景下,针对项目阶段所产生的变化,制定不一样的技术方案。不论多么渺小的技术方案,放在其对应的场景下都有着不一样的意义。实践是检验真理的唯一标准,当真正实操过后参与讨论,或许会让你有一点新发现,希望对读者在思考上有点不一样的IDea,欢迎Join谁与说,热衷拥抱新知识,旨在技术交流+心得分享->每天译点晓知识。

资讯

继鸿蒙之后,基于openEuler操作系统正式推出,鲲鹏计算生态迅速发展起来,鲲鹏920系列服务器CPU,鲲鹏920处理器兼容ARM架构,在性能、吞吐方面都有创新突破,支持国产-计算推向新高度,不仅CPU,操作系统配套欧拉openEuler,麒麟Kylin V10,鸿蒙就在我们身边。

这里,我们来记录一次在国产操作系统-银河麒麟上如何部署openGauss数据库?

实战

本文,小编主要以信息技术创新认证->数据库openGauss为例->常见问答Q-A的方式阐述:

1、版本选取

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

2、安装部署

首先,获取麒麟相关环境信息,

(注:麒麟操作系统及安装,远程终端连接可参考之前提供的FAQ手册,本文不重点阐述。)

接着,通过类似终端Xshell或Xftp工具连接主机,

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

创建软件包文件夹并授权,

mkdir -p /home/soft

创建当前部署路径并授权,

mkdir /home/opengauss

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

查询当前硬件环境-ARM架构服务器,

lscpu

查询当前操作系统信息,

cat /etc/os-release

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

进入软件安装包文件路径,下载openGauss安装包(根据实际需要,选择不同的版本:opengauss 1 || opengauss2 || opengauss3)

cd /home/soft

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

(注:不同的操作系统及其搭载的硬件环境x86、arm架构需要特别留意一下,比如:在Kylin操作系统x86架构下执行aarch64这类包会报“无非执行二进制文件,可执行文件格式错误”!)

查询当前硬件环境-为x86架构服务器,执行aarch64包…

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

接下来,进入当前部署路径,解压openGauss安装包,

cd /home/opengauss

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

查看python版本,opengauss目录,

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

(注:本文这里是已经在信创环境装好了的,我们在初始化openGauss安装环境+python环境前,可提前查阅,更多请参考openGauss官方文档)

其中,配置文件维护,可以通过Xshell或Xftp工具去创建VS修改,

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

在script文件夹下创建clusterconfig.xml文件,

vi script/clusterconfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss信息 -->
    <CLUSTER>
        <PARAM name="clusterName" value="opengauss_cluster" />
        <PARAM name="nodeNames" value="opengauss_node1" />
        <PARAM name="backIp1s" value="ip"/>
        <PARAM name="gaussdbAppPath" value="/home/opengauss/install/app" />
        <PARAM name="gaussdbLogPath" value="/var/log/omm" />
        <PARAM name="tmpMppdbPath" value="/home/opengauss/tmp" />
        <PARAM name="gaussdbToolPath" value="/home/opengauss/install/om" />
        <PARAM name="corePath" value="/home/opengauss/corefile" />
        <!-- openGauss 类型簇类型。该参数是可选的。single-inst表示一个主节点多个备节点的独立集群。-->
        <PARAM name="clusterType" value="single-inst"/>
    </CLUSTER>
    <DEVICELIST>
        <!-- opengauss_node1节点信息 -->
        <DEVICE sn="1000001">
             <!-- 主机名。-->
            <PARAM name="name" value="opengauss_node1"/>
             <!-- AZ 名称。该值为字符串,不能包含特殊字符,例如AZ1、AZ2、AZ3。-->
            <PARAM name="azName" value="AZ1"/>
             <!-- AZ优先。-->
            <PARAM name="azPriority" value="1"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP。后端存储网络中主机的内网IP地址,所有的 openGauss 主机都在这个网络上相互通信。-->
            <PARAM name="backIp1" value="ip"/>
             <!-- SSH可靠通道的外部IP地址。如果没有使用外部网络,您可以将其留空或将其设置为backIp1的值。-->
            <PARAM name="sshIp1" value="ip"/>
            
             <!--dbnode1-->
             <!-- 当前主机上要部署的数据库节点数。-->
             <PARAM name="dataNum" value="1"/>
             <!-- 数据库节点的基本端口号。默认值为40000。-->
             <PARAM name="dataPortBase" value="15400"/>
             <!-- 当前主机上存储数据库节点数据的目录。它是一个数据存储目录,应该在数据盘上。-->
             <PARAM name="dataNode1" value="/home/opengauss/install/data/db1"/>
             <!-- 当前集群中同步模式的节点数。该参数是可选的。取值范围为 0 到备用数据库节点数。-->
             <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>

接下来,就是初始化安装环境:执行gs_preinstall,

./gs_preinstall -U omm -G dbgrp -X /home/opengauss/script/clusterconfig.xml

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

检查预安装环境gs_checkos,执行gs_install,按提示步骤去执行即可,待安装完成后,查看状态

gs_om -t status --detail

测试数据库连接是否正常

gsql -d postgres -p port

启动/停止服务

gs_om -t stop 

gs_om -t start

卸载服务

执行gs_uninstall 
卸载集群
su - omm
gs_uninstall --delete-data
本地卸载
gs_uninstall --delete-data -L

3、适配改造

接下来,那如何在我们项目工程中去替换传统数据库MySql/SqlServer,实现数据库平滑替代?

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

// 驱动-连接地址-账号-密码等信息
String driverClassName = "org.postgresql.Driver";
String url = "jdbc:postgresql://ip:port/postgres";
String username = "user";
String password = "pwd";
// 加载驱动
Class.forName(driverClassName);
// 获取数据库连接对象
Connection con = (Connection) DriverManager.getConnection(url,username,password);
// 获取数据库操作对象
PreparesStatement ps = con.preparesStatement("SELECT COUNT(*) FROM TEST;");
// 执行sql
ResultSet rs= ps.executeQuery();
// 这里还可以获取到数据库产品名称
DatabaseMetaData metaData = (DatabaseMetaData) con.getMetaData();
// 这里为国产数据库-适配,在xml指定国产数据库的databaseId奠定基础
System.out.println("数据库产品名称:" + metaData.getDatabaseProductName());
最后需关闭连接close,释放资源->rs-ps-con.

tk.mybatis:mybatis定制的第一大业务增强库,或mybatis-plus,可根据实际业务场景择优选取控件。

pagehelper:分页控件,mybatis定制的第二大业务增强库。

总结

从全面适配工作改造下来,这也确实给了DBA以及研发人员对数据库SQL方言语句书写的一些约束规范。

若是通过Mysql或SqlServer迁移导入至openGauss。在数据迁移的时候,报某些字段超长,则需要查看源数据库中那些字段的类型及长度,这里应该是迁移有些字段,须在目标数据库中增加位宽。

比如:在MySql中varchar是表示字符,varchar(50)表示可以存放50个字符。这就意味着,50个字节,如果存中文,在utf-8的字符集下,只能存最多16个。所以,从源数据库到目标数据库中,varchar类型,需特别留意一下。

在实际项目工程中,研发尽量通用型写法。若是对于有些BI业务,其中,SQL写法较为复杂,不同数据库厂商方言不兼容,则可以基于Mybatis插件的思想,根据当前数据库databaseId,拦截SQL语句,加入各自数据库的SQL方言函数兼容,无需多套数据库XML中SQL写法,支持插拔式-需要时开启。

其中,分页的SQL拼装原理,对于不同的数据库可加入其对应的转换器,

protected BoundSql getPageBoundSql(Object parameterObject) {
    String tempSql = sql;
    String orderBy = PageHelper.getOrderBy();
    if (orderBy != null) {
        tempSql = OrderByParser.converToOrderBySql(sql, orderBy);
    }
    tempSql = localParser.get().getPageSql(tempSql);
    return new BoundSql(configuration, tempSql, localParser.get().getPageParameterMapping(configuration, original.getBoundSql(parameterObject)), parameterObject);
}
Parser.converToOrderBySql(sql, orderBy);
    }
    tempSql = localParser.get().getPageSql(tempSql);
    return new BoundSql(configuration, tempSql, localParser.get().getPageParameterMapping(configuration, original.getBoundSql(parameterObject)), parameterObject);
}
银河麒麟系统安装openGauss 如何在银河麒麟系统上安装openGauss 阅读详情

相关推荐

虚拟机银河麒麟V10安装openGauss数据库指南

选择:openGauss-5.0.3-openEuler-64bit.tar.bz2。

wilson_sen的博客 1172

麒麟V10安装OPenGauss数据库

openGauss数据库、麒麟V10、x86_64

weixin_53267215的博客 1万+

VMware vSphere运维管理手册

ESXi 7.0 引入了一种系统存储布局,可对大型模块和第三方组件进行灵活的分区管理和支持,同时简化了调试操作。ESXi 7.0 系统存储更改在 ESXi 7.0 之前,分区大小固定不变,除 /scratch 分区和可选 VMFS 数据存储之外,且分区号是静态的,这些限制了分区管理。在 ESXi 7.0 中,分区整合为更少且更大的可扩展分区,具体取决于所使用的引导介质及其容量。ESXi 7.0 系统存储布局包含四个分区:分区适用情况类型系统引导存储引导加载程序和 EFI 模块。FAT16。

Avenjan优快云博客 3624

在银河麒麟系统上适配openGauss的具体实践

从全面适配工作改造下来,这也确实给了DBA以及研发人员对数据库SQL方言语句书写的一些约束规范。若是通过Mysql或SqlServer迁移导入至openGauss。在数据迁移的时候,报某些字段超长,则需要查看源数据库中那些字段的类型及长度,这里应该是迁移有些字段,须在目标数据库中增加位宽。比如:在MySql中varchar是表示字符,varchar(50)表示可以存放50个字符。这就意味着,50个字节,如果存中文,在utf-8的字符集下,只能存最多16个。

m0_75008172的博客 2166

EPLAN电气设计精华 -模拟量传感器画法全解

本文介绍了EPLAN中模拟量压力传感器的标准画法要点,重点解析了电流型(4-20mA)、电压型(0-10V/0-5V)和特定应用型三种传感器的核心特点、典型符号、接线方式及应用场景。文章提供了EPLAN设备标识符示例,并分享了一个实际项目案例(XJC-Y01-20-4M传感器配合XJC-608T-F变送器和GSEE.GXLK-AI4S-I模块的应用),强调绘制前查阅技术资料的重要性。内容简明实用,有助于规范电气设计中的传感器绘制。

Qinmingyue13的博客 1181

温度实时检测预警系统(STC89C51RC+DS18B20)

温度实时检测预警系统

1 兴趣 2 实践 1496

全面适配 | 走近openGauss数据库+鲲鹏欧拉操作系统

实战 | 走近openEuler欧拉操作系统+openGauss数据库

yxd179的博客 3361

基于立创EDA的8口全千兆POE交换机设计详解:RTL8370N芯片与90W大功率供电方案

本文详细解析了基于立创EDA设计的8口全千兆POE交换机方案,核心采用RTL8370N交换芯片与支持90W大功率供电的IEEE 802.3bt标准PD芯片。文章深入探讨了PSE/PD供电管理、电源架构设计、电路细节及关键散热方案,为DIY或学习POE交换机硬件设计提供了完整的开源实践指南。

weixin_29050829的博客 1万+

第六届openGauss技术文章征集活动 | 初审合格名单已更新(截至7月21日)

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 【我和op...

openGauss的博客 85

具身智能端到端大模型VLA (Vision Language Action)

在语言为条件的机器人任务中,策略必须具备理解语言指令、视觉感知环境并生成适当动作的能力,这就需要VLA的。例如,在自动驾驶领域,传统的做法是将感知、预测、规划等步骤分开处理,而VLA则试图用一个统一的框架来替代这种分立的方法。另外,VLA的模型对于算力的需求很大,单片AI算力1000Tops的Thor大概率会延期发布,加上英伟达芯片的量产时间与成本挑战,以及在国内的应用情况,对车企而言是个大问题。以谷歌DeepMind推出的RT-2为例,该模型可以在新的物体、背景和环境中表现出显著改善的性能。

具身智能机器人 1万+

XS5018A TX ISP芯片同轴高清模拟输出图像处理芯片用户指南

当看门狗开启且系统异常,看门狗模块得不到喂狗信号时,自动产生看门狗复位信号,复位​​​​​​​。分量上与人眼对光谱的响应通常是有偏差的,通常通过一个色彩校正矩阵校正光谱响应的交叉效。但实际上由于电路的作用,复位模块对整个芯片及各个功能模块的复位进行统一管理,负责产生各个模块的软复位信。每个区域前景色可以在 16 个色表中查找,单个区域的前景色统一,各个区域的前。较弱的坏点被放大成刺眼的白点和明显的黑点,强烈推荐开启动态坏点校正功能。四种制式,通过寄存器配置,可以很方便的实现四种制式的切换、且可以对截止。

2403_88922712的博客 1960

第六届openGauss技术文章征集活动 | 首批初审合格名单公布!

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 ‍ ...

openGauss的博客 119

保研考研机试攻略(满分篇):第二章——满分之路上(1)

保研考研机试攻略(满分篇):第二章——满分之路上(1)2.1计算机和基础+2.2进阶背包问题+2.3毛毛虫算法

qq_63349644的博客 1195

第六届openGauss技术文章征集活动全部初审合格名单公布

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 【我和op...

openGauss的博客 119

基于 51 单片机的智能手势控制小车设计与实现

智能手势控制小车以STC89C52RC 单片机为控制核心,通过手势识别模块采集用户手势指令,经单片机处理后驱动电机执行前进、后退、左转、右转等动作。该项目融合了传感器技术、单片机编程和电机驱动技术,具有成本低、易实现、互动性强的特点,适合作为嵌入式系统入门实践案例。本项目成功实现了基于 51 单片机的智能手势控制小车,通过 APDS-9960 模块采集手势信号,经单片机处理后驱动电机完成基本动作,验证了 “传感器 + 单片机 + 执行器” 的嵌入式系统设计思路。

weixin_42300449的博客 178

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

第六届openGauss技术文章征集活动全部初审合格文章合集

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 【我和op...

openGauss的博客 125

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

倒计时2天 | 第六届openGauss技术文章征集活动最新初审合格名单(截至8.3)

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 【我和op...

openGauss的博客 87

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

倒计时8天 | 第六届openGauss技术文章征集活动最新初审合格名单(截至7.28)

7月5日-8月15日,openGauss社区联合Gauss松鼠会、墨天轮社区共同举办 【我和op...

openGauss的博客 102

OpenGauss 6.0安装指南(银河麒麟ARM64版)

按此流程操作后,OpenGauss 6.0将在银河麒麟ARM64服务器上完成安装,并支持远程用户通过密码访问。

lovexin636的专栏 1289

嵌入式ARM版本银河麒麟操作系统V10SP1安装OPenGauss数据库

ARM版本银河麒麟操作系统V10SP1安装OPenGauss数据库。

weixin_43441262的博客 4074

麒麟4(Ubuntu)环境下通过docker搭建OpenGauss主备机,实现主备同步、主备切换

链接: https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/离线安装docker需要下载3个包,containerd.io ,docker-ce-cli,docker-ce containerd.io_1.2.6-3_amd64.deb docker-ce_19.03.9_3-0_ubuntu-xenial_amd64.deb docker-ce-cli_19.03.9_3-0_ubuntu-xenial_amd64

weixin_44458442的博客 1279

银河麒麟高级服务器操作系统V10SP3(ARM64)安装高斯数据库opengaussdb 6.0教程

服务器:鲲鹏920服务器操作 系统:银河麒麟V10 SP3 2303服务器操作系统 数据库:openGauss-6.0.0-RC1-openEuler-64bit-all.tar,openGauss 6.0.0版本。

2401_84117090的博客 5982

银河麒麟V10 安装openGauss

本文介绍了在银河麒麟V10操作系统上安装openGauss数据库的简要流程

qq_40550682的博客 1685

麒麟V10与鲲鹏920系统下docker安装mysql8、redis、kkfileview

本次安装是基于操作系统为ky10版本、cpu为采用aarch64架构的Kunpeng-920芯片;采用docker部署安装,安装系统有mysql8版本、redis3.2.10版、kkfileview三种服务,其中mysql与kkfileview均需要满足aarch64架构,安装过程如有问题建议先看第4部分注意与小结,若未能解决在建议百度。

安于凡 8236

【我和openGauss的故事】实战:在Kylin桌面版操作系统中配置openGauss的ODBC数据源...

引言 ...

openGauss的博客 561
上一篇: 【我和openGauss的故事】openGauss特性CM支持两节点部署特性
下一篇: 【我和openGauss的故事】浅尝 openGauss v5.0.0 的 MySQL 语法兼容性
飞奔的数据库
博客等级 码龄3年 16粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值