存档

‘收藏’ 分类的存档

参数$#,$*,$@,$0,$1,$2…及特殊参数$?,$-等的含义

2012年3月31日 评论已被关闭

Bash shell中的位置参数$#,$*,$@,$0,$1,$2…及特殊参数$?,$-等的含义
详见ABS(Advanced Bash Shell)中文翻译版103页第9章第一节内部变量,当然英文版ABS都一样

$1, $2, $3等等…(注意,$0不是位置参数)
位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量.
此数目可以任意多,但只有前9个可以被访问,使用shift命令可以改变这个限制。
(具体见Example 4-5 和Example 11-15)
$0
$0表示当前执行的进程名,script 本身的名字,或者在正则表达式中表示整行输出

$#
命令行或者是位置参数的个数.(见Example 33-2)
$*
所有的位置参数,被作为一个单词.
注意:”$*”必须被”"引用.
$@
与$*同义,但是每个参数都是一个独立的”"引用字串,这就意味着参数被完整地传递,
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的单词.
注意:”$@”必须被”"引用(会让每一个参数加上引号),比如:

bash test.bash x y z
则$@内容为:”x” “y” “z”
$*内容为:”x y z”
其他的特殊参数
$-
传递给脚本的falg(使用set 命令).参考Example 11-15.
显示shell使用的当前选项,与set命令功能相同
注意:这起初是ksh 的特征,后来被引进到Bash 中,但不幸的是,在Bash 中它看上去也不
能可靠的工作.使用它的一个可能的方法就是让这个脚本进行自我测试(查看是否是交
互的).
$!
在后台运行的最后的工作的PID(进程ID).
$_
保存之前执行的命令的最后一个参数.
$?
命令,函数或者脚本本身的退出状态(见Example 23-7)
用于检查上一个命令,函数或者脚本执行是否正确。(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错。)
$$
脚本自身的进程ID.这个变量经常用来构造一个”unique”的临时文件名.
(参考Example A-13,Example 29-6,Example 12-28 和Example 11-25).
这通常比调用mktemp 来得简单.
注意事项:
[1] 当前运行的脚本的PID 为$$.

http://blog.nxmeinv.com/post-168.html

[2] “argument”和”parameter”这两个单词经常不加区分的使用.在这整本书中,这两个
单词的意思完全相同.(在翻译的时候就未加区分,统统翻译成参数)

分类: 收藏 标签:

四个提供免费SSH账号的网站

2011年11月8日 评论已被关闭

一、 http://blog.onlybird.com/

打开网页获取免费SSH账号服务器地址、端口、用户名及密码,密码每天自动更换。

二、 http://www.ssh91.com/freessh.html

打开网页获取免费SSH账号(仅限于浏览网页)服务器地址、端口、用户名及密码,密码不定期更改。

三、 http://www.99ssh.com/reg.asp

久久SSH现提供3天免费试用。打开网页提交注册信息后登录账户;点击”自助开通”,输入SSH用户名,选择”试用3天”及机房,再点击”马上实时开通SSH主机”即可获得SSH服务器地址及密码。

四、 https://www.usessh001.com/signup?plan=free

打开网页注册之后您将获得 浏览网页与视频 SSH服务的免费三天试用(可换邮箱重复申请试用)。

分类: 收藏 标签:

FTP的主动被动和相关的防火墙设置

2011年10月21日 评论已被关闭

ftp 分2种模式,主动和被动
主动模式FTP server用到 tcp 21 控制, 20 数据, FTP CLIENT 用到 N 连接 21, 这个时候是ftp server 主动用20端口连接 客户端的n+1端口 , N > 1024 。

被动模式FTP server用到tcp 21 控制,x > 1024,随机端口, FTP CLIENT 用到 N 连接 21, 这个时候是ftp客户端主动使用N +1 连接ftp服务器的x端口 , N > 1024 。
现在用到的基本都是被动模式,因为客户端做了NAT,FTP服务器不可能主动发起连接到客户端。
要是开放端口,服务器端要开放 21, 入, 1024以上的所有TCP端口,入。

////////////////////
FTP 分为两类:
主动FTP(Port FTP),也就是一般的FTP﹔被动FTP(Port FTP)

主动FTP

主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。

针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:

1. 任何端口到FTP服务器的21端口 (客户端初始化的连接 S<-C)
2. FTP服务器的21端口到大于1024的端口(服务器响应客户端的控制端口 S->C)
3. FTP服务器的20端口到大于1024的端口(服务器端初始化数据连接到客户端的数据端口 S->C)
4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口 S<-C)
主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己****的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。

防火墙设置的例子
建置一个防火墙下的FTP server,使用主动FTP(Port FTP) mode:预设的FTP port:21 以及FTP data port:20
执行以下两行指令,只允许port 21 以及port 20 开放,其它关闭。
iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

FTP软件本身的设置

以vsFTP为例子. 修改/etc/vsFTPd/vsFTPd.conf
新增底下两行
listen_port=21
ftp_data_port=20

设置错会出现的情况
FTP client(如cuteFTP)的联机方式不能够选择passive mode,否则无法建立数据的联机。也就是读者可以连上FTP server,但是执行ls、get 等等的指令时,便无法运作。

被动FTP

为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。

在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

1. 从任何端口到服务器的21端口 (客户端初始化的连接 S<-C)
2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接 S->C)
3. 从任何端口到服务器的大于1024端口 (入;客户端初始化数据连接到服务器指定的任意端口 S<-C)
4. 服务器的大于1024端口到远程的大于1024的端口(出;服务器发送ACK响应和数据到客户端的数据端口 S->C)

防火墙设置的例子
建置一个防火墙下的FTP server,使用被动FTP(Port FTP) mode:FTP port:21 以及FTP data port 从9981 到9986。
执行以下两行指令,只允许port 21 以及port 9981-9990 开放,其它关闭。
iptables -A INPUT -p tcp -m multiport –dport 21,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT –reject-with tcp-reset

FTP软件本身的设置
以vsFTP为例子. 修改/etc/vsFTPd/vsFTPd.conf
新增底下四行
listen_port=21
pasv_enable=YES
pasv_min_port=9981
pasv_max_port=9986

设置错会出现的情况
这个例子中,FTP client(如cuteFTP)的联机方式必须选择passive mode,否则无法建立数据的联机。也就是读者可以连上FTP server,但是执行ls,get 等等的指令时,便无法运作。

分类: 收藏 标签:

Android用户的一些误区——关于进程管理_cnBeta 访客互动_cnBeta.COM

2011年9月17日 评论已被关闭

Android用户的一些误区——关于进程管理

通过Android用户的一些误区——关于进程管理_cnBeta 访客互动_cnBeta.COM.

 

去年自己就弄了一台i5700,主要用来编程时候做试验平台(因为便宜)。今年6月给自己及父母各买了一台Android手机,自用DHD,老爸用的i9000,老妈用的Thunderbolt。在进行了许多Android系统的了解及编程之后,发现其实无论是论坛上的用户还是家人使用的过程中,对于Android系统,特别是进程管理这一块都有着许多误区。这里不是指责,只是提出自己的看法,希望拍砖的朋友们轻一点。

一个极其意外的习惯——进程全杀、禁止自启动
记得刚刚开始用i5700时,我和很多人有着一个一样的习惯——全杀进程。i5700的ram很小,而我又有一边开着UC一边开着校内一边开着iReader看书的恶习,通过诸如Advanced task killer之类的软件清理进程,看到空闲ram一下子变多的时候容易有一种虚幻的快感。

后来开始做Android程序,特别是了解到Android系统进程管理(特别是后台管理和自动释放优先级低的进程换取空闲ram)后,才开始明白,当一个程序放到后台时,系统可能将数据保存起来而让程序进行休眠,或者仅仅运行部分服务,仅仅当收到相关的申请时才恢复部分进程,处理完之后结束进程而保留服务——这些都是自动处理的,也就是说,如果用户运行的软件都是按照Android思想而设计的,那么除了明确有退出按键的一部分大型程序外,其他程序是都可以运行后扔到后台不用再管了的,当某个程序需要更多ram时,系统会自动释放掉一些不重要且最近没有使用的程序;而当你打开某个曾经打开的程序时,系统会先检查ram里是不是有这个程序的部分进程,然后进行恢复,这样可以更快打开它。

当然了,如果手机本身ram很小而且cpu不给力,系统自然会很频繁的终止进程释放内存,这就使得许多小内存的手机用起来感觉一卡一卡的了。于是很多论坛都开始讨论怎么样使得全杀过后空闲内存更大、怎样禁止自动启动某些进程——结果空闲ram确实大了,用起来反而更卡了——随便切换个程序(如看书的时候来了个电话)系统都要重新启动几乎所有相关的进程,怎么能反应不迟钝。

Android用RAM的方式,跟windows、WM、Sybiam是两回事。在Android里,RAM被用满了是件好事。它意味着你可以快速打开之前打开的软件,回到之前的位置。所以Android很有效的使用RAM,很多用户看到他们的RAM满了,就认为拖慢了他们的手机。而实际上,退出后重启这些程序才真正拖慢了手机的响应。而且这些自动杀进程的软件本身是个时刻活跃的进程,它始终在后台保持活跃使得CPU难以消停,反而增加了耗电量。

这个问题最终我觉得应该埋怨程序员。许多国内的Android程序员编写的程序根本就没有对进程进行分类,总是试图将所有进程都保留在内存里(例如某著名手机浏览器)!这就使得这些程序即使放到后台了,它也不许系统对其进程进行释放。WM、Sybiam系统里的内存管理没有这么智能,于是习惯了这种方法的程序员以及用户就把这种内存管理方式和使用习惯用到了Android上。所以这里建议,对于很多国内软件(一般都至少还是会有个退出按钮的),用完之后还是按一下退出吧,而对于规范化的程序,以及系统自带的那些程序(例如google的程序基本都没有退出),用过之后放后台就好。

有意思的一个例子——老爸和老妈

我的老爸是个准geek,i9000到手没多久就开始了无尽的刷机和优化之旅。各种论坛上充满了各种关于“优化”和“增加空闲内存”的帖子,他很听从的装了自动杀进程的软件,删了很多会自动启动的google程序(地图、gmail之类之类的),可是还会一个劲问我的DHD空闲内存有多少,为什么会比他的手机空闲内存跟我差不多但是我的会更流畅。

而我的母亲对于手机之类的完全不怎么了解,Thunderbolt在她手里更像是有电话功能的游戏机,如果一个程序没有明显的退出按钮,那她就完全不会退出,更不用说什么禁止自动启动什么自动杀进程之类的东西了。于是当我爸发现老妈手机只有不到30mb的空闲ram可还是比他的i9000顺畅,甚至此时还刚打开切水果开玩的时候,他终究相信了——我妈比他更会用Android手机。

在我向他详细说明为什么可以把程序扔到后台,为什么不应该用那些乱七八糟的进程管理软件之后,他试了三天,然后总算承认——他之前那些所谓优化,全是瞎折腾…

分类: 收藏 标签:

一张专家推荐的最健康的作息时间表

2011年9月14日 评论已被关闭

转自 一张专家推荐的最健康的作息时间表.

下面是一张专家推荐的最健康的作息时间表:

7:30:起床。英国威斯敏斯特大学的研究人员发现,那些在早上5:22―7:21 分起床的人,其血液中有一种能引起心脏病的物质含量较高,因此,在7:21之后起床对身体健康更加有益。打开台灯。“一醒来,就将灯打开,这样将会重新调整体内的生物钟,调整睡眠和醒来模式。”拉夫堡大学睡眠研究中心教授吉姆·霍恩说。喝一杯水。水是身体内成千上万化学反应得以进行的必需物质。早上喝一杯清水,可以补充晚上的缺水状态。

7:30―8:00:在早饭之前刷牙。“在早饭之前刷牙可以防止牙齿的腐蚀,因为刷牙之后,可以在牙齿外面涂上一层含氟的保护层。要么,就等早饭之后半小时再刷牙。”英国牙齿协会健康和安全研究人员戈登·沃特金斯说。

8:00―8:30:吃早饭。“早饭必须吃,因为它可以帮助你维持血糖水平的稳定,”伦敦大学国王学院营养师凯文·威尔伦说。早饭可以吃燕麦粥等,这类食物具有较低的血糖指数。

8:30―9:00:避免运动。来自布鲁奈尔大学的研究人员发现,在早晨进行锻炼的运动员更容易感染疾病,因为免疫系统在这个时间的功能最弱。步行上班。马萨诸塞州大学医学院的研究人员发现,每天走路的人,比那些久坐不运动的人患感冒病的几率低25%。

9:30:开始一天中最困难的工作。纽约睡眠中心的研究人员发现,大部分人在每天醒来的一两个小时内头脑最清醒。

10:30:让眼睛离开屏幕休息一下。如果你使用电脑工作,那么每工作一小时,就让眼睛休息3分钟。

11:00:吃点水果。这是一种解决身体血糖下降的好方法。吃一个橙子或一些红色水果,这样做能同时补充体内的铁含量和维生素C含量。

13:00:在面包上加一些豆类蔬菜。你需要一顿可口的午餐,并且能够缓慢地释放能量。“烘烤的豆类食品富含纤维素,番茄酱可以当作是蔬菜的一部分。”维伦博士说。

4:30―15:30:午休一小会儿。雅典的一所大学研究发现,那些每天中午午休30分钟或更长时间,每周至少午休3次的人,因心脏病死亡的几率会下降37%。

16:00:喝杯酸奶。这样做可以稳定血糖水平。在每天三餐之间喝些酸牛奶,有利于心脏健康。

17:00―19:00:锻炼身体。根据体内的生物钟,这个时间是运动的最佳时间,舍菲尔德大学运动学医生瑞沃·尼克说。

19:30:晚餐少吃点。晚饭吃太多,会引起血糖升高,并增加消化系统的负担,影响睡眠。晚饭应该多吃蔬菜,少吃富含卡路里和蛋白质的食物。吃饭时要细嚼慢咽。

21:45:看会电视。这个时间看会儿电视放松一下,有助于睡眠,但要注意,尽量不要躺在床上看电视,这会影响睡眠质量。

23:00:洗个热水澡。“体温的适当降低有助于放松和睡眠。”拉夫堡大学睡眠研究中心吉姆·霍恩教授说。

23:30:上床睡觉。如果你早上7点30起床,现在入睡可以保证你享受8小时充足的睡眠。

任何试图更改生物钟的行为,都将给身体留下莫名其妙的疾病,20、30年之后再后悔,已经来不及了。

一、晚上9-11点为免疫系统(淋巴)排毒时间,此段时间应安静或听音乐。

二、晚间11-凌晨1点,肝的排毒,需在熟睡中进行。

三、凌晨1-3点,胆的排毒,亦同。

四、凌晨3-5点,肺的排毒。此即为何咳嗽的人在这段时间咳得最剧烈,因排毒动作已走到肺;不应用止咳药,以免抑制废积物的排除。

五、凌晨5-7点,大肠的排毒,应上厕所排便。

六、凌晨7-9点,小肠大量吸收营养的时段,应吃早餐。疗病者最好早吃,在6点半前,养生者在7点半前,不吃早餐者应改变习惯,即使拖到9、10点吃都比不吃好。

七、半夜至凌晨4点为脊椎造血时段,必须熟睡,不宜熬夜。

 

分类: 收藏 标签:

转《苹果核战记》观后感:其实,我们都背叛了各自的阶级_soso_新浪博客

2011年9月7日 1 条评论

《苹果核战记》观后感:其实,我们都背叛了各自的阶级_soso_新浪博客.

    看这片之前我还挺纳闷,苹果核战记,苹果啥时候和核战扯上关系了。看完才知道其实是苹果核·战记,英文名Apple Seed——这多少是一个带有象征意味的名字,Apple Seed,禁果的种子。
   片子讲的是未来的故事,基调很沉重也很常见:人类因为总也无法抑制,并且还不断膨胀的自我欲望所以争斗不休,终于又引发了一次世界大战。这场旷日持久的战争把地球整成了废墟,更搞笑的是,没有战胜国。面对一个满目疮痍的地球,我们都输了,人类是这枚战争恶果唯一的生产者和品尝者。这之后,一个名叫“奥林帕斯”的联合国升级版组织建立了一个理想国度——乌托邦。
   乌托邦是一座科技高度发达,人类和改造人和平共处的城市。改造人是人类科技发展到一个极致程度所创造出的人工生命体。出于对自身弱点的改良,他们被抑制了感情和欲望,没有爱情没有性,永远彬彬有礼不引发争端。并且为了地球生物圈的均衡,研发者琪丽雅姆博士并没有给予他们生殖的能力。所有改造人每隔一段时间就必须补充生命能量,否则会迅速衰老直至死亡。
   整个乌托邦的发展走向被一台名为“盖亚”的超级电脑控制着。说白了它就代表着地球的意志,摆脱了人本位和改造人本位的意识影响,以一种公正合理缜密完美的程序处理事务。既然这个理想国度的设定是友好共处,那就不得不涉及到一个核心的东西:均衡。“盖亚”虽是一台很完美的机器,可以进行自我思考和增殖,但它毕竟没有感情,要想更好地处理和判断这个人类社会的未来走向,就必须要人类的参与和修正。
   所以就有了七长老,他们是人类,任务就是每天和盖亚辩论,修正盖亚的思想。而因为这座城市一半以上的居民都是经过改良的人造人,所以总统由名叫阿迪那的改造人担任。在乌托邦的标志性建筑顶端,还封藏着D-Tank病毒。它一旦被释放就能夺取所有改造人的性命——这似乎达成了一种很好的均衡态势:改造人摒除了人类的欲望和弱点,同时又拥有良好的基因,他们很优秀,更符合地球的需要;但另一方面,他们毕竟是被制造出来的,不可能不考虑到人类的生存和地位问题。所以他们只能与我们和平共处,如果想取而代之,就要作为实验失败品被彻底剔除。
   某一天,一小撮破坏社会和谐的恐怖分子袭击了改造人的能量补充源,所有的改造人就只剩下等死一条路。或者,用新技术给予他们生殖能力,让他们真正进化为拥有完整自主生命的新人类——这个新技术,代号Apple Seed,其实早就被研发者琪丽雅姆博士制造出来了,只是,她把它藏起来了。
   于是,改造人总统阿迪那女士就委托我们的女主角把Apple Seed找出来。为了拯救跟自己拥有相同基因又一见如故的改造女,主角答应了阿迪那的委托。她来到早已废弃的初代改造人研究所,插入阿迪那女士交给自己的光盘,一段全息影像被投影出来。原来琪丽雅姆博士竟然就是女主老妈,她把Apple Seed藏到女主随身携带的项链里,并且对她说:妞妞,有怪蜀黍要来抢妈妈的棒棒糖了。你一定要把这个棒棒糖保管好,只可以交给阿迪那。
   看完这段影像,女主终于找回了自己丢失的记忆。不出所料的,她又一次遭遇到一小撮破坏社会和谐的恐怖分子的重重包围——只不过这一次一小撮坏分子是以乌兰诺斯将军为首的人类正规军,他们不允许改造人的彻底进化。当然女主是不可战胜的,她成功地把Apple Seed交给了阿迪那女士。

   复述了这么长一段剧情,终于迎来高潮。七长老哈哈大笑,对女主说:我们虽然是人类,但是,我们对人类这个恶劣的、暴戾的、贪婪的、不知悔改的物种彻底失望了,改造人才是地球的未来。袭击改造人的能量补充源就是我们策划的,目的就是为了重新启动Apple Seed计划,让改造人得到完美的、彻底的进化,成为新人类,代替我们统治世界。这不是我们的伪诏,而是盖亚的判断哦。我们几个费了好大劲,同时拜我们人类耀眼的糟糕表现,才终于让盖亚得出了这个结论——而且,还有一个大秘密哦,D-Tank病毒并不是让改造人灭绝的病毒,刚好相反,它能剥夺人类的生殖能力,让他们自己慢慢消亡,这是多么和平美妙的人类的安乐死啊。乖乖,我就要按这个按钮了哦,只要按了这个按钮,D-Tank病毒就会立即释放了哦~
   这时只听嘭的一声,改造人总统阿迪那女士出现了,她射坏了那个按钮。她说:虽然我是改造人,但是我不允许你们那样做。我们改造人被制造出来的目的就是和你们人类友好共处,共建和谐社会。如果你们自我毁灭了,我们的存在就成一个伪命题了,这样不行。同学,不要小瞧我们改造人好伐。我们可不屑于统治地球,我们的奋斗目标是和人类一起共建和谐美好纯真的未来!
   这就是这部片子最搞的地方,周总理回应赫鲁晓夫的那句话刚好是个完美注脚:其实,我们都背叛了各自的阶级……
   七长老不服气啊,好吧,你终止代码,我们偏要强制执行。原本保卫这座理想国度乌托邦的8架超级无敌大将军长脚炮塔正全力向D-Tank进发。你虽然打坏了按钮,但长脚炮塔还是可以把D-Tank打烂释放出来滴。然而,作为一切片子的固有定律,我们的女主角最终成功阻止了长脚炮塔的暴走,挽救人类于生死存亡的悬崖边缘,和进化后的改造人共同迎来了美好的明天。

   总而言之,这部片子特效不错,音乐很赞,很是气势恢弘。而且这让我想起一个问题:其实,在每一个勇者拯救世界的RPG中,大魔王都是先天下之忧而忧,怀揣梦想的理想主义者。他强烈地认识到这个世界不对头了,到了一个亟需变革的地步。只不过他的价值观和人民群众有点偏差,人民群众认为虽然这个世界很糟糕,但我们还是充满了希望,可以慢慢地变好。大魔王则是激进的悲观主义者,他认为只有把这个糟糕的世界迅速推倒重来,重新按自己的理想构建一个新的秩序才完美。
   而我们的勇者同学一开始反而是个无所事事的小屁孩,完全没有忧国忧民心系苍生的博大胸襟。只要劳资自得其乐,哪管这世界千疮百孔~只不过在身陷身不由己的阴谋或者危机后,他不得不不停地跑迷宫、打小怪、做任务、得经验、升级、加属性,最终打败魔王,拯救世界。
   这说明了几个问题:1.魔王都是理想主义者,勇者基本上都是没理想没抱负的小屁孩。2.成王败寇,你被打败了,你就是大魔王。3.我们既然立足于这个世界,所以就算它再腐朽糜烂,我们还是得对它抱有希望,这是勇者和魔王最大的理念分歧。4.人类虽然很贪婪、很暴戾、很糟糕,但到目前为止仍然是这个星球上最优秀的物种,不要对人类这种偶尔会自省自律的物种丧失信心。
   最后,我为我是一个人类而骄傲,我为我不是一个理想主义者而自豪~

 

分类: 收藏 标签: