step-by-step系列之-openGauss1-0-1-Docker版本单机安装指南

step by step 系列之:openGauss1.0.1 Docker 版本单机安装指南

1.软硬件环境

硬件环境:

项目

最低配置

推荐配置

测试配置

硬盘

用于安装openGauss的硬盘需最少满足如下要求:

  • 至少1GB用于安装openGauss的应用程序包。
  • 每个主机需大约300MB用于元数据存储。
  • 预留70%以上的磁盘剩余空间用于数据存储。

建议系统盘配置为Raid1,数据盘配置为Raid5,且规划4组Raid5数据盘用于安装openGauss。有关Raid的配置方法在本手册中不做介绍。请参考硬件厂家的手册或互联网上的方法进行配置,其中Disk Cache Policy一项需要设置为Disabled,否则机器异常掉电后有数据丢失的风险。

openGauss支持使用SSD盘作为数据库的主存储设备,支持SAS接口和NVME协议的SSD盘,以RAID的方式部署使用。

900G

内存

2GB

功能调试32GB以上。

性能测试和商业部署时,单实例部署建议128GB以上。

复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的并发。

8G

CPU

功能调试最小1×8 核 2.0GHz。

性能测试和商业部署时,单实例部署建议1×16核 2.0GHz。

CPU超线程和非超线程两种模式都支持。但是,openGauss各节点的设置需保持一致。

4核

网络

300兆以上以太网。

建议网卡设置为双网卡冗余bond。有关网卡冗余bond的配置方法在本手册中不做介绍。请参考硬件厂商的手册或互联网上的方法进行配置。

openGauss网络如果配置bond,请保证bond模式一致,不一致的bond配置可能导致openGauss工作异常。

千兆

软件环境:

表 1 软件环境要求

软件类型

配置描述

Linux操作系统

openEuler 20.3LTS和CentOS 7.X

  

说明:能够安装docker基本没有限制

2.安装、配置 docker

安装流程:

先安装 docker 软件,下载数据库 Docker image,启动 Docker,进入数据库,初体验。

2.1.安装 docker 软件

[root@node1 ~]#
yum -y install docker

#检查 docker 的版本:

docker -v
Docker version 1.13.1, build 64e9980/1.13.1

2.2.配置、启动 docker 服务

对 docker 进行简单设置:

systemctl enable docker #开机启动docker
systemctl status docker #查看docker状态[root@node1 ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@node1 ~]# systemctl status docker
docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)Active: inactive (dead)Docs: http://docs.docker.com
[root@node1 ~]#

设置 docker 镜像源

#修改这个文件为如下内容

cat>/etc/docker/daemon.json<<EOF{
"registry-mirrors": ["https://oinh00fc.mirror.aliyuncs.com"]
}
EOF

检查修改情况:

 cat /etc/docker/daemon.json

# 检查 Docker 是否启动:

systemctl status dockerdocker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)Active: inactive (dead)Docs: http://docs.docker.com
[root@node1 ~]#

#启动 Docker

  systemctl start docker

# 检查启动是否正常:

[root@node1 ~]# systemctl status dockerdocker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)Active: active (running) since Thu 2020-10-15 09:01:06 CST; 5s agoDocs: http://docs.docker.comMain PID: 11215 (dockerd-current)Tasks: 30CGroup: /system.slice/docker.service├─11215 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/do...└─11225 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libco...Oct 15 09:01:05 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:05.0...
Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.0...
Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.1...
Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.1...
Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.1...
Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.2...
Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.2...
Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.2...
Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.2...
Oct 15 09:01:06 node1.localdomain systemd[1]: Started Docker Application Container ...e.
Hint: Some lines were ellipsized, use -l to show in full.
[root@node1 ~]#

2.3. 查找、下载、使用 openGauss Docker 镜像

2.3.1 查找 opengauss 镜像

# docker search opengauss
[root@node1 ~]# docker search opengauss
INDEX       NAME                                    DESCRIPTION                                   STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/enmotech/opengauss            openGauss latest images created by Enmotech   6
docker.io   docker.io/aff123/opengauss              aff学习opengauss                                0
docker.io   docker.io/blueapple/opengauss           opengauss 1.0.0 CentOS 7.8.2003               0
docker.io   docker.io/fibird/opengauss                                                            0
docker.io   docker.io/gaobo1997/opengauss_compile   OpenGauss Compile Environment                 0
docker.io   docker.io/travelliu/opengauss                                                         0

2.3.2 获取 docker 镜像

#docker pull docker.io/enmotech/opengauss

或者 docker pull enmotech/opengauss:1.0.1

[root@node1 ~]#  docker pull docker.io/enmotech/opengauss
Using default tag: latest
Trying to pull repository docker.io/enmotech/opengauss ...
latest: Pulling from docker.io/enmotech/opengauss
ac9208207ada: Pull complete
2bedb2e83de5: Pull complete
db7ef826320f: Pull complete
2e41de1b5de7: Pull complete
d528682a66c4: Pull complete
88163b222086: Pull complete
7ea9446096be: Pull complete
2a10ad7221b8: Pull complete
Digest: sha256:d1aa6c3b5062a03b6f8ec3f7bae8a388e027df443a2c992c60e8e909ac91101b
Status: Downloaded newer image for docker.io/enmotech/opengauss:latest

或者 docker pull enmotech/opengauss:1.0.1

Trying to pull repository docker.io/enmotech/opengauss ...
1.0.1: Pulling from docker.io/enmotech/opengauss
ac9208207ada: Pull complete
2bedb2e83de5: Pull complete
db7ef826320f: Pull complete
2e41de1b5de7: Pull complete
d528682a66c4: Pull complete
88163b222086: Pull complete
7ea9446096be: Pull complete
2a10ad7221b8: Pull complete
Digest: sha256:d1aa6c3b5062a03b6f8ec3f7bae8a388e027df443a2c992c60e8e909ac91101b
Status: Downloaded newer image for docker.io/enmotech/opengauss:1.0.1[root@node1 ~]#

2.3.3 查看镜像

# docker images

[root@node1 ~]#  docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
docker.io/enmotech/opengauss   latest              80711c4eb80a        5 weeks ago         485 MB#[root@node1 ~]# docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
docker.io/enmotech/opengauss   1.0.1               80711c4eb80a        5 weeks ago         485 MB
[root@node1 ~]#

说明:两种 pull 的 tag 内容不一样.

检查 docker 是否启动

# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
#

没有启动,启动数据库容器

2.3.4 启动数据库容器

这里我们使用 enmotech/opengauss:latest 的镜像。

以下命令使用 opengauss 镜像启动一个容器,参数为以命令行模式进入该容器:

存储数据持久化,从容器外部连接容器数据库,openGauss 的默认侦听启动在容器内的 5432 端口上,如果想要从容器外部访问数据库,则需要在 docker run 的时候指定-p 参数。比如以下命令将允许使用 8888 端口访问容器数据库。

在下面命令正常启动容器数据库之后,可以通过外部的 gsql 进行数据库访问。

# docker run --name opengaussnet --privileged=true -d -e GS_PASSWORD=Passw0rd@1234 \

-v /enmotech/opengauss:/var/lib/opengauss \

-p 8888:5432 enmotech/opengauss:latest

说明:windows 下,C:\Users\oldbear2008>docker run --name opengaussnet --privileged=true -d -e GS_PASSWORD=Passw0rd@1234 -v /enmotech/opengauss:/var/lib/opengauss -p 8888:5432 enmotech/opengauss:latest 05755ccc4abea16bbfff6a361451470069daf2e16c7f551caee3b4bfbd1bbe45

数据持久化:

Docker 中 openGauss 的所有数据文件:/var/lib/opengauss 目录 ,存储在宿主机的/enmotech/opengauss 下。

宿主机的/enmotech/opengauss 如果不存在,会自动创建,但是必须是绝对路径。

Docker 对其拥有读写权限。

网络端口:

8888:对外访问端口

2.5.5 openGauss 容器数据持久化验证

新开一个窗口检查容器 ID:

[root@node1 ~]# docker ps -a
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS               NAMES
794d54eaa87c        enmotech/opengauss:latest   "entrypoint.sh gau..."   3 minutes ago       Up 3 minutes        5432/tcp            opengauss
[root@node1 ~]#[root@node1 ~]# docker exec -it ac74618df201 bash

在容器内部查看数据库目录:

[root@ac74618df201 data]# pwd
/var/lib/opengauss/data
[root@ac74618df201 data]# ls
base           gswlm_userinfo.cfg  pg_copydir    pg_hba.conf    pg_log        pg_serial     pg_twophase      postgresql.conf.lock
gaussdb.state  mot.conf            pg_csnlog     pg_ident.conf  pg_multixact  pg_snapshots  PG_VERSION       postmaster.opts
global         pg_audit            pg_ctl.lock   pg_llog        pg_notify     pg_stat_tmp   pg_xlog          postmaster.pid
gs_profile     pg_clog             pg_errorinfo  pg_location    pg_replslot   pg_tblspc     postgresql.conf
[root@ac74618df201 data]#

在操作系统查看容器数据库的目录:

再打开一个终端:

[root@node1 data]# pwd
/enmotech/opengauss/data
[root@node1 data]# ls
base           gswlm_userinfo.cfg  pg_copydir    pg_hba.conf    pg_log        pg_serial     pg_twophase      postgresql.conf.lock
gaussdb.state  mot.conf            pg_csnlog     pg_ident.conf  pg_multixact  pg_snapshots  PG_VERSION       postmaster.opts
global         pg_audit            pg_ctl.lock   pg_llog        pg_notify     pg_stat_tmp   pg_xlog          postmaster.pid
gs_profile     pg_clog             pg_errorinfo  pg_location    pg_replslot   pg_tblspc     postgresql.conf
[root@node1 data]#

可以看到容中的数据存储到操作系统中来了。

完成持存储数据久化。

存储持久化测试:

创建表:T1

omm=# create table t1(col int);
CREATE TABLE
omm=# \dtList of relationsSchema | Name | Type  | Owner |             Storage
--------+------+-------+-------+----------------------------------public | t1   | table | omm   | {orientation=row,compression=no}
(1 row)omm=# \q

关闭数据库:

[omm@ac74618df201 ~]$ cd $GAUSSHOME/bin
[omm@ac74618df201 bin]$ ls
alarmItem.conf    gs_basebackup  gs_initdb     gstrace       kinit     pg_config       retry_errcodes.conf
cluster_guc.conf  gs_ctl         gs_probackup  kadmin.local  klist     pg_controldata  script
dbmind            gs_dump        gs_restore    kadmind       krb5kdc   pg_receivexlog  transfer.py
encrypt           gs_dumpall     gs_tar        kdb5_util     makesgml  pg_recvlogical
gaussdb           gs_guc         gsql          kdestroy      openssl   pg_resetxlog
[omm@ac74618df201 bin]$ gs_ctl stop -D /var/lib/opengauss/data/
[2020-11-14 12:37:36.959][297][][gs_ctl]: gs_ctl stopped ,datadir is -D "/var/lib/opengauss/data"

重启 Docker 数据库:

启动容器:

[root@node1 ~]# docker start ac74618df201

进入容器:

docker exec -it ac74618df201 bash[root@ac74618df201 /]# su - omm
Last login: Sat Nov 14 12:41:56 UTC 2020
[omm@ac74618df201 ~]$ gsql
gsql ((openGauss 1.0.1 build e9da9fb9) compiled at 2020-10-01 13:58:32 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.omm=# \dtList of relationsSchema | Name | Type  | Owner |             Storage
--------+------+-------+-------+----------------------------------public | t1   | table | omm   | {orientation=row,compression=no}
(1 row)omm=#

结论:数据没有丢失,容器持久化验证完毕。

2.5.6 开始体验 opengaussdb 数据库:

[root@794d54eaa87c /]# su - omm
[omm@794d54eaa87c ~]$ gsql -r
gsql ((openGauss 1.0.1 build e9da9fb9) compiled at 2020-10-01 13:58:32 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.omm=# \lList of databasesName    | Owner | Encoding |  Collate   |   Ctype    | Access privileges
-----------+-------+----------+------------+------------+-------------------omm       | omm   | UTF8     | en_US.utf8 | en_US.utf8 |postgres  | omm   | UTF8     | en_US.utf8 | en_US.utf8 |template0 | omm   | UTF8     | en_US.utf8 | en_US.utf8 | =c/omm           +|       |          |            |            | omm=CTc/ommtemplate1 | omm   | UTF8     | en_US.utf8 | en_US.utf8 | =c/omm           +|       |          |            |            | omm=CTc/omm
(4 rows)omm=#

在 Docker 容器中,查看后台进程:

[omm@794d54eaa87c ~]$ ps -ef|grep gauss
omm           1      0  3 01:53 ?        00:00:29 gaussdb
omm         277    257  0 02:09 ?        00:00:00 grep --color=auto gauss
[omm@794d54eaa87c ~]$ ps -T -p 1PID   SPID TTY          TIME CMD1      1 ?        00:00:00 GaussMaster1    191 ?        00:00:00 jemalloc_bg_thd1    194 ?        00:00:00 GaussMaster1    195 ?        00:00:00 SysLogger1    196 ?        00:00:00 jemalloc_bg_thd1    197 ?        00:00:00 AlarmChecker1    198 ?        00:00:00 Reaper1    199 ?        00:00:00 jemalloc_bg_thd1    200 ?        00:00:00 jemalloc_bg_thd1    225 ?        00:00:00 Checkpointer1    226 ?        00:00:03 PageWriter1    227 ?        00:00:00 PageWriter1    228 ?        00:00:00 BgWriter1    229 ?        00:00:00 BgWriter1    230 ?        00:00:00 WalWriter1    231 ?        00:00:00 AutoVacLauncher1    232 ?        00:00:00 JobScheduler1    233 ?        00:00:00 StatCollector1    234 ?        00:00:01 WDRSnapshot1    235 ?        00:00:21 PercentileJob1    236 ?        00:00:00 Auditor1    237 ?        00:00:00 LWLockMonitor1    238 ?        00:00:00 WlmCollector1    239 ?        00:00:00 WlmMonitor1    240 ?        00:00:00 WlmArbiter
[omm@794d54eaa87c ~]$

而在操作系统中,看不到 opengauss:

[root@node1 ~]# ps -ef|grep opengauss
root      12502  10853  0 10:09 pts/1    00:00:00 grep --color=auto opengauss
[root@node1 ~]#

检查数据库的状态:

[omm@ac74618df201 data]$ gs_ctl query -D /var/lib/opengauss/data/
[2020-11-15 02:48:36.961][145][][gs_ctl]: gs_ctl query ,datadir is -D "/var/lib/opengauss/data"HA state:local_role                     : Normalstatic_connections             : 0db_state                       : Normaldetail_information             : NormalSenders info:
No informationReceiver info:
No information
[omm@ac74618df201 data]$

在容器内部访问:

使用新的数据库用户连接:

[omm@794d54eaa87c ~]$ gsql -U enmotech -d enmotechdb -W Enm0t3ch -r
gsql ((openGauss 1.0.1 build e9da9fb9) compiled at 2020-10-01 13:58:32 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.enmotech=>
enmotech=> \duList of rolesRole name |                               Attributes                               | Member of
-----------+------------------------------------------------------------------------+-----------enmotech  | Create DB, Sysadmin                                                    | {}gaussdb   |                                                                        | {}omm       | Sysadmin, Create role, Create DB, Replication, Administer audit, UseFT | {}enmotech=>
  • Docker 容器数据库基本管理

Docker 容器数据库如何重新启动

3.1 场景:关闭或重启虚拟机服务器时,如何启动 Docker 容器数据库.

关闭数据库 :

gs_ctl stop -D /var/lib/opengauss/data/

重启容器所在的虚拟机。

启动 Docker 数据库:

启动容器:

[root@node1 ~]# docker start ac74618df201

进入容器:

docker exec -it ac74618df201 bash[root@ac74618df201 /]# su - omm
Last login: Sat Nov 14 12:41:56 UTC 2020
[omm@ac74618df201 ~]$ gsql -r
gsql ((openGauss 1.0.1 build e9da9fb9) compiled at 2020-10-01 13:58:32 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.omm=# \dt

3.2 场景:虚机不关、不重启闭时,如何再次启动 Docker 容器数据库.

直接关闭 Docker,再启动 docker:

接着上次环境,先退出容器:

[root@ac74618df201 /]# exit[root@node1 ~]# docker stop ac74618df201    ##关闭容器
ac74618df201
[root@node1 ~]# docker start ac74618df201    ##重启容器
ac74618df201
[root@node1 ~]# docker exec -it ac74618df201  bash   ##进入容器
[root@ac74618df201 /]# ps -ef|grep gauss                ##检查数据库进程
omm           1      0  6 03:00 ?        00:00:01 gaussdb
root         93     77  0 03:01 ?        00:00:00 grep --color=auto gauss
[root@ac74618df201 /]# su - omm
Last login: Sun Nov 15 02:57:51 UTC 2020
[omm@ac74618df201 ~]$
[omm@ac74618df201 ~]$ gsql -r                    ###登录数据库
gsql ((openGauss 1.0.1 build e9da9fb9) compiled at 2020-10-01 13:58:32 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.omm=#

数据库启动,可以进行相关实验测试。

End

  • 通过 DS 客户端访问容器内部数据库

1)测试环境准备(非必要):

创建用户、数据库,并授权给数据库:

create user enmotech with password 'Enm0t3ch';
create database enmotechdb owner enmotech;
GRANT ALL PRIVILEGES ON DATABASE enmotechdb to enmotech;
ALTER ROLE enmotech CREATEDB;
GRANT ALL PRIVILEGES TO enmotech;
omm=# create user enmotech with password 'Enm0t3ch';
NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
CREATE ROLE
omm=#  create database enmotechdb owner enmotech;
CREATE DATABASE
omm=# GRANT ALL PRIVILEGES ON DATABASE enmotechdb to enmotech;
GRANT
omm=# ALTER ROLE enmotech CREATEDB;
ALTER ROLE
omm=# GRANT ALL PRIVILEGES TO enmotech;
ALTER ROLE
omm=# \q

2)修改数据库访问控制配置文件:

在 pg_hba.conf 文件中添加远程主机所在的网段,允许远程访问,如下:

[omm@ac74618df201 data]$
cat >>/var/lib/opengauss/data/pg_hba.conf<<EOF
host all enmo1 ***.***.***.***/24 md5
EOF[omm@ac74618df201 data]$

3)使用 DS 客户端登录容器数据库:

 

END

附录:

参考文档资料:

Docker 中的环境变量:

GAUSSHOME=/usr/local/opengauss
GAUSSDATA=/var/lib/opengauss/data

在容器外部访问(略)

查看 docker ip:

[root@node1 ~]# ifconfig docker

修改 docker ip:

https://www.cnblogs.com/zhangyongli2011/p/12981754.html

gsql -d enmotech -U enmotech -W'Enm0t3ch' -h ... -p 8888

DOcker 容器化:

https://hub.docker.com/r/enmotech/opengauss

菜鸟教程:

Docker 容器使用 | 菜鸟教程

墨天轮:docker 安装文档

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

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

相关文章

[游戏开发]Unreal引擎知识

工程通常会选择Development_Editor模式&#xff0c;它会过滤掉很多Debug信息&#xff0c;开发期间占用内存更小&#xff0c;项目运行更流畅&#xff0c;但也有缺点&#xff0c;就是部分断点信息看不到&#xff0c; 有两种解决办法&#xff1a; 1&#xff0c;选择DebugGame_Ed…

树与二叉树的应用试题

01&#xff0e;在有n个叶结点的哈夫曼树中&#xff0c;非叶结点的总数是( A ). A. n-1 B. n C. 2n-1 D.2n解析&#xff1a;哈夫曼树中只有度为0和2的结点&#xff0c;在非空二…

相关滤波跟踪算法-CSK

0. 写在前面 对相关滤波算法综述比较强的文档&#xff1a; NIUBILITY的相关滤波框架详解 - 知乎 (zhihu.com) 1. 概述 相关滤波算法问世之前&#xff0c;跟踪算法饱受运行时间的困扰&#xff0c;直到MOSSE算法出现&#xff0c;直接将算法速度提到了615fps&#xff0c;第一次将…

9proxy—数据采集工具全面测评

9Proxy数据采集工具Unlock the web with 9Proxy, the top residential proxy provider. Get unlimited bandwidth, affordable prices, and secure HTTPS and Socks5 configurations.https://9proxy.com/?utm_sourceblog&utm_mediumcsdn&utm_campaignyan 前言 在当今数…

2024年04月数据库流行度最新排名

点击查看最新数据库流行度最新排名&#xff08;每月更新&#xff09; 2024年04月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多&#xff0c;这个数据库就被认为越受欢迎。这是一个领先指标。原始数…

利用Flutter的混淆工具保护应用代码安全

在移动应用开发中&#xff0c;保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具&#xff0c;帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆&#xff0c;并提供了相关的操作步骤和注意事项。 &#x1f4dd; 摘要 本…

Android笔记--MediaCodec(一)

这一节主要来了解一下MediaCodec&#xff0c;Android MediaCodec 是 Android 平台提供的一个用于处理音频和视频数据的 API。它允许开发者对音频和视频数据进行编码和解码&#xff0c;支持多种格式和编解码器。MediaCodec API 通常用于实现实时音视频处理&#xff0c;如视频录制…

我的C++奇迹之旅:值和引用的本质效率与性能比较

文章目录 &#x1f4dd;引用&#x1f320;引用概念&#x1f309;引用特性 &#x1f320;使用场景&#x1f309;做参数&#xff08;传值与传地址&#xff09;&#x1f309;传值、传引用效率比较 &#x1f320;引用做返回值&#x1f309;引用和指针的区别 &#x1f320;常引用&am…

苹果开发者账号注册步骤中的常见疑问解答与技巧分享

转载&#xff1a;注册苹果开发者账号的方法 在2020年以前&#xff0c;注册苹果开发者账号后&#xff0c;就可以生成证书。 但2020年后&#xff0c;因为注册苹果开发者账号需要使用Apple Developer app注册开发者账号&#xff0c;所以需要缴费才能创建ios证书了。 所以新政策出…

蓝桥杯-单片机基础12——对芯片LM555产生的频率脉冲计数思路

蓝桥杯单片机组备赛指南请查看 &#xff1a;本专栏第1篇文章 本文章针对蓝桥杯-单片机组比赛开发板所写&#xff0c;代码可直接在比赛开发板上使用。 型号&#xff1a;国信天长4T开发板&#xff08;绿板&#xff09;&#xff0c;芯片&#xff1a;IAP15F2K61S2 &#xff08;使…

C++ TCP 服务端和客户端通信的例子

以下是一个简单的C TCP 服务端和客户端通信的例子&#xff0c;针对 Windows 环境&#xff1a; 服务器端代码&#xff08;server.cpp&#xff09;&#xff1a; #include <iostream> #include <winsock2.h> #include <Ws2tcpip.h> // for inet_ntop#pragma c…

如何在CentOS安装StackEdit Markdown编辑器并实现无公网IP远程访问使用

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安…

反射的学习

反射的作用&#xff1a; 1.获取一个类里面的所有信息&#xff0c;获取到之后&#xff0c;在执行其他的业务逻辑 2.结合配置文件&#xff0c;动态的创建对象并调用方法

(4)(4.5) Underwater Sonar (Analog)

文章目录 前言 1 推荐硬件 2 连接和配置 3 参数说明 前言 本页详细介绍了低成本模拟水下声纳&#xff08;又称"探鱼器"&#xff09;和数字转换器的设置&#xff0c;数字转换器可将模拟读数转换成 NMEA 0183&#xff0c;供 ardupilot 读取。这种设置可以测量船下…

Kubernetes篇(三)— 资源管理

目录 前言资源管理介绍YAML语言介绍资源管理方式命令式对象管理命令式对象配置声明式对象配置 前言 本章节主要介绍yaml语法和kubernetes的资源管理方式 资源管理介绍 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xff0c;用户需要通过操作资源来管理kubernetes。 …

【THM】SQL Injection(SQL注入)-初级渗透测试

简介 SQL(结构化查询语言)注入,通常称为 SQLi,是对 Web 应用程序数据库服务器的攻击,导致执行恶意查询。当 Web 应用程序使用未经正确验证的用户输入与数据库进行通信时,攻击者有可能窃取、删除或更改私人数据和客户数据,并攻击 Web 应用程序身份验证方法以获取私有数据…

java-map接口学习

java-map接口学习 Java Map接口HashMapLinkedHashMapTreeMap例子 Java Map接口 Map接口是基于键(key)和值(value)对的集合。每个键值对被称为一个条目(entry)。Map中的键是唯一的。 如果需要根据键进行搜索、更新或删Java Map接口除元素&#xff0c;那么Map是很有用的。 在Ja…

PCB三大走线,如何高效率检查?

在PCB设计中&#xff0c;走线的布局与检查是至关重要的环节。按照走线类型&#xff0c;可分为直角走线、差分走线及蛇形线&#xff0c;如何针对这三种走线方式进行高效率检查&#xff0c;去也报电路的稳定性和可靠性&#xff1f; 1、直角走线 容性负载&#xff1a;观察直角拐角…

从SQL质量管理体系来看SQL审核(4)- 如何设计一个优秀的SQL审核引擎

如何设计一个优秀的SQL审核引擎 从SQL质量管理体系来看SQL审核系列包括多篇文章&#xff0c;从SQL质量管理体系的角度来讨论如何设计一个优秀SQL审核引擎&#xff0c;欢迎订阅。 从SQL质量管理体系来看SQL审核&#xff08;1&#xff09;- SQL质量管理体系概览 从SQL质量管理…

YOLOv9改进策略 :主干优化 | 无需TokenMixer也能达成SOTA性能的极简ViT架构 | CVPR2023 RIFormer

💡💡💡本文改进内容: token mixer被验证能够大幅度提升性能,但典型的token mixer为自注意力机制,推理耗时长,计算代价大,而RIFormers是无需TokenMixer也能达成SOTA性能的极简ViT架构 ,在保证性能的同时足够轻量化。 💡💡💡RIFormerBlock引入到YOLOv9,多个数…