一个日牯子
Home
Tags
GitHub
Author
2019-11-18
SVG
HTML
PDF
作
用
域
转
移
(
M
o
v
e
)
1
R
u
s
t
(
2
)
O
w
n
e
r
s
h
i
p
编
程
语
言
闲
话
编
程
C
o
n
t
e
n
t
s
O
w
n
e
r
s
h
i
p
概
念
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
作
用
域
转
移
(
M
o
v
e
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
使
用
c
l
o
n
e
进
行
深
拷
贝
简
单
对
象
的
深
拷
贝
自
定
义
对
象
的
深
拷
贝
方
法
传
参
和
返
回
值
也
会
发
生
作
用
域
转
移
引
用
(
R
e
f
e
r
e
n
c
e
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
借
用
(
B
o
r
r
o
w
i
n
g
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
传
统
的
语
言
需
要
开
发
人
员
手
动
管
理
内
存
,
而
像
、
这
样
的
语
言
是
通
过
垃
圾
回
收
机
制
自
动
进
行
内
存
管
理
。
但
通
常
垃
圾
回
收
机
制
本
身
较
为
复
杂
且
需
要
不
定
期
的
进
行
(
也
就
是
说
实
际
当
内
存
不
在
需
要
的
时
候
并
不
一
定
能
得
到
及
时
的
释
放
)
。
而
语
言
采
取
的
所
有
权
机
制
(
)
是
它
区
别
于
其
他
语
言
的
一
个
重
要
特
征
,
它
被
用
来
进
行
高
效
安
全
的
内
存
管
理
。
O
w
n
e
r
s
h
i
p
概
念
在
中
,
内
存
是
由
一
个
所
有
权
管
理
系
统
进
行
管
理
的
,
它
会
使
用
一
些
由
编
译
器
在
编
译
时
生
成
的
规
则
。
这
个
内
存
管
理
系
统
的
好
处
在
于
,
不
会
像
一
样
暂
停
应
用
程
序
或
者
使
得
应
用
程
序
在
运
行
的
时
候
变
慢
。
那
么
到
底
怎
么
样
去
定
义
呢
?
有
如
下
的
一
套
规
则
:
中
每
一
个
值
都
有
一
个
变
量
作
为
与
其
对
应
的
一
个
值
在
同
一
时
间
有
且
仅
有
一
个
当
离
开
作
用
域
的
时
候
,
值
所
在
的
空
间
会
被
释
放
调
用
对
象
的
d
r
o
p
方
法
这
和
的
析
构
函
数
如
出
一
辙
,
称
之
为
R
e
s
o
u
r
c
e
A
c
q
u
i
s
i
t
i
o
n
I
s
I
n
i
t
i
a
l
i
z
a
t
i
o
n
(
R
A
I
I
)
{
l
e
t
s
=
S
t
r
i
n
g
:
:
f
r
o
m
(
"
h
e
l
l
o
"
)
;
/
/
s
i
s
v
a
l
i
d
f
r
o
m
t
h
i
s
p
o
i
n
t
f
o
r
w
a
r
d
/
/
d
o
s
t
u
f
f
w
i
t
h
s
}
/
/
程
序
走
到
这
里
会
调
用
d
r
o
p
方
法
释
放
掉
内
存
作
用
域
转
移
(
M
o
v
e
)
上
面
说
到
,
当
对
象
离
开
作
用
域
的
时
候
,
会
调
用
d
r
o
p
函
数
来
释
放
掉
占
用
的
内
存
,
那
么
,
如
果
遇
到
下
面
的
情
况
呢
?
l
e
t
s
1
=
S
t
r
i
n
g
:
:
f
r
o
m
(
"
h
e
l
l
o
"
)
;
l
e
t
s
2
=
s
1
;
字
符
串
在
内
存
中
实
际
上
是
分
为
了
两
部
分
,
作
用
域
转
移
(
M
o
v
e
)
2
其
中
,
左
边
的
值
存
放
在
栈
上
,
是
固
定
的
长
度
的
,
另
外
存
了
一
个
内
存
地
址
指
向
实
际
的
内
容
,
而
这
部
分
内
容
也
就
是
右
边
的
部
分
,
是
存
放
在
堆
上
面
的
。
当
我
们
将
赋
值
给
的
时
候
,
实
际
上
并
没
有
进
行
深
拷
贝
,
也
就
是
说
堆
上
的
数
据
仍
旧
是
那
个
,
只
是
将
的
指
针
指
向
了
这
一
部
分
内
存
。
那
么
现
在
存
在
一
个
问
题
就
是
,
和
离
开
作
用
域
的
时
候
,
都
会
去
调
用
d
r
o
p
释
放
这
部
分
内
存
,
这
部
分
内
存
会
被
释
放
两
次
,
显
然
这
是
不
对
的
。
为
了
解
决
这
一
个
问
题
,
中
当
将
一
个
变
量
赋
值
给
另
一
个
变
量
的
时
候
,
会
发
生
作
用
域
转
移
,
旧
的
对
象
不
再
有
效
,
而
释
放
内
存
这
个
操
作
,
会
由
转
移
后
的
对
象
来
承
担
这
个
职
责
。
所
以
,
一
旦
作
用
域
转
移
后
,
就
不
能
再
使
用
这
个
对
象
了
:
-
-
>
t
e
s
t
.
r
s
:
5
:
9
|
5
|
l
e
t
s
1
=
s
;
|
^
^
h
e
l
p
:
c
o
n
s
i
d
e
r
p
r
e
f
i
x
i
n
g
w
i
t
h
a
n
u
n
d
e
r
s
c
o
r
e
:
`
_
s
1
`
|
=
n
o
t
e
:
`
#
[
w
a
r
n
(
u
n
u
s
e
d
_
v
a
r
i
a
b
l
e
s
)
]
`
o
n
b
y
d
e
f
a
u
l
t
e
r
r
o
r
[
E
0
3
8
2
]
:
b
o
r
r
o
w
o
f
m
o
v
e
d
v
a
l
u
e
:
`
s
`
-
-
>
t
e
s
t
.
r
s
:
6
:
2
0
|
4
|
l
e
t
s
=
S
t
r
i
n
g
:
:
f
r
o
m
(
"
h
e
l
l
o
"
)
;
|
-
m
o
v
e
o
c
c
u
r
s
b
e
c
a
u
s
e
`
s
`
h
a
s
t
y
p
e
`
s
t
d
:
:
s
t
r
i
n
g
:
:
S
t
r
i
n
g
`
,
作
用
域
转
移
(
M
o
v
e
)
3
w
h
i
c
h
d
o
e
s
n
o
t
i
m
p
l
e
m
e
n
t
t
h
e
`
C
o
p
y
`
t
r
a
i
t
5
|
l
e
t
s
1
=
s
;
|
-
v
a
l
u
e
m
o
v
e
d
h
e
r
e
6
|
p
r
i
n
t
l
n
!
(
"
{
}
"
,
s
)
;
|
^
v
a
l
u
e
b
o
r
r
o
w
e
d
h
e
r
e
a
f
t
e
r
m
o
v
e
e
r
r
o
r
:
a
b
o
r
t
i
n
g
d
u
e
t
o
p
r
e
v
i
o
u
s
e
r
r
o
r
使
用
c
l
o
n
e
进
行
深
拷
贝
因
为
默
认
就
是
浅
拷
贝
,
所
以
拷
贝
操
作
可
以
认
为
是
很
轻
量
级
的
,
对
性
能
没
有
什
么
影
响
。
但
如
果
的
确
需
要
深
拷
贝
呢
?
那
么
应
该
使
用
c
l
o
n
e
方
法
,
这
跟
其
他
语
言
差
不
多
。
l
e
t
s
=
S
t
r
i
n
g
:
:
f
r
o
m
(
"
h
e
l
l
o
"
)
;
l
e
t
s
1
=
s
.
c
l
o
n
e
(
)
;
/
/
进
行
深
拷
贝
操
作
p
r
i
n
t
l
n
!
(
"
{
}
\
n
{
}
"
,
s
,
s
1
)
;
/
/
这
样
s
作
用
域
并
没
有
被
转
移
,
仍
然
可
用
简
单
对
象
的
深
拷
贝
对
于
简
单
的
基
本
类
型
而
言
,
实
际
上
拷
贝
之
后
,
也
并
没
有
发
生
作
用
域
转
移
,
这
点
值
得
注
意
。
l
e
t
x
=
3
.
1
4
;
l
e
t
y
=
x
;
/
/
没
问
题
,
拷
贝
之
后
x
即
失
效
p
r
i
n
t
l
n
!
(
"
x
=
{
}
y
=
{
}
"
,
x
,
y
)
;
l
e
t
x
=
S
t
r
i
n
g
:
:
f
r
o
m
(
"
h
e
l
l
o
"
)
;
l
e
t
y
=
x
;
p
r
i
n
t
l
n
!
(
"
x
=
{
}
y
=
{
}
"
,
x
,
y
)
;
/
/
不
可
以
,
因
为
x
已
经
i
n
v
a
l
i
d
了
原
因
是
对
于
这
些
对
象
的
拷
贝
完
全
发
生
在
栈
上
,
认
为
采
取
上
面
的
作
用
域
转
移
的
策
略
对
它
们
没
有
任
何
价
值
,
所
以
这
样
设
计
。
自
定
义
对
象
的
深
拷
贝
实
质
上
刚
才
所
说
的
简
单
对
象
复
制
后
没
有
发
生
作
用
域
转
移
的
深
层
原
因
是
因
为
它
们
实
现
了
一
个
特
殊
的
接
口
C
o
p
y
,
中
有
这
些
对
象
实
现
了
这
个
接
口
:
基
本
类
型
,
包
括
数
值
类
型
、
布
尔
、
浮
点
数
、
字
符
类
型
只
包
含
实
现
了
C
o
p
y
接
口
的
元
组
对
于
我
们
自
己
的
对
象
,
也
可
以
实
现
C
o
p
y
接
口
,
从
而
使
得
拷
贝
之
后
,
作
用
域
不
会
转
移
。
如
下
:
#
[
d
e
r
i
v
e
(
D
e
b
u
g
,
C
o
p
y
,
C
l
o
n
e
)
]
s
t
r
u
c
t
P
o
i
n
t
{
x
:
i
3
2
,
y
:
i
3
2
,
}
f
n
m
a
i
n
(
)
{
l
e
t
p
1
=
P
o
i
n
t
{
x
:
1
0
,
y
:
1
0
}
;
l
e
t
_
p
2
=
p
1
;
p
r
i
n
t
l
n
!
(
"
p
1
:
{
:
?
}
"
,
p
1
)
;
/
/
没
问
题
,
因
为
P
o
i
n
t
继
承
了
C
o
p
y
接
口
}
引
用
(
R
e
f
e
r
e
n
c
e
)
4
方
法
传
参
和
返
回
值
也
会
发
生
作
用
域
转
移
如
同
拷
贝
一
样
,
将
变
量
传
递
给
函
数
同
样
会
发
生
作
用
域
转
移
,
例
如
:
f
n
o
u
t
p
u
t
(
s
t
r
:
S
t
r
i
n
g
)
{
p
r
i
n
t
l
n
!
(
"
=
>
{
}
"
,
s
t
r
)
;
}
f
n
m
a
i
n
(
)
{
l
e
t
x
=
S
t
r
i
n
g
:
:
f
r
o
m
(
"
h
e
l
l
o
"
)
;
o
u
t
p
u
t
(
x
)
;
p
r
i
n
t
l
n
!
(
"
x
=
{
}
"
,
x
)
;
/
/
不
可
以
,
因
为
x
作
用
域
已
经
转
移
了
}
上
述
的
规
则
同
样
适
用
于
通
过
方
法
调
用
发
生
的
作
用
域
转
移
。
同
样
,
如
果
一
个
函
数
有
返
回
值
,
那
么
通
过
返
回
值
会
更
改
。
现
在
可
以
注
意
到
,
一
旦
一
个
变
量
传
给
了
某
个
函
数
调
用
之
后
,
那
么
这
个
变
量
就
被
转
移
了
,
如
果
我
们
希
望
多
次
使
用
这
个
变
量
,
岂
不
是
很
麻
烦
?
唯
一
的
办
法
就
是
再
将
它
从
返
回
值
返
回
回
来
,
像
这
样
:
f
n
o
u
t
p
u
t
(
s
t
r
:
S
t
r
i
n
g
)
-
>
S
t
r
i
n
g
{
p
r
i
n
t
l
n
!
(
"
=
>
{
}
"
,
s
t
r
)
;
s
t
r
}
f
n
g
e
n
e
r
a
t
e
(
)
-
>
S
t
r
i
n
g
{
S
t
r
i
n
g
:
:
f
r
o
m
(
"
h
e
l
l
o
w
o
r
l
d
!
"
)
}
f
n
m
a
i
n
(
)
{
l
e
t
x
=
g
e
n
e
r
a
t
e
(
)
;
l
e
t
x
=
o
u
t
p
u
t
(
x
)
;
/
/
通
过
返
回
值
再
把
x
传
出
来
,
重
新
获
得
所
有
权
p
r
i
n
t
l
n
!
(
"
x
=
{
}
"
,
x
)
;
/
/
不
可
以
,
因
为
x
作
用
域
已
经
转
移
了
}
那
么
如
果
我
们
函
数
本
身
也
有
一
个
返
回
值
怎
么
办
?
虽
然
我
们
理
论
上
也
可
以
通
过
元
组
的
方
式
来
实
现
,
但
是
代
码
会
变
得
很
奇
怪
,
所
以
并
不
是
真
正
的
解
决
方
法
。
引
用
(
R
e
f
e
r
e
n
c
e
)
解
决
上
述
问
题
的
一
个
办
法
就
是
,
变
量
引
用
。
如
果
是
一
个
变
量
引
用
的
话
,
那
么
就
不
会
夺
取
该
变
量
的
所
有
权
,
如
下
:
f
n
o
u
t
p
u
t
(
s
t
r
:
&
S
t
r
i
n
g
)
{
p
r
i
n
t
l
n
!
(
"
=
>
{
}
"
,
s
t
r
)
;
}
f
n
m
a
i
n
(
)
{
l
e
t
x
=
g
e
n
e
r
a
t
e
(
)
;
o
u
t
p
u
t
(
&
x
)
;
/
/
传
递
x
的
引
用
,
这
样
就
不
会
夺
取
所
有
权
了
p
r
i
n
t
l
n
!
(
"
x
=
{
}
"
,
x
)
;
/
/
可
以
,
因
为
x
作
用
域
未
发
生
转
移
}
是
不
是
很
像
要
创
建
引
用
也
很
简
单
,
加
一
个
&
就
可
以
了
。
借
用
(
B
o
r
r
o
w
i
n
g
)
5
l
e
t
x
=
S
t
r
i
n
g
:
:
f
r
o
m
(
"
h
e
l
l
o
w
o
r
l
d
"
)
;
l
e
t
y
:
&
S
t
r
i
n
g
=
&
x
;
p
r
i
n
t
l
n
!
(
"
x
=
{
}
y
=
{
}
"
,
x
,
y
)
;
/
/
没
问
题
,
y
是
一
个
引
用
,
并
不
会
夺
取
所
有
权
借
用
(
B
o
r
r
o
w
i
n
g
)
引
用
变
量
作
为
函
数
的
参
数
,
称
之
为
借
用
。
所
谓
有
借
有
还
,
再
借
不
难
,
借
的
东
西
迟
早
都
是
要
还
回
去
的
。
如
果
你
对
借
用
的
东
西
做
了
改
变
,
怎
么
办
呢
?
比
如
这
样
:
1
2
|
f
n
o
u
t
p
u
t
(
s
t
r
:
&
S
t
r
i
n
g
)
{
|
-
-
-
-
-
-
-
h
e
l
p
:
c
o
n
s
i
d
e
r
c
h
a
n
g
i
n
g
t
h
i
s
t
o
b
e
a
m
u
t
a
b
l
e
r
e
f
e
r
e
n
c
e
:
`
&
m
u
t
s
t
d
:
:
s
t
r
i
n
g
:
:
S
t
r
i
n
g
`
1
3
|
s
t
r
.
p
u
s
h
_
s
t
r
(
"
w
o
r
l
d
!
"
)
;
|
^
^
^
`
s
t
r
`
i
s
a
`
&
`
r
e
f
e
r
e
n
c
e
,
s
o
t
h
e
d
a
t
a
i
t
r
e
f
e
r
s
t
o
c
a
n
n
o
t
b
e
b
o
r
r
o
w
e
d
a
s
m
u
t
a
b
l
e
不
用
担
心
,
借
用
的
对
象
默
认
就
是
不
可
变
的
,
所
以
编
译
器
会
检
测
出
来
,
不
允
许
这
样
操
作
。
如
果
的
确
需
要
改
变
怎
么
办
呢
?
对
于
这
种
情
况
,
可
以
使
用
&
m
u
t
创
建
可
变
的
引
用
,
当
然
前
提
是
这
个
变
量
本
身
也
要
是
可
变
的
才
行
,
否
则
编
译
器
也
会
报
错
。
f
n
o
u
t
p
u
t
(
s
t
r
:
&
m
u
t
S
t
r
i
n
g
)
{
s
t
r
.
p
u
s
h
_
s
t
r
(
"
w
o
r
l
d
!
"
)
;
p
r
i
n
t
l
n
!
(
"
=
>
{
}
"
,
s
t
r
)
;
}
f
n
m
a
i
n
(
)
{
l
e
t
m
u
t
x
=
S
t
r
i
n
g
:
:
f
r
o
m
(
"
h
e
l
l
o
w
o
r
l
d
"
)
;
o
u
t
p
u
t
(
&
m
u
t
x
)
;
}
可
变
引
用
有
一
个
限
制
就
是
,
在
同
样
的
作
用
域
里
面
至
多
可
以
有
一
个
变
量
的
可
变
引
用
,
这
样
做
的
好
处
是
在
编
译
时
就
避
免
了
数
据
竞
争
。
中
有
以
下
的
限
制
:
在
同
一
个
中
,
最
多
有
一
个
变
量
的
可
变
引
用
可
变
引
用
和
不
可
变
引
用
不
能
同
时
存
在
。
这
里
决
定
是
否
同
时
存
在
的
条
件
是
,
在
可
变
引
用
之
后
的
语
句
是
否
有
不
可
变
引
用
被
使
用
。
l
e
t
m
u
t
s
=
S
t
r
i
n
g
:
:
f
r
o
m
(
"
h
e
l
l
o
"
)
;
l
e
t
r
1
=
&
s
;
/
/
n
o
p
r
o
b
l
e
m
l
e
t
r
2
=
&
s
;
/
/
n
o
p
r
o
b
l
e
m
p
r
i
n
t
l
n
!
(
"
{
}
a
n
d
{
}
"
,
r
1
,
r
2
)
;
/
/
r
1
a
n
d
r
2
a
r
e
n
o
l
o
n
g
e
r
u
s
e
d
a
f
t
e
r
t
h
i
s
p
o
i
n
t
l
e
t
r
3
=
&
m
u
t
s
;
/
/
n
o
p
r
o
b
l
e
m
/
/
如
果
在
这
个
地
方
之
后
还
有
使
用
r
1
和
r
2
的
地
方
,
那
么
编
译
会
报
错
/
/
p
r
i
n
t
l
n
!
(
"
{
}
a
n
d
{
}
"
,
r
1
,
r
2
)
;
p
r
i
n
t
l
n
!
(
"
{
}
"
,
r
3
)
;
HTML view coming soon.
Download PDF
for the full formatted version.