【01】openEuler 源码安装 PostgreSQL

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 PIDCommon 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 necessaryOptions for stop or restart:-m, --mode=MODE        MODE can be "smart", "fast", or "immediate"Shutdown modes are:smart       quit after all clients have disconnectedfast        quit directly, with proper shutdown (default)immediate   quit without complete shutdown; will lead to recovery on restartAllowed signal names for kill:ABRT HUP INT KILL QUIT TERM USR1 USR2Report 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 exitDeveloper 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 debuggerOptions 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 fileOptions 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 filePlease 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.mzph.cn/news/714363.shtml

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

相关文章

c++结构体内存对齐

结构体内存对齐 试试运行下面的例子 #include <stdio.h> #include <stdlib.h>using namespace std;struct A{char c;int i; };struct B{char c; int i; double d; };struct C{char c;int i;double d;char c1; };int main(){printf("sizeof(A): %d\n"…

SparkStreaming在实时处理的两个场景示例

简介 Spark Streaming是Apache Spark生态系统中的一个组件&#xff0c;用于实时流式数据处理。它提供了类似于Spark的API&#xff0c;使开发者可以使用相似的编程模型来处理实时数据流。 Spark Streaming的工作原理是将连续的数据流划分成小的批次&#xff0c;并将每个批次作…

适配器模式 详解 设计模式

适配器模式 适配器模式是一种结构型设计模式&#xff0c;其主要作用是解决两个不兼容接口之间的兼容性问题。适配器模式通过引入一个适配器来将一个类的接口转换成客户端所期望的另一个接口&#xff0c;从而让原本由于接口不匹配而无法协同工作的类能够协同工作。 结构 适配…

想要调用淘宝开放平台API,没有申请应用怎么办?

用淘宝自定义API接口可以访问淘宝开放平台API。 custom-自定义API操作 taobao.custom 公共参数 注册账号获取API请求地址 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xf…

Docker与虚拟机比较

在对比Docker和虚拟机前&#xff0c;先简单了解下虚拟化&#xff0c;明确Docker和虚拟机分别对应的虚拟化级别&#xff0c;然后对Docker和虚拟机进行比较。需要注意的是&#xff0c;Docker和虚拟机并没有什么可比性&#xff0c;而是Docker使用的容器技术和虚拟机使用的虚拟化技…

【K8S类型系统】一文梳理 K8S 各类型概念之间的关系(GVK/GVR/Object/Schema/RestMapper)

参考 k8s 官方文档 https://kubernetes.io/zh-cn/docs/reference/https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/ 重点 Kubernetes源码学习-kubernetes基础数据结构 - 知乎 重点 Kubernetes类型系统 | 李乾坤的博客 重点 k8s源码学习-三大核心数…

前端学习第二天-html提升

达标要求 了解列表的分类 熟练掌握列表的用法 熟练掌握表格的结构构成 合并单元格 表单的组成 熟练掌握表单控件分类的使用 1.列表 1.1 无序列表 <ul>&#xff1a;定义无序列表&#xff0c;并且只能包含<li>子元素。 <li>&#xff1a;定义列表项&a…

LZO索引文件失效说明

在hive中创建lzo文件和索引时&#xff0c;进行查询时会出现问题.hive的默认输入格式是开启小文件合并的&#xff0c;会把索引也合并进来。所以要关闭hive小文件合并功能&#xff01;

Matlab:元胞自动机

元胞自动机是一种基于离散空间的动态系统&#xff0c;由许多简单单元按照某些规则进行相互作用和演化而形成的复杂结构。元胞自动机可以用于模拟物理、生物、社会等领域的现象&#xff0c;以及进行优化、图像处理、噪声生成等方面的应用。 例1&#xff1a;生命游戏 nextState…

maven项目报错Cannot resolve plugin org.apache.maven.plugins:maven-war-plugin:2.2

如果IDEA整合maven没有问题&#xff0c;还是报这个错误&#xff0c;很大可能是由于在下载过程中存在网络问题&#xff0c;导致文件下载一半而停止&#xff0c;但是已经在仓库中存在这个文件夹&#xff0c;解决方法是删除文件夹重新下载即可。 删除本地仓库下的\org\apache\mav…

(算法)位运算

常见的位运算符&#xff1a; 给定一个数n判断他的二进制第x位是0还是1 把第x位修改为1 因为是只是修改n的某个位置&#xff0c;所以不应该移动改变n 既然修改为1&#xff0c;那么就要想到 | 运算符 把第x位修改为0 因为修改为0,所以要用&运算符 位图思想 判定字符串…

二维码门楼牌管理系统技术服务的深度解析

文章目录 前言一、标准地址名称的定义与重要性二、二维码门楼牌管理系统的核心技术三、标准地址名称在二维码门楼牌管理中的应用四、二维码门楼牌管理系统的优势与挑战五、展望未来 前言 在数字化浪潮中&#xff0c;二维码门楼牌管理系统以其高效、便捷的特性&#xff0c;正逐…

【一】【算法分析与设计】基础测试

排列式 题目描述 7254是一个不寻常的数&#xff0c;因为它可以表示为7254 39 x 186&#xff0c;这个式子中1~9每个数字正好出现一次 输出所有这样的不同的式子&#xff08;乘数交换被认为是相同的式子&#xff09; 结果小的先输出&#xff1b;结果相同的&#xff0c;较小的乘…

js 实战小案例

实战 时间 js 格式化时间 <script type"text/javascript">function formatDate(date) { let year date.getFullYear(); let month String(date.getMonth() 1).padStart(2, 0); // getMonth() 返回的月份是从0开始的&#xff0c;所以要加1&#xff0c;并…

【go从入门到精通】go包,内置类型和初始化顺序

大家好&#xff0c;这是我给大家准备的新的一期专栏&#xff0c;专门讲golang&#xff0c;从入门到精通各种框架和中间件&#xff0c;工具类库&#xff0c;希望对go有兴趣的同学可以订阅此专栏。 go基础 。 Go文件名&#xff1a; 所有的go源码都是以 ".go" 结尾&…

Mamba 环境安装:causal-conv1d和mamba-ssm报错解决办法

问题描述&#xff1a; 在执行命令 pip install causal_conv1d 和 mamba_ssm 出错&#xff1a; 解决方案&#xff1a; 1、使用网友配置好的Docker环境&#xff0c;参考&#xff1a;解决causal_conv1d和mamba_ssm无法安装 -&#xff1e; 直接使用Mamba基础环境docker镜像 DockH…

java实现图片转pdf,并通过流的方式进行下载(前后端分离)

首先需要导入相关依赖&#xff0c;由于具体依赖本人也不是记得很清楚了&#xff0c;所以简短的说一下。 iText&#xff1a;PDF 操作库&#xff0c;用于创建和操作 PDF 文件。可通过 Maven 或 Gradle 引入 iText 依赖。 MultipartFile&#xff1a;Spring 框架中处理文件上传的类…

一台工控机的能量

使用Docker搭建EPICS的IOC记录 Zstack EPICS Archiver在小课题组的使用经验 以前电子枪调试&#xff0c;用一台工控机跑起束测后台&#xff0c;这次新光源用的电子枪加工回来又是测试&#xff0c;又是用一台工控机做起重复的事&#xff0c;不过生命在于折腾&#xff0c;重复的…

stm32——hal库学习笔记(IIC)

一、IIC总线协议介绍&#xff08;掌握&#xff09; 二、AT24C02介绍&#xff08;了解&#xff09; 三、AT24C02读写时序&#xff08;掌握&#xff09; 四、AT24C02驱动步骤&#xff08;掌握&#xff09; 五、编程实战&#xff08;掌握&#xff09; myiic.c #include "./B…

汽车虚拟仿真技术的实现、应用和未来

汽车虚拟仿真技术是一种利用计算机模拟汽车运行的技术&#xff0c;以实现对汽车行为的分析、评估和改进。汽车虚拟仿真技术是汽车工业中重要的开发设计和测试工具&#xff0c;可以大大缩短产品研发周期、降低研发成本和提高产品质量。本文将从汽车虚拟仿真技术的实现过程、应用…