PostgreSQL使用
一、PostgreSQL语法
PostgreSQL表、模式、库三者之间的关系
库 -> 模式 -> 表、视图、函数等等对象。
在postgresql的交互式终端psql中,“\”开头的命令称为元命令(类似mysql的show语句),用于快速管理数据库。
常见元命令:
\1 列出所有数据库
\c [数据库名] 或 \connect [数据库名]
\dn 列出所有模式(Schema)
\? 显示pgsql命令的说明(元命令查询帮助)
\q 退出psql
\dt 列出当前数据库的所有表
\d [TABLE] 查看表结构
\du 列出所有用户
库和表相关命令
1.列出库
方法一:\l
方法二:\l+
方法三:select datname from pg_database;
# pg_database是系统表,存储了PostgreSQL实例中所有数据库的元信息(如数据库名称、所有者、编码等)。属于系统目录(system catalog):类似mysql的information_schema,但postgresql的系统目录更底层且直接存储在pg_catalog模式中。
# pg_database是系统目录表,所以无论当前连接到哪个数据库,该表始终可见,系统表默认属于pg_catalog模式,而pg_catalog始终位于搜索路径(search_path)的首位。因此,查询时无需显式指定模式(如 pg_catalog.pg_database)
2.创建库
create database 库名;
3.删除库
drop database 库名;
4.切换库
\c 库名;
5.查看库大小
方法一:以字节为单位返回数据库的大小
select pg_database_size('库名');
方法二:人性化返回数据库的大小(带k、m等等)
select pg_size_pretty(pg_database_size('库名'));
6.列出表
\dt; (显示search_path中模式里的表,默认public。)
\d (列出表,视图和序列。)
\d+ (列出表,视图和序列。)
\dt my_schema.* (列出指定模式下的表(例如 my_schema))
\dt *.* (查看当前数据库的所有表(包括系统表))
select * from pg_tables where schemaname='public'; (使用sql方式列出当前数据库中public模式下的所有表及其详细信息。)
7.创建表
create table tablename(字段1 类型,字段2 类型 ,… 字段n 类型);
8.复制表
create table new_table as table table_name;
9.删除表
drop table 表名;
10.查看表结构
\d 表名;
11.在指定模式中创建表
create table 模式名.表名(字段1 类型,字段2 类型 ,… 字段n 类型);
模式操作命令
1.创建模式
create schema 模式名;
2.显示搜索路径
show search_path;
3.删除模式
drop schema 模式名;
4.查看所有模式
\dn
select 列名 from 模式名.表名;
select schema_name from information_shcema.schemata;
schema_name是列名 information_schema是模式名 shcemata是表名
5.切换当前模式
切换到单个schema
set search_path to new_schema;
切换到多个schema(按优先级排序)
set search_path to 模式名1,模式名2;
6.查看当前所在schema
select current_schema();
7.查看搜索路径(search path)
show search_path;
数据操作相关
1.添加数据
insert into tablename values(value1,value2,…valuen);
2.查询数据
select * from tablename;
3.修改数据
update tablename set 字段=值 where 条件;
4.删除数据
delete from tablename where 条件;
PostgreSQL的三种备份方式
1.SQL转储
2.文件系统级备份
3.连续归档
SQL转储最常用
备份语法,使用pg_dump命令。(一次备份一个库。)
pg_dump dbname > dumpfile
pg_dump -h host1 dbname | psql -h host2 dbname # 从主机1转储到主机2
恢复语法,使用psql命令。
psql dbname < dumpfile
psql --set ON_ERROR_STOP=om dbname < infile # 遇到错误退出。
备份给定数据库集簇中的全部内容,使用pg_dumpall命令。
备份语法
pg_dumpall > dumpfile
恢复语法
psql -f dumpfile postgres
杂七杂八
配置密码
alter user username with password 'password';
远程连接
psql -h remoteip
二、PostgreSQL示例
列出库
postgres=# \lList of databasesName | Owner | Encoding | Collate | Ctype | ICU Locale | LocaleProvider | Access privileges
-----------+----------+----------+-------------+-------------+------------+-------
----------+-----------------------postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | | libc | template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | | libc | =c/postgres +| | | | | | | postgres=CTc/postgrestemplate1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | | libc | =c/postgres +| | | | | | | postgres=CTc/postgres
(3 rows)postgres=# \l+List of databasesName | Owner | Encoding | Collate | Ctype | ICU Locale | LocaleProvider | Access privileges | Size | Tablespace | Descript
ion
-----------+----------+----------+-------------+-------------+------------+-------
----------+-----------------------+---------+------------+------------------------
--------------------postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | | libc | | 7229 kB | pg_default | default administrative
connection databasetemplate0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | | libc | =c/postgres +| 7073 kB | pg_default | unmodifiable empty data
base| | | | | | | postgres=CTc/postgres | | | template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | | libc | =c/postgres +| 7153 kB | pg_default | default template for ne
w databases| | | | | | | postgres=CTc/postgres | | |
(3 rows)postgres=# select datname from pg_database;datname
-----------postgrestemplate1template0
(3 rows)创建、删除、切换库
postgres=# create database mydb;
CREATE DATABASE
postgres=# drop database mydb;
DROP DATABASE
postgres=# \c mydb
connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database "mydb" does not exist
Previous connection kept
postgres=# create database mydb;
CREATE DATABASE
postgres=# \c mydb
You are now connected to database "mydb" as user "postgres".查看库大小
mydb=# select pg_database_size('mydb');pg_database_size
------------------7484207
(1 row)mydb=# select pg_size_pretty(pg_database_size('mydb'));pg_size_pretty
----------------7309 kB
(1 row)列出表
mydb=# create table aaa (id int,name varchar);
CREATE TABLE
mydb=# \dt;List of relationsSchema | Name | Type | Owner
--------+------+-------+----------public | aaa | table | postgres
(1 row)mydb=# \dList of relationsSchema | Name | Type | Owner
--------+------+-------+----------public | aaa | table | postgres
(1 row)mydb=# \d+List of relationsSchema | Name | Type | Owner | Persistence | Access method | Size | Des
cription
--------+------+-------+----------+-------------+---------------+------------+----
---------public | aaa | table | postgres | permanent | heap | 8192 bytes |
(1 row)mydb=# dt my_schema.*
mydb-# ;
ERROR: syntax error at or near "dt"
LINE 1: dt my_schema.*^
mydb=# dt *.*
mydb-# ;
ERROR: syntax error at or near "dt"
LINE 1: dt *.*^
mydb=# \dt *.*;List of relationsSchema | Name | Type | Owner
--------------------+--------------------------+-------------+----------information_schema | sql_features | table | postgresinformation_schema | sql_implementation_info | table | postgresinformation_schema | sql_parts | table | postgresinformation_schema | sql_sizing | table | postgrespg_catalog | pg_aggregate | table | postgrespg_catalog | pg_am | table | postgrespg_catalog | pg_amop | table | postgrespg_catalog | pg_amproc | table | postgrespg_catalog | pg_attrdef | table | postgrespg_catalog | pg_attribute | table | postgrespg_catalog | pg_auth_members | table | postgrespg_catalog | pg_authid | table | postgrespg_catalog | pg_cast | table | postgrespg_catalog | pg_class | table | postgrespg_catalog | pg_collation | table | postgrespg_catalog | pg_constraint | table | postgrespg_catalog | pg_conversion | table | postgrespg_catalog | pg_database | table | postgrespg_catalog | pg_db_role_setting | table | postgrespg_catalog | pg_default_acl | table | postgrespg_catalog | pg_depend | table | postgrespg_catalog | pg_description | table | postgrespg_catalog | pg_enum | table | postgrespg_catalog | pg_event_trigger | table | postgrespg_catalog | pg_extension | table | postgrespg_catalog | pg_foreign_data_wrapper | table | postgrespg_catalog | pg_foreign_server | table | postgrespg_catalog | pg_foreign_table | table | postgrespg_catalog | pg_index | table | postgrespg_catalog | pg_inherits | table | postgrespg_catalog | pg_init_privs | table | postgrespg_catalog | pg_language | table | postgrespg_catalog | pg_largeobject | table | postgrespg_catalog | pg_largeobject_metadata | table | postgrespg_catalog | pg_namespace | table | postgres
mydb=# \dt my_schema.*;
Did not find any relation named "my_schema.*".
mydb=# select * from pg_tables where schemaname='public';schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastri
ggers | rowsecurity
------------+-----------+------------+------------+------------+----------+-------
------+-------------public | aaa | postgres | | f | f | f | f
(1 row)创建表
mydb=# create table test(id int,name char(10),age int);
CREATE TABLE
mydb=# create table test2 as table test;
SELECT 0
mydb=# \dt;List of relationsSchema | Name | Type | Owner
--------+-------+-------+----------public | aaa | table | postgrespublic | test | table | postgrespublic | test2 | table | postgres
(3 rows)删除表
mydb=# drop table test2;
DROP TABLE
mydb=# \dt;List of relationsSchema | Name | Type | Owner
--------+------+-------+----------public | aaa | table | postgrespublic | test | table | postgres
(2 rows)查看表结构
mydb=# \d test;Table "public.test"Column | Type | Collation | Nullable | Default
--------+---------------+-----------+----------+---------id | integer | | | name | character(10) | | | age | integer | | | 创建模式
mydb=# \c postgres;
You are now connected to database "postgres" as user "postgres".
postgres=# create schema hr;
CREATE SCHEMA查看默认模式
postgres=# show search_path;search_path
-----------------"$user", public
(1 row)删除模式、查看所有模式
postgres=# drop schema hr;;
DROP SCHEMA
postgres=# drop schema hr cascade;
ERROR: schema "hr" does not exist
postgres=# create schema hr;
CREATE SCHEMA
postgres=# drop schema hr cascade;
DROP SCHEMA
postgres=# \dn;List of schemasName | Owner
--------+-------------------public | pg_database_owner
(1 row)postgres=# select schema_name from information_schema.schemata;schema_name
--------------------information_schemapg_catalogpg_toastpublic
(4 rows)在指定模式中创建表、查看当前模式、查看当前所在shcema、查看搜索路径
postgres=# create schema hr;
CREATE SCHEMA
postgres=# create table hr.employees (id serial primary key,name text);
CREATE TABLE
postgres=# set search_path to hr;
SET
postgres=# set search_path to hr,public;
SET
postgres=# select current_schema();current_schema
----------------hr
(1 row)postgres=# show search_path;search_path
-------------hr, public
(1 row)PostgreSQL模式隔离性
postgres=# create database mydb; # 创建数据库test
ERROR: database "mydb" already exists
postgres=# \c mydb # 使用test库。
You are now connected to database "mydb" as user "postgres".
mydb=# create schema schema1; # 创建模式1.
CREATE SCHEMA
mydb=# create schema schema2; # 创建模式2.
CREATE SCHEMA
mydb=# create table shcema1.users (id int);
ERROR: schema "shcema1" does not exist
LINE 1: create table shcema1.users (id int);^
mydb=# create table schema1.users (id int); # 在模式1创建users表
CREATE TABLE
mydb=# insert into schema1.users values(1); # 向模式1的users表插入数据1.
INSERT 0 1
mydb=# create table schema2.users (id int); # 在模式2创建users表
CREATE TABLE
mydb=# insert into schema2.users values(2); # 向模式2的users表插入数据2.
INSERT 0 1
mydb=# select * from schema1.users; # 显式指定模式名来查询模式1的users表数据。id
----1
(1 row)mydb=# select * from schema2.users; # 显式指定模式名来查询模式2的users表数据。id
----2
(1 row)mydb=# set search_path to schema1; # 设置搜索路径为模式1,查询时无需显式指定模式名。
SET
mydb=# select * from users;id
----1
(1 row)mydb=# set search_path to schema2; # 设置搜索路径为模式2,查询时无需显式指定模式名。
SET
mydb=# select * from users;id
----2
(1 row)数据操作相关
postgres=# create table test(id int,name char(10),age int);
CREATE TABLE
postgres=# insert into test values(1,'zhangsan',18);
INSERT 0 1
postgres=# select * from test;id | name | age
----+------------+-----1 | zhangsan | 18
(1 row)postgres=# update test set age=20 where id=1;
UPDATE 1
postgres=# select * from test;id | name | age
----+------------+-----1 | zhangsan | 20
(1 row)postgres=# delete from test where id=1;
DELETE 1
postgres=# select * from test;id | name | age
----+------+-----
(0 rows)备份相关sql转储单个库及恢复
转储
postgres=# create database my_db;
CREATE DATABASE
postgres=# \c my_db
You are now connected to database "my_db" as user "postgres".
my_db=# create schema s1;
CREATE SCHEMA
my_db=# create schema s2;
CREATE SCHEMA
my_db=# create table s1.a(id int)
my_db-# ;
CREATE TABLE
my_db=# create table s2.a(id int);
CREATE TABLE
my_db=# insert into s1.a values(1);
INSERT 0 1
my_db=# insert into s2.a values(2);
INSERT 0 1
my_db=# select * from s1.a;id
----1
(1 row)my_db=# select * from s2.a;id
----2
(1 row)my_db=# exit;
[postgres@localhost ~]$ pg_dump my_db > aaa # 备份my_db库到aaa文件中
[postgres@localhost ~]$ ls
aaa logfile
[postgres@localhost ~]$ cat aaa # 查看备份信息
--
-- PostgreSQL database dump
---- Dumped from database version 15.4
-- Dumped by pg_dump version 15.4SET statement_timeout = 0;
SET lock_timeout = 0;
…略
通过查看备份文件内的信息,发现这是该文件内容是由一些sql命令组合而成的。恢复
postgres=# drop database my_db;
DROP DATABASE[postgres@localhost ~]$ psql my_db < aaa
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database "my_db" does not existpostgres=# create database my_db;
CREATE DATABASEpostgres=# exit[postgres@localhost ~]$ psql my_db < aaa
SET
SET
SET
SET
SETset_config
------------(1 row)SET
SET
SET
SET
CREATE SCHEMA
ALTER SCHEMA
CREATE SCHEMA
ALTER SCHEMA
SET
SET
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
COPY 1
COPY 1[postgres@localhost ~]$ psql
psql (15.4)
Type "help" for help.postgres=# \c my_db
You are now connected to database "my_db" as user "postgres".my_db=# \dt
Did not find any relations.my_db=# select * from s1.a;id
----1
(1 row)my_db=# select * from s2.a;id
----2
(1 row)已经恢复过后,如果重复恢复会报错。报错信息如下:
[postgres@localhost ~]$ psql my_db < aaa
SET
SET
SET
SET
SETset_config
------------(1 row)SET
SET
SET
SET
ERROR: schema "s1" already exists
ALTER SCHEMA
ERROR: schema "s2" already exists
ALTER SCHEMA
SET
SET
ERROR: relation "a" already exists
ALTER TABLE
ERROR: relation "a" already exists
ALTER TABLE
COPY 1
COPY 1在默认情况下,psql的脚本即使遇到一个sql错误也会继续执行。如果想让遇到一个sql错误后直接退出该脚本,可以在恢复时手动设置参数ON_ERROR_STOP=on。
[postgres@localhost ~]$ psql --set ON_ERROR_STOP=on my_db < aaa
SET
SET
SET
SET
SETset_config
------------(1 row)SET
SET
SET
SET
ERROR: schema "s1" already exists转储一个数据库集簇的全部内容。准备数据
postgres=# create database aaa;
CREATE DATABASE
postgres=# \c aaaaaa=# create table q(id int);
CREATE TABLEaaa=# create schema c1;
CREATE SCHEMA
aaa=# create schema c2;aaa=# create table c1.q(id int);
CREATE TABLE
aaa=# create table c2.q(id int);aaa=# insert into q values(1);
INSERT 0 1
aaa=# select * from q;id
----1
(1 row)aaa=# insert into c1.q values(2);
INSERT 0 1aaa=# insert into c2.q values(3);
INSERT 0 1aaa=# select * from c1.q;id
----2
(1 row)aaa=# select * from c2.q;id
----3
(1 row)postgres=# select datname from pg_database;datname
-----------postgrestemplate1template0my_dbaaa
(5 rows)备份
[postgres@localhost ~]$ pg_dumpall > bbb
[postgres@localhost ~]$ cat bbb
--
-- PostgreSQL database cluster dump
--SET default_transaction_read_only = off;
…略模拟误删除
postgres=# drop database my_db;
DROP DATABASE
postgres=# drop database aaa;
DROP DATABASE
postgres=# select datname from pg_database;datname
-----------postgrestemplate1template0
(3 rows)恢复
[postgres@localhost ~]$ psql -f bbb # 这里面有两个库,如果只想恢复一个,指定库名即可。
SET
SET
SET
psql:bbb:14: ERROR: role "postgres" already exists
ALTER ROLE
You are now connected to database "template1" as user "postgres".
SET
SET
SET
SET
SETset_config
------------(1 row)SET
SET
SET
SET
SET
SET
SET
SET
SETset_config
------------(1 row)SET
SET
SET
SET
CREATE DATABASE
ALTER DATABASE
You are now connected to database "aaa" as user "postgres".
SET
SET
SET
SET
SETset_config
------------(1 row)SET
SET
SET
SET
CREATE SCHEMA
ALTER SCHEMA
CREATE SCHEMA
ALTER SCHEMA
SET
SET
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
COPY 1
COPY 1
COPY 1
SET
SET
SET
SET
SETset_config
------------(1 row)SET
SET
SET
SET
CREATE DATABASE
ALTER DATABASE
You are now connected to database "my_db" as user "postgres".
SET
SET
SET
SET
SETset_config
------------(1 row)SET
SET
SET
SET
CREATE SCHEMA
ALTER SCHEMA
CREATE SCHEMA
ALTER SCHEMA
SET
SET
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
COPY 2
COPY 2
You are now connected to database "postgres" as user "postgres".
SET
SET
SET
SET
SETset_config
------------(1 row)SET
SET
SET
SET验证
postgres=# select datname from pg_database;datname
-----------postgrestemplate1template0aaamy_db
(5 rows)postgres=# \c aaa
You are now connected to database "aaa" as user "postgres".
aaa=# select * from q;id
----1
(1 row)aaa=# select * from c1.q;id
----2
(1 row)aaa=# select * from c2.q;id
----3
(1 row)aaa=# \c my_db;
You are now connected to database "my_db" as user "postgres".my_db=# select * from s1.a;id
----11
(2 rows)my_db=# select * from s2.a;id
----22
(2 rows)远程连接相关
dnf安装的pgsql配置文件在
/var/lib/pgsql/data/postgresql.conf源码编译安装的pgsql配置文件在
/usr/local/pgsql/data/postgresql.confpostgresql的默认监听地址是127.0.0.1 想使用别的主机远程连接postgresql,需要修改配置文件。
再开一个终端页,用root身份来修改配置文件,修改之后换回原终端,用postgresql身份登录的终端来重启postgresql。[root@localhost ~]# vim /usr/local/pgsql/data/postgresql.conf
listen_addresses = '*' # what IP address(es) to listen on;[postgres@localhost ~]$ pg_ctl -D /usr/local/pgsql/data/ -l logfile restart
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started
[postgres@localhost ~]$ ls
aaa bbb logfile
[postgres@localhost ~]$ netstat -anpt | grep postgre
(Not all processes could be identified, non-owned process infowill not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 12416/postgres
tcp6 0 0 :::5432 :::* LISTEN 12416/postgres postgresql默认只能本地访问postgresql,需要修改pg_hba.conf。
[root@localhost ~]# vim /usr/local/pgsql/data/pg_hba.conf
# IPv4 local connections:
host all all 0.0.0.0/0 trust
host all all 127.0.0.1/32 trust## 扩展:127.0.0.1/32表示广播、单播、可通信地址都是它。因为子网是32位,只有这一个ip地址。
如果将其更改为127.0.0.1/30 那可用ip为127.0.0.1 127.0.0.2 广播地址为127.0.0.3ip 127.0.0. 000000 00
mask 255.255.255.111111 00网络位 主机位
主机位二进制为00
只有三种排列方式
01 十进制 1
10 十进制 2
11 十进制 3主机位全1是广播地址。host:连接类型,适用于通过tcp/ip进行的远程连接。all:定义那些数据库可接受这个规则。all:定义了哪些用户可以接受这个规则。0.0.0.0/0:特殊的CIDR(无类别域间路由)表示法,表示任何ip地址。trust:认证方法。trust表示信任,无需任何认证即可访问数据库。[postgres@localhost ~]$ pg_ctl -D /usr/local/pgsql/data/ -l logfile restart
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started客户端
[root@localhost ~]# psql -h 192.168.10.101
psql: 错误: 连接到"192.168.10.101"上的服务器,端口5432失败:No route to host服务器是否在该主机上运行并接受TCP/IP连接?
# 出现此类错误说明,服务端防火墙未关闭或者服务端的服务未监听正确的地址/端口。服务端
[root@localhost ~]# firewall-cmd --add-service=postgresql
success客户端
[root@localhost ~]# psql -h 192.168.10.101
psql: 错误: 连接到"192.168.10.101"上的服务器,端口5432失败:FATAL: role "root" does not exist
#出现此错误,说明用户未切换到postgres。[root@localhost ~]# useradd postgres
[root@localhost ~]# su - postgres[postgres@localhost ~]$ psql -h 192.168.10.101
psql (15.12, 服务器 15.4)
输入 "help" 来获取帮助信息.postgres=# 服务端
[root@localhost ~]# vim /usr/local/pgsql/data/pg_hba.conf
# IPv4 local connections:
host all all 0.0.0.0/0 md5
host all all 127.0.0.1/32 trustpostgres=# alter user postgres with password '123456';
ALTER ROLE[postgres@localhost ~]$ pg_ctl -D /usr/local/pgsql/data/ -l logfile restart
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started客户端
[postgres@localhost ~]$ psql -h 192.168.10.101
用户 postgres 的口令:
psql (15.12, 服务器 15.4)
输入 "help" 来获取帮助信息.postgres=# 忘记密码怎么办?修改pg_hba.conf文件,将本地的MD5更改为trust,重启服务。登录数据库修改密码,再将trust改为md5,重启服务。使用刚修改的密码登录即可。
相关文章:
PostgreSQL使用
一、PostgreSQL语法 PostgreSQL表、模式、库三者之间的关系 库 -> 模式 -> 表、视图、函数等等对象。 在postgresql的交互式终端psql中,“\”开头的命令称为元命令(类似mysql的show语句),用于快速管理数据库。 常见元命令&…...
现代化SQLite的构建之旅——解析开源项目Limbo
现代化SQLite的构建之旅——解析开源项目Limbo 在当今飞速发展的技术世界中,轻量级且功能强大的数据库已成为开发者的得力助手。当我们谈论轻量级数据库时,SQLite无疑是一个举足轻重的名字。然而,随着技术的进步,我们对数据库的需…...
MySQL 主从复制搭建全流程:基于 Docker 与 Harbor 仓库
一、引言 在数据库管理中,MySQL 主从复制是一种非常重要的技术,它可以实现数据的备份、读写分离,减轻主数据库的压力。本文将详细介绍如何使用 Docker 和 Harbor 仓库来搭建 MySQL 主从复制环境,适合刚接触数据库和 Docker 的新手…...
网页表格转换为markdown
网页表格到Markdown:一键转换,复制即用! 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或论坛中使用。然而,手动转换不仅耗时,还容易…...
MySQL字符串拼接方法全解析
目录 常用字符串处理函数 方法一:CONCAT基础拼接 方法二:CONCAT_WS带分隔符拼接 方法三:GROUP_CONCAT分组拼接 方法四:算术运算符拼接(仅限数字) 常用字符串处理函数 方法一:CONCAT基础拼接…...
零基础教程:用 Docker + pgloader 将 MySQL 数据库迁移到 PostgreSQL
在日常开发中,可能会遇到从 MySQL 迁移到 PostgreSQL 的需求。你也许是: 正在准备从传统架构转向云原生;想使用 PostgreSQL 更强的事务与 JSON 支持;想统一团队数据库技术栈;纯粹为了尝试学习不同的数据库系统。 别担…...
影刀Fun叉鸟-2048
文章目录 仅为自动化演示,实际2048判定逻辑需要更加严谨 参考代码 # 使用提醒: # 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能 # 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能 # 3. 当此模块作…...
uni-app(2):页面
1 页面简介 uni-app项目中,一个页面就是一个符合Vue SFC规范的 vue 文件。 在 uni-app js 引擎版中,后缀名是.vue文件或.nvue文件。 这些页面均全平台支持,差异在于当 uni-app 发行到App平台时,.vue文件会使用webview进行渲染&…...
【spring】spring学习系列之十一:spring的事件监听
系列文章目录 文章目录 系列文章目录前言一、使用二、整体流程三、EventListenerMethodProcessor和DefaultEventListenerFactory1.EventListenerMethodProcessor2.DefaultEventListenerFactory3.ApplicationListenerDetector4.initApplicationEventMulticaster5.registerListen…...
代码随想录打卡|Day45 图论(孤岛的总面积 、沉没孤岛、水流问题、建造最大岛屿)
图论part03 孤岛的总面积 代码随想录链接 题目链接 视频讲解链接 思路:既然某个网格在边界上的岛屿不是孤岛,那么就把非 孤岛的所有岛屿变成海洋,最后再次统计还剩余的岛屿占据的网格总数即可。 dfs: import java.util.Scanner…...
AI人工智能——Matplotlib绘制各种数据可视化图表的基础方法
一、绘制图像基础 import matplotlib.pyplot as plt# 1、创建画布 plt.figure(figsize(20, 8), dpi100) # 2、绘制图像 x [1, 2, 3, 4, 5, 6] y [3, 5, 4, 3, 6, 1] plt.plot(x, y) # 3、显示图像 plt.show() 二、图像保存 import matplotlib.pyplot as plt# 1、创建画布 p…...
亚马逊AWS跑不动了?
5月2日,亚马逊公布了2025年第一季度的财报。财报数据显示,云计算业务增速放缓以及第二季度的指引低于预期。事实上,这并不是亚马逊AWS第一次增速放缓。 亚马逊AWS作为全球第一大云计算服务公司,这些年跟微软云、谷歌云等其他云计…...
PyTorch中cdist和sum函数使用详解
torch.cdist 是 PyTorch 中用于计算**两个张量之间的成对距离(pairwise distance)**的函数,常用于点云处理、图神经网络、相似性度量等场景。 基本语法 torch.cdist(x1, x2, p2.0)参数说明: 参数说明x1一个形状为 [B, M, D] 或 …...
PyTorch的基本操作
前言 为了方便大家学习,我整理了PyTorch全套学习资料,包含配套教程讲义和源码 除此之外还有100G人工智能学习资料 包含数学与Python编程基础、深度学习机器学习入门到实战,计算机视觉自然语言处理大模型资料合集,不仅有配套教程…...
分类算法 Kmeans、KNN、Meanshift 实战
任务 1、采用 Kmeans 算法实现 2D 数据自动聚类,预测 V180,V260 数据类别; 2、计算预测准确率,完成结果矫正 3、采用 KNN、Meanshift 算法,重复步骤 1-2 代码工具:jupyter notebook 视频资料 无监督学习ÿ…...
aws平台s3存储桶夸域问题处理
当我们收到开发反馈s3存在跨域问题 解决步骤: 配置 S3 存储桶的 CORS 设置: 登录到 AWS 管理控制台。转到 S3 服务。选择你存储文件的 存储桶。点击 权限 标签页。在 跨域资源共享(CORS)配置 部分,点击 编辑。 登陆…...
在Windows上安装Pygame 2.1.3:解决常见问题
在Windows系统上安装Pygame 2.1.3时,可能会遇到各种问题,例如网络问题或依赖安装失败。本文将详细介绍如何在Windows上成功安装Pygame 2.1.3,并解决常见的安装问题。 1. 前提条件 在开始安装之前,确保你的系统中已经安装了Pytho…...
linux中安装jdk(Java环境),tomcat
安装时候选择 tomcat 软件版本要与程序开发使用的版本一致。jdk 版本要进行与 tomcat 保持一致。 1. 系统环境说明 [root@bogon ~]# getenforce Disabled [root@bogon ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon …...
DeepSeek源码解构:从MoE架构到MLA的工程化实现
文章目录 **一、代码结构全景:从模型定义到分布式训练****二、MoE架构:动态路由与稀疏激活的工程化实践****1. 专家路由机制(带负载均衡)****数学原理:负载均衡损失推导** **三、MLA注意力机制:低秩压缩与解…...
国产linux系统(银河麒麟,统信uos)使用 PageOffice实现PDF文件加盖印章和签字功能
PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、龙芯(Mips、LoogArch)芯片架构。 PageOffice支持…...
第四十三节:人脸检测与识别-人脸识别基础 (Eigenfaces, Fisherfaces, LBPH)
引言 人脸识别技术是计算机视觉领域最具应用价值的方向之一,广泛应用于安防监控、身份认证、人机交互等领域。本文将通过OpenCV框架,深入解析人脸检测与识别的核心算法(Eigenfaces/Fisherfaces/LBPH),并提供完整的代码实现。 第一部分:人脸检测基础 1.1 人脸检测原理 …...
面向恶劣条件的道路交通目标检测----大创自用(当然你也可以在里面学到很多东西)
全部内容梳理 目标检测的两个任务: 预测标签 边界框 语义分割 实力分割 一个是类别 一个是实例级别 分类任务把每个图像当作一张图片看待 所有解决方法是先生成候选区域 再进行分类 置信度: 包括对类别和边界框预测的自信程度 输出分类和IOU分数的…...
物联网相关词汇
物联网(英文:Internet of Things,缩写:IoT) specs 英[speks] 美[speks] 规格说明 topology 英[təpɒlədʒɪ] 拓扑结构 vertical 美 [ˈvɜrtɪk(ə)l] 英 [ˈvɜː(r)tɪk(ə)l] n.垂直线;垂直位…...
【net6】一文跑通前后端以及数据库,简单的天气系统管理(保姆入门)
一、前言 使用Vue3为前端,.net6为后端,连接postgreSQL数据库,连通前后端与数据库,实现最基础的天气管理系统的增删改查。 二、内容 目录 一、前言 二、内容 2.1 后端部分 2.1.1 在VS里面使用此模板创建项目 2.1.2 安装下列…...
宝塔安装的 MySQL 无法连接的情况及解决方案
宝塔安装的 MySQL 无法连接的情况及解决方案 宝塔面板是一款流行的服务器管理工具,其中集成的 MySQL 数据库有时会出现连接问题。本文详细介绍两种最常见的 MySQL 连接错误:“1130 - Host is not allowed to connect” 和 “1045 - Access denied”&…...
【iOS】分类、扩展、关联对象
分类、扩展、关联对象 前言分类扩展扩展和分类的区别关联对象key的几种用法流程 总结 前言 最近的学习中笔者发现自己对于分类、扩展相关知识并不是很熟悉,刚好看源码类的加载过程中发现有类扩展与关联对象详解。本篇我们来探索一下这部分相关知识,首先…...
计算机网络学习(一)—— OSI vs TCP/IP网络模型
一、OSI模型(开放系统互联参考模型) OSI(Open Systems Interconnection)模型由ISO(国际标准化组织)在1984年提出,用于标准化网络通信,它将网络通信分为七个层次: 层级名…...
【MySQL成神之路】MySQL查询用法总结
MySQL查询语句全面指南 一、基础查询语句 MySQL中select的基本语法形式 select 属性列表 from 表名和视图列表 [where 条件表达式] [group by 属性名[having 条件表达式]] [order by 属性名[asc|desc]] [limit <offset>,row count] 说明: where子句&…...
攻防世界——Web题 fakebook
首先测试网站的功能,当我注册一个账号时,发现这里的链接: 点进去看到URL: 感觉no这个地方可以尝试一下sql注入 推测应该是数字型注入 发现果然可以进行sql注入, 最终测得列数应该是4列,但当我尝试sql注入…...
【Java微服务组件】异步通信P2—Kafka与消息
欢迎来到啾啾的博客🐱。 记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 欢迎评论交流,感谢您的阅读😄。 目录 引言Kafka与消息生产者发送消息到Kafka批处理发送设计消息的幂等信息确保消息送达acks配置…...
AI数字人一体机和智慧屏方案:开启智能交互新纪元
在当今这个信息化飞速发展的时代,AI技术正以前所未有的速度改变着我们的生活方式和工作模式。特别是在人机交互领域,AI数字人的出现不仅极大地丰富了用户体验,也为各行各业提供了前所未有的创新解决方案。本文将重点介绍由广州深声科技有限公…...
10-码蹄集600题基础python篇
题目如上: 这题就是ASCII的转换,直接使用ord就可以 下面是代码: def main():#code here# a1,a2input().split(",")# print(f"The ASCII code of {a1} is {ord(a1)}")# print(f"The ASCII code of {a2} is {ord(a2…...
给几张图片和一段文字,怎么制作成带有语音的视频---php
想用PHP将图片和文字转换成带有语音的视频,想做自动化的视频生成,比如用于广告、演示或者其他需要多媒体处理的场景。 接下来考虑PHP本身的能力。PHP主要是用于服务器端的脚本语言,不太擅长处理多媒体内容,比如视频和语音合成。所…...
vue3中RouterView配合KeepAlive实现组件缓存
KeepAlive组件缓存 为什么需要组件缓存代码展示缓存效果为什么不用v-if 为什么需要组件缓存 业务需求:一般是列表页面通过路由跳转到详情页,跳转回来时,需要列表页面展示上次展示的内容 代码展示 App.vue入口 <script setup lang"…...
NIFI的处理器:ExecuteGroovyScript 2.4.0
ExecuteGroovyScript是常用的处理器之一,用于执行GroovyScript脚本。该脚本负责处理传入的流文件(例如传输到SUCCESS或删除)以及由该脚本创建的任何流文件。如果处理不完整或不正确,会话将被回滚。 属性值-失败处理策略 Failure …...
安全可控的AI底座:灯塔大模型应用开发平台全面实现国产信创兼容适配认证
国产信创产品兼容适配认证是为了支持和推动国产信息技术产品和服务的发展而设立的一种质量标准和管理体系。适配认证旨在确保相关产品在安全性、可靠性、兼容性等方面达到一定的标准,以满足政府和关键行业对信息安全和自主可控的需求。 北京中烟创新科技有限公司&a…...
.NET外挂系列:5. harmony 中补丁参数的有趣玩法(下)
一:背景 1. 讲故事 开局一张表,故事全靠编,为了能够承上启下,先把参数列表放出来。 参数名说明__instance访问非静态方法的实例(类似 this)。__result获取/修改返回值,要想修改用 ref。__res…...
Spring Boot 登录实现:JWT 与 Session 全面对比与实战讲解
Spring Boot 登录实现:JWT 与 Session 全面对比与实战讲解 2025.5.21-23:11今天在学习黑马点评时突然发现用的是与苍穹外卖jwt不一样的登录方式-Session,于是就想记录一下这两种方式有什么不同 在实际开发中,登录认证是后端最基础也是最重要…...
vscode离线安装组件工具vsix
1.外网下载vsix 网址为:Open VSX Registry 2.输入需要下载的组件 3.下载组件 4.安装 5.选择安装文件 6.安装完成...
Vue大数据量前端性能优化策略
文章目录 前言Vue大数据量前端性能优化策略1. 虚拟列表的使用方式及优势2. 列表和图表的懒加载技术3. Web Worker 在图表数据预处理中的应用4. 图表渲染优化技巧5. 分批渲染技术实现方法(如 requestIdleCallback)6. 其他可行的 Vue 层优化策略 前言 Vue…...
Hass-Panel - 开源智能家居控制面板
文章目录 ▎项目介绍:预览图▎主要特性安装部署Docker方式 正式版Home Assistant Addon方式详细安装方式1. Home Assistant 插件安装(推荐)2. Docker 安装命令功能说明 :3. Docker Compose 安装升级说明Docker Compose 版本升级 功…...
iPaaS集成平台技术选型关注哪些指标?
在数字化转型进程中,企业系统间的数据孤岛问题日益凸显。根据IDC调研,85%的IT决策者将“系统集成效率”列为业务创新的关键瓶颈。iPaaS(集成平台即服务)凭借其敏捷性、低代码特性和智能化能力,已成为企业构建数字生态的…...
JavaScript性能优化实战(14):跨端JavaScript性能优化
在当今多端开发的时代,JavaScript已经突破了浏览器的界限,广泛应用于移动应用、桌面应用、小程序等各类环境。然而,不同平台的运行时环境存在差异,为JavaScript性能优化带来了新的挑战和思考维度。 目录 React Native性能优化最佳实践Electron应用性能优化策略混合应用中J…...
多通道经颅直流电刺激器产品及解决方案特色解析
前记 团队在多通道经颅直流电刺激这个技术方向,一路深耕。在服务了不少客户之后,为了方便后续的产品和方案推广。我们弄出来了产品和方案两种形态。标准产品是为了给用户演示以及一些常规的实验使用。方案则是为了满足不同方向的科研用户的需求。这两者相…...
Quasar 使用 Pinia 进行状态管理
官方文档:使用 Pinia 进行状态管理 |Quasar 框架 视频教程:quasar框架store-状态管理库pinia介绍_哔哩哔哩_bilibili 使用 Quasar CLI 创建一个新的store quasar new store date --format jsPinia存储模板详解解 基本结构解析 import { defineStore,…...
计算机网络--第一章(下)
1.计算机网络的分层结构 1.1 分层结构 网络体系结构描述的是,计算机网络有几层,有什么功能,用的什么协议。 水平方向的关系, 协议,说的是对等实体间通信需要遵守的规则。用于约束,这个约束的方向是水平的。…...
Veo 3 可以生成视频,并附带配乐
谷歌最新的视频生成 AI 模型 Veo 3 可以创建与其生成的剪辑相配的音频。 周二,在谷歌 I/O 2025 开发者大会上,谷歌发布了 Veo 3。该公司声称,这款产品可以生成音效、背景噪音,甚至对话,为其制作的视频增添配乐。谷歌表…...
数据结构核心知识总结:从基础到应用
数据结构核心知识总结:从基础到应用 数据结构是计算机科学中组织和存储数据的核心方式,直接影响程序的性能和资源利用率。本文系统梳理常见数据结构及其应用场景,帮助读者构建清晰的知识体系。 一、数据结构基础概念 数据结构是数据元素之间…...
Flannel后端为UDP模式下,分析数据包的发送方式(二)
发往 10.244.2.5 的数据包最终会经过物理网卡 enp0s3,尽管路由表直接指定通过 flannel.1 发出。以下以 Markdown 格式详细解释为什么会经过 enp0s3,结合 Kubernetes 和 Flannel UDP 模式的背景。 问题分析 在 Kubernetes 环境中,使用 Flanne…...
超低延迟音视频直播技术的未来发展与创新
引言 音视频直播技术正在深刻改变着我们的生活和工作方式,尤其是在教育、医疗、安防、娱乐等行业。无论是全球性的体育赛事、远程医疗、在线教育,还是智慧安防、智能家居等应用场景,都离不开音视频技术的支持。为了应对越来越高的需求&#x…...