数据库应用:Linux 部署 GaussDB

目录

 一、实验

1.环境

2.Linux 部署 GaussDB

3.Linux 使用 GaussDB 

4.使用 GaussDB 进行表与索引操作

5.使用 GaussDB 进行视图操作

6.使用 GaussDB 进行联表查询

7.使用 GaussDB 进行外键关联

二、问题

1.运行python脚本报错

2. 安装GaussDB 报错

3. install 安装有哪些参数

4. GaussDB有哪些服务状态

5. netstat 服务状态

6.查询表字段报错

7.添加外键报错


 一、实验

1.环境

(1)主机

表1  主机

主机软件版本IP备注
gaussdbGaussDB100192.168.204.80

(2)安全机制

查看

[root@localhost ~]# sestatus

关闭

[root@localhost ~]# vim /etc/selinux/config
……
SELINUX=disabled
……

再次查看(需要reboot重启)

[root@localhost ~]# sestatus

(3)防火墙

关闭

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl mask firewalld

(4)修改主机名

[root@localhost opt]# hostnamectl set-hostname gaussdb
[root@localhost opt]# bash

(5)查看IP地址

[root@gaussdb ~]# ip addr

(6)清空iptables规则

[root@gaussdb ~]# iptables -F
[root@gaussdb ~]# iptables -nL

2.Linux 部署 GaussDB

(1)查阅

1)官方文档下载
https://support.huaweicloud.com/download_gaussdb/index.html2)社区
https://opengauss.org/zh/

(2) 更改内核参数

[root@gaussdb ~]# vim /etc/sysctl.conf

修改前:

修改后:

#内核参数用于控制整个 Linux 系统中信号集的最大数量
kernel.sem = 50100 128256000 50100 2560   
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 1000 
#这个参数标示TCP三次握手建立阶段接受SYN请求队列的最大长度,默认为1024,将其设置得大一些可以使出现Nginx繁忙来不及accept新连接的情况时,Linux不至于丢失客户端发起的连接请求 
net.ipv4.tcp_max_syn_backlog = 2048 
#控制 Linux 内核将核心转储文件写到磁盘的哪里  
kernel.core_pattern = /corefile/core.%p.%e
#控制core文件的文件名中是否添加pid作为扩展名。文件内容为1,表示添加pid作为扩展名,为0则表示不添加    
kernel.core_uses_pid = 1 
#系统范围内共享内存段的最大数量 (Minimum size of shared memory segment (bytes))   
kernel.shmmni = 4096 
#允许系统打开的端口范围  
net.ipv4.ip_local_port_range = 9000 65500
#这个参数表示内核套接字接受缓存区默认的大小,默认值比较小,网络服务器需要调高 
net.core.rmem_default = 262144
# 这个参数表示内核套接字发送缓存区默认的大小,默认值比较小,网络服务器需要调高     
net.core.wmem_default = 262144
# 这个参数表示内核套接字接受缓存区的最大大小,网络服务器需要调高    
net.core.rmem_max =  4194304 
#这个参数表示内核套接字发送缓存区的最大大小,网络服务器需要调高    
net.core.wmem_max = 1048576
#所允许的并发请求的最大个数。最大个数通常是 64KB(用来对异步 I/O 的性能进行优化)    
fs.aio-max-nr = 1048576
#这个参数表示进程(比如一个worker进程)可以同时打开的最大句柄数,这个参数直线限制最大并发连接数,需根据实际情况配置。     
fs.file-max = 6815744    

刷新内核参数

[root@gaussdb ~]# sysctl -p

(3)创建组与用户

[root@gaussdb ~]# groupadd -g 1000 dbgrp
[root@gaussdb ~]# useradd -u 1100 -g dbgrp -d /home/omm -s /bin/bash omm
[root@gaussdb ~]# id omm
uid=1100(omm) gid=1000(dbgrp) 组=1000(dbgrp)

(4)更改用户密码

[root@gaussdb ~]# echo 123456 | passwd --stdin omm

(5)创建目录

[root@gaussdb ~]# mkdir -p /usr/local/gaussdb/{app,data,logs}

(6)更改属组

[root@gaussdb ~]# chown -R omm.dbgrp /usr/local/gaussdb/

(7)查看目录

[root@gaussdb ~]# tree /usr/local/gaussdb/

(8)解压安装包

[root@gaussdb ~]# tar xf GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz

查看

[root@gaussdb ~]# cd GaussDB_100_1.0.1-DATABASE-REDHAT-64bit/
[root@gaussdb GaussDB_100_1.0.1-DATABASE-REDHAT-64bit]# ls

(9)修改脚本

[root@gaussdb GaussDB_100_1.0.1-DATABASE-REDHAT-64bit]# vim +572 install.py

修改前:

修改后:(572-573注释 或 -1改为 -2)

 572         if self.run_pkg_name.find(distname.upper().replace("OS", "")) == -2:573             logExit("Run package %s.tar.gz is inconsistent with os system %s." % (self.run_pkg_name, distna     me))

(10)安装脚本

python install.py \
-U omm:dbgrp \
-R /usr/local/gaussdb/app/ \
-D /usr/local/gaussdb/data/ \
-C LSNR_ADDR=127.0.0.1,192.168.204.80 \
-C LSNR_PORT=1888 \
-C DATA_BUFFER_SIZE=500M \
-C SHARED_POOL_SIZE=150M \
-C TEMP_BUFFER_SIZE=150M

成功:

Checking runner.
Checking parameters.
End check parameters.
Checking user.
End check user.
Checking old install.
End check old install.
Checking kernel parameters.
Checking directory.
Checking integrality of run file...
Decompressing run file.
Setting user env.
Checking data dir and config file
Initialize db instance.
Creating database.
Creating database succeed.
Changing file permission due to security audit.
Install successfully, for more detail information see /home/omm/zengineinstall.log.

(11)监听网络

多了zengine 服务

[root@gaussdb ~]# netstat -antpu

(12)切换用户


[root@gaussdb ~]# su - omm[omm@gaussdb ~]$ vim .bashrc

(13)查看目录

[omm@gaussdb ~]$ ls /usr/local/gaussdb/
app  data  logs
[omm@gaussdb ~]$ ls /usr/local/gaussdb/app/
add-ons  admin  bin  lib  package.xml
[omm@gaussdb ~]$ ls /usr/local/gaussdb/data/
archive_log  cfg  data  dbs  log  protect  trc  zengine.lck

(14)登录数据库

输入y 


[omm@gaussdb ~]$ zsql sys/Changeme_123@127.0.0.1:1888Warning: SSL connection to server without CA certificate is insecure. Continue anyway? (y/n):y
connected.SQL> exit

免密登录

[omm@gaussdb ~]$ zsql sys/Changeme_123@127.0.0.1:1888 -qconnected.SQL> exit

(15)修改密码

SQL> ALTER USER SYS IDENTIFIED BY 'Admin@123';

(16)查看数据库

SQL> SELECT DBID,NAME,STATUS,OPEN_STATUS FROM dv_database;

查看版本

SQL> SELECT * FROM dv_version;

3.Linux 使用 GaussDB 

(1)查看命令脚本

[omm@gaussdb ~]$ ls /usr/local/gaussdb/app/bin/
Common.py  GaussLog.py  shutdowndb.sh  sql_process.py  uninstall.py  zctl.py  zencrypt  zengine  zsql

(2)安装依赖包 (root用户)

[root@gaussdb ~]# yum -y install lsof

(3)查看状态

[root@gaussdb ~]# su - omm[omm@gaussdb ~]$ zctl.py -t status

(4)关闭服务

[omm@gaussdb ~]$ zctl.py -t stop
Successfully stopped instance.
[omm@gaussdb ~]$ zctl.py -t status
Zengine instance has not started.
[root@gaussdb ~]# cd /usr/local/gaussdb/app/admin/scripts
[root@gaussdb scripts]# vim create_database.sample.sql

(5)启动服务

[omm@gaussdb ~]$ zctl.py -t start
Successfully started instance.
[omm@gaussdb ~]$ zctl.py -t status
Current instance STATUS OPEN

(6)切换状态

NOMOUNT状态

[omm@gaussdb ~]$ zctl.py -t stop
Successfully stopped instance.
[omm@gaussdb ~]$ zctl.py -t start -m nomount
Successfully started instance.
[omm@gaussdb ~]$ zctl.py -t status
Do zctl failed: Failed to get status, maybe it's NOMOUNT.

MOUNT状态

[omm@gaussdb ~]$ zctl.py -t stop
Successfully stopped instance.
[omm@gaussdb ~]$ zctl.py -t start -m mount
Successfully started instance.
[omm@gaussdb ~]$ zctl.py -t status
Current instance STATUS MOUNT

(7)切回默认状态

[omm@gaussdb ~]$ zctl.py -t stop
Successfully stopped instance.
[omm@gaussdb ~]$ zctl.py -t start
Successfully started instance.
[omm@gaussdb ~]$ zctl.py -t status
Current instance STATUS OPEN

观察网络变化 (在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。)

观察网络变化 (30秒-1分钟)

(8)查看库文件 (root用户)

[root@gaussdb ~]# ls /usr/local/gaussdb/app/admin/scripts
add_standby_log.sample.sql  initdb.sql     initview.sql  readme.md    upgrade
create_database.sample.sql  initplsql.sql  initwsr.sql   sql_dialect

创建数据库

(9)连接数据库


[omm@gaussdb ~]$ zsql sys/Admin@123@127.0.0.1:1888 -qconnected.SQL>

(10)创建与删除用户

SQL> CREATE USER david IDENTIFIED BY 'Admin@123';Succeed.SQL> GRANT DBA TO DAVID;Succeed.SQL> DROP USER DAVID;Succeed.

(11)查看用户信息

SQL> SELECT * FROM DB_USERS;USER_ID      USERNAME                                                         CREATED                CRYPTOPERIOD
------------ ---------------------------------------------------------------- ---------------------- ------------------------
0            SYS                                                              2024-03-18 12:31:29    +0000179 23:04:23.655845
1            PUBLIC                                                           2024-03-18 12:31:29    +0000179 22:38:29.3191232 rows fetched.

再次创建查看

SQL> CREATE USER david IDENTIFIED BY 'Admin@123';Succeed.SQL> SELECT * FROM DB_USERS;USER_ID      USERNAME                                                         CREATED                CRYPTOPERIOD
------------ ---------------------------------------------------------------- ---------------------- ------------------------
0            SYS                                                              2024-03-18 12:31:29    +0000179 23:02:48.336284
1            PUBLIC                                                           2024-03-18 12:31:29    +0000179 22:36:53.999562
2            DAVID                                                            2024-03-18 13:54:15    +0000179 23:59:39.9740813 rows fetched.

查看所有用户

SQL> SELECT * FROM all_users;USER_ID      USERNAME                                                         CREATED                CRYPTOPERIOD
------------ ---------------------------------------------------------------- ---------------------- ------------------------
0            SYS                                                              2024-03-18 12:31:29    +0000179 22:55:39.756470
1            PUBLIC                                                           2024-03-18 12:31:29    +0000179 22:29:45.419748
2            DAVID                                                            2024-03-18 13:54:15    +0000179 23:52:31.3942673 rows fetched.

(12)查看表

SQL> SELECT * FROM user_tables;

最后一行显示86个

查看系统所有表 (一共86行)

SQL> SELECT * FROM all_tables;

查看管理员表(一共86行)

SQL> SELECT * FROM dba_tables;

(13)创建表

SQL> CREATE TABLE DEVOPS(2 id INT,3 name CHAR(20)4 );Succeed.

查看表

SQL> SELECT * FROM USER_TABLES WHERE TABLE_NAME='DEVOPS';

查看表字段

SQL> DESC DEVOPS;Name                                Null?    Type
----------------------------------- -------- ------------------------------------
ID                                           BINARY_INTEGER
NAME                                         CHAR(20 BYTE)

(14)修改表

添加字段

SQL> ALTER TABLE DEVOPS ADD age INT;

查看表字段

SQL> DESC DEVOPS;

修改字段类型

SQL> ALTER TABLE DEVOPS MODIFY AGE TINYINT;

(15)修改字段名

SQL> ALTER TABLE DEVOPS RENAME COLUMN NAME TO USER_NAME;

查看

(16)删除字段

SQL> ALTER TABLE DEVOPS DROP AGE;

查看

(17)修改表名

SQL> ALTER TABLE DEVOPS RENAME TO CICD;

查看

(18)删除表

SQL> DROP TABLE CICD;

4.使用 GaussDB 进行表与索引操作

(1) 创建表

SQL> CREATE TABLE USERS(2 ID INT NOT NULL DEFAULT 0,3 NAME CHAR(200) NOT NULL DEFAULT ''4 );

(2)查看表字段

SQL> DESC USERS;Name                                Null?    Type
----------------------------------- -------- ------------------------------------
ID                                  NOT NULL BINARY_INTEGER
NAME                                NOT NULL CHAR(200 BYTE)

(3)字段插入记录

单个记录插入

SQL> INSERT INTO USERS VALUES (1,'JACK');SQL> INSERT INTO USERS VALUES (2,'TOM');

多个记录连续插入

SQL> INSERT INTO USERS(ID,NAME) VALUES2 (3,'HELEN'),(4,'JOHN');

查看

SQL> SELECT * FROM users;ID           NAME
------------ ----------------------------------------------------------------
1            JACK                                                                                                                                                     
2            TOM                                                                                                                                                      
3            HELEN                                                                                                                                                    
4            JOHN                                                                                                                                                     4 rows fetched.

(4)修改数据

SQL> UPDATE USERS SET NAME='TONY' WHERE ID=2;

查看

(5)清空表

SQL> DELETE FROM USERS;

查看

(6)创建索引

SQL> CREATE INDEX name ON USERS(NAME);

查看

SQL> SELECT OWNER,INDEX_NAME,TABLE_NAME FROM all_indexes WHERE TABLE_NAME='USERS';

(7)查看索引

SQL> SELECT * FROM ALL_IND_COLUMNS WHERE TABLE_NAME='USERS';

(8)删除索引

SQL> DROP INDEX NAME;

5.使用 GaussDB 进行视图操作

(1)创建表

SQL> CREATE TABLE userinfo(2 ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,3 NAME CHAR(200),4 TEL CHAR(11),5 CARD_ID CHAR(18)6 );

查看

(2)插入数据

SQL> INSERT INTO USERINFO(NAME,TEL,CARD_ID)2 VALUES3 ('jack','11111111111','0001'),4 ('tom','22222222222','0002'),5 ('helen','33333333333','0003');

查看

(3)测试

截取

SQL> SELECT SUBSTR('ABCDEFG',3,3);

替换

SQL> SELECT REPLACE('abcdefaaa','a','A');

(4)隐藏信息


SQL> SELECT2  NAME,3 REPLACE(CARD_ID,SUBSTR(CARD_ID,4,1),'*')4 FROM USERINFO;

(5)创建视图

SQL> CREATE VIEW EN_USERINFO2 AS3 SELECT4 NAME,5  REPLACE(CARD_ID,SUBSTR(CARD_ID,4,1),'*')6 FROM USERINFO;

(6)查看视图

SQL> SELECT * FROM EN_USERINFO;

(7)删除视图

SQL> drop VIEW EN_USERINFO;

6.使用 GaussDB 进行联表查询

(1)创建表

表一

SQL> CREATE TABLE DEPTS(2 ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,3 NAME CHAR(200)4 );

表二

SQL> CREATE TABLE EMPS(2 ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,3 NAME CHAR(200),4 DEPT_ID INT NOT NULL5 );

(2)查看

SQL> DESC DEPTS;DESC EMPS;Name                                Null?    Type
----------------------------------- -------- ------------------------------------
ID                                  NOT NULL BINARY_INTEGER
NAME                                         CHAR(200 BYTE)Name                                Null?    Type
----------------------------------- -------- ------------------------------------
ID                                  NOT NULL BINARY_INTEGER
NAME                                         CHAR(200 BYTE)
DEPT_ID                             NOT NULL BINARY_INTEGER

(3)插入数据

SQL> INSERT INTO DEPTS(NAME) VALUES ('DEV'),('NETWORK'),('IT');

额外创建一个不存在的4号部门员工

SQL> INSERT INTO EMPS(NAME,DEPT_ID) VALUES2  ('jasmine',1),('machael',2),('simon',3),('hulk',4);

(4)查看表

(5)内连接

SQL> SELECT * FROM EMPS2 INNER JOIN DEPTS3 ON EMPS.DEPT_ID=DEPTS.ID;ID           NAME                                                             DEPT_ID      ID           NAME
------------ ---------------------------------------------------------------- ------------ ------------ ----------------------------------------------------------------
1            jasmine                                                                                                                                                                                                  1            1            DEV                                                                                                                   
2            machael                                                                                                                                                                                                  2            2            NETWORK                                                                                                               
3            simon                                                                                                                                                                                                    3            3            IT  

SQL> SELECT EMPS.NAME,DEPTS.NAME FROM EMPS2 INNER JOIN DEPTS3 ON DEPTS.ID=EMPS.DEPT_ID;NAME                                                             NAME
---------------------------------------------------------------- ----------------------------------------------------------------
jasmine                                                                                                                                                                                                  DEV                                                                                                                                                          
machael                                                                                                                                                                                                  NETWORK                                                                                                                                                      
simon                                                                                                                                                                                                    IT                                                                                                                                                           3 rows fetched.

(6)外连接

左外连接

SQL> SELECT * FROM EMPS2 LEFT OUTER JOIN DEPTS3 ON EMPS.DEPT_ID=DEPTS.ID;ID           NAME                                                             DEPT_ID      ID           NAME
------------ ---------------------------------------------------------------- ------------ ------------ ----------------------------------------------------------------
1            jasmine                                                                                                                                                                                                  1            1            DEV                                                                                                                   
2            machael                                                                                                                                                                                                  2            2            NETWORK                                                                                                               
3            simon                                                                                                                                                                                                    3            3            IT                                                                                                                    
4            hulk                                                                                                                                                                                                     44 rows fetched.

右外连接

SQL> SELECT * FROM EMPS2 RIGHT OUTER JOIN DEPTS3 ON EMPS.DEPT_ID=DEPTS.ID;ID           NAME                                                             DEPT_ID      ID           NAME
------------ ---------------------------------------------------------------- ------------ ------------ ----------------------------------------------------------------
1            jasmine                                                                                                                                                                                                  1            1            DEV                                                                                                                   
2            machael                                                                                                                                                                                                  2            2            NETWORK                                                                                                               
3            simon                                                                                                                                                                                                    3            3            IT                                                                                                                    3 rows fetched.

全外连接

SQL> SELECT * FROM EMPS2 FULL OUTER JOIN DEPTS3  ON EMPS.DEPT_ID=DEPTS.ID;ID           NAME                                                             DEPT_ID      ID           NAME
------------ ---------------------------------------------------------------- ------------ ------------ ----------------------------------------------------------------
1            jasmine                                                                                                                                                                                                  1            1            DEV                                                                                                                   
2            machael                                                                                                                                                                                                  2            2            NETWORK                                                                                                               
3            simon                                                                                                                                                                                                    3            3            IT                                                                                                                    
4            hulk                                                                                                                                                                                                     44 rows fetched.

7.使用 GaussDB 进行外键关联

(1)查看

SQL> DELETE FROM EMPS WHERE ID=4;SQL> SELECT * FROM EMPS;

(2)添加外键

级联删除

SQL> ALTER TABLE EMPS ADD CONSTRAINT DID FOREIGN KEY(DEPT_ID) REFERENCES DEPTS(ID) ON DELETE CASCADE;

(3)创建表时指定外键

SQL> CREATE TABLE EMPLOYESS(2 ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,3 NAME CHAR(20),4 DEPT_ID INT NOT NULL,5 FOREIGN KEY (DEPT_ID) REFERENCES DEPTS(ID) ON DELETE CASCADE);

二、问题

1.运行python脚本报错

(1)报错

在执行python install安装数据库时,安装中止

Error: Run package GaussDB_100_1.0.1-RUN-REDHAT-64bit.tar.gz is inconsistent with os system centos.
Please refer to install log "/home/omm/zengineinstall.log" for more detailed information.

(2)原因分析

在安装执行check时,发现操作系统与安装包内预置check的结果不一致。

(3)解决方法

[root@gaussdb GaussDB_100_1.0.1-DATABASE-REDHAT-64bit]# vim +572 install.py

修改前:

修改后:(572-573注释 或 -1改为 -2)

 572         if self.run_pkg_name.find(distname.upper().replace("OS", "")) == -2:573             logExit("Run package %s.tar.gz is inconsistent with os system %s." % (self.run_pkg_name, distna     me))

成功:

2. 安装GaussDB 报错

(1)报错

Error: Can not read user profile: [Errno 2] No such file or directory: '/home/omm/.bashrc'

(2)原因分析

缺少目录启动配置文件。

(3)解决方法

创建文件 

vim /home/omm/.bashrc
if [ -f /etc/bashrc ]; then. /etc/bashrc
fi

成功:

3. install 安装有哪些参数

(1)参数

1)指定安装用户和用户组
-U2)指定安装目录
-R3)指定数据文件目录,即GAUSSDATA目录
-D4)指定配置参数,可以指定多个。如果不指定,则按照/opt/gaussdb/data/cfg/zengine.ini 中的默认配置项。
-C5)在安装时,如果禁用免密登录,则需要在命令行最后指定此选项。命令执行过程中,会提示输入连接数据库的用户名和密码,用户名时SYS,密码是SYS用户的初始密码Changeme_123。如果开启免密登录则不许套指定本选项。
-P

4. GaussDB有哪些服务状态

(1)状态

1)关闭
CLOSED2)读取初始化参数文件,分配SGA并打开后台进程
NOMOUNT3)加载数据库,根据初始化参数文件,读取控制文件信息
MOUNT4)根据控制文件打开所有的数据文件和Redo日志,数据库可以进行访问
OPEN

5. netstat 服务状态

(1)状态

1)netstat中的各种状态
CLOSED       初始(无连接)状态。
LISTEN       侦听状态,等待远程机器的连接请求。
SYN_SEND     在TCP三次握手期间,主动连接端发送了SYN包后,进入SYN_SEND状态,等待对方的ACK包。
SYN_RECV     在TCP三次握手期间,主动连接端收到SYN包后,进入SYN_RECV状态。
ESTABLISHED  完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
FIN_WAIT_1   在TCP四次挥手时,主动关闭端发送FIN包后,进入FIN_WAIT_1状态。
FIN_WAIT_2   在TCP四次挥手时,主动关闭端收到ACK包后,进入FIN_WAIT_2状态。
TIME_WAIT    在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
CLOSING      在TCP四次挥手期间,主动关闭端发送了FIN包后,没有收到对应的ACK包,却收到对方的FIN包,此时,进入CLOSING状态。
CLOSE_WAIT   在TCP四次挥手期间,被动关闭端收到FIN包后,进入CLOSE_WAIT状态。
LAST_ACK     在TCP四次挥手时,被动关闭端发送FIN包后,进入LAST_ACK状态,等待对方的ACK包。2)分类
主动连接端可能的状态有:         CLOSED        SYN_SEND        ESTABLISHED。
主动关闭端可能的状态有:         FIN_WAIT_1        FIN_WAIT_2        TIME_WAIT。
被动连接端可能的状态有:         LISTEN        SYN_RECV        ESTABLISHED。
被动关闭端可能的状态有:         CLOSE_WAIT        LAST_ACK        CLOSED。

6.查询表字段报错

(1)报错

GS-00601, [1:1]Sql syntax error: key word expected

(2)原因分析

语法错误。

(3)解决方法

SQL> DESC DEVOPS;

7.添加外键报错

(1)报错

GS-00601, Sql syntax error: CASCADE/SET NULL expected but CASCADES found.

(2)原因分析

语法错误。

(3)解决方法

SQL> ALTER TABLE EMPS ADD CONSTRAINT DID FOREIGN KEY(DEPT_ID) REFERENCES DEPTS(ID) ON DELETE CASCADE;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/755029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语音识别:whisper部署服务器,可远程访问,实时语音转文字(全部代码和详细部署步骤)

Whisper是OpenAI于2022年发布的一个开源深度学习模型,专门用于语音识别任务。它能够将音频转换成文字,支持多种语言的识别,包括但不限于英语、中文、西班牙语等。Whisper模型的特点是它在多种不同的音频条件下(如不同的背景噪声水…

[C语言]指针详解一、数组指针、二维数组传参、函数指针

一、数组指针 对一个数组&#xff0c;如果我们想要让一个指针指向这个数组&#xff0c;我们应该如何定义呢?我们知道一个数组定义本来就是一个指针&#xff0c;那为何要多定义一个数组指针呢?我们来看看下面这个代码就理解了 #include <stdio.h> int main() {int arr…

【基础】哪个厂家的零件更标准?

时间限制 : 1 秒 内存限制 : 128 MB 在统计描述中,方差用来计算每一个变量(观察值)与总体均数之间的差异。比如:甲乙 2 个厂商生产某零件,一批零件要求在尺寸合格的情况下,大小越一致越好,由于生产工艺的问题,零件生产厂商生产的零件不可能一模一样。 为了检测甲乙两…

前端结合 react axios 获取真实下载、上传进度

首页确保项目中使用了axios axios ondownloadprogress中total总为零&#xff0c;content-length不返回? 点我查看 Axios Documention npm i axiosyarn add axios以下我们举例接口调用配置说明&#xff1a; 由于接口下载时&#xff0c;不确定文件下载时长&#xff0c;所以直…

AIX系统下挂载ISO镜像

我们需要将AIX的iso文件作为软件包的安装源挂载的系统目录中 首先我们查看系统下有哪些挂载文件 如何挂载一个系统iso镜像文件 loopmount -i /ftp/iso/LK4T_1807_11.iso -o "-V cdrfs -o ro " -m /mnt/iso 需要安装软件直接执行smit就可以了&#xff0c;在smit中…

phpStudy安装thinkCMF8时,如何解决服务器rewrite和APIrewrite不支持的问题

解决步骤&#xff1a; 一&#xff1a;服务器rewrite 点击后面的问号跳转到官方文档链接&#xff1a; 复制红框内的代码 打开phpstudy&#xff0c;找到配置的站点&#xff0c;点击管理&#xff0c;找到伪静态 点击确认保存即可。 phpstudy会自动重启站点。 此时&#xff0c;…

内网信息收集

本机信息收集 一、手工 1.查询网络配置信息: ipconfig /all 2. 查询操作系统和版本信息: systeninfo 查看系统体系架构&#xff1a;echo %PROCESSOR_ARCHITECTURE% 查看安装的软件及版本信息&#xff1a; wmic product get name,version 3.查询本机服务信息&#…

docker init 生成Dockerfile和docker-compose.yml —— 筑梦之路

官网&#xff1a;https://docs.docker.com/engine/reference/commandline/init/ 简介 docker init是一个命令行实用程序&#xff0c;可帮助初始化项目中的 Docker 资源。.dockerignore它根据项目的要求创建 Dockerfile、Compose 文件。这简化了为项目配置 Docker 的过程&#…

【NLP9-Transformer经典案例】

Transformer经典案例 1、语言模型 以一个符合语言规律的序列为输入&#xff0c;模型将利用序列间关系等特征&#xff0c;输出在一个在所有词汇上的概率分布&#xff0c;这样的模型称为语言模型。 2、语言模型能解决的问题 根据语言模型定义&#xff0c;可以在它的基础上完成…

PHP反序列化---字符串逃逸(增加/减少)

一、PHP反序列化逃逸--增加&#xff1a; 首先分析源码&#xff1a; <?php highlight_file(__FILE__); error_reporting(0); class A{public $v1 ls;public $v2 123;public function __construct($arga,$argc){$this->v1 $arga;$this->v2 $argc;} } $a $_GET[v…

探索区块链世界:从加密货币到去中心化应用

相信提到区块链&#xff0c;很多人会想到比特币这样的加密货币&#xff0c;但实际上&#xff0c;区块链技术远不止于此&#xff0c;它正在深刻地改变我们的生活和商业。 首先&#xff0c;让我们来简单了解一下什么是区块链。区块链是一种分布式数据库技术&#xff0c;它通过将…

三维GIS仿真技术发展的几点思考

随着近几年三维GIS的快速发展&#xff0c;三维GIS可视化在数字孪生、元宇宙等热点方向起着重要技术支撑&#xff0c;结合这几年三维GIS技术进展,其出现的进展与问题&#xff0c;有以下几点思考&#xff0c;供读者参考&#xff1a; 1.关于国内GIS三维仿真技术处于什么水平&#…

蓝桥杯-python-递归

递归&#xff1a;通过自我调用解决问题的函数 注意&#xff1a; #1.递归出口 #2.当前问题如何变成子问题 例子&#xff1a;利用递归写一个阶乘函数&#xff0c;F(n),求n的阶乘 def f(n):if n < 1:return 1ans n * f(n-1)return ans print(f(5)) 例子&#xff1a;汉诺塔…

vsto excel 插件注册表属性值含义

在 VSTO (Visual Studio Tools for Office) 中&#xff0c;LoadBehavior 是用于指定 Office 插件加载行为的一个属性。具体含义如下&#xff1a; - LoadBehavior 0&#xff1a;此值表示插件已被禁用&#xff0c;将不会加载。 - LoadBehavior 1&#xff1a;此值表示插件将在 O…

【CSP试题回顾】202303-1-田地丈量

CSP-202303-1-田地丈量 解题思路 问题描述&#xff1a;给定一个长为 a、宽为 b 的矩形区域&#xff08;坐标范围从 (0,0) 到 (a,b)&#xff09;&#xff0c;以及 n 个其他矩形&#xff0c;每个矩形由其对角线的两个顶点 (x1, y1) 和 (x2, y2) 定义。需要计算这些矩形与给定矩形…

深度刨析Android ANR触发原理

一、概述 ANR(Application Not responding)&#xff0c;是指应用程序未响应&#xff0c;Android系统对于一些事件需要在一定的时间范围内完成&#xff0c;如果超过预定时间能未能得到有效响应或者响应时间过长&#xff0c;都会造成ANR。一般地&#xff0c;这时往往会弹出一个提…

015 Linux_生产消费模型

​&#x1f308;个人主页&#xff1a;Fan_558 &#x1f525; 系列专栏&#xff1a;Linux &#x1f339;关注我&#x1f4aa;&#x1f3fb;带你学更多操作系统知识 文章目录 前言一、生产消费模型&#xff08;1&#xff09;概念引入&#xff08;2&#xff09;生产消费模型的优点…

键牌 6寸水口钳工业级电子斜嘴水口剪偏口钳子电工专用小斜口钳

品牌&#xff1a;键牌 型号&#xff1a;6寸水口钳灰红 材质&#xff1a;不锈钢 颜色分类&#xff1a;6寸水口钳灰红 多用途电工钳&#xff0c;高硬度&#xff0c;韧性好&#xff0c;材质优。 匠心之作&#xff0c;精工典范&#xff0c;不锈钢材质&#xff0c;加厚刀刃&am…

JAVA学习-NIO.Buffer(缓冲器)

Java NIO中的缓冲器&#xff08;Buffer&#xff09;是用来存储数据的对象。它是一个固定大小的数组&#xff0c;可以容纳特定类型的数据。 一、Java NIO中提供了7种类型的缓冲器&#xff0c;分别是&#xff1a; 1. ByteBuffer&#xff1a; 字节缓冲器&#xff0c;用来存储字…

解决 ArrayList 的并发问题

目录 1. 场景复现1.1 数据不一致问题示例代码1.2 ConcurrentModificationException 问题示例代码 2. 解决并发的三种方法2.1 使用 Collections.synchronizedList2.2 使用 CopyOnWriteArrayList&#xff08;推荐使用&#xff09;2.3 使用显式的同步控制 3. 总结 ArrayList是java…