Redis数据类型之LIST类型

2024-12-14

Redis数据类型之LIST类型(9篇)

1.Redis数据类型之LIST类型 篇一

 

string类型-特点

string 是最简单的类型,你可以理解成与 Memcached 是一模一样的类型,一个 key对应一个value,其上支持的操作与 Memcached 的操作类似,但它的功能更丰富。

string 类型是二进制安全的。意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象;从内部实现来看其实string可以看作byte数组,最大上限是1G字节。

另外string类型可以被部分命令按 int处理,比如 incr等命令,如果只用 string类型,redis就可以被看作加上持久化特性的 memcached。 当然 redis对string类型的操作比 memcached还是多很多的。

在list、set和zset中包含的独立元素类型都是string元素。

string常见命令

SET

SET key value [EX seconds] [PX milliseconds] [NX|XX]

将字符串值value关联到key。

如果key已经持有其他值,SET就覆写就值,无视类型。

对于某个原本带有生存时间(TTL)的键来说,当SET命令成功在这个键上执行时,这个键原有的TTL将被清除。

SET 命令的行为可以通过一系列参数来修改:

EX second :设置键的过期时间为 second 秒。SET key value EX second 效果等同于 SETEX key second value 。

PX millisecond :设置键的过期时间为 millisecond 毫秒。SET key value PX millisecond 效果等同于 PSETEX key millisecond value 。

NX :只在键不存在时,才对键进行设置操作。SET key value NX 效果等同于 SETNX key value 。

XX :只在键已经存在时,才对键进行设置操作。

时间复杂度: O(1)

返回值:SET 在设置操作成功完成时,才返回 OK 。如果设置了 NX 或者 XX ,但因为条件没达到而造成设置操作未执行,那么命令返回空批量回复(NULL Bulk Reply) 。

# 对不存在的key进行设置127.0.0.1:6379[15]>SET key_1 1OK127.0.0.1:6379[15]>GET key_1“1”# 对已存在的key进行设置127.0.0.1:6379[15]>SET key_1 “key_1”OK127.0.0.1:6379[15]>GET key_1“key_1”# 使用EX选项127.0.0.1:6379[15]>SET key_2 2 EX 86400OK127.0.0.1:6379[15]>GET key_2“2”127.0.0.1:6379[15]>TTL key_2(integer) 86387127.0.0.1:6379[15]>SET key_3 3OK# 使用PX选项127.0.0.1:6379[15]>SET key_3 3 PX 86400OK127.0.0.1:6379[15]>GET key_3“3”127.0.0.1:6379[15]>PTTL key_3(integer) 68219# 使用NX选项127.0.0.1:6379[15]>SET key_4 4 NXOK127.0.0.1:6379[15]>GET key_4“4”127.0.0.1:6379[15]>SET key_4 “key_4” NX (nil)127.0.0.1:6379[15]>GET key_4“4”# 使用XX选项127.0.0.1:6379[15]>EXISTS key_5(integer) 0127.0.0.1:6379[15]>SET key_5 5 XX(nil)127.0.0.1:6379[15]>SET key_5 5OK127.0.0.1:6379[15]>SET key_5 “key_5” XXOK127.0.0.1:6379[15]>GET key_5“key_5”# NX 或 XX 可以和 EX 或者 PX 组合使用127.0.0.1:6379[15]> SET key-with-expire-and-NX “hello” EX 10086 NXOK127.0.0.1:6379[15]>GET key-with-expire-and-NX“hello”127.0.0.1:6379[15]> TTL key-with-expire-and-NX(integer) 10075127.0.0.1:6379[15]>SET key-with-pexpire-and-XX “old value”OK127.0.0.1:6379[15]>SET key-with-pexpire-and-XX “new value” PX 123321 XXOK127.0.0.1:6379[15]> GET key-with-pexpire-and-XX“new value”127.0.0.1:6379[15]> PTTL key-with-pexpire-and-XX(integer) 107932# EX 和 PX 可以同时出现,但后面给出的选项会覆盖前面给出的选项127.0.0.1:6379[15]> SET key “value” EX 1000 PX 5000000OK127.0.0.1:6379[15]>TTL key(integer) 4993 # 这是 PX 参数设置的值127.0.0.1:6379[15]> SET another-key “value” PX 5000000 EX 1000OK127.0.0.1:6379[15]> TTL another-key(integer) 995 # 这是 EX 参数设置的值

SETNX

SETNX key value

将 key 的值设为 value ,当且仅当 key 不存在。

若给定的 key 已经存在,则SETNX 不做任何动作。

SETNX 是『SET if Not eXists』(如果不存在,则 SET) 的简写。

时间复杂度: O(1)

返回值:

设置成功,返回 1 。

设置失败,返回 0 。

127.0.0.1:6379[15]>EXISTS key_1(integer) 0127.0.0.1:6379[15]>SETNX key_1 1(integer) 1127.0.0.1:6379[15]>SETNX key_1 “key_1”(integer) 0127.0.0.1:6379[15]>GET key_1“1”

SETEX

SETEX key seconds value

将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。

如果 key 已经存在,SETEX 命令将覆写旧值。

这个命令类似于以下两个命令:

SET key value

EXPIRE key seconds # 设置生存时间

不同之处是,SETEX 是一个原子性 (atomic) 操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在 Redis 用作缓存时,非常实用。

时间复杂度: O(1)

返回值:

设置成功时返回 OK 。

当 seconds 参数不合法时,返回一个错误。

# 在 key 不存在时进行 SETEX127.0.0.1:6379[15]>SETEX key_1 86400 1OK127.0.0.1:6379[15]>GET key_1“1”127.0.0.1:6379[15]>TTL key_1(integer) 86390 # 剩余生存时间# key 已经存在时,SETEX 覆盖旧值127.0.0.1:6379[15]>SET key_2 2OK127.0.0.1:6379[15]>SETEX key_2 86400 “key_2”OK127.0.0.1:6379[15]>GET key_2“key_2”127.0.0.1:6379[15]>TTL key_2(integer) 86388

PSETEX

PSETEX key milliseconds value

这个命令和SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像SETEX 命令那样,以秒为单位。

时间复杂度: O(1)

返回值: 设置成功时返回 OK 。

127.0.0.1:6379[15]>PSETEX key_1 80000 1OK127.0.0.1:6379[15]>PTTL key_1(integer) 70167127.0.0.1:6379[15]>GET key_1“1”

SETRANGE

SETRANGE key offset value

用 value 参数覆写 (overwrite) 给定 key 所储存的字符串值,从偏移量 offset 开始。

不存在的 key 当作空白字符串处理。

SETRANGE 命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字符串长度比偏移量小 (比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间的空白将用零字节 (zerobytes, “x00” ) 来填充。

注意你能使用的最大偏移量是 2^29-1(536870911) ,因为 Redis 字符串的大小被限制在 512 兆 (megabytes)以内。如果你需要使用比这更大的空间,你可以使用多个 key 。

当生成一个很长的字符串时,Redis 需要分配内存空间,该操作有时候可能会造成服务器阻塞 (block)。在 年的 Macbook Pro 上,设置偏移量为 536870911(512MB 内存分配),耗费约 300 毫秒,设置偏移量为 134217728(128MB 内存分配),耗费约 80 毫秒,设置偏移量 33554432(32MB 内存分配),耗费约 30 毫秒,设置偏移量为 8388608(8MB 内存分配),耗费约 8 毫秒。注意若首次内存分配成功之后,再对同一个 key 调用SETRANGE 操作,无须再重新内存。

时间复杂度:对小 (small) 的字符串,平摊复杂度 O(1)。(关于什么字符串是” 小” 的,请参考APPEND 命令)否则为 O(M),M 为 value 参数的长度。

返回值: 被SETRANGE 修改之后,字符串的长度。

因为有了SETRANGE 和GETRANGE 命令,你可以将 Redis 字符串用作具有 O(1) 随机访问时间的线性数组,这在很多真实用例中都是非常快速且高效的储存方式,具体请参考APPEND 命令的『模式:时间序列』部分。

127.0.0.1:6379[15]>SET greeting “hello world”OK127.0.0.1:6379[15]>SETRANGE greeting 6 “Redis”(integer) 11127.0.0.1:6379[15]>GET greeting“hello Redis”127.0.0.1:6379[15]>EXISTS empty_string(integer) 0127.0.0.1:6379[15]>SETRANGE empty_string 5 “Redis!” (integer) 11127.0.0.1:6379[15]>GET empty_string“x00x00x00x00x00Redis!”

GETRANGE

GETRANGE key start end

返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end在内)。

负数偏移量表示从字符串最后开始计数,-1 表示最后一个字符,-2 表示倒数第二个,以此类推。GETRANGE 通过保证子字符串的值域 (range) 不超过实际字符串的值域来处理超出范围的值域请求。

时间复杂度:

O(N),N 为要返回的字符串的长度。

复杂度最终由字符串的返回值长度决定,但因为从已有字符串中取出子字符串的操作非常廉价(cheap),所以对于长度不大的字符串,该操作的复杂度也可看作 O(1)。

返回值: 截取得出的子字符串。

127.0.0.1:6379[15]>SET greeting “hello, my friend”OK127.0.0.1:6379[15]> GETRANGE greeting 0 4# 返回索引 0-4 的字符,包括 4。“hello”127.0.0.1:6379[15]> GETRANGE greeting -1 -5 # 不支持回绕操作“”127.0.0.1:6379[15]> GETRANGE greeting -3 -1 # 负数索引“end”127.0.0.1:6379[15]>GETRANGE greeting 0 -1# 从第一个到最后一个“hello, my friend”127.0.0.1:6379[15]> GETRANGE greeting 0 1008611 # 值域范围不超过实际字符串,超过部分自动被忽略“hello, my friend”

注意:GETRANGE和SETRANGE都是单字节操作,对中文支持并不友好。

APPEND

APPEND key value

如果 key 已经存在并且是一个字符串,APPEND 命令将 value 追加到 key 原来的值的末尾。

如果 key 不存在,APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。

时间复杂度:平摊 O(1)

返回值: 追加 value 之后,key 中字符串的长度。

127.0.0.1:6379[15]>EXISTS myphone(integer) 0127.0.0.1:6379[15]>APPEND myphone “nokia”(integer) 5127.0.0.1:6379[15]> APPEND myphone “ - 1110” (integer) 12127.0.0.1:6379[15]>GET myphone“nokia - 1110”

时间序列 (Time series)

APPEND 可以为一系列定长 (fixed-size) 数据 (sample) 提供一种紧凑的表示方式,通常称之为时间序列。每当一个新数据到达的时候,执行以下命令:

APPEND timeseries “fixed-size sample”

然后可以通过以下的方式访问时间序列的各项属性:

STRLEN 给出时间序列中数据的数量

GETRANGE 可以用于随机访问。只要有相关的时间信息的话,我们就可以在 Redis 2.6 中使用 Lua脚本和GETRANGE 命令实现二分查找。

SETRANGE 可以用于覆盖或修改已存在的的时间序列。

这个模式的唯一缺陷是我们只能增长时间序列,而不能对时间序列进行缩短,因为 Redis 目前还没有对字符串进行修剪 (tirm) 的命令,但是,不管怎么说,这个模式的储存方式还是可以节省下大量的空间。

Note: 可以考虑使用 UNIX 时间戳作为时间序列的键名,这样一来,可以避免单个 key 因为保存过大的时间序列而占用大量内存,另一方面,也可以节省下大量命名空间。

127.0.0.1:6379[15]>APPEND ts “0043”(integer) 4127.0.0.1:6379[15]>APPEND ts “0035”(integer) 8127.0.0.1:6379[15]>GETRANGE ts 0 3“0043”127.0.0.1:6379[15]>GETRANGE ts 4 7“0035”

GET

GET key

返回 key 所关联的字符串值。

如果 key 不存在那么返回特殊值 nil 。

假如 key 储存的值不是字符串类型,返回一个错误,因为GET 只能用于处理字符串值。

时间复杂度: O(1)

返回值:

当 key 不存在时,返回 nil ,否则,返回 key 的值。

如果 key 不是字符串类型,那么返回一个错误。

127.0.0.1:6379[15]>GET key_1(nil)127.0.0.1:6379[15]>SET key_1 1OK127.0.0.1:6379[15]>get key_1“1”

MSET

MSET key value [key value …]

同时设置一个或多个 key-value 对。

如果某个给定 key 已经存在,那么MSET 会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。

MSET 是一个原子性 (atomic) 操作,所有给定 key 都会在同一时间内被设置,某些给定 key 被更新而另一些给定 key 没有改变的情况,不可能发生。

时间复杂度: O(N),N 为要设置的 key 数量。

返回值: 总是返回 OK (因为 MSET 不可能失败)

127.0.0.1:6379[15]>MSET key_1 1 key_2 2 key_3 3 OK127.0.0.1:6379[15]>MGET key_1 key_2 key_31) “1”2) “2”3) “3”

MGET

MGET key [key …]

返回所有 (一个或多个) 给定 key 的值。

如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败。

时间复杂度: O(N) , N 为给定 key 的数量。

返回值: 一个包含所有给定 key 的值的列表。

127.0.0.1:6379[15]>MSET key_1 1 key_2 2 key_3 3OK127.0.0.1:6379[15]>MGET key_1 key_2 key_41) “1”2) “2”3) (nil)

MSETNX

MSETNX key value [key value …]

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

即使只有一个给定 key 已存在,MSETNX 也会拒绝执行所有给定 key 的设置操作。

MSETNX 是原子性的,因此它可以用作设置多个不同 key 表示不同字段 (field) 的唯一性逻辑对象 (uniquelogic object),所有字段要么全被设置,要么全不被设置。

时间复杂度: O(N),N 为要设置的 key 的数量。

返回值:

当所有 key 都成功设置,返回 1 。

如果所有给定 key 都设置失败 (至少有一个 key 已经存在),那么返回 0 。

127.0.0.1:6379[15]>MSETNX rmdbs “MySQL” nosql “MongoDB” key-value-store “redis”(integer) 1127.0.0.1:6379[15]>MGET rmdbs nosql key-value-store1) “MySQL”2) “MongoDB”3) “redis”127.0.0.1:6379[15]>MSETNX rmdbs “Sqlite” language “python”(integer) 0127.0.0.1:6379[15]>EXISTS language(integer) 0127.0.0.1:6379[15]>GET rmdbs“MySQL”

GETSET

GETSET key value

将给定 key 的值设为 value ,并返回 key 的旧值 (old value)。

当 key 存在但不是字符串类型时,返回一个错误。

时间复杂度: O(1)

返回值:

返回给定 key 的旧值。

当 key 没有旧值时,也即是,key 不存在时,返回 nil 。

127.0.0.1:6379[15]>EXISTS db(integer) 0127.0.0.1:6379[15]> GETSET db mongodb(nil)127.0.0.1:6379[15]> GET db“mongodb”127.0.0.1:6379[15]> GETSET db redis“mongodb”127.0.0.1:6379[15]> GET db“redis”

GETSET 可以和INCR 组合使用,实现一个有原子性 (atomic) 复位操作的计数器 (counter)。

举例来说,每次当某个事件发生时,进程可能对一个名为 mycount 的 key 调用INCR 操作,通常我们还要在一个原子时间内同时完成获得计数器的值和将计数器值复位为 0 两个操作。

可以用命令 GETSET mycounter 0 来实现这一目标。

127.0.0.1:6379[15]>INCR mycount(integer) 12127.0.0.1:6379[15]>GETSET mycount 0“12”127.0.0.1:6379[15]>GET mycount“0”

STRLEN

STRLEN key

返回 key 所储存的字符串值的长度。

当 key 储存的不是字符串值时,返回一个错误。

复杂度: O(1)

返回值:

字符串值的长度。

当 key 不存在时,返回 0 。

127.0.0.1:6379[15]>SET mykey “Hello world”OK127.0.0.1:6379[15]>STRLEN mykey(integer) 11127.0.0.1:6379[15]> STRLEN nonexisting(integer) 0

INCR

INCR key

将 key 中储存的数字值增一。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行INCR 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位 (bit) 有符号数字表示之内。

时间复杂度: O(1)

返回值: 执行INCR 命令之后 key 的值。

127.0.0.1:6379[15]> SET page_view 20OK127.0.0.1:6379[15]> INCR page_view(integer) 21127.0.0.1:6379[15]> GET page_view“21”

模式:计数器

计数器是 Redis 的原子性自增操作可实现的最直观的模式了,它的想法相当简单:每当某个操作发生时,向Redis 发送一个INCR 命令。

比如在一个 web 应用程序中,如果想知道用户在一年中每天的点击量,那么只要将用户 ID 以及相关的日期信息作为键,并在每次用户点击页面时,执行一次自增操作即可。

比如用户名是 peter,点击时间是 年 3 月 22 日,那么执行命令 INCR peter::2012.3.22 。

可以用以下几种方式扩展这个简单的模式:

可以通过组合使用INCR 和EXPIRE ,来达到只在规定的生存时间内进行计数 (counting) 的目的。

客户端可以通过使用GETSET 命令原子性地获取计数器的当前值并将计数器清零,更多信息请参考GETSET命令。

使用其他自增/自减操作,比如DECR 和INCRBY ,用户可以通过执行不同的操作增加或减少计数器的值,比如在游戏中的记分器就可能用到这些命令。

模式:限速器

限速器是特殊化的计算器,它用于限制一个操作可以被执行的速率 (rate)。

限速器的典型用法是限制公开 API的请求次数,以下是一个限速器实现示例,它将 API的最大请求数限制在每个 IP地址每秒钟十个之内:

FUNCTION LIMIT_API_CALL(ip)ts = CURRENT_UNIX_TIME()keyname = ip+“:”+tscurrent = GET(keyname)IF current != NULL AND current >10 THENERROR “too many requests per second”ENDIF current == NULL THENMULTIINCR(keyname, 1)EXPIRE(keyname, 1)EXECELSEINCR(keyname, 1)ENDPERFORM_API_CALL()

这个实现每秒钟为每个 IP 地址使用一个不同的计数器,并用EXPIRE 命令设置生存时间 (这样 Redis 就会负责自动删除过期的计数器)。

注意,我们使用事务打包执行INCR 命令和EXPIRE 命令,避免引入竞争条件,保证每次调用 API时都可以正确地对计数器进行自增操作并设置生存时间。

以下是另一个限速器实现:

FUNCTION LIMIT_API_CALL(ip):current = GET(ip)IF current != NULL AND current >10 THENERROR “too many requests per second”ELSEvalue = INCR(ip)IF value == 1 THENEXPIRE(ip,1)ENDPERFORM_API_CALL()END

这个限速器只使用单个计数器,它的生存时间为一秒钟,如果在一秒钟内,这个计数器的值大于 10 的话,那么访问就会被禁止。

这个新的限速器在思路方面是没有问题的,但它在实现方面不够严谨,如果我们仔细观察一下的话,就会发现在INCR 和EXPIRE 之间存在着一个竞争条件,假如客户端在执行INCR 之后,因为某些原因 (比如客户端失败) 而忘记设置EXPIRE 的话,那么这个计数器就会一直存在下去,造成每个用户只能访问 10 次,噢,这简直是个灾难!

要消灭这个实现中的竞争条件,我们可以将它转化为一个 Lua 脚本,并放到 Redis 中运行

local currentcurrent = redis.call(“incr”,KEYS[1])if tonumber(current) == 1 thenredis.call(“expire”,KEYS[1],1)end

通过将计数器作为脚本放到 Redis上运行,我们保证了INCR 和EXPIRE 两个操作的原子性,现在这个脚本实现不会引入竞争条件,它可以运作的很好,

电脑资料

还有另一种消灭竞争条件的方法,就是使用 Redis 的列表结构来代替INCR 命令,这个方法无须脚本支持,因此它在 Redis 2.6 以下的版本也可以运行得很好:

FUNCTION LIMIT_API_CALL(ip)current = LLEN(ip)IF current >10 THENERROR “too many requests per second”ELSEIF EXISTS(ip) == FALSEMULTIRPUSH(ip,ip)EXPIRE(ip,1)EXECELSERPUSHX(ip,ip)ENDPERFORM_API_CALL()END

新的限速器使用了列表结构作为容器,LLEN 用于对访问次数进行检查,一个事务包裹着RPUSH和EXPIRE 两个命令,用于在第一次执行计数时创建列表,并正确设置地设置过期时间,最后,RPUSHX在后续的计数操作中进行增加操作。

INCRBY

INCRBY key increment

将 key 所储存的值加上增量 increment 。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行INCRBY 命令。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位 (bit) 有符号数字表示之内。

关于递增 (increment) / 递减 (decrement) 操作的更多信息,参见INCR 命令。

时间复杂度: O(1)

返回值: 加上 increment 之后,key 的值。

127.0.0.1:6379[15]>SET rank 50OK127.0.0.1:6379[15]>INCRBY rank 20(integer) 70127.0.0.1:6379[15]>EXISTS counter(integer) 0127.0.0.1:6379[15]>INCRBY counter 30(integer) 30

INCRBYFLOAT

INCRBYFLOAT key increment

为 key 中所储存的值加上浮点数增量 increment 。

如果 key 不存在,那么INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操作。

如果命令执行成功,那么 key 的值会被更新为(执行加法之后的)新值,并且新值会以字符串的形式返回给调用者。

无论是 key 的值,还是增量 increment ,都可以使用像 2.0e7 、3e5 、90e-2 那样的指数符号 (exponentialnotation) 来表示,但是,执行 INCRBYFLOAT 命令之后的值总是以同样的形式储存,也即是,它们总是由一个数字,一个(可选的)小数点和一个任意位的小数部分组成(比如 3.14 、69.768 ,诸如此类),小数部分尾随的 0 会被移除,如果有需要的话,还会将浮点数改为整数(比如 3.0 会被保存成 3 ) 。

除此之外,无论加法计算所得的浮点数的实际精度有多长,INCRBYFLOAT 的计算结果也最多只能表示小数点的后十七位。

当以下任意一个条件发生时,返回一个错误:

key 的值不是字符串类型 (因为 Redis 中的数字和浮点数都以字符串的形式保存,所以它们都属于字符串类型)

key 当前的值或者给定的增量 increment 不能解释 (parse) 为双精度浮点数 (double precision floatingpoint number)

时间复杂度: O(1)

返回值: 执行命令之后 key 的值。

127.0.0.1:6379[15]>SET mykey 10.50OK127.0.0.1:6379[15]>INCRBYFLOAT mykey 0.1“10.6”# 值和增量都是指数符号127.0.0.1:6379[15]> SET mykey 314e-2OK127.0.0.1:6379[15]>GET mykey # 用 SET 设置的值可以是指数符号“314e-2”127.0.0.1:6379[15]>INCRBYFLOAT mykey 0 # 但执行 INCRBYFLOAT 之后格式会被改成非指数符号“3.14”127.0.0.1:6379[15]> SET mykey 3OK127.0.0.1:6379[15]> INCRBYFLOAT mykey 1.1“4.1”127.0.0.1:6379[15]> SET mykey 3.0 # 后跟的 0 会被移除OK127.0.0.1:6379[15]> GET mykey“3.0”127.0.0.1:6379[15]> INCRBYFLOAT mykey 1.000000000000000000000 # 但 INCRBYFLOAT 会将无用的 0 忽略掉,有需要的话,将浮点变为整数“4”127.0.0.1:6379[15]> GET mykey“4”

DECR

DECR key

将 key 中储存的数字值减一。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行DECR 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位 (bit) 有符号数字表示之内。

关于递增 (increment) / 递减 (decrement) 操作的更多信息,请参见INCR 命令。

时间复杂度: O(1)

返回值: 执行DECR 命令之后 key 的值。

127.0.0.1:6379[15]> SET failure_times 10OK127.0.0.1:6379[15]>DECR failure_times(integer) 9127.0.0.1:6379[15]> EXISTS count(integer) 0127.0.0.1:6379[15]>DECR count(integer) -1

DECRBY

DECRBY key decrement

将 key 所储存的值减去减量 decrement 。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行DECRBY 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位 (bit) 有符号数字表示之内。

关于更多递增 (increment) / 递减 (decrement) 操作的更多信息,请参见INCR 命令。

时间复杂度: O(1)

返回值: 减去 decrement 之后,key 的值。

127.0.0.1:6379[15]>SET count 100OK127.0.0.1:6379[15]> DECRBY count 20(integer) 80127.0.0.1:6379[15]> EXISTS pages(integer) 0127.0.0.1:6379[15]> DECRBY pages 10(integer) -10

SETBIT

SETBIT key offset value

对 key 所储存的字符串值,设置或清除指定偏移量上的位 (bit)。

位的设置或清除取决于 value 参数,可以是 0 也可以是 1 。

当 key 不存在时,自动生成一个新的字符串值。

字符串会进行伸展 (grown) 以确保它可以将 value 保存在指定的偏移量上。当字符串值进行伸展时,空白位置以 0 填充。

offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 之内)。

时间复杂度: O(1)

返回值: 指定偏移量原来储存的位。

127.0.0.1:6379[15]>SETBIT bit 10086 1(integer) 0127.0.0.1:6379[15]> GETBIT bit 10086(integer) 1127.0.0.1:6379[15]> GETBIT bit 100(integer) 0

Warning: 对使用大的 offset 的SETBIT 操作来说,内存分配可能造成 Redis 服务器被阻塞。具体参考SETRANGE 命令,warning(警告) 部分。

GETBIT

GETBIT key offset

对 key 所储存的字符串值,获取指定偏移量上的位 (bit)。

当 offset 比字符串值的长度大,或者 key 不存在时,返回 0 。

时间复杂度: O(1)

返回值: 字符串值指定偏移量上的位 (bit)。

127.0.0.1:6379[15]>EXISTS bit(integer) 0127.0.0.1:6379[15]>GETBIT bit 10086(integer) 0127.0.0.1:6379[15]>SETBIT bit 10086 1(integer) 0127.0.0.1:6379[15]>GETBIT bit 10086(integer) 1

BITOP

BITOP operation destkey key [key …]

对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。

operation 可以是 AND 、OR 、NOT 、XOR 这四种操作中的任意一种:

BITOP AND destkey key [key …] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。

BITOP OR destkey key [key …] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。

BITOP XOR destkey key [key …] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。

BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey 。

除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入。

处理不同长度的字符串

当BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0 。

空的 key 也被看作是包含 0 的字符串序列。

时间复杂度: O(N)

返回值: 保存到 destkey 的字符串的长度,和输入 key 中最长的字符串长度相等。

127.0.0.1:6379[15]>SETBIT bits-1 0 1(integer) 1127.0.0.1:6379[15]> SETBIT bits-1 3 1(integer) 0127.0.0.1:6379[15]> SETBIT bits-2 0 1 (integer) 0127.0.0.1:6379[15]> SETBIT bits-2 1 1(integer) 0127.0.0.1:6379[15]> SETBIT bits-2 3 1(integer) 0127.0.0.1:6379[15]> BITOP AND and-result bits-1 bits-2(integer) 1127.0.0.1:6379[15]> GETBIT and-result 0(integer) 1127.0.0.1:6379[15]>GETBIT and-result 1(integer) 0127.0.0.1:6379[15]> GETBIT and-result 2(integer) 0127.0.0.1:6379[15]> GETBIT and-result 3(integer) 1

Note: BITOP 的复杂度为 O(N) ,当处理大型矩阵 (matrix) 或者进行大数据量的统计时,最好将任务指派到附属节点 (slave) 进行,避免阻塞主节点。

BITCOUNT

BITCOUNT key [start] [end]

计算给定字符串中,被设置为 1 的比特位的数量。

一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。

start 和 end 参数的设置和GETRANGE 命令类似,都可以使用负数值:比如 -1 表示最后一个位,而 -2表示倒数第二个位,以此类推。

不存在的 key 被当成是空字符串来处理,因此对一个不存在的 key 进行 BITCOUNT 操作,结果为 0 。

时间复杂度: O(N)

返回值: 被设置为 1 的位的数量。

127.0.0.1:6379[15]> BITCOUNT bits(integer) 0127.0.0.1:6379[15]>SETBIT bits 0 1(integer) 0127.0.0.1:6379[15]> BITCOUNT bits(integer) 1127.0.0.1:6379[15]> SETBIT bits 3 1(integer) 0127.0.0.1:6379[15]>BITCOUNT bits(integer) 2

模式:使用 bitmap 实现用户上线次数统计

Bitmap 对于一些特定类型的计算非常有效。

假设现在我们希望记录自己网站上的用户的上线频率,比如说,计算用户 A 上线了多少天,用户 B 上线了多少天,诸如此类,以此作为数据,从而决定让哪些用户参加 beta 测试等活动——这个模式可以使用SETBIT 和BITCOUNT 来实现。

比如说,每当用户在某一天上线的时候,我们就使用SETBIT ,以用户名作为 key ,将那天所代表的网站的上线日作为 offset 参数,并将这个 offset 上的为设置为 1 。

举个例子,如果今天是网站上线的第 100 天,而用户 peter 在今天阅览过网站,那么执行命令 SETBIT peter 100 1 ;如果明天 peter 也继续阅览网站,那么执行命令 SETBIT peter 101 1 ,以此类推。

当要计算 peter 总共以来的上线次数时,就使用BITCOUNT 命令:执行 BITCOUNT peter ,得出的结果就是 peter 上线的总天数。

性能

前面的上线次数统计例子,即使运行 10 年,占用的空间也只是每个用户 10*365 比特位 (bit),也即是每个用户 456 字节。对于这种大小的数据来说,BITCOUNT 的处理速度就像GET 和INCR 这种 O(1) 复杂度的操作一样快。

如果你的 bitmap 数据非常大,那么可以考虑使用以下两种方法:

1. 将一个大的 bitmap 分散到不同的 key 中,作为小的 bitmap 来处理。使用 Lua 脚本可以很方便地完成这一工作。

2. 使用BITCOUNT 的 start 和 end 参数,每次只对所需的部分位进行计算,将位的累积工作 (accumu-lating) 放到客户端进行,并且对结果进行缓存 (caching)。

2.Redis数据类型之LIST类型 篇二

-04-04Python BeautifulSoup中文乱码问题的2种解决方法

2014-01-01python中的对象拷贝示例 python引用传递

2013-02-02使用python检测手机QQ在线状态的脚本代码

2014-06-06Python中文件遍历的两种方法

-05-05Python 正则表达式操作指南

2013-03-03python的正则表达式re模块的常用方法

2014-06-06Python写的贪吃蛇游戏例子

2014-06-06测试、预发布后用python检测网页是否有日常链接

3.Redis数据类型之LIST类型 篇三

Javascript有7种数据类型,包括5种原始类型(也叫原始值)number、Boolean、string、null、undefined和2种复合类型object、array,它们之间可以根据某种规则相互转换,《Javascript权威指南》列出了在Javascript中如何进行类型转换,

其中原始值之间的转换没什么可说的,记住就好了,我们要关注的是复合值(即对象)与原始值之间的转换。原始值转换成对象直接调用Object方法即可(null和undefined不可调用该方法),而对象转换成原始值呢?如空数组[]转换成数字为什么是0呢?

对象转换成原始值

对象转换成布尔值:所有对象转换成布尔值都是true,包括包装对象new Boolean(false)转换成布尔值也是true。

对象转换成字符串:如果对象有toString()方法,则调用这个方法,如果它返回原始值,将原始值转换成字符串后返回;如果对象没有toString()方法或调用toString()方法方法返回的不是原始值,则调用valueOf()方法,然后将valueOf()方法返回的原始值转换成字符串返回,如果valueOf()方法返回的还不是原始值,没救了,浏览器只好抛出类型异常的错误。

对象转换成数字:和对象转换成字符串过程类似,只不过先调的是valueOf()方法。

根据以上规则就可以知道为什么空数组转换成数字结果是0了:空数组先调用了valueOf()方法,返回了“”字符串,“”字符串是个原始值,再根据上面的表格,“”字符串转换成数字0。

隐式类型转换

来看一个例子:

“123” == 123

大家都知道结果是true,==运算符两边的操作数属于不同的数据类型,要判断是否相等,需要经过隐式类型转换成相同的数据类型才行。然而,是运算符左边的“123”转换成了数字123还是运算符右边的123转换成了字符串“123”呢?

规则是:

如果一个值是null,另一个是undefined,那么它们相等

如果一个值是数字,另一个是字符串,先将字符串转为数字再比较

如果其中一个值是true,将true转为1再比较,同理false转换成0再比较

如果一个值是对象,另一个是数字或字符串,则将对象转换成原始值再进行比较(日期对象转换成字符串,其它对象先尝试调用valueOf()方法再尝试使用toString())

其它不同类型的比较都不相等

显然上面的例子属于第二种情况,“123”被隐式转换为123了。

除了==运算符,诸如+、-、*、/、!、<、<=、>、>=等运算符两边的操作数类型不同时,都会发生隐式类型转换,还包括while()语句和if()语句内的条件语句,alert()语句会将()内的值隐式转换成字符串后再弹出。

“+”运算符

二元加法运算符“+”可以对两个数字做加法,也可以做字符串连接操作:

1 + 1// 2

“hello” + “world”// “hello world”

当二元加法运算符“+”遇到下面的运算时操作数会如何转换呢?试着想想答案再往下看

1 + true

“1” + true

1 + “1”

{} + 1

{} + {}

隐式转换规则:

如果其中一个操作数是对象,对象会转换成原始值:日期对象通过toString()方法转换,其他对象通过valueOf()方法转换,如果valueOf()返回值不是原始值再使用toString()方法转换,

在进行了对象到原始值的转换后,如果其中一个操作数是字符串的话,另一个操作数也会转换为字符串,然后进行字符串拼接。

否则,两个操作数都将转换为数字(转换不了的将转换为NaN),然后进行加法操作。

根据规则,以上的例子结果是:

1 + true// true转换为1,然后加法得出结果2

“1” + true// true转换为“true”,然后字符串拼接得出结果“1true”

1 + “1”// 数字1转换为“1”,然后字符串拼接得出结果“11”

{} + 1// {}对象调用toString()方法转换为字符串“[object Object]”,变成了“[object Object]” + 1,匹配第二条规则,1将转换为字符串“1”,然后字符串拼接得出结果“[object Object]1”

{} + {}// 自己想想过程吧

当“+”做为一元运算符时,会把操作数转换为数字(转不了的转成NaN)

“-”运算符

当“-”做为二元运算符时,会把操作数转换为数字(转不了的转成NaN)

当“-”做为一元运算符时,会把操作数转换为数字(转不了的转成NaN),同时改变运算结果的符合

比较运算符(“>”、“>=”、“<”、“<=”)

比较操作符的操作数可能是任意类型,然而只有数字和字符串才能真正执行比较操作,因此其它类型的操作数都将进行类型转换,具体规则如下:

如果操作数为对象,那么这个对象将转换为原始值:同上,日期对象通过toString()方法转换,其他对象通过valueOf()方法转换,如果valueOf()返回值不是原始值再使用toString()方法转换。

在对象转换为原始值后,如果两个操作数都是字符串,将依次比较每个字符串的Unicode大小。

在对象转换为原始值后,如果至少有一个操作数不是字符串,那么两个操作数都将转换为数字进行比较,如果其中某个操作数无法转换为数字,这个操作数将转换为NaN,比较结果为false。

“*”、“/”、“%”、“!”

“*”、“/”、“%”会把操作数转换为数字(转不了的转成NaN)

4.Redis数据类型之LIST类型 篇四

这个课程是为第二年的学生。经过前几个星期的学习,学生对视觉基本的基本界面,添加控件和修改控件属性,打印方法的形式已经初步掌握了视觉基本编程已经初步了解。但是对于视觉基本语法规则和程序的基本元素都比较陌生,而且不明白其程序代码的意义。

二,教材分析

1,本节的主要内容和本章的状态

本节介绍的知识点比较简单,都是概念。但对于这些奇怪,无聊的纯概念性知识,学生更难以接受。但在实际应用中,这种知识是非常重要的,而在毕业考试中,这部分内容检测频率很高。因此,本节的内容,无论是在本章还是学生之后,生活都有非常重要的作用。2,教学重点,困难

[关注]数据类型的分类,了解常量,变量的作用 [难度]区分不同的数据类型

三,教学目标 1,知识和技能

可以区分常用的数据类型和表示 方法;理解常量,变量含义和效果 2,工艺和方法

通过帮助小明完成一系列的活动,让学生从实际到理论知道不同数据类型的特点

常量变量,可以区分不同的数据属于数据类型,知道常量变量的含义和功能。3,情绪态度和价值观

通过帮助小明收集信息活动对数据进行分类,并根据数据类型确定数据属于数据

类型,培养学生的观察和判断,增强对编程思想的理解。

四,教学过程设计

1,教学内容组织与演示

通过帮助小明完成信息和一系列活动,让学生在活动中获得新知识。2,教学过程

教学链接

教师活动

学生活动

设计计划

创建情境

(5分钟)

1,创建小明收集的学校运动员信息不会分类,现场,给定

很多数据供学生分类。

2,总结学生分类的结果,提出数据类型的概念。

老师:我们可能基于名字,学生人数,评估分数,是否

分类学校团队。在电脑上,系统也是使用这一面

法律对巨大的数据进行分类。而类别的分类是名称,学号,电话等,统一为数据类型。

思考,告诉自己的分类结果

仔细听

创造一种局面,让学生联系生活。

解释新课程(20min)

介绍常用的数据类型

老师:

①数值数据:我们分为整数和长整数,单精度和双精度。整数(整数)指的是-32768?32767范围内的间隔,例如,350,-20。这里要注意的是整数的取值范围需要知道。(这时可以要求学生了解情况的掌握情况)。单精度是单值

-3.402823x10 ^ 38?3.402823x10 ^ 38实数。我们可以理解,只要有小数点就可以归零单精度型。长整数(长)和双(双)我们可以看出它的值比较大,天文数字,计算天体之间的距离,当我们 使用它。因为long整数和double的值较大,而且我们学习vb不常用,所以这里我们可以知道long和double精度的英语和可以解决。长整数(long)是一个较大的整数,double precision是一个较大的小数位数。

②字符串类型:什么是字符串类型?学生,电话,地址可以把它放到字符串类型。在我们的研究中,我们可以简单地认为有双引号是字符串类型。好的,我们强调什么类型的字符串?双引号是字符串类型。

③boolean:boolean(boolean)用于逻辑判断。布尔类型不是由数值数据组成。它只有两个值正确和错误,即true和flase。例如,如果3大于2,系统将输出true。相反,它会输出flase

引入常量

老师:在系统中我们把程序在运行的过程中总是将固定数据称为常数。我们可以告诉我在小明收集的学校运动员信息情景,哪些数据不会改变?属 在字符串类型名称中,属于分数的数值类型,学校编号,属于布尔类型的学校团队这些固定数据是否是常数。我们看一下以前的登录页面的程序,欢迎,登录系统这些都是我们运行后修复的。所以这是我们的常数。

引入变量

老师:所以有自然有变量的变量。什么是变量?有同学的例子吗?在数学中,这个x y = 3,我们的x,y可以有很多不同的值。例如:x = 1,y = 2;x = 2,y = 1;x = 1.5,y = 1.5。

在计算机中,这个值可以改变我们称为变量的量。

仔细听,并积极回答问题

教授本课的知识

练习合并

(5分钟)

回到学校运动员信息场景的肖明集合,向学生强调什么数据是不变的,变量的含义,让学生指出哪些数据属于哪种数据类型。

老师:好的。我们已经知道什么是常量,变量。在这里我们回到身上附着的小明继续帮助解决他的问题。首先 小明,5,学校团队输出是否真实。在程序运行中始终固定的数据是常量。变量是在运行程序的过程中可以更改的变量。如同x y = 3,x和y具有许多值。

然后,我们学习了通常的数据类型,并知道不同的数据类型。这里我们根据分类的结果,我们分成名字,学生人数,电话,评分,是否是学校团队。然后我们总结下面的小明数据:名字数据是在程序中哪种数据类型?

程序的数据类型是什么?

电话数据属于什么数据类型? 分数分数数据是在程序中哪种数据类型?

学校团队的数据是在程序中哪种数据类型?

想想和回答问题

5.Redis数据类型之LIST类型 篇五

SQL92标准定义了若干种基本数据类型,它们是SQL数据库中各种数据类型的基础,

跟我学SQL:(八)数值数据类型数据库教程

。在《字符串数据类型》一文中,我们已经详细讨论了SQL92标准所定义的字符串数据类型。现在,我们来进一步讨论数值数据类型。

你最好开始尝试使用不同数据库实现方法并在它们传递数据,这样可以加深你对数值数据类型的理解。本文将给你一个数值数据类型的概要,你可以结合你的数据库的文档资料来学习。

在字符串、数值、datetime和interval这四种数据类型中,数值型的种类最多,约束也最多。在不同数据库实现方法之间交换数据时,数值型的精度也最容易降低。Oracle和SQL服务器之间的实现分歧(同样的数据类型长度不同)导致它们之间的数据传递过程会截短数字、改变它们的数值。因此,在移植程序前,你有必须很明确的了解两个平台间的数据定义差异,以及危及数据精度的风险。

谨记上述警告后,让我们看看SQL92标准的数值类型

基本数值类型

与数值有关的类型统称为数值类型。所有的数值都有精度,精度指的是有效数字位数。有的数值还有标度值(scale value),它用来指示小数点右边的最小有效数字位数。例如,数字1234.56的精度为6,标度值为2,可以定义为NUMERIC(6,2)。

每一个数据库实现方法都有关于如何近似数值或者截短数值的规则。除了提供获取数值长度和其它数值处理所需的属性外,SQL92提供了内建函数,如加、减、乘、除等。所有的数值类型之间都可以互相比较、互相赋值。尽管实现方法不同,但是它们有一个的共同点,即它们的结果一般都保留最大精度。

NUMERIC

用法:NUMERIC(精度,标度值)

是一种精确数值类型,即它是数字的值的文字表示。(可以对该数字进行取舍或者截取以符合指定精度,标度值由预定义的规则确定。)

为了符合标度值指定的小数数字位数,舍去多余的小数部分,舍入过程采用十进制。

数字的总长度等于精度,如果标度值大于0(有小数部分),则长度加1。

小数部分的位数要符合标度值。

DECIMAL | DEC

用法:DECIMAL(精度,标度值) | DEC(精度,标度值)

是一种精确数值类型。

用十进制。

数字的总长度等于精度,如果标度值大于0(有小数部分),则长度加1,

小数部分的位数不得小于标度值,小数位数的上限由数据库提供商设定。

INTEGER | INT

用法: INTEGER(精度)

是一种精确数值类型。

使用二进制或者十进制,这基于表示该数值的二进制位(bit)的个数(这是implementation-specific,与SMALLINT对应)。

标度值恒为0。

数据库供应商对其定义了最大精度和最小精度。

供应商可能会提供的默认精度。

SMALLINT

用法:SMALLINT(精度)

是一种精确数值类型。

位数取舍方法与INTEGER (二进制或者十进制)相同。

标度值恒为0。

最大精度等于或者小于INTEGER的最大精度。

FLOAT

用法:FLOAT(精度)

是一种近似数值类型,即对一个指定的数值用指数形式表示出来,如1.23e-45(等于),该数值类型的取舍和截短方法大多由数据库提供商定义。

当取舍时,使用二进制精度。

精度表示使用的最小位数,最大精度由数据库提供商设定。

REAL

用法:REAL

是一种近似数值类型。

使用二进制精度,最大精度由数据库提供商设定。

其默认精度必须小于DOUBLE PRECISION的默认精度。

DOUBLE PRECISION

用法: DOUBLE PRECISION

是一种近似数值类型。

使用二进制精度,最大精度由数据库提供商设定。

其默认精度必须大于PRECISION的默认精度。

相关理论

数据库提供商在基本数据类型的基础上创建了你实际需要的数据类型。对数值类型来说,它可以包括同名的数据类型,如INT、REAL,也包括为了满足特定场合或者用途而创建的新数据类型。

在我们的下一篇文章,我们将讨论datetime和interval数据类型。

6.人教版小学总复习之词语类型 篇六

ABAC:不言不语、自由自在、自言自语、无法无天 ABCB:一了百了、以牙还牙、心服口服、将计就计 ABCA:精益求精、话里有话、山外有山、人外有人 ABCC:金光闪闪、白发苍苍、风尘仆仆、得意洋洋 AABC:依依不舍、恋恋不舍、好好学习、天天向上 AABB:风风光光、红红火火、开开心心、高高兴兴 ABAB:打扫打扫、研究研究、讨论讨论、商量商量 拟声词:叮咚、咕咚、沙沙、咔嚓、哗啦啦、叽叽喳喳 含反义词:七上八下、出生入死、惊天动地、欢天喜地 含近义词:惊天动地、欢天喜地、三言两语、胡言乱语 含近反义:惊天动地、欢天喜地、同甘共苦、开天辟地 历史故事:百发百中、四面楚歌、草木皆兵、望梅止渴 神话故事:八仙过海、大闹天宫、夸父追日、精卫填海 寓言故事:刻舟求剑、守株待兔、惊弓之鸟、叶公好龙 战争成语:知己知彼、百战百胜、出其不意、所向无敌

十二生肖:多如牛毛、龙争虎斗、守株待兔、画蛇添足、千军万马、亡羊补牢、猴年马月、鸡犬不宁、猪狗不如、胆小如鼠

含两种动物:龙争虎斗、猴年马月、鸡犬不宁、猪狗不如

数字成语:一心一意、三心二意、五湖四海、五颜六色、七上八下、九死一生、十全十美、百发百中、千言万语

“多”的成语:观众多(座无虚席)、贵宾多(高朋满座)、人很多(摩肩接踵)、人才多(人才济济)、兵马多(千军万马)、事物多(林林总总)、色彩多(五彩缤纷)、类别多(千差万别)、困难多(千辛万苦)、话儿多(滔滔不绝)、读书多(博览群书)、见识多(见多识广)、变化多(千变万化)、走得多(走南闯北)、颜色多(五颜六色)、花样多(五花八门)春天:鸟语花香、百花争艳、春暖花开、花红柳绿 夏天:绿树成荫、烈日当空、挥汗如雨、骄阳似火 秋天:瓜果飘香、秋高气爽、五谷丰登、天高云淡 冬天:雪花飞舞、冰天雪地、风雨交加、寒风刺骨 人物神态:大惊失色、眉飞色舞、垂头丧气、没精打采 人物外貌:膀大腰圆、披头散发、虎背熊腰、衣冠楚楚 人物心情:忐忑不安、心急如焚、七上八下、六神无主 人物品质:舍己为人、大公无私、助人为乐、拾金不昧

人物智慧:料事如神

足智多谋

集思广益

举一反三 人物仪态、风貌:文质彬彬

意气风发

容光焕发

神采奕奕 人物口才:能说会道

能言善辩

妙语连珠

口若悬河 人物动作:手舞足蹈、东张西望、手忙脚乱、指手画脚 人间情谊:恩重如山

深情厚谊

手足情深

生死相依 表示团结:众志成城、齐心协力、同心协力、万众一心 表示激动:激动不已、百感交集、激动万分、喜出望外 表示着急:迫不及待、心急如焚、急急忙忙、焦急万分 表示失望:心灰意冷、大失所望、灰心丧气、毫无希望、1

表示害怕:惊弓之鸟、提心吊胆、惊惶失措、惊恐万状 表示精神意志:坚定不移、自强不息、持之以恒、全力以赴 表示思想集中:专心致志、全神贯注、聚精会神、一心一意 描写课堂上讨论场面:议论纷纷、各抒己见、七嘴八舌、争论不休 描写场面热闹:车水马龙、人山人海、人声鼎沸、摩肩接踵、热闹非凡 描写学习:学无止境

学而不厌

争分夺秒

全力以赴

人体器官或部位名称的词语:头重脚轻、指手画脚、愁眉苦脸、目瞪口呆、交头接耳、眼疾手快、比喻:呆若木鸡 胆小如鼠 如狼似虎 如花似玉

夸张:一日千里

一字千金

一日三秋

一步登天

拟人:龙争虎斗、狐假虎威、鸟语花香、百花争艳 成语之最

(一日三秋)最短的季节。(一落千丈)落差最大的瀑布。(一字千金)最贵的稿酬。(一本万利)最赚钱的生意。(一手遮天)最大的手。

(一毛不拔)最吝啬的人。(一步登天)最长的脚。

(一日千里)跑得最快的马。(一尘不染)最干净的地方。(一掷千金)最浪费的行为。(一文不值)最便宜的东西。(一身是胆)胆最大的人。(千钧一发)最危险的时候。(羊肠小道)最狭窄的路。

(一目十行)最快的阅读。(天涯海角)最远的地方。

(无米之炊)最难做的饭。

(顶天立地)最高的个子。(十全十美)最完美的东西。(无可救药)最重的疾病。

(风驰电掣)最快的速度。(晴天霹雳)最反常的天气。(度日如年)最长的日子。

(一柱擎天)最长的棍子。(气吞山河)最大的嘴。

(一步登天)最长的腿。

(顶天立地)最高的人。(轻如鸿毛)最小的人。

(无孔不入)最尖的针。

(一言九鼎)最重的话。(金玉良言)最贵重的话。

(一览无余)最宽的视野。

(脱胎换骨)最大的手术。(包罗万象)最大的气量。

(天壤之别)最大的差异。

(天翻地覆)最大的变化。(无米之炊)最难做的饭。

(风驰电掣)最快的速度。

(取之不尽)最多的资源。(一日三秋)最短的季节。

(度日如年)最长的一天。

(无边无际)最大的地方。

表示“看”的字词:瞅、瞄、瞪、盯、瞧、望、凝视、注视、俯视、眺望、张望、探望、仰望、观察、瞻仰、鸟瞰、欣赏、观赏、浏览

表示时间极短的词语:瞬间 刹时 刹那 顷刻 霎时 一眨眼、一瞬间、一刹那、一转眼、刹那间、一眨眼 反义词词语:多少、动静、远近、生死、黑白、长短 节日排序:春节、元宵、清明、端午、重阳、除夕 小学阶段教材中成语故事主人公:

1、闻鸡起舞:(祖逖)

2、刻舟求剑:(过江人)

3、惊弓之鸟:(更羸)

4、买椟还珠:(郑国人)

5、画龙点睛:(张僧繇)

6、胸有成竹:(文与可)

7、杏林春满:(董奉)

8、手不释卷:(吕蒙)

9、鹏程万里:(鲲)

10、水滴石穿:(张乖崖)

11、大公无私:(祁黄羊)

12、程门立雪:(杨时)

13、竭泽而渔:(雍季)

14、入木三分:(王羲之)

15、响遏行云:(秦青)

16、邯郸学步:(燕国人)。

17、舍本逐末:(赵威后)

课外阅读积累:

完璧归赵(蔺相如)、毛遂自荐(毛遂)、负荆请罪(廉颇)、纸上谈兵(赵括)、卧薪尝胆(勾践)

指鹿为马(赵高)、四面楚歌(项羽)、背水一战(韩信)、破釜沉舟(项羽)、投笔从戎(班超)

鞠躬尽瘁(诸葛亮)、三顾茅庐(刘备)、初出茅庐(诸葛亮)、煮豆燃萁、七步成诗(曹植)

单刀赴会(关羽)、望梅止渴(曹操)、精忠报国(岳飞)、讳疾忌医(蔡桓公)

高山流水(俞伯牙、钟子期)、乐不思蜀(刘禅)、精兵简政(李鼎铭)、卧薪尝胆(勾践)、2

7.面试三种类型问题之妙答 篇七

挑战式的问题

这类问题的特点是主考官从求职者最薄弱的地方着手,寻找突破口。例如,针对应届毕业生可能设问“你的相关工作经验较为欠缺,你怎么看?”针对年龄稍大者可设问“我们觉得你的年龄稍大了点,恐怕在精力方面不如年青人,你怎么看?”等等诸如此类的问题。

如果回答“不见得吧”、“我看未必”、“不会”、“完全不是这么回事”等等,象这样的回答方式虽然求职者也表达清楚个人的想法并对主考官的设问进行反驳或申诉,但由于语气太过生硬,否定太过直接而会引起主考官的不悦。

因此,对于上述这类问题,专家建议可以用“这样的说法未必全对”、“这样的看法值得探讨”、“这样的说法有一定的道理,但我恐怕不能完全接受”等等之类的回答。在表达的过程中较为委婉地表示出自己的不同意见,不致影响主考官的情绪。

诱导式的问题

这类问题的特点是主考官设定一个特定的背景条件,让求职者作出回答,有时任何一种答案都不是很理想,这时就需要用模糊语言表示。例如主考官设问“依你现在的水平,恐怕能找到比我们企业更好的公司吧?”如果你答案是“YES”,则说明你这个人“身在曹营心在汉”;如果你的答案是“NO”,那么说明你的能力有问题或是对自己自信心不足,总之左右为难。而如果你说“不知道”或“不清楚”,则又有拒绝回答之嫌。对于上述问题,专家们建议可以先用“不可一概而论”作为开头,从正反两个方面来解释你的观点,象上面这个问题可以这样回答:“或许我能找到比贵公司更好的企业,但别企业或许在人才培养方面不如贵公司重视,机会也不如贵公司多;或许我找不到更好的企业,我想珍惜已有的最为重要。”可以说又把一个“模糊”的答案抛还给了主考官。

测试式的问题

8.Redis数据类型之LIST类型 篇八

2019银行招聘面试类型揭秘之辩论赛

(一)介绍了主要的面试形式后,对于较少涉及的辩论赛,中公金融人整理了相关技巧,作为补充和各位考生分享。

辩论赛

辩论包括“辩”和“论”两个部分。“辩”的含义更倾向于分辨、辨别,主要是指甄别观点的正确或者错误,说明是非或争论真假。“论”的含义则更注重表述、论述,是阐述本方观点的重要表达方式。

1.辩论的构成:

辩题:是指辩论双发争论的对象。辩题是辩论的焦点,整场辩论都是围绕辩题进行的。辩题大体上可以分成三种类型:(1)是与非,如“高薪是否能够养廉”;(2)正与反,如“人性本善还是本恶”;(3)此与彼,如“社会秩序的维系主要靠法律还是主要靠道德”。

立论者:是指在辩论中,针对辩题首先提出或坚持某个观点的一方,也可以认为是为辩题辩护的一方。

驳论者:是指反驳立论者观点的一方,或者说是对辩题做出反驳的一方,和立论者持相互对立的立场。

2.辩论的组织流程(1)抽签或直接分组(2)指定正反方(3)由主考官宣布辩题

银行招聘网:http://ln.jinrongren.net/

(4)讨论(8~15分钟)(5)立论(3分钟)(6)驳论(2分钟)(7)自由辩论(2~4分钟)(8)总结陈词(3分钟)3.辩论的要求

(1)观点正确,旗帜鲜明

在辩论中,对原则问题,要语言明确,毫不含糊,自己爱什么、恨什么、拥护什么、反对什么,都必须鲜明地体现在自己的言辞中。同时还要有正确的论点、充足的论据和有力的论证。

(2)反应敏捷,出口成章,应对自如

辩论具有临场性的特点,没有过多的思考时间,因此要求最好能在瞬间就用简短、犀利的话语回击对方,不给对方过多的思考时间,保证辩论能够占据上风。

(3)逻辑严密

逻辑严密,不仅要求做到对自己观点的阐述具有条理性,还要运用逻辑武器,进攻对方的立论、论据、论证,揭其荒谬、避其锋芒、挫其锐气、扬己命题,充分展示语言的雄辩性,有时候甚至还要运用到诡辩的逻辑来摆脱语言的困境。

(4)辩论要针锋相对

辩论是双方针锋相对的较量,主要目的是造成“你错我对”的结果,从而战胜或者说服对方。辩论中最主要的就是语言的交锋,而语言的交锋必然会体现出不同的攻击程度,银行招聘网:http://ln.jinrongren.net/

无论是攻势凶猛,咄咄逼人,还是柔中有刚,绵里藏针,亦或是措辞激烈,力抵千军,都需要我们的辩论语言针对不同的风格采取不同的应对之策。

(5)幽默风趣

要充分运用生活中形象的例子,尽量少使用抽象的、教条的说理,有时候在辩论中融入生动、形象、风趣的语言反而更能引起考官的注意,留下深刻的印象。

9.Redis数据类型之LIST类型 篇九

程啸

(清华大学法学院,北京 100084)

[摘 要] 不动产登记簿错误可以分为权利事项错误与非权利事项错误。权利事项错误意味着登记簿上对不动产物权的归属和内容的记载不正确,而非权利事项则是指那些不涉及物权归属和内容的登记簿错误。二者在是否会对物权构成妨害、是否导致善意取得以及更正登记的程序上完全不同。我国《物权法》第19条区分了这两类错误,并确立了不同的更正程序与要件。当不动产登记簿上存在权利事项错误时,应由利害关系人行使更正请求权请求登记簿记载的权利人同意更正。如果权利人拒绝的,更正请求权人应诉请法院或仲裁委员会解决该民事争议。原则上,只有法院、仲裁委员会的生效法律文书才属于证明登记确有错误的证据,登记机构才能据此进行更正登记。但是,对于非权利事项错误,权利人可以通过提供证据证明登记确有错误而申请更正登记,登记机构也可以依职权进行更正登记。

[关键词] 不动产登记簿错误;更正登记;权利事项错误;非权利事项错误

Abstract:The falsity of Real Estate Register can be divided into the rights incorrectness and non-right incorrectness.The rights incorrectness means that a right over real estate is not in accordance with the actual legal situation.The non-rights incorrectness has nothing to do with the legal situation.The rights incorrectness is different from the non-rights incorrectness in the good faith acquisition, the interference in right of the property right and rectification procedure.The Art.19 of China Property Law also separates the rights incorrectness from the non-right incorrectness and stipulates the corresponding rectification procedures.When the registration in the real estate register is not in accordance with the actual legal situation, the interested party may require the person whose right is affected by the rectification of the real estate register to give his consent to such rectification.If the person refuses, the interested party needs to get people’s court or arbitration commission’s adjudication which is in favor of him.Then he can ask the registrar to rectify the rights incorrectness.When there is a non-rights incorrectness in the real estate register, the right holder may require the registrar to rectify the incorrectness by evidences.The registrar should also be entitled to rectify some special falsity in the real estate register under the law.Key Words: the falsity of real estate register;registration of rectification;rights incorrectness;non-right incorrectness;引言

不动产登记簿是不动产物权归属和内容的根据,它是由登记机构依法制作并管理的,用以记载不动产自然状况、权利状况及其他依法必须记载的事项的簿册。在针对基于法律行为的不动产物权变动实行登记生效要件主义的国家(如德国、瑞士、奥地利),不动产登记簿不仅具有推定力,还具有公信力。我国《物权法》原则上采取的也是登记生效要件主义,即基于法律行为的不动产物权变动只有记载于不动产登记簿后才发生效力,不经登记不发生物权效力(第9条第1款、第14条)。同时,登记簿还有推定力(《物权法》第16条第1款)与公信力(《物权法》第106条)。既然不动产登记簿具有如此重要的法律效力,对民事主体的不动产物权会发生巨大的影响。因此,一方面,如果登记簿的记载事项存在错误,就很可能给真实权利人造成妨害或损害(如导致第三人善意取得不动产所有权或他物权);另一方面,即便登记簿存在错误,无论是登记机构还是当事人都不可能随意进行修改。

为了既能确保登记簿的真实性、准确性,维护真实权利人的合法权益,又避免因随意更改登记簿而给登记权利人、第三人的利益造成损害不利影响,法律上有必要确定更正登记簿错误的程序,这就是所谓的更正登记(Berechtigungsverfahren)。更正登记是指,当不动产登记簿存在错误时,登记机构依当事人之申请或依职权消除该错误而进行的登记。《物权法》第19条第1款对更正登记作出了明确的规定:‚权利人、利害关系人认为不动产登记簿记载的事项错误的,可以申请更正登记。不动产登记簿记载的权利人书面同意更正或者有证据证明登记确有错误的,登记机构应当予以更正。‛

由于更正登记是《物权法》吸收借鉴比较法(尤其是德国法)的经验而新设立的登记类型,无论是理论研究成果还是实践经验都不丰富。加之,我国尚无不动产登记法或不动产登记条例对更正登记作出更为具体详细的规定,因此对更正登记的程序、要件等问题,理论界与实务界有不同的认识与理解。现行的不动产登记的部门规章、地方性法规的相关规定亦不相同。例如,就是否所有的登记簿错误都可以依职权更正登记,《土地登记办法》与《房屋登记办法》就不一致。前者规定,国土资源行政主管部门发现土地登记簿存在错误均可在报经人民政府批准后依职权进行更正登记(《土地登记办法》第58条)。而后者则规定,只有不涉及房屋权利归属和内容的房屋登记簿错误,登记机构才可以在当事人不申请更正登记的情况下依职权进行更正登记(《房屋登记办法》第75条)。

笔者认为,要正确理解更正登记的程序与要件,贯彻落实《物权法》第19条第1款的规范目的,必须区分不动产登记簿上的权利事项错误与非权利事项错误,并以此为基础确立不同的更正登记的程序与要件。本文第一部分主要研究的是登记簿上权利事项错误与非权利事项错误的涵义以及区分二者的重要意义。第二部分主要是通过分析《物权法》第19条第1款与第2款,证明我国《物权法》实际上是区分了这两类错误的区分,并且针对不同类型的错误确立了不同的更正登记程序与要件。第三、四部分则具体研究的了权利事项错误与非权利事项的更正登记程序。

一、登记簿权利事项与非权利事项错误之区分及意义

(一)不动产登记簿错误的涵义与类型

不动产登记簿上记载的事项可以分为三部分:第一部分,不动产的标示,即不动产的坐落、位臵、界址、面积、结构、用途等自然状况;第二部分,不动产的权利状况,即不动产上的所有权、用益物权、担保物权等权利事项;第三部分,其他依法应当记载的事项,如预告登记、异议登记、查封登记等。例如,《房屋登记办法》第24条第1款规定:‚房屋登记簿应当记载房屋自然状况、权利状况以及其他依法应当登记的事项。‛《房屋登记簿管理试行办法》第2条规定:‚房屋登记簿(以下简称‘登记簿’)是房屋权利归属和内容的根据,是房屋登记机构(以下简称‘登记机构’)制作和管理的,用于记载房屋基本状况、房屋权利状况以及其他依法应当登记事项的特定簿册。‛《土地登记办法》第15条第1款规定:‚土地登记簿是土地权利归属和内容的根据。土地登记簿应当载明下列内容:

(一)土地权利人的姓名或者名称、地址;

(二)土地的权属性质、使用权类型、取得时间和使用期限、权利以及内容变化情况;

(三)土地的坐落、界址、面积、宗地号、用途和取得价格;

(四)地上附着物情况。‛

既然登记簿上记载了这些事项,从理论上说,只要登记簿上记载的事项与真实的情况不符合或不一致,就可以认为登记簿存在错误。依据不同的标准可以对登记簿错误进行不同的分类,如依据登记簿错误产生的时间不同,可将其分为初始错误与嗣后错误。前者是指登记簿记载之时就已经存在的错误,如登记簿的记载与登记的原因证明文件不一致;后者是指登记簿记载时并不错误,但是在登记完成后因新的法律事实(如继承、强制执行、物权变动合同无效等)而使得登记簿出现了错误。再如,依据造成登记簿错误的原因不同,可以将其分为因当事人过错引发的登记簿错误、因登记机构的过错导致的登记簿错误以及因其他原因造成的登记簿错误等。但是,在登记簿错误分类中最重要的一种是,依据登记簿的错误是否与不动产物权的归属、内容相关将之分为登记簿上的权利事项错误与非权利事项错误。前者是指,不动产登记簿上关于不动产物权归属、内容的记载与真实的不动产物权归属、内容不一致或不相符。例如,甲、乙共同共有的不动产在登记簿上记载为甲的单独所有。后者是指,不动产登记簿上与不动产物权归属、内容无关的事项的记载与实际情况不一致。例如,实际面积为1100平米的土地在登记簿上记载为1000平米。

在德国、瑞士等就基于法律行为的不动产物权变动采取登记生效要件主义的国家,民法典中规定的登记簿错误仅指权利事项的错误,而不包括登记簿上的非权利事项错误。例如,《德国民法典》第894条规定:‚土地登记簿中关于土地上之权利、关于此项权利所负担之权利或关于第892条第1款所列处分权的限制与真实的权利状况不一致的,其权利未经登记、未被正确地登记或因原不存在的负担或限制之登记而遭受损害之人,有权向因土地登记簿的更正而使其权利被涉及之人请求同意更正登记簿。‛这些登记簿错误显然都是与不动产物权的归属和内容相关的错误,即权利事项错误。具体来说,德国法上登记簿的权利事项错误分为四种类型:(1)将并不存在的物权在登记簿上加以记载;(2)对已存在的物权进行了错误的记载;(3)将并不存在的不动产上的权利负担在登记簿上加以记载;(4)没有将已经存在的物权加以登记或将已经登记的物权加以注销。[①]至于登记簿上非权利事项的错误主要包括三类:(1)登记簿上纯粹事实描述部分的错误,如对土地的位臵、用途、面积等自然状况记载的错误;(2)对登记权利人的名称或姓名的记载错误;(3)纯粹的笔误。[1]S.132瑞士民法中登记簿的错误有两种类型:(1)初始的权利事项错误(urspruengliche unrichtigkeit),即登记簿记载之时就是不正当的。依据《瑞士民法典》第974条,该错误是指,物权、预告登记被以不正当的方式记载入登记簿或加以注销。所谓‚不正当的方式(in ungerechtfertigter Weise)‛是指缺少实体法上的要件。[2]S.814(2)嗣后的权利事项错误(nachtraegliche unrichtigkeit),即登记簿登记之时是正确的,但此后因登记簿之外法律原因而使得登记簿上权利事项的记载与真实的权利状态不一致。例如,依据《瑞士民法典》第963条第2款,因法律的规定或者生效的判决书而取得物权时导致的登记簿记载与真实的权利状态不一致。[2]S.814.我国《物权法》第19条第1款未如德国与瑞士的民法典那样将登记簿错误明确规定为权利事项错误,该款将登记簿错误表述为‚不动产登记簿记载的事项错误‛。就该款中登记簿错误的涵义,学界有不同的理解。一种观点认为,《物权法》第19条第1款中的登记簿错误仅指权利事项错误,即不动产登记簿所记载的权利关系与真实的权利关系不一致。[3]63因为,规定更正登记的目的就是为了保护事实上的权利人的物权,许可真正的权利人和利害关系人依据真正的权利状态对不动产登记簿记载的内容进行更正。只有通过彻底消除登记权利与真正权利不一致的状态,更正登记才能避免第三人依不动产登记簿取得登记簿上记载的物权。[4]43-44另一种观点认为,《物权法》该款中的登记簿错误既包括登记簿上的权利记载与实际的权利状态不相符合(即登记物权与事实物权、登记权利人与真实权利人不一致的情形),也包括错误的标示登记(即登记簿上的记载与标的物的实际情况不相符的情形)。[5]21

笔者认为,由于《物权法》第19条第1款并未如《德国民法典》第894条那样将错误明确地限定在权利归属和内容方面的错误,因此在我国法上,不动产登记簿错误应当理解为既包括权利事项错误,也包括非权利事项错误。不动产登记簿上的权利事项错误主要包括以下情形:(1)将并不存在的物权在登记簿上加以记载,例如,登记簿上记载甲为A房屋的抵押权人,实际上甲并不享有该抵押权;(2)对已存在的物权进行了错误的记载,例如,甲乙共同共有的房屋被记载为甲单独所有、抵押权人第一顺位的抵押权被记载为第二顺位;(3)将已经登记的物权错误地加以注销。例如,登记簿上本来记载了债权人对债务人的房屋享有第一顺位抵押权,因债务人的欺诈导致登记机构将该抵押权从登记簿中注销。(4)错误的注销已经存在的处分权的限制或记载了本不存在的处分权限制。例如,甲针对A房屋的预告登记被错误地注销了;A房屋上本无查封登记却记载了查封登记。

不动产登记簿上的非权利错误主要包括以下情形:(1)不动产登记簿上记载的不动产自然状况,如登记簿上记载的不动产的坐落(位臵)、四至、层数、用途等与实际的情况不一致。(2)其他与物权归属和内容纠纷无关的记载事项的错误,如登记权利人名称、姓名或住址的记载错误。

(二)区分权利事项错误与非权利事项错误的意义

既然不动产登记簿上记载的任何事项与真实的情况不一致都属于登记簿错误,为何在德国、瑞士等国家的民法中,要将登记簿错误限定在权利事项错误,难道登记簿上非权利事项与真实的情况不一致,就不属于登记簿错误,无须加以更正?这里的关键原因就在于,立法者建立不动产登记制度不是为了简单地记录不动产的位臵、面积、数量等自然状况,而主要是通过在登记不上记载不动产的物权状况并向外界加以公示,以达到明晰不动产上的权利状况、维护交易的安全、提高交易的效率的目标。虽然登记簿上非权利事项存在错误时,也构成登记簿的错误,同样需要更正。但是,登记不上权利事项的错误与非权利事项的错误无论是在法律后果,还是更正程序上都有很大的差别。

1、是否对真实权利人的物权构成妨害上不同

在登记簿上的非权利事项发生错误时,由于登记簿对不动产物权归属与内容的记载是正确的,因此仅仅是非权利事项的错误不会对实体权利产生影响,即不会妨害或损害物权人的权利。但是,当登记簿上关于不动产物权归属和内容的记载有错误的话,真实权利人的物权就会该错误而遭受妨害或损害。这是因为依据不动产登记法的一个基本原则——在先原则(Prioritätsprinzip),那些其权利因登记而被涉及的人必须是其权利已在不动产登记簿上加以记载的人。[1]Rn.112如果其权利没有被记载入或未被正确记载入不动产登记簿,登记机构就不得为其办理相应的处分登记。这样一来,那些物权未被记载或未被正确地记载入登记簿的真实权利人就无法处分其物权。此种处分权因登记簿错误而受到的限制就是给真实权利人造成的妨害。[②]例如,甲是A房的所有人,登记簿错误地将丙记载为A房的所有权人。如果甲要将A房转让给乙而申请所有权转移登记,因登记权利人为丙而不是甲,故此依据在先原则,登记机构不得为甲办理所有权转移登记,甲无法处分其针对A房的所有权,即便其事实上支配着该房屋。为了排除登记簿上权利事项错误而给自己物权造成的妨害或侵害,真实权利人甲有权行使排除妨害的请求权,以恢复物权的圆满状态。此种基于物权产生的排除妨害物权请求权在不动产登记程序中即‚更正请求权(Berichtigungsanspruch)‛。《德国民法典》第894条之所以将登记簿错误限定在权利事项错误,就是要赋予因该类错误而使物权受到妨害者以更正请求权。而《瑞士民法典》第975条也规定,在物权的登记不正当、或正当的登记被不正当地涂销或更改时,其物权因此而遭受损害的人,有权提出‚登记簿更正之诉(Grundbuchberichtigungsklage)‛。该诉讼在性质上属于确认之诉(Festellungsklage)而非形成之诉,其目的在于确定与特定土地相关的、既存的权利之真实状况,如所有权、限制物权、对土地处分权的限制(如预告登记)等。[2] S.826-827

2、是否会导致第三人善意取得上的不同

在承认不动产善意取得制度的国家,如德国、瑞士、我国,不动产登记簿上权利事项的错误会使真实权利人遭受因他人之善意取得而丧失权利或权利上被设定负担的法律风险。例如,甲为A房屋的所有人,但登记簿上却错误的将乙记载为A房的所有权人。当乙将A房屋出卖给善意第三人丙且办理了所有权转移登记时,尽管乙为无权处分,但是作为善意第三人的丙可以依据善意取得制度合法取得A房的所有权。真正权利人甲的所有权因此而归于消灭。我国《物权法》第106条明确承认了不动产的善意取得。所谓‚善意‛指的就是不动产物权的受让人对登记簿权利事项的错误产生了信赖。因为不动产的善意取得是为了维护不动产物权交易之安全而在‚权利外观思想(Rechtsscheingedanken)‛的基础上产生的制度。[③]只有登记簿上权利事项记载错误,才会出现权利外观(登记簿的记载)与真实权利不一致,从而需要保护交易中的善意信赖登记簿的第三人的必要性,才需要建立善意取得制度。而在登记簿上的错误与物权归属和内容无关时,由于权利外观与真实权利是一致,所以不发生善意的问题。即便第三人真的对登记簿上存在的非权利事项错误产生了某种‚信赖‛,也不会受到不动产善意取得制度的保护。[6]300由此可见,登记簿上的权利事项错误与非权利事项给真实权利人制造的法律风险是不相同的。

3、更正的程序不同

对于登记簿上权利事项的错误,应当适用非常严格的更正登记程序。一方面,对于权利事项错误的更正登记只能依当事人的申请进行,登记机构不能自行依职权加以更正;另一方面,在当事人提出更正登记的申请符合法律严格设定的要件时,登记机构才能办理更正登记。这是因为:不动产登记簿权利事项错误往往意味着当事人就不动产物权归属和内容发生了争议,这种民事实体权利的争议只能通过民事诉讼程序最终加以解决。无论登记机构是法院还是行政机关,都无权在作为非讼事件程序或行政程序的不动产登记程序中解决这种民事争议。[④]不动产登记程序不同于民事诉讼程序,在该程序中,并非不存在对立的原被告当事人以及(有独立请求权或无独立请求权的)第三人。就更正登记程序而言,如果是当事人申请更正登记,只是存在更正登记申请人与登记机构两方主体;如果是登记机构依职权更正登记,就只有登记机构一方参与其中。至于其他与登记簿上权利事项错误利益相关的当事人(如登记权利人、第三人)并不进入更正登记程序。因此,登记机构不可能像民事诉讼程序中的法官那样,通过原被告的举证、反驳、质证等查明真相并作出判断。如果登记机构可以依职权或仅依据当事人的提供的一般性的证据就决定是否进行更正登记,势必出现要么损害真实权利人的合法权益,要么损害登记权利人、利益相关的第三人合法权益的情形。因此,法律上必须为权利事项错误的更正登记设臵严格的程序与要件的要求。但是,对登记簿上的非权利事项错误,因其不涉及实体权利,所以登记机构可以依职权进行更正登记,而在依当事人之申请进行更正登记时也没有必要采取过于严格的要求。

例如,在德国,登记簿上的权利事项错误的更正登记只能依申请进行,登记机构不得依职权加以更正。在当事人申请更正登记时,必须符合以下情形之一,登记机构方能办理更正登记:其一,因更正登记而致其权利被涉及者作出了符合法定形式要求的更正同意(Berichtigungsbewilligung)。德国《土地登记条例》第19条规定:‚登记涉及其权利之人同意登记的,登记方能办理‛。此外,依据《土地登记条例》第29条,更正同意必须采取法定的格式,即通过官方文书或官方认证的文书加以证明。当更正登记的申请人获得了因更正登记而使其权利人被涉及的人的更正同意,登记机构可以办理更正登记。其二,申请提供了证明登记簿存在错误的证据(Unrichtigkeitsnachweises)。《土地登记条例》第22条第1款规定:‚如果错误得到证明,更正土地登记簿无需本法第19条规定的同意,这尤其适用于处分限制的登记或涂销。‛也就是说,即便没有获得更正同意,但是如果更正申请人提供证据证明了登记簿权利事项的错误时,登记机构也可以进行更正登记。[1] S.142-143.不过,德国法对于此种证据的证明度有很严格的要求(strenge Anforderung)。[1] S.146.申请人仅仅一般性地证明登记簿存在错误时不可以的,而必须是完全充分地加以证明(voller Nachweis)。尽管申请人不需要从所有的方面来证明登记簿是错误的,其还需要排除各种会使其希望进行的(新的)登记也是不正确性的可能性,例如善意取得。当然,对于那些过于遥远的可能性,申请人无须加以反驳。[7]§22 Rn 37司法实践中认可的证明登记簿错误的证据主要有以下一些:其一,关于登记权利人无民事行为能力人的证据。这主要是指以《土地登记条例》第29条规定的形式作出证明被登记的权利人是无民事行为能力人的证据。如果仅仅只是法院的确定的民事判决中明确了无民事行为能力,就登记机构而言,该判决只是对发生了争议的当事人具有拘束力。其二,法院的判决与仲裁机构的裁决。例如,民事法官作出的确认登记权利无效的确定判决;具有强制执行力的仲裁裁决;判令土地所有权人负有作出更正同意之义务的确定判决等。[7]§22 Rn 37至于登记簿上非权利事项的错误,则无须适用《德国民法典》第894条以下规定的更正请求权以及《土地登记条例》第22条规定的更正登记程序。该类错误既可以由登记机构依职权在相应的登记事项栏内加以订正(Richtigstellung),也可以由当事人提出更正的要求。申请人只需要在更正申请中阐明其要求的意义并一般性地证明该错误是存在的即可,该证据无须采取《土地登记条例》第29条要求的形式。[7]§22 Rn 22

同样,在瑞士,对登记簿上的权利事项错误更正也有非常严格的要求。凡是登记簿上权利事项的错误,登记簿管理人(Grundbuchverwalter)不得依职权自行更正。[2]S.815依据《瑞士民法典》的规定,更正权利事项的错误有以下三种途径:其一,对于登记之时就存在的权利事项错误(即初始的权利事项错误),如果登记权利人不同意更正的,那么申请人必须提起‚登记簿更正之诉‛,由法官先确认其权利,然后由登记簿管理人进行相应的更正登记。其二,对于登记完成之后因登记簿之外的法律原因,如强制执行、继承、征收、法院的判决而导致的登记簿错误,在没有登记权利人同意的情况下,登记簿管理人只能依据法律规定、生效的判决书或与判决书具有相同效力的证书进行更正(《瑞士民法典》第963条);其三,如果是登记完成之后,因登记的法律基础丧失(如权利失效、履行不能、设定地役权等)而使登记簿出现错误的,则申请人必须行使登记簿更正之诉来消除这种错误(《瑞士民法典》第976条)。[2]S.815ff.但是,对于符合实体法要件的登记,只是由于登记簿管理者的疏忽进行了错误登记,只要该错误与已登记的权利内容无关(der Inhalt des einzutragenden Rechtes nicht berueht),如纯粹的笔误等,登记簿管理人可随时依职权加以更正(《瑞士民法典》第977条第3款、《登记簿实施条例》第99条)。

二、我国法上登记簿权利事项与非权利事项错误的区分及更正程序

尽管《物权法》并未将登记簿的错误限定于权利事项错误,但是,从《物权法》等法律的规定来看,仍然是明确区分了权利事项错误与非权利事项错误,并在此基础上确立了不同的更正程序,规定了不同的更正登记的要件。具体理由如下。

(一)《物权法》第19条第1款与第2款对权利事项错误与非权利事项错误的区分

尽管《物权法》第19条第1款中的登记簿错误既包括权利事项错误,也包括了非权利事项错误,但是,从该条第1款将更正登记的申请人规定为‚权利人、利害关系人‛,而第2款只规定‚利害关系人‛可以申请异议登记可以看出,我国《物权法》中权利事项错误与非权利事项错误的更正程序与更正登记的要件是不同的。

首先,《物权法》第19条第1款中的‚权利人‛是指,其不动产物权已被正确记载于不动产登记簿的人,即‚不动产登记簿记载的权利人‛。之所以将权利人规定为更正登记的申请人是因为,尽管权利人的不动产物权已被正确记载于登记簿,但是登记簿上仍然存在非权利事项的错误,即登记簿对不动产的自然状况等与物权归属、内容无关的事项的记载出现了错误。例如,权利人的姓名、名称或住址错误;不动产的坐落、面积错误等。而《物权法》第19条第1款以及第2款中的‚利害关系人‛是指,登记簿上未将其不动产物权记载入登记簿、或未将其物权正确地记载入登记簿或曾经被记载的权利被不正确地注销了的人。这些人中有的是登记簿记载的权利人,有的甚至都不是登记簿记载的权利人。但是,由于不动产登记簿上关于不动产物权的归属和内容的记载有错误,而该错误对其权利造成了妨害或损害,产生了法律上的利害关系,所以他们就是《物权法》第19条中的‚利害关系人‛,有权就该登记簿上的权利事项错误申请更正登记。具体来说,利害关系人的‚利害关系‛体现在两个方面:其一,如果不能及时消除登记簿上的权利事项错误,真实权利人可能因第三人之善意取得致物权消灭或被设定负担。其二,如果不能及时消除登记簿上的权利事项错误,利害关系人对不动产物权的处分就会受到限制。

有一种观点认为,《物权法》第19条第1款中的‚权利人‛包括登记权利人与事实权利人。[⑤]利害关系人则是指,登记权利人和真实权利人之外的,因登记记载错误会造成对自己不利影响的当事人,如已与权利人订立物权变动合同的第三人。[⑥]笔者认为这种观点是妥当的。如果认为权利人既包括了登记权利人也包括了事实权利人,那么利害关系人的概念就没有必要了。如果将利害关系人理解为与权利人存在债权关系的人的话,由于登记簿上不存在错误,即便权利人没有履行该物权变动合同,也只是违约的问题,债权人有权请求债务人履行办理所有权转移登记或其他处分登记的义务。利害关系人显然没有必要申请异议登记,更无须申请更正登记。事实上,从《物权法》第33条的规定来看,也可以非常清楚的知道,利害关系人是指那些因物权的归属、内容发生争议的人,而非单纯的债权人。

其次,之所以《物权法》第19条第2款仅规定利害关系人可以申请异议登记,而没有将权利人也作为异议登记的申请人,关键就在于:只有利害关系人才是与登记簿上权利事项错误密切相关的主体。他通过更正登记要消除的是权利事项的错误,而不是非权利事项的错误。他申请异议登记也是为了避免登记簿上的权利事项错误而引发第三人的善意取得。因为异议登记的目的就要暂时切断登记簿的公信力,阻止第三人的善意取得,从而为利害关系人在完成更正登记之前提供一种暂时性的保护。至于权利人,由于登记簿上仅是非权利事项出现错误,他只需要通过提供证明登记确有所错的证据进行更正登记即可。由于该错误不会导致第三人善意取得其物权或给权利制造负担,所以权利人没有申请异议登记的必要性,自然《物权法第19条第2款》也不必规定其有权申请异议登记。

第三,《物权法》第19条第2款规定,不动产登记簿记载的权利人不同意更正的,利害关系人可以申请异议登记,而且自异议登记之日起十五日内利害关系人不起诉的,异议登记失效。有学者认为,《物权法》第19条第2款实际上确立了异议登记的一个前提条件,即不动产登记簿记载的权利人不同意更正登记。[⑦]笔者认为这种理解是不妥当的。事实上,《物权法》该款不是要为异议登记设立一个前提要件,它要表明的是:如果登记簿存在权利事项的错误的话,利害关系人可以要针对登记簿记载的权利人行使更正请求权,要求其书面同意更正。如果登记权利人加以拒绝,就意味着利害关系人与登记权利人产生了关于不动产物权归属和内容的法律争议。由于这是一种实体法上民事权利义务的纠纷,只能由当事人通过民事诉讼(不包括行政诉讼)的途径解决。故此,《物权法》第19条第2款第2句要求申请人在异议登记之日起十五日内‚起诉‛,否则异议登记失效。在利害关系人通过民事诉讼获得了有利于自己的确定判决后,因利害关系人已经可以向登记机构提供‚证明登记确有错误的‛证据,所以他可以直接请求登记机构进行更正登记(《物权法》第19条第1款)。

(二)我国不动产登记方面的规章对登记簿的权利事项错误与非权利事项错误规定了不同的更正登记程序

1、住房和城乡建设部颁布的《房屋登记办法》明确将房屋登记簿的错误分为两类:其一,‚不涉及房屋权利归属和内容‛的登记簿的记载错误;其二,‚涉及房屋权利归属和内容‛的登记簿的记载错误。在区分这两类错误的基础上,《房屋登记办法》规定了不同的更正程序和要件。

(1)是否能够依职权更正上不同。如果房屋登记簿的记载错误不涉及房屋权利归属和内容的,房屋登记机构应当书面通知有关权利人在规定期限内办理更正登记。倘若当事人无正当理由逾期不办理更正登记的,房屋登记机构可以依据申请登记材料或者有效的法律文件对房屋登记簿的记载予以更正,并书面通知当事人(《房屋登记办法》第75条第1款)。但是,对于涉及房屋权利归属和内容的登记簿错误,房屋登记机构只能书面通知有关权利人在规定期限内办理更正登记(《房屋登记办法》第75条第2款第1句),不能依职权进行更正登记。

(2)更正登记的要件不同。对于涉及房屋权利归属和内容的登记簿记载错误,登记机构只能在两种情形下办理更正登记:其一,利害关系人提供了权利人同意更正的证明材料(《房屋登记办法》第74条第1、2款)。其二,利害关系人提供了‚证明房屋登记簿记载错误的材料‛,依据《房屋登记办法》第80条,该材料是指‚确定了房屋权利归属或者权利内容与房屋登记簿记载的权利状况不一致的‛人民法院或仲裁委员会的生效法律文书。但是,对于不涉及房屋权利归属和内容的登记簿记载错误,权利人只要提供‚证明房屋登记簿记载错误的材料‛即可申请更正登记,该材料是指‚申请登记材料或者有效的法律文件‛,其范围显然大于利害关系人提供的证明登记簿记载错误的材料。如果权利人无正当理由逾期不申请更正登记的,房屋登记机构还可依职权进行更正登记。

2、国土资源部颁布的《土地登记办法》虽未如《房屋登记办法》那样区分土地登记簿上涉及与不涉及土地权利归属和内容的错误,但是从《土地登记办法》第59条、第60条的规定可以看出,其实质上仍然是区分了二者的。

(1)依据《土地登记办法》第59条,只有在土地权利人认为土地登记簿记载的事项错误的,才可以持原土地权利证书和证明登记错误的相关材料,申请更正登记。如果是利害关系人认为土地登记簿记载的事项错误的,则其必须持土地权利人书面同意更正的证明文件,申请更正登记。这一区分就意味着土地权利人需要更正的错误实际上与土地权利的归属和内容无关,而利害关系人要申请更正的错误因与土地权利的归属和内容相关,势必要得到土地权利人的书面更正同意。

(2)《土地登记办法》第60条第1款规定,如果土地登记簿记载的权利人不同意更正的,利害关系人可以申请异议登记。然后,利害关系人通过提起针对土地权利人的民事诉讼来解决土地权利归属和内容的争议。

三、权利事项错误更正登记的要件

我国《物权法》第19条第1款仿效德国的立法模式,为利害关系人更正登记簿上的权利事项错误提供了两种途径:其一,利害关系人针对登记簿记载的权利人行使更正请求权并获得其书面的更正同意;其二,在登记簿记载的权利人不同意更正的情况下,向登记机构提供证明登记确有错误的证据。

(一)登记簿记载的权利人书面同意更正

1、更正请求权

当登记簿记载的关于不动产物权归属和内容事项出现错误,即该错误属于登记簿权利事项错误时,该错误实际上已经构成了对真实物权人的物权圆满状态的侵害或妨害。由于登记簿本身存在错误,故此真实权利人无法获得登记簿推定力的保护(《物权法》第16条第1款)。它只能通过行使更正请求权来排除对其物权的妨害或侵害。更正请求权是指,当不动产登记簿的内容与真实的权利不一致时请求相对人表示同意更正登记的请求权。我国《物权法》虽然没有明确规定更正请求权,但是从其第19条第1款关于‚不动产登记簿记载的权利人书面同意更正‛的规定来看,实际上是承认更正请求权的。因为登记簿记载的权利人书面同意就是利害关系人行使更正请求权的结果。此外,由于《物权法》第35条明确赋予了因物权被妨害的权利人有权请求排除妨害。当不动产登记簿上的权利事项错误而给物权人构成妨害时,也应认为因登记簿上权利事项记载错误而致物权被妨害的权利人可以行使性质与排除妨害请求权相同的更正请求权。

更正请求权在性质上属于物权请求权,它是基于物权而产生的请求权,具有从属性。只要物权以及登记簿错误对该物权妨害仍然存在,更正请求权就不会因时间的经过而消灭。故此,《德国民法典》第898条规定,更正请求权不适用于诉讼时效。我国《物权法》未就更正请求权是否适用诉讼时效作出规定。但是,从《物权法》的立法本意来看,排除妨害的请求权、消除危险的请求权是不适用诉讼时效的。[4]43因为《物权法》仅规定了占有人返还原物的请求权必须自‚侵占发生之日起一年内‛行使,否则归于消灭(第245条第2款)。而对于物权人或占有人的排除妨害请求权与消除危险的请求权都没有规定诉讼时效期间或者除斥期间。既然如此,则与排除妨害请求权属于同一性质的更正请求权也不适用诉讼时效。

在德国民法上,更正请求权人是指‚其权利未被登记或未被正确登记的人或因登记并不存在的负担设定或限制而受到侵害的人‛(《德国民法典》第894条)。[⑧]而在我国《物权法》中,更正请求权人就是利害关系人。尽管《物权法》第19条第1款规定,权利人、利害关系人都可以申请更正登记。但是,如前所述,权利人申请更正的只是登记簿上的非权利事项错误,其物权并未受到妨害或侵害,故而不属于更正请求权人。[⑨]只有利害关系人,因其物权没有记载或没有被正确地记载入登记簿或从登记簿上错误地加以注销了,故而遭受了妨害,享有要求登记簿记载的权利人排除妨害的更正请求权。

作为物权请求权的更正请求权,其指向的不是登记机构而是对真实物权人的物权构成妨害之人,德国法上称之为‚其权利将因更正而被涉及的人‛。[⑩]在我国法中,依据《物权法》第19条第1款,更正请求权所指向的是‚不动产登记簿记载的权利人‛,即登记名义人或登记权利人。由于更正请求权是一种物权请求权,只要登记簿的错误已经构成了对利害关系人物权的妨害,无论妨害者是否具有过错,都不影响更正请求权的行使。故此,因此,只要消除登记簿上的权利事项错误会涉及到其登记权利的人都属于更正请求权指向的义务人。至于登记权利人对于登记簿错误的发生有无过错、是否知悉登记簿的错误等,在所不问。例如,甲针对乙的A房屋享有第一顺位的抵押权,而丙享有A房屋上的第二顺位抵押权。由于乙的欺诈行为,甲的第一顺位抵押权被错误地注销了,此时基于抵押权顺位升进注意,丙成为了第一顺位抵押权人。此时,甲有权针对A房屋的所有权人乙、抵押权人丙行使更正请求权。尽管乙的抵押权被错误完全是因乙的欺诈所致,与丙无关,丙也属于更正请求权指向的义务人。

2、登记簿记载的权利人书面同意更正

《物权法》第19条第1款规定,当利害关系人认为不动产登记簿记载的事项错误时,可以通过行使更正请求权,要求登记簿记载的权利人书面同意更正。从该款的字面含义来看,似乎只要是登记簿记载的权利人书面同意更正,登记机构就必须办理更正登记。但是,如果仔细研究更正登记的规范目的,可知实际并非如此。更正登记是为了解决登记簿错误,维护物权人合法权益而设立的制度。如果登记簿并不存在错误,即便登记权利人书面同意进行所谓的‚更正‛,登记机构也不应当办理更正登记,否则就容易出现当事人恶意串通利用更正登记制度逃避国家税收等违法情形。正因如此,在德国法上,一方面,更正同意必须得到官方文书或官方认证的文书的证明(《土地登记条例》第29条);另一方面,如果登记机构发现登记簿并非不正确,或者虽然登记簿是错误的但通过对更正申请人进行新的登记也不会使该登记簿变得正确时,即便存在更正同意,登记机构仍有权拒绝办理更正登记。[7]§22,Rn 31

我国《物权法》第19条第1款只是要求更正同意采取书面形式,而未如德国那样要求该更正同意必须由官方文书或官方认证的文书加以证明。因此,实践中极有可能出现当事人利用更正登记实现违法目的的问题。为避免这种现象,我国现行的不动产登记的法律、法规和规章不仅要求利害关系人在申请更正登记时提交登记权利人同意更正的书面材料,还要求申请人提交证明登记簿记载错误的材料。登记机构在审查后认为登记簿记载确实存在错误的,方办理更正登记。如果登记簿并不存在错误,即便更正登记申请人提交了登记权利人书面的更正同意,也不办理更正登记。例如,《房屋登记办法》第74条规定:‚权利人、利害关系人认为房屋登记簿记载的事项有错误的,可以提交下列材料,申请更正登记:

(一)登记申请书;

(二)申请人的身份证明;

(三)证明房屋登记簿记载错误的材料。利害关系人申请更正登记的,还应当提供权利人同意更正的证明材料。房屋登记簿记载确有错误的,应当予以更正;需要更正房屋权属证书内容的,应当书面通知权利人换领房屋权属证书;房屋登记簿记载无误的,应当不予更正,并书面通知申请人。‛不过需要注意的是,在登记簿记载的权利人已经书面同意更正的情况下,不应对利害关系人提交的证明登记簿记载错误的材料有过高的要求,否则就违反了《物权法》第19条第1款的规定。因为如果当事人提供的证据已经能够充分证明登记确有错误,此时提供登记权利人的书面更正同意就毫无必要了。

(二)有证据证明登记确有错误

依据《物权法》第19条第1款,无论登记簿记载的权利人是否同意更正,只要利害关系人有证据证明登记确有错误的,登记机构也应当进行更正登记。如前所述,在对登记簿上权利事项错误加以更正的情况下,应当严格限制所谓‚证明登记确有错误的‛证据,否则就会出现损害登记权利人和第三人合法权益的问题。这一点在我国尤为必要。因为,与德国由法院作为登记机构,司法辅助人具体负责登记、登记簿法官加以监督的模式[11]所不同的是,我国的不动产登记机构是行政机关,具体登记事务又多为该行政机关下属的事业单位(如房地产交易中心、土地交易中心等)。在这些登记机构从事登记事务的人往往没有学习过法律,许多人连大学学历都没有。有些登记人员甚至连物权、债权是什么、如何区分都不清楚。任由他们随意判断申请人提交的证据是否能够证明登记确有错误,显然是极不妥当的,更正申请人、登记权利人以及第三人的合法权益都难以得到保障。

笔者认为,在我国,原则上只有利害关系人提供了人民法院、仲裁委员会以及有权确定物权归属和内容的行政机关作出的生效法律文书,且该法律文书上确定的不动产物权归属和内容表明了登记簿上关于不动产物权归属和内容的记载是错误的时候,才符合《物权法》第19条第1款规定的‚有证据证明登记确有错误‛的要求。这是因为:在利害关系人认为不动产登记簿上权利事项存在错误,而登记簿记载的权利人又不同意更正,就意味着利害关系人与登记簿记载的权利人就物权的归属、内容发生了争议。依据《物权法》第33条,‚因物权的归属、内容发生争议的,利害关系人可以请求确认权利。‛该法第32条又规定:‚物权受到侵害的,权利人可以通过和解、调解、仲裁、诉讼等途径解决。‛在我国,有权确认物权归属和内容、解决物权争议的主要就是法院与仲裁委员会,以及法律授权的特定行政机关,如《土地管理法》允许人民政府对土地权属争议进行处理。

此外,从我国现行的不动产登记的规章和地方性法规来看,也都明确地将证明登记簿上权利事项错误的证据限定为法院、仲裁委员会和行政机关的生效法律文书。例如,《房屋登记办法》第80条规定:‚人民法院、仲裁委员会的生效法律文书确定的房屋权利归属或者权利内容与房屋登记簿记载的权利状况不一致的,房屋登记机构应当按照当事人的申请或者有关法律文书,办理相应的登记。‛《上海市房地产登记条例》第61条第2款第2项规定,房地产登记簿记载的权利人不同意更正,但有行政机关、人民法院、仲裁机构已经发生法律效力的文件证明房地产登记簿记载的权利归属确有错误的,房地产登记机构应当予以更正。《无锡市房屋登记条例》第62条第1款规定:‚人民法院、仲裁机构生效的法律文书确定的房屋权利归属或者权利内容与房屋登记簿记载的权利状况不一致的,房屋登记机构应当按照当事人的申请或者人民法院的执行要求办理相应的登记。‛《深圳市房地产登记若干规定(试行)》第4条规定:‚房地产权利人或者利害关系人认为房地产登记簿记载的事项错误,向登记机关申请更正登记的,应当提交下列材料:

(一)申请书;

(二)申请人身份证明;

(三)证明房地产登记簿记载事项错误的材料;

(四)利害关系人申请的,应当提交与申请更正登记事项存在利害关系的证明材料及房地产登记簿记载的权利人同意更正的书面材料,但人民法院、仲裁机构的生效法律文书对申请更正登记事项已有明确确认的除外;

(五)法律、法规规定需要提交的其他材料。‛

关于利害关系人提供的人民法院、仲裁委员会以及行政机关作出的生效法律文书,应注意以下几个问题。

首先,法院、仲裁委员会的生效法律文书仅指判决书、调解书和裁决书,而不包括裁定书。因为裁定书主要是用来解决程序问题,而非实体问题的法律文书。裁定书中不可能会确定不动产物权的归属和内容。

其次,法院、仲裁委员会的生效法律文书必须确认了不动产物权的归属和内容,且其与登记簿记载的不动产物权的归属和内容不一致。惟其如此,该生效的法律文书才属于证明登记确有错误的证据。这就意味着,无论是法院的民事判决书和民事调解书,还是仲裁委员会的裁决书,都应当是具有确认效力或形成效力的法律文书,而非仅具给付效力的法律文书。例如,A房屋为甲、乙夫妻共有,登记簿上仅记载了甲为所有权。乙要求甲同意更正登记,被甲拒绝,因为甲认为这是其个人财产,而非夫妻共有财产。此时乙可以向法院起诉,通过司法途径实现其更正请求权,即请求法院确认该房屋为夫妻共有财产。当法院生效的民事判决书或调解书确认了A房屋为甲、乙夫妻共有后,就表明了登记确有错误,此时乙可以要求登记机构进行更正登记。再如,A公司与B公司签订了建设用地使用权转让合同,双方办理了土地使用权转移登记。后A公司认为受到B公司的欺诈请求法院判决撤销该合同。法院判决撤销该合同,B公司向A公司返还建设用地使用权。由于合同被撤销后建设用地使用权就自动回复给了A公司,A公司才是真正的建设用地使用权人,登记簿上将B公司记载为权利人是错误的。因此,A公司有权申请更正登记,将自己作为建设用地使用权重新记载入登记簿。但是,如果法院或仲裁委员会的生效法律文书仅仅是给付性的法律文书,即要求一方履行不动产物权变动合同义务的判决书、调解书或裁决书。由于在履行该该合同义务之前,登记簿并不存在错误,所以当事人应当向登记机构申请办理的处分登记而非更正登记。例如,出卖人甲与买受人乙的房屋买卖合同生效后,甲不履行办理所有权转移登记的义务、乙向法院提起给付之诉。法院判令乙协助办理所有权转移登记。此时,乙应依据该生效判决向登记机构申请的是所有权转移登记,而非更正登记。

第三,法院作出的行政判决书不属于证明登记确有错误的证据。这是因为,在行政诉讼中,法院只是审查被诉的具体行政行为合法与否,不能也无权解决民事实体权利的争议,无法确认不动产物权的归属和内容。正因如此,《最高人民法院关于执行〈中华人民共和国行政诉讼法〉若干问题的解释》第51条第6项才明确规定,在行政诉讼的过程中,案件的审判须以相关民事、刑事或者其他行政案件的审理结果为依据,而相关案件尚未审结的,应当中止诉讼。《最高人民法院关于审理房屋登记案件若干问题的规定》第8条更是规定:‚当事人以作为房屋登记行为基础的买卖、共有、赠与、抵押、婚姻、继承等民事法律关系无效或者应当撤销为由,对房屋登记行为提起行政诉讼的,人民法院应当告知当事人先行解决民事争议,民事争议处理期间不计算在行政诉讼起诉期限内;已经受理的,裁定中止诉讼。‛既然行政判决不能确定不动产物权的归属和内容,无法表明胜诉的原告就是争议不动产的真实权利人,因此原则上当事人以确认登记行为违法或撤销登记行为的行政判决书是无法证明登记簿上记载的权利事项存在错误的。不过需要注意的是,法院作出的撤销登记行为的行政判决在一定程度上可以起到更正登记的效果。当登记簿上的权利事项错误表现为:不应有的处分限制(如抵押权登记、预告登记)被登记机构错误地记载入登记簿,或者曾被正确记载的物权被登记机构错误地加以注销。如果原告针对登记机构该登记行为提起行政诉讼,而法院又判决撤销此登记行为的话,由于登记机构必须履行法院的判决注销对违法的处分限制登记或注销违法的注销登记,因此就可以重新恢复原有的正确记载,起到更正登记希望实现的目标。故此,当事人没有必要申请更正登记。但是,就那些应当登记的物权没有被记载入登记簿的情形。例如,甲乙共有的A房屋被登记为甲单独所有权。此时即便法院撤销被诉的登记行为,登记机构依法院之判决而将登记簿上对甲的单独所有权的记载加以注销,也并不当然意味着胜诉的原告就可以被作为A房屋的共有人被记载入不动产登记簿。因为就A房屋是否为甲乙的共有财产乃是一个民事争议,需要通过民事诉讼加以解决。

最后,所谓行政机关的生效法律文书是指,有权的行政机关作出的确定不动产物权归属和内容的生效法律文书。在我国这种行政机关的法律文书只有一种,即人民政府对土地权属争议的已经生效的处理决定。《土地管理法》第16条规定,当土地上的所有权和使用权存在争议时,由当事人协商解决;协商不成的,由人民政府处理。其中,单位之间的争议,由县级以上人民政府处理;个人之间、个人与单位之间的争议,由乡级人民政府或者县级以上人民政府处理。当事人对有关人民政府的处理决定不服的,可以自接到处理决定通知之日起三十日内,向人民法院起诉。如果当事人没有在接到处理决定通知之日起三十日内起诉的,该处理决定就发生了法律效力。在该处理决定确定的土地权利归属与登记簿记载的权利归属不一致的情况下,利害关系人就可以向登记机构申请更正登记。

四、非权利事项错误更正登记的要件

(一)权利人有证据证明登记确有错误而申请更正登记

在不动产登记簿上只是非权利事项发生错误时,如不动产的坐落、界址、面积、用途以及登记权利人的名称或姓名等存在错误,由于不涉及不动产物权的归属和内容,所以不存在获得登记簿记载的权利人的同意后申请更正登记的问题。此时,更正登记的申请人就是登记簿记载的权利人即权利人。他只需要提供证据证明该错误确实存在,登记机构就应当办理更正登记。由于非权利事项的错误多是因登记机构的疏忽所致,权利人一般可以通过指出登记原因证明文件(如登记申请材料、合同书、有关公文书等)与登记簿记载不一致,而非常容易地证明该错误之存在。例如,房屋面积的测绘文件上清楚地记载了面积是1110平米,但是由于登记机构工作人员的疏忽在登记簿上记载为1100平米;登记权利人的真实姓名为‚张三‛,但是登记机构却误写成了‚张二‛,申请人只要提供身份证或户口本即可证明该错误的存在。

(二)登记机构依职权进行更正登记

由于登记簿上非权利事项的错误不涉及实体权利,而且这种错误往往是非常明显的,如果对于这种错误的更正登记也都必须依当事人的申请进行,既会给登记权利人造成不必要的负担,也不利于及时维持登记簿的真实性与准确性。故而,比较法上一般都允许登记机构依职权自行更正登记。对此前已述及。在我国,《物权法》并未对登记机构依职权更正登记作出明确规定。但通说认为,登记机构在一定的情况下可以依职权也应当依职权来更正登记。因为如果任何登记错误都要由法院来认定,无疑大大增加了登记错误的更正成本,不利于对真正权利人利益的保护。[8]309目前,一些不动产登记的地方性法规和部门规章也都允许,登记机构对不涉及权利归属的错误依职权加以更正。例如,《房屋登记办法》第75条第1款规定:‚房屋登记机构发现房屋登记簿的记载错误,不涉及房屋权利归属和内容的,应当书面通知有关权利人在规定期限内办理更正登记;当事人无正当理由逾期不办理更正登记的,房屋登记机构可以依据申请登记材料或者有效的法律文件对房屋登记簿的记载予以更正,并书面通知当事人‛《上海市房地产登记条例》第62条规定:‚房地产登记机构发现房地产登记簿记载与原申请登记文件不一致的,应当书面通知有关的房地产权利人办理更正登记手续。当事人无正当理由不办理更正手续的,房地产登记机构可以依据原申请登记文件对房地产登记簿的记载予以更正,并书面通知当事人。‛

值得注意的是,《土地登记办法》第58条允许土地登记机构一旦发现登记簿存在错误,无论该错误是否涉及土地权利的归属,均可在报经人民政府批准后依职权进行更正登记。笔者认为这种规定显然是错误的。尽管依据《土地管理法》第16条,人民政府有权处理当事人之间就土地所有权和使用权发生的争议,且该处理程序是当事人向法院起诉的前臵程序。但是,这并不意味着登记机构只要报经人民政府批准,就可以依职权更正登记簿上的权利事项错误。这种做法显然是会对登记权利人、利害关系人造成不正当的损害。在土地权利为第三人善意取得的时候,这种依职权更正登记的行为还会损害第三人的合法权益。

参考文献

上一篇:《营改增最新政策》全面解读下一篇:销售技巧销售心态