数据库应用: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 个厂商生产某零件,一批零件要求在尺寸合格的情况下,大小越一致越好,由于生产工艺的问题,零件生产厂商生产的零件不可能一模一样。 为了检测甲乙两…

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;…

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

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

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;它通过将…

蓝桥杯-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…

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…

【JavaWeb】Spring非阻塞通信 - Spring Reactive之WebFlux的使用

【JavaWeb】Spring非阻塞通信 - Spring Reactive之WebFlux的使用 文章目录 【JavaWeb】Spring非阻塞通信 - Spring Reactive之WebFlux的使用参考资料一、初识WebFlux1、什么是函数式编程1&#xff09;面向对象编程思维 VS 函数式编程思维&#xff08;封装、继承和多态描述事物间…

Magical Combat VFX 2

我们为Unity推出的最新资产包:魔法战斗VFX包!这个包非常适合为你的游戏添加激烈而致命的魔法。有30多种独特的效果,包括血液、酸和毒咒,你可以在战斗场景中大显身手。而且移动支持和优化是首要任务,你可以在旅途中使用这些效果,而不用担心性能问题。使用功能齐全、移动就…

windows11安装SQL server数据库报错等待数据库引擎恢复句柄失败(二)

windows11安装SQL server数据库报错等待数据库引擎恢复句柄失败&#xff08;二&#xff09;&#xff0c;昨天在给网友远程的时候发现了一个新的问题。 计算机系统同样是Windows11&#xff0c;通过命令查出来的扇区相关结果也都是4096&#xff0c;但是最后的安装还是提示SQL ser…

JVM内存模型深度解读

JVM&#xff08;Java Virtual Machine&#xff0c;Java虚拟机&#xff09;对于Java开发者和运行 Java 应用程序而言至关重要。其重要性主要体现在跨平台性、内存管理和垃圾回收、性能优化、安全性和稳定性、故障排查与性能调优等方面。今天就下学习一下 JVM 的内存模型。 一、…

嵌入式学习40-数据结构

数据结构 1.定义 一组用来保存一种或者多种特定关系的 数据的集合&#xff08;组织和存储数据&#xff09; 程序的设计&#xff1a; …

31-Java前端控制器模式(Front Controller Pattern)

Java前端控制器模式 实现范例 前端控制器模式&#xff08;Front Controller Pattern&#xff09;是用来提供一个集中的请求处理机制&#xff0c;所有的请求都将由一个单一的处理程序处理该处理程序可以做认证/授权/记录日志&#xff0c;或者跟踪请求&#xff0c;然后把请求传给…

使用RabbitMQ,关键点总结

文章目录 1.MQ的基本概念2.常见的MQ产品3.MQ 的优势和劣势3.1 优势3.2 劣势 4.RabbitMQ简介4.1RabbitMQ 中的相关概念 1.MQ的基本概念 MQ全称 Message Queue&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。…

掌握FL Studio21的编曲功能,让你的音乐创作更上一层楼

音乐是人类最美好的语言&#xff0c;它能够跨越国界、文化和语言&#xff0c;将人们紧密地联系在一起。在当今数字化时代&#xff0c;音乐创作已经不再是专业人士的专利&#xff0c;越来越多的音乐爱好者开始尝试自己动手制作音乐。而FL Studio21中文版编曲软件正是这样一个为你…