【01】openEuler 源码安装 PostgreSQL

news2024/11/16 15:51:10

openEuler 源码安装 PostgreSQL

  • 部署环境说明
  • Shell 前端软件包管理器基础概念
    • YUM 简介
    • DNF 简介
  • 源码安装 PostgreSQL
    • 环境变量(env)设置
      • 临时环境变量设置
      • 永久环境变量设置
    • 初始化数据库(initdb)
  • 数据库基本操作
    • 数据库基本配置(postgresql.conf)
    • 启动、停止、查看数据库
    • 使用 psql 登录数据库
    • 查看数据库版本信息
    • 更多(postgres/pg_ctl)命令说明

部署环境说明

  • Linux 系统:openEuler 22.03 LTS SP3 x86_64(下载地址:openEuler下载 | 欧拉系统ISO镜像 | openEuler社区官网)

  • 数据库:postgresql-15.6(下载地址:https://ftp.postgresql.org/pub/source/v15.6/postgresql-15.6.tar.gz)

pgsql

Shell 前端软件包管理器基础概念

YUM 简介


YUM(全称为 Yellow dog Updater, Modified)是一个在 FedoraRHEL、CentOS、OEL 中的 Shell 前端软件包管理器。

YUM 本身基于 RPM 包管理,能够从指定的 YUM 源服务器(一个或多个)自动下载 RPM 包并且进行安装和更新,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

要成功的使用 YUM 工具安装更新软件或系统,就需要有一个包含各种 RPM 软件包的 repository(软件仓库),这个软件仓库我们习惯称为 YUM 源 (可以是本地源、网络源)。

DNF 简介


DNF(全称为 Dandified yum)是新一代的 rpm 软件包管理器,他首先出现在 Fedora 18 这个发行版中。而最近,它取代了 yum,正式成为 Fedora 22 的包管理器。

DNFRHEL、CentOS、OEL 等系统中,从版本 8 开始出现,目前和 YUM 共存。

DNF 克服了 YUM 包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。

DNF 使用 Hawkey 库,该库解析 RPM 依赖性以在客户端计算机上运行查询。 它们基于 libsolv 构建,libsolv 是一种使用可满足性算法的程序包相关性求解器。 您可以在 libsolvGitHub 存储库中找到有关该算法的更多详细信息。


openEuler 22.03 系统中默认使用 dnf 作为 rpm 软件包管理器,接下来我们也会使用该命令进行一些相关的操作。

源码安装 PostgreSQL

  1. 查看 linux 软件源。
vi /etc/dnf/dnf.conf
[repo-id 名称]
name=取个名字随意(通常和 repo-id 名称相同)
baseurl=软件源地址

# 或者

vi /etc/yum.repos.d/openEuler.repo

[OS]
name=OS
baseurl=http://repo.openeuler.org/openEuler-22.03-LTS-SP3/OS/$basearch/
metalink=https://mirrors.openeuler.org/metalink?repo=$releasever/OS&arch=$basearch
metadata_expire=1h
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS-SP3/OS/$basearch/RPM-GPG-KEY-openEuler

参考:设置 openEuler(欧拉系统)安装源

  1. 安装编译环境依赖包(推荐使用 dnf )。
# yum 安装
sudo yum install -y systemtap-sdt-devel.x86_64 perl-ExtUtils-Embed bzip2 readline readline-devel lz4 lz4-devel openssl openssl-devel pam pam-devel libxml2 libxml2-devel libxslt libxslt-devel tcl tcl-devel openldap openldap-devel python3 python3-devel kernel-headers autoconf proj.x86_64 vim nc wget psmisc gcc-c++ gcc lrzsz make cmake telnet net-tools bind-utils tree cifs-utils ntpdate bash-completion sysstat iotop iftop htop unzip nmap bc bind-utils nethogs

# dnf 安装
sudo dnf install -y perl-ExtUtils-Embed readline-devel python3-devel pam-devel libxml2-devel libxslt-devel openldap-devel lz4-devel llvm-devel systemd-devel container-selinux selinux-policy-devel openssl-devel gcc-c++ gcc cmake lsof net-tools

说明:openEuler 使用 dnf 作为默认包管理工具。

  1. 下载 postgresql 源码。
// 1. 切换到 /opt/postgresql 目录下
cd /opt/postgresql
// 2. 使用命令下载 postgresql
wget https://ftp.postgresql.org/pub/source/v15.6/postgresql-15.6.tar.gz
// 3. 解压文件
sudo tar -zxvf postgresql-15.6.tar.gz
// 4. 创建文件夹目录(用来存放安装 postgresql 的相关文件)
sudo mkdir -p /pgccc/pgdata/data
  1. 编译和安装 postgresql
// 1. 检测系统环境并生成 Makefile 文件,prefix 默认安装路径 /opt/postgresql/pgsql
./configure --prefix=/pgccc/pgdata --with-perl --with-python --with-pam --with-libxml --with-libxslt --with-ldap --with-lz4 --with-llvm --with-systemd --with-selinux --with-openssl 

// 2. 编译 & 安装
gmake world && gmake install-world

gmakegmake install 是两个命令,参数说明:

  • gmake,编译,依据 Makefile 文件把源码包编译成二进制可执行文件。

  • gmake install 安装的意思。

gmake && gmake install 的意思就是执行 gmake 如果没有发生错误就执行 gmake install

  1. 查看 postgresql 安装目录。
ls -al /pgccc/pgdata/

输出信息:

[root@euler /]# ls -al /pgccc/pgdata/
总用量 28
drwxr-xr-x. 7 root root 4096  229 20:28 .
drwxr-xr-x. 3 root root 4096  229 20:11 ..
drwxr-xr-x. 2 root root 4096  229 20:17 bin
drwxr-xr-x. 2 root root 4096  229 20:28 data
drwxr-xr-x. 4 root root 4096  229 20:17 include
drwxr-xr-x. 4 root root 4096  229 20:17 lib
drwxr-xr-x. 5 root root 4096  229 20:

文件目录说明:

  • bin 存放二进制文件;
  • include 存放 .h 头文件;
  • lib 存放安装所需的各种依赖库,动态库;
  • share 存放所需的插件(extension),组件;

环境变量(env)设置

临时环境变量设置

  1. 编写 shell 脚本:
vi pgsql-15.6-env.sh
# 写入环境变量配置信息
export PGHOME=/pgccc/pgdata
export PGHOST=localhost
export PATH=$PGHOME/bin:$PATH:$HOME/bin
#export PATH=/pgccc/pgdata/bin:$PATH 
export LD_LIBRARY_PATH=/pgccc/pgdata/lib:$LD_LIBRARY_PATH 
export PGDATA=/pgccc/pgdata/data
export PGPORT=5432 
export PGUSER=postgres
  1. 执行命令,运行该文件(临时生成一下):
source pgsql-15.6-env.sh
  1. 查看初始化 db 版本信息,目的验证环境变量是否生效:
initdb --version
  1. 查看当前系统使用编码集:
echo $LANG

永久环境变量设置

环境变量配置文件 profile (不推荐全局修改)。可以使用命令输出当下用户环境变量信息:

env 或 peintenv

参考:Linux系统中.bash_profile文件详解_Linux_脚本之家 (jb51.net)

初始化数据库(initdb)

注意:源码安装PostgreSQL 数据库,没有默认的 postgres 用户,需自行手动创建用户组和用户,并设置密码。

原因:root 不能执行 PostgreSQL 的一些命令,因此要创建 postgres 这个用户。

  • 初始化数据库
initdb -D /pgccc/pgdata/data

注意:使用非 root 授权用户执行初始化数据库命令。

若出现如下错误信息:

initdb: error: cannot be run as root
initdb: hint: Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process.

解决办法:

# 添加非 root 用户 postgres
sudo useradd postgres
# 给 postgres 用户设置密码
sudo passwd postgres
# 在相对应目录创建文件夹
sudo mkdir /pgccc/pgdata/data
# 给 postgres 用户授权 data 目录可执行权限
sudo chown -R postgres:postgres /pgccc/pgdata/data
# 初始化数据库实例
initdb -D /pgccc/pgdata/data -U postgres
# 启动数据库实例
pg_ctl start -D /pgccc/pgdata/data -l logfile 
# 查看启动日志文件信息
cat ./logfile
  • 查看更多 initdb 命令帮助信息:
initdb --help

数据库基本操作

数据库基本配置(postgresql.conf)

  1. 配置数据库监听 IP 和端口(port):
vi /pgccc/pgdata/data/postgresql.conf

修改 listen_addressesport

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'                  # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
#unix_socket_directories = '/tmp'       # comma-separated list of directories
                                        # (change requires restart)
#unix_socket_group = ''                 # (change requires restart)
#unix_socket_permissions = 0777         # begin with 0 to use octal notation
                                        # (change requires restart)
#bonjour = off                          # advertise server via Bonjour
                                        # (change requires restart)
#bonjour_name = ''                      # defaults to the computer name
                                        # (change requires restart)

修改说明:

  • listen_addresses 默认值 localhost (只允许本地登录),配置为 “*” 代表在本机的所有地址上监听。

  • port 默认值 5432,如果安装了多个数据库实例,则需要为每个实例指定不同的监听端口。

  1. 配置数据库错误日志
#------------------------------------------------------------------------------
# REPORTING AND LOGGING
#------------------------------------------------------------------------------

# - Where to Log -

#log_destination = 'stderr'             # Valid values are combinations of
                                        # stderr, csvlog, jsonlog, syslog, and
                                        # eventlog, depending on platform.
                                        # csvlog and jsonlog require
                                        # logging_collector to be on.

# This is used when logging to stderr:
logging_collector = on                  # Enable capturing of stderr, jsonlog,
                                        # and csvlog into log files. Required
                                        # to be on for csvlogs and jsonlogs.
                                        # (change requires restart)

# These are only used if logging_collector is on:
log_directory = 'pg_log'                # directory where log files are written,
                                        # can be absolute or relative to PGDATA
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
                                        # can include strftime() escapes
#log_file_mode = 0600                   # creation mode for log files,
                                        # begin with 0 to use octal notation
#log_rotation_age = 1d                  # Automatic rotation of logfiles will
                                        # happen after that time.  0 disables.
#log_rotation_size = 10MB               # Automatic rotation of logfiles will
                                        # happen after that much log output.
                                        # 0 disables.

修改说明:

  • logging_collector = on ,默认为 off

  • log_directory = 'pg_log' ,默认为 log(相对路径,即 ${PGDATA}/pg_log)。也可以改为绝对路径,还可以定义在其他目录或者分区,但是必须先创建此目录,并且该目录有修改权限。

  • log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

参考:PostgreSQL 日志参数解释 常用环境日志参数配置_log_min_duration_statement-CSDN博客

启动、停止、查看数据库

可能出现类似的异常信息

  • 异常一:
pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

解决方案,改用非 root 账号执行 pt_ctl 相关命令即可。

su postgres
  • 异常二:
[jeff@euler ~]$ pg_ctl --help
-bash: pg_ctl:未找到命令

解决方案,由于上面 postgresql 环境变量配置过程中使用的临时方式,切换用户后请重新执行下该命令。

source pgsql-15.6-env.sh
  1. 启动数据库
pg_ctl start -D /pgccc/pgdata/data

输出信息:

waiting for server to start....2024-02-29 22:15:38.584 CST [125692] LOG:  redirecting log output to logging collector process
2024-02-29 22:15:38.584 CST [125692] HINT:  Future log output will appear in directory "pg_log".
 done
server started
  1. 停止数据库
pg_ctl stop -D /pgccc/pgdata/data
  • pg_ctl stop 命令语法说明:
pg_ctl stop [-D DATADIR] [-m SHUTDOWN-MODE]

参数说明:-m 是指数据库的停止方式,可选 3 种方式:

  • smart,待所有连接终止后关闭数据库。

  • fast,快速断开连接并关闭数据库。

  • immediate,立刻关闭数据库,下次启动数据库需要进行恢复。

如果不指定 -m,则默认使用 fast 方式关闭数据库。

  1. 重启数据库
pg_ctl restart -D /pgccc/pgdata/data
  1. 查看数据库运行状态
  • 方法一:pg_ctl status 命令查看
pg_ctl status -D /pgccc/pgdata/data

输出信息:

pg_ctl: server is running (PID: 125692)
/pgccc/pgdata/bin/postgres "-D" "/pgccc/pgdata/data"
  • 方法二:查看 postgres 进程信息
ps -ef | grep postgres
# (推荐)使用下面方式可以清晰看出层级结构
ps -axjf | grep postgres 

# 查看指定进程相关信息
lsof -p pid

输出 pid=1814 (此处为 postgres 实例)的进程信息:

[root@euler ~]# lsof -p 1814
COMMAND   PID     USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME
postgres 1814 postgres  cwd    DIR              253,0     4096 1447087 /pgccc/pgdata/data2
postgres 1814 postgres  rtd    DIR              253,0     4096       2 /
postgres 1814 postgres  txt    REG              253,0  9363776 1444452 /pgccc/pgdata/bin/postgres
postgres 1814 postgres  DEL    REG                0,1             1025 /dev/zero
postgres 1814 postgres  mem    REG              253,0 19037712 3016591 /usr/lib/locale/locale-archive
postgres 1814 postgres  mem    REG              253,0   157976 3019397 /usr/lib64/libgpg-error.so.0.33.1
postgres 1814 postgres  mem    REG              253,0   223368 3018526 /usr/lib64/libcrypt.so.1.1.0
postgres 1814 postgres  mem    REG              253,0    63984 3018081 /usr/lib64/libresolv.so.2
postgres 1814 postgres  mem    REG              253,0    30840 3019511 /usr/lib64/libcap-ng.so.0.0.0
postgres 1814 postgres  mem    REG              253,0  1333016 3019544 /usr/lib64/libgcrypt.so.20.4.2
postgres 1814 postgres  mem    REG              253,0    43240 3030139 /usr/lib64/libcap.so.2.61
postgres 1814 postgres  mem    REG              253,0   117616 3020069 /usr/lib64/libsasl2.so.3.0.0
postgres 1814 postgres  mem    REG              253,0    68040 3027871 /usr/lib64/liblber.so.2.0.200
postgres 1814 postgres  mem    REG              253,0   133256 3019522 /usr/lib64/libaudit.so.1.0.0
postgres 1814 postgres  mem    REG              253,0   161992 3018465 /usr/lib64/liblzma.so.5.2.5
postgres 1814 postgres  mem    REG              253,0  2055336 3018072 /usr/lib64/libc.so.6
postgres 1814 postgres  mem    REG              253,0   812088 3030154 /usr/lib64/libsystemd.so.0.32.0
postgres 1814 postgres  mem    REG              253,0   397056 3027873 /usr/lib64/libldap.so.2.0.200
postgres 1814 postgres  mem    REG              253,0   891176 3018075 /usr/lib64/libm.so.6
postgres 1814 postgres  mem    REG              253,0   100552 3018407 /usr/lib64/libz.so.1.2.11
postgres 1814 postgres  mem    REG              253,0  3047192 3035664 /usr/lib64/libcrypto.so.1.1.1wa
postgres 1814 postgres  mem    REG              253,0   628816 3035666 /usr/lib64/libssl.so.1.1.1wa
postgres 1814 postgres  mem    REG              253,0    67784 3031855 /usr/lib64/libpam.so.0.85.1
postgres 1814 postgres  mem    REG              253,0  1492264 3015964 /usr/lib64/libxml2.so.2.9.14
postgres 1814 postgres  mem    REG              253,0   133240 3019814 /usr/lib64/liblz4.so.1.9.3
postgres 1814 postgres  mem    REG               0,23    26976       2 /dev/shm/PostgreSQL.2062550190
postgres 1814 postgres  mem    REG              253,0   199960 3018068 /usr/lib64/ld-linux-x86-64.so.2
postgres 1814 postgres  DEL    REG                0,1                0 /SYSV001614af
postgres 1814 postgres    0r   CHR                1,3      0t0       4 /dev/null
postgres 1814 postgres    1w  FIFO               0,12      0t0   20345 pipe
postgres 1814 postgres    2w  FIFO               0,12      0t0   20345 pipe
postgres 1814 postgres    3r  FIFO               0,12      0t0   20344 pipe
postgres 1814 postgres    4w  FIFO               0,12      0t0   20344 pipe
postgres 1814 postgres    5r  FIFO               0,12      0t0   20345 pipe
postgres 1814 postgres    6u  IPv4              20349      0t0     TCP *:personal-agent (LISTEN)
postgres 1814 postgres    7u  IPv6              20350      0t0     TCP *:personal-agent (LISTEN)
postgres 1814 postgres    8u  unix 0x0000000009ef7753      0t0   20351 /tmp/.s.PGSQL.5555 type=STREAM (LISTEN)

说明:linux 系统中 lsof 命令加 -p 是指定进程,不加 -p 的是线程。

  • 方法三:查看数据库状态
pg_isready -p 5432
  • 方法四:判断监听端口
# 安装 net-tools
dnf install -y net-tools
# 监听端口
netstat -nutlp | grep 5432

输出信息:

tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      1814/postgres       
tcp6       0      0 :::5432                 :::*                    LISTEN      1814/postgres 

使用 psql 登录数据库

psql 是一个客户端命令工具,可以对数据库实例执行相关操作。

说明:psql 连接数据库,不指定的情况下,默认连接 5452 端口,且使用当前用户查找同名 DB 实例。

  1. 登录方式一:
psql postgresql://postgres:pg123@172.17.0.3:5432/postgres

参数说明:

  • postgresql,协议名称。

  • postgres,数据库用户名。

  • pg123,用户密码。

  • 172.17.0.3,数据库 IP 地址。

  • 5432,数据库实例监听端口。

  • postgres,需要访问的数据库名称。

  1. 登录方式二:
psql -U postgres -h 172.17.0.3 -p 5432 -d postgres

参数说明:

  • -Upostgresql 用户名。

  • -h,数据库 IP 地址。

  • -p,数据库实例监听端口。

  • -d,需要访问的数据库名称。

  1. 登录方式三:使用 psql 直接连接数据库,需要通过设置 postgres 用户的环境变量(env)来实现。
psql

参考:PostgreSQL psql两种登录方式_postgresql登录-CSDN博客

  • 查看 pgsql 更多帮助信息:
psql --help

查看数据库版本信息

  • 登录数据库后,查看数据库(服务端)版本信息:
[postgres@euler /]$ psql -U postgres -p 5432 -d postgres
psql (15.6)
Type "help" for help.

postgres=# select version();
                                   version                                    
------------------------------------------------------------------------------
 PostgreSQL 15.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 10.3.1, 64-bit
(1 row)

postgres=# SHOW server_version;
 server_version 
----------------
 15.6
(1 row)

postgres=# SHOW server_version_num;
 server_version_num 
--------------------
 150006
(1 row)
  • 推出 psql 查看数据库(服务端)版本信息:
postgres-# \q
[postgres@euler /]$ postgres --version
postgres (PostgreSQL) 15.6
  • 查看数据库客户端工具版本信息
psql --version

注意:psql --version 返回的是 psql 工具的版本,而不是服务器版本。

更多(postgres/pg_ctl)命令说明

说明:pg_ctl 命令本质上是包装了 postgres 的命令操作,推荐使用 pg_ctl 命令。

  • pg_ctl --help
[postgres@euler /]$ pg_ctl --help
pg_ctl is a utility to initialize, start, stop, or control a PostgreSQL server.

Usage:
  pg_ctl init[db]   [-D DATADIR] [-s] [-o OPTIONS]
  pg_ctl start      [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s]
                    [-o OPTIONS] [-p PATH] [-c]
  pg_ctl stop       [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
  pg_ctl restart    [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
                    [-o OPTIONS] [-c]
  pg_ctl reload     [-D DATADIR] [-s]
  pg_ctl status     [-D DATADIR]
  pg_ctl promote    [-D DATADIR] [-W] [-t SECS] [-s]
  pg_ctl logrotate  [-D DATADIR] [-s]
  pg_ctl kill       SIGNALNAME PID

Common options:
  -D, --pgdata=DATADIR   location of the database storage area
  -s, --silent           only print errors, no informational messages
  -t, --timeout=SECS     seconds to wait when using -w option
  -V, --version          output version information, then exit
  -w, --wait             wait until operation completes (default)
  -W, --no-wait          do not wait until operation completes
  -?, --help             show this help, then exit
If the -D option is omitted, the environment variable PGDATA is used.

Options for start or restart:
  -c, --core-files       allow postgres to produce core files
  -l, --log=FILENAME     write (or append) server log to FILENAME
  -o, --options=OPTIONS  command line options to pass to postgres
                         (PostgreSQL server executable) or initdb
  -p PATH-TO-POSTGRES    normally not necessary

Options for stop or restart:
  -m, --mode=MODE        MODE can be "smart", "fast", or "immediate"

Shutdown modes are:
  smart       quit after all clients have disconnected
  fast        quit directly, with proper shutdown (default)
  immediate   quit without complete shutdown; will lead to recovery on restart

Allowed signal names for kill:
  ABRT HUP INT KILL QUIT TERM USR1 USR2

Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>
  • postgres --help
[postgres@euler /]$ postgres --help
postgres is the PostgreSQL server.

Usage:
  postgres [OPTION]...

Options:
  -B NBUFFERS        number of shared buffers
  -c NAME=VALUE      set run-time parameter
  -C NAME            print value of run-time parameter, then exit
  -d 1-5             debugging level
  -D DATADIR         database directory
  -e                 use European date input format (DMY)
  -F                 turn fsync off
  -h HOSTNAME        host name or IP address to listen on
  -i                 enable TCP/IP connections
  -k DIRECTORY       Unix-domain socket location
  -l                 enable SSL connections
  -N MAX-CONNECT     maximum number of allowed connections
  -p PORT            port number to listen on
  -s                 show statistics after each query
  -S WORK-MEM        set amount of memory for sorts (in kB)
  -V, --version      output version information, then exit
  --NAME=VALUE       set run-time parameter
  --describe-config  describe configuration parameters, then exit
  -?, --help         show this help, then exit

Developer options:
  -f s|i|o|b|t|n|m|h forbid use of some plan types
  -n                 do not reinitialize shared memory after abnormal exit
  -O                 allow system table structure changes
  -P                 disable system indexes
  -t pa|pl|ex        show timings after each query
  -T                 send SIGSTOP to all backend processes if one dies
  -W NUM             wait NUM seconds to allow attach from a debugger

Options for single-user mode:
  --single           selects single-user mode (must be first argument)
  DBNAME             database name (defaults to user name)
  -d 0-5             override debugging level
  -E                 echo statement before execution
  -j                 do not use newline as interactive query delimiter
  -r FILENAME        send stdout and stderr to given file

Options for bootstrapping mode:
  --boot             selects bootstrapping mode (must be first argument)
  --check            selects check mode (must be first argument)
  DBNAME             database name (mandatory argument in bootstrapping mode)
  -r FILENAME        send stdout and stderr to given file

Please read the documentation for the complete list of run-time
configuration settings and how to set them on the command line or in
the configuration file.

Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>

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

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

相关文章

【漏洞复现】某厂商明御WEB应用防火墙任意用户登录漏洞

Nx01 产品简介 安恒明御WEB应用防火墙&#xff08;简称WAF&#xff09;是杭州安恒信息技术股份有限公司自主研发的一款专业应用安全防护产品&#xff0c;专注于为网站、APP等Web业务系统提供安全防护。 Nx02 漏洞描述 安恒明御WEB应用防火墙report.php文件存在硬编码设置的Con…

当代人吃瓜成习惯!后续来了!人生进阶5个方法——早读(逆天打工人爬取热门微信文章解读)

让瓜再熟一点 引言python代码第一篇 春秋航空 开年首场机票限时抢&#xff01;春日畅飞&#xff0c;多重好礼第二篇 人民日报 “我该给十年前的支教老师打电话吗&#xff1f;”后续来了&#xff01;第三篇 人民日报 【夜读】想要人生进阶&#xff0c;试试这五种方法第四篇&…

python自动化之项目架构搭建与思路讲解(第二天)

1.自动化测试的概念 自动化测试是指使用自动化工具和脚本来执行测试任务,以验证软件或系统的正确性和稳定性。它可以提高测试的效率和准确性,并节约时间和成本。 2.自动化脚本编写的思路 xmind文档如有需要,可在资源里自行下载 3.项目代码工程创建 lib :基本代码库包 …

【Leetcode】2369. 检查数组是否存在有效划分

文章目录 题目思路代码结果 题目 题目链接 给你一个下标从 0 开始的整数数组 nums &#xff0c;你必须将数组划分为一个或多个 连续 子数组。 如果获得的这些子数组中每个都能满足下述条件 之一 &#xff0c;则可以称其为数组的一种 有效 划分&#xff1a; 子数组 恰 由 2 个…

Thinkphp框架漏洞--->5.0.23 RCE

1.Thinkphp ThinkPHP是一个免费开源的&#xff0c;快速、简单的面向对象的轻量级PHP开发框架&#xff0c;是为了敏捷WEB应用开发和简化 企业应用开发而诞生的。 2.漏洞原理及成因 该漏洞出现的原因在于 ThinkPHP5框架底层对控制器名过滤不严 &#xff0c;从而让攻击者可以通过…

抖音小店无货源怎么做起来?正确玩法是什么?做店步骤都在这里了

大家好&#xff0c;我是电商花花。 新的一年肯定又会有不少创业者疑问2024年抖音小店还能继续做吗&#xff1f;怎么做才能赚到钱&#xff1f; 尤其是现在做无货源模式&#xff0c;还会被判罚吗&#xff1f; 我认为2024年的抖音小店不管是有货源还是无货源都是可以做的&#…

YOLOv9中加入SCConv模块!

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、本文介绍 本文将一步步演示如何在YOLOv9中添加 / 替换新模块&#xff0c;寻找模型上的创新&#xff01; 适用检测目标&#xff1a; YOLOv9模块…

《梦幻西游》本人收集的34个单机版游戏,有详细的视频架设教程,值得收藏

梦幻西游这款游戏&#xff0c;很多人玩&#xff0c;喜欢研究的赶快下载吧。精心收集的34个版本。不容易啊。里面有详细的视频架设教程&#xff0c;可以外网呢。 《梦幻西游》本人收集的34个单机版游戏&#xff0c;有详细的视频架设教程&#xff0c;值得收藏 下载地址&#xff1…

【Web安全靶场】sqli-labs-master 54-65 Challenges 与62关二分法和like模糊搜索

sqli-labs-master 54-65 Challenges 其他关卡和靶场见专栏… 文章目录 sqli-labs-master 54-65 Challenges第五十四关-联合注入第五十五关-联合注入第五十六关-联合注入第五十七关-联合注入第五十八关-报错注入第五十九关-报错注入第六十关-报错注入第六十一关-报错注入第六十…

基于zemax的激光合束过程分析

系统里的透镜包括FAC/SAC及球面聚焦镜都是采用市面上标准的透镜&#xff0c;在典型的光纤耦合14针蝶形封装中&#xff0c;最多需要三个独立的透镜才能提供有效且稳定的耦合。大多数高端激光二极管使用两个交叉的柱面方形微透镜来补偿激光二极管快轴和慢轴的发散角之间的差异。第…

Python 编程中的迭代器、生成器和装饰器探究【第110篇—迭代器】

Python 编程中的迭代器、生成器和装饰器探究 在Python编程中&#xff0c;迭代器&#xff08;Iterators&#xff09;、生成器&#xff08;Generators&#xff09;和装饰器&#xff08;Decorators&#xff09;是三个强大的概念&#xff0c;它们为代码的可读性、效率和灵活性提供…

准备车载测试面试的小伙伴,赶紧看起来!

随着现代汽车的电子化程度越来越高&#xff0c;汽车总线系统也变得越来越复杂。汽车总线测试是一项重要的任务&#xff0c;它有助于确定车辆电子系统中的问题&#xff0c;并保障车辆的安全和可靠性。 CAN总线…… 控制器区域网&#xff08;Controller Area Network&#xff0c…

from tensorflow.keras.layers import Dense,Flatten,Input报错无法引用

from tensorflow.keras.layers import Dense,Flatten,Input 打印一下路径&#xff1a; import tensorflow as tf import keras print(tf.__path__) print(keras.__path__) [E:\\开发工具\\pythonProject\\studyLL\\venv\\lib\\site-packages\\keras\\api\\_v2, E:\\开发工具\\…

什么是人才储备?如何做人才储备?

很多小伙伴都会有企业面试被拒的情况&#xff0c;然后HR会告诉你&#xff0c;虽然没有录用你&#xff0c;但是你进入了他们的人才储备库&#xff0c;那么这个储备库有什么作用和特点呢&#xff1f;我们如何应用人才测评系统完善人才储备库呢&#xff1f; 人才储备一般有以下三…

备考2025年AMC8数学竞赛:2000-2024年AMC8真题练一练

想了解如何提高小学和初中数学成绩&#xff1f;小学和初中可以参加的数学竞赛有哪些&#xff1f;不妨看看AMC8美国数学竞赛&#xff0c;现在许多小学生和初中生都在参加这个比赛。如果孩子有兴趣&#xff0c;有余力的话可以系统研究AMC8的历年真题&#xff0c;即使不参加AMC8竞…

链式插补 (MICE):弥合不完整数据分析的差距

导 读 数据缺失可能会扭曲结果&#xff0c;降低统计功效&#xff0c;并且在某些情况下&#xff0c;导致估计有偏差&#xff0c;从而破坏从数据中得出的结论的可靠性。 处理缺失数据的传统方法&#xff08;例如剔除或均值插补&#xff09;通常会引入自己的偏差或无法充分利用数…

鸿蒙Harmony应用开发—ArkTS声明式开发(自定义事件分发)

ArkUI在处理触屏事件时&#xff0c;会在触屏事件触发前进行按压点和组件区域的触摸测试&#xff0c;来收集需要响应触屏事件的组件&#xff0c;再基于触摸测试结果分发相应的触屏事件。在父节点&#xff0c;开发者可以通过onChildTouchTest决定如何让子节点去做触摸测试&#x…

《Spring Security 简易速速上手小册》第6章 Web 安全性(2024 最新版)

文章目录 6.1 CSRF 防护6.1.1 基础知识详解CSRF 攻击原理CSRF 防护机制最佳实践 6.1.2 重点案例&#xff1a;Spring Security 中的 CSRF 防护案例 Demo测试 CSRF 防护 6.1.3 拓展案例 1&#xff1a;自定义 CSRF 令牌仓库案例 Demo测试自定义 CSRF 令牌仓库 6.1.4 拓展案例 2&am…

Python:运算符、内置函数和序列基本用法

一、学习目标 1&#xff0e;熟练使用Python运算符。 2&#xff0e;熟练使用Python内置函数。 3&#xff0e;掌握输入、输出函数的使用方法。 4&#xff0e;了解列表、元组、字典、集合的概念和基本用法。 二、相关练习 1&#xff0e;输入一个自然数250&#xff0c;输出其…

pytest教程-13-conftest.py文件

上一小节我们学习了fixture的作用域&#xff0c;本小节我们学习一下pytest conftest.py文件的使用方法。 conftest.py文件的作用 conftest.py文件是pytest框架中的一个特殊文件&#xff0c;用于定义共享的设置、夹具(fixture)和钩子函数&#xff08;hook&#xff09;。 在py…