<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ronald 的天空</title>
	<atom:link href="http://www.r-base.net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.r-base.net</link>
	<description>站在Android上望着IPhone</description>
	<lastBuildDate>Tue, 13 Sep 2011 04:55:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>收到VPSYou的故障邮件</title>
		<link>http://www.r-base.net/archives/796</link>
		<comments>http://www.r-base.net/archives/796#comments</comments>
		<pubDate>Tue, 13 Sep 2011 04:55:19 +0000</pubDate>
		<dc:creator>么吉</dc:creator>
				<category><![CDATA[博客记录]]></category>
		<category><![CDATA[网站建设]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[VPSYou]]></category>
		<category><![CDATA[VPSYou故障]]></category>

		<guid isPermaLink="false">http://www.r-base.net/?p=796</guid>
		<description><![CDATA[&#8195;&#8195;本博客前段时间决定放弃Vpsyou的VPS,我看来这个决定还是明智的. 今天收到Vpsyou发过来的邮件,原文如下: T2机房openvz16客户您好： 您的vps所在T2机房openvz服务器节点名为openvz16于2011年9月11日晚23：00 左右突然出现无法连接访问的情况， 我们联系机房后查看：无法ssh或KVM进入服务器，重启母鸡失败，无法进入母鸡，使用急救模式进入服务器查看，无法查看磁盘分区，目录全无，文件系统损坏。。。， 这是一次之前毫无预兆，突然出现的非常严重的情况，目前暂时不排除有人为的因素。 目前正在竭尽全力。查找原因及寻找有无恢复解决的办法， 出现这样的情况，真的非常抱歉，一旦有任何新的情况我们将一时间邮件通知说明！ （登录vpsyour.com可以查看你的vps所在服务器节点名，目前vps处于offline状态，其他节点的用户不用理会） 2011年9月11日06：43 &#8195;&#8195;我不肯定这个节点是跟我之前买的VPS相关的,但可以知道有一批Vps的不能正常访问,连数据都有可能全没了. 如果没有做好备份的话那就惨了.如果博客一段时间不能访问的话,影响很大的,并且现在都不知道数据能否恢复回来. 转载请注明转自 : http://www.r-base.net/archives/796]]></description>
			<content:encoded><![CDATA[<p>&emsp;&emsp;本博客前段时间决定放弃Vpsyou的<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/vps" title="查看 VPS 的全部文章" target="_blank">VPS</a></span>,我看来这个决定还是明智的. 今天收到Vpsyou发过来的邮件,原文如下:</p>
<pre>
T2机房openvz16客户您好：
您的vps所在T2机房openvz服务器节点名为openvz16于2011年9月11日晚23：00 左右突然出现无法连接访问的情况， 

我们联系机房后查看：无法ssh或KVM进入服务器，重启母鸡失败，无法进入母鸡，使用急救模式进入服务器查看，无法查看磁盘分区，目录全无，文件系统损坏。。。，

这是一次之前毫无预兆，突然出现的非常严重的情况，目前暂时不排除有人为的因素。

目前正在竭尽全力。查找原因及寻找有无恢复解决的办法，

出现这样的情况，真的非常抱歉，一旦有任何新的情况我们将一时间邮件通知说明！

（登录vpsyour.com可以查看你的vps所在服务器节点名，目前vps处于offline状态，其他节点的用户不用理会）

2011年9月11日06：43
</pre>
<p>&emsp;&emsp;我不肯定这个节点是跟我之前买的<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/vps" title="查看 VPS 的全部文章" target="_blank">VPS</a></span>相关的,但可以知道有一批Vps的不能正常访问,连数据都有可能全没了. 如果没有做好备份的话那就惨了.如果博客一段时间不能访问的话,影响很大的,并且现在都不知道数据能否恢复回来.</p>
<p class="announce">转载请注明转自 : http://www.r-base.net/archives/796</p>]]></content:encoded>
			<wfw:commentRss>http://www.r-base.net/archives/796/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android推送方式比较</title>
		<link>http://www.r-base.net/archives/778</link>
		<comments>http://www.r-base.net/archives/778#comments</comments>
		<pubDate>Wed, 07 Sep 2011 16:13:25 +0000</pubDate>
		<dc:creator>么吉</dc:creator>
				<category><![CDATA[Android应用]]></category>
		<category><![CDATA[Android游戏]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[androidnp]]></category>
		<category><![CDATA[android推送]]></category>
		<category><![CDATA[Pull方式]]></category>
		<category><![CDATA[Push方式]]></category>

		<guid isPermaLink="false">http://www.r-base.net/?p=778</guid>
		<description><![CDATA[推送方式的基础知识 &#8195;&#8195;当我们开发需要和服务器交互的应用程序时，基本上都需要获取服务器端的数据，比如《地震及时通》就需要及时获取服务器上最新的地震信息。要获取服务器上不定时更新的信息一般来说有两种方法，第一种是客户端使用Pull（拉）的方式，隔一段时间就去服务器上获取信息，看是否有更新的信息出现。第二种就是服务器使用Push（推送）的方式，当服务器端有新信息了，则把最新的信息Push到客户端上。 &#8195;&#8195;虽然Pull和Push两种方式都能实现获取服务器端更新信息的功能，但是明显来说Push is better than pull。因为Pull方式更费客户端的网络流量，更主要的是费电量。 &#8195;&#8195;在开发Android和iPhone应用程序时，我们往往需要从服务器不定的向手机客户端即时推送各种通知消息，iPhone上已经有了比较简单的和完美的推送通知解决方案，可是Android平台上实现起来却相对比较麻烦，最近利用几天的时间对Android的推送通知服务进行初步的研究。 &#8195;&#8195;在Android手机平台上，Google提供了C2DM（Cloudto Device Messaging）服务，起初我就是准备采用这个服务来实现自己手机上的推送功能。 &#8195;&#8195;Android Cloud to Device Messaging (C2DM)是一个用来帮助开发者从服务器向Android应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制，允许服务器可以通知移动应用程序直接与服务器进行通信，以便于从服务器获取应用程序更新和用户数据。C2DM服务负责处理诸如消息排队等事务并向运行于目标设备上的应用程序分发这些消息。 C2DM操作过程图: 但是经过一番研究发现，这个服务存在很大的问题： 1）C2DM内置于Android的2.2系统上，无法兼容老的1.6到2.1系统; 2）C2DM需要依赖于Google官方提供的C2DM服务器，由于国内的网络环境，这个服务经常不可用，如果想要很好的使用，我们的App Server必须也在国外，这个恐怕不是每个开发者都能够实现的; &#8195;&#8195;有了上述两个使用上的制约，导致我最终放弃了这个方案，不过我想利用另外一篇文章来详细的介绍C2DM的框架以及客户端和App Server的相应设置方法，可以作为学习与参考之用。 &#8195;&#8195;即然C2DM无法满足我们的要求，那么我们就需要自己来实现Android手机客户端与App Server之间的通信协议，保证在App Server想向指定的Android设备发送消息时，Android设备能够及时的收到。下面我来介绍几种常见的方案： 1）轮询(Pull)：应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达，你必须自己实现与服务器之间的通信，例如消息排队等。而且你还要考虑轮询的频率，如果太慢可能导致某些消息的延迟，如果太快，则会大量消耗网络带宽和电池。 2）SMS(Push)：在Android平台上，你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图。这是一个不错的想法，我就见过采用这个方案的应用程序。这个方案的好处是，可以实现完全的实时操作。但是问题是这个方案的成本相对比较高，你很难找到免费的短消息发送网关，关于这个方案的实现。 3）持久连接(Push)：这个方案可以解决由轮询带来的性能问题，但是还是会消耗手机的电池。Apple的推送服务之所以工作的很好，是因为每一台手机仅仅保持一个与服务器之间的连接，事实上C2DM也是这么工作的。不过这个方案也存在不足，就是我们很难在手机上实现一个可靠的服务。Android操作系统允许在低内存情况下杀死系统服务，所以你的通知服务很可能被操作系统Kill掉了。 &#8195;&#8195;前两个方案存在明显的不足，第三个方案也有不足，不过我们可以通过良好的设计来弥补，以便于让该方案可以有效的工作。毕竟，我们要知道GMail，GTalk以及GoogleVoice都可以实现实时更新的。 采用MQTT协议实现Android推送 &#8195;&#8195;MQTT是一个轻量级的消息发布/订阅协议，它是实现基于手机客户端的消息推送服务器的理想解决方案。 wmqtt.jar 是IBM提供的MQTT协议的实现。你可以从如下站点下载它。你可以将该jar包加入你自己的Android应用程序中。 Really Small Message Broker (RSMB) ，他是一个简单的MQTT代理，同样由IBM提供。缺省打开1883端口，应用程序当中，它负责接收来自服务器的消息并将其转发给指定的移动设备。 采用XMPP协议实现Android推送 &#8195;&#8195;这是我在项目中采用的方案。事实上Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。 &#8195;&#8195;XMPP(可扩展通讯和表示协议)是基于可扩展标记语言（XML）的协议，它用于即时消息（IM）以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。 &#8195;&#8195;androidpn是一个基于XMPP协议的java开源Android push notification实现。它包含了完整的客户端和服务器端。经过源代码研究我发现，该服务器端基本是在另外一个开源工程openfire基础上修改实现的，不过比较郁闷的是androidpn的文档是由韩语写的，所以整个研究过程基本都是读源码。 &#8195;&#8195;androidpn客户端需要用到一个基于java的开源XMPP协议包asmack，这个包同样也是基于openfire下的另外一个开源项目smack，不过我们不需要自己编译，可以直接把androidpn客户端里面的asmack.jar拿来使用。客户端利用asmack中提供的XMPPConnection类与服务器建立持久连接，并通过该连接进行用户注册和登录认证，同样也是通过这条连接，接收服务器发送的通知。 &#8195;&#8195;androidpn服务器端也是java语言实现的，基于openfire开源工程，不过它的Web部分采用的是spring框架，这一点与openfire是不同的。Androidpn服务器包含两个部分，一个是侦听在5222端口上的XMPP服务，负责与客户端的XMPPConnection类进行通信，作用是用户注册和身份认证，并发送推送通知消息。另外一部分是Web服务器，采用一个轻量级的HTTP服务器，负责接收用户的Web请求。服务器架构如下： &#8195;&#8195;最上层包含四个组成部分，分别是SessionManager，Auth Manager，PresenceManager以及Notification Manager。SessionManager负责管理客户端与服务器之间的会话，Auth Manager负责客户端用户认证管理，Presence Manager负责管理客户端用户的登录状态，NotificationManager负责实现服务器向客户端推送消息功能。 &#8195;&#8195;这个解决方案的最大优势就是简单，我们不需要象C2DM那样依赖操作系统版本，也不会担心某一天Google服务器不可用。利用XMPP协议我们还可以进一步的对协议进行扩展，实现更为完善的功能。 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>推送方式的基础知识</strong><br />
&emsp;&emsp;当我们开发需要和服务器交互的应用程序时，基本上都需要获取服务器端的数据，比如《地震及时通》就需要及时获取服务器上最新的地震信息。要获取服务器上不定时更新的信息一般来说有两种方法，第一种是客户端使用Pull（拉）的方式，隔一段时间就去服务器上获取信息，看是否有更新的信息出现。第二种就是服务器使用Push（推送）的方式，当服务器端有新信息了，则把最新的信息Push到客户端上。<br />
&emsp;&emsp;虽然Pull和Push两种方式都能实现获取服务器端更新信息的功能，但是明显来说Push is better than pull。因为<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/pull%e6%96%b9%e5%bc%8f" title="查看 Pull方式 的全部文章" target="_blank">Pull方式</a></span>更费客户端的网络流量，更主要的是费电量。</p>
<p>&emsp;&emsp;在开发Android和iPhone应用程序时，我们往往需要从服务器不定的向手机客户端即时推送各种通知消息，iPhone上已经有了比较简单的和完美的推送通知解决方案，可是Android平台上实现起来却相对比较麻烦，最近利用几天的时间对Android的推送通知服务进行初步的研究。</p>
<p>&emsp;&emsp;在Android手机平台上，Google提供了C2DM（Cloudto Device Messaging）服务，起初我就是准备采用这个服务来实现自己手机上的推送功能。</p>
<p>&emsp;&emsp;Android Cloud to Device Messaging (C2DM)是一个用来帮助开发者从服务器向Android应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制，允许服务器可以通知移动应用程序直接与服务器进行通信，以便于从服务器获取应用程序更新和用户数据。C2DM服务负责处理诸如消息排队等事务并向运行于目标设备上的应用程序分发这些消息。</p>
<p>C2DM操作过程图:<br />
<img src="/wp-content/uploads/2011/09/C2DM.png" alt="" title="C2DM" width="608" height="396" class="alignnone size-full wp-image-793" /><br />
但是经过一番研究发现，这个服务存在很大的问题：</p>
<p>1）C2DM内置于Android的2.2系统上，无法兼容老的1.6到2.1系统;</p>
<p>2）C2DM需要依赖于Google官方提供的C2DM服务器，由于国内的网络环境，这个服务经常不可用，如果想要很好的使用，我们的App Server必须也在国外，这个恐怕不是每个开发者都能够实现的;</p>
<p>&emsp;&emsp;有了上述两个使用上的制约，导致我最终放弃了这个方案，不过我想利用另外一篇文章来详细的介绍C2DM的框架以及客户端和App Server的相应设置方法，可以作为学习与参考之用。</p>
<p>&emsp;&emsp;即然C2DM无法满足我们的要求，那么我们就需要自己来实现Android手机客户端与App Server之间的通信协议，保证在App Server想向指定的Android设备发送消息时，Android设备能够及时的收到。下面我来介绍几种常见的方案：</p>
<p>1）轮询(Pull)：应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达，你必须自己实现与服务器之间的通信，例如消息排队等。而且你还要考虑轮询的频率，如果太慢可能导致某些消息的延迟，如果太快，则会大量消耗网络带宽和电池。</p>
<p>2）SMS(Push)：在Android平台上，你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图。这是一个不错的想法，我就见过采用这个方案的应用程序。这个方案的好处是，可以实现完全的实时操作。但是问题是这个方案的成本相对比较高，你很难找到免费的短消息发送网关，关于这个方案的实现。</p>
<p>3）持久连接(Push)：这个方案可以解决由轮询带来的性能问题，但是还是会消耗手机的电池。Apple的推送服务之所以工作的很好，是因为每一台手机仅仅保持一个与服务器之间的连接，事实上C2DM也是这么工作的。不过这个方案也存在不足，就是我们很难在手机上实现一个可靠的服务。Android操作系统允许在低内存情况下杀死系统服务，所以你的通知服务很可能被操作系统Kill掉了。 </p>
<p>&emsp;&emsp;前两个方案存在明显的不足，第三个方案也有不足，不过我们可以通过良好的设计来弥补，以便于让该方案可以有效的工作。毕竟，我们要知道GMail，GTalk以及GoogleVoice都可以实现实时更新的。</p>
<p><strong>采用MQTT协议实现Android推送</strong><br />
&emsp;&emsp;MQTT是一个轻量级的消息发布/订阅协议，它是实现基于手机客户端的消息推送服务器的理想解决方案。</p>
<p>wmqtt.jar 是IBM提供的MQTT协议的实现。你可以从如下站点下载它。你可以将该jar包加入你自己的Android应用程序中。</p>
<p>Really Small Message Broker (RSMB) ，他是一个简单的MQTT代理，同样由IBM提供。缺省打开1883端口，应用程序当中，它负责接收来自服务器的消息并将其转发给指定的移动设备。</p>
<p><strong>采用XMPP协议实现Android推送</strong><br />
&emsp;&emsp;这是我在项目中采用的方案。事实上Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。<br />
&emsp;&emsp;XMPP(可扩展通讯和表示协议)是基于可扩展标记语言（XML）的协议，它用于即时消息（IM）以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。</p>
<p>&emsp;&emsp;<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/android" title="查看 android 的全部文章" target="_blank">android</a></span>pn是一个基于XMPP协议的java开源Android push notification实现。它包含了完整的客户端和服务器端。经过源代码研究我发现，该服务器端基本是在另外一个开源工程openfire基础上修改实现的，不过比较郁闷的是<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/android" title="查看 android 的全部文章" target="_blank">android</a></span>pn的文档是由韩语写的，所以整个研究过程基本都是读源码。</p>
<p>&emsp;&emsp;<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/android" title="查看 android 的全部文章" target="_blank">android</a></span>pn客户端需要用到一个基于java的开源XMPP协议包asmack，这个包同样也是基于openfire下的另外一个开源项目smack，不过我们不需要自己编译，可以直接把androidpn客户端里面的asmack.jar拿来使用。客户端利用asmack中提供的XMPPConnection类与服务器建立持久连接，并通过该连接进行用户注册和登录认证，同样也是通过这条连接，接收服务器发送的通知。</p>
<p>&emsp;&emsp;androidpn服务器端也是java语言实现的，基于openfire开源工程，不过它的Web部分采用的是spring框架，这一点与openfire是不同的。Androidpn服务器包含两个部分，一个是侦听在5222端口上的XMPP服务，负责与客户端的XMPPConnection类进行通信，作用是用户注册和身份认证，并发送推送通知消息。另外一部分是Web服务器，采用一个轻量级的HTTP服务器，负责接收用户的Web请求。服务器架构如下：</p>
<p>&emsp;&emsp;最上层包含四个组成部分，分别是SessionManager，Auth Manager，PresenceManager以及Notification Manager。SessionManager负责管理客户端与服务器之间的会话，Auth Manager负责客户端用户认证管理，Presence Manager负责管理客户端用户的登录状态，NotificationManager负责实现服务器向客户端推送消息功能。</p>
<p>&emsp;&emsp;这个解决方案的最大优势就是简单，我们不需要象C2DM那样依赖操作系统版本，也不会担心某一天Google服务器不可用。利用XMPP协议我们还可以进一步的对协议进行扩展，实现更为完善的功能。</p>
<p>&emsp;&emsp;采用这个方案，我们目前只能发送文字消息，不过对于推送来说一般足够了，因为我们不能指望通过推送得到所有的数据，一般情况下，利用推送只是告诉手机端服务器发生了某些改变，当客户端收到通知以后，应该主动到服务器获取最新的数据，这样才是推送服务的完整实现。</p>
<p><strong>总结</strong><br />
&emsp;&emsp;现在使用XMPP协议进行推送的方式慢慢多了,主要是原因是比较简单,我后面的博文将会写一些相关androidpn服务器的内容。本人的其中一个软件<足球即时比分>，计划进行升级，从之前的拉(Pull)方式改为 推(Push)方式,我相信这样将会减小服务器的压力，并且比分更新将会更新加及时。</p>
<p>返回 : <a href="/android-dev-summary">Android开发博文汇总</a></p>
<p class="announce">转载请注明转自 : http://www.r-base.net/archives/778</p>]]></content:encoded>
			<wfw:commentRss>http://www.r-base.net/archives/778/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>本博客决定放弃迁移至VPSYou</title>
		<link>http://www.r-base.net/archives/716</link>
		<comments>http://www.r-base.net/archives/716#comments</comments>
		<pubDate>Fri, 26 Aug 2011 17:25:40 +0000</pubDate>
		<dc:creator>么吉</dc:creator>
				<category><![CDATA[网站建设]]></category>
		<category><![CDATA[BurstNET]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[VPSYou]]></category>
		<category><![CDATA[VPS比较]]></category>
		<category><![CDATA[博客建设]]></category>
		<category><![CDATA[博客空间]]></category>

		<guid isPermaLink="false">http://www.r-base.net/?p=716</guid>
		<description><![CDATA[&#8195;&#8195;在前一段经过了一个月的测试与观察,最终决定放弃将本博客迁移到VPSYou.(之前我的博文有这两个VPS的的比较,说了一些想迁移至VPSYou的理由 : [ VPSYou与BurstNet比较 ]) &#8195;&#8195;后来在经过一个月的测试里发现了一些问题,如下 : 1 ) 小量的访问就让CPU占用率很高(用top命令看到负载去到0.4-0.6之间,很多时候去到1.5-2.0,还是小访问量的时候. 如果是BurstNET的话,小于0.1) .并且这种情况是一直都存在的,不是偶尔这样的. 这样根本就无法接受. 从配置看VPSYou的cpu应该是比burstNet要好的. 2 ) VPSYou网速是比较快,ping的反应也比burstNET快些,但是由于CPU负载比较高,最终反应比burstNET还才慢. 总结 : 1 ) 相信是VPSYou的OPENVZ超卖吧,性能根本就跟不上,只是看上去配置好.还好,当时没有直接迁移过去. 2 ) 有可能是OPENVZ的原因,相信用XEN应该会好一些. 这个我就没有考虑试试VPSYou的XEN了,如果了解的朋友可以留言告诉我. 3 ) 由于CPU负载问题,所以就决定不考虑继续使用VPSYou了. 先用回burstNET,当流量上去了,再考虑一些更好的. PS : 现在正在考虑 photonvps,价钱会贵一些,一直评价都不错. 正在用的朋友麻烦留言说一下使用情况吧. PSPS : 先说明,我用的VPSYou是 OPENVZ版本的VZ512. 价格为6美元(42RMB). VPSYou VZ512详细信息 : 硬盘 : 30 GB 独立内存 : 512MB Burst内存: 1024 MB CPU限制MHz : [...]]]></description>
			<content:encoded><![CDATA[<p>&emsp;&emsp;在前一段经过了一个月的测试与观察,最终决定放弃将本博客迁移到<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/vps" title="查看 VPS 的全部文章" target="_blank">VPS</a></span>You.(之前我的博文有这两个<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/vps" title="查看 VPS 的全部文章" target="_blank">VPS</a></span>的的比较,说了一些想迁移至<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/vpsyou" title="查看 VPSYou 的全部文章" target="_blank">VPSYou</a></span>的理由 : [ <a href="/archives/594" target="_blank">VPSYou与BurstNet比较</a> ]) </p>
<p>&emsp;&emsp;后来在经过一个月的测试里发现了一些问题,如下 :<br />
1 ) 小量的访问就让CPU占用率很高(用top命令看到负载去到0.4-0.6之间,很多时候去到1.5-2.0,还是小访问量的时候. 如果是<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/burstnet" title="查看 BurstNET 的全部文章" target="_blank">BurstNET</a></span>的话,小于0.1) .并且这种情况是一直都存在的,不是偶尔这样的. 这样根本就无法接受. 从配置看<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/vpsyou" title="查看 VPSYou 的全部文章" target="_blank">VPSYou</a></span>的cpu应该是比burstNet要好的.<br />
2 ) <span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/vpsyou" title="查看 VPSYou 的全部文章" target="_blank">VPSYou</a></span>网速是比较快,ping的反应也比burstNET快些,但是由于CPU负载比较高,最终反应比burstNET还才慢.</p>
<p><strong>总结 :</strong><br />
1 ) 相信是VPSYou的OPENVZ超卖吧,性能根本就跟不上,只是看上去配置好.还好,当时没有直接迁移过去.<br />
2 ) 有可能是OPENVZ的原因,相信用XEN应该会好一些. 这个我就没有考虑试试VPSYou的XEN了,如果了解的朋友可以留言告诉我.<br />
3 ) 由于CPU负载问题,所以就决定不考虑继续使用VPSYou了. 先用回burstNET,当流量上去了,再考虑一些更好的.</p>
<p><strong>PS : </strong>现在正在考虑 photonvps,价钱会贵一些,一直评价都不错. 正在用的朋友麻烦留言说一下使用情况吧.</p>
<p><strong>PSPS : </strong> 先说明,我用的VPSYou是 OPENVZ版本的VZ512. 价格为6美元(42RMB).<br />
<strong>VPSYou VZ512详细信息 : </strong><br />
硬盘      :       30 GB<br />
独立内存 :       512MB<br />
Burst内存:       1024 MB<br />
CPU限制MHz : 700×4核<br />
IP地址         : 1个<br />
虚拟技术      :  OPENVZ</p>
<p><strong><span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/burstnet" title="查看 BurstNET 的全部文章" target="_blank">BurstNET</a></span> VPS的详细介绍 : </strong><br />
VPS PACKAGE #2<br />
VPS Software: vePortal™ / OpenVZ™<br />
CPU: 1500MHZ GUARANTEED<br />
Memory: 1GB GUARANTEED<br />
Disk Space: 50GB (RAID BASED CONFIG)<br />
Bandwidth: 1000GB/MONTH<br />
IP Addresses: 2 (IPv4) + IPv6<br />
Management: BASIC MANAGED<br />
DDOS Protection: CISCO™ GUARD<br />
FREE SETUP	$9.95/MONTH</p>
<p><strong>相关博文 : </strong><br />
<a href="/archives/594" target="_blank">VPSYou与BurstNet比较</a><br />
<a href="/archives/513" target="_blank">Ronald的天空两个月了</a><br />
<a href="/archives/293" target="_blank">计划将博客从BurstNet迁移到VPSYou</a></p>
<p class="announce">转载请注明转自 : http://www.r-base.net/archives/716</p>]]></content:encoded>
			<wfw:commentRss>http://www.r-base.net/archives/716/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Eclipse最全快捷键</title>
		<link>http://www.r-base.net/archives/749</link>
		<comments>http://www.r-base.net/archives/749#comments</comments>
		<pubDate>Sun, 21 Aug 2011 02:38:16 +0000</pubDate>
		<dc:creator>么吉</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[编程学习]]></category>
		<category><![CDATA[eclipse快捷键]]></category>

		<guid isPermaLink="false">http://www.r-base.net/?p=749</guid>
		<description><![CDATA[常用快捷键: Ctrl+1 快速修复 Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加) Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) Alt+↑ 当前行和上面一行交互位置(同上) Alt+← 前一个编辑的页面 Alt+→ 下一个编辑的页面(当然是针对上面那条来说了) Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性 Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后) Shift+Ctrl+Enter 在当前行插入空行(原理同上条) Ctrl+Q 定位到最后编辑的地方 Ctrl+L 定位在某行 (对于程序超过100的人就有福音了) Ctrl+M 最大化当前的Edit或View (再按则反之) Ctrl+/ 注释当前行,再按则取消注释 Ctrl+O 快速显示 OutLine Ctrl+T 快速显示当前类的继承结构 Ctrl+W 关闭当前Editer Ctrl+K 参照选中的Word快速定位到下一个 Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示) Ctrl+/(小键盘) 折叠当前类中的所有代码 Ctrl+×(小键盘) 展开当前类中的所有代码 Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替) Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作) Ctrl+J [...]]]></description>
			<content:encoded><![CDATA[<p><strong>常用快捷键:</strong><br />
Ctrl+1 快速修复<br />
Ctrl+D: 删除当前行<br />
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)<br />
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)<br />
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)<br />
Alt+↑ 当前行和上面一行交互位置(同上)<br />
Alt+← 前一个编辑的页面<br />
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)<br />
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性<br />
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)<br />
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)<br />
Ctrl+Q 定位到最后编辑的地方<br />
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)<br />
Ctrl+M 最大化当前的Edit或View (再按则反之)<br />
Ctrl+/ 注释当前行,再按则取消注释<br />
Ctrl+O 快速显示 OutLine<br />
Ctrl+T 快速显示当前类的继承结构<br />
Ctrl+W 关闭当前Editer<br />
Ctrl+K 参照选中的Word快速定位到下一个<br />
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)<br />
Ctrl+/(小键盘) 折叠当前类中的所有代码<br />
Ctrl+×(小键盘) 展开当前类中的所有代码<br />
Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)<br />
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)<br />
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)<br />
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)<br />
Ctrl+Shift+F4 关闭所有打开的Editer<br />
Ctrl+Shift+X 把当前选中的文本全部变味小写<br />
Ctrl+Shift+Y 把当前选中的文本全部变为小写<br />
Ctrl+Shift+F 格式化当前代码<br />
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)<br />
Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)<br />
Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)<br />
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)<br />
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)<br />
Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)<br />
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)<br />
Alt+Shift+V 移动函数和变量(不怎么常用)<br />
Alt+Shift+Z 重构的后悔药(Undo)</p>
<p><strong>编辑</strong><br />
全局 查找并替换 Ctrl+F<br />
文本编辑器 查找上一个 Ctrl+Shift+K<br />
文本编辑器 查找下一个 Ctrl+K<br />
全局 撤销 Ctrl+Z<br />
全局 复制 Ctrl+C<br />
全局 恢复上一个选择 Alt+Shift+↓<br />
全局 剪切 Ctrl+X<br />
全局 快速修正 Ctrl1+1<br />
全局 内容辅助 Alt+/<br />
全局 全部选中 Ctrl+A<br />
全局 删除 Delete<br />
全局 上下文信息 Alt+?<br />
Alt+Shift+?<br />
Ctrl+Shift+Space<br />
java编辑器 显示工具提示描述 F2<br />
java编辑器 选择封装元素 Alt+Shift+↑<br />
java编辑器 选择上一个元素 Alt+Shift+←<br />
java编辑器 选择下一个元素 Alt+Shift+→<br />
文本编辑器 增量查找 Ctrl+J<br />
文本编辑器 增量逆向查找 Ctrl+Shift+J<br />
全局 粘贴 Ctrl+V<br />
全局 重做 Ctrl+Y</p>
<p><strong>查看</strong><br />
全局 放大 Ctrl+=<br />
全局 缩小 Ctrl+-</p>
<p><strong>窗口</strong><br />
全局 激活编辑器 F12<br />
全局 切换编辑器 Ctrl+Shift+W<br />
全局 上一个编辑器 Ctrl+Shift+F6<br />
全局 上一个视图 Ctrl+Shift+F7<br />
全局 上一个透视图 Ctrl+Shift+F8<br />
全局 下一个编辑器 Ctrl+F6<br />
全局 下一个视图 Ctrl+F7<br />
全局 下一个透视图 Ctrl+F8<br />
文本编辑器 显示标尺上下文菜单 Ctrl+W<br />
全局 显示视图菜单 Ctrl+F10<br />
全局 显示系统菜单 Alt+-</p>
<p><strong>导航</strong><br />
java编辑器 打开结构 Ctrl+F3<br />
全局 打开类型 Ctrl+Shift+T<br />
全局 打开类型层次结构 F4<br />
全局 打开声明 F3<br />
全局 打开外部javadoc Shift+F2<br />
全局 打开资源 Ctrl+Shift+R<br />
全局 后退历史记录 Alt+←<br />
全局 前进历史记录 Alt+→<br />
全局 上一个 Ctrl+,<br />
全局 下一个 Ctrl+.<br />
java编辑器 显示大纲 Ctrl+O<br />
全局 在层次结构中打开类型 Ctrl+Shift+H<br />
全局 转至匹配的括号 Ctrl+Shift+P<br />
全局 转至上一个编辑位置 Ctrl+Q<br />
java编辑器 转至上一个成员 Ctrl+Shift+↑<br />
java编辑器 转至下一个成员 Ctrl+Shift+↓<br />
文本编辑器 转至行 Ctrl+L</p>
<p><strong>搜索</strong><br />
全局 出现在文件中 Ctrl+Shift+U<br />
全局 打开搜索对话框 Ctrl+H<br />
全局 工作区中的声明 Ctrl+G<br />
全局 工作区中的引用 Ctrl+Shift+G</p>
<p><strong>文本编辑</strong><br />
文本编辑器 改写切换 Insert<br />
文本编辑器 上滚行 Ctrl+↑<br />
文本编辑器 下滚行 Ctrl+↓</p>
<p><strong>文件</strong><br />
全局 保存 Ctrl+X<br />
Ctrl+S<br />
全局 打印 Ctrl+P<br />
全局 关闭 Ctrl+F4<br />
全局 全部保存 Ctrl+Shift+S<br />
全局 全部关闭 Ctrl+Shift+F4<br />
全局 属性 Alt+Enter<br />
全局 新建 Ctrl+N</p>
<p><strong>项目</strong><br />
全局 全部构建 Ctrl+B</p>
<p><strong>源代码</strong><br />
java编辑器 格式化 Ctrl+Shift+F<br />
java编辑器 取消注释 Ctrl+\<br />
java编辑器 注释 Ctrl+/<br />
java编辑器 添加导入 Ctrl+Shift+M<br />
java编辑器 组织导入 Ctrl+Shift+O<br />
java编辑器 使用try/catch块来包围 未设置，太常用了，所以在这里列出,建议自己设置。也可以使用Ctrl+1自动修正。</p>
<p><strong>运行</strong><br />
作用域 功能 快捷键<br />
全局 单步返回 F7<br />
全局 单步跳过 F6<br />
全局 单步跳入 F5<br />
全局 单步跳入选择 Ctrl+F5<br />
全局 调试上次启动 F11<br />
全局 继续 F8<br />
全局 使用过滤器单步执行 Shift+F5<br />
全局 添加/去除断点 Ctrl+Shift+B<br />
全局 显示 Ctrl+D<br />
全局 运行上次启动 Ctrl+F11<br />
全局 运行至行 Ctrl+R<br />
全局 执行 Ctrl+U</p>
<p><strong>重构</strong><br />
作用域 功能 快捷键<br />
全局 撤销重构 Alt+Shift+Z<br />
全局 抽取方法 Alt+Shift+M<br />
全局 抽取局部变量 Alt+Shift+L<br />
全局 内联 Alt+Shift+I<br />
全局 移动 Alt+Shift+V<br />
全局 重命名 Alt+Shift+R<br />
全局 重做 Alt+Shift+Y</p>
<p class="announce">转载请注明转自 : http://www.r-base.net/archives/749</p>]]></content:encoded>
			<wfw:commentRss>http://www.r-base.net/archives/749/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android有未接来电后处理(判断未接来电)</title>
		<link>http://www.r-base.net/archives/736</link>
		<comments>http://www.r-base.net/archives/736#comments</comments>
		<pubDate>Sun, 21 Aug 2011 02:11:09 +0000</pubDate>
		<dc:creator>么吉</dc:creator>
				<category><![CDATA[Android应用]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Android手机状态改变监听]]></category>
		<category><![CDATA[Android未接来电]]></category>
		<category><![CDATA[PhoneStateListener]]></category>
		<category><![CDATA[判断未接来电]]></category>
		<category><![CDATA[未接来电处理]]></category>

		<guid isPermaLink="false">http://www.r-base.net/?p=736</guid>
		<description><![CDATA[&#8195;&#8195;在Android的手机状态中没有未接来电的监听器,所以如果想当手机有未接来电后进行处理,这时候就需要自己对手机的状态判断是未接来电后再进行处理. 实现思路 : 1,继承PhoneStateListener后,当手机的状态改变后将会触发onCallStateChanged.手机的状态分为CALL_STATE_RINGING(响铃中),CALL_STATE_IDLE(空闲),CALL_STATE_OFFHOOK(忙音). 2,记录上一次的手机状态,如果的手机现在的空闲,上次的状态响铃中的话,就可以判断是未接来电. 不足: 1,我现在的处理不能判断出是用户是否主动不接电话. 实现步骤: 1,编写CallListener,处理手机状态变更监听,当状态改变时进行处理。如果想知道如何在Android发送短信可以看我另一博文[ Android中发送短信(sms) ] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 [...]]]></description>
			<content:encoded><![CDATA[<p>&emsp;&emsp;在Android的手机状态中没有未接来电的监听器,所以如果想当手机有未接来电后进行处理,这时候就需要自己对手机的状态判断是未接来电后再进行处理.</p>
<p><strong>实现思路 : </strong><br />
1,继承<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/phonestatelistener" title="查看 PhoneStateListener 的全部文章" target="_blank">PhoneStateListener</a></span>后,当手机的状态改变后将会触发onCallStateChanged.手机的状态分为CALL_STATE_RINGING(响铃中),CALL_STATE_IDLE(空闲),CALL_STATE_OFFHOOK(忙音).<br />
2,记录上一次的手机状态,如果的手机现在的空闲,上次的状态响铃中的话,就可以判断是未接来电.</p>
<p><strong>不足:</strong><br />
1,我现在的处理不能判断出是用户是否主动不接电话.</p>
<p><strong>实现步骤:</strong><br />
1,编写CallListener,处理手机状态变更监听,当状态改变时进行处理。如果想知道如何在Android发送短信可以看我另一博文[ <a href="/archives/719" target="_blank">Android中发送短信(sms)</a> ]</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
</pre></td><td class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">rbase.app.smshelpmate.call.listener</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.text.MessageFormat</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">rbase.app.smshelpmate.Config</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">rbase.app.smshelpmate.R</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">rbase.app.smshelpmate.call.enums.CallStateEnum</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">rbase.app.smshelpmate.forward.ForwardManager</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">rbase.app.smshelpmate.forward.enums.ForwardType</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">rbase.app.smshelpmate.forward.vo.ForwardParam</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;"><span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/android" title="查看 android 的全部文章" target="_blank">android</a></span>.content.Context</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;"><span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/android" title="查看 android 的全部文章" target="_blank">android</a></span>.telephony.<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/phonestatelistener" title="查看 PhoneStateListener 的全部文章" target="_blank">PhoneStateListener</a></span></span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;"><span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/android" title="查看 android 的全部文章" target="_blank">android</a></span>.telephony.TelephonyManager</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.util.Log</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
 * @author www.r-base.net
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CallListener <span style="color: #000000; font-weight: bold;">extends</span> <span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/phonestatelistener" title="查看 PhoneStateListener 的全部文章" target="_blank">PhoneStateListener</a></span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399; font-weight: bold;">String</span> TAG = <span style="color: #0000ff;">&quot;sms&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #006600; font-weight: bold;">int</span> lastetState = TelephonyManager.<span style="color: #006633;">CALL_STATE_IDLE</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 最后的状态</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399; font-weight: bold;">Context</span> context<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> CallListener<span style="color: #009900;">&#40;</span><span style="color: #003399; font-weight: bold;">Context</span> context<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">context</span> = context<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #006600; font-weight: bold;">void</span> onCallStateChanged<span style="color: #009900;">&#40;</span><span style="color: #006600; font-weight: bold;">int</span> state, <span style="color: #003399; font-weight: bold;">String</span> incomingNumber<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		Log.<span style="color: #006633;">v</span><span style="color: #009900;">&#40;</span>TAG, <span style="color: #0000ff;">&quot;CallListener call state changed : &quot;</span> + incomingNumber<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399; font-weight: bold;">String</span> m = <span style="color: #006600; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// 如果当前状态为空闲,上次状态为响铃中的话,则破觚为认为是未接来电</span>
		<span style="color: #000000;  font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>lastetState ==  TelephonyManager.<span style="color: #006633;">CALL_STATE_RINGING</span> 
		        <span style="color: #339933;">&amp;&amp;</span> state == TelephonyManager.<span style="color: #006633;">CALL_STATE_IDLE</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			sendSmgWhenMissedCall<span style="color: #009900;">&#40;</span>incomingNumber<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// 最后的时候改变当前值</span>
		lastetState = state<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #006600; font-weight: bold;">void</span> sendSmgWhenMissedCall<span style="color: #009900;">&#40;</span><span style="color: #003399; font-weight: bold;">String</span> incomingNumber<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	     <span style="color: #666666; font-style: italic;">// ... 进行<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/%e6%9c%aa%e6%8e%a5%e6%9d%a5%e7%94%b5%e5%a4%84%e7%90%86" title="查看 未接来电处理 的全部文章" target="_blank">未接来电处理</a></span>(发短信,发email等等通知)</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>2,编写CallReceiver,注册来电广播接收器。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
</pre></td><td class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">rbase.app.smshelpmate.call.service</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">rbase.app.smshelpmate.Const</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">rbase.app.smshelpmate.call.listener.CallListener</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.BroadcastReceiver</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.Context</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.Intent</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.telephony.PhoneStateListener</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.telephony.TelephonyManager</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.util.Log</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
 * @author www.r-base.net
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CallReceiver <span style="color: #000000; font-weight: bold;">extends</span> BroadcastReceiver<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #006600; font-weight: bold;">void</span> onReceive<span style="color: #009900;">&#40;</span><span style="color: #003399; font-weight: bold;">Context</span> context, Intent intent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		Log.<span style="color: #006633;">i</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;sms&quot;</span>, <span style="color: #0000ff;">&quot;CallReceiver Start...&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		TelephonyManager telephony = <span style="color: #009900;">&#40;</span>TelephonyManager<span style="color: #009900;">&#41;</span> context
				.<span style="color: #006633;">getSystemService</span><span style="color: #009900;">&#40;</span><span style="color: #003399; font-weight: bold;">Context</span>.<span style="color: #006633;">TELEPHONY_SERVICE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		CallListener customPhoneListener = <span style="color: #000000; font-weight: bold;">new</span> CallListener<span style="color: #009900;">&#40;</span>context<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		telephony.<span style="color: #006633;">listen</span><span style="color: #009900;">&#40;</span>customPhoneListener,
				PhoneStateListener.<span style="color: #006633;">LISTEN_CALL_STATE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		Bundle bundle = intent.<span style="color: #006633;">getExtras</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399; font-weight: bold;">String</span> phoneNr = bundle.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;incoming_number&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		Log.<span style="color: #006633;">i</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;sms&quot;</span>, <span style="color: #0000ff;">&quot;CallReceiver Phone Number : &quot;</span> + phoneNr<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>3,在AndroidManifest.xml中的application节点下添加如下代码.进行注册电话状态改变广播接收.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;manifest</span> ...<span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;application</span> ...<span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;receiver</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.call.service.CallReceiver&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter</span> <span style="color: #000066;">android:priority</span>=<span style="color: #ff0000;">&quot;100&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.action.PHONE_STATE&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/receiver<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/manifest<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>4,在AndroidManifest.xml中添加读取手机状态的权限.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-permission</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.permission.READ_PHONE_STATE&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></td></tr></table></div>

<p><strong>总结: </strong><br />
&emsp;&emsp;通过以上的步骤,当手机有未接来电时 sendSmgWhenMissedCall 该方法就会触发,就可以进行相应的处理.本人的其中一个应用(RBase短信助手) 就是用以上的代码实现了当手机有未接来电后可以发短信给指定的手机进行通知. 想了解的朋友可以到这里下载 : <a href="http://www.goapk.com/pkg/rbase.app.smshelpmate" target="_blank">http://www.goapk.com/pkg/rbase.app.smshelpmate</a></p>
<p><strong>相关博文:</strong><br />
<a href="/archives/719" target="_blank">Android中发送短信(sms)</a><br />
<a href="http://www.r-base.net/android-dev-summay" target="_blank">Android文章汇总</a></p>
<p class="announce">转载请注明转自 : http://www.r-base.net/archives/736</p>]]></content:encoded>
			<wfw:commentRss>http://www.r-base.net/archives/736/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android中发送短信(sms)</title>
		<link>http://www.r-base.net/archives/719</link>
		<comments>http://www.r-base.net/archives/719#comments</comments>
		<pubDate>Sat, 20 Aug 2011 16:38:14 +0000</pubDate>
		<dc:creator>么吉</dc:creator>
				<category><![CDATA[Android应用]]></category>
		<category><![CDATA[Android中发sms]]></category>
		<category><![CDATA[android发短信]]></category>
		<category><![CDATA[Android短信转发]]></category>
		<category><![CDATA[sms]]></category>

		<guid isPermaLink="false">http://www.r-base.net/?p=719</guid>
		<description><![CDATA[&#8195;&#8195;分享一下本人中其中一个应用（手机短信转发）的代码，主要是实现短信的发送功能。 &#8195;&#8195;如果想做一些短信相关的应用，以下的代码可能对你有帮助。 相关的软件可以访问我发布在goapk里的页面 : http://www.goapk.com/pkg/rbase.app.smshelpmate 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 [...]]]></description>
			<content:encoded><![CDATA[<p>&emsp;&emsp;分享一下本人中其中一个应用（手机短信转发）的代码，主要是实现短信的发送功能。<br />
&emsp;&emsp;如果想做一些短信相关的应用，以下的代码可能对你有帮助。<br />
相关的软件可以访问我发布在goapk里的页面 : <a href="http://www.goapk.com/pkg/rbase.app.smshelpmate" target ="_blank">http://www.goapk.com/pkg/rbase.app.smshelpmate</a></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</pre></td><td class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">rbase.app.<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/sms" title="查看 sms 的全部文章" target="_blank">sms</a></span>helpmate.<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/sms" title="查看 sms 的全部文章" target="_blank">sms</a></span>.util</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.ArrayList</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">rbase.android.core.util.StringUtils</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">rbase.android.core.util.UIUtil</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">rbase.app.<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/sms" title="查看 sms 的全部文章" target="_blank">sms</a></span>helpmate.R</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.PendingIntent</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.BroadcastReceiver</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.Context</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.Intent</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.IntentFilter</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.telephony.SmsManager</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.util.Log</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
 * SMS 的工具类,主要是发送短信的辅助
 * 
 * @author r-base.net
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SmsUtil <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #006600; font-weight: bold;">void</span> sendSMS<span style="color: #009900;">&#40;</span><span style="color: #003399; font-weight: bold;">Context</span> ctx, <span style="color: #003399; font-weight: bold;">String</span> phoneNumber, <span style="color: #003399; font-weight: bold;">String</span> message<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		sendSMS<span style="color: #009900;">&#40;</span>ctx, phoneNumber, message, <span style="color: #006600; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/**
	 * 发送sms
	 * 
	 * @param ctx Android 的 Context
	 * @param phoneNumber 发送的手机号码
	 * @param message 发送短信的内容
	 * @param toastText 发送后显示的toast内容
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #006600; font-weight: bold;">void</span> sendSMS<span style="color: #009900;">&#40;</span><span style="color: #003399; font-weight: bold;">Context</span> ctx, <span style="color: #003399; font-weight: bold;">String</span> phoneNumber, <span style="color: #003399; font-weight: bold;">String</span> message,<span style="color: #003399; font-weight: bold;">String</span> toastText<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		Log.<span style="color: #006633;">d</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;sms&quot;</span>, <span style="color: #0000ff;">&quot;sending sms&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// 检查手机号和转发内容,主要是检查手机号码与发送内容的合法性</span>
		<span style="color: #000000;  font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>checkMessage<span style="color: #009900;">&#40;</span>ctx, phoneNumber, message<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">return</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// 得到SMS的管理类</span>
		SmsManager smsMgr = SmsManager.<span style="color: #006633;">getDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// 如果大于70个字符需要分割成多条短信发送</span>
		<span style="color: #000000;  font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>message.<span style="color: #006633;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">70</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #003399; font-weight: bold;">ArrayList</span><span style="color: #339933;">&lt;</span><span style="color: #003399; font-weight: bold;">String</span><span style="color: #339933;">&gt;</span> msgs = smsMgr.<span style="color: #006633;">divideMessage</span><span style="color: #009900;">&#40;</span>message<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000;  font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003399; font-weight: bold;">String</span> msg : msgs<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				smsMgr.<span style="color: #006633;">sendTextMessage</span><span style="color: #009900;">&#40;</span>phoneNumber, <span style="color: #006600; font-weight: bold;">null</span>, msg, <span style="color: #006600; font-weight: bold;">null</span>, <span style="color: #006600; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000;  font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			smsMgr.<span style="color: #006633;">sendTextMessage</span><span style="color: #009900;">&#40;</span>phoneNumber, <span style="color: #006600; font-weight: bold;">null</span>, message, <span style="color: #006600; font-weight: bold;">null</span>, <span style="color: #006600; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000000;  font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>toastText == <span style="color: #006600; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			UIUtil.<span style="color: #006633;">showMessage</span><span style="color: #009900;">&#40;</span>ctx, <span style="color: #0000ff;">&quot;forward sms to &quot;</span>+ phoneNumber<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #000000;  font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
			UIUtil.<span style="color: #006633;">showMessage</span><span style="color: #009900;">&#40;</span>ctx, toastText<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// 检查合法性</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #006600; font-weight: bold;">boolean</span> checkMessage<span style="color: #009900;">&#40;</span><span style="color: #003399; font-weight: bold;">Context</span> ctx,<span style="color: #003399; font-weight: bold;">String</span> phoneNumber,<span style="color: #003399; font-weight: bold;">String</span> message<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000;  font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>StringUtils.<span style="color: #006633;">isEmptyTrim</span><span style="color: #009900;">&#40;</span>phoneNumber<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			UIUtil.<span style="color: #006633;">showMessage</span><span style="color: #009900;">&#40;</span>ctx, R.<span style="color: #006633;">string</span>.<span style="color: #006633;">error_forward_phone_is_empty</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			Log.<span style="color: #006633;">d</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;sms&quot;</span>, <span style="color: #0000ff;">&quot;Forward Failure! Forward phone is empty!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #006600; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000000;  font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>StringUtils.<span style="color: #006633;">isEmptyTrim</span><span style="color: #009900;">&#40;</span>message<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			UIUtil.<span style="color: #006633;">showMessage</span><span style="color: #009900;">&#40;</span>ctx, R.<span style="color: #006633;">string</span>.<span style="color: #006633;">error_forward_message_is_empty</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #006600; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #006600; font-weight: bold;">true</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>注：需要添加以下的权限。</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-permission</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.permission.RECEIVE_SMS&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/uses-permission<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-permission</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.permission.SEND_SMS&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/uses-permission<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p class="announce">转载请注明转自 : http://www.r-base.net/archives/719</p>]]></content:encoded>
			<wfw:commentRss>http://www.r-base.net/archives/719/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>郁闷的一天，车被追尾了</title>
		<link>http://www.r-base.net/archives/704</link>
		<comments>http://www.r-base.net/archives/704#comments</comments>
		<pubDate>Sun, 07 Aug 2011 15:12:04 +0000</pubDate>
		<dc:creator>么吉</dc:creator>
				<category><![CDATA[心情]]></category>
		<category><![CDATA[高尔夫安全性]]></category>
		<category><![CDATA[高尔夫被追尾]]></category>

		<guid isPermaLink="false">http://www.r-base.net/?p=704</guid>
		<description><![CDATA[&#8195;&#8195;今天刚买没多久的一辆高尔夫6被追尾了，唉。。。相当的郁闷，提车不到两个星期，才开了1300公里，磨合期都还没有过就要去4S店修了。 &#8195;&#8195;后面追尾的也是一汽大众的迈腾，大众撞大众啊。真是受伤~~ 心里想如果撞的是小日本的车会怎么样呢？呵呵 &#8195;&#8195;虽然说被追尾了，但是还是有一点暗爽，就是后面的迈腾比较严重多了，看来说高尔夫的安全性能很高还真不是吹出来的。。 最后贴几张车被撞后的图.(银色的是我的车) 转载请注明转自 : http://www.r-base.net/archives/704]]></description>
			<content:encoded><![CDATA[<p>&emsp;&emsp;今天刚买没多久的一辆高尔夫6被追尾了，唉。。。相当的郁闷，提车不到两个星期，才开了1300公里，磨合期都还没有过就要去4S店修了。<br />
&emsp;&emsp;后面追尾的也是一汽大众的迈腾，大众撞大众啊。真是受伤~~ 心里想如果撞的是小日本的车会怎么样呢？呵呵<br />
&emsp;&emsp;虽然说被追尾了，但是还是有一点暗爽，就是后面的迈腾比较严重多了，看来说高尔夫的安全性能很高还真不是吹出来的。。</p>
<p>最后贴几张车被撞后的图.(银色的是我的车)</p>
<p><a href="/wp-content/uploads/2011/08/郁闷的一天车被追尾了-1.jpg"><img src="/wp-content/uploads/2011/08/郁闷的一天车被追尾了-1.jpg" alt="" title="郁闷的一天,车被追尾了-1" width="600" height="400" class="alignnone size-full wp-image-706" /></a></p>
<p><a href="/wp-content/uploads/2011/08/郁闷的一天车被追尾了-2.jpg"><img src="/wp-content/uploads/2011/08/郁闷的一天车被追尾了-2.jpg" alt="" title="郁闷的一天,车被追尾了-2" height="400" class="alignnone size-full wp-image-706" /></a></p>
<p><a href="/wp-content/uploads/2011/08/郁闷的一天车被追尾了-3.jpg"><img src="/wp-content/uploads/2011/08/郁闷的一天车被追尾了-3.jpg" alt="" title="郁闷的一天,车被追尾了-3" class="alignnone size-full wp-image-706" /></a></p>
<p><a href="/wp-content/uploads/2011/08/郁闷的一天车被追尾了-4.jpg"><img src="/wp-content/uploads/2011/08/郁闷的一天车被追尾了-4.jpg" alt="" title="郁闷的一天,车被追尾了-4" width="600" height="400" class="alignnone size-full wp-image-706" /></a></p>
<p><a href="/wp-content/uploads/2011/08/郁闷的一天车被追尾了-5.jpg"><img src="/wp-content/uploads/2011/08/郁闷的一天车被追尾了-5.jpg" alt="" title="郁闷的一天,车被追尾了-5" width="600" height="400" class="alignnone size-full wp-image-706" /></a></p>
<p class="announce">转载请注明转自 : http://www.r-base.net/archives/704</p>]]></content:encoded>
			<wfw:commentRss>http://www.r-base.net/archives/704/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ipad游戏推荐-明星鼓手 iSTAR Drummer HD</title>
		<link>http://www.r-base.net/archives/686</link>
		<comments>http://www.r-base.net/archives/686#comments</comments>
		<pubDate>Tue, 02 Aug 2011 16:35:40 +0000</pubDate>
		<dc:creator>么吉</dc:creator>
				<category><![CDATA[ipad]]></category>
		<category><![CDATA[资源分享]]></category>
		<category><![CDATA[ipad游戏]]></category>
		<category><![CDATA[ipad资源]]></category>

		<guid isPermaLink="false">http://www.r-base.net/?p=686</guid>
		<description><![CDATA[游戏介绍 : &#8195;&#8195;iSTAR Drummer HD是一款真真正正的可以打出鼓声的iPad音乐游戏,非常劲爆。我们尽力保留了架子鼓演奏的体验效果。 &#8195;&#8195;游戏中内置了10首免费音乐,风格多样。同时我们为每一首音乐分别配上相应的真实的架子鼓音效。每个音乐的鼓点设置是90%的重现录音棚中的原始打击鼓谱,所以如果你在iSTAR Drummer中敲击正确了,那么你就最接近真正的敲击正确了。音乐难度分为简单、普通和iSTAR。 &#8195;&#8195;STAR ROAD,模拟了一个从濒临解散默默无闻的乐队鼓手,通过参加全球选秀而不断成长成为明星的历程。 &#8195;&#8195;在以后的版本中,我们将会增加更多有趣的功能。音乐商店也正在建设中,到时可以提供更多有趣的更多风格的音乐。 游戏截图 : 游戏下载 : http://u.115.com/file/dngajmuz 转载请注明转自 : http://www.r-base.net/archives/686]]></description>
			<content:encoded><![CDATA[<p>游戏介绍 :<br />
&emsp;&emsp;iSTAR Drummer HD是一款真真正正的可以打出鼓声的iPad音乐游戏,非常劲爆。我们尽力保留了架子鼓演奏的体验效果。<br />
&emsp;&emsp;游戏中内置了10首免费音乐,风格多样。同时我们为每一首音乐分别配上相应的真实的架子鼓音效。每个音乐的鼓点设置是90%的重现录音棚中的原始打击鼓谱,所以如果你在iSTAR Drummer中敲击正确了,那么你就最接近真正的敲击正确了。音乐难度分为简单、普通和iSTAR。<br />
&emsp;&emsp;STAR ROAD,模拟了一个从濒临解散默默无闻的乐队鼓手,通过参加全球选秀而不断成长成为明星的历程。<br />
&emsp;&emsp;在以后的版本中,我们将会增加更多有趣的功能。音乐商店也正在建设中,到时可以提供更多有趣的更多风格的音乐。</p>
<p>游戏截图 :<br />
<a href="/wp-content/uploads/2011/08/明星鼓手-iSTAR-Drummer-HD-1.jpg"><img src="/wp-content/uploads/2011/08/明星鼓手-iSTAR-Drummer-HD-1.jpg" alt="" title="明星鼓手 iSTAR Drummer HD-1" width="480" height="360" class="alignnone size-full wp-image-687" /></a></p>
<p><a href="/wp-content/uploads/2011/08/明星鼓手-iSTAR-Drummer-HD-2.jpg"><img src="/wp-content/uploads/2011/08/明星鼓手-iSTAR-Drummer-HD-2.jpg" alt="" title="明星鼓手 iSTAR Drummer HD-1" width="480" height="360" class="alignnone size-full wp-image-687" /></a></p>
<p><a href="/wp-content/uploads/2011/08/明星鼓手-iSTAR-Drummer-HD-3.jpg"><img src="/wp-content/uploads/2011/08/明星鼓手-iSTAR-Drummer-HD-3.jpg" alt="" title="明星鼓手 iSTAR Drummer HD-1" width="480" height="360" class="alignnone size-full wp-image-687" /></a></p>
<p><a href="/wp-content/uploads/2011/08/明星鼓手-iSTAR-Drummer-HD-4.jpg"><img src="/wp-content/uploads/2011/08/明星鼓手-iSTAR-Drummer-HD-4.jpg" alt="" title="明星鼓手 iSTAR Drummer HD-1" width="480" height="360" class="alignnone size-full wp-image-687" /></a></p>
<p><a href="/wp-content/uploads/2011/08/明星鼓手-iSTAR-Drummer-HD-5.jpg"><img src="/wp-content/uploads/2011/08/明星鼓手-iSTAR-Drummer-HD-5.jpg" alt="" title="明星鼓手 iSTAR Drummer HD-1" width="480" height="360" class="alignnone size-full wp-image-687" /></a></p>
<p>游戏下载 :<br />
<a href="http://u.115.com/file/dngajmuz" target="_blank">http://u.115.com/file/dngajmuz</a></p>
<p class="announce">转载请注明转自 : http://www.r-base.net/archives/686</p>]]></content:encoded>
			<wfw:commentRss>http://www.r-base.net/archives/686/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java7正式版发布</title>
		<link>http://www.r-base.net/archives/656</link>
		<comments>http://www.r-base.net/archives/656#comments</comments>
		<pubDate>Tue, 02 Aug 2011 09:03:54 +0000</pubDate>
		<dc:creator>么吉</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[新闻]]></category>
		<category><![CDATA[java7]]></category>
		<category><![CDATA[Java7新特性]]></category>
		<category><![CDATA[jdk7]]></category>
		<category><![CDATA[JDK7新特性]]></category>

		<guid isPermaLink="false">http://www.r-base.net/?p=656</guid>
		<description><![CDATA[&#8195;&#8195;北京时间7月29日上午消息，甲骨文公司今天宣布了Java SE 7的首个正式版，这也是自2006年12月Sun发布Java SE 6以来的首个重要版本更新。 &#8195;&#8195;Java7的版本是Oracle收购Sun后发布的第一个重要的版本.感觉本人安装了一下,一些logo与配色都有一些小变化. Java 7的下载路径: &#8195;http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html 新特性一览表： 　　Swing 　　新增 JLayer 类，是一个灵活而且功能强大的Swing组件修饰器，使用方法：How to Decorate Components with JLayer. 　　Nimbus Look and Feel 外观从 com.sun.java.swing 包移到 javax.swing 包中，详情：javax.swing.plaf.nimbus. 　　更轻松的重量级和轻量级组件的混合。 　　支持透明窗体以及非矩形窗体的图形界面，请看 How to Create Translucent and Shaped Windows。 　　JColorChooser 类新增 HSV tab. 　　网络 　　新增 URLClassLoader.close 方法，请看 Closing a URLClassLoader. 　　支持 Sockets Direct Protocol (SDP) 提供高性能网络连接，详情请看 Understanding [...]]]></description>
			<content:encoded><![CDATA[<p>&emsp;&emsp;北京时间7月29日上午消息，甲骨文公司今天宣布了Java SE 7的首个正式版，这也是自2006年12月Sun发布Java SE 6以来的首个重要版本更新。<br />
&emsp;&emsp;Java7的版本是Oracle收购Sun后发布的第一个重要的版本.感觉本人安装了一下,一些logo与配色都有一些小变化.</p>
<p><a href="/wp-content/uploads/2011/08/java7_logo.jpg"><img src="/wp-content/uploads/2011/08/java7_logo.jpg" alt="" title="java7_logo" width="373" height="90" class="aligncenter size-full wp-image-659" /></a></p>
<p>Java 7的下载路径:<br />
&emsp;<a href="http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html" target="_blank">http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html</a></p>
<p><b>新特性一览表：</b><br />
　　<b>Swing</b><br />
　　新增 JLayer 类，是一个灵活而且功能强大的Swing组件修饰器，使用方法：How to Decorate Components with JLayer.<br />
　　Nimbus Look and Feel 外观从 com.sun.java.swing 包移到 javax.swing 包中，详情：javax.swing.plaf.nimbus.<br />
　　更轻松的重量级和轻量级组件的混合。<br />
　　支持透明窗体以及非矩形窗体的图形界面，请看 How to Create Translucent and Shaped Windows。<br />
　　JColorChooser 类新增 HSV tab.</p>
<p>　　<b>网络</b><br />
　　新增 URLClassLoader.close 方法，请看 Closing a URLClassLoader.<br />
　　支持 Sockets Direct Protocol (SDP) 提供高性能网络连接，详情请看 Understanding the Sockets Direct Protocol.</p>
<p>　　<b>集合</b><br />
　　新增 TransferQueue 接口，是 BlockingQueue 的改进版，实现类为 LinkedTransferQueue.</p>
<p>　　<b>RIA/发布</b><br />
　　拖拽的小程序使用一个默认或者定制的标题进行修饰，详情：Requesting and Customizing Applet Decoration in Draggable Applets.<br />
　　JNLP 文件做了如下方面的增强，详情请看 JNLP File Syntax:<br />
　　The os attribute in the information and resources elements can now contain specific versions of Windows, such as Windows Vista or Windows 7.<br />
　　Applications can use the install attribute in the shortcut element to specify their their desire to be installed. Installed applications are not removed when the Java Web Start cache is cleared, but can be explicitly removed using the Java Control Panel.<br />
　　Java Web Start applications can be deployed without specifying the codebaseattribute; see Deploying Without Codebase<br />
　　可直接在 HTML 中嵌入 JNLP 文件：Embedding JNLP File in Applet Tag.<br />
　　可在 JavaScript 代码中检查 Applet 是否已经加载完成：Handling Initialization Status With Event Handlers.<br />
　　可在 Applet 从快捷方式启动或者拖出浏览器时对窗口样式和标题进行控制：Requesting and Customizing Applet Decoration in Developing Draggable Applets.</p>
<p>　　<b>XML</b><br />
　　包含 Java API for XML Processing (JAXP) 1.4.5, 支持 Java Architecture for XML Binding(JAXB) 2.2.3, 和 Java API for XML Web Services (JAX-WS) 2.2.4.</p>
<p>　　<b>java.lang 包</b><br />
　　消除了在多线程环境下的非层次话类加载时导致的潜在死锁，详情：Multithreaded Custom Class Loaders in Java SE 7.</p>
<p>　　<b>Java 虚拟机</b><br />
　　支持非 Java 语言: Java SE 7 引入一个新的 JVM 指令用于简化实现动态类型编程语言。<br />
　　Garbage-First Collector 是一个服务器端的垃圾收集器用于替换 Concurrent Mark-Sweep Collector (CMS).<br />
　　提升了 Java HotSpot 虚拟机的性能。</p>
<p>　　<b>Java I/O</b><br />
　　java.nio.file 包以及相关的包 java.nio.file.attribute 提供对文件 I/O 以及访问文件系统的全面支持，请看 File I/O (featuring NIO.2).<br />
　　目录 /sample/nio/chatserver/ 包含使用 java.nio.file 包的演示程序。<br />
　　目录 /demo/nio/zipfs/ 包含 NIO.2 NFS 文件系统的演示程序。</p>
<p>　　<b>安全性</b><br />
　　新的内置对多个基于 ECC 算法(ECDSA/ECDH)的支持，详情请看：Sun PKCS#11 Provider&#8217;s Supported Algorithms in Java PKCS#11 Reference Guide.<br />
　　禁用了一些弱加密算法，详情请看 Appendix D: Disabling Cryptographic Algorithms in Java PKI Programmer&#8217;s Guide and Disabled Cryptographic Algorithms in Java Secure Socket Extension (JSSE) Reference Guide.<br />
　　Java 安全套接字扩展中对 SSL/TLS 的增强。</p>
<p>　　<b>并发</b><br />
　　fork/join 框架，基于 ForkJoinPool 类，是 Executor 接口的实现，设计它用来进行高效的运行大量任务;使用 work-stealing 技术用来保证大量的 worker 线程工作，特别适合多处理器环境，详情请看 Fork/Join。<br />
　　目录/sample/forkjoin/ 包含了 fork/join 框架的演示程序。<br />
　　ThreadLocalRandom 类class 消除了使用伪随机码线程的竞争，请看 Concurrent Random Numbers.<br />
　　Phaser 类是一个新的同步的屏障，与 CyclicBarrier 类似。</p>
<p>　　<b>Java 2D</b><br />
　　一个新的基于 XRender 的 Java 2D 渲染管道支持现在的 X11 桌面，改善了图形性能，请看 System Properties for Java 2D Technology 中的 xrender .<br />
　　JDK 可枚举并显示出已安装的 OpenType/CFF 字体，通过GraphicsEnvironment.getAvailableFontFamilyNames 方法 See Selecting a Font.<br />
　　TextLayout 类支持西藏语脚本。<br />
　　libfontconfig, 是一个字体配置 api ，see Fontconfig.</p>
<p>　　<b>国际化</b><br />
　　支持 Unicode 6.0.0<br />
　　目录 /demo/jfc/Font2DTest/ 包含 Unicode 6.0 的演示程序。<br />
　　Java SE 7 可容纳在 ISO 4217 中新的货币，详情请看 Currency 类。</p>
<p>　　<b>Java 编程语言特性</b><br />
　　· 二进制数字表达方式<br />
　　· 使用下划线对数字进行分隔表达，例如 1_322_222<br />
　　· switch 语句支持字符串变量<br />
　　· 泛型实例创建的类型推断<br />
　　· 使用可变参数时，提升编译器的警告和错误信息<br />
　　· try-with-resources 语句<br />
　　· 同时捕获多个异常处理<br />
　　· JDBC 4.1<br />
　　· 支持使用 try-with-resources 语句进行自动的资源释放，包括连接、语句和结果集<br />
　　· 支持 RowSet 1.1</p>
<p class="announce">转载请注明转自 : http://www.r-base.net/archives/656</p>]]></content:encoded>
			<wfw:commentRss>http://www.r-base.net/archives/656/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DbVisualizer 8.0.1 绿色版</title>
		<link>http://www.r-base.net/archives/662</link>
		<comments>http://www.r-base.net/archives/662#comments</comments>
		<pubDate>Tue, 02 Aug 2011 08:41:40 +0000</pubDate>
		<dc:creator>么吉</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[资源分享]]></category>
		<category><![CDATA[DbVisualizer]]></category>
		<category><![CDATA[DbVisualizer破解版]]></category>
		<category><![CDATA[DbVisualizer绿色版]]></category>
		<category><![CDATA[Dbvis破解版]]></category>
		<category><![CDATA[Dbvis绿色版]]></category>

		<guid isPermaLink="false">http://www.r-base.net/?p=662</guid>
		<description><![CDATA[&#8195;&#8195;DbVisualizer的介绍我就不多说了,可以查看我之前的博文(可以查看最后的相关博文). 本人的其中一编博文也介绍了Dbvis的破解.为了方便大家,本人破解了并做了一些小修改 修改如下: 1,添加了一些 jdbc(DB2 For AS400,informix) 2,修改了sqlserver 的驱动说明,改为(SQLERVER 2000/2005/2008),并使用最新的驱动. 3,修改了SQL提示的快捷键(将之前的Ctrl + Space 改为 Alt + / 和Alt + .),方便习惯用Eclipse的朋友. 4,自带JDK1.6.0_20,添加批处理文件来启动Dbvis 注意 : 本程序在32位的WinXP测试过,其它的没有测试 &#8195;&#8195;以下链接是我整理出来的绿色版本,下载后解压再执行 &#8220;启动dbvis(自带JDK).bat&#8221; 即可。( 不要破解在有中文的目录中,建议解压到根目录,如d:\ )。 DbVisualizer 8.0.1 绿色版下载地址 : DbVisualizer 8.0.1 绿色版 相关博文: 通用数据库管理工具-Dbvis DbVisualizer 8.0.1 破解版 sqlite管理工具-Dbvis 转载请注明转自 : http://www.r-base.net/archives/662]]></description>
			<content:encoded><![CDATA[<p>&emsp;&emsp;<span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/dbvisualizer" title="查看 DbVisualizer 的全部文章" target="_blank">DbVisualizer</a></span>的介绍我就不多说了,可以查看我之前的博文(可以查看最后的相关博文). 本人的其中一编博文也介绍了Dbvis的破解.为了方便大家,本人破解了并做了一些小修改</p>
<p>修改如下:<br />
1,添加了一些 jdbc(DB2 For AS400,informix)<br />
2,修改了sqlserver 的驱动说明,改为(SQLERVER 2000/2005/2008),并使用最新的驱动.<br />
3,修改了SQL提示的快捷键(将之前的Ctrl + Space 改为 Alt + / 和Alt + .),方便习惯用Eclipse的朋友.<br />
4,自带JDK1.6.0_20,添加批处理文件来启动Dbvis</p>
<p><strong>注意 : 本程序在32位的WinXP测试过,其它的没有测试</strong></p>
<p>&emsp;&emsp;以下链接是我整理出来的绿色版本,下载后解压再执行 &#8220;启动dbvis(自带JDK).bat&#8221; 即可。( 不要破解在有中文的目录中,建议解压到根目录,如d:\ )。</p>
<p><span class='wp_keywordlink_affiliate'><a href="http://www.r-base.net/archives/tag/dbvisualizer" title="查看 DbVisualizer 的全部文章" target="_blank">DbVisualizer</a></span> 8.0.1 绿色版下载地址 : <a href="http://u.115.com/file/aq687055" target="_blank">DbVisualizer 8.0.1 绿色版</a></p>
<p>相关博文:<br />
<a href="/archives/64" target="_blank">通用数据库管理工具-Dbvis</a><br />
<a href="/archives/634" target="_blank">DbVisualizer 8.0.1 破解版</a><br />
<a href="/archives/167" target="_blank">sqlite管理工具-Dbvis</a></p>
<p class="announce">转载请注明转自 : http://www.r-base.net/archives/662</p>]]></content:encoded>
			<wfw:commentRss>http://www.r-base.net/archives/662/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

