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

【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/>

相关文章:

  • LabVIEW最佳传输系统设计
  • elment-ui table表格排序后 清除排序箭头/恢复默认排序 的高亮样式
  • 【leetcode热题】被围绕的区域
  • 浅谈密码学
  • ABB双语言共享充电宝投资理财源码/共享充电宝系统源码/共享充电宝市场分析/五级分销返利+地图显示模式
  • Newtonsoft.Json
  • Linux tload 命令教程:实时监控系统负载(附案例详解和注意事项)
  • 铝型材【欧标】
  • Leetcoder Day32| 贪心算法part05
  • 【Vue3】深入理解Vue中的ref属性
  • Sora引发安全新挑战
  • k8s 存储卷详解与动静部署详解
  • Debezium发布历史161
  • Linux命令行与shell脚本编程大全-2.2
  • 【C++】结构体
  • [case10]使用RSQL实现端到端的动态查询
  • [笔记] php常见简单功能及函数
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • Apache的基本使用
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • spark本地环境的搭建到运行第一个spark程序
  • Vue UI框架库开发介绍
  • Wamp集成环境 添加PHP的新版本
  • 从tcpdump抓包看TCP/IP协议
  • 前端之Sass/Scss实战笔记
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 手写双向链表LinkedList的几个常用功能
  • 线上 python http server profile 实践
  • 详解移动APP与web APP的区别
  • 用element的upload组件实现多图片上传和压缩
  • 阿里云重庆大学大数据训练营落地分享
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (ibm)Java 语言的 XPath API
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (蓝桥杯每日一题)love
  • (论文阅读11/100)Fast R-CNN
  • (转)Android学习笔记 --- android任务栈和启动模式
  • *** 2003
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET 的程序集加载上下文
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET程序员迈向卓越的必由之路
  • .net项目IIS、VS 附加进程调试
  • .Net转前端开发-启航篇,如何定制博客园主题
  • /bin/bash^M: bad interpreter: No such file or directory
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [2023-年度总结]凡是过往,皆为序章
  • [Android] Amazon 的 android 音视频开发文档
  • [EMWIN]FRAMEWIN 与 WINDOW 的使用注意