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

3、在 CentOS 8 系统上安装 PostgreSQL 15.4

PostgreSQL,作为一款备受欢迎的开源关系数据库管理系统(RDBMS),已经存在了三十多年的历史。它提供了SQL语言支持,用于管理数据库和执行CRUD操作(创建、读取、更新、删除)。

由于其卓越的健壮性、灵活性和卓越性能,PostgreSQL赢得了广泛的声誉,成为众多Web网站和数据分析应用软件的首选数据存储解决方案。全球许多知名公司,如Spotify、Instagram、Trivago、Uber和Netflix等,都在广泛采用PostgreSQL。

CentOS 8/RHEL 8上正式维护的模块化存储库的PostgreSQL版本为13、12、10和9.6,我们将添加PostgreSQL Yum Repository,它包含所有最新版本。

其实PostgreSQL项目为最常见的发行版提供了所有支持版本的软件包存储库,支持所有Red Hat系列,如CentOS、Fedora、Scientific Linux、Oracle Linux和Red Hat Enterprise Linux。

目前,PostgreSQL的主流稳定版本是15版本。在本文中,我们将详细介绍在 CentOS 8 系统上安装PostgreSQL 15 版本的过程。

要在 CentOS 8 系统上安装PostgreSQL 15.4,我们可以按照以下步骤进行操作:

  1. 打开终端:可以通过点击"应用程序"菜单,然后搜索"终端"来打开终端,或者使用 Xshell 远程连接到CentOS 8 服务器。

  2. PostgreSQL在Appstream存储库中有不同版本。我们可以通过使用dnf软件包管理器启用首选软件包来进行选择。

要列出PostgreSQL的可用模块,请运行以下命令:

# dnf module list postgresql
[root@pgserver ~]# dnf module list postgresql
上次元数据过期检查:0:43:44 前,执行于 2023年10月09日 星期一 13时22分39秒。
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com
Name                  Stream           Profiles                     Summary                                      
postgresql            9.6              client, server [d]           PostgreSQL server and client module          
postgresql            10 [d]           client, server [d]           PostgreSQL server and client module          
postgresql            12               client, server [d]           PostgreSQL server and client module          
postgresql            13               client, server [d]           PostgreSQL server and client module          提示:[d]默认,[e]已启用,[x]已禁用,[i]已安装
[root@pgserver ~]# 

在这里插入图片描述

从列出Postgresql的模块命令的输出中,输出表明可以从AppStream存储库中下载四个版本:分别是版本9.6、10、12、13。我们还可以看到默认版本为标记所指示的Postgresql 10[d]。

如果要安装默认的 Postgresql 10 ,可以直接通过运行以下命令来安装:

# dnf install postgresql-server

但是如果要安装PostgreSQL 15,步骤会有所不同。

第一步:添加PostgreSQL Yum存储库

Yum存储库是专门为 CentOS 和 RHEL 系列的Linux发行版提供支持的。

一旦成功添加,该存储库将在整个受支持的 PostgreSQL 版本的生命周期内,为我们的服务器系统提供自动更新的PostgreSQL软件包。

要完成此步骤,我们需要执行以下详细的操作,以将 PostgreSQL 软件包的存储库添加到我们的CentOS/RHEL 8 服务器中:

# dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
[root@pgserver ~]# sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
上次元数据过期检查:1:04:22 前,执行于 2023年10月09日 星期一 13时22分39秒。
pgdg-redhat-repo-latest.noarch.rpm                                                                                    8.3 kB/s |  13 kB     00:01    
依赖关系解决。
======================================================================================================================================================软件包                                  架构                          版本                                 仓库                                 大小
======================================================================================================================================================
安装:pgdg-redhat-repo                        noarch                        42.0-35PGDG                          @commandline                         13 k事务概要
======================================================================================================================================================
安装  1 软件包总计:13 k
安装大小:15 k
确定吗?[y/N]: y
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中  :                                                                                                                                       1/1 安装    : pgdg-redhat-repo-42.0-35PGDG.noarch                                                                                                   1/1 验证    : pgdg-redhat-repo-42.0-35PGDG.noarch                                                                                                   1/1 已安装:pgdg-redhat-repo-42.0-35PGDG.noarch                                                                                                                 完毕!
[root@pgserver ~]# 

在这里插入图片描述
第二步:在CentOS 8/RHEL 8上安装PostgreSQL

我们需要在CentOS 8上禁用PostgreSQL AppStream存储库,CentOS 8 Linux包含其他版本的PostgreSQL。

# dnf -qy module disable postgresql
[root@pgserver ~]# dnf -qy module disable postgresql
导入 GPG 公钥 0x442DF0F8:Userid: "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG

在这里插入图片描述

使用以下命令检查确认启用的存储库列表中是否包含有PostgreSQL 15。

# dnf repolist
[root@pgserver ~]# dnf repolist
仓库 id                                                 仓库名称
AppStream                                               CentOS-8.5.2111 - AppStream - mirrors.aliyun.com
base                                                    CentOS-8.5.2111 - Base - mirrors.aliyun.com
extras                                                  CentOS-8.5.2111 - Extras - mirrors.aliyun.com
pgdg-common                                             PostgreSQL common RPMs for RHEL / Rocky 8 - x86_64
pgdg11                                                  PostgreSQL 11 for RHEL / Rocky 8 - x86_64
pgdg12                                                  PostgreSQL 12 for RHEL / Rocky 8 - x86_64
pgdg13                                                  PostgreSQL 13 for RHEL / Rocky 8 - x86_64
pgdg14                                                  PostgreSQL 14 for RHEL / Rocky 8 - x86_64
pgdg15                                                  PostgreSQL 15 for RHEL / Rocky 8 - x86_64
pgdg16                                                  PostgreSQL 16 for RHEL / Rocky 8 - x86_64

在这里插入图片描述

使用以下命令检查存储库中是否有PostgreSQL 15软件包。

# yum search postgresql15
[root@pgserver ~]# yum search postgresql15
上次元数据过期检查:0:02:13 前,执行于 2023年10月09日 星期一 15时56分22秒。
============================================================ 名称 精准匹配:postgresql15 =============================================================
postgresql15.x86_64 : PostgreSQL client programs and libraries
============================================================== 名称 匹配:postgresql15 ===============================================================
postgresql15-contrib.x86_64 : Contributed source and binaries distributed with PostgreSQL
postgresql15-devel.x86_64 : PostgreSQL development header files and libraries
postgresql15-docs.x86_64 : Extra documentation for PostgreSQL
postgresql15-libs.x86_64 : The shared libraries required for any PostgreSQL clients
postgresql15-llvmjit.x86_64 : Just-in-time compilation support for PostgreSQL
postgresql15-odbc.x86_64 : PostgreSQL ODBC driver
postgresql15-plperl.x86_64 : The Perl procedural language for PostgreSQL
postgresql15-plpython3.x86_64 : The Python3 procedural language for PostgreSQL
postgresql15-pltcl.x86_64 : The Tcl procedural language for PostgreSQL
postgresql15-server.x86_64 : The programs needed to create and run a PostgreSQL server
postgresql15-tcl.x86_64 : A Tcl client library for PostgreSQL
postgresql15-test.x86_64 : The test suite distributed with PostgreSQL
[root@pgserver ~]# 

在这里插入图片描述

现在在CentOS 8 上安装PostgreSQL 15软件包——服务器和客户端

# dnf install postgresql15 postgresql15-server

这将安装PostgreSQL 数据库服务端和一些附加的功能模块。

[root@pgserver ~]# dnf install postgresql15 postgresql15-server
上次元数据过期检查:0:09:13 前,执行于 2023年10月09日 星期一 15时56分22秒。
依赖关系解决。
======================================================================================================================================================软件包                                     架构                          版本                                    仓库                           大小
======================================================================================================================================================
安装:postgresql15                               x86_64                        15.4-1PGDG.rhel8                        pgdg15                        1.6 Mpostgresql15-server                        x86_64                        15.4-1PGDG.rhel8                        pgdg15                        5.9 M
安装依赖关系:postgresql15-libs                          x86_64                        15.4-1PGDG.rhel8                        pgdg15                        293 k事务概要
======================================================================================================================================================
安装  3 软件包总下载:7.8 M
安装大小:33 M
确定吗?[y/N]: y
下载软件包:
(1/3): postgresql15-libs-15.4-1PGDG.rhel8.x86_64.rpm                                                                   23 kB/s | 293 kB     00:12    
(2/3): postgresql15-15.4-1PGDG.rhel8.x86_64.rpm                                                                        34 kB/s | 1.6 MB     00:48    
(3/3): postgresql15-server-15.4-1PGDG.rhel8.x86_64.rpm                                                                 28 kB/s | 5.9 MB     03:34    
------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                   37 kB/s | 7.8 MB     03:34     

安装过程中还需要GPG密钥存储库。

PostgreSQL 15 for RHEL / Rocky 8 - x86_64                                                                             1.6 MB/s | 1.7 kB     00:00    
导入 GPG 公钥 0x442DF0F8:Userid: "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
确定吗?[y/N]: y
导入公钥成功
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中  :                                                                                                                                       1/1 安装    : postgresql15-libs-15.4-1PGDG.rhel8.x86_64                                                                                             1/3 运行脚本: postgresql15-libs-15.4-1PGDG.rhel8.x86_64                                                                                             1/3 安装    : postgresql15-15.4-1PGDG.rhel8.x86_64                                                                                                  2/3 运行脚本: postgresql15-15.4-1PGDG.rhel8.x86_64                                                                                                  2/3 运行脚本: postgresql15-server-15.4-1PGDG.rhel8.x86_64                                                                                           3/3 安装    : postgresql15-server-15.4-1PGDG.rhel8.x86_64                                                                                           3/3 运行脚本: postgresql15-server-15.4-1PGDG.rhel8.x86_64                                                                                           3/3 
[/usr/lib/tmpfiles.d/pesign.conf:1] Line references path below legacy directory /var/run/, updating /var/run/pesign → /run/pesign; please update the tmpfiles.d/ drop-in file accordingly.验证    : postgresql15-15.4-1PGDG.rhel8.x86_64                                                                                                  1/3 验证    : postgresql15-libs-15.4-1PGDG.rhel8.x86_64                                                                                             2/3 验证    : postgresql15-server-15.4-1PGDG.rhel8.x86_64                                                                                           3/3 已安装:postgresql15-15.4-1PGDG.rhel8.x86_64         postgresql15-libs-15.4-1PGDG.rhel8.x86_64         postgresql15-server-15.4-1PGDG.rhel8.x86_64        完毕!
[root@pgserver ~]# 

安装 PostgreSQL 及其依赖项后,使用以下 psql 命令验证其版本。

[root@pgserver ~]# psql -V
psql (PostgreSQL) 15.4
[root@pgserver ~]# 

以上命令的输出显示,系统上已经安装 PostgreSQL 15.4 。

第三步:初始化并启动数据库服务

必须先进行PostgreSQL数据库初始化,然后才能使用数据库服务器。

运行下面的命令,初始化 PostgreSQL 数据库

/usr/pgsql-15/bin/postgresql-15-setup initdb
[root@pgserver ~]# /usr/pgsql-15/bin/postgresql-15-setup initdb
Initializing database ... OK[root@pgserver ~]# 

在这里插入图片描述
数据库的主要配置文件和存放路径在 /var/lib/pgsql/15/data/postgresql.conf

[root@pgserver ~]# ll /var/lib/pgsql/15/data/postgresql.conf
-rw-------. 1 postgres postgres 29459 109 16:17 /var/lib/pgsql/15/data/postgresql.conf

启动PostgreSQL数据库服务器并将其设置为在启动时启动。

[root@pgserver ~]# systemctl enable --now postgresql-15
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-15.service → /usr/lib/systemd/system/postgresql-15.service.
[root@pgserver ~]# 

通常使用以下2条命令来启动并配置:

systemctl start postgresql-15
systemctl enable postgresql-15

也可以使用systemctl enable --now postgresql-15 这一条命令来替代以下两个命令:

  1. systemctl start postgresql-15 用于启动 PostgreSQL 15 服务。
  2. systemctl enable postgresql-15 用于设置 PostgreSQL 15 服务开机自启动。

systemctl enable --now postgresql-15 命令结合了这两个操作,它会启动 PostgreSQL 15 服务并设置为开机自启动。这是一个更便捷的方式来同时执行这两个任务。

检查服务状态以确认它正在运行。

systemctl status postgresql-15
[root@pgserver ~]# systemctl status postgresql-15
● postgresql-15.service - PostgreSQL 15 database serverLoaded: loaded (/usr/lib/systemd/system/postgresql-15.service; enabled; vendor preset: disabled)Active: active (running) since Mon 2023-10-09 16:25:49 CST; 55s agoDocs: https://www.postgresql.org/docs/15/static/Process: 17669 ExecStartPre=/usr/pgsql-15/bin/postgresql-15-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)Main PID: 17675 (postmaster)Tasks: 7 (limit: 49189)Memory: 17.5MCGroup: /system.slice/postgresql-15.service├─17675 /usr/pgsql-15/bin/postmaster -D /var/lib/pgsql/15/data/├─17676 postgres: logger ├─17678 postgres: checkpointer ├─17679 postgres: background writer ├─17681 postgres: walwriter ├─17682 postgres: autovacuum launcher └─17683 postgres: logical replication launcher 10月 09 16:25:49 pgserver systemd[1]: Starting PostgreSQL 15 database server...
10月 09 16:25:49 pgserver postmaster[17675]: 2023-10-09 16:25:49.955 CST [17675] 日志:  日志输出重定向到日志收集进程
10月 09 16:25:49 pgserver postmaster[17675]: 2023-10-09 16:25:49.955 CST [17675] 提示:  后续的日志输出将出现在目录 "log"中.
10月 09 16:25:49 pgserver systemd[1]: Started PostgreSQL 15 database server.
[root@pgserver ~]# 

在这里插入图片描述
可以看到PostgreSQL 服务已经激活运行。

第四步:设定PostgreSQL管理员使用者的密码

默认情况下,PostgreSQL数据库是不安全的,可以轻松切换到 postgres 用户,无需任何密码,并开始使用 psql,如下所示
在这里插入图片描述
因此部署完成后,我们需要加强 PostgreSQL 数据库的安全性,更新和修改 PostgreSQL 系统用户密码和数据库管理员密码。

默认情况下,PostgreSQL没有设置密码,您需要设置一个管理员密码。

运行以下命令,替换"your_password"为您想要的密码:

sudo -u postgres psql

进入PostgreSQL命令行后,执行以下命令来设置密码:

ALTER USER postgres PASSWORD 'your_password';

退出PostgreSQL命令行:

\q

或者按照以下方法进行修改。
1、使用 passwd 命令为 postgres 用户设置密码;
2、使用 ALTER USER 数据库命令设置数据库管理员密码;

$ passwd postgres
$ su – postgres
$ psql -c "ALTER USER postgres WITH PASSWORD ‘xxxxxxxxxxx';"

修改数据库管理员密码
第五步:启用远程数据库连接

在默认情况下,PostgreSQL安装完成后通常会限制只允许本地连接,这是为了增加数据库的安全性。
这意味着只有在运行PostgreSQL服务器的本地机器上才能连接到数据库,而其他计算机无法远程访问。

启用远程数据库连接可以增加数据库的灵活性,允许其他计算机通过网络连接到数据库服务器,从而可以在不同的计算机上访问和使用数据库。但是,这也会增加一些安全风险,因此在启用远程连接之前,需要采取一些安全措施,如:

1. 访问控制: 通过修改PostgreSQL的pg_hba.conf文件来限制哪些IP地址或主机可以连接到数据库。您可以配置白名单,仅允许特定IP地址或主机访问数据库。

2. 防火墙规则: 确保服务器上的防火墙规则允许外部计算机连接到PostgreSQL的端口(默认为5432)。

3. 安全性最佳实践: 遵循数据库安全性最佳实践,包括定期备份数据库、使用强密码、定期更新PostgreSQL和操作系统等。

在启用远程连接之前,务必考虑安全性并采取适当的措施,以确保您的数据库不受未经授权的访问或潜在的威胁。这样可以在提高灵活性的同时保护数据库的安全。

要启用远程数据库连接,我们需要进行以下步骤:

  1. 编辑pg_hba.conf文件

    PostgreSQL使用pg_hba.conf文件来配置客户端的访问控制规则。我们需要编辑此文件以允许远程连接。使用文本编辑器(如nanovi)打开该文件:

    vim  /var/lib/pgsql/15/data/pg_hba.conf
    

    找到适当的位置添加一行规则,以允许远程访问。例如,要允许所有IP地址的远程访问,可以添加以下行:

    host    all             all             0.0.0.0/0            md5
    

    这表示允许所有主机(0.0.0.0/0)连接到所有数据库(all)的所有用户(all),并要求使用密码验证(md5)。
    请注意,这将允许来自任何IP地址的连接,因此请谨慎使用,如果是在生产环境中建议更严格地限制可以访问数据库的 IP 地址。
    在这里插入图片描述

  2. 配置postgresql.conf文件

    PostgreSQL的postgresql.conf文件包含有关服务器配置的信息。确保该文件中的listen_addresses设置为允许远程连接。使用文本编辑器打开该文件:

    vim  /var/lib/pgsql/15/data/postgresql.conf
    

    确保以下行没有被注释掉(去掉前面注释的#):
    然后将“侦听地址”设置为服务器IP地址或所有接口的“ * ”。

    listen_addresses = '*'
    

    这将允许服务器开放监听所有可用的网络接口。
    配置监听所有网络接口

  3. 重新启动PostgreSQL

    使上述更改生效,重新启动PostgreSQL服务:

    sudo systemctl restart postgresql-15
    
  4. 防火墙规则

    确保我们的服务器防火墙允许远程连接到PostgreSQL的端口(默认端口为 5432)。具体规则可能因您的防火墙管理工具而异。您可以使用firewall-cmdiptables来配置规则。

  5. 测试远程连接

    使用远程计算机上的PostgreSQL客户端工具,连接到您的PostgreSQL服务器以测试远程连接。确保使用正确的IP地址、用户名和密码。

$ psql -U <dbuser> -h <serverip> -p 5432 <dbname>

请注意,启用远程连接会增加潜在的安全风险,因此应采取适当的安全措施,例如限制允许连接的IP地址,使用强密码,定期更新PostgreSQL和操作系统等,以确保数据库的安全性。

现在,我们已经成功在CentOS 8 系统上安装并配置了PostgreSQL 15.4。我们可以使用psql命令行工具或其他PostgreSQL客户端连接到数据库并开始使用它。如果需要的话,还可以安装其他PostgreSQL扩展和工具。

最后建议安装pgAdmin 4来管理PostgreSQL 15数据库, pgAdmin是领先的开源功能丰富的PostgreSQL管理和开发平台,可在Linux,Unix,Mac OS X和Windows上运行。

具体安装方法将在下一篇文章中介绍。

相关文章:

3、在 CentOS 8 系统上安装 PostgreSQL 15.4

PostgreSQL&#xff0c;作为一款备受欢迎的开源关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;已经存在了三十多年的历史。它提供了SQL语言支持&#xff0c;用于管理数据库和执行CRUD操作&#xff08;创建、读取、更新、删除&#xff09;。 由于其卓越的健壮性…...

sap 一次性供应商 供应商账户组 临时供应商 <转载>

原文链接&#xff1a;https://blog.csdn.net/xianshengsun/article/details/132620593 sap中有一次性供应商这个名词&#xff0c;一次性供应商和非一次性供应商又有什么区别呢&#xff1f; 有如何区分一次性供应商和非一次性供应商呢&#xff1f; 1 区分一次性供应商和非一次性…...

总结html5中常见的选择器

HTML5并没有引入新的选择器类型&#xff0c;它仍然使用CSS选择器来选择和操作HTML元素。HTML5中仍然可以使用CSS2和CSS3中定义的各种选择器。以下是HTML5中常见的选择器类型&#xff1a; 1. 元素选择器&#xff08;Element Selector&#xff09;&#xff1a;使用元素名称作为选…...

Java基础面试-JDK JRE JVM

详细解释 JDK&#xff08;Java Devalpment Kit&#xff09;java 开发工具 JDK是Java开发工具包&#xff0c;它是Java开发者用于编写、编译、调试和运行Java程序的核心组件。JDK包含了Java编程语言的开发工具和工具集&#xff0c;以及Java标准库和其他一些必要的文件。JDK中的…...

OpenCV实现图像傅里叶变换

傅里叶变换 dftcv.dft(img_float32,flagscv.DFT_COMPLEX_OUTPUT): flags:标志位&#xff0c;指定变换类型&#xff0c;cv.DFT_COMPLEX_OUTPUT会返回复数结果。 傅立叶变换&#xff0c;将输入的图像从空间域转换到频率域。 返回结果: 此函数返回一个复杂数值数组&#xff0c…...

快手新版本sig3参数算法还原

Frida Native层主动调用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81…...

Linux 安全 - LSM机制

文章目录 前言一、LSM起源二、LSM简介2.1 MAC2.2 LSM特征 三、Major and Minor LSMs3.1 Major LSMs3.2 Minor LSMs3.3 BPF LSM 四、LSM 框架五、LSM Capabilities Module六、LSM hooks 说明参考资料 前言 在这两篇文章中介绍了 Linux 安全机制 Credentials &#xff1a; Linu…...

uni-app:实现简易自定义下拉列表

效果 代码 <template><view><view class"dropdown-trigger" tap"showDropdown">{{ selectedItem }}</view><view class"dropdown-list" v-if"showList"><view class"dropdown-item" v-f…...

排序算法——直接插入排序

一、介绍 插入排序就是将前两个元素排好&#xff0c;再将第三个元素通过与前边的元素比较后插入适当的位置&#xff0c;再将第四个元素插入&#xff0c;不断重复插入与前边元素比较的操作&#xff0c;直到将元素都排列好。 演示如下&#xff1a; 视频演示&#xff1a;…...

手动抄表和自动抄表优缺点对比

随着科技的发展&#xff0c;自动抄表技术已经越来越成熟&#xff0c;被广泛应用于各个领域。然而&#xff0c;手动抄表在一些特定场景下仍然具有一定的优势。本文将从手动抄表和自动抄表的优缺点入手&#xff0c;对比分析它们的应用场景和使用价值。 1.成本低&#xff1a;手动抄…...

HiSilicon352 android9.0 emmc添加新分区

添加新分区 从emmc中单独划分出一个分区&#xff0c;用来存储相关数据&#xff08;可用于存储照片&#xff0c;视频&#xff0c;音乐和文档等&#xff09;或者系统日志log&#xff0c;从而不影响到其他分区。 实现方法&#xff1a; device/hisilicon/Hi3751V350/etc/Hi3751V3…...

networkX-04-查找k短路

文章目录 1.构建图2.使用networkX查找最短路径3.自己构建方法 教程仓库地址&#xff1a;github networkx_tutorial import networkx as nx import matplotlib.pyplot as plt1.构建图 # 创建有向图 G nx.DiGraph()# 添加带权重的边 edges [(0, 1, 1), (0, 2, 2), (1, 2, 1), …...

Linux虚拟机搭建RabbitMQ集群

普通集群模式&#xff0c;意思就是在多台机器上启动多个 RabbitMQ 实例&#xff0c;每台机器启动一个。创建的 queue&#xff0c;只会放在一个 RabbitMQ 实例上&#xff0c;但是每个实例都同步 queue 的元数据&#xff08;元数据可以认为是 queue 的一些配置信息&#xff0c;通…...

C之fopen/fclose/fread/fwrite/flseek

一、C中文件操作简介 c中的文件操作大致和linux的文件操作类似&#xff0c;但是毕竟是不同的API&#xff0c;所以会有些差异。部分差异会在下面的案例中体验 二、fopen open的参数有两个一个是文件名&#xff0c;一个是模式选择&#xff0c;不同open函数&#xff0c;open中的模…...

3D机器视觉:解锁未来的立体视野

原创 | 文 BFT机器人 机器视觉领域一直在不断演进&#xff0c;从最初的二维图像处理&#xff0c;逐渐扩展到了更复杂的三维领域&#xff0c;形成了3D机器视觉。3D机器视觉技术的涌现为计算机系统带来了全新的感知和理解能力&#xff0c;这一领域的发展正日益受到广泛关注。本文…...

大端字节序存储 | 小端字节序存储介绍

为什么存储的顺序有些变动呢&#xff1f; 大小端的介绍 我们在创建变量时&#xff0c;操作系统就会给你分配空间&#xff0c;比如你创建了【short/int/double/float】的变量&#xff0c;这些变量的类型都是大于1个字节的&#xff0c;操作系统会根据你这个变量的类型&#xff…...

ASP.Core3.1 WebAPI 发布到IIS

本篇文章简述如何在IIS中发布你的.Core 程序 1.打包 首先你要打包好你程序&#xff0c;如果你是Visual Studio开发的程序&#xff0c;那你右击你的项目点击发布 如果你是Visual Code 开发的&#xff0c;那你在你的终端切换到你的目录然后执行命令 dotnet publish --config…...

MyBatisPlus属性自动填充和乐观锁插件+查询删除操作+整合SpringBoot出现问题解决

属性字段自动填充 一、实体类和数据表添加两个字段&#xff08;属性&#xff09; 表&#xff1a;create_tiem/update_time 实体类&#xff1a;createTime/updateTime 二、实体类中属性进行注解添加 TableField(fillFieldFill.INSERT) private Date createTime;TableField(f…...

软件测试/测试开发丨App自动化—CSS 定位与原生定位

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/27684 一、原生定位 元素属性定位组合定位 # ID 定位 driver.find_element_by_android_uiautomator(\new UiSelector().resourceId("<element-I…...

c语言:通讯录管理系统(文件版本)

前言&#xff1a;在大多数高校内&#xff0c;都是通过设计一个通讯录管理系统来作为c语言课程设计&#xff0c;通过一个具体的系统设计将我们学习过的结构体和函数等知识糅合起来&#xff0c;可以很好的锻炼学生的编程思维&#xff0c;本文旨在为通讯录管理系统的设计提供思路和…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...