postgresql自带指令命令系列二
简介
在安装postgresql数据库的时候会需要设置一个关于postgresql数据库的PATH变量
export PATH=/home/postgres/pg/bin:$PATH,该变量会指向postgresql安装路径下的bin目录。这个安装目录和我们在进行编译的时候./configure --prefix= [指定安装目录] 中的prefix参数设置相关。--bindir=DIR 参数可以指定bin目录的具体存放路径。postgresql对应的PATH变量没有设置正确,会导致执行文件对应的命令无法使用
本文使用postgresql-15.2版本进行讲解
bin目录
进入到对应的bin目录中去,可以看到有以下的执行文件,本博主将进行一一讲解
clusterdb
createdb
createuser
dropdb
dropuser
ecpg
initdb
oid2name
pg_amcheck
pg_archivecleanup
pg_basebackup
pgbench
pg_checksums
pg_config
pg_controldata
pg_ctl
pg_dump
pg_dumpall
pg_isready
pg_receivewal
pg_recvlogical
pg_resetwal
pg_restore
pg_rewind
pg_test_fsync
pg_test_timing
pg_upgrade
pg_verifybackup
pg_waldump
postgres
postmaster -> postgres
psql
reindexdb
vacuumdb
vacuumlo
接上一篇
14.pg_config
pg_config工具打印当前安装的PostgreSQL配置参数。可以通过它找到相对应的存放目录。常常使用陌生的操作系统,安装PG找不到对应的默认路径的时候,可以使用该指令进行查找
[postgres@vm03 ~]$ pg_config --bindir --docdir --htmldir --includedir --pkgincludedir --includedir-server --libdir --pkglibdir --localedir --mandir --sharedir --sysconfdir --pgxs --configure --cc --cppflags --cflags --cflags_sl --ldflags --ldflags_ex --ldflags_sl --libs --version
/home/postgres/pg/bin
/home/postgres/pg/share/doc
/home/postgres/pg/share/doc
/home/postgres/pg/include
/home/postgres/pg/include
/home/postgres/pg/include/server
/home/postgres/pg/lib
/home/postgres/pg/lib
/home/postgres/pg/share/locale
/home/postgres/pg/share/man
/home/postgres/pg/share
/home/postgres/pg/etc
/home/postgres/pg/lib/pgxs/src/makefiles/pgxs.mk'--prefix=/home/postgres/pg' '--with-openssl' '--with-python'
gcc -std=gnu99
-D_GNU_SOURCE
-Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2
-fPIC
-Wl,--as-needed -Wl,-rpath,'/home/postgres/pg/lib',--enable-new-dtags-lpgcommon -lpgport -lssl -lcrypto -lz -lreadline -lpthread -lrt -ldl -lm
这里使用官网对各个参数的介绍
--bindir
打印用户可执行文件的路径。 比如,可以用这个找psql程序。 通常这也是pg_config程序存在的路径。
--docdir
打印文档文件的位置。
--htmldir
输出HTML文档文件的位置。
--includedir
打印客户端接口C头文件的路径。
--pkgincludedir
打印其它C头文件的位置。
--includedir-server
打印那些做服务器编程时使用的C头文件的位置。
--libdir
打印目标代码库的路径。
--pkglibdir
打印动态加载的模块的位置,或者服务器在哪里寻找他们。 其它体系相关的数据文件可能也放在这个目录里。
--localedir
打印区域支持文件的位置。如果在编译PostgreSQL的时候没有配置区域支持, 那么这个就是空字符串。
--mandir
打印手册页的位置。
--sharedir
打印体系无关的支持文件的位置。
--sysconfdir
打印系统范围的配置文件位置。
--pgxs
打印扩展makefiles文件的位置。
--configure
打印配置和编译PostgreSQL时给configure脚本传递的选项, 这可以用于复制相同配置, 或者找出二进制包是用哪些选项编译的。 不过请注意二进制包通常包含供应商提供的补丁。又见下面的例子。
--cc
打印用于编译PostgreSQL的CC变量的数值。 这个选项显示使用的C编译器。
--cppflags
打印用于编译PostgreSQL的CPPFLAGS变量的数值。 这个选项显示在预处理的时候所需要的C编译器开关(通常是-I开关)。
--cflags
打印编译PostgreSQL时使用的CFLAGS变量的数值。 这个选项显示C编译器开关。
--cflags_sl
打印编译PostgreSQL时使用的CFLAGS_SL变量的数值。 这个选项显示了编译共享库的额外的C编译器开关。
--ldflags
打印编译PostgreSQL时使用的LDFLAGS变量的数值。 它显示了链接器的开关。
--ldflags_ex
输出用于创建PostgreSQL的LDFLAGS_EX变量的值。 这显示用于构建可执行文件的链接器开关。
--ldflags_sl
打印编译PostgreSQL时使用的LDFLAGS_SL变量的数值。 它显示了用于编译共享库的链接器的开关。
--libs
打印编译PostgreSQL时使用的LIBS变量的数值。 其内容通常包含连接到PostgreSQL的外部库的-l开关。
--version
打印PostgreSQL的版本。
这么多参数中重点关注--bindir、--configure、--version 三个参数的使用。
15.pg_controldata
这个指令只有一个-D、-V两个参数,-V用于展示该数据目录下的数据库版本号
[postgres@vm03 ~]$ pg_controldata -D $PGDATA
pg_control version number: 1300
Catalog version number: 202209061
Database system identifier: 7301665933783671493
Database cluster state: in production
pg_control last modified: Tue 05 Dec 2023 10:19:04 PM CST
Latest checkpoint location: 0/10000110
Latest checkpoint's REDO location: 0/100000D8
Latest checkpoint's REDO WAL file: 000000010000000000000010
Latest checkpoint's TimeLineID: 1
Latest checkpoint's PrevTimeLineID: 1
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID: 0:743
Latest checkpoint's NextOID: 24579
Latest checkpoint's NextMultiXactId: 1
Latest checkpoint's NextMultiOffset: 0
Latest checkpoint's oldestXID: 716
Latest checkpoint's oldestXID's DB: 1
Latest checkpoint's oldestActiveXID: 743
Latest checkpoint's oldestMultiXid: 1
Latest checkpoint's oldestMulti's DB: 1
Latest checkpoint's oldestCommitTsXid:0
Latest checkpoint's newestCommitTsXid:0
Time of latest checkpoint: Tue 05 Dec 2023 10:19:04 PM CST
Fake LSN counter for unlogged rels: 0/3E8
Minimum recovery ending location: 0/0
Min recovery ending loc's timeline: 0
Backup start location: 0/0
Backup end location: 0/0
End-of-backup record required: no
wal_level setting: replica
wal_log_hints setting: off
max_connections setting: 100
max_worker_processes setting: 8
max_wal_senders setting: 10
max_prepared_xacts setting: 0
max_locks_per_xact setting: 64
track_commit_timestamp setting: off
Maximum data alignment: 8
Database block size: 8192
Blocks per segment of large relation: 131072
WAL block size: 8192
Bytes per WAL segment: 16777216
Maximum length of identifiers: 64
Maximum columns in an index: 32
Maximum size of a TOAST chunk: 1996
Size of a large-object chunk: 2048
Date/time type storage: 64-bit integers
Float8 argument passing: by value
Data page checksum version: 0
Mock authentication nonce: 5857108a733c77131802904df8eebd6b2215639ba0b3dd8b53f78fc6446e6588
pg_controldata打印关于预写式日志和检查点处理的信息。这种信息是集簇范围的,并且不针对任何一个数据库。
这个工具只能由初始化集簇的用户运行,因为它要求对数据目录的读访问。你可以在命令行中指定数据目录,
关于以上参数的解释(这个能看得懂就看吧,后期再专门写一篇博客来讲讲这些参数吧)
pg_control version number:该字段表示 pg_control 文件的版本号,本例中为 1300。
Catalog version number:数据库目录的版本号,本例中为 202209061。
Database system identifier:数据库系统标识符,用于唯一标识数据库集群。本例中为 7301665933783671493。
Database cluster state:数据库集群的状态,本例中为 "in production",表示数据库正处于主库状态。
pg_control last modified:pg_control 文件上次修改的时间,本例中为 "Tue 05 Dec 2023 10:19:04 PM CST"。
Latest checkpoint location:最新检查点的位置,本例中为 "0/10000110"。
Latest checkpoint's REDO location:最新检查点的REDO位置,本例中为 "0/100000D8"。
Latest checkpoint's REDO WAL file:最新检查点的REDO WAL文件,本例中为 "000000010000000000000010"。
Latest checkpoint's TimeLineID:最新检查点所在的时间线标识符,本例中为 1。
Latest checkpoint's PrevTimeLineID:最新检查点的前一个时间线标识符,本例中为 1。
Latest checkpoint's full_page_writes:最新检查点是否使用了完整页写入(on 表示启用,off 表示禁用),本例中为 "on"。
Latest checkpoint's NextXID:下一个事务ID(XID),本例中为 "0:743"。
Latest checkpoint's NextOID:下一个对象ID(OID),本例中为 24579。
Latest checkpoint's NextMultiXactId:下一个多重事务ID(MultiXactId),本例中为 1。
Latest checkpoint's NextMultiOffset:下一个多重事务的偏移量,本例中为 0。
Latest checkpoint's oldestXID:最老的活动事务ID,本例中为 716。
Latest checkpoint's oldestXID's DB:最老的活动事务ID所属的数据库ID,本例中为 1。
Latest checkpoint's oldestActiveXID:最老的活动事务ID,本例中为 743。
Latest checkpoint's oldestMultiXid:最老的多重事务ID,本例中为 1。
Latest checkpoint's oldestMulti's DB:最老的多重事务ID所属的数据库ID,本例中为 1。
Latest checkpoint's oldestCommitTsXid:最老的提交时间戳事务ID,本例中为 0。
Latest checkpoint's newestCommitTsXid:最新的提交时间戳事务ID,本例中为 0。
Time of latest checkpoint:最新检查点的时间,本例中为 "Tue 05 Dec 2023 10:19:04 PM CST"。
Fake LSN counter for unlogged rels:未记录关系的虚拟LSN计数器,本例中为 "0/3E8"。
Minimum recovery ending location:最小恢复结束位置,本例中为 "0/0"。
Min recovery ending loc's timeline:最小恢复结束位置所在的时间线标识符,本例中为 0。
Backup start location:备份开始位置,本例中为 "0/0"。
Backup end location:备份结束位置,本例中为 "0/0"。
End-of-backup record required:是否需要结束备份记录("no" 表示不需要),本例中为 "no"。
wal_level setting:WAL(Write-Ahead Logging)级别设置,本例中为 "replica"。
wal_log_hints setting:是否启用WAL日志提示,本例中为 "off"。
max_connections setting:允许的最大连接数,本例中为 100。
max_worker_processes setting:允许的最大工作进程数,本例中为 8。
max_wal_senders setting:允许的最大WAL发送者数,本例中为 10。
max_prepared_xacts setting:允许的最大预备事务数,本例中为 0。
max_locks_per_xact setting:每个事务允许的最大锁数,本例中为 64。
track_commit_timestamp setting:是否启用事务提交时间戳跟踪,本例中为 "off"。
Maximum data alignment:最大数据对齐字节数,本例中为 8。
Database block size:数据库块大小,本例中为 8192 字节。
Blocks per segment of large relation:大型关系每个段的块数,本例中为 131072。
WAL block size:WAL块大小,本例中为 8192 字节。
Bytes per WAL segment:每个WAL段的字节数,本例中为 16777216 字节。
Maximum length of identifiers:标识符的最大长度,本例中为 64。
Maximum columns in an index:索引中的最大列数,本例中为 32。
Maximum size of a TOAST chunk:TOAST块的最大大小,本例中为 1996 字节。
Size of a large-object chunk:大对象块的大小,本例中为 2048 字节。
Date/time type storage:日期/时间类型的存储方式,本例中为 "64-bit integers"。
Float8 argument passing:Float8参数传递方式,本例中为 "by value"。
Data page checksum version:数据页校验和版本,本例中为 0。
Mock authentication nonce:模拟身份验证的随机数,本例中为 "5857108a733c77131802904df8eebd6b2215639ba0b3dd8b53f78fc6446e6588"
16.pg_ctl
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 USR2
这个指令是我们比较常用的一个命令
启动 PostgreSQL 服务器:
pg_ctl start 指定数据目录和配置文件启动:
pg_ctl start -D /path/to/data/directory -o "-c config_file=/path/to/postgresql.conf"停止 PostgreSQL 服务器:
pg_ctl stop指定停止超时时间
pg_ctl stop -t 60重载配置文件:
pg_ctl reload指定日志文件输出路径:
pg_ctl start -l /path/to/logfile.log等待服务器启动后返回:
pg_ctl start -w使用 smart 选项启动 PostgreSQL 服务器:
(使用 smart 选项表示允许在尝试 fast 关闭失败时使用 immediate 关闭immediate 选项表示立即停止 PostgreSQL 服务器,不管当前有多少活动的连接。)
pg_ctl start -m smart使用 logrotate 选项执行日志轮换:
pg_ctl logrotate
这个命令触发 PostgreSQL 日志的轮换,创建一个新的日志文件。它与服务器的启动和运行无关。使用 kill 选项终止 PostgreSQL 服务器进程:
pg_ctl kill -s SIGTERM
使用 kill 选项可以向 PostgreSQL 服务器发送信号,上述示例发送 SIGTERM 信号,通常用于优雅地终止服务器进程。使用 promote 选项将 PostgreSQL 流复制服务器升级为主服务器:
pg_ctl promote
使用 promote 选项将 PostgreSQL 流复制服务器升级为主服务器。这在流复制设置中很常见,用于手动切换到主服务器。
这里讲一下关于pg_ctl启停的三个参数 smart 、 fast (默认) 、 immediate
在实际应用中,通常会优先选择 fast 选项,因为它允许服务器正常关闭,等待现有连接完成,从而最大程度地减少潜在的数据丢失。smart 则提供了一种更灵活的选择,允许在一定时间内尝试 fast 关闭,然后转为 immediate 关闭以确保服务器能够尽快停止。
17.pg_dump
18.pg_dumpall
23.pg_restore
以上三种工具pg_dump、pg_dumpall数据库得备份工具 ,pg_dumpall可以用实例级别得备份,常常联合pg_restore联合使用,将备份数据导入到另一个库中去,用于备份或数据库升级。使用范例见
19.pg_isready
pg_isready是检查PostgreSQL 数据库服务器连接状态的一个实用工具。退出状态说明连接检查的结果。常用于新建的数据库对外开放情况。
[postgres@vm05 ~]$ pg_isready -h 192.168.43.216
192.168.43.216:5432 - no response

20.pg_receivewal
这个指令会通过流复制的形式向远程服务器接收当前日期往后的日志信息。可以理解为相当于就是一个归档程序。可以将预写日志归档到其他服务器上,用于后期的日志恢复(PITR)。
第一次使用的时候,他会从主节点罪行的wal开始复制,后续继续启动该命令时,他会从当前接收路径下的确实的wal去主节点找。使用起来比较简单。
pg_receivewal receives PostgreSQL streaming write-ahead logs.Usage:pg_receivewal [OPTION]...Options:-D, --directory=DIR receive write-ahead log files into this directory-E, --endpos=LSN exit after receiving the specified LSN--if-not-exists do not error if slot already exists when creating a slot-n, --no-loop do not loop on connection lost--no-sync do not wait for changes to be written safely to disk-s, --status-interval=SECStime between status packets sent to server (default: 10)-S, --slot=SLOTNAME replication slot to use--synchronous flush write-ahead log immediately after writing-v, --verbose output verbose messages-V, --version output version information, then exit-Z, --compress=METHOD[:DETAIL]compress as specified-?, --help show this help, then exitConnection options:-d, --dbname=CONNSTR connection string-h, --host=HOSTNAME database server host or socket directory-p, --port=PORT database server port number-U, --username=NAME connect as specified database user-w, --no-password never prompt for password-W, --password force password prompt (should happen automatically)Optional actions:--create-slot create a new replication slot (for the slot's name see --slot)--drop-slot drop the replication slot (for the slot's name see --slot)

21.pg_recvlogical
pg_recvlogical控制逻辑解码复制槽以及来自这种复制槽的流数据。
这个指令没太大应用场景。
22.pg_resetwal
通常用于修复由于 WAL 文件损坏或丢失而导致的数据库无法启动的问题。这个指令被认为是修复postgresql的最后一根稻草
pg_resetwal -D /var/lib/pgsql/data ##当数据库B点上预写日志损坏了,此时通过这个指令让数据库从B点前一个LSN(可应用的)重新生成预写日志,此时预写日志不再进入pg_wal目录,而是进入/var/lib/pgsql/data 路径下
24.pg_rewind
一个增量备份工具,往往数据库比较大的时候,重新进行备份会浪费较长时间,应用旧的备份,进行增量备份到指定节点,会比较快。使用范例见
25.pg_test_fsync
这是一个系统压测工具,使用也非常简单。它主要用于评估文件系统的 fsync(文件同步)性能。
测试 fsync 性能:
pg_test_fsync指定测试文件大小:
pg_test_fsync -s 1GB测试异步操作:
pg_test_fsync -A多次运行测试:
pg_test_fsync -t 10显示执行一系列同步操作的时间。
26.pg_test_timing
pg_test_timing 的输出将显示执行计时操作的时间,包括系统计时和延迟。这对于评估 PostgreSQL 在特定硬件和系统上的性能和延迟表现非常有用。收集计时数据很慢的系统会给出不太准确的EXPLAIN ANALYZE结果。
使用非常简单,只有一个参数d,用于指定压测的持续时间

-
Testing timing overhead for 10 seconds:
- 这行指示测试计时的总时间为10秒。
-
Per loop time including overhead: 30.91 ns:
- 每个循环的平均时间,包括测试系统计时的额外开销,为30.91纳秒。这表示每次循环执行所需的平均时间。
< us:
表示计时持续时间的范围,单位是微秒。这一列显示了计时的持续时间范围的上限。例如,< us 列中的 "1" 表示小于1微秒的计时。% of total:
表示每个时间段的百分比,占总计数的比例。这一列显示了每个持续时间范围内计时的分布情况。例如,"% of total" 列中的 "97.04" 表示小于1微秒的计时占总计数的97.04%。count:
表示每个时间段的计数,即在指定的持续时间范围内计时的次数。这一列显示了每个时间段的计数。例如,"count" 列中的 "313986794" 表示小于1微秒的计时出现了313,986,794次。综合这三列的信息,可以了解计时的分布情况,例如有多少计时在特定的时间范围内。在给定的示例中,绝大多数计时小于1微秒,占总计数的97.04%。这样的结果通常是希望看到的,因为它表示系统的计时性能较好,大多数计时都非常快速。
27.pg_upgrade
用数据库版本升级的工具,使用范例见
相关文章:
postgresql自带指令命令系列二
简介 在安装postgresql数据库的时候会需要设置一个关于postgresql数据库的PATH变量 export PATH/home/postgres/pg/bin:$PATH,该变量会指向postgresql安装路径下的bin目录。这个安装目录和我们在进行编译的时候./configure --prefix [指定安装目录] 中的prefix参…...
ABAP - Function ALV 02 简单开发一个Function ALV
了解Function ALV: https://blog.csdn.net/HeathlX/article/details/134879766?spm1001.2014.3001.5501程序开发步骤:① TCODE:SE38创建程序 ② 编写程序 DATA gt_spfli TYPE TABLE OF spfli.** Layout 变量定义 (固定使用 直接粘贴复制即可) DATA gs…...
IDEA启动失败报错解决思路
IDEA启动失败报错解决思路 背景:在IDEA里安装插件失败,重启后直接进不去了,然后分析问题解决问题的过程记录下来。方便下次遇到快速解决。也是一种解决问题的思路,分享出去。 启动报错信息 Internal error. Please refer to https…...
密码学学习笔记(二十三):哈希函数的安全性质:抗碰撞性,抗第一原象性和抗第二原象性
在密码学中,哈希函数是一种将任意长度的数据映射到固定长度输出的函数,这个输出通常称为哈希值。理想的哈希函数需要具备几个重要的安全性质,以确保数据的完整性和验证数据的来源。这些性质包括抗碰撞性、抗第一原象性和抗第二原象性。 抗碰…...
STM32-GPIO编程
一、GPIO 1.1 基本概念 GPIO(General-purpose input/output)通用输入输出接口 --GP 通用 --I input输入 --o output输出 通用输入输出接口GPIO是嵌入式系统、单片机开发过程中最常用的接口,用户可以通过编程灵活的对接口进行控制,…...
Go语言基础知识学习(一)
Go基本数据类型 bool bool型值可以为true或者false,例子: var b bool true数值型 类型表示范围int8有符号8位整型-128 ~ 127int16有符号16位整型-32768 ~ 32767int32有符号32位整型-2147783648 ~ 2147483647int64有符号64位整型uint8无符号8位整型0 ~ 255uint16…...
Vue 3项目的目录结构
使用vite创建完VUE项目后,使用VS Code编辑器打开项目目录,可以看到一个默认生成的项目目录结构 下图是目录结构: 详细介绍.vscode:存放VS Code编辑器的相关配置。 node_modules:存放项目的各种依赖和安装的插件。…...
RPG项目01_技能释放
基于“RPG项目01_新输入输出”, 修改脚本文件夹中的SkillBase脚本: using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; //回复技能,魔法技能,物理技能…...
Leetcode—209.长度最小的子数组【中等】
2023每日刷题(五十六) Leetcode—209.长度最小的子数组 实现代码 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int left 0, right 0;int ans nums.size() 1, s 0;for(; right < nums.size(); righ…...
Nacos源码解读12——Nacos中长连接的实现
短连接 VS 长连接 什么是短连接 客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。 长连接 客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立…...
k8s 安装部署
一,准备3台机器,安装docker,kubelet、kubeadm、kubectl firewall-cmd --state 使用下面命令改hostname的值:(改为k8s-master01)另外两台改为相应的名字。 172.188.32.43 hostnamectl set-hostname k8s-master01 172.188.32.4…...
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
文章目录 前言一、应用层二.传输层三.网络层:四.数据链路层五.物理层:六.OSI七层模型:1.物理层(Physical Layer):2.数据链路层(Data Link Layer):3.网络层(Ne…...
STM32串口接收不定长数据(空闲中断+DMA)
玩转 STM32 单片机,肯定离不开串口。串口使用一个称为串行通信协议的协议来管理数据传输,该协议在数据传输期间控制数据流,包括数据位数、波特率、校验位和停止位等。由于串口简单易用,在各种产品交互中都有广泛应用。 但在使用串…...
LeetCode56. Merge Intervals
文章目录 一、题目二、题解 一、题目 Given an array of intervals where intervals[i] [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input. Example 1: Input: interva…...
【华为OD题库-083】玩牌高手-Java
题目 给定一个长度为n的整型数组,表示一个选手在n轮内可选择的牌面分数。选手基于规则选牌,请计算所有轮结束后其可以获得的最高总分数。 选择规则如下: 1.在每轮里选手可以选择获取该轮牌面,则其总分数加上该轮牌面分数,为其新的…...
ARM day3
题目:实现3盏灯的流水 代码: .text .global _start _start: 设置RCC寄存器使能 LDR R0,0X50000A28 LDR R1,[R0] ORR R1,R1,#(0X1<<4) ORR R1,R1,#(0X1<<5) STR R1,[R0]设置PE10管脚为输出模式 LDR R0,0X50006000 LDR R1,[R0] BIC R1,R1,…...
[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-2稳定性分析Stability
本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-2稳定性分析Stability 0. 序言1. 稳定的分类2. 稳定的对象3. 稳定的系统4. 系统稳定性的讨论5. 补充内容——Transfer Function(传递函数) - nonzero Initial Condition(非零初始…...
Android Audio实战——音频链路分析(二十五)
在 Android 系统的开发过程当中,音频异常问题通常有如下几类:无声、调节不了声音、爆音、声音卡顿和声音效果异常(忽大忽小,低音缺失等)等。尤其声音效果这部分问题通常从日志上信息量较少,相对难定位根因。想要分析此类问题,便需要对声音传输链路有一定的了解,能够在链…...
PHP基础 - 常量字符串
常量 在PHP中,常量是一个简单值的标识符,定义后默认是全局变量,可以在整个运行的脚本的任何地方使用。常量由英文字母、下划线和数字组成,但数字不能作为首字母出现。 PHP中定义常量的方式是使用define()函数,其语法如下: bool define( string $name, mixed $value [,…...
Linux查看命令的绝对路径
linux查看命令的绝对路径 在Linux中,可以使用以下命令来查看命令的绝对路径: 1、which 命令名 例如,要查看chronyc命令的绝对路径,可以运行: which chronyc 2、whereis 命令名 例如,要查看chronyc命令…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...
边缘计算网关提升水产养殖尾水处理的远程运维效率
一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...
