<?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>于洋博客</title>
	<atom:link href="http://www.yuyangblog.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yuyangblog.com</link>
	<description>互联网点滴记忆</description>
	<lastBuildDate>Tue, 21 Feb 2012 17:33:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Android开发集成广告时请注意隐私权限设定</title>
		<link>http://www.yuyangblog.com/2012/02/android%e5%bc%80%e5%8f%91%e9%9b%86%e6%88%90%e5%b9%bf%e5%91%8a%e6%97%b6%e8%af%b7%e6%b3%a8%e6%84%8f%e9%9a%90%e7%a7%81%e6%9d%83%e9%99%90%e8%ae%be%e5%ae%9a/</link>
		<comments>http://www.yuyangblog.com/2012/02/android%e5%bc%80%e5%8f%91%e9%9b%86%e6%88%90%e5%b9%bf%e5%91%8a%e6%97%b6%e8%af%b7%e6%b3%a8%e6%84%8f%e9%9a%90%e7%a7%81%e6%9d%83%e9%99%90%e8%ae%be%e5%ae%9a/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 01:59:02 +0000</pubDate>
		<dc:creator>于洋</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.yuyangblog.com/?p=2361</guid>
		<description><![CDATA[我为Android写二手房税费计算器软件时，引入了一个哇棒的广告系统。它提供了一个很简单的接入文档，约10分钟就植入了广告，我想其他的广告商也应该都大同小异。 但是软件发布到安智市场后，我下载回来用豌豆荚安装的时候，发现了一个敏感的问题，如下图所示。 他提示此应用有权限进行以下操作： 读取短信或彩信 允许应用程序读取您的手机或 SIM 卡中存储的短信。恶意应用程序可借此读取您的机密信息。 读取联系人数据 允许应用程序读取您手机上存储的所有联系人（地址）数据。恶意应用程序可借此将您的数据发送给其他人。 （基于网络的）粗略位置 访问粗略的位置源（例如蜂窝网络数据库）以确定手机的大体位置（如果可以）。恶意应用程序可借此确定您所处的大体位置。 读取联系人数据 允许应用程序读取您手机上存储的所有联系人（地址）数据。恶意应用程序可借此将您的数据发送给其他人。 读取手机状态和身份 允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号，是否正在通话，以及对方的号码等。 而实际上，我这个软件根本就不需要这些权限，无端端还有了窃取隐私之嫌，我想因为这个原因选择不安装我软件的用户应该也不在少数。错不在广告商的接入文档，他把所有的配置都列举出来而已。真正关心这个问题的应该是程序员本身，一定要慎重把不需要的权限申请去掉。 修改后的权限设置如下： 我曾经尝试把读取话机状态的权限android.permission.READ_PHONE_STATE也关闭掉，但是这会引起程序崩溃，引起崩溃的堆栈显示是哇棒的SDK对此有需求，我已经发邮件反馈此情况，希望能够得到解决。 02-21 10:25:34.581: D/AndroidRuntime(26399): Shutting down VM 02-21 10:25:34.581: W/dalvikvm(26399): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0) 02-21 10:25:34.591: E/AndroidRuntime(26399): FATAL EXCEPTION: main 02-21 10:25:34.591: E/AndroidRuntime(26399): java.lang.RuntimeException: Unable to start activity ComponentInfo{cn.webez.Fat4House/cn.webez.Fat4House.Fat4HouseActivity}: android.view.InflateException: Binary XML file line #8: [...]]]></description>
			<content:encoded><![CDATA[<p>我为Android写<a href="http://www.yuyangblog.com/2012/02/%e4%ba%8c%e6%89%8b%e6%88%bf%e7%a8%8e%e8%b4%b9%e8%ae%a1%e7%ae%97%e5%99%a8/" title="二手房税费计算器" target="_blank">二手房税费计算器</a>软件时，引入了一个<a href="http://www.wooboo.com.cn/" title="哇棒" target="_blank">哇棒</a>的广告系统。它提供了一个很简单的接入文档，约10分钟就植入了广告，我想其他的广告商也应该都大同小异。<br />
但是软件发布到<a href="http://www.anzhi.com/intro.php?softid=145500&#038;auth=1" title="安智市场-二手房税费计算器" target="_blank">安智市场</a>后，我下载回来用豌豆荚安装的时候，发现了一个敏感的问题，如下图所示。<br />
<a href="http://www.yuyangblog.com/wp-content/uploads/2012/02/install-warning.png"><img src="http://www.yuyangblog.com/wp-content/uploads/2012/02/install-warning.png" alt="" title="安装隐私警告" width="567" height="472" class="alignnone size-full wp-image-2367" /></a><br />
他提示此应用有权限进行以下操作：<br />
读取短信或彩信<br />
允许应用程序读取您的手机或 SIM 卡中存储的短信。恶意应用程序可借此读取您的机密信息。<br />
读取联系人数据<br />
允许应用程序读取您手机上存储的所有联系人（地址）数据。恶意应用程序可借此将您的数据发送给其他人。<br />
（基于网络的）粗略位置<br />
访问粗略的位置源（例如蜂窝网络数据库）以确定手机的大体位置（如果可以）。恶意应用程序可借此确定您所处的大体位置。<br />
读取联系人数据<br />
允许应用程序读取您手机上存储的所有联系人（地址）数据。恶意应用程序可借此将您的数据发送给其他人。<br />
读取手机状态和身份<br />
允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号，是否正在通话，以及对方的号码等。</p>
<p>而实际上，我这个软件根本就不需要这些权限，无端端还有了窃取隐私之嫌，我想因为这个原因选择不安装我软件的用户应该也不在少数。错不在广告商的接入文档，他把所有的配置都列举出来而已。真正关心这个问题的应该是程序员本身，一定要慎重把不需要的权限申请去掉。<br />
修改后的权限设置如下：</p>
<pre name="code" class="c-sharp">
<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <!--<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <!--<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!--<uses-permission android:name="android.permission.READ_SMS" />-->
    <!--<uses-permission android:name="android.permission.READ_CONTACTS" />-->
</pre>
<p>我曾经尝试把读取话机状态的权限android.permission.READ_PHONE_STATE也关闭掉，但是这会引起程序崩溃，引起崩溃的堆栈显示是哇棒的SDK对此有需求，我已经发邮件反馈此情况，希望能够得到解决。</p>
<pre name="code" class="c-sharp">
02-21 10:25:34.581: D/AndroidRuntime(26399): Shutting down VM
02-21 10:25:34.581: W/dalvikvm(26399): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
02-21 10:25:34.591: E/AndroidRuntime(26399): FATAL EXCEPTION: main
02-21 10:25:34.591: E/AndroidRuntime(26399): java.lang.RuntimeException: Unable to start activity ComponentInfo{cn.webez.Fat4House/cn.webez.Fat4House.Fat4HouseActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class com.wooboo.adlib_android.WoobooAdView
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1872)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.app.ActivityThread.access$1500(ActivityThread.java:135)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.os.Handler.dispatchMessage(Handler.java:99)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.os.Looper.loop(Looper.java:150)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.app.ActivityThread.main(ActivityThread.java:4385)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at java.lang.reflect.Method.invokeNative(Native Method)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at java.lang.reflect.Method.invoke(Method.java:507)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at dalvik.system.NativeStart.main(Native Method)
02-21 10:25:34.591: E/AndroidRuntime(26399): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.wooboo.adlib_android.WoobooAdView
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.view.LayoutInflater.createView(LayoutInflater.java:518)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:250)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.app.Activity.setContentView(Activity.java:1742)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at cn.webez.Fat4House.Fat4HouseActivity.onCreate(Fat4HouseActivity.java:60)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1836)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	... 11 more
02-21 10:25:34.591: E/AndroidRuntime(26399): Caused by: java.lang.reflect.InvocationTargetException
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at java.lang.reflect.Constructor.constructNative(Native Method)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.view.LayoutInflater.createView(LayoutInflater.java:505)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	... 21 more
02-21 10:25:34.591: E/AndroidRuntime(26399): Caused by: java.lang.SecurityException: Requires READ_PHONE_STATE: Neither user 10112 nor current process has android.permission.READ_PHONE_STATE.
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.os.Parcel.readException(Parcel.java:1322)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.os.Parcel.readException(Parcel.java:1276)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at com.android.internal.telephony.IPhoneSubInfo$Stub$Proxy.getIccSerialNumber(IPhoneSubInfo.java:307)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at android.telephony.TelephonyManager.getSimSerialNumber(TelephonyManager.java:723)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at com.wooboo.adlib_android.o.k(o.java)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at com.wooboo.adlib_android.o.g(o.java)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at com.wooboo.adlib_android.WoobooAdView.<init>(WoobooAdView.java)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at com.wooboo.adlib_android.WoobooAdView.<init>(WoobooAdView.java)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	at com.wooboo.adlib_android.WoobooAdView.<init>(WoobooAdView.java)
02-21 10:25:34.591: E/AndroidRuntime(26399): 	... 24 more
</pre>
<p>最新更新，客服反馈很快，如下：<br />
“如果不加那个权限的话，你的程序嵌入不了任何一家广告公司的广告。这个是我们统计数据必须要用的。我们写的权限都是要加的，去掉了，广告肯定会出现问题照成经济损失。”<br />
原来是防范作弊的，明白了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyangblog.com/2012/02/android%e5%bc%80%e5%8f%91%e9%9b%86%e6%88%90%e5%b9%bf%e5%91%8a%e6%97%b6%e8%af%b7%e6%b3%a8%e6%84%8f%e9%9a%90%e7%a7%81%e6%9d%83%e9%99%90%e8%ae%be%e5%ae%9a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>二手房税费计算器</title>
		<link>http://www.yuyangblog.com/2012/02/%e4%ba%8c%e6%89%8b%e6%88%bf%e7%a8%8e%e8%b4%b9%e8%ae%a1%e7%ae%97%e5%99%a8/</link>
		<comments>http://www.yuyangblog.com/2012/02/%e4%ba%8c%e6%89%8b%e6%88%bf%e7%a8%8e%e8%b4%b9%e8%ae%a1%e7%ae%97%e5%99%a8/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 01:29:22 +0000</pubDate>
		<dc:creator>于洋</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.yuyangblog.com/?p=2358</guid>
		<description><![CDATA[2012年回到合肥，这次准备安心在合肥生活了。首要事是要去换套房子，于是自己写了个二手房税费计算器来计算那些杂七杂八的税，很沉痛的说，税有点重。 现在卖房的都是净得，有需要买房的同学可以手持此宝，仔细算下自己的总支出。]]></description>
			<content:encoded><![CDATA[<p>2012年回到合肥，这次准备安心在合肥生活了。首要事是要去换套房子，于是自己写了个<a href="http://www.anzhi.com/intro.php?softid=146613&#038;auth=1" title="二手房税费计算器" target="_blank">二手房税费计算器</a>来计算那些杂七杂八的税，很沉痛的说，税有点重。<br />
<img src="http://apk.goapk.com/thumb/201202/20/cn.webez.Fat4House_48487500_0.png" alt="某套意向房的价格" /><img src="http://apk.goapk.com/thumb/201202/20/cn.webez.Fat4House_53429300_1.png" alt="二手房交易产生的各种税费" /><br />
现在卖房的都是净得，有需要买房的同学可以手持此宝，仔细算下自己的总支出。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyangblog.com/2012/02/%e4%ba%8c%e6%89%8b%e6%88%bf%e7%a8%8e%e8%b4%b9%e8%ae%a1%e7%ae%97%e5%99%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Shell脚本获取所有WordPress Themes</title>
		<link>http://www.yuyangblog.com/2012/01/php-shell%e8%84%9a%e6%9c%ac%e8%8e%b7%e5%8f%96%e6%89%80%e6%9c%89wordpress-themes/</link>
		<comments>http://www.yuyangblog.com/2012/01/php-shell%e8%84%9a%e6%9c%ac%e8%8e%b7%e5%8f%96%e6%89%80%e6%9c%89wordpress-themes/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 15:15:50 +0000</pubDate>
		<dc:creator>于洋</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.yuyangblog.com/?p=2351</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yuyangblog.com/wp-content/uploads/2012/01/getWordPressThemes.png"><img src="http://www.yuyangblog.com/wp-content/uploads/2012/01/getWordPressThemes.png" alt="" title="getWordPressThemes" width="688" height="397" class="alignnone size-full wp-image-2355" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyangblog.com/2012/01/php-shell%e8%84%9a%e6%9c%ac%e8%8e%b7%e5%8f%96%e6%89%80%e6%9c%89wordpress-themes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>重置忘记的MYSQL密码</title>
		<link>http://www.yuyangblog.com/2011/11/%e9%87%8d%e7%bd%ae%e5%bf%98%e8%ae%b0%e7%9a%84mysql%e5%af%86%e7%a0%81/</link>
		<comments>http://www.yuyangblog.com/2011/11/%e9%87%8d%e7%bd%ae%e5%bf%98%e8%ae%b0%e7%9a%84mysql%e5%af%86%e7%a0%81/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 14:39:23 +0000</pubDate>
		<dc:creator>于洋</dc:creator>
				<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://www.yuyangblog.com/?p=2347</guid>
		<description><![CDATA[[root@jk ~]# service mysqld stop Stopping MySQL: [ OK ] [root@jk ~]# mysqld_safe --skip-grant-tables --skip-networking &#038; [1] 24688 [root@jk ~]# Starting mysqld daemon with databases from /var/lib/mysql [root@jk ~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 Server version: 5.0.91-log Source distribution Type 'help;' or [...]]]></description>
			<content:encoded><![CDATA[<p>[root@jk ~]# service mysqld stop<br />
Stopping MySQL:                                            [  OK  ]<br />
[root@jk ~]# mysqld_safe --skip-grant-tables --skip-networking &#038;<br />
[1] 24688<br />
[root@jk ~]# Starting mysqld daemon with databases from /var/lib/mysql</p>
<p>[root@jk ~]# mysql<br />
Welcome to the MySQL monitor.  Commands end with ; or \g.<br />
Your MySQL connection id is 13<br />
Server version: 5.0.91-log Source distribution</p>
<p>Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.</p>
<p>mysql> use mysql<br />
Reading table information for completion of table and column names<br />
You can turn off this feature to get a quicker startup with -A</p>
<p>Database changed<br />
mysql> update user set password=password('******') where user='root';<br />
Query OK, 0 rows affected (0.00 sec)<br />
Rows matched: 3  Changed: 0  Warnings: 0</p>
<p>mysql> quit<br />
Bye<br />
[root@jk ~]# service mysqld restart<br />
STOPPING server from pid file /var/run/mysqld/mysqld.pid<br />
111123 22:38:01  mysqld ended</p>
<p>Stopping MySQL:                                            [  OK  ]<br />
Starting MySQL:                                            [  OK  ]<br />
[root@jk ~]# </p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyangblog.com/2011/11/%e9%87%8d%e7%bd%ae%e5%bf%98%e8%ae%b0%e7%9a%84mysql%e5%af%86%e7%a0%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>死于Order By Rand()</title>
		<link>http://www.yuyangblog.com/2011/11/%e6%ad%bb%e4%ba%8eorder-by-rand/</link>
		<comments>http://www.yuyangblog.com/2011/11/%e6%ad%bb%e4%ba%8eorder-by-rand/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 09:59:58 +0000</pubDate>
		<dc:creator>于洋</dc:creator>
				<category><![CDATA[Lamp]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://www.yuyangblog.com/?p=2339</guid>
		<description><![CDATA[我的某个项目里有需求从N个项目里随机抽取M个，这里我用到了Order By Rand()。 开始运作的挺好，工作表的记录数在几千左右，响应时间都马马虎虎过得去。 后来我们添加了一个功能，建了一个新表，这个表的记录会持续增加。累积了一段时间灾难爆发了，应用连接不上数据库，用mysql console，show processlist看到这种查询竟然要几秒钟。Order By Rand()用在大量记录的表上真是个灾难，而且会越来越慢。 网上搜索了一下方法，在min(id) max(id)之间生成一个随机数，然后选择大于等于这个id的M个记录即可。 SELECT * FROM `centences` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `centences`)-(SELECT MIN(id) FROM `centences`))+(SELECT MIN(id) FROM `centences`)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1; 经过修改，问题解决。不过这个解决方案有个缺陷，假设不是LIMIT 1，会有几率导致结果比预想的少一点，这种时候就需要靠程序判断去弥补了。 另外一个问题，就是取到的是连续的记录，这个不满足我们的应用。这里依然采用循环M次的方法，每次取1。虽然执行的语句多了，但是总体执行时间还是比Order By Rand要节省很多。]]></description>
			<content:encoded><![CDATA[<p>我的某个项目里有需求从N个项目里随机抽取M个，这里我用到了Order By Rand()。<br />
开始运作的挺好，工作表的记录数在几千左右，响应时间都马马虎虎过得去。<br />
后来我们添加了一个功能，建了一个新表，这个表的记录会持续增加。累积了一段时间灾难爆发了，应用连接不上数据库，用mysql console，show processlist看到这种查询竟然要几秒钟。Order By Rand()用在大量记录的表上真是个灾难，而且会越来越慢。</p>
<p>网上搜索了一下方法，在min(id) max(id)之间生成一个随机数，然后选择大于等于这个id的M个记录即可。<br />
SELECT * FROM `centences` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `centences`)-(SELECT MIN(id) FROM `centences`))+(SELECT MIN(id) FROM `centences`)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1;</p>
<p>经过修改，问题解决。不过这个解决方案有个缺陷，假设不是LIMIT 1，会有几率导致结果比预想的少一点，这种时候就需要靠程序判断去弥补了。</p>
<p>另外一个问题，就是取到的是连续的记录，这个不满足我们的应用。这里依然采用循环M次的方法，每次取1。虽然执行的语句多了，但是总体执行时间还是比Order By Rand要节省很多。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyangblog.com/2011/11/%e6%ad%bb%e4%ba%8eorder-by-rand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>将LAMPP中的BIN目录加入PATH</title>
		<link>http://www.yuyangblog.com/2011/10/%e5%b0%86lampp%e4%b8%ad%e7%9a%84bin%e7%9b%ae%e5%bd%95%e5%8a%a0%e5%85%a5path/</link>
		<comments>http://www.yuyangblog.com/2011/10/%e5%b0%86lampp%e4%b8%ad%e7%9a%84bin%e7%9b%ae%e5%bd%95%e5%8a%a0%e5%85%a5path/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 00:26:56 +0000</pubDate>
		<dc:creator>于洋</dc:creator>
				<category><![CDATA[Lamp]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.yuyangblog.com/?p=2334</guid>
		<description><![CDATA[临时设置： export PATH=$PATH:/opt/lampp/bin/ 永久设置： 1.打开/root/.bash_profile 2.输入 PATH=$PATH:/opt/lampp/bin export PATH 3.保存、退出 :wq]]></description>
			<content:encoded><![CDATA[<p>临时设置：<br />
export PATH=$PATH:/opt/lampp/bin/</p>
<p>永久设置：<br />
1.打开/root/.bash_profile<br />
2.输入<br />
PATH=$PATH:/opt/lampp/bin<br />
export PATH<br />
3.保存、退出<br />
:wq</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyangblog.com/2011/10/%e5%b0%86lampp%e4%b8%ad%e7%9a%84bin%e7%9b%ae%e5%bd%95%e5%8a%a0%e5%85%a5path/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>开机自动运行LAMPP</title>
		<link>http://www.yuyangblog.com/2011/10/%e5%bc%80%e6%9c%ba%e8%87%aa%e5%8a%a8%e8%bf%90%e8%a1%8clampp/</link>
		<comments>http://www.yuyangblog.com/2011/10/%e5%bc%80%e6%9c%ba%e8%87%aa%e5%8a%a8%e8%bf%90%e8%a1%8clampp/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 00:25:13 +0000</pubDate>
		<dc:creator>于洋</dc:creator>
				<category><![CDATA[Lamp]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.yuyangblog.com/?p=2332</guid>
		<description><![CDATA[為了让LAMPP在每次开机时自动执行，可以将启动的 scripts 加入你的 /etc/rc.d/rc.local 中： 1.编辑rc.local文件 # vi /etc/rc.d/rc.local 2.加入启动的 scripts /opt/lampp/lampp start 3.保存并退出vi :wq]]></description>
			<content:encoded><![CDATA[<p>為了让LAMPP在每次开机时自动执行，可以将启动的 scripts 加入你的 /etc/rc.d/rc.local 中：</p>
<p>1.编辑rc.local文件<br />
# vi /etc/rc.d/rc.local</p>
<p>2.加入启动的 scripts<br />
/opt/lampp/lampp start</p>
<p>3.保存并退出vi<br />
:wq </p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyangblog.com/2011/10/%e5%bc%80%e6%9c%ba%e8%87%aa%e5%8a%a8%e8%bf%90%e8%a1%8clampp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>海外电子商务技术潜规则</title>
		<link>http://www.yuyangblog.com/2011/10/%e5%a4%96%e8%b4%b8%e4%b8%9a%e5%8a%a1%e6%bd%9c%e8%a7%84%e5%88%99/</link>
		<comments>http://www.yuyangblog.com/2011/10/%e5%a4%96%e8%b4%b8%e4%b8%9a%e5%8a%a1%e6%bd%9c%e8%a7%84%e5%88%99/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 23:42:01 +0000</pubDate>
		<dc:creator>于洋</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.yuyangblog.com/?p=2329</guid>
		<description><![CDATA[如果你做海外电商，有几个事要铭记于心。 1、服务器要买在国外，再慢不能慢客户。 2、基于第一点，你自己访问自己的网站会很慢。 待续。。。]]></description>
			<content:encoded><![CDATA[<p>如果你做海外电商，有几个事要铭记于心。<br />
1、服务器要买在国外，再慢不能慢客户。<br />
2、基于第一点，你自己访问自己的网站会很慢。<br />
<a href="http://www.yuyangblog.com/wp-content/uploads/2011/10/justpingresult.png"><img src="http://www.yuyangblog.com/wp-content/uploads/2011/10/justpingresult.png" alt="" title="justpingresult" width="599" height="692" class="alignnone size-full wp-image-2330" /></a><br />
待续。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyangblog.com/2011/10/%e5%a4%96%e8%b4%b8%e4%b8%9a%e5%8a%a1%e6%bd%9c%e8%a7%84%e5%88%99/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Godaddy DNS Manager: Not hosted here</title>
		<link>http://www.yuyangblog.com/2011/10/godaddy-dns-manager-not-hosted-here/</link>
		<comments>http://www.yuyangblog.com/2011/10/godaddy-dns-manager-not-hosted-here/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 11:13:41 +0000</pubDate>
		<dc:creator>于洋</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.yuyangblog.com/?p=2320</guid>
		<description><![CDATA[昨天发现一个域名无法解析，错误提示字面的意思是，这个Name Server不在Godaddy。于是发邮件给客服寻求帮助，得到客服的方案是先切换到Parked模式，然后过几分钟就好，网上按错误提示搜索与客服的方案一样，但是经过实验，对我此次遇到的问题无效。 下午接上SKYPE打电话给客服，接电话的兄弟不知道是不是就是回邮件的家伙，指导我又按照默认的方法实验了一次，直到我提出抗议，我说我已经做过Serveral Times，结果都是恢复到错误状态，无效。 最终客服说他会发Ticket给其他部门协助，72小时内解决。 PS: 发现自己越来越无视自己的口语语法错误后，反而比以前句句纠结沟通效果要好：）]]></description>
			<content:encoded><![CDATA[<p>昨天发现一个域名无法解析，错误提示字面的意思是，这个Name Server不在Godaddy。于是发邮件给客服寻求帮助，得到客服的方案是先切换到Parked模式，然后过几分钟就好，网上按错误提示搜索与客服的方案一样，但是经过实验，对我此次遇到的问题无效。</p>
<p>下午接上SKYPE打电话给客服，接电话的兄弟不知道是不是就是回邮件的家伙，指导我又按照默认的方法实验了一次，直到我提出抗议，我说我已经做过Serveral Times，结果都是恢复到错误状态，无效。</p>
<p>最终客服说他会发Ticket给其他部门协助，72小时内解决。</p>
<p>PS:<br />
发现自己越来越无视自己的口语语法错误后，反而比以前句句纠结沟通效果要好：）<br />
<a href="http://www.yuyangblog.com/wp-content/uploads/2011/10/godaddy.png"><img src="http://www.yuyangblog.com/wp-content/uploads/2011/10/godaddy.png" alt="" title="godaddy" width="824" height="681" class="alignnone size-full wp-image-2327" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyangblog.com/2011/10/godaddy-dns-manager-not-hosted-here/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ssh_exchange_identification: Connection closed by remote host</title>
		<link>http://www.yuyangblog.com/2011/09/ssh_exchange_identification-connection-closed-by-remote-host/</link>
		<comments>http://www.yuyangblog.com/2011/09/ssh_exchange_identification-connection-closed-by-remote-host/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 02:07:45 +0000</pubDate>
		<dc:creator>于洋</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.yuyangblog.com/?p=2293</guid>
		<description><![CDATA[重启SSH Server (OpenSSH)即可解决，但是你都登不上去，怎么重启呢。 如果你装了CPANEL，可以登录进WHM重启。 如果你的主板支持Remote Console Redirect，可以直接连进去重启。 最后一个办法，要求机房重新启动服务器。 这个问题没有什么特别的根源，就是SSH SERVER本身运行过久不稳定了。]]></description>
			<content:encoded><![CDATA[<p>重启SSH Server (OpenSSH)即可解决，但是你都登不上去，怎么重启呢。</p>
<p>如果你装了CPANEL，可以登录进WHM重启。</p>
<p>如果你的主板支持Remote Console Redirect，可以直接连进去重启。</p>
<p>最后一个办法，要求机房重新启动服务器。</p>
<p>这个问题没有什么特别的根源，就是SSH SERVER本身运行过久不稳定了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyangblog.com/2011/09/ssh_exchange_identification-connection-closed-by-remote-host/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.yuyangblog.com/feed/ ) in 0.34278 seconds, on Feb 23rd, 2012 at 4:28 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 23rd, 2012 at 5:28 am UTC -->
