Archive for 三月, 2010

关于Perl的几点:多行注释,REF函数,类的初始化

多行注释:
perl没有多行注释,可以用下面代替:
=pod
代码行;
.
.
.
代码行;
=cut

关于ref函数:
ref EXPR
ref Returns a non-empty string if EXPR is a reference, the empty
string otherwise. If EXPR is not specified, $_ will be used. The
value returned depends on the type of thing the reference is a
reference to. Builtin types include:

SCALAR
ARRAY
HASH
CODE
REF
GLOB
LVALUE

If the referenced object has been blessed into a package, then
that package name is returned instead. You can think of “ref” as
a “typeof” operator.

讲类的段落,比较明了:
Object Construction
All objects are references, but not all references are objects. A reference won’t work as an object unless its referent is specially marked to tell Perl what package it belongs to. The act of marking a referent with a package name–and therefore, its class, since a class is just a package–is known as blessing. You can think of the blessing as turning a reference into an object, although it’s more accurate to say that it turns the reference into an object reference.
阅读全文

为什么thinkpad T61会发现吱吧电流声[zt]

一台THINKPAD T61笔记本电脑单击用电池使用电脑时,在主板和电池接口的附近会发出吱吱电流声请问这是怎么回事呀?

THINKPAD T61笔记本电脑的CPU在默认状态下是可以变频的,所以当笔记本电脑使用电池时,为了发挥省电效能,CPU会降频运行,而在CPU与WINDOWS操作系统产生大量数据交换的时候,CPU会自动升高主频来完成加速任务,在完成后CPU会自动升高主频来加速完成任务,在完成后CPU会自动降回省电的频率运行,而这一高一低的来回切换频,造成笔记本电脑发出吧吧电流声,是正常的现象,所以要解决该问题,只要在主板BIOS设置中将CPU频率调节到始终使用最高,问题就可以解决,具体方法如下:启动计算机,进入主板BIOS设置,选择CONFIG-POWER-CPU POWER MANAGEMENT –AUTOMATIC将其值改为DISABLE,保存退出主板BIOS设置,问题就可以解决了。

PS:还没尝试过,还有人建议禁用USB接口的节电功能。目前有效果的是,移除底部的散热加,放平笔记本电流声就减少明显。

awk中使用单引号

看了一个帖子,是说明,如何在awk中使用单引号的,并举了一个例子,原文如下:

awk 中插入单引号需要转义,但是并不是想象中的那么简单。有点周折,发出来和大家共享。

awk ‘{print “INSERT INTO TABLE_NAME (COL1,COL2) VALUES (““’\’’“ $1 “’\’’“ “,“ “’\’’“ $2 “’\’’“ “)“ }’ DATA_FILE >abc.sql

其实,这是比较糟糕的方式,awk的单引号可以用\47 表示,原文中的例子可为:

awk ‘{print “INSERT INTO TABLE_NAME (COL1,COL2) VALUES (\47“$1“\47,\47“$2“\47);“ }‘ DATA_FILE >abc.sql

顺便说一句,原文中所使用的sql语句在“)”后面没有加“;”号,这会有问题的。

MySQL分区(Partition)功能试验

[概述]
[分区表和未分区表试验过程]
[分区命令详解]

[概述]

自5.1开始对分区(Partition)有支持,6.0应比较稳定

= 水平分区(根据列属性按行分)=
举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。

=== 水平分区的几种模式:===
* Range(范围) – 这种模式允许DBA将数据划分不同范围。例如DBA可以将一个表通过年份划分成三个分区,80年代(1980′s)的数据,90年代(1990′s)的数据以及任何在2000年(包括2000年)后的数据。

* Hash(哈希) – 这中模式允许DBA通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区,。例如DBA可以建立一个对表主键进行分区的表。

* Key(键值) – 上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

* List(预定义列表) – 这种模式允许系统通过DBA定义的列表的值所对应的行数据进行分割。例如:DBA建立了一个横跨三个分区的表,分别根据2004年2005年和2006年值所对应的数据。

* Composite(复合模式) – 很神秘吧,哈哈,其实是以上模式的组合使用而已,就不解释了。举例:在初始化已经进行了Range范围分区的表上,我们可以对其中一个分区再进行hash哈希分区。

= 垂直分区(按列分)=
举个简单例子:一个包含了大text和BLOB列的表,这些text和BLOB列又不经常被访问,这时候就要把这些不经常使用的text和BLOB了划分到另一个分区,在保证它们数据相关性的同时还能提高访问速度。
阅读全文