<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/iphone88" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/iphone88" type="application/rss+xml"></fs:self_link><lastBuildDate>Sun, 20 May 2012 23:07:06 GMT</lastBuildDate><title>关注iphone开发、资讯、软件</title><description>关注iphone开发、资讯、软件</description><link>http://www.itivy.com/iphone</link><language>zh-cn</language><item><title>在Xcode下使用SVN</title><link>http://www.itivy.com/iphone/archive/2012/5/20/634731484758924377.html</link><description>&lt;span style=&quot;&quot;&gt;&lt;/span&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; font-size:22px&quot;&gt;&lt;span style=&quot;line-height:normal&quot;&gt;概述&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:18px; line-height:normal&quot;&gt;
SVN是一种优秀的代码管理工具，它可以自动对代码进行版本控制，在多人合作开发时大大减轻的代码管理的难度。&lt;/div&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:18px; line-height:normal&quot;&gt;
苹果的Xcode中内置的对SVN客户端的支持。下面简略的介绍一下在Xcode下像服务器提交代码的过程。&lt;/div&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:18px; line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;color:rgb(98,67,27); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:18px; line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; font-size:22px; color:rgb(34,34,34)&quot;&gt;&lt;span style=&quot;line-height:normal&quot;&gt;添加SVN服务器&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;启动Xcode，选择菜单SCM菜单中的配置选项。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/6347315201622175030873c30bfed506993ac763ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal&quot;&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;弹出的设置窗口中，点击左下角的加号，添加SVN服务器&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;/span&gt;
&lt;div style=&quot;color:rgb(98,67,27); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal; position:relative&quot;&gt;
&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634731520163936258be70d4cd022fe96bf9dc61ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; margin-top:5px; margin-left:672px; position:absolute&quot;&gt;&lt;img title=&quot;点击图片,在新窗口显示原始尺寸&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/6347315201676986494c8a3b3fc334a756bba167ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; width:700px&quot;&gt;&lt;/div&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;输入SVN名称，下面选择Subversion&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/6347315201726112938f9175028749bb47738b65ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal&quot;&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;输入SVN服务器的URL：https://139.me/svn/Test，之后会自动完成IP、端口号等项，&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;最后输入账号和密码，等待验证成功后，点击OK，完成SVN服务器的添加。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;/span&gt;
&lt;div style=&quot;color:rgb(98,67,27); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal; position:relative&quot;&gt;
&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/63473152017412582305c6e312f8fabeaac2ce79ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; margin-top:5px; margin-left:672px; position:absolute&quot;&gt;&lt;img title=&quot;点击图片,在新窗口显示原始尺寸&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/634731520178534233f56b6bfe64fffcd4b801a0eb.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; width:700px&quot;&gt;&lt;/div&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; font-size:22px; color:rgb(34,34,34)&quot;&gt;&lt;span style=&quot;line-height:normal&quot;&gt;将本地的代码提交SVN&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;使用Xcode打开工程，选择SCM菜单中的本工程配置。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634731520181887009ce5f6cfe8026b5abfd037fea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal&quot;&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;点击右上角SCM按钮&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634731520186983792b48367ffb9ebe413d7887dea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal&quot;&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;在右侧组合框中，选择刚才注册的SVN库，点击OK&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/6347315201898271318b4e36479160a269869473ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal&quot;&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;返回主界面，点击SCM菜单中的第一个项，打开SVN库界面，改界面显示服务器上的逻辑目录结构&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634731520192885275a1c5703dce7cd2947c1e71ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal&quot;&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;当前的库中没有任何东西，我们要为工程创建一个目录，点击新建目录按钮，创建一个目录&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;/span&gt;
&lt;div style=&quot;color:rgb(98,67,27); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal; position:relative&quot;&gt;
&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634731520194986016f0d900c036f6a44d0ff477ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; margin-top:5px; margin-left:672px; position:absolute&quot;&gt;&lt;img title=&quot;点击图片,在新窗口显示原始尺寸&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/6347315202018309590a537619431c6d83ac6e75ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; width:700px&quot;&gt;&lt;/div&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;输入目录名称，&lt;/span&gt;&lt;span style=&quot;line-height:normal&quot;&gt;&lt;span style=&quot;line-height:normal; color:rgb(240,0,0)&quot;&gt;必须与工程名相同&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;/span&gt;
&lt;div style=&quot;color:rgb(98,67,27); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal; position:relative&quot;&gt;
&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/63473152020379491579b9bfd7e286ab9250da4bea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; margin-top:5px; margin-left:672px; position:absolute&quot;&gt;&lt;img title=&quot;点击图片,在新窗口显示原始尺寸&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/634731520208008226da2379c60032f79d38db49ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; width:700px&quot;&gt;&lt;/div&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;下面与本地代码进行合并，选择刚才创建的目录，点击“Checkout”按钮。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;/span&gt;
&lt;div style=&quot;color:rgb(98,67,27); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal; position:relative&quot;&gt;
&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634731520210963876269725c96a33c0ab53664fea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; margin-top:5px; margin-left:672px; position:absolute&quot;&gt;&lt;img title=&quot;点击图片,在新窗口显示原始尺寸&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/6347315202243834704e9612ff078ea64008244dea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; width:700px&quot;&gt;&lt;/div&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;在选择本地路径时，注意要&lt;/span&gt;&lt;span style=&quot;line-height:normal; color:rgb(240,0,0)&quot;&gt;&lt;span style=&quot;line-height:normal&quot;&gt;选择工程目录的上一级目录&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;，而不是工程目录，之后会提示目录已经存在，选择替换。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634731520227731098252b74145eccdd4e962b43ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal&quot;&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;完成后，重新打开工程。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/6347315202305150327e690f1acec3a25134fa41ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal&quot;&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;重新打开的工程主界面，选择上面的SCM Relults栏目，会多出一些内容。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;选中所有需要提交的代码和资源文件（&lt;/span&gt;&lt;span style=&quot;line-height:normal&quot;&gt;&lt;span style=&quot;line-height:normal; color:rgb(240,0,0)&quot;&gt;注意一定要吧build这一项去掉&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;）。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;之后点击右键，选择Add to Repositorie，表示将选中的文件加入代码库。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;如果以后代码中增加了文件，需要使用同样的方法加入代码库。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;/span&gt;
&lt;div style=&quot;color:rgb(98,67,27); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal; position:relative&quot;&gt;
&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/63473152023204641642b742cf2661e8070eb345ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; margin-top:5px; margin-left:672px; position:absolute&quot;&gt;&lt;img title=&quot;点击图片,在新窗口显示原始尺寸&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/6347315202388610490cc43a53505b797243a75bea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; width:700px&quot;&gt;&lt;/div&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;最后点击SCM菜单中的Commit项，将代码提交到服务器。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;只有如果代有更改，也可以使用同样的方法提交，服务器会记录所有提交过的版本。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/63473152024438816135ea7d31ab7da715ac4b5fea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal&quot;&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;在每次提交时，可以下一段简短日志，说明本次提交的更改。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634731520247231469bfd87541c8a3a74572f05dea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal&quot;&gt;&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;完成提交后如图所示。&lt;/span&gt;&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; color:rgb(34,34,34)&quot;&gt;&lt;/span&gt;
&lt;div style=&quot;color:rgb(98,67,27); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal; position:relative&quot;&gt;
&lt;img height=&quot;23&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/634731520248958233da0675111418f4545baf53ea.jpg&quot; width=&quot;23&quot; alt=&quot;&quot; style=&quot;line-height:normal; margin-top:5px; margin-left:672px; position:absolute&quot;&gt;&lt;img title=&quot;点击图片,在新窗口显示原始尺寸&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/63473152025392231404bd26003347d2594afb51ea.jpg&quot; alt=&quot;&quot; style=&quot;line-height:normal; width:700px&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:18px; line-height:normal&quot;&gt;
&lt;br style=&quot;line-height:normal&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; font-size:22px&quot;&gt;&lt;span style=&quot;line-height:normal&quot;&gt;总结&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; font-size:18px&quot;&gt;各团队的SVN账号将于近期开通，每个账号会有一个单独的代码库。&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; font-size:18px&quot;&gt;由于SVN会记录所有的历史操作，所有不要在正式的代码库中随意提交。&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; font-size:18px&quot;&gt;专门开通了一个Test库，可以用来学习和测试。&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; font-size:12px; line-height:normal&quot;&gt;
&lt;span style=&quot;line-height:normal; font-size:18px&quot;&gt;正常开发情况下，没有必要对每次更改都进行提交，通常在软件需要发布一个版本，或者重大改动是，进行一次提交，可以起到备份的作用。&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; line-height:normal&quot;&gt;
&lt;span style=&quot;font-size:18px&quot;&gt;&lt;br&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color:rgb(34,34,34); font-family:Arial; word-wrap:break-word; word-break:break-all; visibility:visible!important; zoom:1!important; line-height:normal&quot;&gt;
&lt;span style=&quot;font-size:18px&quot;&gt;原文地址：http://kongjian.baidu.com.cn/%B7%E7%B6%A3%B6%A3%DF%CB%DF%CB/blog/item/159456d136cda4caa8ec9a23.html/cmtid/d0a26a19dbeacaf5ae51333f&lt;/span&gt;&lt;/div&gt;

            
                    &lt;div&gt;来源：http://blog.csdn.net/senton/article/details/6607868&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/640548060/iphone88/feedsky/s.gif?r=http://www.itivy.com/iphone/archive/2012/5/20/634731484758924377.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Mon, 21 May 2012 07:07:06 +0800</pubDate><author>iOS88</author><guid isPermaLink="false"></guid><dc:creator>iOS88</dc:creator><fs:srclink>http://www.itivy.com/iphone/archive/2012/5/20/634731484758924377.html</fs:srclink><fs:srcfeed>http://www.itivy.com/iphone/rss</fs:srcfeed><fs:itemid>feedsky/iphone88/~8841916/640548060/6960487</fs:itemid></item><item><title>用非响应式设计构建跨端Web App</title><link>http://www.itivy.com/iphone/archive/2012/5/18/634729762320220086.html</link><description>&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;媒介查询很伟大，但是&lt;/span&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;...&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 对于&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Web&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;开发人员来说，如果要通过对样式表进行微调来为不同尺寸设备的用户提供更好的体验，媒体查询（&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Media Queries&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;）非常棒。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;媒体查询实质上可以根据屏幕的尺寸来自定义网站的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;CSS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;在你&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;深入这篇文章之前，可以更多的了解&lt;/span&gt;&lt;a href=&quot;http://www.html5rocks.com/mobile/responsivedesign&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;响应式网页&lt;/span&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;设计&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;（还记得《&lt;/span&gt;&lt;a href=&quot;file:///C:/Users/jiangyujie/Desktop/%E7%94%A83%E4%B8%AA%E6%AD%A5%E9%AA%A4%E5%AE%9E%E7%8E%B0%E5%93%8D%E5%BA%94%E5%BC%8F%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1&quot;&gt;用3个步骤实现响应式网页设计&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;》这篇文章吗？）&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，并且看看使用媒介查询的一些好例子：&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://mediaqueri.es/&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;mediaqueri.es&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;像布拉德&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;·&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;弗罗斯特在&lt;/span&gt;&lt;a href=&quot;http://bradfrostweb.com/blog/web/responsive-web-design-missing-the-point/&quot;&gt;以前文章&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;中指出的一样，调整界面只是构建移动&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Web App&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;时需要考虑的众多事情之一。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;如果你在构建移动&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Web App&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;时只通过媒介查询自定义了布局，那么我们会有以下的问题：&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;所有的设备都采用同样的&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;JavaScript&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;、&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;CSS&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;以及内容（图片、视频等），导致产生比预期更长的加载时间。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;所有的设备都有相同的初始&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;DOM&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;结构，可能迫使开发人员编写过于复杂的&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;CSS&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;样式。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: rgb(34, 34, 34); background-color: white; &quot;&gt;对于为每个设备指定自定义的交互来说缺乏弹性。&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;除媒介查询外，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Web APP&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;还需要更多&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;不要误会我的意思。我并不是讨厌通过媒介查询进行响应式设计，并绝对认为它占有一席之地。此外，上述的一些问题可以通过例如&lt;/span&gt;&lt;a href=&quot;http://www.alistapart.com/articles/responsive-images-how-they-almost-worked-and-what-we-need/&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;响应&lt;/span&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;式&lt;/span&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;图像&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，动态脚本加载等来解决。但是就某一点而言，你也许会发现自己做了太多的增量调整，而可能提供不同的版本效果会更佳。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;当构建的界面在复杂性方面有所增加，同时被单页的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Web App&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;所吸引，你会想要为每个设备类型自定义用户界面做更多事情。本文将教你如何用最少的努力实现这样的自定义。通用的方法包括将访问的设备划分到正确的分类，并且为该设备提供合适的版本，同时最大限度地提高代码在版本之间的重用。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;针对哪些设备类型？&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;现在有成千上万的互联网设备，几乎每一个都有浏览器。复杂之处在于它们的差异性：苹果笔记本，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Windows&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;工作站，有触摸输入、滚轮、键盘和语音输入的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iPhone&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;手机，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iPad&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;和&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Android&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;手机，带压力传感器的设备，智能手表，烤面包机以及冰箱等等。它们无处不在，而且有些非常罕见。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634729779620367200variety.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;各种各样的设备（&lt;a href=&quot;http://www.flickr.com/photos/brad_frost/6164723945/in/set-72157627712478230/&quot;&gt;来源&lt;/a&gt;）&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;为了创造良好的用户体验，你需要知道谁是你的用户以及他们使用的是什么设备。如果你为桌面用户创建了一个使用鼠标和键盘的界面，并将它展示给智能手机用户，这将是一个极大的失败，因为它设计在另一个屏幕大小和输入方式之上。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;这里有两种极端的方法：&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;创建一个为所有设备工作的版本。用户体验将因此受到影响，因为不同的设备有不同的设计考虑。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;为每一个要支持的设备各自创建一个版本。这个工作将永远进行下去，因为你将为你的应用构建太多版本。此外，当新的智能手机诞生（大约每周都有）时，你将被&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;​​&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;迫再次创建一个版本。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;这里有一个基本的权衡：有更多的设备类别时，你可以提供更好的用户体验，但是需要做更多设计，实现和维护的工作。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;为每种设备创建单独的版本对于性能原因来说也许是一个好办法，或者你想为不同的设备创建的版本差异甚巨。否则，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://www.html5rocks.com/mobile/responsivedesign&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;响应式&lt;/span&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;网页设计&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;会是完全合理的做法。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;strong&gt;一个潜在的方案&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;这里有一个妥协方案：将设备分类，并为每个种类提供最佳体验。选择什么类别取决于你的产品和目标用户。下面是一个示例，能够很好的跨越现今流行的网络设备。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;小屏幕&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;触摸（主要是手机）&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;大屏幕&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;触摸（主要是平板）&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;大屏幕&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;键盘&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;鼠标（主要是台式机&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;笔记本电脑）&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;这只是许多可能的分类方式之一，但在写作时有很大的意义。上面的列表中缺少的是没有触摸屏的移动设备（例如功能手机，一些专用的电子书阅读器）。然而，这些设备大部分都有键盘或者屏幕阅读软件，如果你的站点精心设计，可以在上面工作良好。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#222222;&quot;&gt;特定外形的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;WEB App&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;例子&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;有许多针对不同因素提供不同&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Web&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;服务版本的例子。谷歌搜索是这样，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Facebook&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;也是。这主要是考虑了到性能（获取资源，渲染页面）和更通用的用户体验。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;在&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Native App&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;的世界里，许多开发者选择为不同种类的设备设计产品。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;例如，&lt;/span&gt;&lt;u&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;Flipboard&lt;/span&gt;&lt;/u&gt;&lt;span style=&quot;color:#222222;&quot;&gt; iPad&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;版本的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;UI&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;与&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iPhone&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;版本差异很大。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;平板版本为&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;双手使用和水平旋转进行了优化，而手机版本关注单手交互和垂直翻转的体验。许多其他的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iOS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;应用在手机和平板上也有明显的不同，例如&lt;/span&gt;&lt;a href=&quot;http://culturedcode.com/things/&quot;&gt;Things&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;（&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Todo list&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;）和如下所示的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://showyou.com/&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;Showyou&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;（社会化视频）：&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634729779642177969phone-tablet.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;针对手机和平板定制的UI&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;方法＃&lt;/span&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;：服务器端检测&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;在服务器端，我们要了解正在处理的设备有更多的限制。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;每次请求发送的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;User-Agent&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;头所提供的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;user agent&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;（用户代理）字符串可能&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;是最有用的线索。正因为如此，相同&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;UA&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;的嗅探方法会产生作用。事实上，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;DeviceAtlas&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;和&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;WURFL&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;项目已经开始这样做了（并提供了一大堆设备有关的其他信息）。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;不幸的是目前这些项目都存在挑战。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;WURFL&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;非常庞大，包含&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;20MB&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;XML&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，可能为每个请求导致明显的服务器开销。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;有项目因为性能方面的原因分割了这些&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;XML&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;DeviceAtlas&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;并不开源，需要付费使用。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;这里有更简单，而且免费的替代品，例如&lt;/span&gt;&lt;a href=&quot;http://detectmobilebrowsers.com/&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;检测移动浏览器&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;项目。当然，缺点是设备检测难免会不够全面。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;此外，它只区分移动和非移动设备，以及通过&lt;/span&gt;&lt;a href=&quot;http://detectmobilebrowsers.com/about&quot;&gt;ad-hoc软件&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;提供有限的平板支持。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;方法&lt;/span&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;：客户端检测&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;使用特性检测，我们可以了解更多用户浏览器和设备的信息。我们需要确定的要点是，该设备是否具有触摸功能，以及它的屏幕是大是小。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;我们需要画一条线来区分屏幕大和小的触摸设备。例如像&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;寸&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Galaxy Note&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;的边缘情况。下图显示了许多流行的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Andr​​oid&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;和&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iOS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;设备轮廓（附上相应的屏幕分辨率）。星号表示该设备可以支持双倍密度。虽然像素密度可能会增加一倍，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;CSS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;仍然会报告相同的大小。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;对&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;CSS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;里像素点的快速介绍：手机&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Web&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;页面上的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;CSS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;像素和&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;PC&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;上并&lt;/span&gt;&lt;a href=&quot;http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html&quot;&gt;不一样&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iOS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;视网膜设备引入了双倍像素密度（例如&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iPhone 3GS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;对&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iPhone 4&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iPad 2&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;对&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iPad 3&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;）。视网膜设备上&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Safari&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;浏览器的用户代理仍然报告相同的设备宽度，以免破坏网页。当其它设备（例如&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Android&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;）采用了更高分辨率的显示屏时，它们也采用了相当的解决方案。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634729779644947844devices.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;设备的分辨率&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;这种方式会更复杂，但是这对考虑同时兼容纵向和横向模式非常重要。我们不希望每次屏幕旋转时都重新加载页面或者加载额外的脚本，虽然我们可能要呈现不同的页面。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;下图中，正方形代表每个设备的最大尺寸，是叠加了纵向和横向轮廓的结果：&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634729779646729069devices-portland.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;横向+纵向分辨率&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;通过将阈值设置为&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;650px&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，我们将&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iPhone&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Galaxy Nexus&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;分类为小触摸屏设备，而将&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;iPad&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Galaxy Tab&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;分类为&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;平板&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;”&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;。跨界的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Galaxy Note&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;在这种情况下被归类为&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;手机&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;”&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，将采用手机布局。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;所以，一个合理的策略可能看起来像下面这样：&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;background:white;&quot;&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:html&quot;&gt;if (hasTouch) {
  if (isSmall) {
    device = PHONE;
  } else {
    device = TABLET;
  }
} else {
  device = DESKTOP;
}&lt;/pre&gt;&lt;/div&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;赶快看看一个小的示例&lt;/span&gt;&lt;a href=&quot;http://www.html5rocks.com/static/demos/cross-device/feature/index.html&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;特性&lt;/span&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;检测方法&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;吧。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;另一种方法是使用用户代理嗅探来检测设备类型，基本上就是创建一套试探方法来匹配用户的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;navigator.userAgent&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;。伪代码看起来像这样：&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;background:white;&quot;&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:html&quot;&gt;var ua = navigator.userAgent;
for (var re in RULES) {
  if (ua.match(re)) {
    device = RULES[re];
    return;
  }
}&lt;/pre&gt;&lt;/div&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;马上来看看一个示例&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;-&lt;/span&gt;&lt;a href=&quot;http://www.html5rocks.com/static/demos/cross-device/ua/index.html&quot;&gt;UA检测方法&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;strong&gt;在客户端加载的说明&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;如果你正在服务器上检测用户代理，你可以在收到新请求时决定提供哪种&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;CSS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;JavaScript&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;和&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;DOM&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;节点。然而，如果你正在采用客户端检测，情况则更为复杂。你有如下几种选择：&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;重定向到特定设备类型的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，其&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;​​&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;中包含该设备类型的版本。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;动态加载设备特定类型的内容。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;第一种方法很简单，需要采用&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;window.location.href = '/tablet'&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;这种&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;重定向的方式。然而，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;地址会附加设备类型的信息，所以你可能想使用&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;HTML5&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;的&lt;/span&gt;&lt;a href=&quot;http://diveintohtml5.info/history.html&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;历史&lt;/span&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;API&lt;/span&gt;&lt;/a&gt;来&lt;span style=&quot;color:#222222;&quot;&gt;清理网址。不幸的是，这种方法涉及一个重定向，所以可能会很慢，尤其是在移动设备上。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;第二种方法实现更加复杂。你需要一种机制来动态加载&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;CSS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;和&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;JS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，还有（根据浏览器而定）你可能无法实现例如自定义&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;lt;meta viewport&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;这样的事&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;。此外因为没有重定向，你需要在一张页面上来响应请求。当然，你可以用&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;JavaScript&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;来实现，但是这可能导致性能缓慢和&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;或糟糕的代码，这一切都取决于你的应用程序。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;选择客户端或服务器方案&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;下面是在这些方法之间的权衡：&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#222222;&quot;&gt;选择客户端&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;：&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;color: rgb(34, 34, 34); background-color: white; &quot;&gt;基于屏幕尺寸或可扩展性的方案和用户代理比起来更为长远。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: rgb(34, 34, 34); background-color: white; &quot;&gt;无需不断更新用户代理名单。&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#222222;&quot;&gt;选择服务器&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;：&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;color: rgb(34, 34, 34); background-color: white; &quot;&gt;能完全控制什么设备上加载什么版本。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;color: rgb(34, 34, 34); background-color: white; &quot;&gt;更好的性能：无需客户端重定向或动态加载。&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); &quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;我个人的偏好是，最开始使用&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;device.js&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;和客户端检测。&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;随着应用的发展，如果发现客户端重定向有明显的性能问题，你可以很容易地删除&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;device.js&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;脚本，并在服务器上执行用户代理检测。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;DEVICE.JS&lt;/span&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;介绍&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;device.js&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;是一个起点，这样做基于语义，依靠媒介查询进行设备检测，从而无需特殊的服务器端配置，节省了需要实现用户代理字符串解析的时间和精力。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;这个方法是在&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;标签的顶部用搜索引擎友好的标记（&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;a href=&quot;http://blog.whatwg.org/the-road-to-html-5-link-relations#rel-alternate&quot;&gt;linkrel=alternate&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;）声明你要提供的网站版本。&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;background:white;&quot;&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:html&quot;&gt;&amp;lt;link rel=&amp;quot;alternate&amp;quot; href=&amp;quot;http://foo.com&amp;quot; id=&amp;quot;desktop&amp;quot;
    media=&amp;quot;only screen and (touch-enabled: 0)&amp;quot;&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;接下来，你可以采用服务器端&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;UA&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;检测和版本重定向，或者使用&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;device.js&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;脚本来执行基于功能的客户端重定向。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;更多详细信息，请参阅&lt;/span&gt;&lt;u&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;&lt;a href=&quot;https://github.com/borismus/device.js&quot;&gt;device.js项目&lt;/a&gt;&lt;/span&gt;页面&lt;/u&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，同时还有一个使用了&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;device.js&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;进行客户端重定向的&lt;/span&gt;&lt;a href=&quot;http://borismus.github.com/device.js/sample/&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;测试&lt;/span&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;应用&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;建议：&lt;/span&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;MVC&lt;/span&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;的具体视图&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;现在你可能会想，我告诉你的是建立三个完全独立的应用程序，每个用于一种设备类型。不！&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;代码共享是关键。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;希望你已经使用了一个类&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;MVC&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;的框架，例如&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Backbone&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Ember&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;等等。如果你已经熟悉重点分解的原则，尤其是你的用户界面（视图层）应该与逻辑（模型层）分离。如果你对此还比较陌生，可以开始了解&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller&quot;&gt;MVC的一些资源&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;和&lt;/span&gt;&lt;a href=&quot;http://addyosmani.github.com/todomvc/&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;JavaScript&lt;/span&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;中的&lt;/span&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;MVC&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;模式&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;跨设备非常适合现有的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;MVC&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;框架。你可以轻松地移动视图到独立的文件，为每个设备类型创建一个自定义视图。然后你就可以为所有设备使用除了视图层之外同样的代码。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;/Upload/EditorImage/image/iphone/201205/634729779649659343mvc.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;跨设备的MVC模式&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;你的项目可能有以下的结构（当然，你可以自由选择对你应用最有意义的结构）：&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;background:white;&quot;&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:html&quot;&gt;models/ (shared models)
  item.js
  item-collection.js

controllers/ (shared controllers)
  item-controller.js

versions/ (device-specific stuff)
  tablet/
  desktop/
  phone/ (phone-specific code)
    style.css
    index.html
    views/
      item.js
      item-list.js&lt;/pre&gt;&lt;br /&gt; &lt;/div&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;这种结构使你能够完全控制每个版本加载哪些内容，因为你必须为每个设备采用自定义的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;HTML&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;CSS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;和&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;JavaScript&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;。这非常强大，是开发跨端&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Web App&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;最精简和最有效的方式，不会依赖于一些小的技巧，例如自适应图像。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;一旦你运行喜欢的构建工具，会把所有的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Javascript&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;和&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;CSS&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;合并和压缩到一个独立的文件里，以实现更快的加载速度，而输出的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;HTML&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;页面看起来类似以下的形式（在手机上，使用&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;device.js&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;）：&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;background:white;&quot;&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:html&quot;&gt;&amp;lt;!doctype html&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;title&amp;gt;Mobile Web Rocks! (Phone Edition)&amp;lt;/title&amp;gt;

  &amp;lt;!-- Every version of your webapp should include a list of all
       versions. --&amp;gt;
  &amp;lt;link rel=&amp;quot;alternate&amp;quot; href=&amp;quot;http://foo.com&amp;quot; id=&amp;quot;desktop&amp;quot;
      media=&amp;quot;only screen and (touch-enabled: 0)&amp;quot;&amp;gt;
  &amp;lt;link rel=&amp;quot;alternate&amp;quot; href=&amp;quot;http://m.foo.com&amp;quot; id=&amp;quot;phone&amp;quot;
      media=&amp;quot;only screen and (max-device-width: 650px)&amp;quot;&amp;gt;
  &amp;lt;link rel=&amp;quot;alternate&amp;quot; href=&amp;quot;http://tablet.foo.com&amp;quot; id=&amp;quot;tablet&amp;quot;
      media=&amp;quot;only screen and (min-device-width: 650px)&amp;quot;&amp;gt;

  &amp;lt;!-- Viewport is very important, since it affects results of media
       query matching. --&amp;gt;
  &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width&amp;quot;&amp;gt;

  &amp;lt;!-- Include device.js in each version for redirection. --&amp;gt;
  &amp;lt;script src=”device.js”&amp;gt;&amp;lt;/script&amp;gt;

  &amp;lt;link rel=”style” href=”phone.min.css”&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;script src=”phone.min.js”&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;需要注意的是&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;(touch-enabled: 0)&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;媒介查询并不标准（只有&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Firefox&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;通过&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;moz&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;前缀实现了），但是能够被&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;device.js&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;正确运行（感谢&lt;/span&gt;&lt;a href=&quot;http://modernizr.com/&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;Modernizr.touch&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;strong&gt;版本覆盖&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;设备检测有时候有误，在某些情况下，用户可能更喜欢在手机上采用平板布局（也许他们正在使用&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;Galaxy Note&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;），所以一定要向用户提供版本的选择。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;通常的做法是提供一个从桌面到移动版本的链接。这很容易实现，&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;device.js&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;通过&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;device&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;GET&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;参数来支持此功能。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#5FA4A0;&quot;&gt;结论&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); text-align: -webkit-left; &quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;综上，当需要建立跨设备单页的用户界面时，并不适合响应式设计，我们可以这样做：&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;挑选一系列设备分类进行支持，并为设备分类设定标准。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;建立你的&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;MVC&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;应用，把界面从代码库分离出来。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;使用&lt;/span&gt;&lt;a href=&quot;https://github.com/borismus/device.js&quot;&gt;&lt;span style=&quot;color:#508B88;&quot;&gt;device.js&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color:#222222;&quot;&gt;进行客户端设备分类检测。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;当你准备好了时，为每个设备分类打包你的脚本和样式表。&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;background:white;&quot;&gt;&lt;span style=&quot;color:#222222;&quot;&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;如果客户端重定向有性能问题，放弃&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;device.js&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;，并换到服务器端做&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;UA&lt;/span&gt;&lt;span style=&quot;color:#222222;&quot;&gt;检测。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;译自：&lt;a href=&quot;http://www.html5rocks.com/en/mobile/cross-device/&quot;&gt;http://www.html5rocks.com/en/mobile/cross-device/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;转载请注明：来自&lt;a href=&quot;http://blog.csdn.net/hfahe&quot;&gt;蒋宇捷的博客&lt;/a&gt;&lt;/p&gt;
            
                    &lt;div&gt;来源：http://blog.csdn.net/hfahe/article/details/7581789&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/640003885/iphone88/feedsky/s.gif?r=http://www.itivy.com/iphone/archive/2012/5/18/634729762320220086.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Sat, 19 May 2012 07:16:57 +0800</pubDate><author>iOS88</author><guid isPermaLink="false"></guid><dc:creator>iOS88</dc:creator><fs:srclink>http://www.itivy.com/iphone/archive/2012/5/18/634729762320220086.html</fs:srclink><fs:srcfeed>http://www.itivy.com/iphone/rss</fs:srcfeed><fs:itemid>feedsky/iphone88/~8841916/640003885/6960487</fs:itemid></item><item><title>LinkedIn和FT再次引发web app和native app之争</title><link>http://www.itivy.com/iphone/archive/2012/5/14/634726364585241533.html</link><description>&lt;p&gt;随着FT关闭了它的iOS app，Linkedln在iOS ‘frame’内使用HTML5，关于web app和native app的争论再度火热。国外科技媒体.net对争论内容进行了报导。以下即为报导内容：&lt;/p&gt;
&lt;div id=&quot;attachment_2817&quot; class=&quot;wp-caption alignleft&quot; style=&quot;width:260px;&quot;&gt;&lt;a href=&quot;/Upload/EditorImage/image/iphone/201205/63472635809789213211.jpg&quot;&gt;&lt;img class=&quot;size-full wp-image-2817&quot; title=&quot;1&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/63472635809789213211.jpg&quot; alt=&quot;&quot; height=&quot;137&quot; width=&quot;250&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;使用iPad的FT 用户必须使用web app了，iOS app已经无法使用了&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;有两份报告展现了mobile web apps领域的一些发展趋势。&lt;a href=&quot;http://paidcontent.org/2012/05/01/web-journey-complete-ft-switching-off-ios-app/&quot;&gt;paidContent reports&lt;/a&gt;&amp;nbsp;报导，FT正在关闭它的iOS app，以&lt;a href=&quot;http://www.netmagazine.com/news/ft-pulls-its-app-app-store-111362&quot;&gt;完成从上个夏天就开始的过渡&lt;/a&gt;。FT称，它无法在iOS app中维护其特性。另外，&lt;a href=&quot;http://venturebeat.com/2012/05/02/linkedin-ipad-app-engineering/#s:1-linkedin-ipad&quot;&gt;VentureBeat报导&lt;/a&gt;，LinkedIn的iPad app是根据web标准之上的app搭建起来的框架。据Kiran Prasad，该公司移动小组的领头人说，这个app大量使用了Node.js，是一个“95%”的web app。Prasad 进一步说，“只要我们能将应用做得足够快，没人能够看出其中的区别。一切感觉起来都会很正常。”&lt;/p&gt;
&lt;p&gt;Mobile开发者&amp;nbsp;&lt;a href=&quot;https://twitter.com/#!/markirby&quot;&gt;Mark Kirby&lt;/a&gt;告诉.net，这种向web apps的慢慢转变——尽管有些web apps仍然披着native apps的外衣——并不让人惊讶。他说：“iPad的功能越来越强大，HTML5 apps带给用户的体验已经可以和native apps的体验相媲美了。HTML5 apps的限制也许不在框架，而在于iPad执行Javascript代码的速度。现在，这个速度似乎是很快了。” Kirby补充说，web apps也可以绕开一些问题，比如“下载时间漫长且下载并不在后台运行、占用空间，使得你必须进行最小化管理，会为了节省空间而删掉你已经完成的部分。”&lt;/p&gt;
&lt;p&gt;然而，iOS开发者&lt;a href=&quot;https://twitter.com/#!/MATTGEMMELL&quot;&gt;Matt Gemmell&lt;/a&gt;&amp;nbsp;告诉.net，性能并不一定就有那么重要，因为不论是native apps还是web apps，都可以是“足够好”。同样，native apps和web apps在“外观和感觉”上都可以是“足够好”。“对于我来说，关键点在于：native apps比起因为安全原因而被有意限制的web apps而言，功能丰富得多；native apps直接就拥有了native的外观以及感觉，web apps却必须模拟native apps的界面和行为；native apps拥有硬件以及OS/生态系统的整合，而web apps在这方面却远远落后于native apps。”&lt;/p&gt;
&lt;p&gt;Gemmell说，需要注意到关注app的web框架（app-focused web frameworks）“倾向于花费大量气力去复制native apps原本就有的APIs和特性”，并且，现在的逆转也并不是真实的，“因为native apps已经可以做到web所能提供的一切了——毕竟，web浏览器本身就是apps。”尽管他承认有很多理由去开发web app而不是native app——比如跨平台部署、即时更新、保持掌控——但你不能否认开发web app所必须做出的牺牲和妥协。“在很多情况下，用户可能永远不会注意到两者的区别——这是最好的了。但是我们不能因此就自欺欺人地说web apps和native apps是可以完全等同的。”&lt;/p&gt;
&lt;p&gt;原文链接：&lt;a href=&quot;http://www.netmagazine.com/news/linkedin-and-ft-fuel-native-vs-web-row-121944&quot;&gt;LinkedIn and FT fuel native vs web row&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;来源：http://www.webapptrend.com/2012/05/2816.html&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638384549/iphone88/feedsky/s.gif?r=http://www.itivy.com/iphone/archive/2012/5/14/634726364585241533.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Tue, 15 May 2012 07:55:04 +0800</pubDate><author>iOS88</author><guid isPermaLink="false"></guid><dc:creator>iOS88</dc:creator><fs:srclink>http://www.itivy.com/iphone/archive/2012/5/14/634726364585241533.html</fs:srclink><fs:srcfeed>http://www.itivy.com/iphone/rss</fs:srcfeed><fs:itemid>feedsky/iphone88/~8841916/638384549/6960487</fs:itemid></item><item><title>面向iOS的静态编译Ruby</title><link>http://www.itivy.com/iphone/archive/2012/5/14/634726363750989467.html</link><description>&lt;span style=&quot;color: rgb(204, 0, 0); font-family: Arial; font-size: 14px; line-height: 24px; text-align: left; text-indent: 28px; &quot;&gt;本文来源于我在InfoQ中文站翻译的文章，原文地址是：&lt;a href=&quot;http://www.infoq.com/cn/news/2012/05/RubyMotion&quot;&gt;http://www.infoq.com/cn/news/2012/05/RubyMotion&lt;/a&gt;&lt;/span&gt;&lt;p&gt;现在已经出现了一个静态编译的Ruby变体，用于构建面向iOS设备的应用。该语言叫做&lt;a href=&quot;http://www.rubymotion.com/&quot;&gt;RubyMotion&lt;/a&gt;，来自于&lt;a href=&quot;http://www.hipbyte.com/&quot;&gt;HipByte&lt;/a&gt;的这门语言与工具链完全遵循Apple的App Store指导方针。为了做到这一点，他们不得不去掉了JIT编译器与解释器，这会导致一些Ruby开发者觉得非常受限制。&lt;/p&gt;&lt;p&gt;其工具支持非常弱。RubyMotion并没有任何IDE支持。HipByte希望开发者使用自己的文本编辑器与命令行终端来完成大多数开发任务。&lt;/p&gt;&lt;p&gt;运行时则要好很多。RubyMotion完全支持多线程编程而不会遇到全局解释器锁的不便。它甚至为&lt;a href=&quot;http://en.wikipedia.org/wiki/Grand_Central_Dispatch&quot;&gt;Grand Central Dispatch&lt;/a&gt;（Apple的用于并发与并行编程的基于任务的程序库）提供了一个接口。类似于Ruby本身，内存是由运行时管理的，但开发者依然可以访问原生以及第三方的Objective-C程序库。据推测，这种访问“是非常自然的且不会有任何性能上的代价”。将RubyMotion与Mono for Android相比，后者通常需要在Mono与Dalvik运行时之间编排对象。&lt;/p&gt;&lt;p&gt;RubyMotion的大部分内容都是基于MacRuby的。&lt;a href=&quot;http://www.macruby.org/&quot;&gt;MacRuby&lt;/a&gt;是个已经持续了四年之久的项目，基于OS X与Objective-C提供了Ruby 1.9。MacRuby的上一版发布于2011年3月，版本号为0.10，这表明其发展速度并不如预期那么快。“MacRuby是由MacRuby团队版权所有的免费软件，基于Ruby的许可”。&lt;/p&gt;&lt;p&gt;RubyMotion本身并非开源项目。其零售价为每个开发者200美金，此外再没有其他的许可费与版权税。其零售价格包括一年的升级，这样其实际上是个订阅，每年需要升级一次。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;查看英文原文：&lt;/strong&gt;&lt;a href=&quot;http://www.infoq.com/news/2012/05/RubyMotion&quot;&gt;A Statically Compiled Ruby for iOS&lt;/a&gt;&lt;/p&gt;
            
                    &lt;div&gt;来源：http://blog.csdn.net/ricohzhanglong/article/details/7554795&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638384550/iphone88/feedsky/s.gif?r=http://www.itivy.com/iphone/archive/2012/5/14/634726363750989467.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Tue, 15 May 2012 07:53:37 +0800</pubDate><author>iOS88</author><guid isPermaLink="false"></guid><dc:creator>iOS88</dc:creator><fs:srclink>http://www.itivy.com/iphone/archive/2012/5/14/634726363750989467.html</fs:srclink><fs:srcfeed>http://www.itivy.com/iphone/rss</fs:srcfeed><fs:itemid>feedsky/iphone88/~8841916/638384550/6960487</fs:itemid></item><item><title>在iPhone上使用 OpenCV</title><link>http://www.itivy.com/iphone/archive/2012/5/14/634726358022768798.html</link><description>&lt;p&gt;原文：http://niw.at/articles/2009/03/14/using-opencv-on-iphone/en&lt;/p&gt;&lt;p&gt;Posted by Yoshimasa Niwaon 03/14, 2009&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://img1.ph.126.net/ZW9a4KQ4slbW8vvWDpgdwQ==/1021472690500478451.jpg&quot;&gt;图片&lt;/a&gt;&lt;/p&gt;&lt;p&gt;OpenCV是intel开发的计算机视觉库，例如我们可以用它轻易地实现面部识别。本文介绍如何在iOS中使用OpenCV，包括脚本的编译及一个demo示例程序。上面的截图就取自这个demo。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;OpenCV最新版本及所支持的iOSSDK&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;OpenCV 最新版本为2.2.0,它支持iOSSDK 4.3, Xcode 4 (04/17/2011更新)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;开始&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;所有代码和资源都是开放的，你可以从这里下载：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://github.com/niw/iphone_opencv_test&quot;&gt;&lt;span style=&quot;color:blue;&quot;&gt;my githubrepository&lt;/span&gt;&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;它包括一个已编译好的OpenCV库和头文件。你可以轻易就使用它。如果你安装了git，可以从github克隆整个存储库。否则，可从github下载压缩包并解压缩。&lt;/p&gt;&lt;p&gt;% git clone git://github.com/niw/iphone_opencv_test.git &lt;/p&gt;&lt;p&gt;获得源代码之后，用Xcode打开OpenCVTest项目并编译它。你可以用iPhone或者iPhone模拟器运行这个demo。&lt;/p&gt;&lt;a name=&quot;extended&quot;&gt;&lt;/a&gt;&lt;strong&gt;编译OpenCV库&lt;/strong&gt;&lt;p&gt;&lt;br /&gt;&lt;a href=&quot;http://img1.ph.126.net/ZW9a4KQ4slbW8vvWDpgdwQ==/1021472690500478451.jpg&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;你可以用gcc编译器直接从源代码编译生成OpenCV的二进制版本。为了节省你的时间，我写了一个脚本。由于iOSSDL不支持向.framework这样的动态链接库，所以我们不得不以“静态库”的方式将OpenCV连接到你的app中。&lt;/p&gt;&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;&lt;li&gt;编译OpenCV需要使用CMake。你可以用Homebrew或者MacPorts来安装CMake，即：&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Homebreww &lt;/p&gt;&lt;p&gt;brew install cmake &lt;/p&gt;&lt;p&gt;或者&lt;/p&gt;&lt;p&gt;MacPorts &lt;/p&gt;&lt;p&gt;sudo port install cmake –gui&lt;/p&gt;&lt;p&gt;如果你已经安装了最新的Java update，可能会问让你安装javadeveloper_10.6_10m3261.dmg。这是因为cmake需要用到jni.h，但在后来的Java update中已经把它删除了。在这里 &lt;a href=&quot;https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20719&quot;&gt;&lt;span style=&quot;color:windowtext;&quot;&gt;here for Mac OS X10.6&lt;/span&gt;&lt;/a&gt; 可以下载到它（需要订阅Apple Developer Connection). 同时, 苹果将在MacOSX中抛弃Java &lt;a href=&quot;http://www.macrumors.com/2010/10/21/apple-discontinuing-java-installation-packages-for-mac-os-x/&quot;&gt;&lt;span style=&quot;color:windowtext;&quot;&gt;going to deprecateJava on MacOS X&lt;/span&gt;&lt;/a&gt; (10/30/2010更新).&lt;/p&gt;&lt;ol start=&quot;2&quot; type=&quot;1&quot;&gt;&lt;li&gt;从 sourceforge获得OpenCV。     我使用的是&lt;a href=&quot;http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.2/OpenCV-2.2.0.tar.bz2/download&quot;&gt;OpenCV-2.2.0.tar.bz2&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;在demo 项目的根目录解压缩: tar xjvf OpenCV-2.2.0.tar.bz2 &lt;/li&gt;&lt;li&gt;应用 iOS SDK补丁：&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;cd OpenCV-2.2.0 &lt;/p&gt;&lt;p&gt;patch -p1 &amp;lt; ../OpenCV-2.2.0.patch &lt;/p&gt;&lt;ol start=&quot;5&quot; type=&quot;1&quot;&gt;&lt;li&gt;接下来为模拟器生成OpenCV静态库。所有的文件放在opencv_simulator目录。运行make命令时，最好在-j选项后面加上你的CPU内核数，这样可以节约一些时间。&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;cd .. # Back to the top of demo project directory. &lt;/p&gt;&lt;p&gt;mkdir build_simulator &lt;/p&gt;&lt;p&gt;cd build_simulator &lt;/p&gt;&lt;p&gt;../opencv_cmake.sh Simulator ../OpenCV-2.2.0 &lt;/p&gt;&lt;p&gt;make -j 4 &lt;/p&gt;&lt;p&gt;make install &lt;/p&gt;&lt;ol start=&quot;6&quot; type=&quot;1&quot;&gt;&lt;li&gt;然后为物理设备生成OpenCV静态库，并放在opencv_device目录下：&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;cd .. # Back to the top of demo project directory. &lt;/p&gt;&lt;p&gt;mkdir build_device &lt;/p&gt;&lt;p&gt;cd build_device &lt;/p&gt;&lt;p&gt;../opencv_cmake.sh Device ../OpenCV-2.2.0 &lt;/p&gt;&lt;p&gt;make -j 4 &lt;/p&gt;&lt;p&gt;make install &lt;/p&gt;&lt;p&gt;&lt;strong&gt;脚本&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;opencv_cmake.sh 脚本带有一些参数。使用--help参数可以查看各种参数的用法。&lt;strong&gt;UIImage 和 IplImage 类型转换&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;OpenCV使用IplImage结构，对应于iOS SDK的UIImage对象。这意味着，我们需要在二者间进行转换。幸运的是，我们通过用SDK提供的API来做。&lt;/p&gt;&lt;p&gt;UIImage à&amp;nbsp;IplImage&lt;/p&gt;&lt;p&gt;// NOTE you SHOULD cvReleaseImage() for the return value when end ofthe code. &lt;/p&gt;&lt;p&gt;- (IplImage *)CreateIplImageFromUIImage:(UIImage *)image {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;// Getting CGImage from UIImage&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; CGImageRefimageRef = image.CGImage;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; CGColorSpaceRefcolorSpace = CGColorSpaceCreateDeviceRGB();&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; // Creatingtemporal IplImage for drawing&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; IplImage *iplimage= cvCreateImage(cvSize(image.size.width,image.size.height), IPL_DEPTH_8U,4&amp;nbsp;&amp;nbsp; );&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; // CreatingCGContext for temporal IplImage&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; CGContextRefcontextRef = CGBitmapContextCreate(iplimage-&amp;gt;imageData, iplimage-&amp;gt;width,iplimage-&amp;gt;height, iplimage-&amp;gt;depth, iplimage-&amp;gt;widthStep, colorSpace,kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; // Drawing CGImageto CGContext&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;CGContextDrawImage(contextRef, CGRectMake(0, 0, image.size.width,image.size.height), imageRef);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;CGContextRelease(contextRef);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;CGColorSpaceRelease(colorSpace);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; // Creating resultIplImage&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; IplImage *ret =cvCreateImage(cvGetSize(iplimage), IPL_DEPTH_8U, 3);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;cvCvtColor(iplimage, ret, CV_RGBA2BGR);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;cvReleaseImage(&amp;amp;iplimage);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ret; &lt;/p&gt;&lt;p&gt;} &lt;/p&gt;&lt;p&gt;用完IplImage之后，记住用cvReleseImage来释放它。&lt;/p&gt;&lt;p&gt;IplImage àUIImage &lt;/p&gt;&lt;p&gt;// NOTE You should convert color mode as RGB before passing to thisfunction &lt;/p&gt;&lt;p&gt;- (UIImage *)UIImageFromIplImage:(IplImage *)image {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; CGColorSpaceRefcolorSpace = CGColorSpaceCreateDeviceRGB();&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; // Allocating thebuffer for CGImage&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; NSData *data =[NSData dataWithBytes:image-&amp;gt;imageData length:image-&amp;gt;imageSize];&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; CGDataProviderRefprovider =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CGDataProviderCreateWithCFData((CFDataRef)data);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; // CreatingCGImage from chunk of IplImage&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; CGImageRefimageRef = CGImageCreate(image-&amp;gt;width, image-&amp;gt;height,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; image-&amp;gt;depth,image-&amp;gt;depth * image-&amp;gt;nChannels, image-&amp;gt;widthStep,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; colorSpace,kCGImageAlphaNone|kCGBitmapByteOrderDefault, provider, NULL, false,kCGRenderingIntentDefault);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; // Getting UIImagefrom CGImage&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; UIImage *ret = [UIImageimageWithCGImage:imageRef];&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;CGImageRelease(imageRef);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; CGDataProviderRelease(provider);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;CGColorSpaceRelease(colorSpace);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; return ret; &lt;/p&gt;&lt;p&gt;} &lt;/p&gt;&lt;p&gt;Ok，现在你可以在你的iPhone项目中使用OpenCV了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;在你的项目中使用OpenCV库&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;示例程序已经为OpenCV库的使用配置过了。如果你想在自己的项目中使用OpenCV，你需要在项目中加入以下配置。在demo程序中，你可以通过Xcode查看这些设置。&lt;/p&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;把OpenCV库目录中的libopencv_core.a加到项目中（用于模拟器或用于设备）。实际上，在这里Xcode并不关心是用于模拟器还是设备，因为它是通过库搜索路径来决定的。&lt;/li&gt;&lt;li&gt;加入Accelerate.framework框架。&lt;/li&gt;&lt;li&gt;选择有效的target，打开 build settings页。&lt;/li&gt;&lt;ul type=&quot;circle&quot;&gt;&lt;li&gt;把-lstdc++ 和 –lz加到Other Linker Flags中&lt;/li&gt;&lt;li&gt;把OpenCV的include目录添加到Header Search Paths（设备和模拟器）&lt;/li&gt;&lt;li&gt;把OpenCV的lib目录添加到Library Search Paths（设备和模拟器）&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;
            
                    &lt;div&gt;来源：http://blog.csdn.net/kmyhy/article/details/7560472&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638384551/iphone88/feedsky/s.gif?r=http://www.itivy.com/iphone/archive/2012/5/14/634726358022768798.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Tue, 15 May 2012 07:43:34 +0800</pubDate><author>iOS88</author><guid isPermaLink="false"></guid><dc:creator>iOS88</dc:creator><fs:srclink>http://www.itivy.com/iphone/archive/2012/5/14/634726358022768798.html</fs:srclink><fs:srcfeed>http://www.itivy.com/iphone/rss</fs:srcfeed><fs:itemid>feedsky/iphone88/~8841916/638384551/6960487</fs:itemid></item><item><title>Apache MINA实战之 牛刀小试</title><link>http://www.itivy.com/iphone/archive/2012/5/10/634722303429734463.html</link><description>&lt;p&gt;&lt;strong&gt;本文链接：http://blog.csdn.net/kongxx/article/details/7520259&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Apache的MINA是一个被用来构建高性能和高可伸缩性应用程序的网络应用框架，它提供了一套统一的建立在Java NIO之上的事件驱动的异步API。&lt;/p&gt;&lt;p&gt;对于MINA框架的了解，MINA官方的几篇文章是必须要看的，如下：&lt;/p&gt;&lt;p&gt;* Application Architecture http://mina.apache.org/mina-based-application-architecture.html &lt;br /&gt;* Server Architecture http://mina.apache.org/server-architecture.html &lt;br /&gt;* Client Architecture http://mina.apache.org/client-architecture.html&lt;/p&gt;&lt;p&gt;其中几个主要的组件如下：&lt;/p&gt;&lt;p&gt;I/O Service - 用来处理I/O流，对于Server端就是IOAcceptor的实现类接受Client端的连接请求，对于Client端就是IoConnector的实现类来建立到Server端的连接。&lt;/p&gt;&lt;p&gt;I/O Filter Chain - 用来过滤或转化数据。对于Server端和Client端来说都是IoFilter接口的实现类，MINA自己内建了很多IoFilter接口的实现类。具体可以参考官方文档。&lt;/p&gt;&lt;p&gt;I/O Handler - 用来处理真正业务逻辑的类。对于Server端和Client端来说都是IoHandler接口的实现类，通常来说需要自己编写。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;由于Server端和Client端都是基于以上三个组件的，因此对于Server端和Client端编程来说就都有类似的代码结构。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;对于Server端来说： &lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. 创建I/O service - 这里就是创建IOAcceptor类监听端口。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. 创建I/O Filter Chain - 这里就是告诉使用那些IoFilter。 &lt;br /&gt;3. 创建I/O Handler - 自己的业务逻辑。&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;对于Client端来说： &lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. 创建I/O service - 这里就是创建IOConnector类来建立到Server端的连接。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. 创建I/O Filter Chain - 这里就是告诉使用那些IoFilter。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 创建I/O Handler - 自己的业务逻辑。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;下面来通过一个例子看看MINA是怎样工作的。由于大多数应用都是基于TCP/IP的应用，所以这里也就不再说UDP/IP了。&lt;/p&gt;&lt;p&gt;这里我使用了Maven来创建了一个简单java应用程序，具体步骤请参Maven的官方手册。这里只是将我用到的maven配置文件pom.xml列出，方便下面及后续文章使用。具体pom.xml文件内容如下：&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:html&quot;&gt;&amp;lt;project xmlns=&amp;quot;http://maven.apache.org/POM/4.0.0&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;
	xsi:schemaLocation=&amp;quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&amp;quot;&amp;gt;
	&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;
	&amp;lt;groupId&amp;gt;com.google.code.garbagecan.minastudy&amp;lt;/groupId&amp;gt;
	&amp;lt;artifactId&amp;gt;minastudy&amp;lt;/artifactId&amp;gt;
	&amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;
	&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;
	&amp;lt;name&amp;gt;minastudy&amp;lt;/name&amp;gt;
	&amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;
	&amp;lt;dependencies&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.apache.mina&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;mina-core&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;2.0.4&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.apache.mina&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;mina-filter-compression&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;2.0.4&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;slf4j-api&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1.3.0&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;slf4j-log4j12&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;1.3.0&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
	&amp;lt;/dependencies&amp;gt;
&amp;lt;/project&amp;gt;&lt;/pre&gt;首先来看Server端的代码&lt;pre name=&quot;code&quot; class=&quot;brush:java&quot;&gt;package com.google.code.garbagecan.minastudy.sample1;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyServer {
	
	private static final Logger logger = LoggerFactory.getLogger(MyServer.class);
	
	public static void main(String[] args) {
		IoAcceptor acceptor = new NioSocketAcceptor();

		acceptor.getFilterChain().addLast(&amp;quot;logger&amp;quot;, new LoggingFilter());
		acceptor.getFilterChain().addLast(&amp;quot;codec&amp;quot;, new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName(&amp;quot;UTF-8&amp;quot;))));

		acceptor.setHandler(new IoHandlerAdapter() {
			
			@Override
			public void sessionCreated(IoSession session) throws Exception {
			}
			
			@Override
			public void sessionOpened(IoSession session) throws Exception {
			}

			@Override
			public void sessionClosed(IoSession session) throws Exception {
			}

			@Override
			public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
			}

			@Override
			public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
				logger.error(cause.getMessage(), cause);
				session.close(true);
			}

			@Override
			public void messageReceived(IoSession session, Object message) throws Exception {
				logger.info(&amp;quot;Received message &amp;quot; + message);
				session.write(message);
			}

			@Override
			public void messageSent(IoSession session, Object message) throws Exception {
				logger.info(&amp;quot;Sent message &amp;quot; + message);
			}
		});
		
		try {
			acceptor.bind(new InetSocketAddress(10000));
		} catch (IOException ex) {
			logger.error(ex.getMessage(), ex);
		}
	}
}&lt;/pre&gt;1. 首先创建I/O Service，这里使用的是NioSocketAcceptor类来创建了一个IoAcceptor实例。 &lt;br /&gt;&lt;p&gt;2. 创建I/O Filter Chain，这里使用了两个IoFilter，一个是LoggingFilter用来记录日志和打印事件消息，另一个是ProtocolCodecFilter实例用来编码数据，这里其实就是将传递的数据编码成文本。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 创建I/O Handler，不要害怕，看起来代码多，其实就是一个实现了IoHandler接口的子类，自己需要实现其中的一些方法，这里方法比较多，但是我在这里只实现了messageSent，messageReceived和exceptionCaught方法。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. 最后就是让IoAcceptor类实例绑定端口实现监听。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;下面看看Client端的代码&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:java&quot;&gt;package com.google.code.garbagecan.minastudy.sample1;

import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.core.RuntimeIoException;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.service.IoConnector;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClient {
	
	private static final Logger logger = LoggerFactory.getLogger(MyClient.class);
	
	public static void main(String[] args) {
		IoConnector connector = new NioSocketConnector();
		connector.setConnectTimeoutMillis(10 * 1000);
		
		connector.getFilterChain().addLast(&amp;quot;logger&amp;quot;, new LoggingFilter());
		connector.getFilterChain().addLast(&amp;quot;codec&amp;quot;, new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName(&amp;quot;UTF-8&amp;quot;))));
		
		connector.setHandler(new IoHandlerAdapter() {
			
			@Override
			public void sessionCreated(IoSession session) throws Exception {
			}

			@Override
			public void sessionOpened(IoSession session) throws Exception {
				for (int i = 0; i &amp;lt; 10; i++) {
					session.write(&amp;quot;Hello user_&amp;quot; + i);
				}
				session.write(&amp;quot;Bye&amp;quot;);
			}

			@Override
			public void sessionClosed(IoSession session) throws Exception {
			}

			@Override
			public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
			}

			@Override
			public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
				logger.error(cause.getMessage(), cause);
				session.close(true);
			}

			@Override
			public void messageReceived(IoSession session, Object message) throws Exception {
				logger.info(&amp;quot;Received message &amp;quot; + message);
				if (message.toString().equalsIgnoreCase(&amp;quot;Bye&amp;quot;)) {
					session.close(true);
				}
			}

			@Override
			public void messageSent(IoSession session, Object message) throws Exception {
				logger.info(&amp;quot;Sent message &amp;quot; + message);
			}
		});

		IoSession session = null;
		try {
			ConnectFuture future = connector.connect(new InetSocketAddress(&amp;quot;localhost&amp;quot;, 10000));
			future.awaitUninterruptibly();
			session = future.getSession();
		} catch (RuntimeIoException e) {
			logger.error(e.getMessage(), e);
		}

		session.getCloseFuture().awaitUninterruptibly();
		connector.dispose();
	}
}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;1. 首先创建I/O Service，这里使用的是NioSocketConnector类来创建了一个IoConnector实例，并设置连接超时为10秒。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. 创建I/O Filter Chain，和服务器端同样设置了两个IoFilter，一个是LoggingFilter用来记录日志和打印事件消息，另一个是ProtocolCodecFilter实例用来编码数据，这里其实就是将传递的数据编码成文本。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 创建I/O Handler，也不要害怕，看起来代码多，其实也是一个实现了IoHandler接口的子类，并且自己实现了sessionOpened，messageSent，messageReceived和exceptionCaught方法。实现sessionOpened方法是为了在建立连接后向Server端发送消息。另外看一下messageReceived方法实现，在接收到服务器端的消息后关闭会话。从而可以使Client程序最终能够退出。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. 最后就是IoConnector实例类连接远端的Server。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;下面测试一下上面的程序，首先运行MyServer类，然后运行MyClient类，就可以分别在各自的终端上看到事件日志以及发送/接收的消息了。&lt;/p&gt;
            
                    &lt;div&gt;来源：http://blog.csdn.net/kongxx/article/details/7520259&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638384552/iphone88/feedsky/s.gif?r=http://www.itivy.com/iphone/archive/2012/5/10/634722303429734463.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Thu, 10 May 2012 15:18:12 +0800</pubDate><author>iOS88</author><guid isPermaLink="false"></guid><dc:creator>iOS88</dc:creator><fs:srclink>http://www.itivy.com/iphone/archive/2012/5/10/634722303429734463.html</fs:srclink><fs:srcfeed>http://www.itivy.com/iphone/rss</fs:srcfeed><fs:itemid>feedsky/iphone88/~8841916/638384552/6960487</fs:itemid></item><item><title>Apache MINA实战之 对象传输</title><link>http://www.itivy.com/iphone/archive/2012/5/10/634722303429034348.html</link><description>&lt;p&gt;&lt;strong&gt;本文链接：http://blog.csdn.net/kongxx/article/details/7520599&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;利用Apache MINA来传递对象，这对了MINA来说非常容易，并且这也是Java网络编程中很常用的应用。其实对于MINA传递对象来说，如果看过前一篇文章的话，只要在其中做少许改动就可以实现对象传递，但这里考虑到例子的完整性，还是给出了全部代码示例。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;首先看两个用来传递的Java对象MyRequestObject和MyResponseObject，很简单只是实现了Serializable接口罢了。&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:java&quot;&gt;package com.google.code.garbagecan.minastudy.sample3;

import java.io.Serializable;

public class MyRequestObject implements Serializable {

	private static final long serialVersionUID = 1L;

	private String name;
	
	private String value;

	public MyRequestObject(String name, String value) {
		this.name = name;
		this.value = value;
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
	}
	
	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer();
		sb.append(&amp;quot;Request [name: &amp;quot; + name  + &amp;quot;, value: &amp;quot; + value + &amp;quot;]&amp;quot;);
		return sb.toString();
	}
}

package com.google.code.garbagecan.minastudy.sample3;

import java.io.Serializable;

public class MyResponseObject implements Serializable {

	private static final long serialVersionUID = 1L;

	private String name;
	
	private String value;

	public MyResponseObject(String name, String value) {
		this.name = name;
		this.value = value;
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
	}
	
	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer();
		sb.append(&amp;quot;Response [name: &amp;quot; + name  + &amp;quot;, value: &amp;quot; + value + &amp;quot;]&amp;quot;);
		return sb.toString();
	}
}
&lt;/pre&gt;看看Server端的代码&lt;pre name=&quot;code&quot; class=&quot;brush:java&quot;&gt;package com.google.code.garbagecan.minastudy.sample3;

import java.io.IOException;
import java.net.InetSocketAddress;

import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyServer {
	
	private static final Logger logger = LoggerFactory.getLogger(MyServer.class);
	
	public static void main(String[] args) {
		IoAcceptor acceptor = new NioSocketAcceptor();

		acceptor.getFilterChain().addLast(&amp;quot;logger&amp;quot;, new LoggingFilter());
		acceptor.getFilterChain().addLast(&amp;quot;codec&amp;quot;, new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));

		acceptor.setHandler(new IoHandlerAdapter() {
			
			@Override
			public void sessionCreated(IoSession session) throws Exception {
			}
			
			@Override
			public void sessionOpened(IoSession session) throws Exception {
			}

			@Override
			public void sessionClosed(IoSession session) throws Exception {
			}

			@Override
			public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
			}

			@Override
			public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
				logger.error(cause.getMessage(), cause);
				session.close(true);
			}

			@Override
			public void messageReceived(IoSession session, Object message) throws Exception {
				logger.info(&amp;quot;Received &amp;quot; + message);
				MyRequestObject myReqOjb = (MyRequestObject) message;
				MyResponseObject myResObj = new MyResponseObject(myReqOjb.getName(), myReqOjb.getValue());
				session.write(myResObj);
			}

			@Override
			public void messageSent(IoSession session, Object message) throws Exception {
				logger.info(&amp;quot;Sent &amp;quot; + message);
			}
		});
		
		try {
			acceptor.bind(new InetSocketAddress(10000));
		} catch (IOException ex) {
			logger.error(ex.getMessage(), ex);
		}
	}
}&lt;/pre&gt;1. 首先创建I/O Service，这里使用的是NioSocketAcceptor类来创建了一个IoAcceptor实例。 &lt;br /&gt;&lt;p&gt;2. 创建I/O Filter Chain，这里使用了两个个IoFilter，一个是LoggingFilter用来记录日志和打印事件消息，另一个是ProtocolCodecFilter实例用来编码数据，这里使用了ObjectSerializationCodecFactory类来序列化或反序列化数据成java对象。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 创建I/O Handler，这里主要看一下messageReceived方法，其总接收了MyRequestObject对象，然后又发送了一个MyResponseObject对象给Client端。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. 最后就是让IoAcceptor类实例绑定端口实现监听。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;看看Client端的代码&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:java&quot;&gt;package com.google.code.garbagecan.minastudy.sample3;

import java.net.InetSocketAddress;

import org.apache.mina.core.RuntimeIoException;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.service.IoConnector;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClient {
	
	private static final Logger logger = LoggerFactory.getLogger(MyClient.class);
	
	public static void main(String[] args) {
		IoConnector connector = new NioSocketConnector();
		connector.setConnectTimeoutMillis(10 * 1000);
		
		connector.getFilterChain().addLast(&amp;quot;logger&amp;quot;, new LoggingFilter());
		connector.getFilterChain().addLast(&amp;quot;codec&amp;quot;, new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
		
		connector.setHandler(new IoHandlerAdapter() {
			
			@Override
			public void sessionCreated(IoSession session) throws Exception {
			}

			@Override
			public void sessionOpened(IoSession session) throws Exception {
				MyRequestObject myObj = new MyRequestObject(&amp;quot;my name&amp;quot;, &amp;quot;my value&amp;quot;);
				session.write(myObj);
			}

			@Override
			public void sessionClosed(IoSession session) throws Exception {
			}

			@Override
			public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
			}

			@Override
			public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
				logger.error(cause.getMessage(), cause);
				session.close(true);
			}

			@Override
			public void messageReceived(IoSession session, Object message) throws Exception {
				MyResponseObject myResObj = (MyResponseObject) message;
				logger.info(&amp;quot;Received &amp;quot; + myResObj);
				session.close(true);
			}

			@Override
			public void messageSent(IoSession session, Object message) throws Exception {
				logger.info(&amp;quot;Sent &amp;quot; + message);
			}
		});

		IoSession session = null;
		try {
			ConnectFuture future = connector.connect(new InetSocketAddress(&amp;quot;localhost&amp;quot;, 10000));
			future.awaitUninterruptibly();
			session = future.getSession();
		} catch (RuntimeIoException e) {
			logger.error(e.getMessage(), e);
		}

		session.getCloseFuture().awaitUninterruptibly();
		connector.dispose();
	}
}&lt;/pre&gt;1. 首先创建I/O Service，这里使用的是NioSocketConnector类来创建了一个IoConnector实例，并设置连接超时为10秒。 &lt;br /&gt;&lt;p&gt;2. 创建I/O Filter Chain，和服务器端同样设置了两个IoFilter，一个是LoggingFilter用来记录日志和打印事件消息，另一个是ProtocolCodecFilter实例用来编码数据，这里也使用了ObjectSerializationCodecFactory类来序列化或反序列化数据成java对象。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 创建I/O Handler，主要看一下sessionOpened方法，其中在会话建立事件中发送了MyRequestObject对象，然后在messageReceived方法中又接受了MyResponseObject对象。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. 最后就是IoConnector实例类连接远端的Server。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;下面测试一下上面的程序，首先运行MyServer类，然后运行MyClient类，就可以分别在各自的终端上看到事件日志以及发送/接收的对象了。 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
            
                    &lt;div&gt;来源：http://blog.csdn.net/kongxx/article/details/7520599&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638384553/iphone88/feedsky/s.gif?r=http://www.itivy.com/iphone/archive/2012/5/10/634722303429034348.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Thu, 10 May 2012 15:18:12 +0800</pubDate><author>iOS88</author><guid isPermaLink="false"></guid><dc:creator>iOS88</dc:creator><fs:srclink>http://www.itivy.com/iphone/archive/2012/5/10/634722303429034348.html</fs:srclink><fs:srcfeed>http://www.itivy.com/iphone/rss</fs:srcfeed><fs:itemid>feedsky/iphone88/~8841916/638384553/6960487</fs:itemid></item><item><title>JetBrains发布AppCode，面向Objective-C的IDE</title><link>http://www.itivy.com/iphone/archive/2012/5/10/634722053548837959.html</link><description>&lt;span style=&quot;font-family: Arial; font-size: 14px; line-height: 24px; &quot;&gt;&lt;span style=&quot;color:#ff0000;&quot;&gt;本文来源于我在InfoQ中文站翻译的文章，原文地址是：&lt;a href=&quot;http://www.infoq.com/cn/news/2012/02/jetbrains-appcode&quot;&gt;http://www.infoq.com/cn/news/2012/02/jetbrains-appcode&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;近日，JetBrains发布了&lt;a href=&quot;http://www.jetbrains.com/objc&quot;&gt;AppCode&lt;/a&gt;，面向Objective-C的IDE，其感觉非常类似于面向Java的&lt;a href=&quot;http://www.jetbrains.com/idea/&quot;&gt;IntelliJ IDEA&lt;/a&gt;编辑器。&lt;/p&gt;&lt;p&gt;熟悉IDEA的开发者会注意到他们之间的相似性。其运行时完全使用Java实现，这意味着要想运行该IDE需要安装JVM（1.6+），如果没有安装JVM，那么Lion就会在应用启动前提示下载最新的JVM；在默认情况下，其他版本的OSX已经安装好了JVM。&lt;/p&gt;&lt;p&gt;与其他IDE一样，熟悉该应用的使用方式需要花一些时间。熟悉Xcode（以及之前的ProjectBuilder）的开发者很可能会花些时间熟悉该应用的使用方式，但已有的IntelliJ使用经验将会大大缩短熟悉时间。与版本控制系统的集成包含了所有主流产品（Git、Subversion与Mercurial）与一些年代较远的产品（CVS）。&lt;/p&gt;&lt;p&gt;AppCode可以打开Xcode项目，虽然并没有取代Interface Builder，但它可以加载nib与xib，并在已安装的Interface Builder版本中打开。此外，对于iOS开发来说，AppCode可以启动Apple Developer Tools模拟器。&lt;/p&gt;&lt;p&gt;代码检测可以查找遗漏的retains/releases，还会提示用户将其包含进来，它还支持最近iOS构建中新加的GC与ARC。代码中的坏味道会被高亮显示出来，并且可以通过快速修复选项进行修复，还可以使用与其他JetBrains IDE中相同的重构工具进行重构。&lt;/p&gt;&lt;p&gt;最后，在AppCode中测试要比在Xcode中更为轻松，这是通过集成的OCUnit运行器实现的。Xcode将测试看作是构建期的行为，AppCode与此不同，它可以在IDE中加载并调试测试，包括在测试过程中调试变量。&lt;/p&gt;&lt;p&gt;AppCode可用在Mac OS X 10.5+上，需要提前安装好JVM与Apple开发者工具。它提供了&lt;a href=&quot;http://download.jetbrains.com/objc/AppCode-1.0.dmg&quot;&gt;30天的免费试用期&lt;/a&gt;。教育机构、公司以及开源项目开发可以免费使用AppCode。其许可地址是http://www.jetbrains.com/objc/buy/license-matrix.jsp。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;查看英文原文：&lt;/strong&gt;&lt;a href=&quot;http://www.infoq.com/news/2011/10/jetbrains-appcode&quot;&gt;JetBrains releases AppCode, an IDE for Objective-C&lt;/a&gt;&lt;/p&gt;
            
                    &lt;div&gt;来源：http://blog.csdn.net/ricohzhanglong/article/details/7229303&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638384554/iphone88/feedsky/s.gif?r=http://www.itivy.com/iphone/archive/2012/5/10/634722053548837959.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Thu, 10 May 2012 09:14:42 +0800</pubDate><author>iOS88</author><guid isPermaLink="false"></guid><dc:creator>iOS88</dc:creator><fs:srclink>http://www.itivy.com/iphone/archive/2012/5/10/634722053548837959.html</fs:srclink><fs:srcfeed>http://www.itivy.com/iphone/rss</fs:srcfeed><fs:itemid>feedsky/iphone88/~8841916/638384554/6960487</fs:itemid></item><item><title>我的云之旅–HBase调试(139)</title><link>http://www.itivy.com/iphone/archive/2012/5/9/634721811854586233.html</link><description>&lt;span style=&quot;font-family:Georgia,'Bitstream Charter',serif; color:rgb(51,51,51); line-height:14px&quot;&gt;&lt;/span&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
下面是运行日志：&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;br&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;HBase-site.xml&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;configuration.xsl&amp;quot;?&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;lt;!-- /** * Copyright 2009 The Apache Software Foundation * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;See
 the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;License,
 Version 2.0 (the * &amp;quot;License&amp;quot;); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;*
 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS, * WITHOUT WARRANTIES&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;OR
 CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ --&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;lt;configuration&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;property&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;name&amp;gt;hbase.rootdir&amp;lt;/name&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;value&amp;gt;file:///D:/hbase-0.20.3/data&amp;lt;/value&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;description&amp;gt;The
 directory shared by region servers.&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;Should
 be fully-qualified to include the filesystem to use.&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;E.g:
 hdfs://NAMENODE_SERVER:PORT/HBASE_ROOTDIR&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;/description&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;/property&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;property&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;name&amp;gt;hbase.cluster.distributed&amp;lt;/name&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;value&amp;gt;false
 &amp;lt;/value&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;description&amp;gt;The
 mode the cluster will be in. Possible values are&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;false:
 standalone and pseudo-distributed setups with managed Zookeeper&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;true:
 fully-distributed&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;with
 unmanaged Zookeeper Quorum (see hbase-env.sh)&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;/description&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;/property&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;property&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;name&amp;gt;hbase.tmp.dir&amp;lt;/name&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;value&amp;gt;D:/hbase-0.20.3/tmp
 &amp;lt;/value&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;description&amp;gt;Temporary
 directory on the local filesystem.&amp;lt;/description&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;&amp;lt;/property&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;lt;/configuration&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span id=&quot;more-908&quot; style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
1 ZooKeeper日志：&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,734 - INFO &amp;nbsp;[main:QuorumPeerConfig@90] - Reading configuration from: G:\program\zookeeper-3.3.3\conf\zoo.cfg&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,750 - WARN &amp;nbsp;[main:QuorumPeerMain@105] - Either no config or no quorum defined in config, running &amp;nbsp;in standalone mode&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,843 - INFO &amp;nbsp;[main:QuorumPeerConfig@90] - Reading configuration from: G:\program\zookeeper-3.3.3\conf\zoo.cfg&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,843 - INFO &amp;nbsp;[main:ZooKeeperServerMain@94] - Starting server&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,890 - INFO &amp;nbsp;[main:Environment@97] - Server environment:zookeeper.version=3.3.3-1073969, built on 02/24/2011 03:33 GMT&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,890 - INFO &amp;nbsp;[main:Environment@97] - Server environment:host.name=rollin&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,890 - INFO &amp;nbsp;[main:Environment@97] - Server environment:java.version=1.6.0_22&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,890 - INFO &amp;nbsp;[main:Environment@97] - Server environment:java.vendor=Sun Microsystems Inc.&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,890 - INFO &amp;nbsp;[main:Environment@97] - Server environment:java.home=C:\glassfishv3\jdk\jre&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,890 - INFO &amp;nbsp;[main:Environment@97] - Server environment:java.class.path=G:\program\zookeeper-3.3.3\bin;G:\program\zookeeper-3.3.3\contrib\bookkeeper\zookeeper-3.3.3-bookkeeper.jar;G:\program\zookeeper-3.3.3\contrib\fatjar\zookeeper-3.3.3-fatjar.jar;G:\program\zookeeper-3.3.3\contrib\rest\zookeeper-3.3.3-rest.jar;G:\program\zookeeper-3.3.3\contrib\ZooInspector\lib\jtoaster-1.0.4.jar;G:\program\zookeeper-3.3.3\contrib\ZooInspector\lib;G:\program\zookeeper-3.3.3\contrib\ZooInspector\zookeeper-3.3.3-ZooInspector.jar;G:\program\zookeeper-3.3.3\dist-maven\bookkeeper-3.3.3.jar;G:\program\zookeeper-3.3.3\dist-maven\zookeeper-3.3.3-javadoc.jar;G:\program\zookeeper-3.3.3\dist-maven\zookeeper-3.3.3-sources.jar;G:\program\zookeeper-3.3.3\dist-maven\zookeeper-3.3.3.jar;G:\program\zookeeper-3.3.3\lib\jline-0.9.94.jar;G:\program\zookeeper-3.3.3\lib\log4j-1.2.15.jar;G:\program\zookeeper-3.3.3\src\contrib\zooinspector\lib\jtoaster-1.0.4.jar;G:\program\zookeeper-3.3.3\zookeeper-3.3.3.jar&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,906 - INFO &amp;nbsp;[main:Environment@97] - Server environment:java.library.path=C:\glassfishv3\jdk\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/glassfishv3/jdk/bin/../jre/bin/client;C:/glassfishv3/jdk/bin/../jre/bin;C:/glassfishv3/jdk/bin/../jre/lib/i386;C:\WINDOWS\System32;C:\glassfishv3\jdk\bin;C:\Program
 Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\glassfishv3\jdk\bin;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\MySQL\MySQL
 Server 5.0\bin;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\glassfishv3\jdk\bin;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\WINDOWS\System32;C:\glassfishv3\jdk\bin;C:\Program
 Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\glassfishv3\jdk\bin;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\MySQL\MySQL
 Server 5.0\bin;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\glassfishv3\jdk\bin;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;G:\JavaEE\apache-maven-3.0.3\bin;C:\Program
 Files\Subversion\bin;G:\JavaEE\apache2.2\bin;G:\cygwin\bin;G:\cygwin\usr\bin;C:\glassfishv3\jdk\bin;G:\JavaEE\eclipse;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,906 - INFO &amp;nbsp;[main:Environment@97] - Server environment:java.io.tmpdir=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,906 - INFO &amp;nbsp;[main:Environment@97] - Server environment:java.compiler=&amp;lt;NA&amp;gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,906 - INFO &amp;nbsp;[main:Environment@97] - Server environment:os.name=Windows XP&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,906 - INFO &amp;nbsp;[main:Environment@97] - Server environment:os.arch=x86&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,906 - INFO &amp;nbsp;[main:Environment@97] - Server environment:os.version=5.1&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,906 - INFO &amp;nbsp;[main:Environment@97] - Server environment:user.name=Administrator&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,906 - INFO &amp;nbsp;[main:Environment@97] - Server environment:user.home=C:\Documents and Settings\Administrator&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:30,906 - INFO &amp;nbsp;[main:Environment@97] - Server environment:user.dir=G:\program\zookeeper-3.3.3&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:31,046 - INFO &amp;nbsp;[main:ZooKeeperServer@663] - tickTime set to 2000&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:31,046 - INFO &amp;nbsp;[main:ZooKeeperServer@672] - minSessionTimeout set to -1&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:31,046 - INFO &amp;nbsp;[main:ZooKeeperServer@681] - maxSessionTimeout set to -1&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:31,140 - INFO &amp;nbsp;[main:NIOServerCnxn$Factory@143] - binding to port 0.0.0.0/0.0.0.0:2181&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:16:31,187 - INFO &amp;nbsp;[main:FileTxnSnapLog@208] - Snapshotting: 0&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:19:36,359 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn$Factory@251] - Accepted socket connection from /127.0.0.1:2064&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:19:36,390 - WARN &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@639] - Exception causing close of session 0x0 due to java.io.IOException: Len error 1195725856&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:19:36,390 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1435] - Closed socket connection for client /127.0.0.1:2064 (no session established for client)&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:10,171 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn$Factory@251] - Accepted socket connection from /127.0.0.1:2121&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:10,203 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@777] - Client attempting to establish new session at /127.0.0.1:2121&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:10,203 - INFO &amp;nbsp;[SyncThread:0:FileTxnLog@197] - Creating new log file: log.1&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:12,125 - INFO &amp;nbsp;[SyncThread:0:NIOServerCnxn@1580] - Established session 0x136ac0ffee30000 with negotiated timeout 40000 for client /127.0.0.1:2121&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:12,375 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn$Factory@251] - Accepted socket connection from /127.0.0.1:2129&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:12,375 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@777] - Client attempting to establish new session at /127.0.0.1:2129&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:12,406 - INFO &amp;nbsp;[SyncThread:0:NIOServerCnxn@1580] - Established session 0x136ac0ffee30001 with negotiated timeout 40000 for client /127.0.0.1:2129&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:12,546 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn$Factory@251] - Accepted socket connection from /127.0.0.1:2132&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:12,546 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@777] - Client attempting to establish new session at /127.0.0.1:2132&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:12,625 - INFO &amp;nbsp;[SyncThread:0:NIOServerCnxn@1580] - Established session 0x136ac0ffee30002 with negotiated timeout 40000 for client /127.0.0.1:2132&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:36,562 - INFO &amp;nbsp;[ProcessThread:-1:PrepRequestProcessor@387] - Processed session termination for sessionid: 0x136ac0ffee30000&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:36,593 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1435] - Closed socket connection for client /127.0.0.1:2121 which had sessionid 0x136ac0ffee30000&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:37,453 - INFO &amp;nbsp;[ProcessThread:-1:PrepRequestProcessor@387] - Processed session termination for sessionid: 0x136ac0ffee30001&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:37,500 - WARN &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@634] - EndOfStreamException: Unable to read additional data from client sessionid 0x136ac0ffee30001, likely client has closed socket&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:24:37,500 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1435] - Closed socket connection for client /127.0.0.1:2129 which had sessionid 0x136ac0ffee30001&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:25:10,218 - INFO &amp;nbsp;[ProcessThread:-1:PrepRequestProcessor@387] - Processed session termination for sessionid: 0x136ac0ffee30002&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:25:10,281 - WARN &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@634] - EndOfStreamException: Unable to read additional data from client sessionid 0x136ac0ffee30002, likely client has closed socket&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:25:10,281 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1435] - Closed socket connection for client /127.0.0.1:2132 which had sessionid 0x136ac0ffee30002&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,406 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn$Factory@251] - Accepted socket connection from /127.0.0.1:2180&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,421 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@777] - Client attempting to establish new session at /127.0.0.1:2180&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,484 - INFO &amp;nbsp;[SyncThread:0:NIOServerCnxn@1580] - Established session 0x136ac0ffee30003 with negotiated timeout 40000 for client /127.0.0.1:2180&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,203 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn$Factory@251] - Accepted socket connection from /127.0.0.1:2192&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,218 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@777] - Client attempting to establish new session at /127.0.0.1:2192&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,281 - INFO &amp;nbsp;[SyncThread:0:NIOServerCnxn@1580] - Established session 0x136ac0ffee30004 with negotiated timeout 40000 for client /127.0.0.1:2192&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,375 - INFO &amp;nbsp;[ProcessThread:-1:PrepRequestProcessor@407] - Got user-level KeeperException when processing sessionid:0x136ac0ffee30003 type:create cxid:0xd zxid:0xfffffffffffffffe txntype:unknown reqpath:n/a Error Path:/hbase/safe-mode Error:KeeperErrorCode
 = NodeExists for /hbase/safe-mode&lt;/p&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2 HMaster&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:06,421 INFO &amp;nbsp;[main] master.HMaster(1127): vmName=Java HotSpot(TM) Client VM, vmVendor=Sun Microsystems Inc., vmVersion=17.1-b03&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:06,421 INFO &amp;nbsp;[main] master.HMaster(1128): vmInputArguments=[-Dfile.encoding=UTF-8]&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:06,546 INFO &amp;nbsp;[main] master.HMaster(166): My address is rollin:60000&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,265 INFO &amp;nbsp;[main] ipc.HBaseRpcMetrics(52): Initializing RPC Metrics with hostName=HMaster, port=60000&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,453 INFO &amp;nbsp;[main] master.RegionManager(160): -ROOT- region unset (but not set to be reassigned)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,453 INFO &amp;nbsp;[main] master.RegionManager(172): ROOT inserted into regionsInTransition&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,500 DEBUG [main-EventThread] master.HMaster(1076): Got event None with path null&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,515 DEBUG [main] zookeeper.ZooKeeperWrapper(382): Failed to read: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /hbase/master&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,546 DEBUG [main] zookeeper.ZooKeeperWrapper(528): Wrote master address 192.168.1.110:60000 to ZooKeeper&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,578 DEBUG [main] zookeeper.ZooKeeperWrapper(339): State node wrote in ZooKeeper&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,578 DEBUG [main] zookeeper.ZooKeeperWrapper(398): Read ZNode /hbase/master got 192.168.1.110:60000&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,578 INFO &amp;nbsp;[main] master.HMaster(219): HMaster initialized on 192.168.1.110:60000&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,578 DEBUG [HMaster] master.HMaster(514): Checking cluster state...&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,593 DEBUG [HMaster] zookeeper.ZooKeeperWrapper(398): Read ZNode /hbase/root-region-server got 192.168.1.110:2122&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,593 DEBUG [HMaster] master.HMaster(519): This is a fresh start, proceeding with normal startup&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,593 DEBUG [HMaster] master.HMaster(568): No log files to split, proceeding...&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07,609 INFO &amp;nbsp;[HMaster] metrics.MasterMetrics(61): Initialized&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07.687::INFO: &amp;nbsp;Logging to STDERR via org.mortbay.log.StdErrLog&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07.796::INFO: &amp;nbsp;jetty-6.1.14&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:07.875::INFO: &amp;nbsp;Extract jar:file:/G:/hbase/hbase-0.20.5/hbase-0.20.5.jar!/webapps/master to C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\Jetty_0_0_0_0_60010_master____q3nwom\webapp&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:08.375::INFO: &amp;nbsp;Extract jar:file:/G:/hbase/hbase-0.20.5/hbase-0.20.5.jar!/webapps/rest to C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\Jetty_0_0_0_0_60010_rest__api__uxgjk0\webapp&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:08.671::INFO: &amp;nbsp;Started SelectChannelConnector@0.0.0.0:60010&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:08,687 DEBUG [HMaster] master.HMaster(625): Started service threads&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,687 INFO &amp;nbsp;[IPC Server handler 1 on 60000] master.ServerManager(166): Received start message from: rollin,60020,1334327279640&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,718 DEBUG [IPC Server handler 1 on 60000] zookeeper.ZooKeeperWrapper(613): Updated ZNode /hbase/rs/1334327279640 with data 192.168.1.110:60020&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,265 INFO &amp;nbsp;[IPC Server handler 2 on 60000] master.RegionManager(327): Assigning region -ROOT-,,0 to rollin,60020,1334327279640&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,359 INFO &amp;nbsp;[IPC Server handler 3 on 60000] master.ServerManager(460): Processing MSG_REPORT_OPEN: -ROOT-,,0 from rollin,60020,1334327279640; 1 of 1&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,437 WARN &amp;nbsp;[IPC Server handler 3 on 60000] zookeeper.ZooKeeperWrapper(569): Failed to create out of safe mode in ZooKeeper: org.apache.zookeeper.KeeperException$NodeExistsException: KeeperErrorCode = NodeExists for /hbase/safe-mode&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,437 INFO &amp;nbsp;[IPC Server handler 3 on 60000] zookeeper.ZooKeeperWrapper(571): Node exists; just move on&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,437 INFO &amp;nbsp;[IPC Server handler 3 on 60000] master.RegionManager(1180): exiting safe mode&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,453 DEBUG [IPC Server handler 3 on 60000] zookeeper.ZooKeeperWrapper(479): SetData of ZNode /hbase/root-region-server with 192.168.1.110:60020&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,468 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(163): RegionManager.rootScanner scanning meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,640 DEBUG [RegionManager.rootScanner] master.BaseScanner(580): Current assignment of .META.,,1 is not valid; &amp;nbsp;serverAddress=192.168.1.110:2122, startCode=1334327054515 unknown.&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,640 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(242): RegionManager.rootScanner scan of 1 row(s) of meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;} complete&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,468 INFO &amp;nbsp;[IPC Server handler 4 on 60000] master.RegionManager(327): Assigning region .META.,,1 to rollin,60020,1334327279640&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,484 INFO &amp;nbsp;[IPC Server handler 5 on 60000] master.ServerManager(460): Processing MSG_REPORT_OPEN: .META.,,1 from rollin,60020,1334327279640; 1 of 1&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,484 DEBUG [HMaster] master.HMaster(459): Processing todo: PendingOpenOperation from rollin,60020,1334327279640&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,484 INFO &amp;nbsp;[HMaster] master.ProcessRegionOpen(70): .META.,,1 open on 192.168.1.110:60020&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,500 INFO &amp;nbsp;[HMaster] master.ProcessRegionOpen(80): Updated row .META.,,1 in region -ROOT-,,0 with startcode=1334327279640, server=192.168.1.110:60020&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,500 DEBUG [HMaster] master.ProcessRegionOpen(98): Adding to onlineMetaRegions: {server: 192.168.1.110:60020, regionname: .META.,,1, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,500 INFO &amp;nbsp;[RegionManager.metaScanner] master.BaseScanner(163): RegionManager.metaScanner scanning meta region {server: 192.168.1.110:60020, regionname: .META.,,1, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,515 DEBUG [RegionManager.metaScanner] master.BaseScanner(580): Current assignment of org.apache.hadoop.hbase.LocalHBaseCluster,,1334327054515 is not valid; &amp;nbsp;serverAddress=192.168.1.110:2122, startCode=1334327054515 unknown.&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,515 INFO &amp;nbsp;[RegionManager.metaScanner] master.BaseScanner(242): RegionManager.metaScanner scan of 1 row(s) of meta region {server: 192.168.1.110:60020, regionname: .META.,,1, startKey: &amp;lt;&amp;gt;} complete&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,515 INFO &amp;nbsp;[RegionManager.metaScanner] master.MetaScanner(132): All 1 .META. region(s) scanned&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:03,500 INFO &amp;nbsp;[IPC Server handler 6 on 60000] master.RegionManager(327): Assigning region org.apache.hadoop.hbase.LocalHBaseCluster,,1334327054515 to rollin,60020,1334327279640&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:03,500 INFO &amp;nbsp;[IPC Server handler 7 on 60000] master.ServerManager(460): Processing MSG_REPORT_OPEN: org.apache.hadoop.hbase.LocalHBaseCluster,,1334327054515 from rollin,60020,1334327279640; 1 of 1&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:03,515 DEBUG [HMaster] master.HMaster(459): Processing todo: PendingOpenOperation from rollin,60020,1334327279640&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:03,515 INFO &amp;nbsp;[HMaster] master.ProcessRegionOpen(70): org.apache.hadoop.hbase.LocalHBaseCluster,,1334327054515 open on 192.168.1.110:60020&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:03,515 INFO &amp;nbsp;[HMaster] master.ProcessRegionOpen(80): Updated row org.apache.hadoop.hbase.LocalHBaseCluster,,1334327054515 in region .META.,,1 with startcode=1334327279640, server=192.168.1.110:60020&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:07,437 INFO &amp;nbsp;[Thread-7] master.ServerManager$ServerMonitor(128): 1 region servers, 0 dead, average load 3.0&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:07,609 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(163): RegionManager.rootScanner scanning meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:07,625 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(242): RegionManager.rootScanner scan of 1 row(s) of meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;} complete&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:29:02,500 INFO &amp;nbsp;[RegionManager.metaScanner] master.BaseScanner(163): RegionManager.metaScanner scanning meta region {server: 192.168.1.110:60020, regionname: .META.,,1, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:29:02,515 INFO &amp;nbsp;[RegionManager.metaScanner] master.BaseScanner(242): RegionManager.metaScanner scan of 1 row(s) of meta region {server: 192.168.1.110:60020, regionname: .META.,,1, startKey: &amp;lt;&amp;gt;} complete&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:29:02,515 INFO &amp;nbsp;[RegionManager.metaScanner] master.MetaScanner(132): All 1 .META. region(s) scanned&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:29:07,437 INFO &amp;nbsp;[Thread-7] master.ServerManager$ServerMonitor(128): 1 region servers, 0 dead, average load 3.0&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:29:07,609 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(163): RegionManager.rootScanner scanning meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:29:07,625 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(242): RegionManager.rootScanner scan of 1 row(s) of meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;} complete&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:30:02,500 INFO &amp;nbsp;[RegionManager.metaScanner] master.BaseScanner(163): RegionManager.metaScanner scanning meta region {server: 192.168.1.110:60020, regionname: .META.,,1, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:30:02,515 INFO &amp;nbsp;[RegionManager.metaScanner] master.BaseScanner(242): RegionManager.metaScanner scan of 1 row(s) of meta region {server: 192.168.1.110:60020, regionname: .META.,,1, startKey: &amp;lt;&amp;gt;} complete&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:30:02,515 INFO &amp;nbsp;[RegionManager.metaScanner] master.MetaScanner(132): All 1 .META. region(s) scanned&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:30:07,437 INFO &amp;nbsp;[Thread-7] master.ServerManager$ServerMonitor(128): 1 region servers, 0 dead, average load 3.0&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:30:07,609 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(163): RegionManager.rootScanner scanning meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:30:07,656 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(242): RegionManager.rootScanner scan of 1 row(s) of meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;} complete&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
3 HRegionServer&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:58,796 INFO &amp;nbsp;[main] regionserver.HRegionServer(2279): vmInputArguments=[-Dfile.encoding=UTF-8]&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:58,828 INFO &amp;nbsp;[main] regionserver.HRegionServer(214): My address is rollin:60020&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:58,968 INFO &amp;nbsp;[main] ipc.HBaseRpcMetrics(52): Initializing RPC Metrics with hostName=HRegionServer, port=60020&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,078 INFO &amp;nbsp;[main] regionserver.MemStoreFlusher(107): globalMemStoreLimit=99.0m, globalMemStoreLimitLowMark=86.6m, maxHeap=247.5m&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,078 INFO &amp;nbsp;[main] regionserver.HRegionServer$MajorCompactionChecker(875): Runs every 10000000ms&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,296 DEBUG [main] zookeeper.ZooKeeperWrapper(374): Set watcher on master address ZNode /hbase/master&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,312 INFO &amp;nbsp;[main-EventThread] regionserver.HRegionServer(297): Got ZooKeeper event, state: SyncConnected, type: None, path: null&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,390 DEBUG [regionserver/192.168.1.110:60020] zookeeper.ZooKeeperWrapper(398): Read ZNode /hbase/master got 192.168.1.110:60000&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,390 INFO &amp;nbsp;[regionserver/192.168.1.110:60020] regionserver.HRegionServer(1190): Telling master at 192.168.1.110:60000 that we are up&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,640 DEBUG [regionserver/192.168.1.110:60020] regionserver.HRegionServer(1226): sending initial server load: requests=0, regions=0, usedHeap=21, maxHeap=247&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,687 DEBUG [regionserver/192.168.1.110:60020] zookeeper.ZooKeeperWrapper(591): Created ZNode /hbase/rs/1334327279640 with data 192.168.1.110:60020&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,750 DEBUG [regionserver/192.168.1.110:60020] regionserver.HRegionServer(665): Config from master: hbase.regionserver.address=192.168.1.110&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,750 DEBUG [regionserver/192.168.1.110:60020] regionserver.HRegionServer(665): Config from master: fs.default.name=file:/D:/hbase-0.20.3/data&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,750 DEBUG [regionserver/192.168.1.110:60020] regionserver.HRegionServer(665): Config from master: hbase.rootdir=file:/D:/hbase-0.20.3/data&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:27:59,750 INFO &amp;nbsp;[regionserver/192.168.1.110:60020] regionserver.HRegionServer(674): Master passed us address to use. Was=192.168.1.110:60020, Now=192.168.1.110&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:00,265 DEBUG [regionserver/192.168.1.110:60020] regionserver.HRegionServer(950): Log dir file:/D:/hbase-0.20.3/data/.logs/rollin,60020,1334327279640&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:00,281 INFO &amp;nbsp;[regionserver/192.168.1.110:60020] regionserver.HLog(246): HLog configuration: blocksize=33554432, rollsize=31876710, enabled=true, flushlogentries=100, optionallogflushinternal=10000ms&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:00,437 INFO &amp;nbsp;[regionserver/192.168.1.110:60020] regionserver.HLog(346): New hlog /D:/hbase-0.20.3/data/.logs/rollin,60020,1334327279640/hlog.dat.1334327280281&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:00,453 INFO &amp;nbsp;[regionserver/192.168.1.110:60020] metrics.RegionServerMetrics(146): Initialized&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:00.515::INFO: &amp;nbsp;Logging to STDERR via org.mortbay.log.StdErrLog&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:00.656::INFO: &amp;nbsp;jetty-6.1.14&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:00.734::INFO: &amp;nbsp;Extract jar:file:/G:/hbase/hbase-0.20.5/hbase-0.20.5.jar!/webapps/regionserver to C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\Jetty_0_0_0_0_60030_regionserver____.h599vl\webapp&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01.234::INFO: &amp;nbsp;Started SelectChannelConnector@0.0.0.0:60030&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,234 INFO &amp;nbsp;[regionserver/192.168.1.110:60020] regionserver.HRegionServer(1088): HRegionServer started at: 192.168.1.110:60020&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,234 DEBUG [regionserver/192.168.1.110:60020] zookeeper.ZooKeeperWrapper(398): Read ZNode /hbase/root-region-server got 192.168.1.110:2122&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,250 INFO &amp;nbsp;[regionserver/192.168.1.110:60020] regionserver.StoreFile(241): Allocating LruBlockCache with maximum size 49.5m&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,265 INFO &amp;nbsp;[regionserver/192.168.1.110:60020] regionserver.HRegionServer(428): MSG_REGION_OPEN: -ROOT-,,0&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,265 INFO &amp;nbsp;[regionserver/192.168.1.110:60020.worker] regionserver.HRegionServer$Worker(1316): Worker: MSG_REGION_OPEN: -ROOT-,,0&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,296 DEBUG [regionserver/192.168.1.110:60020.worker] regionserver.HRegion(284): Creating region -ROOT-,,0, encoded=70236052&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,343 DEBUG [regionserver/192.168.1.110:60020.worker] regionserver.Store(424): loaded /D:/hbase-0.20.3/data/-ROOT-/70236052/info/7471940505945003795, isReference=false, sequence id=2, length=839, majorCompaction=false&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,343 DEBUG [regionserver/192.168.1.110:60020.worker] regionserver.Store(424): loaded /D:/hbase-0.20.3/data/-ROOT-/70236052/info/3861644384671521953, isReference=false, sequence id=10, length=461, majorCompaction=false&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,343 INFO &amp;nbsp;[regionserver/192.168.1.110:60020.worker] regionserver.HRegion(360): region -ROOT-,,0/70236052 available; sequence id is 11&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,468 INFO &amp;nbsp;[regionserver/192.168.1.110:60020] regionserver.HRegionServer(428): MSG_REGION_OPEN: .META.,,1&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,468 INFO &amp;nbsp;[regionserver/192.168.1.110:60020.worker] regionserver.HRegionServer$Worker(1316): Worker: MSG_REGION_OPEN: .META.,,1&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,468 DEBUG [regionserver/192.168.1.110:60020.worker] regionserver.HRegion(284): Creating region .META.,,1, encoded=1028785192&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,484 DEBUG [regionserver/192.168.1.110:60020.worker] regionserver.Store(424): loaded /D:/hbase-0.20.3/data/.META./1028785192/info/7125721025097489400, isReference=false, sequence id=9, length=913, majorCompaction=false&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:02,484 INFO &amp;nbsp;[regionserver/192.168.1.110:60020.worker] regionserver.HRegion(360): region .META.,,1/1028785192 available; sequence id is 10&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:03,500 INFO &amp;nbsp;[regionserver/192.168.1.110:60020] regionserver.HRegionServer(428): MSG_REGION_OPEN: org.apache.hadoop.hbase.LocalHBaseCluster,,1334327054515&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:03,500 INFO &amp;nbsp;[regionserver/192.168.1.110:60020.worker] regionserver.HRegionServer$Worker(1316): Worker: MSG_REGION_OPEN: org.apache.hadoop.hbase.LocalHBaseCluster,,1334327054515&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:03,500 DEBUG [regionserver/192.168.1.110:60020.worker] regionserver.HRegion(284): Creating region org.apache.hadoop.hbase.LocalHBaseCluster,,1334327054515, encoded=1645514350&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:03,500 INFO &amp;nbsp;[regionserver/192.168.1.110:60020.worker] regionserver.HRegion(360): region org.apache.hadoop.hbase.LocalHBaseCluster,,1334327054515/1645514350 available; sequence id is 0&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:29:01,265 DEBUG [pool-1-thread-1] hfile.LruBlockCache(551): Cache Stats: Sizes: Total=0.23448181MB (245872), Free=49.26552MB (51658640), Max=49.5MB (51904512), Counts: Blocks=3, Access=10, Hit=7, Miss=3, Evictions=0, Evicted=0, Ratios: Hit Ratio=69.9999988079071%,
 Miss Ratio=30.000001192092896%, Evicted/Run=NaN&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:30:01,265 DEBUG [pool-1-thread-1] hfile.LruBlockCache(551): Cache Stats: Sizes: Total=0.23448181MB (245872), Free=49.26552MB (51658640), Max=49.5MB (51904512), Counts: Blocks=3, Access=16, Hit=13, Miss=3, Evictions=0, Evicted=0, Ratios: Hit Ratio=81.25%,
 Miss Ratio=18.75%, Evicted/Run=NaN&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:31:01,265 DEBUG [pool-1-thread-1] hfile.LruBlockCache(551): Cache Stats: Sizes: Total=0.23448181MB (245872), Free=49.26552MB (51658640), Max=49.5MB (51904512), Counts: Blocks=3, Access=22, Hit=19, Miss=3, Evictions=0, Evicted=0, Ratios: Hit Ratio=86.36363744735718%,
 Miss Ratio=13.636364042758942%, Evicted/Run=NaN&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
HMaster更新：&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:31:02,500 INFO &amp;nbsp;[RegionManager.metaScanner] master.BaseScanner(163): RegionManager.metaScanner scanning meta region {server: 192.168.1.110:60020, regionname: .META.,,1, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:31:02,531 INFO &amp;nbsp;[RegionManager.metaScanner] master.BaseScanner(242): RegionManager.metaScanner scan of 1 row(s) of meta region {server: 192.168.1.110:60020, regionname: .META.,,1, startKey: &amp;lt;&amp;gt;} complete&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:31:02,531 INFO &amp;nbsp;[RegionManager.metaScanner] master.MetaScanner(132): All 1 .META. region(s) scanned&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:31:07,437 INFO &amp;nbsp;[Thread-7] master.ServerManager$ServerMonitor(128): 1 region servers, 0 dead, average load 3.0&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:31:07,609 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(163): RegionManager.rootScanner scanning meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:31:07,625 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(242): RegionManager.rootScanner scan of 1 row(s) of meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;} complete&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
HRegionServer更新&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:32:07,437 INFO &amp;nbsp;[Thread-7] master.ServerManager$ServerMonitor(128): 1 region servers, 0 dead, average load 3.0&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:32:07,609 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(163): RegionManager.rootScanner scanning meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:32:07,609 INFO &amp;nbsp;[RegionManager.rootScanner] master.BaseScanner(242): RegionManager.rootScanner scan of 1 row(s) of meta region {server: 192.168.1.110:60020, regionname: -ROOT-,,0, startKey: &amp;lt;&amp;gt;} complete&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:33:02,500 INFO &amp;nbsp;[RegionManager.metaScanner] master.BaseScanner(163): RegionManager.metaScanner scanning meta region {server: 192.168.1.110:60020, regionname: .META.,,1, startKey: &amp;lt;&amp;gt;}&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:33:02,515 INFO &amp;nbsp;[RegionManager.metaScanner] master.BaseScanner(242): RegionManager.metaScanner scan of 1 row(s) of meta region {server: 192.168.1.110:60020, regionname: .META.,,1, startKey: &amp;lt;&amp;gt;} complete&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:33:02,515 INFO &amp;nbsp;[RegionManager.metaScanner] master.MetaScanner(132): All 1 .META. region(s) scanned&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
Master停掉后HRegionServer：&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:36:57,359 WARN &amp;nbsp;[regionserver/192.168.1.110:60020] regionserver.HRegionServer(482): Attempt=14&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
java.net.ConnectException: Connection refused: no further information&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.net.NetUtils.connect(NetUtils.java:404)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.java:308)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:843)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:715)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.hbase.ipc.HBaseRPC$Invoker.invoke(HBaseRPC.java:334)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 $Proxy0.regionServerReport(Unknown Source)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:410)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 java.lang.Thread.run(Thread.java:662)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:36:59,375 WARN &amp;nbsp;[regionserver/192.168.1.110:60020] regionserver.HRegionServer(482): Attempt=15&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
java.net.ConnectException: Connection refused: no further information&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.net.NetUtils.connect(NetUtils.java:404)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.java:308)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:843)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:715)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.hbase.ipc.HBaseRPC$Invoker.invoke(HBaseRPC.java:334)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 $Proxy0.regionServerReport(Unknown Source)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:410)&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;span style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; white-space:pre&quot;&gt;&lt;/span&gt;at
 java.lang.Thread.run(Thread.java:662)&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
ZooKeeper信息&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
gotiated timeout 40000 for client /127.0.0.1:2192&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:28:01,375 - INFO &amp;nbsp;[ProcessThread:-1:PrepRequestProcessor@407] - Got user-level KeeperException when processing sessionid:0x136ac0ffee30003 type:create cxid:0xd zxid:0xfffffffffffffffe txntype:unknown reqpath:n/a Error Path:/hbase/safe-mode Error:KeeperErrorCode
 = NodeExists for /hbase/safe-mode&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:36:30,984 - WARN &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@639] - Exception causing close of session 0x136ac0ffee30003 due to java.io.IOException: 远程主机强迫关闭了一个现有的连接。&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:36:31,000 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1435] - Closed socket connection for client /127.0.0.1:2180 which had sessionid 0x136ac0ffee30003&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:37:10,000 - INFO &amp;nbsp;[SessionTracker:ZooKeeperServer@314] - Expiring session 0x136ac0ffee30003, timeout of 40000ms exceeded&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:37:10,000 - INFO &amp;nbsp;[ProcessThread:-1:PrepRequestProcessor@387] - Processed session termination for sessionid: 0x136ac0ffee30003&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:37:45,296 - WARN &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@639] - Exception causing close of session 0x136ac0ffee30004 due to java.io.IOException: 远程主机强迫关闭了一个现有的连接。&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
2012-04-13 22:37:45,296 - INFO &amp;nbsp;[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1435] - Closed socket connection for client /127.0.0.1:2192 which had sessionid 0x136ac0ffee30004&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
LocalHBaseCluster也可以测试。&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
参考文献:&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;a href=&quot;http://tangay.iteye.com/blog/724589&quot; style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; color:rgb(0,102,204)&quot;&gt;http://tangay.iteye.com/blog/724589&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
更多内容：&lt;/p&gt;
&lt;p style=&quot;background-color:transparent; border-top-width:0px; border-right-width:0px; border-bottom-width:0px; border-left-width:0px; border-style:initial; border-color:initial; margin-top:0px; margin-right:0px; margin-bottom:12px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;a href=&quot;http://www.marulin.com/&quot;&gt;http://www.marulin.com/&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

            
                    &lt;div&gt;来源：http://blog.csdn.net/longronglin/article/details/7459514&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638384555/iphone88/feedsky/s.gif?r=http://www.itivy.com/iphone/archive/2012/5/9/634721811854586233.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Thu, 10 May 2012 02:11:04 +0800</pubDate><author>iOS88</author><guid isPermaLink="false"></guid><dc:creator>iOS88</dc:creator><fs:srclink>http://www.itivy.com/iphone/archive/2012/5/9/634721811854586233.html</fs:srclink><fs:srcfeed>http://www.itivy.com/iphone/rss</fs:srcfeed><fs:itemid>feedsky/iphone88/~8841916/638384555/6960487</fs:itemid></item><item><title>为TV进行开发：跨越不同屏幕间的鸿沟</title><link>http://www.itivy.com/iphone/archive/2012/5/9/634721567190959225.html</link><description>&lt;p&gt;[光明的跨屏幕时代已经越来越近了，手持设备生产商以及电子消费巨头都开始为下一个联网设备竞争了——电视机。但是开发者要如何应对呢？创建跨屏幕运行的apps有多大难度？国外科技媒体VisionMobile的作者Ben Hookway讨论了跨屏幕开发的一些细节以及智能TV市场面前的机遇和挑战，并对开发者在面对众多平台时要如何选择给出了建议。]&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/Upload/EditorImage/image/iphone/201205/6347215813314312701.jpg&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-2786&quot; title=&quot;1&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/6347215813314312701.jpg&quot; alt=&quot;&quot; width=&quot;500&quot; height=&quot;420&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-2785&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;设想这样一种情况，在进行apps发布的时候，有10多种平台可以选择——而这些平台大多数是不对开发者开放的。只有少数几种apps被开发出来，并且，没有人使用这些apps。&lt;/p&gt;
&lt;p&gt;这种情况就是用来描述当下联网TV市场的状况的。这个描述也适用于前iPhone时代的移动世界，那时候，app开发的焦点就在于多种平台的选择。&lt;/p&gt;
&lt;p&gt;在前iPhone时代以及后iPhone时代，我花了好几年来构建移动领域的业务，最近我正在试图打破web和联网TV间的界限来构建业务。我为这两种环境中的相似度感到震撼，坚信TV产业需要花更多时间来关注apps的革新，不管是定制机还是智能机上的革新，以便避免再经历移动领域apps已经经历过的教训。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;TV&lt;/strong&gt;&lt;strong&gt;是除移动&lt;/strong&gt;&lt;strong&gt;apps&lt;/strong&gt;&lt;strong&gt;以外的另外一个世界&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;当“app”这个词应用到TV上时，有一些微妙的含义在内。在很多情况下，一个TV app只是作为一些内容的接入点——比如YouTube, Netflix 或者LoveFilm apps。在另外一些情况下，TV上的app是指一些类似于Facebook 或者 eBay app的功能。&lt;/p&gt;
&lt;p&gt;有时候我会想，在TV相关的apps上，我们没什么可做了，因为没有人能想到有什么更好的可以去做。“这个app在手机上很好用，那么就在TV上试试吧！”如果是确实能正确应用于TV上的apps，那当然没问题，但是我们必须意识到TV应用的特点：&lt;/p&gt;
&lt;p&gt;- TV是共享应用，而手机是私人化的。&lt;/p&gt;
&lt;p&gt;- TV交互性更小。各种试图让用户和TV交互的努力都失败了。&lt;/p&gt;
&lt;p&gt;- 消费者讨厌复杂的遥控器。&lt;/p&gt;
&lt;p&gt;很多从web开发转向TV开发的开发者并没有意识到这些细节。而这些忽略有可能使得apps根本无法在TV上应用。想想，你真地愿意让你的私人信息出现在一个共享屏幕上？其他共享TV屏幕的人真地愿意让屏幕被你用来浏览你的Facebook信息吗？&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;为&lt;/strong&gt;&lt;strong&gt;TV&lt;/strong&gt;&lt;strong&gt;开发&lt;/strong&gt;&lt;strong&gt;apps&lt;/strong&gt;&lt;strong&gt;的三种方式&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;主要有三种为TV进行app开发的方式：&lt;/p&gt;
&lt;p&gt;&lt;em&gt;1. TV-only apps&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;为TV屏幕或者机顶盒开发的apps通常是最受欢迎的由web服务延伸到TV屏幕上的应用。其中的例子有Spotify, Flickr ，当然也包括Twitter 和Facebook。这些apps需要做修改以便适应TV遥控器，并且只能有有限的文本输入——这些都是说起来简单做起来难。有些apps是更容易移植到TV上去的。CNet有一个综合清单，其中列出了TV厂商启用的主流音乐、视频以及会话apps。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2. Mobile-only apps&lt;/em&gt;&lt;em&gt;&lt;br /&gt;
&lt;/em&gt;这些是作为TV的补充的移动或者平板apps，它们并不和TV进行交互。其中的例子有Zeebox (最近获得了来自于Sky的投资), Flip.tv, GetGlu以及Miso。这些apps集中于提供一个观看电视的并行应用，让你在看电视的时候也能与你的个人设备进行交互。在这些apps中，你还可以加入那些提供清单内容的apps。据消费者调查显示，平板电脑对于TV来说，是一个天然伴侣——据&lt;a href=&quot;http://blogs.forrester.com/sarah_rotman_epps/12-04-11-the_tablet_tv_connection&quot; target=&quot;_blank&quot;&gt;Forrester&lt;/a&gt;称，美国85%的平板电脑用户会在看电视的时候用平板电脑，而据Nielsen称，用户使用平板电脑的时间中，总共有30%是用于看电视的时候的。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;3. Closed loop apps&lt;/em&gt;这些apps是真正将移动端以及TV联合起来的。其中有些应用了DLNA 和AirPlay来选择并控制流向TV屏幕的内容。最简单的例子是Apple的Airplay，让你可以通过Apple TV来在你的TV屏幕上播放存储在MacBook中的电影。难找的是那些能和广播TV功能进行交互、可以使用智能机设置机顶盒而不仅仅将TV作为一个显示器来用的apps。然而， 在一个设备上发现内容以及频道并将这些内容导入到TV中是更为困难的问题，因为这涉及到TV或者机顶盒的整合问题。这是要有所创新真正需要做的地方。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;碎片化噩梦&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;为TV或者机顶盒开发是非常具有挑战性的，无论是开发TV apps还是机顶盒apps，都应该想办法弥合其中的缝隙，或者就直接开发一个独立的app。为什么呢？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;strong&gt;有&lt;/strong&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;strong&gt;多个平台。&lt;/strong&gt;所有人都在试图为他们自己的TV或者机顶盒推行某种应用环境。例如，Samsung, Panasonic, Sharp, LG, Sony, Yahoo, Google TV, Boxee, InView, WyPlay, YouView (eventually) 以及 HBBTV – 更不用说 &lt;a href=&quot;http://twitter.com/#!/andreascon/statuses/158603060791349248&quot; target=&quot;_blank&quot;&gt;Android spin-offs&lt;/a&gt;.这些平台有些是封闭的，有些有开发者项目。要想了解一个全面清单，可以看&lt;a href=&quot;http://www.webapptrend.com/(http/::en.wikipedia.org:wiki:Smart_TV#List_of_notable_Smart_TV_platforms&quot; target=&quot;_blank&quot;&gt;Wikipedia page&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;没有开发人员可以同时为所有这些平台开发，那么，你到底要选择哪一个才能成功呢？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;strong&gt;未来会有多少联网&lt;/strong&gt;&lt;strong&gt;TV&lt;/strong&gt;&lt;strong&gt;？&lt;/strong&gt;根据CEA (www.cea.org)的数据，在2011年售出了260m电视，其中大概有27%是联网的（数据来源FutureSource）。拥有联网能力的TV比率会迅速增加。假设所有这些售出的联网TV都真地与网络相连了，可以预估的市场仍然小于移动电话。实施上，问题比这个更复杂。&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;很多“联网&lt;/strong&gt;&lt;strong&gt;TV&lt;/strong&gt;&lt;strong&gt;”只是有联网能力而已&lt;/strong&gt;。有联网能力并不意味着一定连到网络上去了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;strong&gt;这些设备的销量还没有多到让消费者可以意识到其中的某些应用有多糟糕&lt;/strong&gt;。好的产品来源于不断的反馈，而现在针对联网TV还没有足够的消费者反馈数据。而且，也没有足够的理由让消费者去给予反馈，因为他们完全可以使用现有的系统来选择TV内容，比如机顶盒，或者PC和平板电脑上的catch-up TV服务。&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;TV&lt;/strong&gt;&lt;strong&gt;会有“&lt;/strong&gt;&lt;strong&gt;iPhone Moment&lt;/strong&gt;&lt;strong&gt;”那样的突破时刻吗&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;作为做过iPhone在移动领域推广的人，我可以确信地说，TV市场还没有像iPhone那样达到突破。然而，如果真有所突破，那么这个突破会决定性地改变开发现状。这一点对于在TV领域的初创公司以及其中的投资者、VC以及天使基金来说都很重要。&lt;/p&gt;
&lt;p&gt;可以想象前iPhone时代的app开发状况。那时候，你往往需要在开发时考虑控制器或者手持设备厂商，并且要密切关注目标平台的变化。处理控制器以及手持设备相关问题非常复杂，且耗时很多——如果你处理的好的话，你会成为superstar，但更常见的情况是浪费了时间以及宝贵的资源。&lt;/p&gt;
&lt;p&gt;在后iPhone时代，使用apps挣钱的方式发生了革命性改变。不需要再通过控制器或者手持设备了——你可以直接面对平台领域竞争的赢家，并且直接将你的app放到它的商店中去。而在TV产业中，这样的环境还没有形成。&lt;/p&gt;
&lt;p&gt;对于TV领域，有一些是可以带来“iPhone moment”的产品。显然，Apple据说是要发布一个TV产品。现在的Apple TV就是个很好的产品了，但它还不是一个开放app平台。&lt;/p&gt;
&lt;p&gt;Google TV也是一个成长起来的项目，成长缓慢但在稳步前进。&lt;/p&gt;
&lt;p&gt;Xbox也是一匹黑马，特别是根据最近的一个报道（&lt;a href=&quot;http://t.co/DrM7mu1t&quot; target=&quot;_blank&quot;&gt;http://t.co/DrM7mu1t&lt;/a&gt;），人们开始花更多时间在Xbox上观看内容。&lt;/p&gt;
&lt;p&gt;当然别忘了在这个领域已经发展了一段时间的TV成员。TiVo, Sky+, YouView （UK）, HBB TV （Europe）在TV平台开发方面都非常活跃，并且，Roku提供Over The Top (OTT) boxes已经好几年了。&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;你应该将赌注下在何处？&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;目前，TV领域是一个扑朔迷离的领域，它在未来几年内还可能发生很多变化。当面临该选择哪种TV app 平台的时候，很难做出正确的抉择。但是，如果你一定想要一个值得关注的单子，我会列出下面这些：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TV &lt;/strong&gt;&lt;strong&gt;厂商&lt;/strong&gt;: Samsung 以及 Sony，因为它们销量高&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;STB &lt;/strong&gt;&lt;strong&gt;公司&lt;/strong&gt;: Boxee, Roku，因为它们行业领先&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Platforms&lt;/strong&gt;: Google TV是最开放的平台，并且做了很多工作鼓励开发，包括签约了主要的tier-1服务，比如&lt;a href=&quot;http://blog.hulu.com/2012/03/29/hulu-plus-arrives-on-seven-android-tablets-with-a-brand-new-style-2/&quot; target=&quot;_blank&quot;&gt;Hulu&lt;/a&gt;。现在，它们销量还比较低，但值得对其进行关注 (&lt;a href=&quot;http://www.google.com/tv/&quot; target=&quot;_blank&quot;&gt;http://www.google.com/tv/&lt;/a&gt;)。&lt;/p&gt;
&lt;p&gt;当然，要留意Apple。它的下一步大动作可能就是开发现在的Apple TV产品让开发者可以进行app开发。这是很多人都在等待的一个动作。&lt;/p&gt;
&lt;p&gt;TV将来会像iPhone那样有所突破的，但有可能这个突破并不是Apple带来的。&lt;/p&gt;
&lt;p&gt;作者简介：&lt;/p&gt;
&lt;p&gt;- Ben (&lt;a href=&quot;http://www.twitter.com/#!/@benhookway&quot; target=&quot;_blank&quot;&gt;@benhookway&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;[Ben Hookway在美国、欧洲以及亚洲公司有着15年经验。他曾是Next Device（一个手机UI公司）以及Vidiactive（一个web视频系统提供商）的CEO。他现在在为好几个科技公司工作，你可以通过ben@etherow.com联系到他。]&lt;/p&gt;
&lt;p&gt;原文链接：&lt;a href=&quot;http://www.visionmobile.com/blog/2012/04/developing-for-tv-crossing-the-chasm-between-screens/&quot;&gt;Developing for TV: Crossing the chasm between screens&lt;/a&gt;&lt;/p&gt;
&lt;table class=&quot;wumii-related-items&quot; cellspacing=&quot;0&quot; cellpadding=&quot;3&quot; border=&quot;0&quot;  style=&quot;clear: both;&quot;&gt;
    
    &lt;tr&gt;
        &lt;td colspan=&quot;4&quot;&gt;&lt;b&gt;&lt;font size=&quot;-1&quot;  style=&quot;display: block !important; padding: 20px 0 5px !important;&quot;&gt;您可能也喜欢：&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;/tr&gt;
    
        &lt;tr&gt;
                &lt;td width=&quot;102&quot; valign=&quot;top&quot; style=&quot;padding: 5px !important; margin: 0 !important;&quot;&gt;
                    &lt;a target=&quot;_blank&quot; title=&quot;Firefox上Web开发工具库一览&quot; style=&quot;text-decoration: none !important; cursor: pointer !important;&quot; href=&quot;http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2011%2F12%2F589.html&amp;from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2785.html&quot;&gt;
                        &lt;img style=&quot;margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/63472158133518468113493795.png&quot; width=&quot;96px&quot; height=&quot;96px&quot; /&gt;&lt;br /&gt;
                        &lt;font size=&quot;-1&quot; color=&quot;#333333&quot; style=&quot;display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;&quot;&gt;Firefox上Web开发工具库一览&lt;/font&gt;
                    &lt;/a&gt;
                &lt;/td&gt;
                &lt;td width=&quot;102&quot; valign=&quot;top&quot; style=&quot;padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;&quot;&gt;
                    &lt;a target=&quot;_blank&quot; title=&quot;2012年Web设计和开发的15个趋势&quot; style=&quot;text-decoration: none !important; cursor: pointer !important;&quot; href=&quot;http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2748.html&amp;from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2785.html&quot;&gt;
                        &lt;img style=&quot;margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/63472158133810237025080416.jpg&quot; width=&quot;96px&quot; height=&quot;96px&quot; /&gt;&lt;br /&gt;
                        &lt;font size=&quot;-1&quot; color=&quot;#333333&quot; style=&quot;display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;&quot;&gt;2012年Web设计和开发的15个趋势&lt;/font&gt;
                    &lt;/a&gt;
                &lt;/td&gt;
                &lt;td width=&quot;102&quot; valign=&quot;top&quot; style=&quot;padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;&quot;&gt;
                    &lt;a target=&quot;_blank&quot; title=&quot;HTML5游戏开发之将Easel.js和Box2d在画布中结合起来&quot; style=&quot;text-decoration: none !important; cursor: pointer !important;&quot; href=&quot;http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2712.html&amp;from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2785.html&quot;&gt;
                        &lt;img style=&quot;margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/63472158133948703924868941.jpg&quot; width=&quot;96px&quot; height=&quot;96px&quot; /&gt;&lt;br /&gt;
                        &lt;font size=&quot;-1&quot; color=&quot;#333333&quot; style=&quot;display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;&quot;&gt;HTML5游戏开发之将Easel.js和Box2d在画布中结合起来&lt;/font&gt;
                    &lt;/a&gt;
                &lt;/td&gt;
                &lt;td width=&quot;102&quot; valign=&quot;top&quot; style=&quot;padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;&quot;&gt;
                    &lt;a target=&quot;_blank&quot; title=&quot;如何设计一个优秀的儿童应用？&quot; style=&quot;text-decoration: none !important; cursor: pointer !important;&quot; href=&quot;http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2011%2F11%2F405.html&amp;from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2785.html&quot;&gt;
                        &lt;img style=&quot;margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;&quot; src=&quot;/Upload/EditorImage/image/iphone/201205/63472158134130734913493636.jpg&quot; width=&quot;96px&quot; height=&quot;96px&quot; /&gt;&lt;br /&gt;
                        &lt;font size=&quot;-1&quot; color=&quot;#333333&quot; style=&quot;display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;&quot;&gt;如何设计一个优秀的儿童应用？&lt;/font&gt;
                    &lt;/a&gt;
                &lt;/td&gt;
        &lt;/tr&gt;
    
    &lt;tr&gt;
        &lt;td colspan=&quot;4&quot; align=&quot;right&quot;&gt;
            &lt;a style=&quot;text-decoration: none !important;&quot; href=&quot;http://www.wumii.com/widget/relatedItems&quot; target=&quot;_blank&quot; title=&quot;无觅相关文章插件&quot;&gt;
                &lt;font size=&quot;-1&quot; color=&quot;#bbbbbb&quot; style=&quot;display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;&quot;&gt;无觅&lt;/font&gt;
            &lt;/a&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;&lt;div&gt;来源：http://www.webapptrend.com/2012/05/2785.html&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/638384556/iphone88/feedsky/s.gif?r=http://www.itivy.com/iphone/archive/2012/5/9/634721567190959225.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Wed, 09 May 2012 19:02:14 +0800</pubDate><author>iOS88</author><guid isPermaLink="false"></guid><dc:creator>iOS88</dc:creator><fs:srclink>http://www.itivy.com/iphone/archive/2012/5/9/634721567190959225.html</fs:srclink><fs:srcfeed>http://www.itivy.com/iphone/rss</fs:srcfeed><fs:itemid>feedsky/iphone88/~8841916/638384556/6960487</fs:itemid></item></channel></rss>
