导航:首页 > 女装百科 > 言和模型rem外套

言和模型rem外套

发布时间:2021-10-07 10:55:29

Ⅰ Css单位中px、em和rem的区别

1)px 像素(Pixel)。绝对单位。像素 px 是相对于显示器屏幕分辨率而言的,是一
个虚拟长度单位,是计算机系统的数字化图像长度单位。
2)em 是相对长度单位,相对于当前对象内文本的字体尺寸。如当前对行内文本的字
体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。它会继承父级元素的字体大小,因
此并不是一个固定的值。
3)rem 是 CSS3 新增的一个相对单位(root em,根 em),使用 rem 为元素设定字
体大小时,仍然是相对大小,但相对的只是 HTML 根元素。
4)区别:
IE 无法调整那些使用 px 作为单位的字体大小,而 em 和 rem 可以缩放,rem
相对的只是 HTML 根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既
可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁
反应。目前,除了 IE8 及更早版本外,所有浏览器均已支持 rem。
可以多看看黑马程序员的课程,多学学这些基础知识。

Ⅱ 歌曲我的名字是Remarond是在什么动漫上

你好,这个歌曲我的名字是Rem Arond是动漫与魔共舞里面的。

本作故事的舞台设立在了名为“四皇学园”的学园,主要描写了被恶魔缠住的主人公立华六花与魔界的恶魔们间充满戏剧性的物语。

歌词写的是钩贯雷姆(钩贯レム / Rem Kaginuki)

声优:齐藤壮马“将军了哪,你就尽管挣扎吧。说到底不过只是消磨时间而已”跨越魔界的境界线而来的恶魔。在人间界的伪装姿态是四皇学园的学生会长。 无懈可击,一言一行都堪称完美,比较严肃内敛。

歌手是齐藤壮马。

歌词在图片里面。

如满意望采纳

Ⅲ 彻底弄懂css中单位px和em,rem的区别

css中单位px和em,rem的区别:

1、px是相对长度单位,它是相对于显示器屏幕分辨率而言的。

优缺点:比较稳定和精确,但在浏览器中放大或缩放浏览页面时会出现页面混乱的情况。

2、em是相对长度单位,EM是相对于父元素来设计字体大小的。如果当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。

优缺点:em的值并不是固定的,它会继承父级元素的字体大小。

3、rem是CSS3新增的一个相对单位,REM是相对单位,是相对HTML根元素。

这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。

拓展资料

px:

px实际上就是像素,用PX设置字体大小时,比较稳定和精确。

但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,如果改变了浏览器的缩放,这时会使用我们的Web页面布局被打破,这样对于那些关心自己网站可用性的用户来说,就是一个大问题了。

em:

em就是根据基准来缩放字体的大小,em实质是一个相对值,而非具体的数值,这种技术需要一个参考点,一般都是以<body>的“font-size”为基准,如WordPress官方主题Twenntytwelve的基准就是14px=1em。

所以,我们在写CSS的时候,需要注意以下3点:

1、body选择器中声明Font-size=62.5%;

2、将你的原来的px数值除以10,然后换上em作为单位;

3、重新计算那些被放大的字体的em数值,避免字体大小的重复声明。

rem:

rem是CSS3新增的一个相对单位(root em,根em),使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。

例子:

p {font-size:14px; font-size:.875rem;}

Ⅳ 鬼压床啊。。。。。。

这是蓝心网上面关于鬼压床的科学解释,我觉得说得比较全面和详细了的。

中国说鬼压身,西方说恶魔坐床头,其实都是睡眠麻痹,在正要入睡或自梦中醒来时发生。几乎每个人一生都会遇到一两次睡眠麻痹。所以,当某天你自梦中醒来,却发现连睁眼这个最平常的动作都做不到时,要淡定地想:嗯,我终于经历了人生的第一次睡眠麻痹。然后想一想怎么把它变成谈资,等几分钟甚至几秒钟后,你就活动自如了。

不是所有的睡眠都有睡眠麻痹

睡眠麻痹也不是随便就会发生的,它只发生于特定的睡眠阶段——快速眼球运动睡眠(rapid eye movements,REM)。
人的睡眠分为快速眼球运动睡眠(REM)和慢速眼球运动睡眠(non-rapid eye movements,NREM或slow wave sleep,SWS)两种。它们两个轮流上岗执行睡眠任务,换个4、5次班,天就亮了。
两个睡眠卫士各有特征。一般认为,NREM是永远的先锋及劳动模范,总是它迎接我们进入每一个新的睡眠周期,总是它值时间最长的那班岗(一个完整的睡眠周期最少90分钟,NREM持续时间将近80%)。而眼球的快速运动和做梦则是REM的两大特征,也是这两个睡眠卫士名字的由来。
REM与NREM的轮流上岗制度也不是永远都执行顺利的。有时,会因为一些原因导致REM没有上岗机会。但一旦REM能上岗时,它就要很尽责地把之前的任务补回来,这时,先迎接你进入睡眠的就可能是REM了,而且它的上岗时间也会相应延长。这就是为什么,马上要入睡的状态,也会发生睡眠麻痹的原因了。

做梦与麻痹一对连体婴

虽说只要进入睡眠,人体的感觉功能会暂时减退,肌肉也开始放松,血压下降、心率减慢、呼吸变慢、代谢率降低等一系列自主神经功能也发生改变。但相对来说,NREM时,人在睡眠中还是能变换下睡姿、踢个被、说两句梦话什么的。
可一旦进入REM,感觉功能进一步减退,更难唤醒不说,骨骼肌(跟骨骼相连,靠其收缩完成人体的一系列动作)的反射活动和肌紧张那是弱到不行,肌肉几乎就是完全松弛的。于是,一、二、三,我们都变木头人,不能说话,不能动。但眼球的肌肉倒是好用,快速转动。之所以在REM睡眠时,骨骼肌近乎松弛,使人体处于“瘫痪”状态,跟REM时做梦是密切相关的。梦境,总是千奇百怪的。如果REM睡眠时人不处于麻痹状态,会在梦境的支配下,做出大幅度的动作或暴力行为,伤害到自己或者身边的人。所以,要做梦就得先麻痹自己。
插一句,别说自己从不做梦,那只是因为幸运(抑或不幸)的你总是从NREM睡眠中醒来,所以不知道自己这一晚上还是颇做了几个梦的。知道自己做梦的筒子们,也不要以为自己一晚上只做了这一个梦,你只是在做这个梦的时候醒了而已。

脑醒,身未醒

现在清楚了吧,所谓的“鬼压床”只是在REM睡眠时,由于现代医学也搞 不清楚的原因,大脑突然醒来了,却没有提前发出神经冲动告诉骨骼肌们也别睡了,准备起床。
当大脑发现这一错误时,它会赶紧把本该在醒前发出的神经冲动补发出去,可这就得耗上一点时间。这些神经冲动都是些生物电信号,如果你很着急,它们可能还得在大脑内紊乱一阵儿再出发。所以,要淡定。

躺着睡容易“中枪”,还是侧着睡吧

虽然睡眠麻痹原因不明,可医学家们还是找到了些相关因素的。其中一项就是:平躺着睡容易发生睡眠麻痹。原因是,平躺时,可以让肌肉麻痹得很彻底,一旦这时醒来而大脑又没做好提前通知工作,睡眠麻痹没商量。可侧着睡就不同了,因为要维持侧躺,还是需要肌肉用点力的,肌肉也就不会麻痹得那么彻底。

Ⅳ sleep cycle怎么用

源自 http://www.guokr.com/question/458443/

Sleep Cycle我没用过,我用的是iPad上的Smart Alarm HD,其原理应该都差不多。

我们知道人的睡眠其实是非常复杂的,不是“眼睛一闭一睁,一天就过去了”那么简单,人的睡眠是分若干相的,如果以脑电波信号作为分相依据,那么人的睡眠可以分为5相:入睡期、浅睡期、熟睡期、深睡期、快速动眼期(REM)。前四个阶段又统称为费快速眼动期(非REM)。人在睡眠时会经历若干次循环,从REM到非REM,再到REM,再到非REM……

在快速眼动期(即图中的REM)当中,脑电波迅速改变,出现与清醒状态时的脑点波相似的高频率、低波幅脑波,这时人会有较大幅度的翻身等动作,也比较容易唤醒。因此如果在REM期唤醒睡眠者,睡眠者会感觉神清气爽,休息的很好;如果在非REM期唤醒睡眠者,则会感觉没睡够、昏昏沉沉。这都是由脑电波决定的。

当然,目前的iPad、iPhone等产品还不具备直接探测脑电波的功能,因此这类App采用的是一种近似的手段,即以人睡眠当中的动作幅度和频率作为衡量睡眠周期的标准,其原理就是把电子产品平放在床上,利用电子产品内置的加速度传感器,探测床表面的震动,从而获知人的动作幅度和频率,再利用其设计好的算法对睡眠周期进行判断,从而在REM期中唤醒睡眠者。比如上面的图中最后唤醒时都是在REM期。

比如你设定早上7:00起床,这类App会认为7:00就是起床的deadline,它会在7:00之前你的某一个REM睡眠期内将你唤醒,这样你醒的时候就会觉得神清气爽。换言之,此类App与普通闹钟的区别在于它唤醒你的时间不一定是你设定的时间,因为在你设定的那个时间点上,你可能会处于非REM睡眠期。

由于这类App靠的是加速度传感器,所以如果你把iPad、iPhone压在枕头底下,或是离你身体太远,它就很不准了。我曾经试验过,结果是无法探测数据,最后App只能保险起见,在我设定的7:00准时把我叫醒,结果自然是昏昏沉沉,上午的课都没听进去……

至于这类App的实际作用,我觉得还是很有效果的。第一个写出这种App的绝对是天才,要知道探测脑电波非常不容易,需要贴上满头的电极片,成本也很高,根本就不是我们日常睡觉所能用的;而利用加速度传感的方法不仅简单易行,而且降低了成本。当然,任何软件的功能都是有限的,也不能过分夸大,比如我用的Smart Alarm HD,在个别情况下还是会出现无法探测的情况,只能老老实实的按照设定的时间唤醒我。

Ⅵ 魔力宝贝生产系多少级能传送奇力和其他村子

圣拉鲁卡、伊尔村无限制
亚留特12
维诺亚、奇利15
加纳20
杰诺瓦、蒂娜、阿巴尼斯25
亚诺曼到4个村的传送、从阿凯鲁法到坎那贝拉、哥拉尔到米诺基亚村,生产系都是限制25级且要经过二转

Ⅶ 九年级英语书第107页3a “ I remembe”翻译是什么

具体翻译如下:

The owner of a restaurant must know how to make food. They also need to know how to make money. It's something they get from science learning. Red is a color that makes people hungry. Red also makes customers eat faster.

餐厅的老板必须知道怎样制作食物。他们也需要知道怎样赚钱。这是一些他们从科学学习中得到的东西。红色这种颜色会让人们感到饥饿。红色也会使顾客吃得更快。

Therefore, many fast food restaurants have red furniture or walls. Warm
colors like pink and light blue make people relax, so they spend more
time eating. Warm lighting makes people look better, but it makes food
look bad.

因此,许多快餐店都有红色的家具或墙面。像粉红和浅蓝这样的暖颜色会使人们放松,因此他们会花更多的时间吃饭。温暖的灯光会让人们看起来更好,但它会使食物看起来糟糕。

Loud music may be good at the beginning, but soon it
will make people want to leave. Many restaurants, especially fast food
restaurants, use this knowledge to make customers eat faster.

喧闹的音乐可能在开始时很好,但很快它会让人们想要离开。许多餐馆,特别是快餐店,使用这些知识让顾客吃快些。

They
only sit for about 20 minutes before the customer leaves. Because
customers won't stay long, small restaurants can receive more customers
every day.

在顾客离开之前他们只会坐大概20分钟。因为顾客不会待很久,小餐馆每天就可以接待更多的顾客。

这部分内容主要考察的一般现在时的知识点:

描述主语的状态、性质、特征、能力等,目的是为了“描述现阶段的动作或者状态。e.g. I don't want so much.我不想要太多。Wang An writes good English but doesn't speak well.王安英语写得很好但是说得不好,比较:Now I put the sugar in the cup.现在我把一些糖放进杯子里面。I am doing my homework now.现在我正在写我的作业。

第一句用一般现在时,用于操作演示或指导说明的示范性动作,表示言行的瞬间动作。再如:Now watch me,I switch on the current and stand back. 第二句中的now是进行时的标志,表示正在进行的动作的客观状况,所以后句用现在进行时。

表示通常性、规律性、习惯性、真理性(即事实)的动作或状态,或者动作有时间规律发生的事件的一种时间状态。在英语语法中,“时“指动作发生的时间,”态“指动作的样子和状态。

Ⅷ 哪能找到国外的潮流Rem、RB音乐啊不要那俗不可耐的冰河时代类型的啊 要有深度的。。。。谢谢 急啊

一:什么是 r&b?
r&b的全名是 rhythm & blues,一般译作"节奏布鲁斯"。广义上, r&b可视为“黑人的流行音乐”,它源於黑人的blues音乐,是现今西行流行乐和摇滚乐的基础,billboard杂志曾介定 r&b为所有黑人音乐,除了 jazz和blues之外,都可列作 r&b,可见 r&b的范围是多么的广泛。近年黑人音乐圈大为盛行的 hip hop和 rap都源於 r&b,并且同时保存着不少 r&b成分。
二:朋克(punk)
70年代中期发展起来的一种摇滚乐,或称“朋克摇滚”(punk rock),80年代初扩展到全美国。朋克针对摇滚乐的反抗性减弱这一情况,以一种故意与比较文明的摇滚乐相对立的面目出现。它继承了摇滚乐开始时的反叛精神,蔑视一切传统,蔑视、宗教、教育机构等等,但却是用一种更加颓废的方式,极端无主义的言行表现出来。他们的唱词淫狠、粗鲁;在舞台上尖叫、跺脚、斗殴;音乐上与硬摇滚比较接近,音响极大,音色浓烈浑厚。代表性乐队有“性手枪”(sex pistols)、“撞击”(the clash)等。
70年代末,从朋克中分离出一支比较能被人接受的、也更带点艺术性的新品种,叫“新浪潮”(new wave)。

三:说唱(rap)(hip-hop)

黑人俚语,相当于“谈话”(talking),产自纽约贫困黑人聚居区。它以在机械的节奏声的背景下,快速地诉说一连串押韵的诗句为特征。这种形式来源之一是过去电台节目主持人在介绍唱片时所用的一种快速的、押韵的行话性的语言。莱普的歌词幽默、风趣,常带讽刺性,80年代尤其受到黑人欢迎。最有代表性的乐队是“公开的敌人”(public enemy)。莱普有时也称“希普-霍普”(hip-hop)。实际上,希普-霍普的含义更宽,泛指当时纽约街头文化的各种成分,除莱普外,还有:(莱普经常采用的)用手把放在唱机转盘上的唱片前后移动,发出有节奏的刮擦声;唱片播放员(dj)在转换唱片拼接唱片音乐片断时,听不出中断痕迹的技法;霹雳舞等等。Hip-Hop,这种音乐节奏直接针对和适合街舞,很容易形成视觉冲击。如今“韩流”的成功,在很大程度上就是依靠Hip-Hop旋律所编排的舞蹈,而且更进一步用OLD SCHOOL的节奏来诠释NEW SCHOOL的舞步,新奇刺激,颇具挑逗性。韩国乐队H.O.T在舞台上就是把这种音乐表现得十分到位。不过相对于Hip-Hop音乐发源地的美国来说,由于地理、历史、民族、文化上的差异,使像H.O.T这样的乐队没有太多黑人劲舞的色彩,同样也避免受到太多的RAP音乐旧弊影响。所以,亚洲的Hip-Hop音乐就别具一格,不同于美国式的NEW YORK style与L.A.style。
说到美国式的Hip-Hop音乐,就必须从听觉而不是视觉上去感受了。因为美式的Hip-Hop演变进化中,舞蹈是跟随音乐的变化而改变的,由OLD SCHOOL发展到NEW SCHOOL,很大程度上是因为节奏快慢的变化所致,这也许正是Hip-Hop音乐亚、美之间最大的差异吧。而且要说Hip-Hop音乐,必须追溯到Dr.Dre的RAP时代开始讲述。
Hip-Hop是由RAP音乐发展而来的。而RAP这种音乐极具冲击力和表演方式极具争议性,歌词也扭曲混乱,充斥着暴力和煽动。以Dr.Dre与Eminem这对“黑白双煞”为代表的专辑《Strange Outta Compton》和《The slim shady》很能反映RAP音乐在思想上的阴暗性的反动性。
等RAP音乐发展到2PAC这位饶舌大师的时代,RAP正渐渐地被艺术化,内容上也出现较多的文化成份.2PAC饶舌歌曲中加进了一些柔性摇滚的成份,尽管像《Until the end of time》专辑制作很次,混音嘈杂,但仍然可以听出弦乐隐约的断奏和内容上对性权利的探讨。随着进一步的演化,这种被正统音乐视为音乐界异类的音乐形式,由于过于特立独行和迥异突兀,同时因为能够对年轻人造成巨大的心灵冲击,而被主流社会的音乐卫道士视为不入流的街头垃圾文化。因此发展到Hip-Hop时代,无法从内容还是从形式都演变的比较温和折中了。音乐形态上融入了许多其它音乐元素,歌曲内容上正面攻击的词汇锐减。

四:波普(pop)
一种具有强烈节拍的现代流行音乐。一般认为,流行音乐有广义和狭义之分,这里的“波普”是指狭义的流行音乐,如 70、80年代著名歌手罗斯(diana ross)、里奇(lionel richie)、惠特妮·休斯顿(whitney houston)、麦当娜(madonna)、迈克尔·杰克逊(michael jackson)、普林斯(prince)、珍妮特·杰克逊(janet jackson)等人演唱的很多歌曲。

五:雷鬼(reggae)
起源于牙买加,70年代中期传入美国。它把非洲、拉丁美洲节奏和类似非洲流行的那种呼应式的歌唱法,与强劲的、有推动力的摇滚乐音响相结合。

六:索尔(soul)
亦称“灵歌”。1969年,“公告牌”用“索尔”来代替原来对“节奏布鲁斯”的称呼。它是由布鲁斯、摇滚乐与黑人福音歌混合而成的一种黑人流行音乐,演唱时较少演奏乐器。索尔的著名歌手有詹姆斯·布朗(james brown)、查尔斯(ray charles)、雷丁(ons redding)、史蒂夫·旺德(stevle wonder)、普林斯(prince)等。

七:电子音乐(electrophonic music)

何谓electrophonic music(电子音乐)?随着时代的演进,音乐家有了更多制作音乐的方法.所谓电子音乐,就是以电子合成器,音乐软体,电脑等所产生的电子声响来制作音乐.电子音乐范围广泛,生活周遭常常能听到,在电影配乐,广告配乐,甚至某些国语流行歌中都有用到,不过以电子舞曲为最.很多人认为电子乐是一种冷冰冰,没有感情的音乐.其实电子乐也可融入rock, jazz甚至blues等多种元素而充满情感的。
电子音乐的类型也是多种多样的,包括house 、techno、ambient、trance、psychedelic trance、 breakbeat、 brit-hop、 big-beat、 trip-hop、drum\'n\'bass、 jungle、electro、b、chill out、 minimalism
参考资料:http://vivid-yan.blog.hexun.com/2261236_d.html

Ⅸ 查看tomcat启动文件都干点啥

在上一次查看tomcat启动文件都干点啥一文中,我们总结出,startup.bat文件的作用就是找到catalina.bat文件,然后把参数传递给它,在startup.bat中,调用catalina.bat的命令call "%EXECUTABLE%" start %CMD_LINE_ARGS%,其中"%EXECUTABLE%"这个就是catalina.bat文件,这个命令至少向catalina.bat传递一个参数--start.

接下来看一下catalina.bat中的内容,内容很长:
View Code

在第1行,和第17行中的内容已经在前一章中做出说明,在此处不再敖述,我对于18-85行的这段注释比较感兴趣:
复制代码

1 rem ---------------------------------------------------------------------------
2 rem Start/Stop Script for the CATALINA Server
3 rem
4 rem Environment Variable Prerequisites
5 rem
6 rem CATALINA_HOME May point at your Catalina "build" directory.
7 rem
8 rem CATALINA_BASE (Optional) Base directory for resolving dynamic portions
9 rem of a Catalina installation. If not present, resolves to
10 rem the same directory that CATALINA_HOME points to.
11 rem
12 rem CATALINA_OPTS (Optional) Java runtime options used when the "start",
13 rem or "run" command is executed.
14 rem
15 rem CATALINA_TMPDIR (Optional) Directory path location of temporary directory
16 rem the JVM should use (java.io.tmpdir). Defaults to
17 rem %CATALINA_BASE%\temp.
18 rem
19 rem JAVA_HOME Must point at your Java Development Kit installation.
20 rem Required to run the with the "debug" argument.
21 rem
22 rem JRE_HOME Must point at your Java Runtime installation.
23 rem Defaults to JAVA_HOME if empty.
24 rem
25 rem JAVA_OPTS (Optional) Java runtime options used when the "start",
26 rem "stop", or "run" command is executed.
27 rem
28 rem JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories
29 rem containing some jars in order to allow replacement of APIs
30 rem created outside of the JCP (i.e. DOM and SAX from W3C).
31 rem It can also be used to update the XML parser implementation.
32 rem Defaults to $CATALINA_HOME/endorsed.
33 rem
34 rem JPDA_TRANSPORT (Optional) JPDA transport used when the "jpda start"
35 rem command is executed. The default is "dt_socket".
36 rem
37 rem JPDA_ADDRESS (Optional) Java runtime options used when the "jpda start"
38 rem command is executed. The default is 8000.
39 rem
40 rem JPDA_SUSPEND (Optional) Java runtime options used when the "jpda start"
41 rem command is executed. Specifies whether JVM should suspend
42 rem execution immediately after startup. Default is "n".
43 rem
44 rem JPDA_OPTS (Optional) Java runtime options used when the "jpda start"
45 rem command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,
46 rem and JPDA_SUSPEND are ignored. Thus, all required jpda
47 rem options MUST be specified. The default is:
48 rem
49 rem -agentlib:jdwp=transport=%JPDA_TRANSPORT%,
50 rem address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
51 rem
52 rem LOGGING_CONFIG (Optional) Override Tomcat's logging config file
53 rem Example (all one line)
54 rem set LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties"
55 rem
56 rem LOGGING_MANAGER (Optional) Override Tomcat's logging manager
57 rem Example (all one line)
58 rem set LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
59 rem
60 rem TITLE (Optional) Specify the title of Tomcat window. The default
61 rem TITLE is Tomcat if it's not specified.
62 rem Example (all one line)
63 rem set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%]
64 rem
65 rem
66 rem
67 rem $Id: catalina.bat 1040546 2010-11-30 14:47:34Z markt $
68 rem ---------------------------------------------------------------------------

复制代码

这段的内容就是说明一下在启动和停止CATALINA server时候需要的一下先决条件,CATALINA_HOME--看到这个大家可能会有点疑问,如果在操作系统上没有设置CATALINA_HOME变量的时候,那么这个变量应该是不存在的丫,是怎么回事呢?是不是?下面我们还是用测试来说明问题:我在F:\apache-tomcat-7.0.8\bin目录下创建一个test.bat文件,文件内容如下:

@echo off
set CURRENT_DIR=%cd%
test2.bat

意思很简单,只是将%cd%变量的值赋给CURRENT_DIR变量,然后调用test2.bat文件,test2.bat文件的内容如下:

echo %CURRENT_DIR%

只是简单的输出%CURRENT_DIR%变量,让我们先运行test.bat文件,查看%CURRENT_DIR%变量是否能够正确输出: 结果正确显示了,但是如果我们直接运行test2.bat文件会有什么结果呢? 结果显示不正常,这个测试就说明由test.bat调用test2.bat文件时候,test.bat中定义的变量在test2.bat中可见,就是CURRENT_DIR变量的生命周期范围并不是仅限于本文件,也能加深对于setlocal方法的理解。回到catalina.bat本身,也许我们本身没有设置CATALINA_HOME环境变量的习惯,但是回想一下上一节,在startup.bat中说到,如果没有设置CATALINA_HOME变量,startup.bat内会给CATALINA_HOME变量赋值,然后在catalina.bat中依然能够访问此变量。

这段注释说完之后,看一下88行:

if not ""%1"" == ""run"" goto mainEntry

如果接收到的第一个参数是run那么到:mainEntry节点,事实是我们从startup.bat调用的时候传递的第一个参数无疑是start,所以应该顺序执行到第89行,这里可能有人会有疑问,那什么时候第一个参数才是run呢?事情是这样的,因为并不是所有人都是跟我们一样直接使用startup.bat文件启动,因为startup.bat文件也只不过就是找到catalina.bat文件,然后照样传递参数,其实有经验的人大可直接使用catalina.bat文件来启动tomcat。这就是第一个参数为run的产生情况。接下来我们顺序执行到第89行。

看一下89行的内容:

if ""%TEMP%"" == """" goto mainEntry

如果TEMP变量为空,那么到mainEntry节点,这个时候我们就需要看看我们到底有没有这个TEMP变量,同样弄个小测试,写一个小的测试test.bat文件,文件内容如下:

@echo off
echo %TEMP%

查看执行结果:

记得在上一节中说过%TEMP%这个变量是从环境变量中读取的,所以也可以去环境变量中查看是不是有此值,来确定TEMP变量是不是存在,一问在startup.bat和catalina.bat并没有设置TEMP变量。查看环境变量: 因为TEMP存在,所以程序还需要顺序执行到90行,第90行的内容如下:

if exist "%TEMP%\%~nx0.run" goto mainEntry

这句话至少看起来有点蒙圈,尤其是\%~nx0.run这个东西,反正我第一次看见的时候我就想问问,这是毛啊,~nx0,下面看一下网上对于%~nx0的解释:

%~nx0 contains the name of the running batch file (without the path)

意思就是代表执行命令的文件的名字,我们来用实验证明一下,同样还是修改那个test.bat文件吧。;-)

@echo off
echo "%TEMP%\%~nx0.run"

如果按照上面的解释,那么输出的信息应该是C:\Users\Think\AppData\Local\Temp\test.bat.run,下面看一下运行结果:咦事实证明说法正确,但是这个文件是不是存在呢,我们去TEMP目录下看一下,遗憾的是在C:\Users\Think\AppData\Local\Temp目录没有找到这个文件,所以还得顺序执行到第91行,91行的内容是:

echo Y>"%TEMP%\%~nx0.run"

这个看起来很简单,既然不存在这个文件,那么我就自己创建一个,同时写入Y。也许你不信,所以我还是拿出个例子吧,还是test.bat呦:

@echo off
echo Y>"%TEMP%\%~nx0.run"

在C:\Users\Think\AppData\Local\Temp目录下生成了test.bat.run文件,文件的内容果然为Y。至于生成的文件有何意义,以后再说。到现在位置我突然感慨,我很喜欢TOMCAT,它做了什么我都能知道,在接下来的一段时间内,我想把我看TOMCAT源代码的感受也下下来。也跟大家讨论一下TOMCAT的工作原理。有点远,扯回来,下面看一下92行的内容:

if not exist "%TEMP%\%~nx0.run" goto mainEntry

这个一眼就看明白了,再次判断%~nx0.run文件是否存在,如果还是不存在,那么直接到mainEntry节点,由于我们此时此文件已经创建成功,那么顺序执行到第93行。

93行的内容为:

echo Y>"%TEMP%\%~nx0.Y"

这个同91行命令,不再强调。顺序执行到92行。

92行的内容为:

call "%~f0" %* <"%TEMP%\%~nx0.Y"

看到之后感觉依然是蒙圈,这里面有两个点需要大家掌握:%~f0, %* 知道这两组符号是什么意思,就解决了。

%~f0:表示运行的文件的全路径,假如我在test.bat中如此写:

@echo off
@echo %%~f0 is %~f0

那么执行结果为: OK。

%*:在batch file中,每一个命令的参数都以%1,%2,%3 .....的形式展现,我们也可以使用%来代替所有的参数,下面看修改万能测试文件test.bat中的内容如下:
复制代码

@echo off
echo First argument: [%1]
echo Second argument: [%2]
echo Third argument: [%3]
echo Fourth argument: [%4]
echo Fifth argument: [%4]
echo Entire command line: [%*]

复制代码

查看运行结果:意思就是将在catalina.bat文件中自己调用自己,传递参数Y,下面看一下测试,将test.bat中的内容改为:

@echo off
call "%~f0" %* <"%TEMP%\%~nx0.Y"

查看运行结果,在程序运行了一段时间以后,得出如下结论:很奇怪,奇怪亮点,为什么运行的时候会有停顿,第二,为什么会产生这个结果。下面解决这两个困惑,我觉得程序在运行的时候肯定是在后台运行什么操作了,所以我将test.bat中的内容改了一下:

call "%~f0" %* <"%TEMP%\%~nx0.Y"

然后再次运行,得到结果:原来程序在输出最终结果之前一直到在调用自己,所以会有一个停顿的感觉。

第二:为什么会产生这个结果:下面看第96行的内容:

set RETVAL=%ERRORLEVEL%

在前面的的内容中可能给大家一种误解,所以在看到这句话的时候,不知道是不是也有人跟我似的直接去环境变量中找ERRORLEVEL的值,找不到之后觉得我在忽悠大家,下面我跟大家说说这个ERRORLEVEL。不知道大家是不是了解在Linux中的$?这个结果返回值,其实ERRORLEVEL和$?差不多,都是用来表示上次执行结果的,如果返回0说明执行正确,如果不是0说明执行失败。例如在test.bat中的内容:

call %ERRORLEVEL%

执行结果:下面看97行的内容:

del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1

这里面有/Q, >NUL, 2>&1需要跟大家解释一下:

/Q: 跟在del后面表示不需要交互式的删除。安静模式的意思。如在test.bat中的内容如下:

del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1

然后运行结果为:此时文件系统中的文件确实已经被删除,只是在删除的过程中没有显示删除的过程,下面我们重新创建此文件,然后把/Q标记去掉以后在尝试一次:

>NUL 就是将输出输出到NUL中,这样有错误的情况下你什么都拿不到。

2>&1:2是值错误输出,&1是标准输出,意思就是将错误输出重定向到标准输出中

>NUL 2>&1的意思就是将错误输出重定向到标准输出,最后在重定向到NUL中,这样出现错误,你从表面上不会看出来。如果将test.bat中的删除操作执行多次,

@echo off
del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1

看结果:也不会显示异常,如果将>NUL 2>&1删除以后,再次执行:

@echo off
del /Q "%TEMP%\%~nx0.Y"

结果就会显示出异常:下面看第98行的内容:

exit /B %RETVAL%

下面的mainEntry和gotHome节点的信息同前一节刚开始的内容一样,所有就不再说明,如果对此有什么疑问,请查看查看tomcat启动文件都干点啥一节。在接下来的部分中我想把115-137行的内容放在一起说明,因为他们分为两部分,分别引入setenv.bat和setclasspath.bat并执行,
复制代码

:okHome

rem Ensure that any user defined CLASSPATH variables are not used on startup,
rem but allow them to be specified in setenv.bat, in rare case when it is needed.
set CLASSPATH=

rem Get standard environment variables
if "%CATALINA_BASE%" == "" goto gotSetenvHome
if exist "%CATALINA_BASE%\bin\setenv.bat" call "%CATALINA_BASE%\bin\setenv.bat"
goto gotSetenvBase
:gotSetenvHome
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
:gotSetenvBase

rem Get standard Java environment variables
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath
echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"
echo This file is needed to run this program
goto end
:okSetclasspath
set "BASEDIR=%CATALINA_HOME%"
call "%CATALINA_HOME%\bin\setclasspath.bat" %1
if errorlevel 1 goto end

复制代码

这部分的操作就是设置环境变量,由于在tomcat7.0.8版本中不存在setenv.bat所以就不说了,setclasspath.bat这个脚本很重要,浏览一下其中的内容:
View Code

其中就是关于JAVA环境的一些校验和变量的设置,重要性不言而喻,所以如果执行本步操作失败的情况下,程序将退出执行。

与言和模型rem外套相关的资料

热点内容
妈妈好像船红衣 浏览:118
旗袍扇子舞视频教学 浏览:471
羽图案的衬衫 浏览:314
中国乔丹裤子尺码对照表 浏览:933
粗腿的女人穿什么裤子好看图片 浏览:59
明星穿条纹衬衫 浏览:619
羊绒韩版风衣 浏览:876
最近流行的睡衣款式衣服 浏览:840
男士波司登轻薄羽绒服运动版 浏览:366
咖啡色的裙子搭配上衣 浏览:670
各种行政制服定制 浏览:259
幼儿园穿鞋子裤子比赛图片 浏览:140
男夹克哪些好品牌好 浏览:279
防水风衣使用吗 浏览:765
那里有批发一次性帽子 浏览:434
台湾的校服一般多少钱啊 浏览:102
儿童保暖内衣袖子短了怎么办 浏览:409
l码风衣 浏览:418
穿校服超爽 浏览:341
男士白裤子配什么腰带 浏览:148