5-对象的访问权限

news2024/11/21 15:43:17

对象的访问权限知识点

对象的分类

在数据库中,数据库的表、索引、视图、缺省值、规则、触发器等等、都可以被称为数据库对象,其中对象主要分为两类

1、模式(schema)对象:模式对象可以理解为一个存储目录、包含视图、索引、数据类型、函数和操作符等。也就是放在模式下的对象,都被叫做模式对象

2、非模式对象:其他的数据库对象、如数据库、表空间、用户

对象访问权限概述

1、对象都会有owner(所有者),所有者一般是对象的创建者,但所有者是可以被改变的;如使用root用户创建了一个目录,该目录当前的所有者是root,当然还可以使用chown命令来将所有者改为kingbase

2、初始转态下,只有所有者(或者超级用户)呢个够对改对象执行任何操作

3、其他用户和角色想要使用该对象,需要被授予相关的权限

定义访问权限(GRANT 权限 ON 对象类型 对象名 TO 用户/角色)

定义访问权限,相当与给予某个用户或角色权限:记住GRANT 权限 ON 对象类型 对象名 TO 用户/角色,即给用户/角色授予针对某个对象的某种权限

授予权限主要是使用GRANT来授权,但不同的对象类型支持的权限类型是有差异的

1、针对数据库的授权

在此之前,我们应该先明白数据库具有什么权限,才能为数据库进行正确的授权

语法:GRANT [CREATE | CONNECT | TEMPORARY | TEMP |…| ALL [PRIVILEGES] ]

ON DATABASE database_name;给哪个数据库权限

TO role_specification;给哪个用户

权限描述
CRETAE在数据库下创建对象的权限
CONNECT连接数据库的权限
TEMPORARY在数据库下创建临时表
TEMP在数据库下创建临时表

2、针对模式的授权

GRANT [ CREATE | USAGE |…| ALL [PRIVILEGES] ]

ON SCHEMA schema_name;给哪个模式授权

TO role_specification;给哪个用户授权

权限描述
CREATE在这个模式下可以再创建对象
USAGE因为模式相当与一个文件夹,当有了usage权限后就可以进入该文件夹内

3、针对表空间授权

GRANT [ CREATE | ALL [ PRIVILEGES ] ]

ON TABLESPACE tablespace_name

TO role_specification

4、针对表的授权

GRANT [ SELECT | INSERT | UPDATE | TRUNCATE | REFERENCES | TRIGGER | DELETE |…| ALL [PRIVILEGES]]

ON { [ TABLE ] table_name

​ | ALL TABLES IN SCHEMA schema_name }

TO role_specification

权限描述
SELECT查询
INSERT插入
UPDATE更新
TRUNCATE(truncate)截断,快速删除表中的所有数据
REFERENCES(references)外键约束,在表中创建一个字段
TRIGGER(trigger)触发器
EDLETE删除

5、针对列的授权

GRANT { [ SELECT | INSERT | UPDATE | REFERNCES] ( column_name […] ) […] | ALL [PRIVILEGES] ( colume_name […] ) }

ON [ TABLE ] table_name

TO role_specification

6、针对序列的授权

GRANT { [ USAGE | SELECT | UPDATE ] … [ ALL [PRIVILEGES ]]}

ON { SEQUENCE sequence_name

| ALL SEQUENCES IN SCHEMA schema_name }

TO role_specification

7、针对函数的授权

GRANT { EXECUTE | ALL [PRIVILEGES ] }

ON { FUNCTION function_name ( [ argmode [arg_name] arg_type ] ) | ALL FUNCTIONS IN SCHEMA schema_name }

TO role_specfication

移除访问权限(REVOKE 权限 ON 对象类型 对象名 TO 用户/角色)

移除访问权限,就是针对某个用户或角色去除它的权限,记住:REVOKE 权限 ON 对象类型 对象名 TO 用户/角色,即给用户/角色去除针对某个对象的某种权限

1、针对数据库的授权

REVOKE [ GRANT OPTION FOR ] [CREATE | CONNECT | TEMPORARY | TEMP |…| ALL [PRIVILEGES] ]

ON DATABASE database_name;给哪个数据库权限

FROM { [ GROUP ] role_name | PUBLIC } […] [ CASCADE | RESTRICT ]

2、针对模式授权

REVOKE [ GRANT OPTION FOR ] [ CREATE | USAGE |…| ALL [PRIVILEGES] ]

ON SCHEMA schema_name;给哪个模式授权

FROM { [ GROUP ] role_name | PUBLIC } […] [ CASCADE | RESTRICT ]

3、针对表空间授权

REVOKE [ GRANT OPTION FOR ] [ CREATE | ALL [ PRIVILEGES ] ]

ON TABLESPACE tablespace_name

FROM { [ GROUP ] role_name | PUBLIC } […] [ CASCADE | RESTRICT ]

4、针对表授权

REVOKE [ GRANT OPTION FOR ] [ SELECT | INSERT | UPDATE | TRUNCATE | REFERENCES | TRIGGER | DELETE |…| ALL [PRIVILEGES]]

ON { [ TABLE ] table_name

​ | ALL TABLES IN SCHEMA schema_name }

FROM { [ GROUP ] role_name | PUBLIC } […] [ CASCADE | RESTRICT ]

5、针对列的授权

REVOKE [ GRANT OPTION FOR ] { [ SELECT | INSERT | UPDATE | REFERNCES] ( column_name […] ) […] | ALL [PRIVILEGES] ( colume_name […] ) }

ON [ TABLE ] table_name

FROM { [ GROUP ] role_name | PUBLIC } […] [ CASCADE | RESTRICT ]

6、针对序列授权

REVOKE [ GRANT OPTION FOR ] { [ USAGE | SELECT | UPDATE ] … [ ALL [PRIVILEGES ]]}

ON { SEQUENCE sequence_name

| ALL SEQUENCES IN SCHEMA schema_name }

FROM { [ GROUP ] role_name | PUBLIC } […] [ CASCADE | RESTRICT ]

7、针对函数授权

REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [PRIVILEGES ] }

ON { FUNCTION function_name ( [ argmode [arg_name] arg_type ] ) | ALL FUNCTIONS IN SCHEMA schema_name }

TO role_specfication

权限描述符

符号全称解释
aINSERT插入,针对表或视图进行
rSELECT查询,针对表或视图进行
wUPDATE更新,针对表或视图进行
dDELECT删除,针对表或视图进行
DTRUNCATE清空记录,针对表
xREFERENCES参照引用,针对表
tTRIGGER创建触发器,针对表
XEXECUTE执行,针对存储过程(pl/sql对象)
UUSAGE使用权,针对模式,可以进入到模式下
CCREATE创建对象,针对模式或数据库
cCONNECT创建连接,针对数据库
TTEMPORARY创建临时表,针对数据库

如"user01=ar*/SYSTEM"

上述内容对应的是[被授权用户]=权限明细[*]/授权用户,其中[被授权用户]是user01

ar表示INSERT和SELECT,r*表示user01拥有r(SELECT)权限的转授权,SYSTEM说明user01的ar*权限是来自与SYSTEM用户的授权

"*"表示被授权用户拥有该权限的转授权(用于级联授权)

实验1:查看对象访问权限的主要方式

图形化界面查看权限

查看system对数据库的对象权限,右键[system]用户,点击[编辑用户],点击[对象权限]即可查看全部权限

image-20241030112301463

通过"ksql元命令"来查看权限

查看数据库下的权限

登录system用户查看system对数据库的存储权限,可以使用"\l"来查看权限、

test=# \l
                                  数据库列表
   名称    | 拥有者 | 字元编码 |  校对规则   |    Ctype    |     存取权限      
-----------+--------+----------+-------------+-------------+-------------------
 kingbase  | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 security  | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 template0 | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system        +
           |        |          |             |             | system=CTc/system
 template1 | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system        +
           |        |          |             |             | system=CTc/system
 test      | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
(5 行记录)

可以看到存储权限那一列中,就采用了权限描述符来描述权限的具体信息

如"system=CTc/system",其表示有system授予system权限,C允许创建数据库的权限,T允许创建临时表的权限,c允许连接的权限

查看模式下的权限

可以使用元命令"\dn+",可以从存储权限中看到权限描述符

如sso=UC/system;表示有system用户授予sso,U表示sso用户可以进入到模式下,C表示sso用户可以在模式下创建对象

test=# \dn+
                             架构模式列表
       名称       | 拥有者 |     存取权限     |          描述          
------------------+--------+------------------+------------------------
 anon             | system | system=UC/system+| 
                  |        | sso=UC/system    | 
 dbms_sql         | system |                  | 
 public           | system | system=UC/system+| standard public schema
                  |        | =UC/system       | 
 src_restrict     | system | system=UC/system+| 
                  |        | sso=UC/system    | 
 sysaudit         | system | system=UC/system+| 
                  |        | sso=UC/system   +| 
                  |        | sao=UC/system   +| 
                  |        | =UC/system       | 
 sysmac           | system | system=UC/system+| 
                  |        | sso=UC/system   +| 
                  |        | =U/system        | 
 xlog_record_read | system |                  | 
(7 行记录)

查看表下的权限

使用元命令"\dp"可以查看表的信息

test=# \dp
                                     存取权限
 架构模式 |          名称           | 类型 |       存取权限        | 列特权 | 策略 
----------+-------------------------+------+-----------------------+--------+------
 public   | sys_stat_statements     | 视图 | system=arwdDxt/system+|        | 
          |                         |      | =r/system             |        | 
 public   | sys_stat_statements_all | 视图 | system=arwdDxt/system+|        | 
          |                         |      | =r/system             |        | 
(2 行记录)

1、使用system用户登录test数据库

test=# \conninfo
以用户 "system" 的身份,通过套接字"/tmp"在端口"54321"连接到数据库 "test"

2、创建user01用户

test=# create user user01;
test=# alter user user01 password 'kingbase'
test-# ;									//修改user01的密码
ALTER ROLE

3、在public模式下创建t01表(字段为id和name,类型分别为int和text)

test=# create table public.t01 (id int,name text);
CREATE TABLE

4、向t01表中插入数据

test=# insert INTO public.t01 values (100,'a'),(200,'b');
INSERT 0 2
test=# select * from public.t01 
test-# ;
 id  | name 
-----+------
 100 | a
 200 | b
(2 行记录)

5、授权user01用户可查询t01表(第一行数据为100,‘a’;200,‘b’)

test=# grant SELECT on public.t01 TO user01;
GRANT
test=# \c - user01
您现在已经连接到数据库 "test",用户 "user01".
test=> select * from public.t01 ;
 id  | name 
-----+------
 100 | a
 200 | b
(2 行记录)

6、查看授权结果

test=# \dp public.t01 
                             存取权限
 架构模式 | 名称 |  类型  |       存取权限        | 列特权 | 策略 
----------+------+--------+-----------------------+--------+------
 public   | t01  | 数据表 | system=arwdDxt/system+|        | 
          |      |        | user01=r/system       |        | 
(1 行记录)

通过"数据字典"查看访问权限

数据字典是将数据库系统的信息组织到表中统一管理,也可称之数据字典表SystemCatalogTable,KES中的数据字典组织到Schema中

就是将数据库的全部信息全部都放在一张表内,以供我们查询,而这种表就被称为数据字典(类似与密码字典)

但是这种方法难度较大,需要记忆较多数据字典的视图以及其对应的字段

通过权限查询函数来查看访问权限

通过使用权限查询函数。来观察返回值是true还是flase

实验2:对象所有权限实验

查看表的所有者

使用"\dt+ table_name"可以查看表的拥有者

test=# \dt+ 
                     关联列表
 架构模式 | 名称 |  类型  | 拥有者 | 大小  | 描述 
----------+------+--------+--------+-------+------
 public   | t01  | 数据表 | system | 16 kB | 
 public   | t02  | 数据表 | user02 | 16 kB | 
(2 行记录)

验证对象的创建者默认就是对象的所有者

创建t02表

1、使用system用户身份登录test数据库

test=# \conninfo                                                                                
以用户 "system" 的身份,通过套接字"/tmp"在端口"54321"连接到数据库 "test"

2、在public模式中创建t02表

test=# create table public.t02 (id int,name text);
CREATE TABLE

查看t02的所有者

test=# \dt+ public.t02 
                       关联列表
 架构模式 | 名称 |  类型  | 拥有者 |    大小    | 描述 
----------+------+--------+--------+------------+------
 public   | t02  | 数据表 | system | 8192 bytes | 
(1 行记录)

可以看到我们有system用户创建的t02表这个对象,那么t02表就是属于system用户的

改变对象的所有者

创建user02用户;查看t02表的所有者

test=# create user user02;
CREATE ROLE
test=# alter user user02 password 'kingbase';
ALTER ROLE
test=# \dt+ t02
                       关联列表
 架构模式 | 名称 |  类型  | 拥有者 |    大小    | 描述 
----------+------+--------+--------+------------+------
 public   | t02  | 数据表 | system | 8192 bytes | 
(1 行记录)

将t02表的拥有者修改为user02;查看t02表的所有者

test=# alter table public.t02 owner to user02;
ALTER TABLE
test=# \dt+ public.t02 
                       关联列表
 架构模式 | 名称 |  类型  | 拥有者 |    大小    | 描述 
----------+------+--------+--------+------------+------
 public   | t02  | 数据表 | user02 | 8192 bytes | 

可以看到经过我们修改之后,public模式下的t02表的拥有着从system更改到user02上

拥有者在对象上的特殊权限不能被授予或撤销

像DROP、GRANT、REVOKE这些特殊权限总是隐式地属于所有者,是不能直接查询到这些权限信息的,需要在使用数据字典来查看

使用元命令查看t02表的权限列表

test=# \dt+ public.t02 
                       关联列表
 架构模式 | 名称 |  类型  | 拥有者 |    大小    | 描述 
----------+------+--------+--------+------------+------
 public   | t02  | 数据表 | user02 | 8192 bytes | 
(1 行记录)
test=# \dp+ public.t02 
                      存取权限
 架构模式 | 名称 |  类型  | 存取权限 | 列特权 | 策略 
----------+------+--------+----------+--------+------
 public   | t02  | 数据表 |          |        | 
(1 行记录)

用数据字典查看t02表的权限列表

在数据字典内可以看到如DROP、GRANT等这些特殊权限的列表

test=# select * from information_schema.table_privileges where table_catalog='test' and table_schema='public' and table_name='t02'; 
 grantor | grantee | table_catalog | table_schema | table_name | privilege_type | is_grantable | with_hierarchy 
---------+---------+---------------+--------------+------------+----------------+--------------+----------------
 user02  | user02  | test          | public       | t02        | INSERT         | YES          | NO
 user02  | user02  | test          | public       | t02        | SELECT         | YES          | YES
 user02  | user02  | test          | public       | t02        | UPDATE         | YES          | NO
 user02  | user02  | test          | public       | t02        | DELETE         | YES          | NO
 user02  | user02  | test          | public       | t02        | TRUNCATE       | YES          | NO
 user02  | user02  | test          | public       | t02        | REFERENCES     | YES          | NO
 user02  | user02  | test          | public       | t02        | TRIGGER        | YES          | NO
(7 行记录)

最终验证对象拥有着的DROP、GRANT、REVOKE等特殊权限不能被授予或撤销

test=# revoke drop on TABLE t02 from user02;
错误:  未知的权限类型: "drop
test=# REVOKE GRANT ON TABLE t02 FROM user02;
错误:  语法错误 在 "ON" 或附近的
第1行REVOKE GRANT ON TABLE t02 FROM user02;
test=# GRANT drop on table t02 to user02;
错误:  未知的权限类型: "drop"
test=# GRANT revoke on table t02 to user02;
错误:  未知的权限类型: "revoke"

报错提示未知权限的原因是在普通的查询权限中根本是查不到DROP、GRANT等这种特殊权限的,所以才会显示未知权限

所有者或system可以撤销所有者在表中的普通权限

修改t02表的所有者user02用户的权限,只保留对t02表的查询权限

使用user02用户或system用户登录test数据库

1、撤销user02用户在t02表上的所有普通权限

test=# revoke all on TABLE t02 from user02;
REVOKE

2、授予用户user02对t02表的查询权限

test=# grant SELECT on TABLE t02 to user02;
GRANT

3、实验验证user02对t02表的权限

test=# insert INTO public.t02 values (100,'a');
INSERT 0 1

查看t02表的权限信息

test=# \dt+ public.t02 									//查看public.t02的拥有者
                     关联列表
 架构模式 | 名称 |  类型  | 拥有者 | 大小  | 描述 
----------+------+--------+--------+-------+------
 public   | t02  | 数据表 | user02 | 16 kB | 
(1 行记录)
test=# \dp public.t02 								    //查看public.t02下的权限
                          存取权限
 架构模式 | 名称 |  类型  |    存取权限     | 列特权 | 策略 
----------+------+--------+-----------------+--------+------
 public   | t02  | 数据表 | user02=r/user02 |        | 
(1 行记录)

可以看到原本user02是t02的所有者,应该拥有全部的普通权限,但我们依然可以撤销user02的普通权限,并且再加上select的权限给user02

实验3:授权普通用户访问对象

实验准备

1、再schema为public下创建测试表t03,其中t03的字段分别为id和name,类型分别为int和text

test=# create table public.t03 (id int,name text);
CREATE TABLE

2、创建user03用户,密码为kingbase

test=# create user user03 password 'kingbase';
CREATE ROLE

授予用户访问数据库的权限

1、给user03授予可以连接数据库test的权限

test=# grant CONNECT ON DATABASE test TO user03;
GRANT

2、查看test数据库的权限列表

test=# \l test 
                                数据库列表
 名称 | 拥有者 | 字元编码 |  校对规则   |    Ctype    |     存取权限      
------+--------+----------+-------------+-------------+-------------------
 test | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =Tc/system       +
      |        |          |             |             | system=CTc/system+
      |        |          |             |             | user03=c/system
(1 行记录)

image-20241030184803672

授予用户访问模式(schema)的权限

1、授予user03用户可以访问public模式

test=# grant USAGE ON SCHEMA public TO user03;
GRANT

2、查看public模式的权限列表

test=# \dn+ public 
                        架构模式列表
  名称  | 拥有者 |     存取权限     |          描述          
--------+--------+------------------+------------------------
 public | system | system=UC/system+| standard public schema
        |        | =UC/system      +| 
        |        | user03=U/system  | 
(1 行记录)

image-20241030184921532

授予用户访问表的权限

1、授权user03可以查询t03表

test=# grant SELECT ON TABLE public.t03 TO user03;
GRANT

2、查看t03表的权限列表

test=# \dp public.t03
                             存取权限
 架构模式 | 名称 |  类型  |       存取权限        | 列特权 | 策略 
----------+------+--------+-----------------------+--------+------
 public   | t03  | 数据表 | system=arwdDxt/system+|        | 
          |      |        | user03=ar/system      |        | 
(1 行记录)

image-20241030185553852

授予用户先表中插入数据的权限

1、授予user03可以向t03表插入数据

test=# grant INSERT ON TABLE public.t03 TO user03 ;
GRANT

2、查看t03表的权限列表

test=# \dp public.t03
                             存取权限
 架构模式 | 名称 |  类型  |       存取权限        | 列特权 | 策略 
----------+------+--------+-----------------------+--------+------
 public   | t03  | 数据表 | system=arwdDxt/system+|        | 
          |      |        | user03=ar/system      |        | 
(1 行记录)

image-20241030185553852

如图,user03=ar/system表示有system用户授予user03,"a"插入权限。"r"查询权限

验证

1、使用user03用户登录test数据库

test=# \c test user03
您现在已经连接到数据库 "test",用户 "user03".
test=> \conninfo 
以用户 "user03" 的身份,通过套接字"/tmp"在端口"54321"连接到数据库 "test"

2、user03用户能查询t03表

test=> select * from public.t03 ;
 id | name 
----+------
(0 行记录)

3、user03能先t03表中插入数据,插入数据为(1,‘a’)和(2,‘b’)

test=> select * from public.t03 ;
 id | name 
----+------
  1 | a
  2 | b
(2 行记录)

收回public角色的默认权限

查看public角色拥有的默认权限

1、查看public角色再test数据库中的权限

其中"=Tc"表示public角色内的所有用户对test数据库拥有Tc权限

补充说明:T表示TEMPORARY拥有临时创建表权限,c表示CONNECT拥有连接权限

test=> \l test
                                数据库列表
 名称 | 拥有者 | 字元编码 |  校对规则   |    Ctype    |     存取权限      
------+--------+----------+-------------+-------------+-------------------
 test | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =Tc/system       +
      |        |          |             |             | system=CTc/system+
      |        |          |             |             | user03=c/system
(1 行记录)

image-20241030192950827

2、查看public角色在public模式中的权限

注:"=UC"表示public角色内的所有用户对public模式拥有UC权限

"U"表示USAGE能够进入public模式下,"C"表示能在public模式下创建对象

test=> \dn+ public 
                        架构模式列表
  名称  | 拥有者 |     存取权限     |          描述          
--------+--------+------------------+------------------------
 public | system | system=UC/system+| standard public schema
        |        | =UC/system      +| 
        |        | user03=U/system  | 
(1 行记录)

image-20241030193039292

验证public角色拥有的默认权限

注:所有用户默认都属于public,所有用户默认能登录test库,能在public模式下创建对象

1、使用system用户登录test数据库,创建user04用户

您现在已经连接到数据库 "test",用户 "system".
test=# \conninfo 
test=# create user user04 password 'kingbase';
CREATE ROLE

2、使用user04登录test数据库,使用user04在public模式下创建表t04

test=> \conninfo
以用户 "user04" 的身份,通过套接字"/tmp"在端口"54321"连接到数据库 "test"
test=> create table public.t04 (id int,name text);
CREATE TABLE

收回public角色在test数据库的默认权限

1、使用system登录test数据库,回收public角色在test数据库的所有权限

test=# revoke all ON DATABASE test FROM PUBLIC ;
REVOKE

查看test数据库的权限列表,此时应该"UC/system"已经消失

image-20241030193652465

2、验证,此时user04已经无权登录test数据库了

test=# \c test user04
致命错误:  访问数据库"test"的权限不够
描述:  用户没有CONNECT权限.
保留上一次连接

回收public角色在public模式中的默认权限

1、显式的授权user04可登录test数据库,显式的意思就是使用system直接给user04授予权限

test=# grant CONNECT ON DATABASE test TO user04 ;
GRANT

2、收回public角色在public模式中的所有权限

可以看到public模式下"=UC/system"已经消失(被收回)

test=# revoke ALL ON SCHEMA public FROM PUBLIC ;
REVOKE
test=# \dn+ public  
                        架构模式列表
  名称  | 拥有者 |     存取权限     |          描述          
--------+--------+------------------+------------------------
 public | system | system=UC/system+| standard public schema
        |        | user03=U/system  | 
(1 行记录)

image-20241030193951457

3、验证user04用户在模式中创建对象的权限

如果操作没有问题,那么user04是不能在public模式下创建对象(一个表)

test=> create table public.t05 (id int,name text);
错误:  对模式 public 权限不够
第1行create table public.t05 (id int,name text);

总结

我们在学习数据库中的角色/用户的权限的时候,一定要知道数据库的层级关系是怎么样的,从而授予/回收权限

如,test数据库下是public模式,public模式下是t03数据表等等

在授权一个用户/角色可以读取表时,也是按照这样的层级关系来授权;授予用户对test数据库的连接(CONNECT)权限,接着授予用户对public模式的进入(USAGE)权限,最后授予用户对t03数据表有插入和查询权限(INSERT和SELECT);这样一个最基本的用户/角色授权就完成了

当我们不去授权用户/角色对数据库和模式的权限时,而是直接授权对数据表的权限时,其实也是可以正常地查询到数据表的,这就是因为public角色的存在,默认情况下,所有创建的用户都是属于public角色的;而public角色是对数据库有"Tc"权限的,T表示可以创建临时表,c表示允许连接,对所有的模式有UC权限的,U表示进入模式权限,C表示允许在模式下创建对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2244750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在vscode 中打开新文件不覆盖上一个窗口

在 VSCode 中,如果你单击文件时出现了覆盖Tab的情况,这通常是因为VSCode默认开启了预览模式。在预览模式下,单击新文件会覆盖当前预览的文件Tab。为了解决这个问题,你可以按照以下步骤进行操作 1.打开VSCode:启动你的…

【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)

【网络系统管理】Centos7——配置主从mariadb服务器案例-CSDN博客 接上个文档,我们已经完成了主服务器创建数据库备服务器可以看到 一、在DBMS2查看信息 File,Position这两个字段的数据要记好,等一下需要用到 show master status; 二、在…

C#编写的日志记录组件 - 开源研究系列文章

以前编写过一个日志记录组件的博文,这次发布一个修改过的完善版本。 1、 项目目录; 2、 源码介绍; 1) 实现; 2) 使用; 后面的参数为级别设置,只有大于这个级别的才进行日志记录,限制了日志记录的…

react 如何修改弹出的modal的标题

原来标题的样子&#xff1a; 修改为&#xff1a; 实现方式&#xff1a; <Modal title<span>股价趋势/{this.state.pccode}</span> visible{this.state.isPriceModalOpen} style{{ top: 20 }} width{1320} height{400} footer{null} onCancel{()>this.hideMo…

学习threejs,对模型多个动画切换展示

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.AnimationMixer 动画…

笔记01----Transformer高效语义分割解码器模块DEPICT(即插即用)

学习笔记01----即插即用的解码器模块DEPICT 前言源码下载DEPICT实现实验 前言 文 章 标 题&#xff1a;《Rethinking Decoders for Transformer-based Semantic Segmentation: Compression is All You Need》 当前的 Transformer-based 方法&#xff08;如 DETR 和其变体&…

layui合并table相同内的行

<table border"1" id"table1" class"layui-table"><thead><tr><th><b>姓名</b></th><th><b>项目</b></th><th><b>任务</b></th><th><b>…

【大模型】大模型RAG检索增强生成技术使用详解

目录 一、前言 二、RAG技术介绍 2.1 RAG是什么 2.2 RAG工作原理 2.3 RAG优势 2.4 RAG应用场景 三、在线大模型平台RAG技术使用 3.1 阿里百炼平台 3.1.1 创建知识库 3.1.2 导入文档数据 3.1.3 文档数据解析 3.1.4 查看数据 3.2 百度文心智能体 3.2.1 创建知识库 3…

人工智能与SEO优化中的关键词策略解析

内容概要 在当今数字化快速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;与搜索引擎优化&#xff08;SEO&#xff09;的结合正变得愈发重要。关键词策略是SEO优化的一项基础工作&#xff0c;它直接影响到网站的可见性和流量。通过运用智能算法&#xff0c;企业能…

【WRF-Urban】WRF 4.3版本中城市模块更新总结

【WRF-Urban】WRF 4.3版本中城市模块更新总结 WRF 4.3 版本中城市模块更新1. 局地气候区&#xff08;LCZ&#xff09;的引入WRF 查找表的修改&#xff1a;如何启用 11 类 LCZ 分类&#xff1a; 2. 屋顶缓解策略与建筑材料渗透性3. 新的建筑物阻力系数处理 使用LCZ的WRF-Urban模…

【Apache Paimon】-- 6 -- 清理过期数据

目录 1、简要介绍 2、操作方式和步骤 2.1、调整快照文件过期时间 2.2、设置分区过期时间 2.2.1、举例1 2.2.2、举例2 2.3、清理废弃文件 3、参考 1、简要介绍 清理 paimon &#xff08;表&#xff09;过期数据可以释放存储空间&#xff0c;优化资源利用并提升系统运行效…

第二十周:机器学习

目录 摘要 ABSTRACT 一、吴恩达机器学习exp2——逻辑回归 1、logistic函数 2、数据预处理 3、损失函数 4、梯度下降 5、设定评价指标 6、决策边界 7、正则化 二、动手深度学习pytorch——数据预处理 1、数据集读取 2、缺失值处理 3、转换为张量格式 总结 摘要…

反转链表、链表内指定区间反转

反转链表 给定一个单链表的头结点pHead&#xff08;该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1&#xff09;&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 如当输入链表{1,2,3}时&#xff0c;经反转后&#xff0c;原链表变…

VScode学习前端-01

小问题合集&#xff1a; vscode按&#xff01;有时候没反应&#xff0c;有时候出来&#xff0c;是因为------>必须在英文状态下输入&#xff01; 把鼠标放在函数、变量等上面&#xff0c;会自动弹出提示&#xff0c;但挡住视线&#xff0c;有点不习惯。 打开file->pre…

【AI图像生成网站Golang】JWT认证与令牌桶算法

AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构 五、图床上传与图像生成API搭建 六、项目测试与调试(等待更新) 三、JWT认证与令牌桶算法 在现代后端开发中&#xff0c;用户认证和接口限流是确保系统安全性和性能的两大关键要素…

基于Kafka2.1解读Consumer原理

文章目录 概要整体架构流程技术名词解释技术细节coordinatorfetcherclientconsumer#poll的主要流程 全局总览小结 概要 继上一篇讲Producer原理的文章过去已经一个多月了&#xff0c;今天来讲讲Consumer的原理。 其实源码早就读了部分了&#xff0c;但是最近工作比较忙&#x…

测试使用vite搭建的uni-app打包app区分开发环境和生产环境

用脚手架搭建的uniapp项目&#xff0c;打包H5和小程序可以和web端一样&#xff0c;能够通过env.dev和env.prod区分开发环境和生产环境&#xff0c;但是不知道打包成app时如何区分开发环境和生产环境&#xff0c;在此做一个测试记录。 打开package.json文件&#xff0c;在scrip…

【提效工具开发】管理Python脚本执行系统实现页面展示

Python脚本执行&#xff1a;工具管理Python脚本执行系统 背景 在现代的软件开发和测试过程中&#xff0c;自动化工具和脚本的管理变得至关重要。为了更高效地管理工具、关联文件、提取执行参数并支持动态执行Python代码&#xff0c;我们设计并实现了一套基于Django框架的工具…

Qt-常用的显示类控件

QLabel QLabel有如下核心属性&#xff1a; 关于文本格式的验证&#xff1a; 其中<b>xxx<b>&#xff0c;就是加粗的意思。 效果&#xff1a; 或者再把它改为markdown形式的&#xff1a; 在markd中&#xff0c;#就是表示一级标题&#xff0c;我们在加上##后&#x…

2024 RISC-V中国峰会 安全相关议题汇总

安全之安全(security)博客目录导读 第四届 RISC-V 中国峰会(RISC-V Summit China 2024)于8月21日至23日在杭州成功举办。此次峰会汇聚了 RISC-V 国际基金会、百余家重点企业及研究机构,约3000人线下参与,并在19日至25日间举办了超过20场同期活动,与全球开发者共同…