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

PG常用SQL

数据库

创建数据库

PostgreSQL 创建数据库可以用以下三种方式:

  • 1、使用 CREATE DATABASE SQL 语句来创建。
  • 2、使用 createdb 命令来创建。
  • 3、使用 pgAdmin 工具。

CREATE DATABASE 创建数据库

CREATE DATABASE 命令需要在 PostgreSQL 命令窗口来执行,语法格式如下:

postgres=# \h create database;
Command:     CREATE DATABASE
Description: create a new database
Syntax:
CREATE DATABASE name[ [ WITH ] [ OWNER [=] user_name ][ TEMPLATE [=] template ][ ENCODING [=] encoding ][ LOCALE [=] locale ][ LC_COLLATE [=] lc_collate ][ LC_CTYPE [=] lc_ctype ][ TABLESPACE [=] tablespace_name ][ ALLOW_CONNECTIONS [=] allowconn ][ CONNECTION LIMIT [=] connlimit ][ IS_TEMPLATE [=] istemplate ] ]URL: https://www.postgresql.org/docs/13/sql-createdatabase.html

例如,我们创建一个 lhrpgdb 的数据库:

postgres=# CREATE DATABASE lhrpgdb;CREATE DATABASE db1WITHOWNER = lhrENCODING = 'UTF8'TABLESPACE = ts_test1CONNECTION LIMIT = -1;

createdb 命令创建数据库

createdb 是一个 SQL 命令 CREATE DATABASE 的封装。

createdb 命令语法格式如下:

createdb [option...] [dbname [description]]

参数说明:

dbname:要创建的数据库名。

description:关于新创建的数据库相关的说明。

options:参数可选项,可以是以下值:

序号选项 & 描述
1-D tablespace指定数据库默认表空间。
2-e将 createdb 生成的命令发送到服务端。
3-E encoding指定数据库的编码。
4-l locale指定数据库的语言环境。
5-T template指定创建此数据库的模板。
6–help显示 createdb 命令的帮助信息。
7-h host指定服务器的主机名。
8-p port指定服务器监听的端口,或者 socket 文件。
9-U username连接数据库的用户名。
10-w忽略输入密码。
11-W连接时强制要求输入密码。

接下来我们打开一个命令窗口,进入到 PostgreSQL 的安装目录,并进入到 bin 目录,createdb 命令位于 PostgreSQL安装目录/bin 下,执行创建数据库的命令:

$ cd /Library/PostgreSQL/11/bin/
$ createdb -h localhost -p 5432 -U postgres lhrpgdb
password ******

以上命令我们使用了超级用户 postgres 登录到主机地址为 localhost,端口号为 5432 的 PostgreSQL 数据库中并创建 lhrpgdb 数据库。

pgAdmin 工具创建数据库

pgAdmin 工具提供了完整操作数据库的功能:

选择数据库

上一章节我们讲了如何创建数据库,接下来我们来讨论如何去选择我们创建的数据库。

数据库的命令窗口

PostgreSQL 命令窗口中,我们可以命令提示符后面输入 SQL 语句:

postgres=#

使用 \l 用于查看已经存在的数据库:

postgres=# \lList of databasesName    |  Owner   | Encoding | Collate | Ctype |   Access privileges   
-----------+----------+----------+---------+-------+-----------------------postgres  | postgres | UTF8     | C       | C     | lhrpgdb  | postgres | UTF8     | C       | C     | template0 | postgres | UTF8     | C       | C     | =c/postgres          +|          |          |         |       | postgres=CTc/postgrestemplate1 | postgres | UTF8     | C       | C     | =c/postgres          +|          |          |         |       | postgres=CTc/postgres
(4 rows)

接下来我们可以使用 \c + 数据库名 来进入数据库:

postgres=# \c lhrpgdb
You are now connected to database "lhrpgdb" as user "postgres".
lhrpgdb=# 
lhrpgdb=# select current_user,current_database(),pg_backend_pid();current_user | current_database | pg_backend_pid
--------------+------------------+----------------postgres     | lhrpgdb          |           2715
(1 row)

系统命令行窗口

在系统的命令行查看,我么可以在连接数据库后面添加数据库名来选择数据库:

$ psql -h localhost -p 5432 -U postgress lhrpgdb
Password for user postgress: ****
psql (11.3)
Type "help" for help.
You are now connected to database "lhrpgdb" as user "postgres".
lhrpgdb=# 

pgAdmin 工具

pgAdmin 工具更简单了,直接点击数据库选择就好了,还可以查看一些数据库额外的信息:

删除数据库

PostgreSQL 删除数据库可以用以下三种方式:

  • 1、使用 DROP DATABASE SQL 语句来删除。
  • 2、使用 dropdb 命令来删除。
  • 3、使用 pgAdmin 工具。

**注意:**删除数据库要谨慎操作,一旦删除,所有信息都会消失。

DROP DATABASE 删除数据库

DROP DATABASE 会删除数据库的系统目录项并且删除包含数据的文件目录。

DROP DATABASE 只能由超级管理员或数据库拥有者执行。

DROP DATABASE 命令需要在 PostgreSQL 命令窗口来执行,语法格式如下:

DROP DATABASE [ IF EXISTS ] name

参数说明:

  • IF EXISTS:如果数据库不存在则发出提示信息,而不是错误信息。
  • name:要删除的数据库的名称。

例如,我们删除一个 lhrpgdb 的数据库:

postgres=# DROP DATABASE lhrpgdb;

dropdb 命令删除数据库

dropdb 是 DROP DATABASE 的包装器。

dropdb 用于删除 PostgreSQL 数据库。

dropdb 命令只能由超级管理员或数据库拥有者执行。

dropdb 命令语法格式如下:

dropdb [connection-option...] [option...] dbname

参数说明:

dbname:要删除的数据库名。

options:参数可选项,可以是以下值:

序号选项 & 描述
1-e显示 dropdb 生成的命令并发送到数据库服务器。
2-i在做删除的工作之前发出一个验证提示。
3-V打印 dropdb 版本并退出。
4–if-exists如果数据库不存在则发出提示信息,而不是错误信息。
5–help显示有关 dropdb 命令的帮助信息。
6-h host指定运行服务器的主机名。
7-p port指定服务器监听的端口,或者 socket 文件。
8-U username连接数据库的用户名。
9-w连接数据库的用户名。
10-W连接时强制要求输入密码。
11–maintenance-db=dbname删除数据库时指定连接的数据库,默认为 postgres,如果它不存在则使用 template1。

接下来我们打开一个命令窗口,进入到 PostgreSQL 的安装目录,并进入到 bin 目录,dropdb 名位于 PostgreSQL安装目录/bin 下,执行删除数据库的命令:

$ cd /Library/PostgreSQL/11/bin/
$ dropdb -h localhost -p 5432 -U postgres lhrpgdb
password ******

以上命令我们使用了超级用户 postgres 登录到主机地址为 localhost,端口号为 5432 的 PostgreSQL 数据库中并删除 lhrpgdb 数据库。

pgAdmin 工具删除据库

pgAdmin 工具提供了完整操作数据库的功能:

img

查询


-- \l+SELECT d.datname as "Name",pg_catalog.pg_get_userbyid(d.datdba) as "Owner",pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",d.datcollate as "Collate",d.datctype as "Ctype",pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges",CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))ELSE 'No Access'END as "Size",t.spcname as "Tablespace",pg_catalog.shobj_description(d.oid, 'pg_database') as "Description"
FROM pg_catalog.pg_database dJOIN pg_catalog.pg_tablespace t on d.dattablespace = t.oid
ORDER BY 1;-- 查看各数据库数据创建时间
SELECTdatname,(pg_stat_file (format ( '%s/%s/PG_VERSION', CASE WHEN spcname = 'pg_default' THEN 'base' ELSE'pg_tblspc/' || t2.oid || '/PG_11_201804061/' END, t1.oid ))).* 
FROMpg_database t1,pg_tablespace t2 
WHEREt1.dattablespace = t2.oid;

表空间

用户必须有表空间所在目录访问权限,所以在创建表空间之前需要在对应分区下创建相应的目录,并为其分配权限。

PostgreSQL中的表空间允许在文件系统中定义用来存放表示数据库对象的文件的位置。在PostgreSQL中表空间实际上就是给表指定一个存储目录,能合理利用磁盘性能和空间,制定最优的物理存储方式来管理数据库表和索引。

在DB2和Oracle数据库中;一个表空间只属于一个数据库使用;而一个数据库可以拥有多个表空间。属于"一对多"的关系。
在PostgreSQL集群中;一个表空间可以让多个数据库使用;而一个数据库可以使用多个表空间。属于"多对多"的关系。用户下面拥有表,拥有模式。模式下面拥有表空间。

  • initdb()后马上创建pg_default和pg_global表空间
  • 建表时如果没有指定特定的表空间,表默认被存在pg_default表空间中。
  • 用于管理整个数据库集群的表默认被存储在pg_global表空间中。
  • pg_default表空间的物理位置为$PGDATA\base目录。
  • pg_global表空间的物理位置为$PGDATA\global目录。
  • 一个表空间可以被多个数据库同时使用。此时,每一个数据库都会在表空间路径下创建为一个新的子路径。
  • 创建一个用户表空间会在$PGDATA\pg_tblspc目录下面创建一个软连接,连接到表空间制定的目录位置。

目录结构可以用大致下面图示意:

创建表空间

mkdir -p /postgresql/pgdata/ts_test1
mkdir -p /postgresql/pgdata/ts_test2psql
\h create tablespace
create tablespace ts_test1 location '/postgresql/pgdata/ts_test1';
create tablespace ts_test2 location '/postgresql/pgdata/ts_test2';
\db
create table lhrtest (id int) tablespace ts_test1;
\d+ lhrtest
alter table lhrtest set tablespace ts_test2;select pg_relation_filepath('lhrtest');

执行过程:

[pgsql@lhrpg pgdata]$ mkdir -p /postgresql/pgdata/ts_test1
[pgsql@lhrpg pgdata]$ mkdir -p /postgresql/pgdata/ts_test2
[pgsql@lhrpg pgdata]$ psql
psql (13.2)
Type "help" for help.postgres=# \h create tablespace;
Command:     CREATE TABLESPACE
Description: define a new tablespace
Syntax:
CREATE TABLESPACE tablespace_name[ OWNER { new_owner | CURRENT_USER | SESSION_USER } ]LOCATION 'directory'[ WITH ( tablespace_option = value [, ... ] ) ]URL: https://www.postgresql.org/docs/13/sql-createtablespace.htmlpostgres=# \db+List of tablespacesName    |  Owner   | Location | Access privileges | Options |  Size  | Description 
------------+----------+----------+-------------------+---------+--------+-------------pg_default | postgres |          |                   |         | 295 MB | pg_global  | postgres |          |                   |         | 559 kB | 
(2 rows)postgres=# 
postgres=# create tablespace ts_test1 location '/postgresql/pgdata/ts_test1';
WARNING:  tablespace location should not be inside the data directory
CREATE TABLESPACE
postgres=# create tablespace ts_test2 location '/postgresql/pgdata/ts_test2';
WARNING:  tablespace location should not be inside the data directory
CREATE TABLESPACE
postgres=# \dbList of tablespacesName    |  Owner   |          Location           
------------+----------+-----------------------------pg_default | postgres | pg_global  | postgres | ts_test1   | postgres | /postgresql/pgdata/ts_test1ts_test2   | postgres | /postgresql/pgdata/ts_test2
(4 rows)postgres=# 
postgres=# create table lhrtest (id int) tablespace ts_test1;
CREATE TABLE
postgres=# \d+ lhrtestTable "public.lhrtest"Column |  Type   | Collation | Nullable | Default | Storage | Stats target | Description 
--------+---------+-----------+----------+---------+---------+--------------+-------------id     | integer |           |          |         | plain   |              | 
Tablespace: "ts_test1"
Access method: heappostgres=# 
postgres=# alter table lhrtest set tablespace ts_test2;
ALTER TABLE
postgres=# \d+ lhrtestTable "public.lhrtest"Column |  Type   | Collation | Nullable | Default | Storage | Stats target | Description 
--------+---------+-----------+----------+---------+---------+--------------+-------------id     | integer |           |          |         | plain   |              | 
Tablespace: "ts_test2"
Access method: heappostgres=# \dList of relationsSchema |  Name   | Type  |  Owner   
--------+---------+-------+----------public | lhrtest | table | postgrespublic | sbtest  | table | lhr2
(2 rows)[pgsql@lhrpg pgdata]$ ll pg_tblspc/
total 0
lrwxrwxrwx 1 pgsql pgsql 27 May 28 09:13 16534 -> /postgresql/pgdata/ts_test1
lrwxrwxrwx 1 pgsql pgsql 27 May 28 09:21 16535 -> /postgresql/pgdata/ts_test2

删除表空间

查询

SELECT oid,spcname AS "Name",pg_catalog.pg_get_userbyid(spcowner) AS "Owner",pg_catalog.pg_tablespace_location(oid) AS "Location",pg_catalog.array_to_string(spcacl, E'\n') AS "Access privileges",spcoptions AS "Options",pg_catalog.pg_size_pretty(pg_catalog.pg_tablespace_size(oid)) AS "Size",pg_catalog.shobj_description(oid, 'pg_tablespace') AS "Description"
FROM pg_catalog.pg_tablespace
ORDER BY 1;\db+

用户和角色

用户和角色在PostgreSQL中是一个概念。 但是, CREATE ROLE创建的用户默认不带LOGIN属性,而CREATE USER创建的用户默认带有LOGIN属性。如果给role授权login则等同user。

创建用户


create user lhr with password 'lhr';
GRANT ALL PRIVILEGES ON DATABASE  postgres to lhr;CREATE USER lhr2 WITH
LOGIN SUPERUSER CREATEDB CREATEROLE
INHERIT REPLICATION
CONNECTION LIMIT -1
PASSWORD 'lhr';CREATE ROLE username WITH LOGIN password 'l';
ALTER ROLE username WITH NOLOGIN;
ALTER ROLE username WITH login;

查:

postgres=# \du+List of rolesRole name |                         Attributes                         | Member of | Description
-----------+------------------------------------------------------------+-----------+-------------lhr       |                                                            | {}        |lhr2      | Superuser, Create role, Create DB, Replication             | {}        |postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}        |postgres=# select * from pg_user;usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------postgres |       10 | t           | t        | t       | t            | ******** |          |lhr      |    16540 | f           | f        | f       | f            | ******** |          |lhr2     |    16541 | t           | t        | t       | f            | ******** |          |
(3 rows)

删除用户

-- ERROR:  role "lhr" cannot be dropped because some objects depend on it
drop owned by lhr cascade;-- 若有数据库,那么还需要删掉数据库
drop user lhr;

执行:

sbtest=# drop user lhr ;
ERROR:  role "lhr" cannot be dropped because some objects depend on it
DETAIL:  privileges for database postgres
sbtest=# drop owned by lhr cascade;
DROP OWNED
sbtest=# drop user lhr ;
DROP ROLE

查询

\du+
select * from pg_user;

模式(schema)

模式(schema):我们在pg数据库中创建的任何对象(表,索引,视图等)都会在一个模式下被创建。

当创建对象时,如果未指定模式,这些对象将会在默认的模式下被创建.这个模式叫做public。public模式,代表所有人的意思。 一个例外情况是另一个模式首先出现在search_path中。

PostgreSQL 模式(SCHEMA)可以看着是一个表的集合。

一个模式可以包含视图、索引、数据类型、函数和操作符等。

相同的对象名称可以被用于不同的模式中而不会出现冲突,例如 schema1 和 myschema 都可以包含名为 mytable 的表。

使用模式的优势:

  • 允许多个用户使用一个数据库并且不会互相干扰。
  • 将数据库对象组织成逻辑组以便更容易管理。
  • 第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。

模式类似于操作系统层的目录,但是模式不能嵌套。

创建SCHEMA

我们可以使用 CREATE SCHEMA 语句来创建模式,语法格式如下:

postgres=# \h create schema;
Command:     CREATE SCHEMA
Description: define a new schema
Syntax:
CREATE SCHEMA schema_name [ AUTHORIZATION role_specification ] [ schema_element [ ... ] ]
CREATE SCHEMA AUTHORIZATION role_specification [ schema_element [ ... ] ]
CREATE SCHEMA IF NOT EXISTS schema_name [ AUTHORIZATION role_specification ]
CREATE SCHEMA IF NOT EXISTS AUTHORIZATION role_specificationwhere role_specification can be:user_name| CURRENT_USER| SESSION_USERURL: https://www.postgresql.org/docs/13/sql-createschema.html

接下来我们连接到 lhrpgdb 来创建模式 myschema:

lhrpgdb=# create schema myschema;
CREATE SCHEMAlhrpgdb=#  \dnList of schemasName   |  Owner
----------+----------lhr      | postgresmyschema | postgrespublic   | postgres
(3 rows)lhrpgdb=#  \dnSList of schemasName        |  Owner
--------------------+----------information_schema | postgreslhr                | postgresmyschema           | postgrespg_catalog         | postgrespg_temp_1          | postgrespg_toast           | postgrespg_toast_temp_1    | postgrespublic             | postgres
(8 rows)lhrpgdb=#  \dnS+List of schemasName        |  Owner   |  Access privileges   |           Description
--------------------+----------+----------------------+----------------------------------information_schema | postgres | postgres=UC/postgres+||          | =U/postgres          |lhr                | postgres |                      |myschema           | postgres |                      |pg_catalog         | postgres | postgres=UC/postgres+| system catalog schema|          | =U/postgres          |pg_temp_1          | postgres |                      |pg_toast           | postgres |                      | reserved schema for TOAST tablespg_toast_temp_1    | postgres |                      |public             | postgres | postgres=UC/postgres+| standard public schema|          | =UC/postgres         |
(8 rows)

输出结果 “CREATE SCHEMA” 就代表模式创建成功。

接下来我们再创建一个表格:

lhrpgdb=# create table myschema.company(ID   INT              NOT NULL,NAME VARCHAR (20)     NOT NULL,AGE  INT              NOT NULL,ADDRESS  CHAR (25),SALARY   DECIMAL (18, 2),PRIMARY KEY (ID)
);

以上命令创建了一个空的表格,我们使用以下 SQL 来查看表格是否创建:

lhrpgdb=# select * from myschema.company;id | name | age | address | salary 
----+------+-----+---------+--------
(0 rows)

删除模式

删除一个为空的模式(其中的所有对象已经被删除):

DROP SCHEMA myschema;

删除一个模式以及其中包含的所有对象:

DROP SCHEMA myschema CASCADE;

查询

select * from pg_catalog.pg_namespace;SELECT n.nspname AS "Name",pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner",pg_catalog.array_to_string(n.nspacl, E'\n') AS "Access privileges",pg_catalog.obj_description(n.oid, 'pg_namespace') AS "Description"
FROM pg_catalog.pg_namespace n
ORDER BY 1;

表格,我们使用以下 SQL 来查看表格是否创建:

lhrpgdb=# select * from myschema.company;id | name | age | address | salary 
----+------+-----+---------+--------
(0 rows)

删除模式

删除一个为空的模式(其中的所有对象已经被删除):

DROP SCHEMA myschema;

删除一个模式以及其中包含的所有对象:

DROP SCHEMA myschema CASCADE;

查询

select * from pg_catalog.pg_namespace;SELECT n.nspname AS "Name",pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner",pg_catalog.array_to_string(n.nspacl, E'\n') AS "Access privileges",pg_catalog.obj_description(n.oid, 'pg_namespace') AS "Description"
FROM pg_catalog.pg_namespace n
ORDER BY 1;

相关文章:

PG常用SQL

数据库 创建数据库 PostgreSQL 创建数据库可以用以下三种方式: 1、使用 CREATE DATABASE SQL 语句来创建。2、使用 createdb 命令来创建。3、使用 pgAdmin 工具。 CREATE DATABASE 创建数据库 CREATE DATABASE 命令需要在 PostgreSQL 命令窗口来执行&#xff0…...

分模块开发的意义及开发步骤

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 Maven进阶 一、分模块开发1.1分模块开发的意义1.2分模块开…...

vue-router中的一些 API

在Vue.js的vue-router中,一些重要api 1、RouterHistory:这是 vue-router 提供的路由历史记录对象。它可以跟踪当前页面的路由历史,并提供一些方法和属性来管理导航和历史记录。在 vue-router 中,有两种类型的路由历史记录对象&…...

go-zero 是如何实现令牌桶限流的?

原文链接: 上一篇文章介绍了 如何实现计数器限流?主要有两种实现方式,分别是固定窗口和滑动窗口,并且分析了 go-zero 采用固定窗口方式实现的源码。 但是采用固定窗口实现的限流器会有两个问题: 会出现请求量超出限…...

Oracle/PL/SQL奇技淫巧之ROWNUM伪列

ROWNUM伪列 ROWNUM是一个伪列,它是根据每次查询的结果动态生成的一列递增编号,表示 Oracle 从表中选择该行的顺序,选择的第一行ROWNUM为1,第二行ROWNUM为2,以此类推。 注意1: ROWNUM伪列是在WHERE子句之…...

“MongoDB基础知识【超详细】

"探索MongoDB的无边之境:沉浸式数据库之旅" 欢迎来到MongoDB的精彩世界!在这个博客中,我们将带您进入一个充满创新和无限潜力的数据库领域。无论您是开发者、数据工程师还是技术爱好者,MongoDB都将为您带来一场令人心动…...

腾讯24届校招内推

校招开始啦~有兴趣的话可以扫我的码投,也可以分享给身边找工作的同学~ ❤投递攻略 1️⃣腾讯校招步骤,先微信扫码绑定内推关系,后在电脑上上传更改简历和部门投递 2️⃣投递时将选择投递部门,投递后将在…...

星际争霸之小霸王之小蜜蜂(二)--类的使用

目录 前言 一、将设置内容写在一个类里 二、设置小蜜蜂的造型 三、设置猫蜜蜂的参数 四、绘制猫蜜蜂到窗口 总结 前言 昨天我们设置好了窗口,下面我们需要向窗口中添加元素了。 一、将设置内容写在一个类里 我个人理解书上的意思是要创建一个类,将所有需…...

AndroidStudio升级Gradle之坑

最近在做旧工程的升级,原来的Gradle版本是4.6的,需要升级到7.6,JDK从8升级到17,一路淌了很多坑,逐个记录下吧 1、Maven仓库需要升级到https 你会遇到这个报错 Using insecure protocols with repositories, without …...

C# int ? 关键字使用方法

使用C#的时间也不算短。 但是今天看到了一个从来没有见过的写法 Int ?这是个什么写法,没见过啊,百度了查一下,也在这里记录一下。 1、int? 关键字说明 (1)、int? 表示一个int类型,且该int类型可空,如果不加?的话,那么int类…...

Redis_主从复制

8. 主从复制 8.1 简介 主从库采用读写分离的方式 读操作:主库、从库都可以处理写操作:首先写到主库执行,然后再将主库同步给从库。 实现读写分离,性能扩展 容灾快速恢复 8.2 主从复制步骤 创建一个目录 ,在root下创建一个m…...

Postman 的 Pre-request Script 使用RSA加解密

文章目录 一、概述 一、概述 Postman内置的Js不支持进行RSA加解密,所以需要引入forgeJS来实现。在 Pre-request Script使用以下脚本: // ------ 导入RSA ------ if (!pm.globals.has("forgeJS")) {pm.sendRequest("https://raw.githubu…...

【Swagger】只需要3步搭建Swagger环境,就可以让你的项目实现Swagger在线文档,实时浏览,修改展示

目录 1. pom.xml文件中添加Swagger的jar包 2. 配置Swagger 3. 项目启动中加入Swagger注解的开关,启动Swagger功能 4. 启动项目,查看效果 Swagger 的功能这里就不多说明了,相信大家都懂的,好奇多问一句,大家有知道其…...

pytest运行时参数说明,pytest详解,pytest.ini详解

一、Pytest简介 1.pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点: 简单灵活,容易上手,支持参数化 2.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium、appium等自动化测试&#xf…...

Matplotlib绘图知识小结--Python数据分析学习

一、Pyplot子库绘制2D图表 1、Matplotlib Pyplot Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。 Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。 Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行…...

mouseover、mouseout和mouseenter、mouseleave之间的区别(配对使用)

以上四个事件都是与鼠标相关的事件,其中mouseenter和mouseover均是鼠标移入时触发的事件,但是使用mouseover的时候会触发冒泡事件,也就是,当父元素和子元素均绑定mouseover事件的时候,如果触发子元素的mouserover事件&…...

【论文阅读】基于深度学习的时序预测——Autoformer

系列文章链接 论文一:2020 Informer:长时序数据预测 论文二:2021 Autoformer:长序列数据预测 论文三:2022 FEDformer:长序列数据预测 论文四:2022 Non-Stationary Transformers:非平…...

【AI】《动手学-深度学习-PyTorch版》笔记(十五):网络中的层、块和参数

AI学习目录汇总 1、什么是块? 在线性模型中,我们关注过单个神经元(单个神经网络的输入和输出); 在多层感知机中,我们关注过整层的神经元(前一层的输出作为后一层的输入); 如果将“多层感知机”视为一整体,称为“块”,可以将前一个块的输出作为后一个块的输入。 块…...

Flink之Task解析

Flink之Task解析 对Flink的Task进行解析前,我们首先要清楚几个角色TaskManager、Slot、Task、Subtask、TaskChain分别是什么 角色注释TaskManager在Flink中TaskManager就是一个管理task的进程,每个节点只有一个TaskManagerSlotSlot就是TaskManager中的槽位,一个TaskManager中可…...

计算机竞赛 python 爬虫与协同过滤的新闻推荐系统

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python 爬虫与协同过滤的新闻推荐系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...