March 26, 2010
PHP中如何使用header发送头部信息
"在照彭武兴先生的《PHP BIBLE》中所述,header可以送出Status标头,如\n就可以让用户浏览器出现文件找不到的404错误,但是我试了这样是不行的。\n后 来我到w3.org上查了http的相关资料,终于试出来了如何Header出状态代码(Status),与大家分享。\n其实应该是这样 的:\n第一部分为 HTTP协议的版本(HTTP-Version)\n第二部分为状态代码(Status)\n第三部分为原因短语 (Reason-Phrase)\n三部分中间用一个空格分开,且中间不能有回车,第一部分和第二部分是必需的,第三部分则是给人看的,可 写可不写甚至乱写。\n还有,这一句的输出必须在Html文件的第一行。\n下面我给出各代码所代表的意思(是从 w3.org上查到的,够权威了):\n1xx: Informational – Request received, continuing process\n2xx: Success – The action was successfully received, understood,and accepted\n3xx: Redirection – …"
March 23, 2010
把不带前缀的域名转向到www.域名的Apache 301转向配置样例
"各种不同的域名地址对于搜索引擎的除重(deduplication)来说是一个负担,有没有”/”和首页的文件连接,一个域名首页就可以有6个地址:\nwww.haohtml.com/\nhaohtml.com/\nwww.haohtml.com\nhaohtml.com\nwww.haohtml.com/index.php\nhaohtml.com/index.php\n如果加上一些参数,比如用于来源跟踪等还会有更多无穷无尽的地址。\nwww.haohtml.com/?source=foobar\n所以搜索引擎鼓励发布者 把URL标准化(归一化)。首先就是域名的归一化,原先我的设置为: www.haohtml.com / haohtml.com为别名。现在改为haohtml.com 301转向到www.haohtml.com\nServerName haohtml.com\nRewriteEngine on\nRewriteRule ^(.*)$ http://www.haohtml.com$1 [R=301,L]\n如果没有mod_rewrite也可以设置mod_alias:\nRedirectMatch 301 …"
March 17, 2010
windows 2003自带的FTP的设置?
"windows 2003自带的FTP(iis里)如何设置?打开 Internet信息服务(IIS)管理器 (如下图)\n[][1]\n可以看到 Internet信息服务(IIS)管理器 中已经出现了 FTP站点 菜单(如下图)\n[][2]\n单击 FTP站点 ,右边呈现的是 相关数据和参数(如下图)\n[][3]\n接着,我们来打开它的属性栏 ,右键单击它,单击属性(如下图)\n[][4]\n选项卡 FTP站点 下,列出来相关参数,默认的FTP的TCP连接端口是21,这个一般不改它(如下图)\n[][5]\n单击 安全账户 选项卡,下面可以勾选匿名,也可以添加用户账号,我们这里只是演示,所以不改它(如下图)\n[][6]\n接下来,单击 主目录 设置修改我们这个ftp的指向访问目录,我们这里指向 F盘(如下图)\n[][7]\n选择后,再单击下一步(N)\u0026gt; (如下图)\n[][8]\n设置访问权限,读取 就是只能看里面内容,能下载,但不能上传;写入,就是可以看,下载,还有上传(如下图)\n[][9]\n在你的电脑上打开FTP客户端软件,输入IP,您windows远程桌面的用户名和密码,就可以登录FTP了。 "
March 16, 2010
用show table satus查看数据库表的相关信息
"显然,我之前那个数据库备份程序太菜鸟了。还用select count(*) 来判断数据库的记录集数,其实完全不用那么麻烦。有一个简单的MML语句今天被我无意间发 现,”SHOW TABLE STATUS FROM `dbname`”,执行后会生成一个记录集。\n记录集包含下列字段:\nName: newdb (表名) Engine: MyISAM (表引擎) Version: 10 (版本) Row_format: Dynamic (行格式)\nRows: 56496 (表内总行数) 对于其它存储引擎,比如InnoDB,本值是一个大约的数,与实际值相差可达40到50%。 在这些情况下,使用SELECT COUNT(*)来获得准确的数目。对于在INFORMATION_SCHEMA数 据库中的表,Rows值为NULL\nAvg_row_length: 4749 (平均每行大小,这里是4.7K) Data_length: 268352680 (该表总大小,单位字节) Max_data_length: 281474976710655 (该表可存储上限,这个值所有表都一样,换算出来是256TB,应该用不 …"
January 31, 2010
One Number:同时监测 Gmail, Reader, Wave 和 Voice 的 Chrome 扩展
"我相信作为Google的忠实用户,各位的 Chrome 上一定安装了若干的Google服务提醒扩展吧:比如 Gmail的, Google Reader的, Google Wave的, Google Voice的。。。那么多图标堆在工具栏,看着就头大。。。\nOne Number 这个扩展正是为了解决这个问题而来,从此我们只需要一个图标就可以查看四个Google服务的未读信息数目了。安装这个扩展后,点击扩展图标跳转到Google输入Google账户用户名和密码即可启用。监视的服务列表,检查频度,未读数显示颜色等等也都可以在扩展的设置中自己设定,相当的方便。另外,One Number的 Gmail 提醒也支持使用Google Apps的邮件监视。\n点击这里 进入One Number在官方Chrome扩展中心的页面,点击INSTALL安装。"
January 24, 2010
mysql中使用 MYSQLBINLOG 来恢复数据
"今天在家里做了一下试验,终于搞明白了以前做复制的时候没有搞明白的问题。原来BINLOG就是一个记录SQL语句的过程,和普通的LOG一样。不过只是她是二进制存储,普通的是十进制存储罢了。 1、配置文件里要写的东西: [mysqld] log-bin=yueliangdao_binglog(名字可以改成自己的,如果不改名字的话,默认是以主机名字命名)重新启动MSYQL服务。\n二进制文件里面的东西显示的就是执行所有语句的详细记录,当然一些语句不被记录在内,要了解详细的,见手册页。2、查看自己的BINLOG的名字是什么。 show binlog events;\nquery result(1 records) Log_name\nPos\nEvent_type\nServer_id\nEnd_log_pos\nInfo\nyueliangdao_binglog.000001\n4\nFormat_desc\n1\n106\nServer ver: 5.1.22-rc-community-log, Binlog ver: 4\n3、我做了几次操作后,她就记录了下来。\n又一次 show binlog events 的结果。 …"
January 24, 2010
mysql优化数据库对象
"12.1优化表的数据类型\n表需要使用何种数据类型,是需要根据应用来判断的。虽然应用设计的时候需要考虑字段的长度留有一定的冗余,但是不推荐让很多字段都留有大量的冗余,这样即浪费存储也浪费内存。\n我们可以使用PROCEDUREANALYSE()对当前已有应用的表类型的判断,该函数可以对数据表中的列的数据类型提出优化建议,可以根据应用的实际情况酌情考虑是否实施优化。\n语法:\nSELECT * FROM tbl_name PROCEDURE ANALYSE();SELECT * FROM tbl_name PROCEDURE ANALYSE(16,256);\n输出的每一列信息都会对数据表中的列的数据类型提出优化建议。第二个例子告诉PROCEDUREANALYSE()不要为那些包含的值多于16个或者256字节的ENUM类型提出建议。如果没有这样的限制,输出信息可能很长;ENUM定义通常很难阅读。\n在对字段类型进行优化时,可以根据统计信息并结合应用的实际情况对其进行优化。\n12.2通过拆分,提高表的访问效率这里我们所说的拆分,主要是针对Myisam类型的表,拆分的方法可以分成两种情况:\n1. 纵向 …"
January 24, 2010
mysql的默认查询优先还是更新(insert、update、delete)优先关系
"MySQL还允许改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样单个客户端就不会由于锁定而等待很长时间。改变优先级还可以确保特定类型的查询被处理得更快。\n我们首先应该确定应用的类型,判断应用是以查询为主还是以更新为主的,是确保查询效率还是确保更新的效率,决定是查询优先还是更新优先。\n下面我们提到的改变调度策略的方法主要是针对Myisam存储引擎的,对于Innodb存储引擎,语句的执行是由获得行锁的顺序决定的。\nMySQL的默认的调度策略可用总结如下:\n写入操作优先于读取操作。\n对某张数据表的写入操作某一时刻只能发生一次,写入请求按照它们到达的次序来处理。\n对某张数据表的多个读取操作可以同时地进行。\nMySQL提供了几个语句调节符,允许你修改它的调度策略:\nLOW_PRIORITY关键字应用于DELETE、INSERT、LOADDATA、REPLACE和UPDATE。\nHIGH_PRIORITY关键字应用于SELECT和INSERT语句。\nDELAYED关键字应用于INSERT和REPLACE语句。\n如果写入操作是一个LOW_PRIORITY(低优先级)请求,那么系统就 …"
January 24, 2010
用mysql中的join来优化查询
"Mysql4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN).. 替代。\n假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成:\nSELECT * FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo)\n如果使用连接(JOIN)..来完成这个查询工作,速度将会快很多。尤其是当salesinfo 表中对CustomerID建有索引的话,性能将会更好,查询如下:\nSELECT * FROM customerinfo LEFT JOIN salesinfo ON customerinfo.CustomerID=salesinfo.CustomerID WHERE salesinfo.CustomerID IS NULL\n连 …"
January 24, 2010
在mysql中对order by的字段进行优化
"在某些情况中,MySQL可以使用一个索引来满足ORDER BY子句,而不需要额外的排序。where条件和order by使用相同的索引,并且order by的顺序和索引顺序相同, 并且order by的字段都是升序或者都是降序。\n例如:下列sql可以使用索引。\nSELECT * FROM t1 ORDER BY key_part1,key_part2,…;\nSELECT * FROM t1 WHERE key_part1=1 ORDER BY key_part1 DESC,key_part2 DESC;\nSELECT * FROM t1 ORDER BY key_part1 DESC,key_part2 DESC;\n**但是以下情况不使用索引: **\nSELECT * FROM t1 ORDER BY key_part1 DESC,key_part2 ASC;\n–orderby的字段混合ASC和DESC\n** **\nSELECT * FROM t1 WHERE key2=constant ORDER BY key1;\n–用于查询行的关键字与ORDERBY中所使用的不相同\n** ** …"