May 27, 2009
把FreeBSD5.3升级到5.4版本
"\u003cp\u003e本来系统装的是FreeBSD5.3,但是新版的FreeBSD5.4 Release发布了,而且改动不小,呵呵,赶紧升级吧。\u003c/p\u003e\n\u003cp\u003e先更新源码结构:\n# cd /usr/share/examples/cvsup\n修改一下 standard-supfile 文件:\n# vi standard-supfile\n把主机和版本修改掉:\n把*default host=CHANGE_THIS.FreeBSD.org\n改为:*default host=cvsup.jp.freebsd.org或者cvsup.freebsdchina.org,呵呵,其实日本的服务器也不慢。\n把:*default release=cvs tag=RELENG_5_3\n改为:*default release=cvs tag=RELENG_5_4\u003c/p\u003e\n\u003cp\u003e:wq 保存退出。\n开始更新,如果没有cvsup命令,就自己去ports一个回来。\n# cvsup -g -L2 standard-supfile\n等一段时间,多久根据你的网速和机器配置有关。\u003c/p\u003e\n\u003cp\u003e更新回来之后,现在正式开始安装内核。先进入源代码目录:\n# cd /usr/src\n开始编译,这 …\u003c/p\u003e"
May 27, 2009
"\u003cp\u003e字符串,恐怕应该算是MYSQL里面最复杂的类型了吧?几乎目前所有的问题,都是出在与字符有关的数据列上,大致有几种\n1、字符串的查询(以下如果不特指,都是指中文),搜索一个中文的时候,不管是模糊还是精确,往往结果都会有与搜索内容不一致的数据在里面\n2、编码,现在大家都知道MYSQL连接上后,先执行一下mysql_query(‘set names GBK’,$conn)这类的语句,从MYSQL4.0升级到4.1及以上版本的朋友在这上面吃的苦不少了。网上关于这类的提问也是最多的\n3、索引、效率,varchar是MYSQL所特有的字段,而且长度可变,char则是固定长度的字符串。\n在MYSQL所支持的几个字符串格式里面,char和varchar是用的最多的,char是定长字段,,也就是说,不管字符串的实际长度有多少,CHAR(10)将永远占用10个字节。字符串如果前端有空格,那么在存储的时候会自动被数据库去掉,相当于先执行trim($string),再进行存储,如果不满10个字节,将会采用空格填满,读取数据时,MYSQL会自动将这些空格去掉。看到这里,恐怕它的缺点之一就明显的暴露了,CHAR不 …\u003c/p\u003e"
May 26, 2009
mysql中自动修改数据表的设计(默许的数据列修改)
"\u003cp\u003e9.9.6 自动修改数据表的设计(默许的数据列修改)\u003c/p\u003e\n\u003cp\u003e在创建(create table)或修改(alter table)一个数据表的时候,MYSQL会在特定条件下对这个数据表的设计方案自动做出一些修改,其理由或者是那么做可以让数据表的效率更高,或者是设计思路MYSQL无法实现.\n这里要特别提醒那些从期货数据库系统迁移过来的读者注意:MYSQL在对数据表设计方案自动做出勤率修改时不会给出任何提示,所以一事实上要用SHOW CREATE TABLE命令去检查一下最终的数据表设计方案是不是所想像的样子。在下面的例子里。MYSQL自做主张地把一个CHAR(2)数据列改成了一个VARCHAR(20)数据列,还给那两个数据列加上了defautl null属性.\n\u003cstrong\u003eCREATE TABLE test1(col1 VARCHAR(20), col2 CHAR(20))\u003c/strong\u003e\nshow create table test1\n\u003cstrong\u003ecreate table test1(\ncol1 varchar(20) default null,\ncol2 varchar(20) default null\n)engine=MYISAM …\u003c/strong\u003e\u003c/p\u003e"
May 26, 2009
php计算两个数组交集和差集
"\u003cp\u003earray_intersect\n(PHP 4 \u0026gt;= 4.0.1, PHP 5)\u003c/p\u003e\n\u003cp\u003earray_intersect — 计算数组的交集说明\narray array_intersect ( array array1, array array2 [, array …])\narray_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。\u003c/p\u003e\n\u003cp\u003e例子 1. array_intersect() 例子\u003c/p\u003e\n\u003cp\u003e“green”, “red”, “blue”);\n$array2 = array (“b” =\u0026gt; “green”, “yellow”, “red”);\n$result = array_intersect ($array1, $array2);\n?\u0026gt;\u003c/p\u003e\n\u003cp\u003e这使得 $result 成为:\u003c/p\u003e\n\u003cp\u003eArray\n(\n [a] =\u0026gt; green\n [0] =\u0026gt; red\n)\n注: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。 …\u003c/p\u003e"
May 25, 2009
php中的$_SERVER or $_ENV
"\u003cp\u003e服务器变量:$_SERVER\n注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_SERVER_VARS。\u003c/p\u003e\n\u003cp\u003e$_SERVER 是一个包含诸如头信息(header)、路径(path)和脚本位置(script locations)的数组。数组的实体由 web 服务器创建。不能保证所有的服务器都能产生所有的信息;服务器可能忽略了一些信息,或者产生了一些未在下面列出的新的信息。这意味着,大量的这些变量在 CGI 1.1 规范中说明,所以应该仔细研究一下。\u003c/p\u003e\n\u003cp\u003e环境变量:$_ENV\n注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_ENV_VARS。\u003c/p\u003e\n\u003cp\u003e在解析器运行时,这些变量从环境变量转变为 PHP 全局变量名称空间(namespace)。它们中的许多都是由 PHP 所运行的系统决定。完整的列表是不可能的。请查看系统的文档以确定其特定的环境变量。\u003c/p\u003e\n\u003cp\u003e其它环境变量(包括 CGI 变量),无论 PHP 是以服务器模块或是以 CGI 处理方式运行,都在这里列出了。\u003c/p\u003e\n\u003cp\u003e这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中 …\u003c/p\u003e"
May 23, 2009
FreeBSD 挂载U盘
"\u003cp\u003e确保内核中有如下项\ndevice scbus\ndevice da\ndevice cd\u003c/p\u003e\n\u003cp\u003e在GENERIC中默认都有,如果没有,请编译内核。\u003c/p\u003e\n\u003cp\u003e大多数U盘用的是FAT 文件系统,所以用\nmount -t msdos /dev/da0 /mnt\u003c/p\u003e\n\u003ch1 id=\"freebsd-umount-devda0\"\u003eFreeBSD# mount -t msdos /dev/da0 /mnt/Mp4/\nFreeBSD# cd /mnt/Mp4/\nFreeBSD# ls\n??.mp3 My love.mp3\n????.mp3 boulevard of broken dreams.mp3\n?????.mp3 data\n?????.mp3 someday.mp3\nBE-Girls Hold the line .mp3 take me to your heart.mp3\nBeautiful World.mp3 thats why you go away.mp3\nBlue Bird.mp3 you took my heart away.mp3\nI lay my love on you.mp3\nFreeBSD# cp *.mp3 /home/music/\nFreeBSD# …\u003c/h1\u003e"
May 22, 2009
FreeBSD常用命令110条
"\u003cp\u003e\u003cstrong\u003e01.查看网络流量\u003c/strong\u003e\na.systat -if 1 (1表示1s刷新屏幕一次)\nb.netstat 1\n# Traffic 流量 peak 峰值 average 平均值\n\u003cstrong\u003e02.查看硬盘信息\u003c/strong\u003e\ndiskinfo -vt /dev/ad0\ndisklable /dev/ad0 (分区信息)\ndisklable /dev/ad0s2\n\u003cstrong\u003e03.查看核心信息\u003c/strong\u003e\nvmstat 1\n**04.查看进程\n** top ps auxww ps -ef |grep xxx\n\u003cstrong\u003e05.查看硬盘详细分区信息&读写状况\u003c/strong\u003e\ngstat\n\u003cstrong\u003e06.sysctl sysctl -a 查看所有变量(/etc/sysctl.conf)\u003c/strong\u003e\nsysctl kern.maxproc 查看特定变量\nsysctl kern.maxfiles=5000 设置变量\n\u003cstrong\u003e07.查看磁盘空间使用情形 df 和 du\u003c/strong\u003e\n指令df用来查看整个档案系统的使用情形,\n如果您需要知道某个目录的使用情形用指令du。\ndf -h\ndu -h /etc\ndu -sh /etc\n-s 参数来省略指定目录下的子目录\n-h 表示使用GB、MB等易读的格式\n\u003cstrong\u003e08. …\u003c/strong\u003e\u003c/p\u003e"
May 22, 2009
FreeBSD中使用QUOTA(磁盘配额)来限制用户空间
"\u003cp\u003e虚拟主机中经常要限制用户空间的大小和文件的数量。这些限制在linux和FreeBSD中都是用QUOTA来实现的。这里我说下在FreeBSD下实现的方法;\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e开启\u003c/strong\u003e \u003cstrong\u003eQUOTA\u003c/strong\u003e \u003cstrong\u003e支持\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e首先需要修改内核加入对quota的支持\u003c/p\u003e\n\u003cp\u003emachine i386\u003c/p\u003e\n\u003cp\u003ecpu I686_CPU\u003c/p\u003e\n\u003cp\u003e#ident GENERIC\u003c/p\u003e\n\u003cp\u003eident CNOSvhost\u003c/p\u003e\n\u003cp\u003emaxusers 0\u003c/p\u003e\n\u003cp\u003eoptions QUOTA #就是这行了。\u003c/p\u003e\n\u003cp\u003e修改好后重新编译内核。\u003c/p\u003e\n\u003cp\u003e然后在/etc/rc.conf里加入:\u003c/p\u003e\n\u003cp\u003eenable_quotas=”YES”\u003c/p\u003e\n\u003cp\u003echeck_quotas=”YES”\u003c/p\u003e\n\u003cp\u003e这样你的系统就起用QUOTA了,你应当通过编辑/etc/fstab的某个文件系统的属性,加入QUOTA的支持。\u003c/p\u003e\n\u003cp\u003e下面的fstab文件就设置了在/pub文件系统上起用用户配额和组配额\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e# See the fstab(5) manual page for important information on automatic mounts\n\u003c/code\u003e\u003c/pre\u003e\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e# of network filesystems before modifying this file.\n\u003c/code\u003e\u003c/pre\u003e\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e# Device …\u003c/code\u003e\u003c/pre\u003e"
May 21, 2009
FireFox 3.5+ 已不再支持 -moz-opacity
"\u003cp\u003e安装了FireFox3.5之后,发现以前项目网页中有透明属性的一些DIV都不透明了。于是猜想,FireFox3.5难道不支持它自家的CSS透明属性-moz-opacity了?上网一查,果真如此。\n在 \u003ca href=\"https://developer.mozilla.org/En/CSS:-moz-opacity\"\u003ehttps://developer.mozilla.org/En/CSS:-moz-opacity\u003c/a\u003e 里说得很清楚了:\nNote: Firefox 3.5 and later do not support -moz-opacity. By now, you should be using simply opacity.\n现在都要改用opacity这个属性。\u003c/p\u003e\n\u003cp\u003e于是要设置一下透明度为60%的DIV就应该这样写了:\ndiv.transp { /* make the div translucent */\nopacity: 0.6; /* Firefox, Safari(WebKit), Opera)\nfilter: “alpha(opacity=60)”; /* IE 8 */\nfilter: alpha(opacity=60); /* IE 4-7 */ …\u003c/p\u003e"
May 21, 2009
addEventListener的参数说明
"\u003cp\u003e我想大家对这个函数的前两个参数已经很了解了吧,主要是第三个参数不很好理解。我查了一些资料,弄明白了这个问题,所以记录下来了。下面的内容,基本上是参考别人的。\u003c/p\u003e\n\u003cp\u003e第三个参数叫做useCapture,是一个boolean值,就是true or false,如果是rue的话就是浏览器会使用Capture方式,false的话是Bubbling,只有在特定状况下才会有影响,通常建议是false,而会有影响的情形是目标元素(target element)有父元素(ancestor element),而且也有同样的事件对应函数,我想,看图比较清楚。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/wp-content/uploads/2009/05/f781ff0f5563e6386159f31f.jpg\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2009/05/f781ff0f5563e6386159f31f.jpg\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e像這張圖所顯示的,我的範例有兩層div元素,而且都設定有click事件,一般來說,如果我在內層藍色的元素上click不只會觸發藍色元素的click事件,還會同時觸發紅色元素的click事件,而useCapture這個參數就是在控制這時候兩個click事件的先後順序。如果是false,那就會使用bubbling,他是從內而外的流程,所以會先執行藍色元素的click事件再執行紅色元素的click事件,如果是true,那就是capture,和bubbling相 …\u003c/p\u003e"
May 21, 2009
attachEvent与addEventListener区别
"\u003cp\u003e适应的浏览器版本不同,同时在使用的过程中要注意\nattachEvent方法 按钮onclick\naddEventListener方法 按钮click\u003c/p\u003e\n\u003cp\u003e有关addEventListener函数的相关参数 \u003ca href=\"/index.php/archives/1429\"\u003e请点击这里查看\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e两者使用的原理:可对执行的优先级不一样,下面实例讲解如下:\nattachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列)\u003c/p\u003e\n\u003cp\u003eaddEventListener方法 用于 Mozilla系列\u003c/p\u003e\n\u003cp\u003e举例: document.getElementById(“btn”).onclick = method1;\ndocument.getElementById(“btn”).onclick = method2;\ndocument.getElementById(“btn”).onclick = method3;如果这样写,那么将会只有medhot3被执行\u003c/p\u003e\n\u003cp\u003e写成这样:\nvar btn1Obj = document.getElementById(“btn1”); //object.attachEvent(event,function); …\u003c/p\u003e"
May 20, 2009
如何记录mysql慢查询sql日志
"\u003cp\u003e修改my.cnf的mysqld部分:\nlong_query_time = 1 //定义慢查询的时间1表示1秒\n–log-slow-queries[=file_name] //记录慢查询到日志文件\n–log-queries-not-using-indexes //将没使用索引的sql记录到日志文件\n实例:\n[mysqld]\nlong_query_time = 1\nlog-slow-queries = /usr/local/mysql5.0.40/var/slow_query.log\nlog-queries-not-using-indexes = true\u003c/p\u003e\n\u003cp\u003e“too many connections”找不到问题所在,后来发现打开mysql的慢查询会有很大的帮助就搞了一个.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e打开MySQL慢查询\u003c/strong\u003e\nMySQL慢查询记录日志对于跟踪PHP+MySQL体系下的MySQL负载调优问题很有用处,比如安装了很多Discuz!插件的用户,这样可以大概排查出那些插件有代码问题。其实启用MySQL的慢查询日志很简单,只需要在MySQL的配置文件里添 …\u003c/p\u003e"
May 20, 2009
mysql优化-缓存篇
"\u003cp\u003e在整体的系统运行过程中,数据库服务器 MySQL 的压力是最大的,不仅占用很多的内存和 cpu 资源,而且占用着大部分的磁盘 io 资源,连 PHP 的官方都在声称,说 PHP 脚本 80% 的时间都在等待 MySQL 查询返回的结果。由此可见,提高系统的负载能力,降低 MySQL 的资源消耗迫在眉睫。\n**1、页面缓存功能:\n** 页面缓存功能降低MySQL的资源消耗的(系统本身就已经考虑,采用生成HTML页面,大大降低了数据库的压力)。\n\u003cstrong\u003e2、mysql服务器的优化\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e2.1、修改全站搜索\n修改my.ini(my.cnf) ,在 [mysqld] 后面加入一行“ft_min_word_len=1”,然后重启Mysql,再登录网站后台(模块管理-\u0026gt;全站搜索)重建全文索引。\n2.2、记录慢查询sql语句,修改my.ini(my.cnf),添加如下代码:\u003c/p\u003e\n\u003cp\u003e#log-slow-queries\nlong_query_time = 1 #是指执行超过多久的 sql 会被 log 下来\nlog-slow-queries = E:/wamp/logs/slow.log #设置把日志写在那里,可以 …\u003c/p\u003e"
May 19, 2009
Apache 的信息查看模块——Server-Status
"\u003cp\u003e前提:启用httpd.conf配置文件里的两个模块:|\n\u003cstrong\u003eLoadModule status_module modules/mod_status.so\nLoadModule info_module modules/mod_info.so\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e本文我们将讨论使用 mod_status 和 mod_info to 来告诉你目前服务器的工作情况\n\u003cstrong\u003e我可以得到什么样的信息?\u003c/strong\u003e\n使用 mod_status,你可以知道谁在你的服务器上看些什么东西,以及有多少人连在Web 服务器上。还有其他可能你的客户不关心的信息,但是对于你,一个站点管理员来说,却是十分有用的信息。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e客户喜欢这些资料\u003c/strong\u003e\n我不知道你的客户都是怎样的人物,但是我的客户喜欢我提供的信息。每天一次的信息还不够,因为到一天结束时才知道就太晚了。所以他们喜欢知道现在正在发生的事情。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003emod_info 和 mod_status\u003c/strong\u003e\n这两个模块可以提供十分有用的信息,而且十分方便。\nmod_status 能准确地告诉你,你的服务器正在“想”什么。你可以知道有哪些人在浏览您的网站,有多少子进程在运行,以及这些进程在干吗。\u003c/p\u003e\n\u003cp\u003e如果你使用缺省方法安装的 Apache 的 …\u003c/p\u003e"
May 19, 2009
解决win环境下Apache占用大量内存的问题
"\u003cp\u003e我有个服务是在windows下的Apache2提供的。访问量不是很大,隔4、5天竟然停止服务,调查发现Apache2的进程httpd.exe占用内存达到了1.5G。在网上找到如下解决办法。\u003c/p\u003e\n\u003cp\u003e用记事本打开apache2\\conf\\httpd.conf,查找MaxRequestsPerChild,将MaxRequestsPerChild 0改成MaxRequestsPerChild 50即可。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e原因是:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e 通常在“Windows任务管理器-进程”中可以看到两个apache.exe进程,一个是父进程、一个是子进程,父进程接到访问请求后,将请 求交由子进程处理。MaxRequestsPerChild这个指令设定一个独立的子进程将能处理的请求数量。在处理 “MaxRequestsPerChild 数字”个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放,如果再有访问请求,父进程会重新产生子进程进行处理。\u003c/p\u003e\n\u003cp\u003e 如果MaxRequestsPerChild缺省设为0(无限)或较大的数字(例如10000以上)可以使每个子进程处理更多的请求,不会因为 不断终止、启动子进程降低访问效率, …\u003c/p\u003e"