<?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>Sphinx 中文站</title>
	<atom:link href="http://www.sphinxsearch.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.sphinxsearch.org</link>
	<description>简单高效的全文搜索引擎</description>
	<lastBuildDate>Fri, 03 Sep 2010 07:47:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>邮件服务器错误代码列表</title>
		<link>http://www.sphinxsearch.org/?p=233</link>
		<comments>http://www.sphinxsearch.org/?p=233#comments</comments>
		<pubDate>Fri, 03 Sep 2010 07:35:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[邮件服务器]]></category>

		<guid isPermaLink="false">http://www.sphinxsearch.org/?p=233</guid>
		<description><![CDATA[类型 错误编号 原因 rbl message 554 外部黑名单external blacklist. rate control messages 554 连接数过多too many connections. 消息过多too many messages. 速率控制rate control. timeout message 421 中断abort. 发件人超时sender timeout no such domain message 550 不存在的域no such domain. 非法域invalid domain. no such user message 550 不存在收件人no such user. 非法收件人invalid recipient. blocked subject message 550 主题非法illegal subject containing “(.*)”. subject. [...]]]></description>
			<content:encoded><![CDATA[<table border="0"  cellspacing="1" cellpadding="2" width="600">
<tbody>
<tr>
<td width="151" valign="top">
<div><strong>类型</strong></div>
</td>
<td width="84" valign="top">
<div><strong>错误编号</strong></div>
</td>
<td width="355" valign="top">
<div><strong>原因</strong></div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>rbl message</div>
</td>
<td width="84" valign="top">
<div>554</div>
</td>
<td width="355" valign="top">
<div>外部黑名单external blacklist.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>rate control messages</div>
</td>
<td width="84" valign="top">
<div>554</div>
</td>
<td width="355" valign="top">
<div>连接数过多too many connections.</div>
<div>消息过多too many messages.</div>
<div>速率控制rate control.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>timeout message</div>
</td>
<td width="84" valign="top">
<div>421</div>
</td>
<td width="355" valign="top">
<div>中断abort.</div>
<div>发件人超时sender timeout</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>no such domain message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>不存在的域no such domain.</div>
<div>非法域invalid domain.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>no such user message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>不存在收件人no such user.</div>
<div>非法收件人invalid recipient.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>blocked subject message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>主题非法illegal subject containing “(.*)”.</div>
<div>subject.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>blocked  body message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>信体非法illegal message body containing “(.*)”</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>blocked ip message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>拒绝发件人主机client host rejected.</div>
<div>client</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>blocked sender message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>拒绝发件人地址sender address rejected.</div>
<div>sender.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>blocked recip message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>收件人地址拒绝recipient address rejected.  recipient.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>no valid recipients message</div>
</td>
<td width="84" valign="top">
<div>554</div>
</td>
<td width="355" valign="top">
<div>不存在的收件人no valid recipients.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>fake domain message</div>
</td>
<td width="84" valign="top">
<div>450</div>
</td>
<td width="355" valign="top">
<div>拒绝发件人地址，域没有找到，虚假发件人域。sender address rejected.  domain not found.  fake sender domain.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>busy message</div>
</td>
<td width="84" valign="top">
<div>451</div>
</td>
<td width="355" valign="top">
<div>系统繁忙中server undergoing.  system busy.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>recipient fqdn required</div>
</td>
<td width="84" valign="top">
<div>504</div>
</td>
<td width="355" valign="top">
<div>收件人需要完整合法的域名，收件人域名必须。recipient needs fully qualified domain.  recipient domain name required.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>sender fqdn（正式域名） required</div>
</td>
<td width="84" valign="top">
<div>504</div>
</td>
<td width="355" valign="top">
<div>发件人需要完整合法的域名，发件人域名必须sender need fully qualified domain.  sender domain name required.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>unsupported error</div>
</td>
<td width="84" valign="top">
<div>555</div>
</td>
<td width="355" valign="top">
<div>无法支持，违反邮件协议（）unsupported.  mail protocol violation (unsupported option).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>mail from error</div>
</td>
<td width="84" valign="top">
<div>501</div>
</td>
<td width="355" valign="top">
<div>违反邮件协议mail protocol violation (mail from command expected).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>mail from error</div>
</td>
<td width="84" valign="top">
<div>501</div>
</td>
<td width="355" valign="top">
<div>mail protocol violation (rcpt to command expected).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>helo required</div>
</td>
<td width="84" valign="top">
<div>503</div>
</td>
<td width="355" valign="top">
<div>违反邮件协议mail protocol violation (helo/ehlo required).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>mail from required</div>
</td>
<td width="84" valign="top">
<div>503</div>
</td>
<td width="355" valign="top">
<div>mail protocol violation (mail command required)</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>nested mail required</div>
</td>
<td width="84" valign="top">
<div>503</div>
</td>
<td width="355" valign="top">
<div>nested mail.  mail protocol violation (multiple mail from commands)</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>bad syntax</div>
</td>
<td width="84" valign="top">
<div>500</div>
</td>
<td width="355" valign="top">
<div>bad syntax.  mail protocol violation (bad syntax).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>unknown command</div>
</td>
<td width="84" valign="top">
<div>502</div>
</td>
<td width="355" valign="top">
<div>mail protocol violation (disconnect, not delivered).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>abort message</div>
</td>
<td width="84" valign="top"></td>
<td width="355" valign="top">
<div>发件人放弃sender abort.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>abort message</div>
</td>
<td width="84" valign="top"></td>
<td width="355" valign="top">
<div>发件人退出sender quit.</div>
</td>
</tr>
<tr>
<td width="151" valign="top"></td>
<td width="84" valign="top"></td>
<td width="355" valign="top"></td>
</tr>
<tr>
<td width="151" valign="top">
<div>rbl message</div>
</td>
<td width="84" valign="top">
<div>554</div>
</td>
<td width="355" valign="top">
<div>外部黑名单external blacklist.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>rate control messages</div>
</td>
<td width="84" valign="top">
<div>554</div>
</td>
<td width="355" valign="top">
<div>连接数过多too many connections.</div>
<div>消息过多too many messages.</div>
<div>速率控制rate control.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>timeout message</div>
</td>
<td width="84" valign="top">
<div>421</div>
</td>
<td width="355" valign="top">
<div>中断abort.</div>
<div>发件人超时sender timeout</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>no such domain message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>不存在的域no such domain.</div>
<div>非法域invalid domain.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>no such user message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>不存在收件人no such user.</div>
<div>非法收件人invalid recipient.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>blocked subject message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>主题非法illegal subject containing “(.*)”.</div>
<div>subject.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>blocked  body message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>信体非法illegal message body containing “(.*)”</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>blocked ip message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>拒绝发件人主机client host rejected.</div>
<div>client</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>blocked sender message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>拒绝发件人地址sender address rejected.</div>
<div>sender.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>blocked recip message</div>
</td>
<td width="84" valign="top">
<div>550</div>
</td>
<td width="355" valign="top">
<div>收件人地址拒绝recipient address rejected.  recipient.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>no valid recipients message</div>
</td>
<td width="84" valign="top">
<div>554</div>
</td>
<td width="355" valign="top">
<div>不存在的收件人no valid recipients.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>fake domain message</div>
</td>
<td width="84" valign="top">
<div>450</div>
</td>
<td width="355" valign="top">
<div>拒绝发件人地址，域没有找到，虚假发件人域。sender address rejected.  domain not found.  fake sender domain.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>busy message</div>
</td>
<td width="84" valign="top">
<div>451</div>
</td>
<td width="355" valign="top">
<div>系统繁忙中server undergoing.  system busy.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>recipient fqdn required</div>
</td>
<td width="84" valign="top">
<div>504</div>
</td>
<td width="355" valign="top">
<div>收件人需要完整合法的域名，收件人域名必须。recipient needs fully qualified domain.  recipient domain name required.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>sender fqdn（正式域名） required</div>
</td>
<td width="84" valign="top">
<div>504</div>
</td>
<td width="355" valign="top">
<div>发件人需要完整合法的域名，发件人域名必须sender need fully qualified domain.  sender domain name required.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>unsupported error</div>
</td>
<td width="84" valign="top">
<div>555</div>
</td>
<td width="355" valign="top">
<div>无法支持，违反邮件协议（）unsupported.  mail protocol violation (unsupported option).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>mail from error</div>
</td>
<td width="84" valign="top">
<div>501</div>
</td>
<td width="355" valign="top">
<div>违反邮件协议mail protocol violation (mail from command expected).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>mail from error</div>
</td>
<td width="84" valign="top">
<div>501</div>
</td>
<td width="355" valign="top">
<div>mail protocol violation (rcpt to command expected).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>helo required</div>
</td>
<td width="84" valign="top">
<div>503</div>
</td>
<td width="355" valign="top">
<div>违反邮件协议mail protocol violation (helo/ehlo required).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>mail from required</div>
</td>
<td width="84" valign="top">
<div>503</div>
</td>
<td width="355" valign="top">
<div>mail protocol violation (mail command required)</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>nested mail required</div>
</td>
<td width="84" valign="top">
<div>503</div>
</td>
<td width="355" valign="top">
<div>nested mail.  mail protocol violation (multiple mail from commands)</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>bad syntax</div>
</td>
<td width="84" valign="top">
<div>500</div>
</td>
<td width="355" valign="top">
<div>bad syntax.  mail protocol violation (bad syntax).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>unknown command</div>
</td>
<td width="84" valign="top">
<div>502</div>
</td>
<td width="355" valign="top">
<div>mail protocol violation (disconnect, not delivered).</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>abort message</div>
</td>
<td width="84" valign="top"></td>
<td width="355" valign="top">
<div>发件人放弃sender abort.</div>
</td>
</tr>
<tr>
<td width="151" valign="top">
<div>abort message</div>
</td>
<td width="84" valign="top"></td>
<td width="355" valign="top">
<div>发件人退出sender quit.</div>
</td>
</tr>
<tr>
<td width="151" valign="top"></td>
<td width="84" valign="top"></td>
<td width="355" valign="top"></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.sphinxsearch.org/?feed=rss2&amp;p=233</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>内核连接数调整</title>
		<link>http://www.sphinxsearch.org/?p=116</link>
		<comments>http://www.sphinxsearch.org/?p=116#comments</comments>
		<pubDate>Wed, 14 Jul 2010 09:12:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.sphinxsearch.org/?p=116</guid>
		<description><![CDATA[系统连接数太多。 发现系统存在大量TIME_WAIT状态的连接，通过调整内核参数解决， vi /etc/sysctl.conf 编辑文件，加入以下内容： net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30 然后执行 /sbin/sysctl -p 让参数生效。 net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时，启用cookies来处理，可防范少量SYN攻击，默认为0，表示关闭； net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接，默认为0，表示关闭； net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收，默认为0，表示关闭。 net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间]]></description>
			<content:encoded><![CDATA[<p>系统连接数太多。</p>
<p>发现系统存在大量TIME_WAIT状态的连接，通过调整内核参数解决，</p>
<div><span style="font-family: 新宋体;">vi /etc/sysctl.conf</span></div>
<div><span style="font-family: 新宋体;"><br />
</span>编辑文件，加入以下内容：<br />
<code><span style="font-family: 新宋体;">net.ipv4.tcp_syncookies  = 1<br />
net.ipv4.tcp_tw_reuse = 1<br />
net.ipv4.tcp_tw_recycle = 1<br />
net.ipv4.tcp_fin_timeout  = 30</span></code></div>
<div>然后执行 <code><span style="font-family: 新宋体;">/sbin/sysctl -p</span></code> 让参数生效。</div>
<div><strong>net.ipv4.tcp_syncookies = 1</strong> 表示开启SYN  Cookies。当出现SYN等待队列溢出时，启用cookies来处理，可防范少量SYN攻击，默认为0，表示关闭；</div>
<div><strong>net.ipv4.tcp_tw_reuse = 1</strong> 表示开启重用。允许将TIME-WAIT  sockets重新用于新的TCP连接，默认为0，表示关闭；</div>
<div><strong>net.ipv4.tcp_tw_recycle = 1</strong> 表示开启TCP连接中TIME-WAIT sockets的快速回收，默认为0，表示关闭。</div>
<div><strong>net.ipv4.tcp_fin_timeout</strong> 修改系統默认的 TIMEOUT 时间</div>
<div><a href="http://www.sphinxsearch.org/wp-content/uploads/2010/09/django学习笔记.txt"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.sphinxsearch.org/?feed=rss2&amp;p=116</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIME类型大全</title>
		<link>http://www.sphinxsearch.org/?p=105</link>
		<comments>http://www.sphinxsearch.org/?p=105#comments</comments>
		<pubDate>Sun, 08 Feb 2009 17:46:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型，当该扩展名文件被访问的时候，浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名，以及一些媒体文件打开方式。 下面列出常用的文件对应的MIME类型： Mime-Types(mime类型) Dateiendung(扩展名) Bedeutung application/msexcel *.xls *.xla Microsoft Excel Dateien application/mshelp *.hlp *.chm Microsoft Windows Hilfe Dateien application/mspowerpoint *.ppt *.ppz *.pps *.pot Microsoft Powerpoint Dateien application/msword *.doc *.dot Microsoft Word Dateien application/octet-stream *.exe exe application/pdf *.pdf Adobe PDF-Dateien application/post****** *.ai *.eps *.ps Adobe Post******-Dateien application/rtf *.rtf Microsoft RTF-Dateien application/x-httpd-php *.php *.phtml PHP-Dateien &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p><font size="2"><strong>MIME类型</strong><font color="#000000">就是设定某种扩展名的文件用一种应用程序来打开的方式类型，当该扩展名文件被访问的时候，浏览器会自动使用指定应用程序来打开。多用于指定一些<span class="blue">客户端自定义的文件名</span>，以及<span class="blue">一些媒体文件打开方式</span>。</font></font></p>
<p><font size="2" color="#000000">下面列出常用的文件对应的MIME类型：</font></p>
<table cellspacing="1" cellpadding="3" border="0">
<tbody>
<tr>
<th bgcolor="#eeeeee" align="left"><font size="2">Mime-Types(mime类型)</font></th>
<th bgcolor="#eeeeee" align="left"><font size="2">Dateiendung(扩展名)</font></th>
<th bgcolor="#eeeeee" align="left"><font size="2">Bedeutung</font></th>
</tr>
<tr>
<td><font size="2">application/msexcel</font></td>
<td><font size="2">*.xls *.xla</font></td>
<td><font size="2">Microsoft Excel Dateien</font></td>
</tr>
<tr>
<td><font size="2">application/mshelp</font></td>
<td><font size="2">*.hlp *.chm</font></td>
<td><font size="2">Microsoft Windows Hilfe Dateien</font></td>
</tr>
<tr>
<td><font size="2">application/mspowerpoint</font></td>
<td><font size="2">*.ppt *.ppz *.pps *.pot</font></td>
<td><font size="2">Microsoft Powerpoint Dateien</font></td>
</tr>
<tr>
<td><font size="2">application/msword</font></td>
<td><font size="2">*.doc *.dot</font></td>
<td><font size="2">Microsoft Word Dateien</font></td>
</tr>
<tr>
<td>
<p class="lastInCell">application/octet-stream</p>
</td>
<td>*.exe</td>
<td>exe</td>
</tr>
<tr>
<td><font size="2">application/pdf</font></td>
<td><font size="2">*.pdf</font></td>
<td><font size="2">Adobe PDF-Dateien</font></td>
</tr>
<tr>
<td><font size="2">application/post******</font></td>
<td><font size="2">*.ai *.eps *.ps</font></td>
<td><font size="2">Adobe Post******-Dateien</font></td>
</tr>
<tr>
<td><font size="2">application/rtf</font></td>
<td><font size="2">*.rtf</font></td>
<td><font size="2">Microsoft RTF-Dateien</font></td>
</tr>
<tr>
<td><font size="2">application/x-httpd-php</font></td>
<td><font size="2">*.php *.phtml</font></td>
<td><font size="2">PHP-Dateien</font></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
<table cellspacing="1" cellpadding="3" border="0">
<tbody>
<tr>
<td><font size="2">application/x-java******</font></td>
<td><font size="2">*.js</font></td>
<td><font size="2">serverseitige Java******-Dateien</font></td>
</tr>
<tr>
<td><font size="2">application/x-shockwave-flash</font></td>
<td><font size="2">*.swf *.cab</font></td>
<td><font size="2">Flash Shockwave-Dateien</font></td>
</tr>
<tr>
<td><font size="2">application/zip</font></td>
<td><font size="2">*.zip</font></td>
<td><font size="2">ZIP-Archivdateien</font></td>
</tr>
<tr>
<td><font size="2">audio/basic</font></td>
<td><font size="2">*.au *.snd</font></td>
<td><font size="2">Sound-Dateien</font></td>
</tr>
<tr>
<td>audio/mpeg</td>
<td>*.mp3</td>
<td><font size="2">MPEG-Dateien</font></td>
</tr>
<tr>
<td><font size="2">audio/x-midi</font></td>
<td><font size="2">*.mid *.midi</font></td>
<td><font size="2">MIDI-Dateien</font></td>
</tr>
<tr>
<td><font size="2">audio/x-mpeg</font></td>
<td><font size="2">*.mp2</font></td>
<td><font size="2">MPEG-Dateien</font></td>
</tr>
<tr>
<td><font size="2">audio/x-wav</font></td>
<td><font size="2">*.wav</font></td>
<td><font size="2">Wav-Dateien</font></td>
</tr>
<tr>
<td><font size="2">image/gif</font></td>
<td><font size="2">*.gif</font></td>
<td><font size="2">GIF-Dateien</font></td>
</tr>
<tr>
<td><font size="2">image/jpeg</font></td>
<td><font size="2">*.jpeg *.jpg *.jpe</font></td>
<td><font size="2">JPEG-Dateien</font></td>
</tr>
<tr>
<td><font size="2">image/x-windowdump</font></td>
<td><font size="2">*.xwd</font></td>
<td><font size="2">X-Windows Dump</font></td>
</tr>
<tr>
<td><font size="2">text/css</font></td>
<td><font size="2">*.css</font></td>
<td><font size="2">CSS Stylesheet-Dateien</font></td>
</tr>
<tr>
<td><font size="2">text/html</font></td>
<td><font size="2">*.htm *.html *.shtml</font></td>
<td><font size="2">-Dateien</font></td>
</tr>
<tr>
<td><font size="2">text/java******</font></td>
<td><font size="2">*.js</font></td>
<td><font size="2">Java******-Dateien</font></td>
</tr>
<tr>
<td><font size="2">text/plain</font></td>
<td><font size="2">*.txt</font></td>
<td><font size="2">reine Textdateien</font></td>
</tr>
<tr>
<td><font size="2">video/mpeg</font></td>
<td><font size="2">*.mpeg *.mpg *.mpe</font></td>
<td><font size="2">MPEG-Dateien</font></td>
</tr>
<tr>
<td>video/vnd.rn-realvideo</td>
<td>*.rmvb</td>
<td>realplay-Dateien</td>
</tr>
<tr>
<td><font size="2">video/quicktime</font></td>
<td><font size="2">*.qt *.mov</font></td>
<td><font size="2">Quicktime-Dateien</font></td>
</tr>
<tr>
<td><font size="2">video/vnd.vivo</font></td>
<td><font size="2">*viv *.vivo</font></td>
<td><font size="2">Vivo-Dateien</font></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>更多&#8230;.查找请用ctrl+F</p>
<p><font face="Verdana">MIME类型大全<br />
application/vnd.lotus-1-2-3<br />
3gp video/3gpp<br />
aab application/x-authoware-bin<br />
aam application/x-authoware-map<br />
aas application/x-authoware-seg<br />
ai application/post******<br />
aif audio/x-aiff<br />
aifc audio/x-aiff<br />
aiff audio/x-aiff<br />
als audio/X-Alpha5<br />
amc application/x-mpeg<br />
ani application/octet-stream<br />
asc text/plain<br />
asd application/astound<br />
asf video/x-ms-asf<br />
asn application/astound<br />
asp application/x-asap<br />
asx video/x-ms-asf<br />
au audio/basic<br />
avb application/octet-stream<br />
avi video/x-msvideo<br />
awb audio/amr-wb<br />
bcpio application/x-bcpio<br />
bin application/octet-stream<br />
bld application/bld<br />
bld2 application/bld2<br />
bmp application/x-MS-bmp<br />
bpk application/octet-stream<br />
bz2 application/x-bzip2<br />
cal image/x-cals<br />
ccn application/x-cnc<br />
cco application/x-cocoa<br />
cdf application/x-netcdf<br />
cgi magnus-internal/cgi<br />
chat application/x-chat<br />
class application/octet-stream<br />
clp application/x-msclip<br />
cmx application/x-cmx<br />
co application/x-cult3d-object<br />
cod image/cis-cod<br />
cpio application/x-cpio<br />
cpt application/mac-compactpro<br />
crd application/x-mscardfile<br />
csh application/x-csh<br />
csm chemical/x-csml<br />
csml chemical/x-csml<br />
css text/css<br />
cur application/octet-stream<br />
dcm x-lml/x-evm<br />
dcr application/x-director<br />
dcx image/x-dcx<br />
dhtml text/html<br />
dir application/x-director<br />
dll application/octet-stream<br />
dmg application/octet-stream<br />
dms application/octet-stream<br />
doc application/msword<br />
dot application/x-dot<br />
dvi application/x-dvi<br />
dwf drawing/x-dwf<br />
dwg application/x-autocad<br />
dxf application/x-autocad<br />
dxr application/x-director<br />
ebk application/x-expandedbook<br />
emb chemical/x-embl-dl-nucleotide<br />
embl chemical/x-embl-dl-nucleotide<br />
eps application/post******<br />
eri image/x-eri<br />
es audio/echospeech<br />
esl audio/echospeech<br />
etc application/x-earthtime<br />
etx text/x-setext<br />
evm x-lml/x-evm<br />
evy application/x-envoy<br />
exe application/octet-stream<br />
fh4 image/x-freehand<br />
fh5 image/x-freehand<br />
fhc image/x-freehand<br />
fif image/fif<br />
fm application/x-maker<br />
fpx image/x-fpx<br />
fvi video/isivideo<br />
gau chemical/x-gaussian-input<br />
gca application/x-gca-compressed<br />
gdb x-lml/x-gdb<br />
gif image/gif<br />
gps application/x-gps<br />
gtar application/x-gtar<br />
gz application/x-gzip<br />
hdf application/x-hdf<br />
hdm text/x-hdml<br />
hdml text/x-hdml<br />
hlp application/winhlp<br />
hqx application/mac-binhex40<br />
htm text/html<br />
html text/html<br />
hts text/html<br />
ice x-conference/x-cooltalk<br />
ico application/octet-stream<br />
ief image/ief<br />
ifm image/gif<br />
ifs image/ifs<br />
imy audio/melody<br />
ins application/x-NET-Install<br />
ips application/x-ip******<br />
ipx application/x-ipix<br />
it audio/x-mod<br />
itz audio/x-mod<br />
ivr i-world/i-vrml<br />
j2k image/j2k<br />
jad text/vnd.sun.j2me.app-de******or<br />
jam application/x-jam<br />
jar application/java-archive<br />
jnlp application/x-java-jnlp-file<br />
jpe image/jpeg<br />
jpeg image/jpeg<br />
jpg image/jpeg<br />
jpz image/jpeg<br />
js application/x-java******<br />
jwc application/jwc<br />
kjx application/x-kjx<br />
lak x-lml/x-lak<br />
latex application/x-latex<br />
lcc application/fastman<br />
lcl application/x-digitalloca<br />
lcr application/x-digitalloca<br />
lgh application/lgh<br />
lha application/octet-stream<br />
lml x-lml/x-lml<br />
lmlpack x-lml/x-lmlpack<br />
lsf video/x-ms-asf<br />
lsx video/x-ms-asf<br />
lzh application/x-lzh<br />
m13 application/x-msmediaview<br />
m14 application/x-msmediaview<br />
m15 audio/x-mod<br />
m3u audio/x-mpegurl<br />
m3url audio/x-mpegurl<br />
ma1 audio/ma1<br />
ma2 audio/ma2<br />
ma3 audio/ma3<br />
ma5 audio/ma5<br />
man application/x-troff-man<br />
map magnus-internal/imagemap<br />
mbd application/mbedlet<br />
mct application/x-mascot<br />
mdb application/x-msaccess<br />
mdz audio/x-mod<br />
me application/x-troff-me<br />
mel text/x-vmel<br />
mi application/x-mif<br />
mid audio/midi<br />
midi audio/midi<br />
mif application/x-mif<br />
mil image/x-cals<br />
mio audio/x-mio<br />
mmf application/x-skt-lbs<br />
mng video/x-mng<br />
mny application/x-msmoney<br />
moc application/x-mocha<br />
mocha application/x-mocha<br />
mod audio/x-mod<br />
mof application/x-yumekara<br />
mol chemical/x-mdl-molfile<br />
mop chemical/x-mopac-input<br />
mov video/quicktime<br />
movie video/x-sgi-movie<br />
mp2 audio/x-mpeg<br />
mp3 audio/x-mpeg<br />
mp4 video/mp4<br />
mpc application/vnd.mpohun.certificate<br />
mpe video/mpeg<br />
mpeg video/mpeg<br />
mpg video/mpeg<br />
mpg4 video/mp4<br />
mpga audio/mpeg<br />
mpn application/vnd.mophun.application<br />
mpp application/vnd.ms-project<br />
mps application/x-mapserver<br />
mrl text/x-mrml<br />
mrm application/x-mrm<br />
ms application/x-troff-ms<br />
mts application/metastream<br />
mtx application/metastream<br />
mtz application/metastream<br />
mzv application/metastream<br />
nar application/zip<br />
nbmp image/nbmp<br />
nc application/x-netcdf<br />
ndb x-lml/x-ndb<br />
ndwn application/ndwn<br />
nif application/x-nif<br />
nmz application/x-scream<br />
nokia-op-logo image/vnd.nok-oplogo-color<br />
npx application/x-netfpx<br />
nsnd audio/nsnd<br />
nva application/x-neva1<br />
oda application/oda<br />
oom application/x-AtlasMate-Plugin<br />
pac audio/x-pac<br />
pae audio/x-epac<br />
pan application/x-pan<br />
pbm image/x-portable-bitmap<br />
pcx image/x-pcx<br />
pda image/x-pda<br />
pdb chemical/x-pdb<br />
pdf application/pdf<br />
pfr application/font-tdpfr<br />
pgm image/x-portable-graymap<br />
pict image/x-pict<br />
pm application/x-perl<br />
pmd application/x-pmd<br />
png image/png<br />
pnm image/x-portable-anymap<br />
pnz image/png<br />
pot application/vnd.ms-powerpoint<br />
ppm image/x-portable-pixmap<br />
pps application/vnd.ms-powerpoint<br />
ppt application/vnd.ms-powerpoint<br />
pqf application/x-cprplayer<br />
pqi application/cprplayer<br />
prc application/x-prc<br />
proxy application/x-ns-proxy-autoconfig<br />
ps application/post******<br />
ptlk application/listenup<br />
pub application/x-mspublisher<br />
pvx video/x-pv-pvx<br />
qcp audio/vnd.qcelp<br />
qt video/quicktime<br />
qti image/x-quicktime<br />
qtif image/x-quicktime<br />
r3t text/vnd.rn-realtext3d<br />
ra audio/x-pn-realaudio<br />
ram audio/x-pn-realaudio<br />
rar application/x-rar-compressed<br />
ras image/x-cmu-raster<br />
rdf application/rdf+xml<br />
rf image/vnd.rn-realflash<br />
rgb image/x-rgb<br />
rlf application/x-richlink<br />
rm audio/x-pn-realaudio<br />
rmf audio/x-rmf<br />
rmm audio/x-pn-realaudio<br />
rmvb audio/x-pn-realaudio<br />
rnx application/vnd.rn-realplayer<br />
roff application/x-troff<br />
rp image/vnd.rn-realpix<br />
rpm audio/x-pn-realaudio-plugin<br />
rt text/vnd.rn-realtext<br />
rte x-lml/x-gps<br />
rtf application/rtf<br />
rtg application/metastream<br />
rtx text/richtext<br />
rv video/vnd.rn-realvideo<br />
rwc application/x-rogerwilco<br />
s3m audio/x-mod<br />
s3z audio/x-mod<br />
sca application/x-supercard<br />
scd application/x-msschedule<br />
sdf application/e-score<br />
sea application/x-stuffit<br />
sgm text/x-sgml<br />
sgml text/x-sgml<br />
sh application/x-sh<br />
shar application/x-shar<br />
shtml magnus-internal/parsed-html<br />
shw application/presentations<br />
si6 image/si6<br />
si7 image/vnd.stiwap.sis<br />
si9 image/vnd.lgtwap.sis<br />
sis application/vnd.symbian.install<br />
sit application/x-stuffit<br />
skd application/x-Koan<br />
skm application/x-Koan<br />
skp application/x-Koan<br />
skt application/x-Koan<br />
slc application/x-salsa<br />
smd audio/x-smd<br />
smi application/smil<br />
smil application/smil<br />
smp application/studiom<br />
smz audio/x-smd<br />
snd audio/basic<br />
spc text/x-speech<br />
spl application/futuresplash<br />
spr application/x-sprite<br />
sprite application/x-sprite<br />
spt application/x-spt<br />
src application/x-wais-source<br />
stk application/hyperstudio<br />
stm audio/x-mod<br />
sv4cpio application/x-sv4cpio<br />
sv4crc application/x-sv4crc<br />
svf image/vnd<br />
svg image/svg-xml<br />
svh image/svh<br />
svr x-world/x-svr<br />
swf application/x-shockwave-flash<br />
swfl application/x-shockwave-flash<br />
t application/x-troff<br />
tad application/octet-stream<br />
talk text/x-speech<br />
tar application/x-tar<br />
taz application/x-tar<br />
tbp application/x-timbuktu<br />
tbt application/x-timbuktu<br />
tcl application/x-tcl<br />
tex application/x-tex<br />
texi application/x-texinfo<br />
texinfo application/x-texinfo<br />
tgz application/x-tar<br />
thm application/vnd.eri.thm<br />
tif image/tiff<br />
tiff image/tiff<br />
tki application/x-tkined<br />
tkined application/x-tkined<br />
toc application/toc<br />
toy image/toy<br />
tr application/x-troff<br />
trk x-lml/x-gps<br />
trm application/x-msterminal<br />
tsi audio/tsplayer<br />
tsp application/dsptype<br />
tsv text/tab-separated-values<br />
tsv text/tab-separated-values<br />
ttf application/octet-stream<br />
ttz application/t-time<br />
txt text/plain<br />
ult audio/x-mod<br />
ustar application/x-ustar<br />
uu application/x-uuencode<br />
uue application/x-uuencode<br />
vcd application/x-cdlink<br />
vcf text/x-vcard<br />
vdo video/vdo<br />
vib audio/vib<br />
viv video/vivo<br />
vivo video/vivo<br />
vmd application/vocaltec-media-desc<br />
vmf application/vocaltec-media-file<br />
vmi application/x-dreamcast-vms-info<br />
vms application/x-dreamcast-vms<br />
vox audio/voxware<br />
vqe audio/x-twinvq-plugin<br />
vqf audio/x-twinvq<br />
vql audio/x-twinvq<br />
vre x-world/x-vream<br />
vrml x-world/x-vrml<br />
vrt x-world/x-vrt<br />
vrw x-world/x-vream<br />
vts workbook/formulaone<br />
wav audio/x-wav<br />
wax audio/x-ms-wax<br />
wbmp image/vnd.wap.wbmp<br />
web application/vnd.xara<br />
wi image/wavelet<br />
wis application/x-InstallShield<br />
wm video/x-ms-wm<br />
wma audio/x-ms-wma<br />
wmd application/x-ms-wmd<br />
wmf application/x-msmetafile<br />
wml text/vnd.wap.wml<br />
wmlc application/vnd.wap.wmlc<br />
wmls text/vnd.wap.wml******<br />
wmlsc application/vnd.wap.wml******c<br />
wml****** text/vnd.wap.wml******<br />
wmv audio/x-ms-wmv<br />
wmx video/x-ms-wmx<br />
wmz application/x-ms-wmz<br />
wpng image/x-up-wpng<br />
wpt x-lml/x-gps<br />
wri application/x-mswrite<br />
wrl x-world/x-vrml<br />
wrz x-world/x-vrml<br />
ws text/vnd.wap.wml******<br />
wsc application/vnd.wap.wml******c<br />
wv video/wavelet<br />
wvx video/x-ms-wvx<br />
wxl application/x-wxl<br />
x-gzip application/x-gzip<br />
xar application/vnd.xara<br />
xbm image/x-xbitmap<br />
xdm application/x-xdma<br />
xdma application/x-xdma<br />
xdw application/vnd.fujixerox.docuworks<br />
xht application/xhtml+xml<br />
xhtm application/xhtml+xml<br />
xhtml application/xhtml+xml<br />
xla application/vnd.ms-excel<br />
xlc application/vnd.ms-excel<br />
xll application/x-excel<br />
xlm application/vnd.ms-excel<br />
xls application/vnd.ms-excel<br />
xlt application/vnd.ms-excel<br />
xlw application/vnd.ms-excel<br />
xm audio/x-mod<br />
xml text/xml<br />
xmz audio/x-mod<br />
xpi application/x-xpinstall<br />
xpm image/x-xpixmap<br />
xsit text/xml<br />
xsl text/xml<br />
xul text/xul<br />
xwd image/x-xwindowdump<br />
xyz chemical/x-pdb<br />
yz1 application/x-yz1<br />
z application/x-compress<br />
zac application/x-zaurus-zac<br />
zip application/zip</font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sphinxsearch.org/?feed=rss2&amp;p=105</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用.htaccess设置PHP错误显示</title>
		<link>http://www.sphinxsearch.org/?p=104</link>
		<comments>http://www.sphinxsearch.org/?p=104#comments</comments>
		<pubDate>Sun, 08 Feb 2009 17:46:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lamp]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[原文：http://blog.creke.net/669.html 使用.htaccess可以在某种程度上更改PHP的错误显示的设置，实际上，相当于更改PHP.ini的参数，很是方便。 将以下相应代码放到对应目录中的.htaccess文件，即可实现相应功能。 关闭错误显示： php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off php_value docref_root 0 php_value docref_ext 0 只显示PHP错误： php_flag display_errors on php_flag display_startup_errors on php_value error_reporting 2047 其中，&#8220;2047&#8221;为要显示的错误的级别，详细表格如下： 1 E_ERROR 2 E_WARNING 4 E_PARSE 8 E_NOTICE 16 E_CORE_ERROR 32 E_CORE_WARNING 64 E_COMPILE_ERROR 128 E_COMPILE_WARNING 256 E_USER_ERROR 512 E_USER_WARNING 1024 E_USER_NOTICE 2047 E_ALL 2048 [...]]]></description>
			<content:encoded><![CDATA[<p>原文：http://blog.creke.net/669.html</p>
<p>使用.htaccess可以在某种程度上更改PHP的错误显示的设置，实际上，相当于更改PHP.ini的参数，很是方便。</p>
<p>将以下相应代码放到对应目录中的.htaccess文件，即可实现相应功能。</p>
<p>关闭错误显示：</p>
<pre>
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0</pre>
<p>只显示PHP错误：</p>
<pre>
php_flag  display_errors        on
php_flag  display_startup_errors on
php_value error_reporting        2047</pre>
<p>其中，&ldquo;2047&rdquo;为要显示的错误的级别，详细表格如下：</p>
<pre>
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR </pre>
<p>要把错误保存到日志文件中，可以这样设置：</p>
<pre>
# enable PHP error logging
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log</pre>
<p>然后，可以设置不允许访问.log文件：</p>
<pre>
# prevent access to PHP error log
&lt;Files PHP_errors.log&gt;
 Order allow,deny
 Deny from all
 Satisfy All
&lt;/Files&gt;</pre>
<p>设置错误日志的最大体积，以bytes为单位：</p>
<pre>
# general directive <span style="color: rgb(0, 0, 255);">for</span> setting max error size
log_errors_max_len integer</pre>
<p>综合上述，.htaccess的PHP错误显示设置汇总：</p>
<pre>
# PHP error handling for production servers

# disable display of startup errors
php_flag display_startup_errors off

# disable display of all other errors
php_flag display_errors off

# disable html markup of errors
php_flag html_errors off

# enable logging of errors
php_flag log_errors on

# disable ignoring of repeat errors
php_flag ignore_repeated_errors off

# disable ignoring of unique source errors
php_flag ignore_repeated_source off

# enable logging of php memory leaks
php_flag report_memleaks on

# preserve most recent error via php_errormsg
php_flag track_errors on

# disable formatting of error reference links
php_value docref_root 0

# disable formatting of error reference links
php_value docref_ext 0

# specify path to php error log
php_value error_log /home/path/public_html/domain/PHP_errors.log

# specify recording of all php errors
php_value error_reporting 999999999

# disable max error string length
php_value log_errors_max_len 0

# protect error log by preventing public access
&lt;Files /home/path/public_html/domain/PHP_errors.log&gt;
 Order allow,deny
 Deny from all
 Satisfy All
&lt;/Files&gt;</pre>
<p>以下则是适合开发者应用的设置：</p>
<pre>
# PHP error handling <span style="color: rgb(0, 0, 255);">for</span> development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /home/path/public_html/domain/PHP_errors.log
php_value error_reporting 999999999
php_value log_errors_max_len 0

&lt;Files /home/path/public_html/domain/PHP_errors.log&gt;
 Order allow,deny
 Deny from all
 Satisfy All
&lt;/Files&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sphinxsearch.org/?feed=rss2&amp;p=104</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql 中 NOW() 与 sysdate()的区别</title>
		<link>http://www.sphinxsearch.org/?p=102</link>
		<comments>http://www.sphinxsearch.org/?p=102#comments</comments>
		<pubDate>Mon, 09 Feb 2009 01:46:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[NOW()取的是Mysql 服务器自身的时间戳 sysdate()取的是系统的时间戳。 具体应用： 当进行主从同步的时候，主库执行完一条语句，会把自己的数据库时间戳同步到备库上。这时候备库执行相同的语句会获得相同的时间戳，要是用sysdate，就算数据库时间戳同步了也没用，因为取的是系统时间戳。 故，在实际开发应用中，尽量使用mysql的 NOW()函数。 原文见：http://hi.baidu.com/%CA%AB%D5%B9/blog/item/6b0da9518e1c36868d5430a7.html]]></description>
			<content:encoded><![CDATA[<p>NOW()取的是Mysql 服务器自身的时间戳</p>
<p>sysdate()取的是系统的时间戳。</p>
<p>具体应用：</p>
<p>当进行主从同步的时候，主库执行完一条语句，会把自己的<strong>数据库时间戳</strong>同步到备库上。这时候备库执行相同的语句会获得相同的时间戳，要是用sysdate，就算数据库时间戳同步了也没用，因为取的是系统时间戳。</p>
<p>故，在实际开发应用中，尽量使用mysql的 NOW()函数。</p>
<p>原文见：http://hi.baidu.com/%CA%AB%D5%B9/blog/item/6b0da9518e1c36868d5430a7.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sphinxsearch.org/?feed=rss2&amp;p=102</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql Faq</title>
		<link>http://www.sphinxsearch.org/?p=101</link>
		<comments>http://www.sphinxsearch.org/?p=101#comments</comments>
		<pubDate>Mon, 09 Feb 2009 01:46:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Q、编译安装mysql的时候出现： configure: error: No curses/termcap library found A、没有安装ncurses这个软件。需要加载其中的链接库 libncursesw.so ./configure &#8211;with-named-curses-libs=/usr/lib/libncursesw.so.5 &#160;]]></description>
			<content:encoded><![CDATA[<p><strong>Q、编译安装mysql的时候出现：</strong></p>
<p>configure: error: No curses/termcap library found</p>
<p>A、没有安装ncurses这个软件。需要加载其中的链接库 libncursesw.so</p>
<p>./configure <strong>&#8211;with-named-curses-libs=/usr/lib/libncursesw.so.5 </strong></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sphinxsearch.org/?feed=rss2&amp;p=101</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于Mysql group by和with rollup的用法小记</title>
		<link>http://www.sphinxsearch.org/?p=100</link>
		<comments>http://www.sphinxsearch.org/?p=100#comments</comments>
		<pubDate>Mon, 09 Feb 2009 01:46:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[今在实现某功能时遇一sql，用到分组聚合功能。记起一书中曾提起过with rollup可组内聚合。故特弄清其中细节及注意事项。 书中原始实例： ======================================== &#160;&#160;&#160; create table sales (&#160; &#160; &#160;&#160;&#160;&#160;&#160; `year` int not null,&#160; &#160; &#160;&#160;&#160;&#160;&#160; `country` varchar(20) not null,&#160; &#160; &#160;&#160;&#160;&#160;&#160; `product` varchar(32) not null,&#160; &#160; &#160;&#160;&#160;&#160;&#160; `profit` int&#160; &#160; &#160;&#160;&#160; );&#160; &#160; &#160;&#160;&#160;&#160;&#160; &#160; &#160;&#160;&#160; insert into sales values(2004, &#34;china&#34;, &#34;tnt1&#34;, 2001);&#160; &#160; &#160;&#160;&#160; insert into sales values(2004, &#34;china&#34;, &#34;tnt2&#34;, 2002);&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>今在实现某功能时遇一sql，用到分组聚合功能。记起一书中曾提起过with rollup可<strong>组内聚合</strong>。故特弄清其中细节及注意事项。</p>
<p>书中原始实例：</p>
<p>========================================</p>
<p>&nbsp;&nbsp;&nbsp; create table sales (&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `year` int not null,&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `country` varchar(20) not null,&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `product` varchar(32) not null,&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `profit` int&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; );&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; insert into sales values(2004, &quot;china&quot;, &quot;tnt1&quot;, 2001);&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; insert into sales values(2004, &quot;china&quot;, &quot;tnt2&quot;, 2002);&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; insert into sales values(2004, &quot;china&quot;, &quot;tnt3&quot;, 2003);&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; insert into sales values(2005, &quot;china&quot;, &quot;tnt1&quot;, 2004);&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; insert into sales values(2005, &quot;china&quot;, &quot;tnt2&quot;, 2005);&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; insert into sales values(2005, &quot;china&quot;, &quot;tnt3&quot;, 2006);&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; insert into sales values(2005, &quot;china&quot;, &quot;tnt1&quot;, 2007);&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; insert into sales values(2005, &quot;china&quot;, &quot;tnt2&quot;, 2008);&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; insert into sales values(2005, &quot;china&quot;, &quot;tnt3&quot;, 2009);&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; insert into sales values(2006, &quot;china&quot;, &quot;tnt1&quot;, 2010);&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; insert into sales values(2006, &quot;china&quot;, &quot;tnt2&quot;, 2011);&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; insert into sales values(2006, &quot;china&quot;, &quot;tnt3&quot;, 2012);&nbsp;</p>
<p>&nbsp;</p>
<p>create table sales (</p>
<p>&nbsp;</p>
<p>&nbsp; `year` int not null,</p>
<p>&nbsp;</p>
<p>&nbsp; `country` varchar(20) not null,</p>
<p>&nbsp;</p>
<p>&nbsp; `product` varchar(32) not null,</p>
<p>&nbsp;</p>
<p>&nbsp; `profit` int</p>
<p>&nbsp;</p>
<p>);</p>
<p>&nbsp;</p>
<p>insert into sales values(2004, &quot;china&quot;, &quot;tnt1&quot;, 2001);</p>
<p>&nbsp;</p>
<p>insert into sales values(2004, &quot;china&quot;, &quot;tnt2&quot;, 2002);</p>
<p>&nbsp;</p>
<p>insert into sales values(2004, &quot;china&quot;, &quot;tnt3&quot;, 2003);</p>
<p>&nbsp;</p>
<p>insert into sales values(2005, &quot;china&quot;, &quot;tnt1&quot;, 2004);</p>
<p>&nbsp;</p>
<p>insert into sales values(2005, &quot;china&quot;, &quot;tnt2&quot;, 2005);</p>
<p>&nbsp;</p>
<p>insert into sales values(2005, &quot;china&quot;, &quot;tnt3&quot;, 2006);</p>
<p>&nbsp;</p>
<p>insert into sales values(2005, &quot;china&quot;, &quot;tnt1&quot;, 2007);</p>
<p>&nbsp;</p>
<p>insert into sales values(2005, &quot;china&quot;, &quot;tnt2&quot;, 2008);</p>
<p>&nbsp;</p>
<p>insert into sales values(2005, &quot;china&quot;, &quot;tnt3&quot;, 2009);</p>
<p>&nbsp;</p>
<p>insert into sales values(2006, &quot;china&quot;, &quot;tnt1&quot;, 2010);</p>
<p>&nbsp;</p>
<p>insert into sales values(2006, &quot;china&quot;, &quot;tnt2&quot;, 2011);</p>
<p>&nbsp;</p>
<p>insert into sales values(2006, &quot;china&quot;, &quot;tnt3&quot;, 2012);</p>
</p>
<p>Jave代码</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; select year, country, product, sum(profit) from sales group by year, country, product;&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; +&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | year | country | product | sum(profit) |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; +&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | 2004 | china&nbsp;&nbsp; | tnt1&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2001 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | 2004 | china&nbsp;&nbsp; | tnt2&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2002 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | 2004 | china&nbsp;&nbsp; | tnt3&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2003 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | 2005 | china&nbsp;&nbsp; | tnt1&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4011 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | 2005 | china&nbsp;&nbsp; | tnt2&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4013 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2005 | china&nbsp;&nbsp; | tnt3&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4015 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2006 | china&nbsp;&nbsp; | tnt1&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2010 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2006 | china&nbsp;&nbsp; | tnt2&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2011 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2006 | china&nbsp;&nbsp; | tnt3&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2012 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; +&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 9 rows in set (00 sec)&nbsp;</p>
<p>&nbsp;</p>
<p>select year, country, product, sum(profit) from sales group by year, country, product;</p>
<p>&nbsp;</p>
<p>+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+</p>
<p>&nbsp;</p>
<p>| year | country | product | sum(profit) |</p>
<p>&nbsp;</p>
<p>+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+</p>
<p>&nbsp;</p>
<p>| 2004 | china&nbsp;&nbsp; | tnt1&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2001 |</p>
<p>&nbsp;</p>
<p>| 2004 | china&nbsp;&nbsp; | tnt2&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2002 |</p>
<p>&nbsp;</p>
<p>| 2004 | china&nbsp;&nbsp; | tnt3&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2003 |</p>
<p>&nbsp;</p>
<p>| 2005 | china&nbsp;&nbsp; | tnt1&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4011 |</p>
<p>&nbsp;</p>
<p>| 2005 | china&nbsp;&nbsp; | tnt2&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4013 |</p>
<p>&nbsp;</p>
<p>| 2005 | china&nbsp;&nbsp; | tnt3&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4015 |</p>
<p>&nbsp;</p>
<p>| 2006 | china&nbsp;&nbsp; | tnt1&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2010 |</p>
<p>&nbsp;</p>
<p>| 2006 | china&nbsp;&nbsp; | tnt2&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2011 |</p>
<p>&nbsp;</p>
<p>| 2006 | china&nbsp;&nbsp; | tnt3&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2012 |</p>
<p>&nbsp;</p>
<p>+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+</p>
<p>&nbsp;</p>
<p>9 rows in set (00 sec)</p>
</p>
<p>&nbsp;&nbsp;&nbsp; select year, country, product, sum(profit) from sales group by year, country, product with rollup;&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; +&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | year | country | product | sum(profit) |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; +&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | 2004 | china&nbsp;&nbsp; | tnt1&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2001 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | 2004 | china&nbsp;&nbsp; | tnt2&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2002 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | 2004 | china&nbsp;&nbsp; | tnt3&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2003 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | 2004 | china&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6006 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; | 2004 | NULL&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6006 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2005 | china&nbsp;&nbsp; | tnt1&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4011 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2005 | china&nbsp;&nbsp; | tnt2&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4013 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2005 | china&nbsp;&nbsp; | tnt3&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4015 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2005 | china&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12039 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2005 | NULL&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12039 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2006 | china&nbsp;&nbsp; | tnt1&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2010 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2006 | china&nbsp;&nbsp; | tnt2&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2011 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2006 | china&nbsp;&nbsp; | tnt3&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2012 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2006 | china&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6033 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | 2006 | NULL&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6033 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; | NULL | NULL&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 24078 |&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; +&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 16 rows in set (00 sec)&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>从上面的例子中可以看到第二个sql语句的结果比第一个sql语句的结果多出了很多行。而这些行反应出了更多信息。滴入，第二个sql语句的结果的前三行表示2004年在中国的各个产品（tnt1、tnt2、tnt3）的利润。而第四行表示2004年在中国所有产品的利润是 6006，这个信息在第一个sql语句中是不能反应出来的。第5行表示2004年全世界国有产品的利润是6006</p>
<p>&nbsp;&nbsp; 其实with rollup反映的是一种OLAP思想，也就是说这个GROUP BY 语句执行完成后可以满足用户想要得到的任何一个分组及分组祝贺的聚合信息值。</p>
<p>注意：1、当使用ROLLUP时，不能同时使用ORDER BY 子句进行结果排序。即，ROLLUP和ORDER BY 是互斥的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、limit用在ROLLUP后面</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sphinxsearch.org/?feed=rss2&amp;p=100</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>uml入门教程</title>
		<link>http://www.sphinxsearch.org/?p=99</link>
		<comments>http://www.sphinxsearch.org/?p=99#comments</comments>
		<pubDate>Sun, 08 Feb 2009 17:46:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[软件工程/方法学]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[1 面向对象概述 这是第一节,主要先来确定几个基础的概念. 1.什么是对象 对象(Object)是面向对象的基本构造单元.是一些变量和方法的集合,用于模拟实现世界中的一些事物模型.如一台电脑,一个人,一间房子等.当然也可以模拟一些虚拟的东西,比如一个学号,一个编号,一个院系等. 2.面向对象与面向过程的区别 面向对象&#34;什么做什么&#34;与面向过程&#34;做什么&#34;最大的区别在于,面向对象的重点在于谁发出了什么命令,而面向过程只关心一个命令. 面向对象以对象为基础,以事件或消息驱动对象执行处理.它不像面向过程设计一样以函数为单元,在一开始就需要使用一个主函数,来概适整个程序,像向对象是以部分着手,去构建整个程序.面向对象以数据为中心,使用类作为表现数据的载体,面向过程以功能为中心来捞述程序. 面向对象的程序控制流程以事件或消息来驱动,而面向过程的程序则是以事先预定的程序来执行.所以当需求变化很大的时候,面向过程的程序往往需要重构大部分甚至所有代码,而面向对象则可以轻构解决. 3对象与类 类是对象集合的再抽像,对象是类的实例.可以用一个简单的例子来说明.把中国人当成是一个类,那么你我都是这个类的一个实例.你我等这些中国人的集合抽像成了中国人这个类.中国人是一个虚的概念,而你我是一个实实在在的个体. 4消息和事件 消息是对象与对象之间相互作用的方式.消息一般包括消息的发送对象,消息的接收对象,消息的传递方式,消息的内容,消息的返回五部分组成. 比如张三对李四说:今天我们来喝一杯. 事件是系统预先定义的,通过指定的条件触发的动作. 比如我打一下你的头,你头痛了.　 这里我通过&#34;打&#34;这个行为来传递了一个消息对你产生了作用,你触法了&#34;痛&#34;这个事件. 5面向对象的基本特征 抽象:将要描述的事物进行简化,将事物特征进行概括,以事物层次结构来组织模型. 比如:狗.我们在软件中不可能把狗的所有信息都描述出来,我们把它简化为有四条腿,一个头,一个尾巴,还有一个躯杆. 这样我们就像画画一样画出了一个抽象的模型图. 然后对它的特征进行概括,比如它会叫,会吃,会走. 然后狗还分哈巴狗,狼狗等很多种.所以这里又分出了狗的层次. 封装:将对象的状态和行为绑到一起,并且尽可能的隐藏对象的内部细节. 比如:一台电视机,它的所有特征和内部结构都封装起来,我们不需要知道它的内部原理是怎么的,我们只需要知道怎么打开它,怎么换台就够了. 继承:继承是反映客观世界中对象的层次关系.正如上面狗的例子中,我们的狼狗,哈巴狗都继承自一个虚拟的狗的概念中.继承在很大程度上简化了我们的工作,也清淅的展示出了对象的层次关系. 多态:多态是指两个或多个属于不同类的对象,对于同一个消息或方法调用做出不同响应的能力.. 比如:当我们手上拿一个蓝球的时候,我们说:走,打球. 对方就能清楚的理解我们指的打球是指打蓝球或不是足球,乒乓球。 2 面向对象方法分析与设计 1.面向对象分析 面向对象分析的目的是知识客观世界并进行建模. 其实在面向对象的分析过程中也是对需求的分析和理解. 使用面向对象分析的过程一般如下: 获取问题陈述&#8211;&#62;确定类&#8211;&#62;准备数据字典&#8211;&#62;确定关联&#8211;&#62;使用继承来细化类型&#8211;&#62;完善对象模型&#8211;&#62;建立对象动态模型&#8211;&#62;建系统功能模型 (1) 获取问题陈述就是与用户一起理解系统,搞清楚系统的业务逻辑,发现用户的需求,在这个时候我们应该以一个用户的身份去看待这些需求.很多设计人员在这个时 候没有做足功能,导致最后系统的设计和维护异常困难,并开始抱怨起用户的变态要求.在搞清楚系统的需求之后,我们不要马上开始编码,如果在这个时候你都已 经写下了几篇代码了,那么恭喜你,以后够你受的了. (2)当得到了足够多的问题并对其理解之后,我们就可以把问题中承现出来的物理实体和概念描述整理出来,暂时把这些标志成一个类实体.然后清除冗余类和与系统不相干的类.最终得到我们的模型实体 (3)把第二步分析出来的类建立一个数据字典,这个数据字典很有可能会在我们的数据库设计中起到很大的作用. (4)通过第二步和第三步,我们已经得到了系统中的实体信息,现在我们就要让各个实体信息之间产生联系. 比如在一个学生选课系统中. 学生被定义为一个实体,课程也被定义为一个实体,通过选课这个行为把两个实体联系起来.这个行为由学生来引发.目标为课程,产生的结果是学生是否成功的选了一门课程.通过这样的分析,在以后的设计过程中我们可以很容易的设计出学生类的方法. 1class Student{ 2 3　　　　　 public bool ChooseCurriculum(Curriculum curriculum){ 4 5　　　　　　　　　　　 [...]]]></description>
			<content:encoded><![CDATA[<h4>1 面向对象概述</h4>
<p>这是第一节,主要先来确定几个基础的概念.</p>
<p><strong>1.什么是对象</strong></p>
<p>对象(Object)是面向对象的基本构造单元.是一些变量和方法的集合,用于模拟实现世界中的一些事物模型.如一台电脑,一个人,一间房子等.当然也可以模拟一些虚拟的东西,比如一个学号,一个编号,一个院系等.</p>
<p><strong>2.面向对象与面向过程的区别 </strong></p>
<p>面向对象&quot;什么做什么&quot;与面向过程&quot;做什么&quot;最大的区别在于,面向对象的重点在于谁发出了什么命令,而面向过程只关心一个命令.</p>
<p>面向对象以对象为基础,以事件或消息驱动对象执行处理.它不像面向过程设计一样以函数为单元,在一开始就需要使用一个主函数,来概适整个程序,像向对象是以部分着手,去构建整个程序.面向对象以数据为中心,使用类作为表现数据的载体,面向过程以功能为中心来捞述程序.                            面向对象的程序控制流程以事件或消息来驱动,而面向过程的程序则是以事先预定的程序来执行.所以当需求变化很大的时候,面向过程的程序往往需要重构大部分甚至所有代码,而面向对象则可以轻构解决.</p>
<p><strong>3对象与类</strong></p>
<p>类是对象集合的再抽像,对象是类的实例.可以用一个简单的例子来说明.把中国人当成是一个类,那么你我都是这个类的一个实例.你我等这些中国人的集合抽像成了中国人这个类.中国人是一个虚的概念,而你我是一个实实在在的个体.</p>
<p><strong>4消息和事件</strong></p>
<p>消息是对象与对象之间相互作用的方式.消息一般包括消息的发送对象,消息的接收对象,消息的传递方式,消息的内容,消息的返回五部分组成.</p>
<p>比如张三对李四说:今天我们来喝一杯.</p>
<p>事件是系统预先定义的,通过指定的条件触发的动作.</p>
<p>比如我打一下你的头,你头痛了.　 这里我通过&quot;打&quot;这个行为来传递了一个消息对你产生了作用,你触法了&quot;痛&quot;这个事件.</p>
<p><strong>5面向对象的基本特征</strong></p>
<p>抽象:将要描述的事物进行简化,将事物特征进行概括,以事物层次结构来组织模型.</p>
<p>比如:狗.我们在软件中不可能把狗的所有信息都描述出来,我们把它简化为有四条腿,一个头,一个尾巴,还有一个躯杆.                            这样我们就像画画一样画出了一个抽象的模型图. 然后对它的特征进行概括,比如它会叫,会吃,会走. 然后狗还分哈巴狗,狼狗等很多种.所以这里又分出了狗的层次.</p>
<p>封装:将对象的状态和行为绑到一起,并且尽可能的隐藏对象的内部细节.</p>
<p>比如:一台电视机,它的所有特征和内部结构都封装起来,我们不需要知道它的内部原理是怎么的,我们只需要知道怎么打开它,怎么换台就够了.</p>
<p>继承:继承是反映客观世界中对象的层次关系.正如上面狗的例子中,我们的狼狗,哈巴狗都继承自一个虚拟的狗的概念中.继承在很大程度上简化了我们的工作,也清淅的展示出了对象的层次关系.</p>
<p>多态:多态是指两个或多个属于不同类的对象,对于同一个消息或方法调用做出不同响应的能力..</p>
<p>比如:当我们手上拿一个蓝球的时候,我们说:走,打球. 对方就能清楚的理解我们指的打球是指打蓝球或不是足球,乒乓球。</p>
<h4>2 面向对象方法分析与设计</h4>
<p><strong>1.面向对象分析</strong></p>
<p>面向对象分析的目的是知识客观世界并进行建模.</p>
<p><img height="300" width="500" src="http://www.uml.org.cn/oobject/images/1244618760_ddvip_806.jpg" alt="" /></p>
<p>其实在面向对象的分析过程中也是对需求的分析和理解.</p>
<p>使用面向对象分析的过程一般如下:</p>
<p>获取问题陈述&#8211;&gt;确定类&#8211;&gt;准备数据字典&#8211;&gt;确定关联&#8211;&gt;使用继承来细化类型&#8211;&gt;完善对象模型&#8211;&gt;建立对象动态模型&#8211;&gt;建系统功能模型</p>
<p>(1) 获取问题陈述就是与用户一起理解系统,搞清楚系统的业务逻辑,发现用户的需求,在这个时候我们应该以一个用户的身份去看待这些需求.很多设计人员在这个时 候没有做足功能,导致最后系统的设计和维护异常困难,并开始抱怨起用户的变态要求.在搞清楚系统的需求之后,我们不要马上开始编码,如果在这个时候你都已 经写下了几篇代码了,那么恭喜你,以后够你受的了.</p>
<p>(2)当得到了足够多的问题并对其理解之后,我们就可以把问题中承现出来的物理实体和概念描述整理出来,暂时把这些标志成一个类实体.然后清除冗余类和与系统不相干的类.最终得到我们的模型实体</p>
<p>(3)把第二步分析出来的类建立一个数据字典,这个数据字典很有可能会在我们的数据库设计中起到很大的作用.</p>
<p>(4)通过第二步和第三步,我们已经得到了系统中的实体信息,现在我们就要让各个实体信息之间产生联系.</p>
<p>比如在一个学生选课系统中. 学生被定义为一个实体,课程也被定义为一个实体,通过选课这个行为把两个实体联系起来.这个行为由学生来引发.目标为课程,产生的结果是学生是否成功的选了一门课程.通过这样的分析,在以后的设计过程中我们可以很容易的设计出学生类的方法.</p>
<p><code class="content">1class Student{<br />
2<br />
3　　　　　 public bool ChooseCurriculum(Curriculum curriculum){<br />
4<br />
5　　　　　　　　　　　 //.<br />
6<br />
7　　　　　 }<br />
8<br />
9　　　　　 //.<br />
10<br />
11}<br />
12<br />
13class Curriculum{<br />
14<br />
15　　　　　 //.<br />
16<br />
17}<br />
18</code></p>
<p>(5)使用继承来细化类</p>
<p>使用继承来共享公共属性,以此来对类进行组织,一般可以使用以下两种方式来实现.</p>
<p>自底向上:通过把现有类的共同性质一般化为父类,寻找具有相似的属性关系或操作的类来发现继承.这些结果常常是基于客观世界的现有分类,只有可能,应尽量使用现有概念.</p>
<p>自顶向下:把现有的类细化为更具体的子类.</p>
<p>(6)完善对象模型</p>
<p>设计过程中不可能一次就能正确的设计出需要的,往往会在这过程中加深对需求的理解.往往需要重复前面的过程.</p>
<p>(7)建立对象动态模型</p>
<p>跟据前面几步的对象模型,接着就是建立对象的动态模型</p>
<p>准备脚本:动态分析从寻找事件开始,然后确定各对象的可能事件顺序.</p>
<p>确定事件:确定所有外部事件.</p>
<p>准备事件跟踪表:把脚本表示成一个事件跟踪表,即不同对象之间的事件排序表,对象为表中的列,给每个对象分配一个独立的列.</p>
<p>构造状态图:对各对象类建立状态图,反映对象接收和发送的事件,每个事件跟踪都对应于状态图中的一条路径.</p>
<p>(8)建立系统功能模型</p>
<p>功能模型是用来说明值是如何计算的,标明值与值之间的依赖关系及相关的功能.数据流图有助于表示功能依赖关系.一般建功能模型的步骤如下:</p>
<p>先列出输入,输出值,输入,输出值是系统与外界之间的事件的参数.</p>
<p>建立数据流图,数据流图可说明输出值是怎么从输入值转换的,数据流图通常按层次组织.</p>
<p><strong>2.面向对象设计</strong></p>
<p>面向对象设计是把分析价段得到的需求转变成符合成本和质量要求的,抽象的系统实现方案的过程.</p>
<p>(1)面向对象的准则</p>
<p>模块化:对象就是模块,它把数据结构和操作这些数据的方法紧密地结合在一起构成模块.</p>
<p>抽象:面向对象方法不仅支持对过程进行抽象,而具支持对数据进行抽象.抽象方法的好坏以及抽象的层次都对系统设计有很大影响</p>
<p>信息隐藏:通过对象的封装来实现,对象暴露接口的多少以及接口的好坏对系统设计有很大影响</p>
<p>低耦合:低耦合是设计的一个重要标准,有助于使系统中某一部分的变化对其他部分的影响降到最低.</p>
<p>高内聚:内聚度高的模块很容易理解,很容易被复用,扩展和维护.</p>
<p>(2)面向对象的实用规则</p>
<p>设计的结果应该清晰易懂.</p>
<p>一般到具体结构的深度应适当.</p>
<p>尽量设计小而简单的类.</p>
<p>把设计变动减至最小.</p>
<p>(3)系统设计</p>
<p>系统设计是问题求解及建立解答的高级策略,必须制定解决问题的基本方法.系统设计一般是先从高层入手,然后细化.系统设计要决定整个结构及风格,这种结构为后面设计阶段的策略提供基础.</p>
<h4>3 面向对象建模</h4>
<p><strong>1.为什么要用UML建模</strong></p>
<p>模型是什么?模型就是对现实世界的形状或状态的抽象模拟和简化,模型提供了系统的骨架和蓝图.</p>
<p>模型有助于按照实际情况或按照所需要的样式对系统进行可视化.</p>
<p>模型能够规约系统的结构或行为.</p>
<p>模型给出了指导构造系统的模板.</p>
<p>对系统用户而言,软件的开发模型向他们描述了软件开发者对软件系统需求的理解.让系统用户查看软件对象模型并且找到其中的问题,可以使开发者不至于从一开始就发生错误.</p>
<p>对软件开发而言,软件的对象模型有助于他们对软件的需求以及系统的架构和功能进行沟通.</p>
<p>对软件的维护和技术支持者而言,在软件系统开始运行后的相当长的一段时间内,软件的对象模型能够帮助他们理解程序的架构和功能,迅速地对软件所出现的问题进行修复.</p>
<p>建模并不是仅对大型的软件系统,甚至一个小型的留言本也能从建模的过程中受益.</p>
<p><strong>2.以面向对象建模为基础的开发模式</strong></p>
<p>软件生命周期可以分为制定计划,需求分析,设计,编码,测试,运行和维护.软件开发模式是跨越整个软件生存周期的系统开发,运行和维护所实施的全部内容光焕发结构框架,给出软件开发活动中各个阶段之间的关系.这里介绍4种常见的开发模式.</p>
<p>(1)瀑布模型</p>
<p>瀑 布模型也被软为生存周期模型,其核心思想是按照相应的工序将问题进行简化,将系统功能的实现与系统的设计工作分开,便于项目之间的分工与协件,即采用结构 化的分析与设计方法将逻辑实现与物理实现分开.瀑布模型将软件生命周期划分为项目计划,需求分析,软件设计,软件实现,软件测试,软件运行与维护6个阶 段.并规定了他们自上而下的次序,每一个阶段都是依次衔接的.</p>
<p><img height="534" width="751" src="http://www.uml.org.cn/oobject/images/1244618851_ddvip_1432.jpg" alt="" /></p>
<p>瀑 布模型为项目提供了接阶段划分的检查点,这样有利于软件开发过程中人员的组织及管理.瀑布模型在当前阶段完成后才去关注后续阶段,这样有有利于开发大型的 项目.然后也存在一定的缺陷.比如当开发成果尚未经过测试时,用户无法看到软件效果,不能得到在开发过程中的及时反馈,增加了项目开发过程的风险.对需求 不稳定的项目来说缺乏足够的灵活性.并具要在需求分析阶段要完全确定系统用户所需要的所有需求也相当的困难.</p>
<p>(2)喷泉模型</p>
<p>喷泉模型以对象为驱动,以用户需求为动力.用来描述面向对象的软件开发过程.喷泉模型认为软件开发过程自下而上,各阶段是相互复叠和多次反复的.各个开发阶段没有特定的次序要求,并且可以交互进行.可以在某个开发阶段中随时补充其他任何开发阶段的遗漏.</p>
<p><img height="187" width="174" src="http://www.uml.org.cn/oobject/images/1244618852_ddvip_3079.jpg" alt="" /></p>
<p>喷 泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动.设计活动结束后才开始编码.该模型的各个阶段没有明显的界限.开发人员可以同步进行开发,其 优点是可以提高软件项目开发效率,节省开发时间.但也使开发过程中需要大量的开发人员,因此不利于项目的管理.此处这种模型要求严格管理文档,使得审核的 对度加大,尤其是面对可能随时加入各种信息,需求与资料的情况.</p>
<p>(3)基于构件的开发模型</p>
<p>基于构件的开模型利用模块化方法将整个系统模块化,并在一定构件模型的支持下复用构件库中的一个或多个构件,通过组合手段高速率,高质量地构造应用程序软件系统开发的过程.</p>
<p><img height="250" width="434" src="http://www.uml.org.cn/oobject/images/1244618852_ddvip_9476.jpg" alt="" /></p>
<p>基 于构件的开发方法使得软件开发就得容易,构件组装模型导致了软件的复用,提高了软件开发效率.构件组装模型允许多个项目同时开发,降件了费用,提高了可维 护性,可分步提交软件产品.但也因为采用自定义组装结构标准,缺乏通用的组装结构标准,因而引入了软大的风险.可重用性和软件高效性不易协调,并且由于过 分依赖于构件,所以构件库的质量影响着产品的质量.</p>
<p>(4)XP方法</p>
<p>敏捷方法.是近几年兴起的一种轻量级的开发方法,它强调适应性而非预测性,强调以人为中心而不是以流程为中心,以及对变化的适应对和人性的关注.</p>
<p>XP(eXtreme Programming)方法是最引人注目的一种敏捷方法.它规定了一组核心价值和方法,消除了大多数重量型开发过程中的不必要产物,建立一个渐进型开发 过程.该方法将开发阶段的4个活动(分析,设计,编码和测试)混合在一起,在全过程中采用迭代增量开发,反馈修正和反复测试.</p>
<p><img height="143" width="313" src="http://www.uml.org.cn/oobject/images/1244618852_ddvip_4493.jpg" alt="" /></p>
<p>具有以下优点</p>
<p>采用简单计划策略,不需要长期计划和复杂模型,开发周期短.在全过程中中采用迭代增量开发,反馈修正和反复测试.保证了软件的质量.能够适应用户经常变化的需求,提供用户满意的高质量软件.</p>
<p>讲了这么多枯燥了概念东西,下一节中我们就以结合实例来学习uml中的用例图.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sphinxsearch.org/?feed=rss2&amp;p=99</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>认识 PHP 的hash函数</title>
		<link>http://www.sphinxsearch.org/?p=98</link>
		<comments>http://www.sphinxsearch.org/?p=98#comments</comments>
		<pubDate>Sun, 08 Feb 2009 17:46:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; 转自（香港 PHP 用家社區） Hashing function (散列函式) 在网页应用中被广泛采用，从数码签署、错误检测、登入验证、到压缩储存空间，由于它的原理比较复杂，很多人把它跟加密函式混淆，对于如何运用hash function，如何选择合适的hash function，和它的优点缺点都不清楚，本文尝试解答这些问题。 简单地说，Hashing 是一种数据影射(mapping) 的算法(algorithm)，通常用来把一大串不定长度的数据影射到一个固定长度的、较短的数据，这个固定长度的数据称为hashing value (散列值)。 例如我们把一个由英文字母组成的任意长度的字串，把每一个字符的ASCII 数值加起来，最后除以256 得到的余数作为hash value，这里输入的字串长度没有限制，输出的数值则必定在0 至255 之间，所以是一个合法的hashing function。 以上的hash function 只有256 个可能的hash value，很明显有很多字串都会得到相同的hash value，这种情况我们称为hash collision (散列冲突)，或者简称collision，事实上从一个不定长度的数据影射到一个固定长度的数据，Collision 是无可避免的，我们并不要求完全没有collision，只需把collision 的机会尽量降低便可以了，若果真的要完全没有collision 的话，Hash value 理论上必须与输入的数据长度相同，这样便违背了hash function 的设计目的。 现实应用的hashing function 通常比较复杂，比较有名的包括MD4、MD5、SHA1、SHA256 等，它们的hash value 的数量从2 的几十次方到几百次方。其实我们任何人都可以自行设计一个hashing function，不过基于hashing function 的实际用途，我们对hashing function 有一些基本要求，在进一步解释前，让我们看看hashing 有什么常见的用途。 Hashing 的用途 &#160;&#160;&#160;1. &#160;&#160;&#160;&#160;&#160;&#160;数码签署 &#160;&#160;&#160;&#160;&#160;&#160;很多提供程式下载的网站，都会在网页上列出下载档案的hash [...]]]></description>
			<content:encoded><![CDATA[<p><span id="result_box" class="long_text"><span style="background-color: rgb(255, 255, 255);" title="Hashing function (散列函式) 在網頁應用中被廣泛採用，從數碼簽署、錯誤檢測、登入驗證、到壓縮儲存空間，由於它的原理比較複雜，很多人把它跟加密函式混淆，對於">&nbsp;&nbsp;&nbsp;&nbsp; <br />
转自（</span></span><a href="http://www.hkpug.net/zh-hant/2009/05/09/php-hash-functions"><span id="result_box" class="long_text"><span style="background-color: rgb(255, 255, 255);" title="Hashing function (散列函式) 在網頁應用中被廣泛採用，從數碼簽署、錯誤檢測、登入驗證、到壓縮儲存空間，由於它的原理比較複雜，很多人把它跟加密函式混淆，對於">香港 PHP 用家社區</span></span></a><span id="result_box" class="long_text"><span style="background-color: rgb(255, 255, 255);" title="Hashing function (散列函式) 在網頁應用中被廣泛採用，從數碼簽署、錯誤檢測、登入驗證、到壓縮儲存空間，由於它的原理比較複雜，很多人把它跟加密函式混淆，對於">）<br />
</span><span style="background-color: rgb(255, 255, 255);" title="Hashing 是甚麼？"><br />
Hashing function (散列函式) 在网页应用中被广泛采用，从数码签署、错误检测、登入验证、到压缩储存空间，由于它的原理比较复杂，很多人把它跟加密函式混淆，对于如何运用hash function，如何选择合适的hash function，和它的优点缺点都不清楚，本文尝试解答这些问题。</p>
<p></span><span style="background-color: rgb(255, 255, 255);" title="簡單地說，Hashing 是一種數據影射(mapping) 的算法(algorithm)，通常用來把一大串不定長度的數據影射到一個固定長度的、較短的數據，這個固定長度的數據稱為hashing value (">简单地说，Hashing 是一种数据影射(mapping) 的算法(algorithm)，通常用来把一大串不定长度的数据影射到一个固定长度的、较短的数据，这个固定长度的数据称为hashing value (</span><span title="散列值)。">散列值)。</p>
<p></span><span style="background-color: rgb(255, 255, 255);" title="例如我們把一個由英文字母組成的任意長度的字串，把每一個字符的ASCII 數值加起來，最後除以256 得到的餘數作為hash value，這裡輸入的字串長度沒有限制，輸出的數值則必定">例如我们把一个由英文字母组成的任意长度的字串，把每一个字符的ASCII 数值加起来，最后除以256 得到的余数作为hash value，这里输入的字串长度没有限制，输出的数值则必定</span><span style="background-color: rgb(255, 255, 255);" title="在0 至255 之間，所以是一個合法的hashing function。">在0 至255 之间，所以是一个合法的hashing function。</p>
<p></span><span style="background-color: rgb(255, 255, 255);" title="以上的hash function 只有256 個可能的hash value，很明顯有很多字串都會得到相同的hash value，這種情況我們稱為hash collision (散列衝突)，或者簡稱collision，事實上從一個不定長度的">以上的hash function 只有256 个可能的hash value，很明显有很多字串都会得到相同的hash value，这种情况我们称为hash collision (散列冲突)，或者简称collision，事实上从一个不定长度的</span><span style="background-color: rgb(255, 255, 255);" title="數據影射到一個固定長度的數據，Collision 是無可避免的，我們並不要求完全沒有collision，只需把collision 的機會盡量降低便可以了，若果真的要完全沒有collision 的話，Hash value 理論上必須">数据影射到一个固定长度的数据，Collision 是无可避免的，我们并不要求完全没有collision，只需把collision 的机会尽量降低便可以了，若果真的要完全没有collision 的话，Hash value 理论上必须</span><span title="與輸入的數據長度相同，這樣便違背了hash function 的設計目的。">与输入的数据长度相同，这样便违背了hash function 的设计目的。</p>
<p></span><span title="現實應用的hashing function 通常比較複雜，比較有名的包括MD4、MD5、SHA1、SHA256 等，它們的hash value 的數量從2 的幾十次方到幾百次方。">现实应用的hashing function 通常比较复杂，比较有名的包括MD4、MD5、SHA1、SHA256 等，它们的hash value 的数量从2 的几十次方到几百次方。</span><span style="background-color: rgb(255, 255, 255);" title="其實我們任何人都可以自行設計一個hashing function，不過基於hashing function 的實際用途，我們對hashing function 有一些基本要求，在進一步解釋前，讓我們看看hashing 有甚麼常見的用途。">其实我们任何人都可以自行设计一个hashing function，不过基于hashing function 的实际用途，我们对hashing function 有一些基本要求，在进一步解释前，让我们看看hashing 有什么常见的用途。<br />
</span><span title="Hashing 的用途">Hashing 的用途</p>
<p>&nbsp;&nbsp;&nbsp;</span><span title="1.">1.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span title="數碼簽署">数码签署</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: rgb(255, 255, 255);" title="很多提供程式下載的網站，都會在網頁上列出下載檔案的hash value，比較常見的是MD5 碼，下載的人可以自行計算下載回來的檔案的hash value 是否與網站提供的相符，從而驗證這個程式">很多提供程式下载的网站，都会在网页上列出下载档案的hash value，比较常见的是MD5 码，下载的人可以自行计算下载回来的档案的hash value 是否与网站提供的相符，从而验证这个程式</span><span title="是否曾經被修改，這個過程就是數碼簽署。">是否曾经被修改，这个过程就是数码签署。</span><span style="background-color: rgb(255, 255, 255);" title="數碼簽署的概念可以應用在很多通訊領域，例如你要發送一個很重要的電子郵件給別人，為了讓收件者放心內容在傳送過程中沒有被其他人擅改，你可以另外告訴收件人電子">数码签署的概念可以应用在很多通讯领域，例如你要发送一个很重要的电子邮件给别人，为了让收件者放心内容在传送过程中没有被其他人擅改，你可以另外告诉收件人电子</span><span title="郵件的MD5 碼，讓他自行驗證。">邮件的MD5 码，让他自行验证。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: rgb(255, 255, 255);" title="在這種用途中，理想的hashing function 應該具備兩種特性，首先是任何對原本文件的改動都會令產生的hash value 改變；第二是沒有方法可以得知如何該動原本的文件使計算出來的">在这种用途中，理想的hashing function 应该具备两种特性，首先是任何对原本文件的改动都会令产生的hash value 改变；第二是没有方法可以得知如何该动原本的文件使计算出来的</span><span title="hash value 相同。">hash value 相同。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span title="當然，我們還要確保hash value 不會在傳送途中被人攔截並且修改，但這屬於通訊安全的問題，超越了hash function 的討論。">当然，我们还要确保hash value 不会在传送途中被人拦截并且修改，但这属于通讯安全的问题，超越了hash function 的讨论。<br />
&nbsp;&nbsp;&nbsp;</span><span title="2.">2.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span title="錯誤檢測">错误检测</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: rgb(255, 255, 255);" title="資料在網絡上傳送的時候，會受到很多干擾而使內容改變，其中包括網絡問題、電腦硬件問題、電腦程式問題等，為了檢驗資料的正確性，我們可以一併把資料的hash value 發送給收">资料在网络上传送的时候，会受到很多干扰而使内容改变，其中包括网络问题、电脑硬件问题、电脑程式问题等，为了检验资料的正确性，我们可以一并把资料的hash value 发送给收</span><span style="background-color: rgb(255, 255, 255);" title="件者，讓收件者比對自行計算的hash value 和收到的hash value 來確認資料的正確性。">件者，让收件者比对自行计算的hash value 和收到的hash value 来确认资料的正确性。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span title="在這種用途種中，理想的hash function 跟上面的要求差不多，就是任何對原本資料的改動都會令產生的hash value 改變。">在这种用途种中，理想的hash function 跟上面的要求差不多，就是任何对原本资料的改动都会令产生的hash value 改变。<br />
&nbsp;&nbsp;&nbsp;</span><span title="3.">3.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span title="登入驗證">登入验证</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span title="在伺服器上儲存用戶的系統密碼是有風險的，第一這樣做等於把密碼的安全交托給伺服器管理員，他們一定可靠嗎？">在伺服器上储存用户的系统密码是有风险的，第一这样做等于把密码的安全交托给伺服器管理员，他们一定可靠吗？</span><span title="別忘記密碼萬一洩漏背黑鑊的是你而不是他們啊；第二很多用戶把相同的密碼應用在很多不同的系統（這樣做當然很不好，但你無法限制用戶不可以這樣做），當">别忘记密码万一泄漏背黑镬的是你而不是他们啊；第二很多用户把相同的密码应用在很多不同的系统（这样做当然很不好，但你无法限制用户不可以这样做），当</span><span title="一個系統被黑客入侵洩漏了用戶的密碼，他們在其他系統的帳號也同時中門大開，後果可以很嚴重。">一个系统被黑客入侵泄漏了用户的密码，他们在其他系统的帐号也同时中门大开，后果可以很严重。</span><span style="background-color: rgb(255, 255, 255);" title="為了保障用戶，設計良好的系統都不會直接儲存用戶的密碼，只會儲存密碼的hash value。">为了保障用户，设计良好的系统都不会直接储存用户的密码，只会储存密码的hash value。</span><span title="用戶登入時輸入的密碼，會被轉換成hash value，然後與伺服器上儲存的hash value 比較來進行身分驗證。">用户登入时输入的密码，会被转换成hash value，然后与伺服器上储存的hash value 比较来进行身分验证。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span title="這種用途的hash function，必須是不可能返過來從hash value 計算原本的密碼。">这种用途的hash function，必须是不可能返过来从hash value 计算原本的密码。</span><span title="此外，由於collision 的緣故，只要找到一個密碼，它的hash value 與用戶的密碼的hash value 相同，便可以冒認這名用戶登入系統，無須知道真正的密碼，所以hash value 的數量必須非常龐大，">此外，由于collision 的缘故，只要找到一个密码，它的hash value 与用户的密码的hash value 相同，便可以冒认这名用户登入系统，无须知道真正的密码，所以hash value 的数量必须非常庞大，</span><span title="使collision 的可能性很低很低，使尋找這個「偽冒」密碼的人要付出很大的代價。">使collision 的可能性很低很低，使寻找这个「伪冒」密码的人要付出很大的代价。<br />
&nbsp;&nbsp;&nbsp;</span><span title="4.">4.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span title="壓縮儲存空間">压缩储存空间</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: rgb(255, 255, 255);" title="Hash function 其中一個最經典的用途是製作hashing table (散列表)，它可說是一個關聯陣列(associative array)，陣列的指標是一些不定長度的數據或者是比較複雜的數據結構，很多高階編程語言">Hash function 其中一个最经典的用途是制作hashing table (散列表)，它可说是一个关联阵列(associative array)，阵列的指标是一些不定长度的数据或者是比较复杂的数据结构，很多高阶编程语言</span><span title="包括PHP、Perl、gawk 等都支援關連陣列，背後的原理就是利用hash function 把這些數據轉換成數字，然後讀取陣列中的元素。">包括PHP、Perl、gawk 等都支援关连阵列，背后的原理就是利用hash function 把这些数据转换成数字，然后读取阵列中的元素。</span><span style="background-color: rgb(255, 255, 255);" title="在大部分的情況下，作為陣列指標的數據可以非常龐大，但是陣列的長度(元素的數量) 相對來說卻很少，所以衝突的情況會比較突出，從用戶(編程人員) 的角度衝突是">在大部分的情况下，作为阵列指标的数据可以非常庞大，但是阵列的长度(元素的数量) 相对来说却很少，所以冲突的情况会比较突出，从用户(编程人员) 的角度冲突是</span><span title="不應該發生的，不同的數據便應該對應到不同的陣列位置，所以這些語言都有某些方法來處理衝突。">不应该发生的，不同的数据便应该对应到不同的阵列位置，所以这些语言都有某些方法来处理冲突。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: rgb(255, 255, 255);" title="用hash table 來實作關聯陣列的好處是搜索資料的速度高，無論有多少資料，搜索的速度都是固定的，這一點對於要處理大量數據的應用很重要。">用hash table 来实作关联阵列的好处是搜索资料的速度高，无论有多少资料，搜索的速度都是固定的，这一点对于要处理大量数据的应用很重要。</p>
<p></span><span title="PHP 有甚麼 hashing 工具？">PHP 有什么 hashing 工具？</span></span></p>
<table border="1">
<tbody>
<tr>
<td>Hash Functions</td>
<td>Hash value 的长度 (bit)</td>
</tr>
<tr>
<td>CRC32</td>
<td>32</td>
</tr>
<tr>
<td>MD5</td>
<td>128</td>
</tr>
<tr>
<td>SHA-1</td>
<td>160</td>
</tr>
</tbody>
</table>
<p><span id="result_box" class="long_text"><span title="PHP 有甚麼 hashing 工具？">（<a href="http://www.sphinxsearch.org">本站转载备注</a>：在PHP5.12以后可以使用</span></span> hash_algos()返回所有的hash算法，并从手册上得知现支持 35种算法；<a href="http://www.php.net/manual/en/function.hash-algos.php">查看手册</a>）</p>
<p><span id="result_box" class="long_text"><span style="background-color: rgb(255, 255, 255);" title="在PHP5 之前我們只有CRC32、MD5 和SHA1 三個內置的hash function，它們輸出的hash value 長度如下：">在PHP5 之前我们只有CRC32、MD5 和SHA1 三个内置的hash function，它们输出的hash value 长度如下：<br />
</span><span title="Hash Functions 	Hash value 的長度 (bit)">Hash Functions Hash value 的长度 (bit)<br />
</span><span title="CRC32 	32">CRC32 32<br />
</span><span title="MD5 	128">MD5 128<br />
</span><span title="SHA-1 	160">SHA-1 160</p>
<p></span><span style="background-color: rgb(255, 255, 255);" title="其中SHA-1 可說是最多人使用的hash function，原因是它的hash value 比其他的大，Collision 的機會便小得多。">其中SHA-1 可说是最多人使用的hash function，原因是它的hash value 比其他的大，Collision 的机会便小得多。</span><span title="其次SHA 家族的hashing functions 是由美國國家安全部(NSA - National Security Agency) 設計，並被列為美國聯邦資訊處理標準的一部分，所以給人較高的信心，很多複雜的安全方案例如SSL 都使用">其次SHA 家族的hashing functions 是由美国国家安全部(NSA &#8211; National Security Agency) 设计，并被列为美国联邦资讯处理标准的一部分，所以给人较高的信心，很多复杂的安全方案例如SSL 都使用</span><span title="SHA-1。">SHA-1。</p>
<p></span><span style="background-color: rgb(255, 255, 255);" title="PHP 還有兩個需要額外安裝的函式庫支援更多hash function，就是mhash 和hash，Hash 從PHP 5.1.2 開始列為標準的模組，無須自行編譯或安裝，所以越來越多人使用">PHP 还有两个需要额外安装的函式库支援更多hash function，就是mhash 和hash，Hash 从PHP 5.1.2 开始列为标准的模组，无须自行编译或安装，所以越来越多人使用</span><span title="。">。</span><span style="background-color: rgb(255, 255, 255);" title="一些比SHA-1 更先進的hash function 都可以在這兩個函式庫中找到，例如屬於SHA-2 家族的SHA-256 和SHA-512 等，不過由於SHA-1 的歷史比較悠久，很多系統">一些比SHA-1 更先进的hash function 都可以在这两个函式库中找到，例如属于SHA-2 家族的SHA-256 和SHA-512 等，不过由于SHA-1 的历史比较悠久，很多系统</span><span title="仍然繼續使用它，尤其是用SHA-1 來進行登入驗證的系統，由於hash function 的不可還原性，很難一下子改用其他hash function。">仍然继续使用它，尤其是用SHA-1 来进行登入验证的系统，由于hash function 的不可还原性，很难一下子改用其他hash function。</p>
<p></span><span title="使用SHA-1 的方法很簡單(PHP 的函式大都很簡單，不是嗎？)：">使用SHA-1 的方法很简单(PHP 的函式大都很简单，不是吗？)：</p>
<p></span><span title="echo sha1('I am a happy boy.');">echo sha1(&#8216;I am a happy boy.&#8217;);</p>
<p></span><span title="Hash 的用法也很簡單：">Hash 的用法也很简单：</p>
<p></span><span title="echo hash('sha256', 'I am a happy boy.);">echo hash(&#8216;sha256&#8242;, &#8216;I am a happy boy.);</p>
<p></span><span style="background-color: rgb(255, 255, 255);" title="Hash 支援很多hash function，可以用hash_algo 查看你的PHP 版本支援甚麼：">Hash 支援很多hash function，可以用hash_algo 查看你的PHP 版本支援什么：</p>
<p></span><span title="print_r(hash_algos());">print_r(hash_algos());</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sphinxsearch.org/?feed=rss2&amp;p=98</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql将时间戳转成常用可读时间格式</title>
		<link>http://www.sphinxsearch.org/?p=97</link>
		<comments>http://www.sphinxsearch.org/?p=97#comments</comments>
		<pubDate>Mon, 09 Feb 2009 01:46:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[&#160; 转自http://www.cnblogs.com/jackyrong/archive/2008/04/13/1150884.html mysql中一个表的一个时间列是int类型，现在想修改这个字段的值，打算可读日期时间格式转成int，然后修改那个值。 这个转换函数就是UNIX_TIMESTAMP，将可读的时间转换成int类型，具体用法： update xxx_table set xxx_time=UNIX_TIMESTAMP(&#8217;2006-11-13 13:24:22&#8242;) where &#8230;&#8230; 同时介绍一个另一个转换函数：FROM_UNIXTIME，将将时间戳转成常用时间格式 select FROM_UNIXTIME(xxx_time) from xxx_table mysql将时间戳转成常用时间格式 在mysql中，一个时间字段的存储类型是int（11），怎么转化成字符类型，比方存储为13270655222，需要转化为yyyy -mm-dd的形式 使用 FROM_UNIXTIME函数，具体如下： FROM_UNIXTIME(unix_timestamp,format) 返回表示 Unix 时间标记的一个字符串，根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。 根据format字符串格式化date值。下列修饰符可以被用在format字符串中： %M 月名字(January&#8230;&#8230;December) %W 星期名字(Sunday&#8230;&#8230;Saturday) %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。） %Y 年, 数字, 4 位 %y 年, 数字, 2 位 %a 缩写的星期名字(Sun&#8230;&#8230;Sat) %d 月份中的天数, 数字(00&#8230;&#8230;31) %e 月份中的天数, 数字(0&#8230;&#8230;31) %m 月, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>转自http://www.cnblogs.com/jackyrong/archive/2008/04/13/1150884.html<br />
mysql中一个表的一个时间列是int类型，现在想修改这个字段的值，打算可读日期时间格式转成int，然后修改那个值。 </p>
<p>这个转换函数就是UNIX_TIMESTAMP，将可读的时间转换成int类型，具体用法： </p>
<p>update xxx_table set xxx_time=UNIX_TIMESTAMP(&#8217;2006-11-13 13:24:22&#8242;) where &#8230;&#8230; </p>
<p>同时介绍一个另一个转换函数：FROM_UNIXTIME，将将时间戳转成常用时间格式 </p>
<p>select FROM_UNIXTIME(xxx_time) from xxx_table </p>
<p>mysql将时间戳转成常用时间格式 <br />
在mysql中，一个时间字段的存储类型是int（11），怎么转化成字符类型，比方存储为13270655222，需要转化为yyyy -mm-dd的形式 </p>
<p>使用 FROM_UNIXTIME函数，具体如下： </p>
<p>FROM_UNIXTIME(unix_timestamp,format) <br />
返回表示 Unix 时间标记的一个字符串，根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。 <br />
根据format字符串格式化date值。下列修饰符可以被用在format字符串中： %M 月名字(January&hellip;&hellip;December) <br />
%W 星期名字(Sunday&hellip;&hellip;Saturday) <br />
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。） <br />
%Y 年, 数字, 4 位 <br />
%y 年, 数字, 2 位 <br />
%a 缩写的星期名字(Sun&hellip;&hellip;Sat) <br />
%d 月份中的天数, 数字(00&hellip;&hellip;31) <br />
%e 月份中的天数, 数字(0&hellip;&hellip;31) <br />
%m 月, 数字(01&hellip;&hellip;12) <br />
%c 月, 数字(1&hellip;&hellip;12) <br />
%b 缩写的月份名字(Jan&hellip;&hellip;Dec) <br />
%j 一年中的天数(001&hellip;&hellip;366) <br />
%H 小时(00&hellip;&hellip;23) <br />
%k 小时(0&hellip;&hellip;23) <br />
%h 小时(01&hellip;&hellip;12) <br />
%I 小时(01&hellip;&hellip;12) <br />
%l 小时(1&hellip;&hellip;12) <br />
%i 分钟, 数字(00&hellip;&hellip;59) <br />
%r 时间,12 小时(hh:mm:ss [AP]M) <br />
%T 时间,24 小时(hh:mm:ss) <br />
%S 秒(00&hellip;&hellip;59) <br />
%s 秒(00&hellip;&hellip;59) <br />
%p AM或PM <br />
%w 一个星期中的天数(0=Sunday &hellip;&hellip;6=Saturday ） <br />
%U 星期(0&hellip;&hellip;52), 这里星期天是星期的第一天 <br />
%u 星期(0&hellip;&hellip;52), 这里星期一是星期的第一天 <br />
%% 一个文字&ldquo;%&rdquo;。 </p>
<p>所有的其他字符不做解释被复制到结果中。 </p>
<p>
如： </p>
<p>SELECT FROM_UNIXTIME(1234567890, &#8216;%Y-%m-%d %H:%i:%S&#8217;) <br />
可以自己指定格式。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sphinxsearch.org/?feed=rss2&amp;p=97</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
