alter table move跟shrink space的区别

2023-11-04

author:skate

time2010-05-28



alter table move跟shrink space的区别

今天主要从两点说他们的区别:

 

1. 碎片的整理

2.空间的收缩

 

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production

TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SQL>

 

创建测试表
SQL> create table test3 as
  2     select rownum id,
  3     dbms_random.string('a', round(dbms_random.value(0,10))) col1,
  4     trunc(sysdate) - dbms_random.value(1, 365*2) col2
  5     from dual connect by rownum<=10000;

Table created

 

SQL> select count(1) from test3;

  COUNT(1)
----------
     10000


查看表test3的blocks使用情况:

 

SQL> exec show_space_t('TEST3','auto','table','Y');

Total Blocks............................40
Total Bytes.............................327680
Unused Blocks...........................3
Unused Bytes............................24576
Last Used Ext FileId....................31
Last Used Ext BlockId...................481921
Last Used Block.........................5
 *************************************************
0% -- 25% free space blocks.............0
0% -- 25% free space bytes..............0
25% -- 50% free space blocks............0
25% -- 50% free space bytes.............0
50% -- 75% free space blocks............0
50% -- 75% free space bytes.............0
75% -- 100% free space blocks...........0
75% -- 100% free space bytes............0
Unused Blocks...........................0
Unused Bytes............................0
Total Blocks............................32
Total bytes.............................262144

 

PL/SQL procedure successfully completed


制造碎片

 

SQL> DELETE FROM TEST3 WHERE MOD(ID,3)=1;

3334 rows deleted

 

SQL> commit;

Commit complete

 

发现有碎片了

 

SQL> exec show_space_t('TEST3','auto','table','Y');

Total Blocks............................40
Total Bytes.............................327680
Unused Blocks...........................3
Unused Bytes............................24576
Last Used Ext FileId....................31
Last Used Ext BlockId...................481921
Last Used Block.........................5
 *************************************************
0% -- 25% free space blocks.............0
0% -- 25% free space bytes..............0
25% -- 50% free space blocks............31
25% -- 50% free space bytes.............253952
50% -- 75% free space blocks............1
50% -- 75% free space bytes.............8192
75% -- 100% free space blocks...........0
75% -- 100% free space bytes............0
Unused Blocks...........................0
Unused Bytes............................0
Total Blocks............................0
Total bytes.............................0

 

PL/SQL procedure successfully completed

SQL>

 

消除碎片


SQL> alter table test3 move;

Table altered

 

查看碎片消除的效果


SQL> exec show_space_t('TEST3','auto','table','Y');

Total Blocks............................32
Total Bytes.............................262144
Unused Blocks...........................6
Unused Bytes............................49152
Last Used Ext FileId....................31
Last Used Ext BlockId...................485065
Last Used Block.........................2
 *************************************************
0% -- 25% free space blocks.............0
0% -- 25% free space bytes..............0
25% -- 50% free space blocks............0
25% -- 50% free space bytes.............0
50% -- 75% free space blocks............0
50% -- 75% free space bytes.............0
75% -- 100% free space blocks...........0
75% -- 100% free space bytes............0
Unused Blocks...........................0
Unused Bytes............................0
Total Blocks............................22
Total bytes.............................180224

 

PL/SQL procedure successfully completed

SQL>

 

从以上看,碎片整理的效果很好!!!

 

下面在测试用shrink整理碎片

 

重建测试环境


SQL> drop table test3;

Table dropped

 

SQL>
SQL> create table test3 as
  2     select rownum id,
  3     dbms_random.string('a', round(dbms_random.value(0,10))) col1,
  4     trunc(sysdate) - dbms_random.value(1, 365*2) col2
  5     from dual connect by rownum<=10000;

Table created

 

查看test3的blocks的使用


SQL> exec show_space_t('TEST3','auto','table','Y');

Total Blocks............................40
Total Bytes.............................327680
Unused Blocks...........................3
Unused Bytes............................24576
Last Used Ext FileId....................31
Last Used Ext BlockId...................481921
Last Used Block.........................5
 *************************************************
0% -- 25% free space blocks.............0
0% -- 25% free space bytes..............0
25% -- 50% free space blocks............0
25% -- 50% free space bytes.............0
50% -- 75% free space blocks............0
50% -- 75% free space bytes.............0
75% -- 100% free space blocks...........0
75% -- 100% free space bytes............0
Unused Blocks...........................0
Unused Bytes............................0
Total Blocks............................32
Total bytes.............................262144

 

PL/SQL procedure successfully completed

 

制造碎片


SQL> delete from test3 where mod(id,3)=1;

3334 rows deleted

 

SQL> commit;

Commit complete

 

查看碎片情况
SQL> exec show_space_t('TEST3','auto','table','Y');

Total Blocks............................40
Total Bytes.............................327680
Unused Blocks...........................3
Unused Bytes............................24576
Last Used Ext FileId....................31
Last Used Ext BlockId...................481921
Last Used Block.........................5
 *************************************************
0% -- 25% free space blocks.............0
0% -- 25% free space bytes..............0
25% -- 50% free space blocks............31
25% -- 50% free space bytes.............253952
50% -- 75% free space blocks............0
50% -- 75% free space bytes.............0
75% -- 100% free space blocks...........0
75% -- 100% free space bytes............0
Unused Blocks...........................0
Unused Bytes............................0
Total Blocks............................1
Total bytes.............................8192

 

PL/SQL procedure successfully completed

 

用oracle10g新功能整理碎片


SQL> alter table test3 shrink space compact cascade;

alter table test3 shrink space compact cascade

ORA-10636: ROW MOVEMENT is not enabled

 

SQL> alter table test3 enable row movement;

Table altered

 

SQL> alter table test3 shrink space compact cascade;

Table altered

 

再次查看碎片的情况,发现还有一些碎片,整理碎片效果不好


SQL> exec show_space_t('TEST3','auto','table','Y');

Total Blocks............................40
Total Bytes.............................327680
Unused Blocks...........................3
Unused Bytes............................24576
Last Used Ext FileId....................31
Last Used Ext BlockId...................481921
Last Used Block.........................5
 *************************************************
0% -- 25% free space blocks.............1
0% -- 25% free space bytes..............8192
25% -- 50% free space blocks............2
25% -- 50% free space bytes.............16384
50% -- 75% free space blocks............0
50% -- 75% free space bytes.............0
75% -- 100% free space blocks...........12
75% -- 100% free space bytes............98304
Unused Blocks...........................0
Unused Bytes............................0
Total Blocks............................17
Total bytes.............................139264

 

PL/SQL procedure successfully completed

 

上面是没降低HWM,如果载降低HWM,看看效果


SQL> alter table test3 shrink space cascade;

Table altered

SQL> exec show_space_t('TEST3','auto','table','Y');

Total Blocks............................24
Total Bytes.............................196608
Unused Blocks...........................0
Unused Bytes............................0
Last Used Ext FileId....................31
Last Used Ext BlockId...................481897
Last Used Block.........................8
 *************************************************
0% -- 25% free space blocks.............1
0% -- 25% free space bytes..............8192
25% -- 50% free space blocks............2
25% -- 50% free space bytes.............16384
50% -- 75% free space blocks............0
50% -- 75% free space bytes.............0
75% -- 100% free space blocks...........0
75% -- 100% free space bytes............0
Unused Blocks...........................0
Unused Bytes............................0
Total Blocks............................17
Total bytes.............................139264

 

PL/SQL procedure successfully completed

 

看来用shrink space整理碎片不彻底,再来看看move的方式

 

SQL> alter table test3 move;

Table altered

SQL> exec show_space_t('TEST3','auto','table','Y');

Total Blocks............................32
Total Bytes.............................262144
Unused Blocks...........................6
Unused Bytes............................49152
Last Used Ext FileId....................31
Last Used Ext BlockId...................485081
Last Used Block.........................2
 *************************************************
0% -- 25% free space blocks.............0
0% -- 25% free space bytes..............0
25% -- 50% free space blocks............0
25% -- 50% free space bytes.............0
50% -- 75% free space blocks............0
50% -- 75% free space bytes.............0
75% -- 100% free space blocks...........0
75% -- 100% free space bytes............0
Unused Blocks...........................0
Unused Bytes............................0
Total Blocks............................22
Total bytes.............................180224

 

PL/SQL procedure successfully completed

 

效果很明显,整理的很彻底

 

测试结论:

虽然alter table move和shrink space,都是通过物理调整rowid来整理碎片的,但shrink space整理的不彻底,他好像不是重组,而是尽可能的合并,随意会残留一些block无法整理

 

注意:

 

1.再用alter table table_name move时,表相关的索引会失效,所以之后还要执行 alter index index_name rebuild online; 最后重新编译数据库所有失效的对象

 

2. 在用alter table table_name shrink space cascade时,他相当于alter table table_name move和alter index index_name rebuild online. 所以只要编译数据库失效的对象就可以

 

 

alter table move和shrink space除了碎片整理的效果有时不一样外,还有什么其他的不同呢

 


1. Move会移动高水位,但不会释放申请的空间,是在高水位以下(below HWM)的操作。
2. shrink space 同样会移动高水位,但也会释放申请的空间,是在高水位上下(below and above HWM)都有的操作。

 

下面通过实验来验证


SQL> drop table test3;

Table dropped

 

SQL>
SQL> create table test3 as
  2     select rownum id,
  3     dbms_random.string('a', round(dbms_random.value(0,10))) col1,
  4     trunc(sysdate) - dbms_random.value(1, 365*2) col2
  5     from dual connect by rownum<=10000;

Table created

 

SQL> analyze table test3 compute statistics;

Table analyzed

                                                                         

SQL> col segment_name for a10;
SQL> select us.segment_name,us.extents,us.blocks from user_segments us where us.segment_name=upper('test3');

SEGMENT_NA    EXTENTS     BLOCKS
---------- ---------- ----------
TEST3               5         40

 

SQL> col table_name for a10;
SQL> select table_name,blocks,t.empty_blocks  from user_tables t where t.table_name=upper('test3');

TABLE_NAME     BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
TEST3              37            3

SQL>


从以上查询可以看出共分了5个extents,使用了37个blocks,这37也就是test3的HWM

 

 

SQL> delete from test3 where rownum<=5000;

5000 rows deleted

 

SQL> commit;

Commit complete

 

SQL> analyze table test3 compute statistics;

Table analyzed

 

SQL> col segment_name for a10;
SQL> select us.segment_name,us.extents,us.blocks from user_segments us where us.segment_name=upper('test3');

SEGMENT_NA    EXTENTS     BLOCKS
---------- ---------- ----------
TEST3               5         40

 

SQL> col table_name for a10;
SQL>  select table_name,blocks,t.empty_blocks  from user_tables t where t.table_name=upper('test3');

TABLE_NAME     BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
TEST3              37            3

 

SQL> select count(distinct dbms_rowid.rowid_block_number(rowid)) used_blocks from test3;

USED_BLOCKS
-----------
         17


我们从查询中可以发现test3的HWM没有变换还是37blocks,tests总共空间为40blocks。经过删除后test3实际用的块是17个

 


下面我们用move降低下HWM

 

SQL> alter table test3 move;

Table altered

 

SQL> col segment_name for a10;
SQL> select us.segment_name,us.extents,us.blocks from user_segments us where us.segment_name=upper('test3');

SEGMENT_NA    EXTENTS     BLOCKS
---------- ---------- ----------
TEST3               3         24

 

SQL> col table_name for a10;
SQL> select table_name,blocks,t.empty_blocks  from user_tables t where t.table_name=upper('test3');

TABLE_NAME     BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
TEST3              37            3

 

user_tables里的数据没有变化,哦,原来是忘记analyze了,从这里也可以看出user_segments是oracle自动维护的。

 

 

SQL> analyze table test3 compute statistics;

Table analyzed

 

SQL>  select us.segment_name,us.extents,us.blocks from user_segments us where us.segment_name=upper('test3');

SEGMENT_NA    EXTENTS     BLOCKS
---------- ---------- ----------
TEST3               3         24

 

SQL> select table_name,blocks,t.empty_blocks  from user_tables t where t.table_name=upper('test3');

TABLE_NAME     BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
TEST3              20            4

SQL>


现在再来看hwm变为20了,已经降下来了啊,空间也收缩了,从40blocks降到24blocks(注意收缩到initial指定值)。
但shrink space就收缩到存储数据的最小值,下面测试说明

 

创建测试表:


SQL>   create table test5 (id number) storage (initial 1m next 1m);

Table created

 

初始化数据


SQL>
SQL>   begin
  2     for i in 1..100000 loop
  3     insert into test5 values(i);
  4    end loop;
  5    end;
  6  /

PL/SQL procedure successfully completed

 

SQL> analyze table test5 compute statistics;

Table analyzed

 

SQL> select SEGMENT_NAME,EXTENTS,BLOCKS,INITIAL_EXTENT/1024/1024 init from user_segments where SEGMENT_NAME='TEST5';

SEGMENT_NA    EXTENTS     BLOCKS       INIT
---------- ---------- ---------- ----------
TEST5              17        256          1

 

SQL> select TABLE_NAME,BLOCKS,EMPTY_BLOCKS from user_tables where table_name='TEST5';

TABLE_NAME     BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
TEST5             180           76

 

 

可以从查询数据看出,test5初始化1m即128个blocks,但数据比较多,所以又按next参数要求扩展了1m空间,扩展了17个extents。
这里的test5总空间大小为256个blocks,使用空间为180blocks,HWM也是180blocks


SQL> delete from test5 where rownum<=50000;

50000 rows deleted

 

SQL> analyze table test5 compute statistics;

Table analyzed

 

SQL> select SEGMENT_NAME,EXTENTS,BLOCKS,INITIAL_EXTENT/1024/1024 init from user_segments where SEGMENT_NAME='TEST5';

SEGMENT_NA    EXTENTS     BLOCKS       INIT
---------- ---------- ---------- ----------
TEST5              17        256          1

 

SQL> select TABLE_NAME,BLOCKS,EMPTY_BLOCKS from user_tables where table_name='TEST5';

TABLE_NAME     BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
TEST5             180           76

 

整理碎片,降低HWM


SQL>  alter table test5 move;

Table altered


SQL> analyze table test5 compute statistics;

Table analyzed

 

SQL> select SEGMENT_NAME,EXTENTS,BLOCKS,INITIAL_EXTENT/1024/1024 init from user_segments where SEGMENT_NAME='TEST5';

SEGMENT_NA    EXTENTS     BLOCKS       INIT
---------- ---------- ---------- ----------
TEST5              16        128          1

 

SQL> select TABLE_NAME,BLOCKS,EMPTY_BLOCKS from user_tables where table_name='TEST5';

TABLE_NAME     BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
TEST5              85           43

 

从上面的查询数据可以看出HWM已经从180降低到85,test5总大小从256blocks收缩到128个blocks(initial指定大小)。


下面看看用shrink space收缩空间的情况

 

SQL> alter table test5 enable row movement;

Table altered


SQL> alter table test5 shrink space;

Table altered

 

SQL> select SEGMENT_NAME,EXTENTS,BLOCKS,INITIAL_EXTENT/1024/1024 init from user_segments where SEGMENT_NAME='TEST5';

SEGMENT_NA    EXTENTS     BLOCKS       INIT
---------- ---------- ---------- ----------
TEST5              11         88          1

 

SQL> select TABLE_NAME,BLOCKS,EMPTY_BLOCKS from user_tables where table_name='TEST5';

TABLE_NAME     BLOCKS EMPTY_BLOCKS
---------- ---------- ------------
TEST5              85           43

SQL>


从上面的数据可以看到test5进一步从128个blocks降低到88个blocks

 

结论:


shrink space收缩到数据存储的最小值,alter table move(不带参数)收缩到initial指定值,也可以用alter table test5 move storage(initial 500k)指定收缩的大小,这样可以达到shrink space效果

 

 

 

经过以上测试,得出的两个结论,到底用哪一个命令来整理碎片,消除行迁移呢?这就要根据实际业务需要,如果你只是收缩空间,数据增长很慢,那用shrink可以但是如果数据增长很快的话,用move就比较合适,避免再重新分配空间啊

 

 

 

备注:
在10g之后,整理碎片消除行迁移的新增功能shrink space

 

alter table <table_name> shrink space [ <null> | compact | cascade ];

 

compact:这个参数当系统的负载比较大时可以用,不降低HWM。如果系统负载较低时,直接用alter table table_name shrink space就一步到位了


cascade:这个参数是在shrink table的时候自动级联索引,相当于rebulid index。

 

普通表:

shrink必须开启行迁移功能。
alter table table_name enable row movement ;

 

保持HWM,相当于把块中数据打结实了
alter table table_name shrink space compact;

 

回缩表与降低HWM
alter table table_name shrink space;

 

回缩表与相关索引,降低HWM
alter table table_name shrink space cascade;

 

回缩索引与降低HWM
alter index index_name shrink space

 

虽然在10g中可以用shrink ,但也有些限制:

 

1). 对cluster,cluster table,或具有Long,lob类型列的对象 不起作用。
2). 不支持具有function-based indexes 或 bitmap join indexes的表
3). 不支持mapping 表或index-organized表。
4). 不支持compressed 表

 

 

 

 

------end------

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

alter table move跟shrink space的区别 的相关文章

  • 模式更新后 jOOQ 生成的类的运行时验证?

    我用org jooq util DefaultGenerator在构建过程中生成 jOOQ 类来表示我的数据库模式 当应用程序运行时 架构预计会在应用程序不知情的情况下发生更改 此类更改可能与已生成的代码兼容 也可能不兼容 如何在运行时检测
  • SQL参数化查询不显示结果

    我的 DataAcess 类中有以下函数 但它没有显示任何结果 我的代码如下 public List
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 如何将可视选择的文本通过管道传输到 UNIX 命令并将输出附加到 Vim 中的当前缓冲区

    使用 Vim 我尝试将在可视模式下选择的文本通过管道传输到 UNIX 命令 并将输出附加到当前文件的末尾 例如 假设我们有一个 SQL 命令 例如 SELECT FROM mytable 我想做如下的事情
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • 使用 JSON 参数的 Postgres 批量 INSERT 函数

    这是一个plpgsqlpostgres 的函数9 6 它试图INSERT一行 如果插入没有失败 由于违反键约束 那么它会运行更多命令 CREATE FUNCTION foo int text text RETURNS void AS BEG
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • 如何在 PostgreSQL 中使用具有多个值的 SQL LIKE 条件?

    有没有更短的方法来查找多个匹配项 SELECT from table WHERE column LIKE AAA OR column LIKE BBB OR column LIKE CCC 这个问题适用于 PostgreSQL 9 1 但如
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • PHP 通过 SSL 连接到 MS SQL

    我想要实现的目标非常简单 我想通过安全连接从 PHP 脚本连接到外部 MS SQL 数据库 然而 这已被证明是有问题的 到目前为止 经过三个小时的研究 我不知所措 客户端的平台是Ubuntu 这意味着我无法使用SQLSRV 安全连接已经在不
  • 内连接不重复,可以吗?

    鉴于这两个表 表 A1 有两行具有相同的值 a A1 a a 表 A2 有两行主键值为 A B 它们与 a 关联 A2 PK col2 A a B a 我想要的是 A1 和 A2 的连接并得到这个结果 a A a B 显然内连接在这里不起作
  • 为什么我可以像调用实例方法一样调用类方法?

    我正在查看这个例子 class SQLObject def self columns return columns if columns columns DBConnection execute2 lt lt SQL first SELEC
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 计算运行总计时出错(之前期间的累计)

    我有一张桌子 我们称之为My Table有一个Created日期时间列 在 SQL Server 中 我试图提取一个报告 该报告显示历史上有多少行My Table按月在特定时间 现在我知道我可以显示有多少added每个月 SELECT YE
  • 如何使用sql作为xml路径('')但保留回车符

    我有下面的代码 select select cast Narrative as Varchar max char 13 from officeclientledger where ptmatter matter and ptTrans 4
  • 如何使用 LAMBDA 表达式在 LINQ 中执行 IN 或 CONTAINS?

    我有以下 Transact Sql 我正在尝试将其转换为 LINQ 并且很挣扎 SELECT FROM Project WHERE Project ProjectId IN SELECT ProjectId FROM ProjectMemb
  • SQL - != 'NULL' 的解释

    我的SSMS代码如下 Select top 50 From FilteredContact Where statuscode 1 and emailaddress1 NULL and telephone1 NULL and address1
  • SQL 国家字符 (NCHAR) 数据类型的真正用途是什么?

    也CHAR CHARACTER and VARCHAR CHARACTER VARYING SQL 提供了NCHAR NATIONAL CHARACTER and NVARCHAR NATIONAL CHARACTER VARYING 类型

随机推荐

  • Springboot启动扩展点超详细总结,再也不怕面试官问了

    1 背景 Spring的核心思想就是容器 当容器refresh的时候 外部看上去风平浪静 其实内部则是一片惊涛骇浪 汪洋一片 Springboot更是封装了Spring 遵循约定大于配置 加上自动装配的机制 很多时候我们只要引用了一个依赖
  • NoSQL数据库概述

    简介 本文首先解释了NoSQL的出现的原因 介绍了NoSQL数据库所依据的理论和原则 然后分别介绍了四种NoSQL数据库的类型 以及其代表产品 并讨论了这四种类型的NoSQL的特点以及适用场景 需要NoSQL的理由 NoSQL数据库 看起来
  • Qt程序设置不重复打开该程序

    Qt程序设置不重复打开该程序 文章目录 Qt程序设置不重复打开该程序 对于已经打开的Qt桌面程序 我们希望用户再次双击桌面的快捷方式时 程序可以自动激活到其他所有程序的最前面 而不是重新打开一次程序 此时我们采用QSharedMemory方
  • 【图像处理】【去模糊】图像去模糊之初探--Single Image Motion Deblurring

    原文 原文地址 曾经很长一段时间 对图像去模糊都有一种偏见 认为这是一个灌水的领域 没有什么实用价值 要到这样的文章 不管是多高的档次 直接pass 最近在调研最近几年的关于Computational Photography的一些研究热点时
  • 莫言用 GPT 写颁奖辞,那如果他自己写会是什么效果呢?

    在 收获 杂志 65 周年庆典上 莫言在为余华颁奖时表示 余华是自己的好朋友 但给他的颁奖词写了好几天也想不出来 后来找了 ChatGPT 帮忙写 最后 莫言让 ChatGPT 写了一篇莎士比亚风格 1000 多字的颁奖词 输入了关键词 活
  • 数据仓库_缓慢渐变维_拉链表(全揭秘)

    这篇文章我们主要讲解下以下几个点 什么是拉链表 用于什么样的场景 拉链表的示例 如何获取某一天的历史状态 如何在使用维度拉链表并使用代理键的前提下 构建含维度代理键的事实表 1 什么是拉链表 用于什么样的场景 当维度数据发生变化时 将旧数据
  • Hutool:一行代码搞定数据脱敏

    1 什么是数据脱敏 1 1 数据脱敏的定义 数据脱敏百度百科中是这样定义的 数据脱敏 指对某些敏感信息通过脱敏规则进行数据的变形 实现敏感隐私数据的可靠保护 这样就可以在开发 测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集
  • 枭龙智能眼镜 XLOONG X100 Glass拆解

    这里只拆到主板过 首先需要对带Glass的可拆卸配件进行壳体加热 主机外壳有密封胶 吹风机对主机外壳的接缝处进行加热 可以从下侧的点开始用撬棒拆 拆开一个角之后沿着边慢慢打开 如果还是有阻尼感打不开 用吹风机加热再慢慢撬开 但是注意 打开幅
  • MySQL备份与恢复

    目录 数据库备份的分类 数据备份的重要性 数据库备份的分类 常见的备份方法 MySQL完全备份与恢复 MySQL完全备份介绍 MySQL完全备份的优缺点 数据库完全备份分类 完全备份操作 物理冷备份 逻辑备份 mysqldump的使用 My
  • python3.6打包成exe可执行文件,已解决方案

    将python程序打包成exe可执行文件有多种方法 这里讲一种最简单最常用的方法 只需要使用pyinstaller命令即可 一 环境 Windows 7或10 x64 Python 3 6 1 二 需要包 pyinstaller 3 3 p
  • JSON.stringify && JSON.parse

    原生JS 通过 ajax请求数据的时候控制台报500的错误 在这里记录一下 不喜勿喷哈 let submit document getElementsByClassName submit 0 submit addEventListener
  • idea突然打不开【解决方法整理总结】

    今天突发情况打不开 下面分情况讨论 欢迎大家给出不同的错误版本 狗头 一直这样 每天一遍qwq 解决方案 可以先找到idea安装根目录bin下 选中idea bat右键编辑 或者使用txt打开在idea bat最后一行添加 pause 打印
  • 解决pythoncharm中安装numpy无法调用的问题

    1 提示ImportError numpy core multiarray failed to import 可能问题 numpy的版本不合适 解决方法 1 卸载安装的numpy安装新的版本 pip uninstall numpy pip
  • 稀疏奖励及模仿学习(DataWhale组队学习笔记)

    稀疏奖励 在用强化学习解决现实问题时 我们对学习目标设置相应的奖励 但在庞大的状态空间中 智能体想要通过随机试错来获取奖励的概率是极低的 不获得奖励就没办法学习 我们将这种情况称作稀疏奖励 针对稀疏奖励问题 我们介绍以下几种解决方案 1 R
  • React脚手架

    React脚手架 xxx脚手架 用来帮助程序员快速创建一个基于xxx库的模板项目 包含了所有需要的配置 语法检查 jsx编译 devServer 下载好了所有相关的依赖 可以直接运行一个简单效果 react提供了一个用于创建react项目的
  • 传奇服务器开启生肖系统,英雄合击十二生肖商业版[带补丁]

    英雄合击十二生肖商业版 带补丁 新增功能 最新梦幻十二生肖 新模型 新样式 新一年的开始 多种表情 更强的脚本功能 长久寿命 返回不败传奇时代 加入新地图 精灵城 机械城 机械城下 怪物等级显示 支持原有 卧龙 英雄 合击 新技能 护体盾
  • 哈夫曼树与哈夫曼编码及等长编码

    哈夫曼树的构造 就是将给定的数据中选择最小的两个权值进行合并 然后重复该操作 构造出一个二叉树 使其带权路径长度WPL最小的二叉树称为哈夫曼树或最优二叉树 例如 给定几个数值 0 07 0 19 0 02 0 06 0 32 0 03 0
  • webFlux运算符决策树-个人翻译

    目录 创建新的序列 转换现有的序列 窥探序列 Peek 过滤序列 filter 错误处理 时间相关处理 分割一个序列 同步的操作 Flux广播给多个订阅者 Reactor运算符决策树 创建新的序列 发布已经获取的T just Flux Mo
  • 彻底解决Qt报错:无法定位程序输入点于动态链接库

    一 问题描述 前段时间使用Qt Creator写程序 在最后打包的时候出错 期间尝试修改环境变量的顺序 后来发现不是环境变量的问题 但问题解决后并未将环境变量改回 导致今天使用VS2019联合Qt编译之前程序 之前已验证正确 的时候报错 具
  • alter table move跟shrink space的区别

    author skate time2010 05 28 alter table move跟shrink space的区别 今天主要从两点说他们的区别 1 碎片的整理 2 空间的收缩 SQL gt select from v version