[原创]搞了个freebsd6.1+ gnome2.1.4的桌面
| July 12, 2008 17:45 | root | Via 本站原创
[原创] 让VMware 与宿主的文件夹或硬盘共享的设置方法
| July 12, 2008 17:18 | root | Via 本站原创
用mb_strlen得到字符串长度
| July 11, 2008 18:14 | root | Via 本站原创
还是有关中文的问题。PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在UTF-8编码下,一个汉字占3个字节)。
采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过mb_internal_encoding()函数得到。需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在 php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函数的问题。
采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过mb_internal_encoding()函数得到。需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在 php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函数的问题。
分享:办公室的22条潜规则
| July 11, 2008 17:10 | root | Via 本站原创
1. 必须有一个圈子。无论如何做都是画地为牢:不加入一个圈子,就成为所有人的敌人;加入一个圈子,就成为另一个圈子的敌人;加入两个圈子,就等于没有加入圈子。只有孤独求败的精英才可完全避免圈子的困扰——这种人通常只有一个圈子,圈子里只站着老板一个人。
2. 必须争取成为第二名。名次与帮助你的人数成正比——如果是第一名,将因缺乏帮助而成为第二名;第二名永远是得道多助的位置,坏处是永远不能成为第一名。
3. 必须理解职责的定义。职责是你必须要做的工作,但办公室的生存定律是,职责就是你必须要做的工作之外的所有工作。
4. 必须参加每一场饭局。如果参加,你在饭局上的发言会变成流言;如果不参加,你的流言会变成饭局上的发言。
5. 必须懂得八卦定理。和一位以上的同事成为亲密朋友,你的所有缺点与隐私将在办公室内公开;和一位以下的同事成为亲密朋友,所有人都会对你的缺点与隐私感兴趣。
6. 必须明白加班是一种艺术。如果你在上班时间做事,会因为没有加班而被认为不够勤奋;如果你不在上班时间做事,你会被认为工作效率低下而不得不去加班。
7. 必须熟练接受批评的方法。面对上司的判断,认为你没错,你缺乏认识问题的能力;认为你错了,你没有解决问题的能力——接受错误的最好方式就是对错误避而不谈。最后一条,不许和老板谈公正。
8. 必须理解“难得糊涂”的词义。糊涂让你被人认为没有主见,不糊涂让你被人认为难以相处——“难得糊涂”在于糊涂的时机,什么时候糊涂取决于你不糊涂的程度。
9. 必须明白集体主义是一种选择。如果你不支持大部分人的决定,想法一定不会被通过;如果你支持大部分人的决定,将减少晋升机会——有能力的人总是站在集体的反面。
2. 必须争取成为第二名。名次与帮助你的人数成正比——如果是第一名,将因缺乏帮助而成为第二名;第二名永远是得道多助的位置,坏处是永远不能成为第一名。
3. 必须理解职责的定义。职责是你必须要做的工作,但办公室的生存定律是,职责就是你必须要做的工作之外的所有工作。
4. 必须参加每一场饭局。如果参加,你在饭局上的发言会变成流言;如果不参加,你的流言会变成饭局上的发言。
5. 必须懂得八卦定理。和一位以上的同事成为亲密朋友,你的所有缺点与隐私将在办公室内公开;和一位以下的同事成为亲密朋友,所有人都会对你的缺点与隐私感兴趣。
6. 必须明白加班是一种艺术。如果你在上班时间做事,会因为没有加班而被认为不够勤奋;如果你不在上班时间做事,你会被认为工作效率低下而不得不去加班。
7. 必须熟练接受批评的方法。面对上司的判断,认为你没错,你缺乏认识问题的能力;认为你错了,你没有解决问题的能力——接受错误的最好方式就是对错误避而不谈。最后一条,不许和老板谈公正。
8. 必须理解“难得糊涂”的词义。糊涂让你被人认为没有主见,不糊涂让你被人认为难以相处——“难得糊涂”在于糊涂的时机,什么时候糊涂取决于你不糊涂的程度。
9. 必须明白集体主义是一种选择。如果你不支持大部分人的决定,想法一定不会被通过;如果你支持大部分人的决定,将减少晋升机会——有能力的人总是站在集体的反面。
MySQL压力测试mysqlslap工具使用
| July 11, 2008 17:04 | root | Via 本站原创
MySQL5.1地的确提供了好多有力的工具来帮助我们DBA进行数据库管理。
现在看一下这个压力测试工具mysqlslap.
关于他的选项手册上以及--help介绍的很详细。
我解释一下一些常用的选项。
这里要注意的几个选项:
--concurrency代表并发数量,多个可以用逗号隔开,当然你也可以用自己的分隔符隔开,这个时候要用到--delimiter开关。
--engines代表要测试的引擎,可以有多个,用分隔符隔开。
--iterations代表要运行这些测试多少次。
--auto-generate-sql 代表用系统自己生成的SQL脚本来测试。
--auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed)
--number-of-queries 代表总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算。比如倒数第二个结果2=200/100。
--debug-info 代表要额外输出CPU以及内存的相关信息。
--number-int-cols 代表示例表中的INTEGER类型的属性有几个。
--number-char-cols 意思同上。
--create-schema 代表自己定义的模式(在MySQL中也就是库)。
--query 代表自己的SQL脚本。
--only-print 如果只想打印看看SQL语句是什么,可以用这个选项。
现在来看一些我测试的例子。
1、用自带的SQL脚本来测试。
MySQL版本为5.1.23
[root@localhost ~]# mysqlslap --defaults-file=/usr/local/mysql-maria/my.cnf --concurrency=50,100,200 --iterations=1 --number-int-cols=4 --number-char-cols=35 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=200 --debug-info -uroot -p1 -S/tmp/mysql_3310.sock
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.063 seconds
Minimum number of seconds to run all queries: 0.063 seconds
Maximum number of seconds to run all queries: 0.063 seconds
Number of clients running queries: 50
Average number of queries per client: 4
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.070 seconds
Minimum number of seconds to run all queries: 0.070 seconds
Maximum number of seconds to run all queries: 0.070 seconds
Number of clients running queries: 100
Average number of queries per client: 2
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.092 seconds
Minimum number of seconds to run all queries: 0.092 seconds
Maximum number of seconds to run all queries: 0.092 seconds
Number of clients running queries: 200
Average number of queries per client: 1
Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.115 seconds
Minimum number of seconds to run all queries: 0.115 seconds
Maximum number of seconds to run all queries: 0.115 seconds
Number of clients running queries: 50
Average number of queries per client: 4
Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.134 seconds
Minimum number of seconds to run all queries: 0.134 seconds
Maximum number of seconds to run all queries: 0.134 seconds
Number of clients running queries: 100
Average number of queries per client: 2
Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.192 seconds
Minimum number of seconds to run all queries: 0.192 seconds
Maximum number of seconds to run all queries: 0.192 seconds
Number of clients running queries: 200
Average number of queries per client: 1
User time 0.06, System time 0.15
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 5803, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 8173, Involuntary context switches 528
我来解释一下结果的含义。
拿每个引擎最后一个Benchmark示例。
对于INNODB引擎,200个客户端同时运行这些SQL语句平均要花0.192秒。相应的MYISAM为0.092秒。
现在看一下这个压力测试工具mysqlslap.
关于他的选项手册上以及--help介绍的很详细。
我解释一下一些常用的选项。
这里要注意的几个选项:
--concurrency代表并发数量,多个可以用逗号隔开,当然你也可以用自己的分隔符隔开,这个时候要用到--delimiter开关。
--engines代表要测试的引擎,可以有多个,用分隔符隔开。
--iterations代表要运行这些测试多少次。
--auto-generate-sql 代表用系统自己生成的SQL脚本来测试。
--auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed)
--number-of-queries 代表总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算。比如倒数第二个结果2=200/100。
--debug-info 代表要额外输出CPU以及内存的相关信息。
--number-int-cols 代表示例表中的INTEGER类型的属性有几个。
--number-char-cols 意思同上。
--create-schema 代表自己定义的模式(在MySQL中也就是库)。
--query 代表自己的SQL脚本。
--only-print 如果只想打印看看SQL语句是什么,可以用这个选项。
现在来看一些我测试的例子。
1、用自带的SQL脚本来测试。
MySQL版本为5.1.23
[root@localhost ~]# mysqlslap --defaults-file=/usr/local/mysql-maria/my.cnf --concurrency=50,100,200 --iterations=1 --number-int-cols=4 --number-char-cols=35 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=200 --debug-info -uroot -p1 -S/tmp/mysql_3310.sock
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.063 seconds
Minimum number of seconds to run all queries: 0.063 seconds
Maximum number of seconds to run all queries: 0.063 seconds
Number of clients running queries: 50
Average number of queries per client: 4
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.070 seconds
Minimum number of seconds to run all queries: 0.070 seconds
Maximum number of seconds to run all queries: 0.070 seconds
Number of clients running queries: 100
Average number of queries per client: 2
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.092 seconds
Minimum number of seconds to run all queries: 0.092 seconds
Maximum number of seconds to run all queries: 0.092 seconds
Number of clients running queries: 200
Average number of queries per client: 1
Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.115 seconds
Minimum number of seconds to run all queries: 0.115 seconds
Maximum number of seconds to run all queries: 0.115 seconds
Number of clients running queries: 50
Average number of queries per client: 4
Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.134 seconds
Minimum number of seconds to run all queries: 0.134 seconds
Maximum number of seconds to run all queries: 0.134 seconds
Number of clients running queries: 100
Average number of queries per client: 2
Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.192 seconds
Minimum number of seconds to run all queries: 0.192 seconds
Maximum number of seconds to run all queries: 0.192 seconds
Number of clients running queries: 200
Average number of queries per client: 1
User time 0.06, System time 0.15
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 5803, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 8173, Involuntary context switches 528
我来解释一下结果的含义。
拿每个引擎最后一个Benchmark示例。
对于INNODB引擎,200个客户端同时运行这些SQL语句平均要花0.192秒。相应的MYISAM为0.092秒。






