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

PostgreSQL 日常维护

目录

一、基本使用

1、登录数据库

2、数据库操作

(1)列出库

(2)创建库

(3)删除库

(4)切换库

(5)查看库大小

3、数据表操作

(1)列出表

(2)创建表

(3)复制表

(4)删除表

(5)查看表结构

4、模式操作命令

(1)创建模式

(2)默认模式

(3)删除模式

(4)查看所用模式

(5)在指定模式中创建表

(6)切换当前模式

(7)查看当前所在schema

(8)查看搜索路径(Search Path)

(9)PostgreSQL 的模式隔离性

1.创建一个数据库

2.在数据库中创建两个模式

3.在每个模式中创建同名表,并插入数据

4.跨模式查询

5、数据操作

(1)添加数据

(2)查询数据

(3)修改数据

(4)删除数据

6、备份与恢复

(1)SQL 转储

(2)从转储中恢复

(3)使用pg_dumpall

7、远程连接

(1)修改PostgreSQL 监听地址

(2)配置访问权限

(3)重启服务

(4)验证远程连接

8、重置密码

(1)修改配置文件

(2)重启

(3)修改密码

(4)恢复pg_hba.conf配置文件


一、基本使用

1、登录数据库

Pgsql 登录时,必须使用postgres 用户,登录后的命令提示符为“postgres=#” postgres表示你当前所在的库

[root@bogon ~]#  su - postgres
[postgres@bogon ~]$ pg_ctl -D /usr/local/pgsql/data/ -l logfile restart
[postgres@bogon ~]$ psql
psql (15.4)
Type "help" for help.postgres=#

2、数据库操作

(1)列出库

常用的三种方法如下:

方法一:

postgres=# \l

在 PostgreSQL 的交互式终端 psql 中,开头的命令称为元命令(类似MySQL的 SHOW 语句),用于快速管理数据库

常用原命令有:

\l

列出所有数据库。

\c

[数据库名] 或 \connect [数据库名]

\dn

列出所有模式(Schema)。

\db

列出所有表空间。

\?

显示 pgsql 命令的说明(元命令查询帮助)

\q

退出 psql

\dt

列出当前数据库的所有表

\d [TABLE]

查看表结构

\du

列出所有用户

方法二:

postgres=# \l+#\l+ 的输出比 \l 多了Size,Tablespace 和 Description 列

+ :扩展输出,显示更多字段或详细信息

方法三:

使用SQL 命令

postgres=# select datname from pg_database;
  • pg_database 是系统表,它存储了 PostgreSQL 实例中所有数据库的元信息(如数据库名称、所有者、编码等)。属于系统目录(System Catalog):类似 MySQL的 information schema,但PostgreSQl 的系统目录更底层且直接存储在pg_catalog 模式中。
  • pg_database 是系统目录表,所以无论当前连接到哪个数据库,该表始终可见系统表默认属于 pg_catalog 模式,而pg_catalog 始终位于搜索路径(searchpath)的首位。因此,查询时无需显式指定模式(如pg catalog.pg database)。

(2)创建库

create database mydb;select datname from pg_database;

(3)删除库

drop database mydb;select datname from pg_database;

(4)切换库

postgres=# \c mydb
You are now connected to database "mydb" as user "postgres".
mydb=# 

(5)查看库大小

mydb=# select pg_database_size('mydb');    #函数以字节为单位返回数据库的大小pg_database_size 
------------------7508783
(1 row)mydb=# select pg_size_pretty(pg_database_size('mydb'));    #pg_size_pretty() 函数将字节转换为更易于阅读值pg_size_pretty 
----------------7333 kB
(1 row)

3、数据表操作

(1)列出表

列出表的常用方法:

mydb=# \dt;#列出表(显示search_path 中模式里的表,默认public)
mydb=# \d#列出表,视图和序列
mydb=# \d+
mydb=# \dt my_schema.*#列出指定模式下的表(例如 my_schema)
mydb=# \dt *.*#查看当前数据库的所有表(包括系统表)
mydb=# select * from pg_tables where schemaname='public';#使用SLQL方式列出当前数据库中 public 模式下的所有表及其详细信息
  • pg_tables 是视图:属于 pg_catalog 模式,但它是基于 pg_class 和pg_namespace的逻辑视图,并非物理表。无需切换数据库,直接查询pg_catalog.pg_tables 即可获取当前数据库的表信息。

(2)创建表

PostgreSQl 支持标准的 SQL类型 int、smallint、real、double precision、char(N)、varchar(N)、date、time、timestamp和 interval,还支持其他的通用功能的类型和丰富的几何类型。PostgreSqL 中可以定制任意数量的用户定义数据类型。因而类型名并不是语法关键字,除了SQL,标准要求支持的特例外。

mydb=# create table test(id int,name char(20),age int);

(3)复制表

要将已有的 table_name 表复制为新表 new_table,包括表结构和数据,请使用以下语句:

CREATE TABLE new_table AS TABLE table_name;

mydb=# create table test2 as table test;mydb=# \dt

(4)删除表

mydb=# drop table test2;

(5)查看表结构

mydb=# \d test;Table "public.test"Column |     Type      | Collation | Nullable | Default 
--------+---------------+-----------+----------+---------id     | integer       |           |          | name   | character(20) |           |          | age    | integer       |           |          | 

4、模式操作命令

在 PostgreSQL 中,模式(Schema)是一个逻辑容器,用于组织和管理数据库对象(如表、视图、函数、索引等)。它类似于文件系统中的文件夹,帮助你在同一个数据库中分类存储不同的对象,避免命名冲突,并实现权限隔离。

(1)创建模式

在当前读postgres 中创建名为hr 的模式

postgres=# create schema hr;

(2)默认模式

PostgreSQL 每个数据库都有一个默认模式 public。如果创建对象(表、视图等)时不指定模式,默认会放在public 模式中。

通过 search_path 参数可以设置模式的搜索优先级(类似 PATH 环境变量):

postgres=# show search_path 
postgres-# ;search_path   
-----------------"$user", public
(1 row)

search_path用于控制对象解析顺序,避免每次查询都要写模式名

$user,public 表示优先查找当前用户同名模式,再找public 模式。

(3)删除模式

删除空模式

postgres=# drop schema hr;

强制删除模式及其所有对象

postgres=# drop schema hr cascade;

(4)查看所用模式

元命令列出当前库中所有模式

postgres=# \dnList of schemasName  |       Owner       
--------+-------------------hr     | postgrespublic | pg_database_owner
(2 rows)

SQL 查询,列出当前库中所有模式

postgres=# select schema_name from information_schema.schemata;schema_name     
--------------------publichrinformation_schemapg_catalogpg_toast
(5 rows)

(5)在指定模式中创建表

未指定模式时,创建的对象(表,视图等)会按search_path 顺序创建到第一个可用的模式中

在postgres库中的hr 模式下创建一个名为employees的表

postgres=# create table hr.employees(id serial primary key,name text);

(6)切换当前模式

切换模式也就是调整 search path的搜索范围

切换到单个schema 

set search_path to new_schema;

切换到多个schema (按优先级顺序)

set search_path to hr,public;#表示优先搜索 hr 模式,其次 public

(7)查看当前所在schema

postgres=# select current_schema();current_schema 
----------------public
(1 row)

(8)查看搜索路径(Search Path)

postgres=# show search_path;search_path   
-----------------"$user", public
(1 row)

(9)PostgreSQL 的模式隔离性

PostgreSQL 的模式是数据库内的逻辑分组,不同模式可以存在同名表。这也是和 mysql 的不同之处。

跨模式查询需显式指定模式名(如 schema1.users),或通过 search_path 设置默认模式。

无需切换数据库连接,所有操作在同一数据库内完成。

1.创建一个数据库

创建数据库mydb

postgres=# create database mydb;#创建数据库mydbpostgres=# \c mydb#切换到mydb
mydb=# 
2.在数据库中创建两个模式
create schema sc1;
create schema sc2;#创建模式 sc1 和 sc2 
3.在每个模式中创建同名表,并插入数据
#在sc1 中创建users 表
create table sc1.users(id int);
insert into sc1.users valuer(1);#在sc2 中创建users 表
create table sc2.users(id int);
insert into sc2.users values(2);
4.跨模式查询

查询sc1.users 和sc2.users (需显式指定模式名)

select * from sc1.users;
select * from sc2.users;

设置search_path 切换默认模式(不需显式指定模式名)

set search_path to sc1;
select * from users;    #默认访问sc1.users
set search_path to sc2;
select * from users;    #默认访问sc2.users
set search_path to sc2,sc1;#也可以设置两个,会按顺序访问
select * from users;

5、数据操作

(1)添加数据

在postgres 库,新建表test

create table test(id int,name char(10),age int);insert into test values(1,'zhangsan',18);

(2)查询数据

postgres=# select * from test;id |    name    | age 
----+------------+-----1 | zhangsan   |  18
(1 row)

(3)修改数据

postgres=# update test set age=20 where id=1;postgres=# select * from test;id |    name    | age 
----+------------+-----1 | zhangsan   |  20
(1 row)

(4)删除数据

postgres=# delete from test where id=1;postgres=# select * from test;id | name | age 
----+------+-----
(0 rows)

6、备份与恢复

PostgreSq 数据库应当被定期地备份。虽然过程相当简单,但清晰地理解其底层技术和假设是非常重要的。

有三种不同的基本方法来备份 PostgreSQL 数据:

  • SQL 转储
  • 文件系统级备份
  • 连续归档

每一种都有其优缺点,我们主要以 SQL 转储为主。

(1)SQL 转储

SQL 转储方法的思想是创建一个由 SQL 命令组成的文件,当把这个文件回馈给服务器时,服务器将利用其中的SQL命令重建与转储时状态一样的数据库。 PostgreSQL为此提供了工具pg_dump。这个工具的基本用法是:

pg_dump dbname > dumpfile

[postgres@bogon ~]$ pg_dump mydb > mybak2

正如你所见,pg_dump 把结果输出到标准输出。我们后面将看到这样做有什么用处。 尽管上述命令会创建一个文本文件,pg_dump 可以用其他格式创建文件以支持并行 和细粒度的对象恢复控制。

pg_dump 是一个普通的 PostgreSQl, 客户端应用(尽管是个 相当聪明的东西)。这就意味着你可以在任何可以访问该数据库的远端主机上进行备份工作。但是请记住 pg_dump不会以任何特殊权限运行。具体说来,就是它必须要有你想备份的表的读 权限,因此为了备份整个数据库你几乎总是必须以一个数据库超级用户来运行它(如果你没有足够的特权 来备份整个数据库,你仍然可以使用诸如 -n schema 或-t table 选项来备份该数据库中你能够访问的部分)。

要声明pg_dump连接哪个数据库服务器,使用命令行选项-h host和 -p port。默认主机是本地主机或你的 PGHOST 环境变量指定的主机。 类似地,默认端口是环境变量 PGPORT 或(如果PGPORT 不存在)内建的默认值。(服务器通常有相同的默认值,所以还算方便。)

和任何其他 PostgreSQL 客户端应用一样,pg_dump 默认使用与当前操作系统用户名同名的数据库用户名进行连接。要使用其他名字,要么声明 -U 选项,要么设置环境变量 PGUSER。请注意 pg_dump 的连接也要通过客户认证机制。

pg_dump 对于其他备份方法的一个重要优势是,pg_dump 的输出可以很容易地在新版本的PostgreSQL 中载入,而文件级备份和连续归档都是极度的服务器版本限定的。pg_dump也是唯一可以将一个数据库传送到一个不同机器架构上的方法,例如从一个 32位服务器到一个 64 位服务器。

由 pg_dump 创建的备份在内部是一致的,也就是说,转储表现了 pg_dump开始运行时刻的数据库快照,且在 pg_dump 运行过程中发生的更新将不会被转储。pg_dump 工作的时候并不阻塞其他的对数据库的操作。(但是会阻塞那些需要排它锁的操作,比如大部分形式的 ALTER TABLE)

(2)从转储中恢复

pg_dump 生成的文本文件可以由 psql 程序读取。

从转储中恢复的常用命令是:

psql dbname < dumpfile

[postgres@bogon ~]$ psql mydb < mybak2

其中 dumpfile 就是 pg_dump 命令的输出文件。这条命令不会创建数据库dbname,你必须在执行 psql 前自己从 template0 创建(例如,用命令 createdb -T template0 dbname)。psql 支持类似pg_dump 的选项用以指定要连接的数据库服务器和要使用的用户名。参阅psql的手册获取更多信息。非文本文件转储可以使用 pg_restore 工具来恢复。

在开始恢复之前,转储库中对象的拥有者以及在其上被授予了权限的用户必须已经存在。如果它们不存在,那么恢复过程将无法将对象创建成具有原来的所属关系以及权限(有时候这就是你所需要的,但通常不是)。

默认情况下,psql 脚本在遇到一个 SQL,错误后会继续执行。你也许希望在遇到一个 SQL, 错误后让 psql 退出,那么可以设置 ON_ERROR_STOP 变量来运行 psql,这将使 psql 在遇到 SQL 错误后退出并返回状态 3:

psql --set ON_ERROR_STOP=on dbname < infile

不管怎样,你将只能得到一个部分恢复的数据库。作为另一种选择,你可以指定让整个恢复作为一个单独的事务运行,这样恢复要么完全完成要么完全回滚这种模式可以通过向 psql 传递-l 或--single-transaction 命令行选项来指定。在使用这种模式时,注意即使是很小的一个错误也会导致运行了数小时的恢复被回滚。但是,这仍然比在一个部分恢复后手工清理复杂的数据库要更好。

pg_dump 和 psql 读写管道的能力使得直接从一个服务器转储一个数据库到另一个服务器成为可能,例如:

pg_dump -h host1 dbname | psql -h host2 dbname

注意:

pg_dump 产生的转储是相对于 template0。这意味着在 templatel 中加入的任何语言、过程等都会被 pg dump 转储。结果是,如果在恢复时使用的是一个自定义的 template1,你必须从 template0 创建一个空的数据库,正如上面的例子所示。 

一旦完成恢复,在每个数据库上运行ANALYZE是明智的举动,这样优化器就有有用的统计数据了。

(3)使用pg_dumpall

pg_dump 每次只转储一个数据库,而且它不会转储关于角色或表空间(因为它们是集簇范围的)的信息。为了支持方便地转储一个数据库集簇的全部内容,提供了 pg_dumpal1程序。pg_dumpall 备份一个给定集簇中的每一个数据库,并且也保留了集簇范围的数据,如角色和表空间定义。该命令的基本用法是:

pg_dumpall > dumpfile

转储的结果可以使用psql恢复:

psql -f dumpfile postgres

实际上,你可以指定恢复到任何已有数据库名,但是如果你正在将转储载入到一个空集簇中则通常要用(postgres)。在恢复一个pg dumpall 转储时常常需要具有数据库超级用户访问权限,因为它需要恢复角色和表空间信息。如果你在使用表空间,请确保转储中的表空间路径适合于新的安装。

pg_dumpall 工作时会发出命令重新创建角色、表空间和空数据库,接着为每一个数据库 pg dump。这意味着每个数据库自身是一致的,但是不同数据库的快照并不同步。

集簇范围的数据可以使用 pg_dumpall 的 --globals-only 选项来单独转储。如果在单个数据库上运行 pg_dump 命令,上述做法对于完全备份整个集簇是必需的。

7、远程连接

(1)修改PostgreSQL 监听地址

默认 PostgreSQL 监听的地址是 127.0.0.1,别的机器无法远程连接上,所以需要调整,修改postgresql.conf 文件。

通过dnf 安装的pgsql 配置文件在

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

通过源码编译安装的pgsql 配置文件在

/usr/local/pgsql/data/postgresql.conf

下面操作以源码编译为例:

更改第60行,取消注释并把localhost 改成*

vim /usr/local/pgsql/data/postgresql.conflisten_addressess = '*' 

重启服务

pg_ctl -D /usr/local/pgsql/data/ -l logfile restart

(2)配置访问权限

默认是只能本地访问 PostgreSQ 的,我们需要在 pg_hba.conf 里面配置

找到IPv4 local connections 这一行,在这一行下面添加

vim /usr/local/pgsql/data/pg_hba.conf host    all             all             0.0.0.0/0               trust	
  • host:这指定了连接类型。host 表示该规则适用于通过 TCP/IP 进行的远程连接。如果是本地连接,通常会使用 local。
  • all:这定义了哪些数据库可以接受这个规则。all 表示这个规则适用于所有数据库。你也可以指定特定的数据库名,例如mydatabase。
  • all:这定义了哪些用户可以接受这个规则。all 表示这个规则适用于所有用户。你也可以指定特定的用户名,例如myuser。
  • 0.0.0.0/0:这定义了哪些客户端P地址或 IP 地址范围可以接受这个规则。0.0.0.0/0 是一个特殊的 CIDR 表示法,它表示任何 IP 地址(即没有 IP 地址限制)。你也可以指定具体的IP地址,如192.168.1.100,或者 IP 地址范围,如 192.168.1.0/24。
  • trust:这定义了认证方法。trust表示不需要密码或其他任何形式的认证,客户端可以直接连接。这通常只在本地或受信任的网络环境中使用,因为它允许任何人无需认证即可访问数据库。请注意,使用 trust 认证方法允许任何 IP 地址连接到你的数据库,而不需要任何认证,这是非常不安全的。这通常只在开发或测试环境中使用,并且应该始终确保数据库服务器不暴露在不受信任的网络中在生产环境中,你应该使用更安全的认证方法,如md5或password(对于较新版本的 PostgreSQL,建议使用 scram-sha-256)。

如果不是设置的trust,而是选择了md5或password之类的,需要有密码才行,配置 PostgreSQL密码流程如下

postgres=# alter user postgres with password 'pwd123';

(3)重启服务

[postgres@bogon ~]$ pg_ctl -D /usr/local/pgsql/data/ -l logfile restart

(4)验证远程连接

使用其它主机远程连接本机数据库,设置的是trust,无密码,可直接登录

[postgres@bogon ~]$ psql -h 192.168.10.101
psql (15.4)
Type "help" for help.postgres=# 

如果设置的是md5 或password之类的需要有密码才行

[postgres@bogon ~]$ psql -h 192.168.10.101
Password for user postgres: 
psql (15.4)
Type "help" for help.postgres=# 

8、重置密码

在PostgreSQL 中如果密码忘记了怎么重置密码

(1)修改配置文件

修改配置文件以信任本地连接不需要密码。将配置文件中的 scram-sha-256 或者 md5 修改为 trust

vim /usr/local/pgsql/data/pg_hba.conf 
# IPv4 local connections;host    all             all             0.0.0.0/0               trust	#可以选择添加或者直接修改

(2)重启

[postgres@bogon ~]$ pg_ctl -D /usr/local/pgsql/data/ -l logfile restart

(3)修改密码

登录数据库修改密码,密码自定义

postgres=# alter user postgres with password '123456';

(4)恢复pg_hba.conf配置文件

修改完密码后将pg_hba.conf 配置文件改回原本的内容,或者注释掉也行。

相关文章:

PostgreSQL 日常维护

目录 一、基本使用 1、登录数据库 2、数据库操作 &#xff08;1&#xff09;列出库 &#xff08;2&#xff09;创建库 &#xff08;3&#xff09;删除库 &#xff08;4&#xff09;切换库 &#xff08;5&#xff09;查看库大小 3、数据表操作 &#xff08;1&#xff…...

Ntfs!ATTRIBUTE_RECORD_HEADER结构$INDEX_ROOT=0x90的一个例子

Ntfs!ATTRIBUTE_RECORD_HEADER结构$INDEX_ROOT0x90的一个例子 1: kd> dx -id 0,0,899a2278 -r1 ((Ntfs!_FILE_RECORD_SEGMENT_HEADER *)0xc431a400) ((Ntfs!_FILE_RECORD_SEGMENT_HEADER *)0xc431a400) : 0xc431a400 [Type: _FILE_RECORD_SEGMENT_HEADER …...

leetcode hot100刷题日记——7.最大子数组和

class Solution { public:int maxSubArray(vector<int>& nums) {//方法一&#xff1a;动态规划//dp[i]表示以i下标结尾的数组的最大子数组和//那么在i0时&#xff0c;dp[0]nums[0]//之后要考虑的就是我们要不要把下一个数加进来&#xff0c;如果下一个数加进来会使结…...

LlamaIndex

1、大语言模型开发框架的价值是什么? SDK:Software Development Kit,它是一组软件工具和资源的集合,旨在帮助开发者创建、测试、部署和维护应用程序或软件。 所有开发框架(SDK)的核心价值,都是降低开发、维护成本。 大语言模型开发框架的价值,是让开发者可以更方便地…...

下一代电子电气架构(EEA)的关键技术

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

CSDN gitcode代码推送

当我使用用户名密码时一直无法推送&#xff0c;报下面这个错误 找了半天才知道&#xff0c; 他这个git不能用账号密码推送代码&#xff0c;idea弹出来的用户名&#xff0c;就是你头像旁边这个&#xff0c;没有符号 密码需要你创建一个令牌 这个令牌才是你要填写的密码&#x…...

中级统计师-统计学基础知识-第五章 相关分析

第一节 相关关系 1. 函数关系 vs 相关关系 函数关系 定义&#xff1a;变量间存在严格确定性的对应关系&#xff08;如 y f ( x ) y f(x) yf(x)&#xff09;例子&#xff1a;本金 x x x 与利息收入 y x 0.027 x y x 0.027x yx0.027x特点&#xff1a;一一对应&#xff…...

OpenCV CUDA模块图像过滤------用于创建一个最大值盒式滤波器(Max Box Filter)函数createBoxMaxFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 createBoxMaxFilter()函数创建的是一个 最大值滤波器&#xff08;Maximum Filter&#xff09;&#xff0c;它对图像中每个像素邻域内的像素值取最…...

OpenCv高阶(十五)——EigenFace人脸识别

文章目录 前言一、EigenFace人脸识别原理二、EigenFace人脸识别代码1、导入OpenCV和NumPy库2、数据加载与预处理部分3、创建与训练EigenFace模型部分4、预测与结果输出部分5、可视化部分&#xff1a;在测试图像上叠加识别结果 总结 前言 人脸识别作为生物特征识别技术的重要分…...

Linux系统下nslookup命令的基本使用

Linux系统下 nslookup命令的基本使用 引言一、nslookup介绍二、使用帮助三、 基本使用方法1. 查询域名对应的IP地址2. 查询特定的DNS记录类型3. 使用特定的DNS服务器进行查询4. 交互模式 四、注意事项五、总结 引言 在网络管理中&#xff0c;DNS&#xff08;域名系统&#xff…...

【笔记】PyCharm 中创建Poetry解释器

#工作记录 在使用 PyCharm 进行 Python 项目开发时&#xff0c;为项目配置合适的 Python 解释器至关重要。Poetry 作为一款强大的依赖管理和打包工具&#xff0c;能帮助我们更便捷地管理项目的依赖项与虚拟环境。下面将详细记录在 PyCharm 中创建 Poetry 解释器的步骤。 前提条…...

Qwen 3技术报告详细解读

近日&#xff0c;Qwen 3系列大模型正式发布&#xff0c;涵盖从0.6B到235B参数的多个规模版本&#xff0c;包括6个Dense模型和2个混合专家&#xff08;MoE&#xff09;模型。本文将从模型架构、预训练策略、后训练优化等方面进行全面解读&#xff0c;帮助读者深入理解Qwen 3的技…...

leetcode 螺旋矩阵 java

官方还得是官方&#xff01; class Solution {public List<Integer> spiralOrder(int[][] matrix) {int l 0, r matrix[0].length - 1;int t 0, b matrix.length - 1;int x 0;List<Integer> res new ArrayList<>();while (true) {for (int i l; i …...

Spring Boot 项目中 Redis 存储 Session 对象序列化处理

目录 一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1 添加依赖2.2 配置 Redis 三、自定义序列化和反序列化3.1 创建序列化配置类3.2 测试序列化和反序列化 四、其他序列化方式4.1 使用 JdkSerializationRedisSerializer4.2 使用 StringRedisSerializer 五…...

军工与航空航天特种PCB精密制造:猎板如何定义行业技术新标准?

一、军工与航空航天PCB的极限挑战 在低轨卫星载荷、战机航电系统等场景中&#xff0c;特种PCB需同时满足三大核心指标&#xff1a; ​​极端环境耐受性​​&#xff1a;工作温度横跨-55℃至200℃&#xff0c;承受20G机械振动与100krad辐射剂量&#xff0c;盐雾腐蚀测试超过50…...

springboot+vue实现鲜花商城系统源码(带用户协同过滤个性化推荐算法)

今天教大家如何设计一个 鲜花商城 , 基于目前主流的技术&#xff1a;前端vue3&#xff0c;后端springboot。学习完这个项目&#xff0c;你将来找工作开发实际项目都会又很大帮助。文章最后部分还带来的项目的部署教程。 系统有着基于用户的协同过滤推荐算法&#xff0c;还有保证…...

MyBatis 关联映射与多表查询实战教程

一、关联查询基础 1. 连接类型与选择 LEFT JOIN(左连接)SELECT u.*, r.role_name FROM User u LEFT JOIN user_role ur ON u.id = ur.uid LEFT JOIN Role r ON ur.rid = r.id;- **规则**:以左表为主,保留左表所有记录,右表无匹配时填充`NULL`。 - **场景**:查询主体…...

【AI流程应用】智能知识库搭建与实战应用

JeecgBoot 平台的 AIGC 功能模块&#xff0c;是一套类似 Dify 的 AIGC应用开发平台 知识库问答 子系统&#xff0c;是一款基于 LLM 大语言模型 AI 应用平台和 RAG 的知识库问答系统。 其直观的界面结合了 AI 流程编排、RAG 管道、知识库管理、模型管理、对接向量库、实时运行可…...

微店平台店铺商品接口开发指南

微店API获取店铺所有商品实现方案 以下是使用微店开放平台API获取店铺所有商品的完整实现代码&#xff0c;包含请求封装、分页处理和错误处理机制。 点击获取key和secret from weidian_api import WeidianAPI # 配置你的微店应用凭证 APP_KEY "your_app_key" APP_…...

springboot3+vue3融合项目实战-大事件文章管理系统-更新文章分类和增加文章分类优化-分组校验

因为我们之前在category实体类里面增加了notnull注解&#xff0c;而之前新增文章分类模块新增文章是不需要id的&#xff0c;而id是由数据库自动分配的&#xff0c;这就导致不能新增文章了&#xff0c;所以我们要进行分组校验 思路如下&#xff1a; 我们更改category代码&…...

Vue.js教学第九章:Vue动态与异步组件,高效开发全攻略

Vue 组件的动态与异步:探索高效开发路径 在 Vue.js 开发领域中,组件的动态与异步加载机制是构建复杂且高性能前端应用的关键策略。本研究深入探究 Vue 中动态组件与异步组件的原理、用法及性能优化实践,旨在为开发者提供全面且深入的技术指引,助力其在实际项目中高效运用。…...

CVE-2018-1270源码分析与漏洞复现(spring-messaging 表达式注入)

漏洞概述 CVE-2018-1270 是 Spring 框架中的一个高危远程代码执行&#xff08;RCE&#xff09;漏洞&#xff0c;影响版本为 Spring Framework 5.0–5.0.4 和 4.3–4.3.14。攻击者通过构造包含恶意 SpEL&#xff08;Spring Expression Language&#xff09;表达式的 STOMP&…...

DevOps学习回顾03-ops三部曲之配置管理(CM)

快速回顾 Ops 中配置管理的一些常见的方式&#xff0c;以及一些配置文件常见的组织形式 参考来源 极客时间-全栈工程师修炼指南-OPS三部曲之配置管理 什么是配置管理&#xff1f;–IBM 五大最流行的配置管理工具 为啥需要配置管理&#xff1f; CM 的主要目标是控制复杂系统…...

二进制编码、定点数与浮点数

1. 二进制编码 1.1. 字符串的表示&#xff0c;从编码到数字 不仅数值可以用二进制表示&#xff0c;字符乃至更多的信息都能用二进制表示。最典型的例子就是字符串&#xff08;Character String&#xff09;。最早计算机只需要使用英文字符&#xff0c;加上数字和一些特殊符号…...

CentOS:搭建国内软件repository,以实现自动yum网络安装

centosgit仓库_寂寞沙冷州的技术博客_51CTO博客 yum 很慢 centos yum安装慢_mob64ca1417b0c6的技术博客_51CTO博客 yum配置&#xff0c;文件&#xff0c;命令详解-CSDN博客 yum仓库简介_yum库是什么-CSDN博客 rootwww:/etc/yum.repos.d# pwd /etc/yum.repos.d ###创建下面这个.…...

C# AOP编程

AOP(面向切片编程的概念我这里就不介绍了&#xff0c;这里先介绍一下C#中的AOP编程框架。 1.AOP的分类 .net下支持AOP的框架很多&#xff0c;搜了一下有&#xff1a;PostSharp、AspectInjector、Fody 、Castle Windsor、Spring.NET、Ninject、Unity等&#xff0c;实现的方式主要…...

【Element UI排序】JavaScript 的表格排序sortable=“custom“和 @sort-change

目录 一、elementUI排序功能实际案例二、 实例2三、 实例3 Sortable — 是一个 JavaScript 库&#xff0c;用于在现代浏览器和触摸设备上对拖放列表进行重新排序。 一、elementUI排序功能实际案例 表格每一项中加上sortable&#xff0c;可以展示排序的小图标。 在列中设置so…...

使用Jenkins部署nodejs前端项目

1. 安装node环境 1.1 下载 https://nodejs.org/zh-cn/download 1.2 解压到安装目录 tar -xJvf node-v22.15.1-linux-x64.tar.xz mv node-v22.15.1-linux-x64 /home/soft/ mv node-v22.15.1-linux-x64/ node22原本计划安装 node22和node18&#xff0c;但是CentOS7.9 GLIBCXX …...

阿里云域名 绑定 华为云服务器ip

阿里云&#xff08;万网&#xff09;域名转入华为云域名图文教程 上-云社区-华为云 阿里云&#xff08;万网&#xff09;域名转入华为云域名图文教程-云社区-华为云 在阿里云备案了域名&#xff0c;解析到华为云服务器&#xff0c;不在同一个服务商这样可以使用么&#xff1f…...

在局域网(LAN)中查看设备的 IP 地址

在局域网&#xff08;LAN&#xff09;中查看设备的 IP 地址&#xff0c;可以使用以下几种方法&#xff1a; 方法 1&#xff1a;使用 ipconfig&#xff08;Windows&#xff09; 1. 打开 CMD&#xff1a; 按 Win R&#xff0c;输入 cmd&#xff0c;回车。 2. 输入命令&#…...

第3周作业-1层隐藏层的神经网络分类二维数据

文章目录 ***1层隐藏层的神经网络分类二维数据***1. 导入包2. 数据集2.1 导入数据集2.2 查看数据集图案2.3 查看数据集维度 3. Logistic回归3.1 Logistic回归简介3.2 Logistic回归模型3.3 绘制边界 4. 神经网络模型4.1 神经网络简介4.2 神经网络数学模型4.3 建立神经网络方法4.…...

中天智能装备科技有限公司:智能仓储领域的卓越之选​

在仓储智能化转型的时代浪潮中&#xff0c;中天智能装备科技有限公司以深厚的技术积淀与创新实力&#xff0c;成为众多企业迈向高效仓储的理想合作伙伴。无论是自动化立体库的精准搭建&#xff0c;还是 AGV 系统的智能部署&#xff0c;中天都以专业姿态为行业树立标杆。​ 硬核…...

Linux nbd 网络块设备(2)-内核实现

Linux nbd网络块设备(2)-内核实现 关注我&#xff0c;一起学习吧&#xff0c;后续持续更新内核相关 1. 概述&#xff1a; 内核linux/drivers/block/nbd.c 是nbd 网络设备的底层驱动实现逻辑。本文主要介绍nbd 设备注册及I/O请求的处理逻辑。 2. nbd 设备的初始化&#xff1…...

Python输出与输入

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f439;今日诗词:吟怀未许老重阳&#xff0c;霜雪无端入鬓长&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; ⛳️点赞 ☀️收藏⭐️关注&#x1f4…...

【C语言】复习~数组和指针

数组和指针 1.字符指针 char* 使用方法一&#xff1a; 使用方法二&#xff1a; 这里本质上是把常量字符串的首地址放到了指针变量pstr里面 看下面的面试题 str3和str4指向的是同一个常量字符串&#xff0c;c/c会把常量字符串存储到一个单独的内存区域&#xff0c; 当几…...

rocketmq优先级控制 + 并发度控制

背景 最近在做大模型的项目&#xff0c;算法部门提供的文档解析接口&#xff0c; 并发度为1&#xff0c; 业务这边需要在ai问答和上传文档时进行解析和向量化&#xff0c;文档解析只能单线程跑&#xff0c;问答的文档解析需要高优先级处理。 采用 rocketmq 做文档上传和解析的…...

从0开始学linux韦东山教程第四章问题小结(2)

本人从0开始学习linux&#xff0c;使用的是韦东山的教程&#xff0c;在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。说实在的越看视频越感觉他讲的有点乱后续将以他的新版PDF手册为中心&#xff0c;视频作为辅助理解的工具。参考手册为嵌入式Linux应用开发…...

洛谷P1226 【模板】快速幂

题目来源 P1226 【模板】快速幂 - 洛谷 题目描述 给你三个整数 a,b,p&#xff0c;求 abmodp。 输入格式 输入只有一行三个整数&#xff0c;分别代表 a,b,p。 输出格式 输出一行一个字符串 a^b mod ps&#xff0c;其中 a,b,p 分别为题目给定的值&#xff0c; s 为运算结果…...

自动点焊机:在多类电池生产中筑牢质量与效率根基

在电池制造产业飞速发展的当下&#xff0c;焊接作为电池组装的关键环节&#xff0c;其质量与效率直接影响着电池的性能与安全性。自动点焊机凭借其高效、精准、稳定的特性&#xff0c;在电动工具电池、扭扭车电池、储能电池包、滑板车电池以及电动车电池等多个电池制造领域大放…...

信息系统项目管理师考前练习1

以下是结合《信息系统项目管理师教程》(第5版)核心考点和当前行业热点的20道选择题押题,涵盖重点知识和新兴趋势,供考前冲刺练习: 项目生命周期模型选择 在敏捷开发项目中,客户需求频繁变更,且团队希望快速交付最小可行产品(MVP),最适合采用的生命周期模型是: A. …...

C++ for QWidget:正则表达式和QRegExp

正则表达式 正则表达式&#xff0c;又称规则表达式&#xff0c;&#xff08;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;是计算机科学的一个概念。以下是对正则表达式的详细介绍&#xff1a; 一、定义与作用 正则表达式是一种文…...

day019-特殊符号、正则表达式与三剑客

文章目录 1. 磁盘空间不足-排查流程2. 李导推荐书籍2.1 大话存储2.2 性能之巅 3. 特殊符号3.1 引号系列&#xff08;面试题&#xff09;3.2 重定向符号3.2.1 cat与重定向3.2.2 tr命令&#xff1a;替换字符3.2.3 xargs&#xff1a;参数转换3.2.4 标准全量追加重定向 4. 正则表达…...

学习黑客了解5分钟了解中间人攻击(MITM)

5分钟了解中间人攻击&#xff08;MITM&#xff09;&#x1f575;️‍♂️ 什么是中间人攻击&#xff08;Man-in-the-Middle, MITM&#xff09;&#xff1f; 中间人攻击是一种网络攻击方式&#xff0c;攻击者悄无声息地“夹在”通信两端之间&#xff0c;偷偷读取、篡改、伪造或…...

亚马逊第四个机器人中心将如何降低30%配送成本?

近年来&#xff0c;亚马逊越来越依赖自动化技术来提升仓储效率和配送速度。2024年&#xff0c;亚马逊宣布其全球第四个机器人中心在美国正式投入运营&#xff0c;这一中心将成为改变供应链策略的新变量。据亚马逊官方消息&#xff0c;这一机器人中心有望帮助公司进一步削减运营…...

「AR智慧应急」新时代:当AR眼镜遇上智能监控,打造立体化应急指挥系统

引言&#xff1a;应急管理的未来已来 数字化浪潮正重塑应急管理领域。传统监控系统依赖固定屏幕、被动告警的短板&#xff0c;在复杂突发事件中暴露无遗。而AR眼镜视频监控管理平台应急应急管理平台的三维融合&#xff0c;正开启"上帝视角"指挥时代——通过虚实叠加…...

docker 启动一个python环境的项目

安装镜像 docker pull python:3.8-slim8902端口 启动容器 tail -f /dev/null 持续监听空文件&#xff0c;保持容器活跃 docker run -it \-p 8902:8902 \--name api_mock2 \-v /home/py/test:/app \-w /app \python:3.8-slim \tail -f /dev/null进入容器 docker exec -it api…...

Docker run命令-p参数详解

端口映射基础语法 docker run -p <宿主机端口>:<容器端口> 操作示例 docker run -d --restartalways --namespug -p 5000:80 registry.aliyuncs.com/openspug/spug参数解析 -d&#xff1a;后台运行容器--restartalways&#xff1a;设置容器自动重启--namespug&…...

vue3请求设置responseType: ‘blob‘,导致失败后获取不到返回信息

vue3请求设置responseType: ‘blob’,导致失败后获取不到返回信息 使用FileReader解决 dataCollect().downloadAll(data).then((res: any) > {if (res.type application/json) {const fileReader new FileReader();fileReader.readAsText(new Blob([res], { type: applica…...

在 Windows 系统部署对冲基金分析工具 ai-hedge-fund 的笔记

#工作记录 一、环境准备 在部署对冲基金分析工具ai-hedge-fund前&#xff0c;需提前安装好必备软件&#xff0c;为后续工作搭建好基础环境。 1. 安装 Anaconda Anaconda 集成了 Python 及众多科学计算库&#xff0c;是项目运行的重要基础。从Anaconda 官方网站下载适合 Win…...

基于python的机器学习(八)—— 评估算法(一)

目录 一、机器学习评估的基本概念 1.1 评估的定义与目标 1.2 常见评估指标 1.3 训练集、验证集与测试集的划分 二、分离数据集 2.1 分离训练数据集和评估数据集 2.2 k折交叉验证分离 2.3 弃一交叉验证分离 2.4 重复随机评估和训练数据集分离 三、交叉验证技术 3.…...