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

【万字实操】可视化运维平台openGauss Datakit,带你轻松玩转openGauss 5.0

openGauss Datakit:
openGauss社区推出的可视化的运维工具.

特性优势

  • 初级用户学习openGauss门槛高让你望而却步?
    openGauss Datakit一键化安装企业版集群、监控、日志分析、SQL诊断,让你快速上手,快速部署,从容面对企业环境!

  • 不同openGauss版本运维命令让你晕头转向?
    openGauss Datakit屏蔽命令差异,可视化操作,屏蔽命令差异,让你不再为细节犯愁,轻松驾驭openGauss数据库!

  • 数据迁移和校验速度慢成了难题?
    openGauss Datakit携手全新迁移工具集,图形化、批量并行迁移全流程,速度大幅提升,告别烦恼!

  • openGauss的监控和日志分析让你头疼?
    openGauss Datakit一站式解决方案,让你轻松掌控数据库状态!

openGaussDatakit,开启数据库畅玩时代,让运维如丝般顺滑!

完全干货,本文将从实操方面手把手带你安装Datakit以及使用Datakit部署openGauss5.0.0集群。

注意事项

  • 当前平台运行依赖于openJDK11

  • 平台使用的数据库,当前仅支持openGauss数据库,并且需要提前创建database

  • 如果有防火墙,需要将部署服务器IP配置在平台使用的数据库(openGauss)的白名单列表中

  • 平台默认的登录账号密码:admin/admin123,请在首次登录后及时修改密码

注:
本文基于openEuler release 22.03 LTS x86_64部署openGaussDatakit5.0.0

Datakit的安装

1 环境准备

1.1 创建安装包存放目录

mkdir -p /soft/

我这里已经将用到的各种包整理到datakit-about.zip

datakit下载地址:
https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/Datakit/Datakit-5.0.0.tar.gz

上传datakit-about.zip到/soft并解压

cd /soft
unzip datakit-about.zip

解压后的目录结构如下

/soft/datakit-about
├── datakit
│   └── Datakit-5.0.0.tar.gz
├── docker
│   └── docker-engine-18.09.0-300.oe2203.x86_64.rpm
├── openGaussRPM
│   └── opengauss-2.1.0-5.oe2203.x86_64.rpm
└── openjdk
├── giflib-5.2.1-4.oe2203.x86_64.rpm
├── java-11-openjdk-11.0.20.8-0.oe2203.x86_64.rpm
├── java-11-openjdk-headless-11.0.20.8-0.oe2203.x86_64.rpm
├── java-1.8.0-openjdk-1.8.0.352.b08-3.oe2203.x86_64.rpm
├── java-1.8.0-openjdk-devel-1.8.0.352.b08-3.oe2203.x86_64.rpm
└── java-1.8.0-openjdk-headless-1.8.0.352.b08-3.oe2203.x86_64.rpm

1.2 解压Datakit-5.0.0.tar.gz

cd /soft/datakit-about/datakit/
tar -xvf Datakit-5.0.0.tar.gz

解压后的Datakit-5.0.0目录结构如下

/soft/datakit-about/datakit/
├── alert-monitor-5.0.0-repackage.jar
├── alert-monitor-README.md
├── application-temp.yml
├── base-ops-5.0.0-repackage.jar
├── base-ops-README.md
├── Datakit-5.0.0.tar.gz
├── data-migration-5.0.0-repackage.jar
├── data-migration-README.md
├── data-studio-readme.md
├── monitor-tools-1.0.0-repackage.jar
├── observability-instance-5.0.0-repackage.jar
├── observability-instance-README.md
├── observability-log-search-5.0.0-repackage.jar
├── observability-log-search-README.md
├── observability-sql-diagnosis-5.0.0-repackage.jar
├── observability-sql-diagnosis-README.md
├── openGauss-tools-monitor-README.md
├── visualtool-main.jar
├── visualtool-README.md
└── webds-plugin-5.0.0-repackage.jar

2 安装docker

注:
jar方式安装Datakit时略过此步骤

cd /soft/datakit-about/docker/
rpm -ivh *.rpm

3 安装openJDK11

cd /soft/datakit-about/openjdk
rpm -ivh *.rpm

系统中安装多个jdk版本,可以使用alternatives命令来切换默认的Java版本,后面会提到。

4 安装openGauss数据库

该平台当前仅支持openGauss数据库,并且需要提前创建database。
这里采用最简单的一种方式——通过RPM方式安装极简版的openGauss。

cd /soft/datakit-about/openGaussRPM
rpm -ivh *.rpm

切换到openGauss用户

su - opengauss

进入openGauss数据目录

cd $PGDATA

编辑 postgresql.conf

vi postgresql.conf

修改下面两个参数

listen_addresses = '*'
max_connections = 1000

编辑 pg_hba.conf

vi pg_hba.conf

文末追加

host all all 0.0.0.0/0 sha256

重启openGauss服务

gs_ctl restart

登录数据库

gsql -d postgres -p 7654 -r

修改openGauss密码
初次登录,执行命令时会提示修改openGauss密码
出现如下信息

ERROR: Please use "ALTER ROLE user_name PASSWORD 'password';" to set the password of user opengauss before other operation!

修改openGauss密码即可

ALTER ROLE opengauss PASSWORD 'Admin@123';

创建用户

CREATE USER trex IDENTIFIED BY 'Trex@123';

授权

alter user trex sysadmin;

创建数据库

create database trexdb;

be3d04c4ab57e9da0b546bda4ed5223d.jpeg

5 安装部署

5.1 jar包方式(离线安装)

5.1.1 创建datakit工作目录,并在工作目录中创建存放系统运行数据的子目录
mkdir -p /ogdatakit/{logs,config,ssl,files,visualtool-plugin}
5.1.2 将visualtool-main.jar包复制到 /ogdatakit 下
cd /ogdatakit/
cp /soft/datakit-about/datakit/visualtool-main.jar .
5.1.3 将插件复制到/ogdatakit/visualtool-plugin
cp /soft/datakit-about/datakit/base-ops-5.0.0-repackage.jar /ogdatakit/visualtool-plugin
5.1.4 修改配置文件

将配置文件application-temp.yml 复制到 /ogdatakit/config/下
修改application-temp.yml文件中的数据链链接ip、port、database、dbuser、dbpassword。

cp /soft/datakit-about/datakit/application-temp.yml /ogdatakit/config/
vi /ogdatakit/config/application-temp.yml

修改如下部分内容
6ce5bc58a3d1433b2576c2d26da75733.jpeg

5.1.5 修改配置文件中平台工作目录
sed -i s#/ops#$(pwd)#g config/application-temp.yml
5.1.6 创建ssl文件

keytool -genkey 命令用于创建 SSL 文件(包括密钥对和证书),并且它与 JDK(Java Development Kit)是有关系的。keytool 是 JDK 提供的一个工具,用于管理密钥库和证书,用于加密和身份验证等安全通信。

切换到openJDK11环境,并验证版本

alternatives --config java
java -version

c16d96b1fe6dd7166f44aa5b147ec99f.jpeg

keytool -genkey -noprompt \
-dname "CN=opengauss, OU=opengauss, O=opengauss, L=Beijing, S=Beijing, C=CN"\
-alias opengauss\
-storetype PKCS12 \
-keyalg RSA \
-keysize 2048 \
-keystore $(pwd)/ssl/keystore.p12 \
-validity 3650 \
-storepass 123456
5.1.7 执行启动命令
nohup java -Xms2048m -Xmx4096m -jar $(pwd)/visualtool-main.jar \
--spring.profiles.active=temp >$(pwd)/logs/visualtool-main.out 2>&1 &
5.1.8 查看执行日志
tail -200f /ogdatakit/logs/visualtool-main.out

显示如下信息表示初始化完成
f47691537fd17a6e15b3cdf721051bd7.jpeg
接下来就可以使用Datakit了,详见步骤 【Datakit的使用】

5.2 docker方式安装(联网安装)

5.2.1 创建datakit工作目录,并在工作目录中创建存放系统运行数据的子目录
mkdir -p /ogdatakit/{logs,config,ssl,files,visualtool-plugin}
5.2.2 将visualtool-main.jar包复制到 /ogdatakit 下
cd /ogdatakit/
cp /soft/datakit-about/datakit/visualtool-main.jar .
5.2.3 将插件复制到/ogdatakit/visualtool-plugin
cp /soft/datakit-about/datakit/*.jar /ogdatakit/visualtool-plugin
5.2.4 修改配置文件

将配置文件application-temp.yml 复制到 /ogdatakit/config/下
修改application-temp.yml文件中的数据链链接ip、port、database、dbuser、dbpassword.

cp /soft/datakit-about/datakit/application-temp.yml /ogdatakit/config/
vi /ogdatakit/config/application-temp.yml

修改如下部分内容

ab6344c5a91972d39938f3a44e8c9d02.jpeg

5.2.5 创建ssl文件

keytool -genkey 命令用于创建 SSL 文件(包括密钥对和证书),并且它与 JDK(Java Development Kit)是有关系的。keytool 是 JDK 提供的一个工具,用于管理密钥库和证书,用于加密和身份验证等安全通信。

切换到openJDK11环境

alternatives --config java

验证版本

java -version

c3622d2fde17da7efa494b93e43e54bd.jpeg

创建ssl文件

cd /ogdatakit/
keytool -genkey -noprompt \
-dname "CN=opengauss, OU=opengauss, O=opengauss, L=Beijing, S=Beijing, C=CN"\
-alias opengauss\
-storetype PKCS12 \
-keyalg RSA \
-keysize 2048 \
-keystore $(pwd)/ssl/keystore.p12 \
-validity 3650 \
-storepass 123456
5.2.6 编辑Dockerfile
cd /ogdatakit/
vi Dockerfile

粘贴以下内容

FROM openjdk:11
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 9494 5432
WORKDIR /ops/
ENTRYPOINT ["java","-Xms2048m","-Xmx4096m", "-jar", "visualtool-main.jar"]
5.2.7 构建镜像
cd /ogdatakit/
docker build -f Dockerfile -t datakit:5.0.0 .
5.2.8 启动容器
cd /ogdatakit/
docker run -idt -p 9494:9494 \
-v /etc/localtime:/etc/localtime:ro \
-v $(pwd):/ops \
--name datakit datakit:5.0.0 \
--spring.profiles.active=temp
c1f66134e5e958d1b1253b80cec4785c.jpeg
显示的 a25f5fdda47531e9c9093e501e569a4aeba59b610581d11c2ff4be317108e697 为容器ID

列出当前正在运行的容器

docker ps

显示如下
e40f77435316639ce34fdb712292d943.jpeg

查看日志

docker logs -f datakit

显示如下信息表示初始化完成
292792aeb7cb1fe57f6b3080a0b4af79.jpeg
接下来就可以使用Datakit了,详见步骤 【Datakit的使用】

Datakit的使用

1 登录管理界面

在浏览器中打开如下地址:https://192.168.7.100:9494

ac26aef4ace8148290630f9ce77dd530.jpeg

平台默认的登录账号密码:admin/admin123,请在首次登录后及时修改密码。
进入主界面

f813cd9c4527d855d2583bc0d5336e5c.jpeg

2 安装部署openGauss集群

此处以安装一主一备集群为例进行演示

2.1 环境概要

主机名 操作系统 架构 IP trex01 openEuler20.03 x86_64 192.168.7.111 trex02 openEuler20.03 x86_64 192.168.7.112

2.2 安装前准备

下载openGauss企业版安装包:https://opengauss.org/zh/download/

3aff66141505c7d2c2c92e31a3e98097.jpeg

下载完成后会得到 openGauss-5.0.0-openEuler-64bit-all.tar.gz

2.2.1 创建用户组dbgrp及用户

注:
1 操作系统root用户执行
2 trex01和trex02都操作

groupadd dbgrp
useradd -g dbgrp omm
passwd omm

密码这里设置为omm@123

2.2.2 给omm授予root权限
chmod u+w /etc/sudoers
vi /etc/sudoers

追加如下内容

omm ALL=(ALL) NOPASSWD: ALL
2.2.3 创建软件包路径并授权
mkdir -p /opt/software/openGauss
chmod +x /opt/software/openGauss/
chown -R omm:dbgrp /opt/software
2.2.4 在root用户下验证下述命令是否执行成功

注:
如果不成功,请检查上述3个步骤

su - omm -c 'cd /opt/software/openGauss/'
2.2.5 安装依赖包
yum install libaio-devel flex bison ncurses-devel glibc-devel patch readline-devel libnsl2 bzip2 python3 expect

2.3 配置服务器信息

进入Datakit管理界面

2.3.1 配置trex01
  • 新增物理机


1 准确的来说,界面上应该是新增服务器,这里物理机和虚拟机均可
2 如果服务器只有一个网卡,内外网ip可以设置成同一个。
3 端口为ssh端口
4 密码:操作系统root密码

788bf0a25524f291166109a2287f02be.jpeg

  • 添加普通用户


这里添加的用户是在2.2.1步骤创建的omm用户

9772cb26e6bea6b5b40413dbce0d7470.jpeg

0e699f1b223181447355603d4e85f6e0.jpeg

ec9b459cea2606e7c12570d73123ec2a.jpeg

0b455ae4d0947a8024c909bb9df498ea.jpeg

2.3.2 配置trex02

以配置trex01同样的方法,配置trex02

2.3.3 配置信息预览

trex01和trex02配置完成后,显示如下
7c84740f65978939246e71d773c23f4e.jpeg

2.4 集群安装

2.4.1 选择安装的openGauss版本

此处以企业版为例
4d66032991af367955ec8bc8d08c353f.jpeg

2.4.2 选择安装方式

这里以离线安装为例
8c9b759eef2821a4201b6c44eb8fcfec.jpeg

2.4.3 上传安装包

点击上传
a3388c2546d9ae86bbf689bac8258722.jpeg

在弹出的界面直接点击图中的“+”上传,会自动识别并填充其它信息

6dc407907b6dbd191a49df54b958a3b6.jpeg

选择 openGauss-5.0.0-openEuler-64bit-all.tar.gz
e1a25d5dabe42ef944a0af0b33c0294d.jpeg

安装包名称可自定义,其它信息为自动识别
ea5843cf8cbf2c618e035d9e20541b1f.jpeg

上传完成后,会显示到如下
选中openGauss的安装包

88c3df342a5ff896c446772b8eb237cc.jpeg

2.4.4 集群配置
  • 集群配置

f6d6555341e3699a2bd91f5c3f78b62c.jpeg


1 这里选择环境分离后,openGauss的环境变量会单独配置的自定义文件中,避免和用户环境变量产生混乱。
2 根据个人习惯,你也可以不选择环境分离

  • 主节点配置
    因为前面配置过服务器信息,这里直接下拉框选择即可

02cead37ab0af6525906f12e7698ea1f.jpeg

  • 备节点1配置
    a7a01b548b0bf5cc3bedade70131197a.jpeg

2.4.5 环境检测

8ff09e74af34b6437bf05f2b71b9902c.jpeg

图中的警告信息可忽略。
原因:这里内存建议32GB或以上是针对生产环境的要求,实际开发测试4GB完全可以正常安装。

2.4.6 集群信息预览

1765ca92e7f25fd806e25bae3412e92f.jpeg

2.4.7 执行安装

a4160ba694535875771e4bb54dd9283b.jpeg


安装过程中:
1 openGauss集群安装完全自动化
2 窗口中会显示执行命令的详细信息
3 请勿进行其他操作,否则将导致安装失败

2.4.8 安装完成

显示如下信息,表示安装成功

96cf5fcd65ac3702eedbce0a3eda33b9.jpeg

请妥善保管用户名密码

名称 集群标识 cluster_trex 端口号 5432 数据库用户 gaussdb 主节点 192.168.7.111 备节点1 192.168.7.112

初始化密码:Trex@123

默认数据库用postgres

2.5 集群一览

在首页界面可以看到集群一览信息
实时显示服务器的cpu使用率、内存使用率、网络状态、连接数等信息

31d794b9304f6cad9b29f9fa854a3f81.jpeg

2.7 集群管理

进入集群管理界面,可以进行启动、停止、重启、备份、卸载、强制卸载、删除集群

85909293f110694b4be738b9da4d81ba.jpeg

2.8 实例管理

新增数据源
3653f0ef3e653b266920f3410d86c9b1.jpeg

05fe1d54047171d9db1c3c895050882d.jpeg

2.9 业务开发

2.9.1 填写数据库连接信息

74b66bd7a7ea4e4bd5719ed9c63f9044.jpeg
数据库列表显示如下
18ad0c66fe0e9e365e43b88cc047a072.jpeg

2.9.2 创建测试表,并进行查询

69b7014e291188e644d54ecbd9362ca9.jpeg

2.10 其他功能

关于其它功能,操作很简单,这里不做赘述,快开始动手探索吧!


相关文章:

【万字实操】可视化运维平台openGauss Datakit,带你轻松玩转openGauss 5.0

openGauss Datakit:openGauss社区推出的可视化的运维工具. 特性优势 初级用户学习openGauss门槛高让你望而却步?openGauss Datakit一键化安装企业版集群、监控、日志分析、SQL诊断,让你快速上手,快速部署,从容面对企业环境&#…...

《动手学深度学习 Pytorch版》 10.1 注意力提示

10.1.1 生物学中的注意力提示 “美国心理学之父” 威廉詹姆斯提出的双组件(two-component)框架: 非自主性提示:基于环境中物体的突出性和易见性 自主性提示:受到了认知和意识的控制 10.1.2 查询、键和值 注意力机制…...

C# 写入文件比较

数据长度:128188个long BinaryWriter每次写一个long 耗时14.7828ms StreamWriter每次写一个long 耗时44.0934 ms FileStream每次写一个long 耗时20.5142 ms FileStream固定chunk写入,循环操作数组,耗时13.4126 ms byte[] chunk new byte[d…...

医院设备利用(Use of Hospital Facilities, ACM/ICPC World Finals 1991, UVa212)rust解法

医院里有n(n≤10)个手术室和m(m≤30)个恢复室。每个病人首先会被分配到一个手术室,手术后会被分配到一个恢复室。从任意手术室到任意恢复室的时间均为t1,准备一个手术室和恢复室的时间分别为t2和t3&#xf…...

解决github ping不通的问题(1024程序员节快乐!

1024程序员节快乐!(随便粘贴一个文档,参加活动 解决github ping不通的问题 域名解析(域名->IP):https://www.ipaddress.com/ Ubuntu平台 github经常ping不通或者访问缓慢,方法是更改host…...

QT基础 柱状图

目录 1.QBarSeries 2.QHorizontalBarSeries 3.QPercentBarSeries 4.QHorizontalPercentBarSeries 5.QStackedBarSeries 6.QHorizontalStackedBarSeries 从上图得知柱状的基类是QAbstractBarSeries,派生出来分别是柱状图的水平和垂直类,只是类型…...

微机原理与接口技术-第七章输入输出接口

文章目录 I/O接口概述I/O接口的典型结构基本功能 I/O端口的编址独立编址统一编址 输入输出指令I/O寻址方式I/O数据传输量I/O保护 16位DOS应用程序DOS平台的源程序框架DOS功能调用 无条件传送和查询传送无条件传送三态缓冲器锁存器接口电路 查询传送查询输入端口查询输出端口 中…...

YoloV8改进策略:独家原创,LSKA(大可分离核注意力)改进YoloV8,比Transformer更有效,包括论文翻译和实验结果

文章目录 摘要论文:《LSKA(大可分离核注意力):重新思考CNN大核注意力设计》1、简介2、相关工作3、方法4、实验5、消融研究6、与最先进方法的比较7、ViTs和CNNs的鲁棒性评估基准比较8、结论YoloV8官方结果改进一:测试结果摘要 本文给大家带来一种超大核注意力机制的改进方…...

7天易语言从入门到实战(一)

1.1易语言简介 易语言是一门有着伟大理想的语言。公司用的少,开发者也很少,并不影响国人对他的热情。曾经的多玩LOL,朗读女,都是陪伴再那个国产PC应用匮乏的时代。 2001年1月 吴涛研发了中国自主知识产权的的中文编程语言——易语…...

redis缓存问题

缓存击穿 缓存击穿是指某个热点数据存储在redis中,该数据在高并发的场景下,当该key过期时就会有大量的请求去查询数据库,对数据库的压力非常大,可能会导致数据库压垮。 解决方案 1.不为热点的key设置过期时间。 2.使用分布式锁…...

mysql创建自定义函数报错

mysql创建自定义函数报错:This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declarat… 这是我们开启了bin-log,我们就必须指定我们的函数是否是 1.DETERMINISTIC 不确定的 2.NO SQL没有sql语句,当然也不会修改数…...

Docker 的数据管理与网络通信以及Docker镜像的创建

目录 Docker的数据管理 1、数据卷 2、数据卷容器 3、端口映射 4、容器互联 二、Docker网络 1、Docker网络实现原理 2、Docker的网桥模式 1)Host 2)Container 3)none 4)bridge 5)自定义网络 3、创建自定义…...

linux系统查看bash的history

要输出最近的20条命令,可以使用history命令。在Bash终端中,输入以下命令即可获取最近的20条命令历史记录: history 20这将显示你最近执行的20条命令及其相应的行号。 要将最近的20条命令写入到一个名为 “command.txt” 的文本文件中&#…...

【T+】畅捷通T+增加会计科目提示执行超时已过期。

【问题描述】 在畅捷通T软件中, 增加会计科目的时候提示: 通过DataTable插入ext扩展表出错:执行超时已过期。 完成操作之前已超时或服务器未响应。 操作已被用户取消。 语句已终止。 【解决方法】 【方法一】 注销用户登录,回到软件登录界面…...

0基础学习VR全景平台篇第111篇:全景图拼接和编辑 - PTGui Pro教程

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 前情回顾:上节,我们将源图像导入了PTGui,也设置好了各项参数。 下面我们就开始拼接全景图,并且在编辑器里进行一系列检查错位和设…...

Dynamics 365 使用ILMerge 合并CRM开发后的DLL

很久以前写过一篇博文,关于用ILMerge 命令合并DLL,当时时纯敲命令行的,现在有了更简单的方式,只需要在NuGet下载如下两个包 另外插件引用第三方dll的新方案Preview来了,不久的将来就不需要使用ILMerge了...

SpringBoot Web请求响应

目录 前言请求PostmanPostman使用 简单参数原始方式接收普通参数SpringBoot方式接收普通参数参数名不一致问题 实体参数简单实体参数复杂实体对象 数组集合参数数组参数集合参数 日期参数JSON参数路径参数 响应ResponseBody统一响应结果请求响应案例案例需求与准备工作案例实现…...

Jenkins CLI二次开发工具类

使用Jenkins CLI进行二次开发 使用背景 公司自研CI/DI平台,借助JenkinsSonarQube进行代码质量管理。对接版本 Jenkins版本为:Version 2.428 SonarQube版本为:Community EditionVersion 10.2.1 (build 78527)技术选型 Java对接Jenkins有第…...

2. 计算WPL

题目 Huffman编码是通信系统中常用的一种不等长编码,它的特点是:能够使编码之后的电文长度最短。 更多关于Huffman编码的内容参考教材第十章。 输入: 第一行为要编码的符号数量n 第二行~第n1行为每个符号出现的频率 输…...

筹备三年,自动驾驶L3标准将至,智驾产业链的关键一跃

‍作者|张祥威 编辑|德新 多位知情人士告诉HiEV,智能网联汽车准入试点通知,乐观预计将在一个月内发布。试点的推动,意味着国家层面的自动驾驶L3标准随之到来。 「L3标准内容大部分与主机厂相关,由工信部牵头,找了几家…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

vscode里如何用git

打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...