金银财宝价最高, 光阴似箭斩人的刀。 日月穿梭催人老 太阳佛三道金光把人熬。
意思说,就算有千军万马金银无数,最终也敌不过时间的刻画!最终的结果还是灰飞烟灭!
所以做人要看淡泊些才好
分析:金银财宝的价值是高的,但光阴像箭那样快能使人衰老就像用刀在杀人,日月如穿梭把人催老,太阳这个神佛的三道金光能把人熬老。
三道金光分别是蒿殷仙帝、弘虚仙帝、斐狄仙帝!三大宗主!
意思说,就算有千军万马金银无数,最终也敌不过时间的刻画!最终的结果还是灰飞烟灭!
所以做人要看淡泊些才好
分析:金银财宝的价值是高的,但光阴像箭那样快能使人衰老就像用刀在杀人,日月如穿梭把人催老,太阳这个神佛的三道金光能把人熬老。
三道金光分别是蒿殷仙帝、弘虚仙帝、斐狄仙帝!三大宗主!
#!perl
use strict;
use Cache::Memcached::Fast;
sub getConfig{
return ["xx.xx.xx.201:11211","xx.xx.xx.203:11211","xx.xx.xx.204:11211","xx.xx.xx.205:11211","xx.xx.xx.206:11211","xx.xx.xx.207:11211","xx.xx.xx.208:11211","xx.xx.xx.218:11211","xx.xx.xx.235:11211","xx.xx.xx.236:11211","xx.xx.xx.237:11211","xx.xx.xx.238:11211","xx.xx.xx.239:11211","xx.xx.xx.240:11211"];
}
my $memcached ;
my $expires = 1800;
my $memcached =Cache::Memcached::Fast->new({ servers =>getConfig(), ketama_points => 151});
my @addMutiKeys=();
my @addMutiExipres=();
my @addMutiValues=();
my $addMultiStr="";
my $split="";
for ( my $i = 0 ; $i < 10000 ; $i++ ) {
my $index=$i;
push(@addMutiKeys,"myn_key_".$index);
push(@addMutiValues,"myn_value_".$index);
push(@addMutiExipres,3600);
$addMultiStr=$addMultiStr.$split."[\""."myn_key_".$index."\",\"1\",3600]";
$split=",";
}
#my $hashKeys=$memcached->add_multi(["aaa","111",3600],["bbb","222",3600]);
#my $hashKeys=$memcached->add_multi(map { [$addMutiKeys[$_], "aa"] } @addMutiValues);
#$hashKeys=$memcached->get_multi(@addMutiKeys);
my $hashKeys;
my $evalStr="return \$memcached->add_multi($addMultiStr);";
$hashKeys=eval($evalStr);
my $i=0;
for($i=0;$i<@addMutiKeys;$i++)
{
#print $addMutiKeys[$i]."\n";
}
my $ekey;
foreach $ekey (keys(%$hashKeys))
{
print "key=".$ekey."[".$$hashKeys{$ekey}."]\n";
}
$memcached->disconnect_all();
use strict;
use Cache::Memcached::Fast;
sub getConfig{
return ["xx.xx.xx.201:11211","xx.xx.xx.203:11211","xx.xx.xx.204:11211","xx.xx.xx.205:11211","xx.xx.xx.206:11211","xx.xx.xx.207:11211","xx.xx.xx.208:11211","xx.xx.xx.218:11211","xx.xx.xx.235:11211","xx.xx.xx.236:11211","xx.xx.xx.237:11211","xx.xx.xx.238:11211","xx.xx.xx.239:11211","xx.xx.xx.240:11211"];
}
my $memcached ;
my $expires = 1800;
my $memcached =Cache::Memcached::Fast->new({ servers =>getConfig(), ketama_points => 151});
my @addMutiKeys=();
my @addMutiExipres=();
my @addMutiValues=();
my $addMultiStr="";
my $split="";
for ( my $i = 0 ; $i < 10000 ; $i++ ) {
my $index=$i;
push(@addMutiKeys,"myn_key_".$index);
push(@addMutiValues,"myn_value_".$index);
push(@addMutiExipres,3600);
$addMultiStr=$addMultiStr.$split."[\""."myn_key_".$index."\",\"1\",3600]";
$split=",";
}
#my $hashKeys=$memcached->add_multi(["aaa","111",3600],["bbb","222",3600]);
#my $hashKeys=$memcached->add_multi(map { [$addMutiKeys[$_], "aa"] } @addMutiValues);
#$hashKeys=$memcached->get_multi(@addMutiKeys);
my $hashKeys;
my $evalStr="return \$memcached->add_multi($addMultiStr);";
$hashKeys=eval($evalStr);
my $i=0;
for($i=0;$i<@addMutiKeys;$i++)
{
#print $addMutiKeys[$i]."\n";
}
my $ekey;
foreach $ekey (keys(%$hashKeys))
{
print "key=".$ekey."[".$$hashKeys{$ekey}."]\n";
}
$memcached->disconnect_all();
表结构如下:
mysql> select * from test;
+----+-------+
| id | name |
+----+-------+
| 1 | test1 |
| 2 | test2 |
| 3 | test3 |
| 4 | test4 |
| 5 | test5 |
+----+-------+
执行以下SQL:
mysql> select * from test where id in(3,1,5);
+----+-------+
| id | name |
+----+-------+
| 1 | test1 |
| 3 | test3 |
| 5 | test5 |
+----+-------+
3 rows in set (0.00 sec)
这个select在mysql中得结果会自动按照id升序排列,
但是我想执行"select * from test where id in(3,1,5);"的结果按照in中得条件排序,即:3,1,5,想得到的结果如下:
id name
3 test3
1 test1
5 test5
select id, name from table where 'daodao' IN (list);
IN (list); 如果list是常量,则可以直接用IN,大家怎么看?
mysql> select * from test;
+----+-------+
| id | name |
+----+-------+
| 1 | test1 |
| 2 | test2 |
| 3 | test3 |
| 4 | test4 |
| 5 | test5 |
+----+-------+
执行以下SQL:
mysql> select * from test where id in(3,1,5);
+----+-------+
| id | name |
+----+-------+
| 1 | test1 |
| 3 | test3 |
| 5 | test5 |
+----+-------+
3 rows in set (0.00 sec)
这个select在mysql中得结果会自动按照id升序排列,
但是我想执行"select * from test where id in(3,1,5);"的结果按照in中得条件排序,即:3,1,5,想得到的结果如下:
id name
3 test3
1 test1
5 test5
mysql> select * from Tbl_FQQ_FScoreCount where id in(3,1,5) order by find_in_set(id,'3,1,5');
+----+-----------+-------------+
| ID | FQQ | FScoreCount |
+----+-----------+-------------+
| 3 | 715113297 | 40 |
| 1 | 78540474 | 37 |
| 5 | 1735548 | 0 |
+----+-----------+-------------+
+----+-----------+-------------+
| ID | FQQ | FScoreCount |
+----+-----------+-------------+
| 3 | 715113297 | 40 |
| 1 | 78540474 | 37 |
| 5 | 1735548 | 0 |
+----+-----------+-------------+
select id, name from table where 'daodao' IN (list);
IN (list); 如果list是常量,则可以直接用IN,大家怎么看?
WD(西部数据)64M 绿盘补丁
WD6400AARS
WD10EARS
WD15EARS
WD20EARS
以上型号的WD硬盘都需要打补丁 或者加跳线帽
这里是补丁下载地址
WD6400AARS
WD10EARS
WD15EARS
WD20EARS
以上型号的WD硬盘都需要打补丁 或者加跳线帽
这里是补丁下载地址
http://support.wdc.com/product/downloadsw.asp?sid=123&lang=cn
Linux中select函数学习及实例笔记
http://blog.chinaunix.net/u3/104447/showart_2150356.html
http://hi.baidu.com/wind_stay/blog/item/3f803a35849cd4bdd0a2d38b.html阅读全文
http://blog.chinaunix.net/u3/104447/showart_2150356.html
http://hi.baidu.com/wind_stay/blog/item/3f803a35849cd4bdd0a2d38b.html阅读全文
给了他一项承受不了的罪名。
“我会给他们一个无法拒绝的条件”_
北宋据现代学者测算:它的国民生产总值是世界的80%,北宋是‘人类第二个千年的领头羊’
大行皇帝归天,谁来继承大统?宋史徽宗本纪:母以字贵,如继统,应立先帝,同母弟简王(和先帝的同母:第十三子)。哲宗皇帝不是向太后所生,是庶出,是朱太后所生。如果再立了简王。
向皇后是已故宰相向敏中的曾孙女,英宗治平三年嫁给赵顼,封为安国夫人,治平四年赵顼即位,被册立为皇后。
北宋灭亡的时期其国内,而此时当政的神宗归天,帝王儿子早死。没有嫡传皇子,此时候的向皇后(尊为"元祐皇后")也没有留下儿子。向皇后被尊为皇太后,朱德妃却不能母以子贵,只被尊为太妃,也没有受到应有的待遇。
欠缺治国才能。李煜国家小,
“宋朝的第六代皇帝宋神宗在位时,任用王安石变法,国民经济迅速发展,国家富庶繁华,据现代专家统计,北宋时期的国民生产总值,占了当时世界的80%,是明朝的10倍之多。”其神宗皇后-向皇后功不可没!
在向太后后面有宰相位置的须臾。。
但是史学界公认的看法是,宋朝的国民生产总值占当时世界的50%以上,最高达80%!因此我们可以这样说:宋朝的时候中国很富裕,比世界其他地方最好水平至少富裕一倍!”
给了他一项承受不了的罪名。那个时候宋朝很富有,但是还是提倡节俭。
范仲淹的儿子给宋徽宗招回来当宰相路上死了,苏轼也在回来途中死,一个个的文豪巨星都陨落了。
早期的徽宗皇上饿了要吃饭,而大臣说需要等我说完,把皇上的衣服给扯破了。
而和唐朝的魏征相似,但是有长孙皇后在位辅佐,而这时候的,向太后已经归西,没法实现偏听者暗,监听则明
任用了蔡京做宰相,这是最大的失误。奸相辅政,作为一个皇帝不能应一个共同爱好而,亲近和重用某些人。结果还曲解易经,把皇帝的品味提高了,铸九鼎,大兴奢侈之风。
“我会给他们一个无法拒绝的条件”_
北宋据现代学者测算:它的国民生产总值是世界的80%,北宋是‘人类第二个千年的领头羊’
大行皇帝归天,谁来继承大统?宋史徽宗本纪:母以字贵,如继统,应立先帝,同母弟简王(和先帝的同母:第十三子)。哲宗皇帝不是向太后所生,是庶出,是朱太后所生。如果再立了简王。
向皇后是已故宰相向敏中的曾孙女,英宗治平三年嫁给赵顼,封为安国夫人,治平四年赵顼即位,被册立为皇后。
北宋灭亡的时期其国内,而此时当政的神宗归天,帝王儿子早死。没有嫡传皇子,此时候的向皇后(尊为"元祐皇后")也没有留下儿子。向皇后被尊为皇太后,朱德妃却不能母以子贵,只被尊为太妃,也没有受到应有的待遇。
欠缺治国才能。李煜国家小,
“宋朝的第六代皇帝宋神宗在位时,任用王安石变法,国民经济迅速发展,国家富庶繁华,据现代专家统计,北宋时期的国民生产总值,占了当时世界的80%,是明朝的10倍之多。”其神宗皇后-向皇后功不可没!
在向太后后面有宰相位置的须臾。。
但是史学界公认的看法是,宋朝的国民生产总值占当时世界的50%以上,最高达80%!因此我们可以这样说:宋朝的时候中国很富裕,比世界其他地方最好水平至少富裕一倍!”
给了他一项承受不了的罪名。那个时候宋朝很富有,但是还是提倡节俭。
范仲淹的儿子给宋徽宗招回来当宰相路上死了,苏轼也在回来途中死,一个个的文豪巨星都陨落了。
早期的徽宗皇上饿了要吃饭,而大臣说需要等我说完,把皇上的衣服给扯破了。
而和唐朝的魏征相似,但是有长孙皇后在位辅佐,而这时候的,向太后已经归西,没法实现偏听者暗,监听则明
任用了蔡京做宰相,这是最大的失误。奸相辅政,作为一个皇帝不能应一个共同爱好而,亲近和重用某些人。结果还曲解易经,把皇帝的品味提高了,铸九鼎,大兴奢侈之风。
时下,登上CCTV10百家讲坛的,是北京市海淀进修学校高级教师袁腾飞,讲述的内容是《两宋风云》。在前几讲插入的楔子是:“北宋是个很富庶的朝代,历朝都无法与它相比。据史学家研究,北宋的国民生产总值占当时世界的80%”。由于楔子的反复灌输,在给我深刻印象的同时,也引起我的质疑。阅读全文
电视上经常说VCR,.但偶不知道全称是什么,有知道的告诉一声1
VCR是Video Cassette Recorder的缩写 盒式磁带录像机
但是在电视上的总以节目里面 例如某主持人说:让我们先看一段VCR
这里的VCR的意思是指一个视频片断
VCR是Video Cassette Recorder的缩写 盒式磁带录像机
但是在电视上的总以节目里面 例如某主持人说:让我们先看一段VCR
这里的VCR的意思是指一个视频片断
有三个办法,1.mysqlimport 2.load data 3才是source ,最好先去掉所有的索引,待数据完成导入后再一个个添加回
LOAD DATA INFILE句法
基本语法:
load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields
[terminated by't']
[OPTIONALLY] enclosed by '']
[escaped by'\' ]]
[lines terminated by'n']
[ignore number lines]
[(col_name, )]
load data infile语句从一个文本文件中以很高的速度读入一个表中。使用这个命令之前,mysqld进程(服务)必须已经在运行。为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。另外,为了对服务器上文件使用load data infile,在服务器主机上你必须有file的权限。
1 如果你指定关键词low_priority,那么MySQL将会等到没有其他人读这个表的时候,才把插入数据。可以使用如下的命令:
load data low_priority infile "/home/mark/data sql" into table Orders;
2 如果指定local关键词,则表明从客户主机读文件。如果local没指定,文件必须位于服务器上。
3 replace和ignore关键词控制对现有的唯一键记录的重复的处理。如果你指定replace,新行将代替有相同的唯一键值的现有行。如果你指定ignore,跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键时,出现一个错误,并且文本文件的余下部分被忽略。例如:
load data low_priority infile "/home/mark/data sql" replace into table Orders;
4 分隔符
(1) fields关键字指定了文件记段的分割格式,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:
terminated by分隔符:意思是以什么字符作为分隔符
enclosed by字段括起字符
escaped by转义字符
terminated by描述字段的分隔符,默认情况下是tab字符(\t)
enclosed by描述的是字段的括起字符。
escaped by描述的转义字符。默认的是反斜杠(backslash:\ )
例如:load data infile "/home/mark/Orders txt" replace into table Orders fields terminated by',' enclosed by '"';
(2)lines 关键字指定了每条记录的分隔符默认为'\n'即为换行符
如果两个字段都指定了那fields必须在lines之前。 如果不指定fields关键字缺省值与如果你这样写的相同: fields terminated by'\t' enclosed by ’ '' ‘ escaped by'\\'
如果你不指定一个lines子句,缺省值与如果你这样写的相同: lines terminated by'\n'
例如:load data infile "/jiaoben/load.txt" replace into table test fields terminated by ',' lines terminated by '/n';
5 load data infile 可以按指定的列把文件导入到数据库中。 当我们要把数据的一部分内容导入的时候,,需要加入一些栏目(列/字段/field)到MySQL数据库中,以适应一些额外的需要。比方说,我们要从Access数据库升级到MySQL数据库的时候
下面的例子显示了如何向指定的栏目(field)中导入数据:
load data infile "/home/Order txt" into table Orders(Order_Number, Order_Date, Customer_ID);
6 当在服务器主机上寻找文件时,服务器使用下列规则:
(1)如果给出一个绝对路径名,服务器使用该路径名。
(2)如果给出一个有一个或多个前置部件的相对路径名,服务器相对服务器的数据目录搜索文件。
(3)如果给出一个没有前置部件的一个文件名,服务器在当前数据库的数据库目录寻找文件。
例如: /myfile txt”给出的文件是从服务器的数据目录读取,而作为“myfile txt”给出的一个文件是从当前数据库的数据库目录下读取。
注意:字段中的空值用\N表示
来源:http://blog.chinaunix.net/u3/100752/showart_1993119.html
补充:
创建一个表
Use Test;
Create Table TableTest(
`ID` mediumint(8) default '0',
`Name` varchar(100) default ''
) TYPE=MyISAM;
向数据表导入数据
Load Data InFile 'C:/Data.txt' Into Table `TableTest`
常用如下:
Load Data InFile 'C:/Data.txt' Into Table `TableTest` Lines Terminated By 'rn';
这个语句,字段默认用制表符隔开,每条记录用换行符隔开,在Windows下换行符为“rn”
C:/Data.txt 文件内容如下面两行:
1 A
2 B
“1”和“A”之间有一个制表符
这样就导进两条记录了。
自定义语法
Load Data InFile 'C:/Data.txt' Into Table `TableTest` Fields Terminated By ',' Enclosed By '"' Escaped By '"' Lines Terminated By 'rn';
Fields Terminated By ',' Enclosed By '"' Escaped By '"'
表示每个字段用逗号分开,内容包含在双引号内
Lines Terminated By 'rn';
表示每条数据用换行符分开
和 Load Data InFile 相反的是把表的数据导出语句
Select * From `TableTest` Into OutFile 'C:/Data_OutFile.txt';
LOAD DATA INFILE句法
基本语法:
load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields
[terminated by't']
[OPTIONALLY] enclosed by '']
[escaped by'\' ]]
[lines terminated by'n']
[ignore number lines]
[(col_name, )]
load data infile语句从一个文本文件中以很高的速度读入一个表中。使用这个命令之前,mysqld进程(服务)必须已经在运行。为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。另外,为了对服务器上文件使用load data infile,在服务器主机上你必须有file的权限。
1 如果你指定关键词low_priority,那么MySQL将会等到没有其他人读这个表的时候,才把插入数据。可以使用如下的命令:
load data low_priority infile "/home/mark/data sql" into table Orders;
2 如果指定local关键词,则表明从客户主机读文件。如果local没指定,文件必须位于服务器上。
3 replace和ignore关键词控制对现有的唯一键记录的重复的处理。如果你指定replace,新行将代替有相同的唯一键值的现有行。如果你指定ignore,跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键时,出现一个错误,并且文本文件的余下部分被忽略。例如:
load data low_priority infile "/home/mark/data sql" replace into table Orders;
4 分隔符
(1) fields关键字指定了文件记段的分割格式,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:
terminated by分隔符:意思是以什么字符作为分隔符
enclosed by字段括起字符
escaped by转义字符
terminated by描述字段的分隔符,默认情况下是tab字符(\t)
enclosed by描述的是字段的括起字符。
escaped by描述的转义字符。默认的是反斜杠(backslash:\ )
例如:load data infile "/home/mark/Orders txt" replace into table Orders fields terminated by',' enclosed by '"';
(2)lines 关键字指定了每条记录的分隔符默认为'\n'即为换行符
如果两个字段都指定了那fields必须在lines之前。 如果不指定fields关键字缺省值与如果你这样写的相同: fields terminated by'\t' enclosed by ’ '' ‘ escaped by'\\'
如果你不指定一个lines子句,缺省值与如果你这样写的相同: lines terminated by'\n'
例如:load data infile "/jiaoben/load.txt" replace into table test fields terminated by ',' lines terminated by '/n';
5 load data infile 可以按指定的列把文件导入到数据库中。 当我们要把数据的一部分内容导入的时候,,需要加入一些栏目(列/字段/field)到MySQL数据库中,以适应一些额外的需要。比方说,我们要从Access数据库升级到MySQL数据库的时候
下面的例子显示了如何向指定的栏目(field)中导入数据:
load data infile "/home/Order txt" into table Orders(Order_Number, Order_Date, Customer_ID);
6 当在服务器主机上寻找文件时,服务器使用下列规则:
(1)如果给出一个绝对路径名,服务器使用该路径名。
(2)如果给出一个有一个或多个前置部件的相对路径名,服务器相对服务器的数据目录搜索文件。
(3)如果给出一个没有前置部件的一个文件名,服务器在当前数据库的数据库目录寻找文件。
例如: /myfile txt”给出的文件是从服务器的数据目录读取,而作为“myfile txt”给出的一个文件是从当前数据库的数据库目录下读取。
注意:字段中的空值用\N表示
来源:http://blog.chinaunix.net/u3/100752/showart_1993119.html
补充:
创建一个表
Use Test;
Create Table TableTest(
`ID` mediumint(8) default '0',
`Name` varchar(100) default ''
) TYPE=MyISAM;
向数据表导入数据
Load Data InFile 'C:/Data.txt' Into Table `TableTest`
常用如下:
Load Data InFile 'C:/Data.txt' Into Table `TableTest` Lines Terminated By 'rn';
这个语句,字段默认用制表符隔开,每条记录用换行符隔开,在Windows下换行符为“rn”
C:/Data.txt 文件内容如下面两行:
1 A
2 B
“1”和“A”之间有一个制表符
这样就导进两条记录了。
自定义语法
Load Data InFile 'C:/Data.txt' Into Table `TableTest` Fields Terminated By ',' Enclosed By '"' Escaped By '"' Lines Terminated By 'rn';
Fields Terminated By ',' Enclosed By '"' Escaped By '"'
表示每个字段用逗号分开,内容包含在双引号内
Lines Terminated By 'rn';
表示每条数据用换行符分开
和 Load Data InFile 相反的是把表的数据导出语句
Select * From `TableTest` Into OutFile 'C:/Data_OutFile.txt';
歌曲赏析
初听这首歌很多人都会感到很别扭,但多听几遍之后便会升起一种说不出的喜欢。仔细想想,其实中国古代的军歌战曲还正是这种曲调。古代音乐和现在流行的音乐差别很大,所以听起来别扭也就不足为怪了。不过仔细再听几遍还真挺有感觉,虽说新三国剧情拍得像偶像剧但这片头曲还真有股子英雄气。乱世之间,金戈铁马,有气势,有血性。这可以说是一种中国风,当然不是流行音乐里的那种,而是古代军乐的中国风。 看着新版三国肯定就少不了和老版三国作比较。剧情要比,演员要比,主题曲也要比。不过喜欢老版 “滚滚长江东逝水”的观众显然要更多一些。其实这两首歌并不能单纯的比较出优劣,因为它们的风格是完全不一样的。新版主题曲突出的是一种霸气,英雄气。旧版则有一种悲情色彩,从词里就可以看出来,是非成败转头空,无论英雄狗熊最后都付笑谈中。一种看破红尘的情怀。换句话说,新版是以乱世之中的英雄为主人公,抒发自己的胸臆。而老版主题曲则是以后人的角度来看历史,有一种凭吊前人的色彩。因为所出发的角度不一样所以不能简单的论高低。 很多人都在批评新版的歌词写得太烂,确实,要是和唐诗宋词比起来那简直就是天上地下。不过别忘了这可是现代人来写复古风格的词,咱别用唐宋诗词的标准来苛求现代词人。这就像你找一个老外和你比说中国话一样。很多人都很怀念老版的“滚滚长江东逝水”。很大原因因为这歌词是三国演义原著的开篇词。关于这首开篇词我想有必要说一下。可能有些人一直认为这三国演义的开篇词是罗贯中写的,其实不是。这是明朝的大家杨慎的一首词,“临江仙”,所以这首词根本就不是专门为三国而写的。不仅如此,在三国演义中引用这首词的也不是罗贯中,因为杨慎出生的时候罗贯中早就不知死了多少年了。事实上是清朝的文学批评家毛宗岗把这首“临江仙”引到了三国演义的卷首。
风云起处 苍黄变化 箭在弦上不得不发 允文允武 三分天下 鼎之轻重 可以问吗
弹剑作歌 披挂上马 霸王大业不是空话 男儿碰撞 一团火花 百年人生 瞬间光华
塞北秋风猎马 江南春雨杏花 千古江山如诗如画 还我一个太平天下
千古江山如诗如画 还我一个太平天下
特别喜欢里面:塞北秋风猎马 江南春雨杏花 千古江山如诗如画,转折得很好。再就是:百年人生 瞬间光华
允文允武
发音:yǔn wén yǔn wǔ 释义:允:文言语首助词。形容既能文又能武。 语出:《诗经·鲁颂·泮水》:“允文允武。昭假烈祖。” 示例:传忠传孝,~。 ★明·张岱《孙忠烈公世乘序》
8位为一个字节,共计:64位,共计:8个字节。
int QQ,int Score
4+4个字节*100万= 8000000字节
1024字节=1KB
去掉3个0,8000k,约等于:8M,不大也,呵呵
int QQ,int Score
4+4个字节*100万= 8000000字节
1024字节=1KB
去掉3个0,8000k,约等于:8M,不大也,呵呵
摘自CU论坛里面的一个问题:
[root@mail mysql]# /usr/local/mysql/bin/mysql -uroot -p123 -e "show table status from stat" | awk 'NR>=2{index_size =$9;data_size =$7}END{print "index_size\t"(index_size/1024/1024)"M";print "data_size\t"(data_size/1024/1024)"M"}'
index_size 2717.81M
data_size 3858.27M
mysql -uroot -e "show table status from stat" | awk 'NR>=2{index_size =$9;data_size =$7}END{print "index_size\t"(index_size/1024/1024)"M";print "data_size\t"(data_size/1024/1024)"M"}'
MERGE引擎类型可以把许多结构相同的表合并为一个表。通过对merge表的简单查询,可以轻松实现对多个子表进行查询的目的。
我们的日志系统按照月为单位进行分表,由merge联合所有月份子表,实现跨月(跨表)的日志查询。这样的做法是程序端的逻辑比较简单,无需关注多表的数据整合和处理。
随着子表越来越多、数据越来越大,查询的速度越来越慢。子表的数据量增长并非数量级的,那么从理论上讲通过merge进行查询,速度受到影响的浮动应该是很小的,但现实却非如此。
刚开始并不知道原因,通过profiling检查详细的耗时情况,发现Sending data占用了99%的时间,从官方解释来看,Sending data貌似是发送数据到client端的耗时,检查了一下,仅仅只有几K的数据发送,明显不是此原因。SQL挺简单的,基本的优化也都做了,那么是什么原因?
之后调试代码时无意中针对一个子表进行了一次查询,发现速度几十倍的提高,之前对merge的查询需要20多秒,现在仅仅不到1秒就执行完了,这个感觉是很明显的,于是进一步进行了测试,发现问题的确如此。
所以,建议还是在代码逻辑中对多表数据进行处理,避免使用Merge引擎。
有时间看一下源码中Sending data是如何计算的以及Merge是如何进行多表数据集合的。 希望Mysql能把Merge引擎做的更加稳定、高效,真正发挥Merge引擎的优势。
来源:http://hi.baidu.com/chancey/blog/item/775d8682db4387a90df4d20e.html
我们的日志系统按照月为单位进行分表,由merge联合所有月份子表,实现跨月(跨表)的日志查询。这样的做法是程序端的逻辑比较简单,无需关注多表的数据整合和处理。
随着子表越来越多、数据越来越大,查询的速度越来越慢。子表的数据量增长并非数量级的,那么从理论上讲通过merge进行查询,速度受到影响的浮动应该是很小的,但现实却非如此。
刚开始并不知道原因,通过profiling检查详细的耗时情况,发现Sending data占用了99%的时间,从官方解释来看,Sending data貌似是发送数据到client端的耗时,检查了一下,仅仅只有几K的数据发送,明显不是此原因。SQL挺简单的,基本的优化也都做了,那么是什么原因?
之后调试代码时无意中针对一个子表进行了一次查询,发现速度几十倍的提高,之前对merge的查询需要20多秒,现在仅仅不到1秒就执行完了,这个感觉是很明显的,于是进一步进行了测试,发现问题的确如此。
所以,建议还是在代码逻辑中对多表数据进行处理,避免使用Merge引擎。
有时间看一下源码中Sending data是如何计算的以及Merge是如何进行多表数据集合的。 希望Mysql能把Merge引擎做的更加稳定、高效,真正发挥Merge引擎的优势。
来源:http://hi.baidu.com/chancey/blog/item/775d8682db4387a90df4d20e.html
比序列化反序列化快的var_export 存入DB后反回位数组的方法
Php/Js/Shell/Go jackxiang 2010-8-11 10:52
版权归膘哥,来源:
膘叔(19129540) 10:45:16
var_export后是存成字符串了。
接合swoole实践:
输出:
curl http://127.0.0.1:9501/abc
Swoole\Http\Request::__set_state(array(
'fd' => 1,
'header' =>
array (
'user-agent' => 'curl/7.29.0',
'host' => '127.0.0.1:9501',
'accept' => '*/*',
),
'server' =>
array (
'request_method' => 'GET',
'request_uri' => '/abc',
'path_info' => '/abc',
'request_time' => 1649747144,
'request_time_float' => 1649747144.16464,
'server_protocol' => 'HTTP/1.1',
'server_port' => 9501,
'remote_port' => 62006,
'remote_addr' => '127.0.0.1',
'master_time' => 1649747143,
),
'cookie' => NULL,
'get' => NULL,
'files' => NULL,
'post' => NULL,
'tmpfiles' => NULL,
))
Hello, world!
回忆未来(372647693) 10:58:07
最后,═ 云下遮雨 11:28:47 给出了个解决方案:
eval( '$c='.$b.';');
eval( "\$c={$b};" );
eval( "\$c=".$b.";" );
我尝试了一下,确实还回位原来的数组了,代码如下:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
指出了膘哥的一个小错误:
═ 云下遮雨 11:38:46
eval( "\$c=\$b" ); 这样就是错的,相当于 $c=$b
膘叔(19129540) 10:45:16
$a = array (1, 2, array ("a", "b", "c"));
$b = var_export ($a,TRUE);
eval( "\$c=\$b;" );
echo '<pre>';
print_r( $c );
echo '</pre>';
膘叔(19129540) 10:45:35$b = var_export ($a,TRUE);
eval( "\$c=\$b;" );
echo '<pre>';
print_r( $c );
echo '</pre>';
var_export后是存成字符串了。
接合swoole实践:
输出:
curl http://127.0.0.1:9501/abc
Swoole\Http\Request::__set_state(array(
'fd' => 1,
'header' =>
array (
'user-agent' => 'curl/7.29.0',
'host' => '127.0.0.1:9501',
'accept' => '*/*',
),
'server' =>
array (
'request_method' => 'GET',
'request_uri' => '/abc',
'path_info' => '/abc',
'request_time' => 1649747144,
'request_time_float' => 1649747144.16464,
'server_protocol' => 'HTTP/1.1',
'server_port' => 9501,
'remote_port' => 62006,
'remote_addr' => '127.0.0.1',
'master_time' => 1649747143,
),
'cookie' => NULL,
'get' => NULL,
'files' => NULL,
'post' => NULL,
'tmpfiles' => NULL,
))
Hello, world!
回忆未来(372647693) 10:58:07
<?php
$a = array (1, 2, array ("a", "b", "c"));
$b = var_export ($a,TRUE);
eval( "\$c=\$b;" );
var_dump($c);
$a = array (1, 2, array ("a", "b", "c"));
$b = var_export ($a,TRUE);
eval( "\$c=\$b;" );
var_dump($c);
string(94) "array (
0 => 1,
1 => 2,
2 =>
array (
0 => 'a',
1 => 'b',
2 => 'c',
),
)"
是个string啊。。。0 => 1,
1 => 2,
2 =>
array (
0 => 'a',
1 => 'b',
2 => 'c',
),
)"
最后,═ 云下遮雨 11:28:47 给出了个解决方案:
eval( '$c='.$b.';');
eval( "\$c={$b};" );
eval( "\$c=".$b.";" );
我尝试了一下,确实还回位原来的数组了,代码如下:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<?php
$a = array (1, 2, array ("a", "b", "c"));
$b = var_export ($a,TRUE);
//eval( "\$c=".$b.";" );
eval( "\$c={$b};" );
print_r($c);
//print_r( $c );
?>
$a = array (1, 2, array ("a", "b", "c"));
$b = var_export ($a,TRUE);
//eval( "\$c=".$b.";" );
eval( "\$c={$b};" );
print_r($c);
//print_r( $c );
?>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[~]# php var_export.php
Array
(
[0] => 1
[1] => 2
[2] => Array
(
[0] => a
[1] => b
[2] => c
)
)
Array
(
[0] => 1
[1] => 2
[2] => Array
(
[0] => a
[1] => b
[2] => c
)
)
指出了膘哥的一个小错误:
═ 云下遮雨 11:38:46
eval( "\$c=\$b" ); 这样就是错的,相当于 $c=$b
将数组型数据格式化存储常用serialize(),var_export(),json_encode()这三种
至于这三种的效率,
参考了http://www.phpdevblog.net/2009/11/serialize-vs-var-export-vs-json-encode.html
他的测试分了不同数据量,但是整体看来json_encode>var_export>serialize
先记下,回头自己测试验证一下!
最近看到igbinary库(http://opensource.dynamoid.com/)效率比PHP原生的强
支持两个函数igbinary_serialize andigbinary_unserialize
在php.ini中配置:
# Load igbinary extension
extension=igbinary.so
# Use igbinary as session serializer
session.serialize_handler=igbinary
来源:http://hi.baidu.com/lnnujxxy/blog/item/e5025fde4b4a6b52ccbf1abb.html
至于这三种的效率,
参考了http://www.phpdevblog.net/2009/11/serialize-vs-var-export-vs-json-encode.html
他的测试分了不同数据量,但是整体看来json_encode>var_export>serialize
先记下,回头自己测试验证一下!
最近看到igbinary库(http://opensource.dynamoid.com/)效率比PHP原生的强
支持两个函数igbinary_serialize andigbinary_unserialize
在php.ini中配置:
# Load igbinary extension
extension=igbinary.so
# Use igbinary as session serializer
session.serialize_handler=igbinary
来源:http://hi.baidu.com/lnnujxxy/blog/item/e5025fde4b4a6b52ccbf1abb.html
一般我们把数组缓存到文件中的话,都是先要转成字符串的形式,然后再存入文本文件中,一般有两种机制把数组转成字符串,
第一种是
$str = var_export($arr, true);
第二种是
$str = serialize($arr);
这两种机制转换之后的字符串是不一样的,第一种是数组的原型模式,第二种是序列化后的形式。第一种存入文件中的只要加上<?php ?>标签,就形式了一个可用的数组原型,对调用来说,不用转换,直接返回这个数组就可以,但第二种,则需要再用一次unserialize函数反序列化一下。对于第种一说,就多了一步操作。下来我们用数据说话吧:
<?
set_time_limit(50);
$a = array(1,2,3);
$b = array('a'=>1, 'b'=>2, 'c'=>3);
$c = array('a'=>array(1,2,3), 'b'=>array(4,5,6));
$time1 = microtime(true);
$times = 1000000; #10w
for($i=1; $i<=$times; $i++){
$A = var_export($a, true);
}
$time2 = microtime(true);
for($i=1; $i<=$times; $i++){
$B = var_export($b, true);
}
$time3 = microtime(true);
for($i=1; $i<=$times; $i++){
$C = var_export($c, true);
}
$time4 = microtime(true);
for($i=1; $i<=$times; $i++){
$X = serialize($a);
}
$time5 = microtime(true);
for($i=1; $i<=$times; $i++){
$Y = serialize($b);
}
$time6 = microtime(true);
for($i=1; $i<=$times; $i++){
$Z = serialize($c);
}
$time7 = microtime(true);
for($i=1; $i<=$times; $i++){
$O = unserialize($X);
}
$time8 = microtime(true);
for($i=1; $i<=$times; $i++){
$P = unserialize($Y);
}
$time9 = microtime(true);
for($i=1; $i<=$times; $i++){
$Q = unserialize($Z);
}
$time10 = microtime(true);
$var_export_time['a'] = $time2 - $time1;
$var_export_time['b'] = $time3 - $time2;
$var_export_time['c'] = $time4 - $time3;
$serialize_time['a'] = $time5 - $time4;
$serialize_time['b'] = $time6 - $time5;
$serialize_time['c'] = $time7 - $time6;
$unserialize_time['a'] = $time8 - $time7;
$unserialize_time['b'] = $time9 - $time8;
$unserialize_time['c'] = $time10 - $time9;
print_r($var_export_time);
print_r($serialize_time);
print_r($unserialize_time);
?>
output:
Array
(
[a] => 3.3401498794556
[b] => 5.1394801139832
[c] => 8.8483898639679
)
Array
(
[a] => 1.6063709259033
[b] => 1.7033960819244
[c] => 3.4534389972687
)
Array
(
[a] => 1.6037359237671
[b] => 1.817803144455
[c] => 3.7992968559265
)
由上面数据说明:
var_export函数性能比serialize函数性能差一倍,而unserialize时间也需要和serialize差不多的时间,serialize加上unserialize时间,和用var_export时间差不多。
所以在应用的时候,如果只用于读取数据的时候,最好存成数组原型,如果只考虑写入缓存,用serialize是不错的选择,还有就是serialize还可以处理Object类型。所以应用上能广泛一些。
但如果论生成后的缓存文件大小,那还是用var_export去除数组中的换行和空白,比用serialize要小大概10%左右,这个测试我就不放上来了,有兴趣的自己可以尝试一下。原因是因为serialize函数中加入了一些冗余字符串。
来源:http://blog.zol.com.cn/1207/article_1206962.html
第一种是
$str = var_export($arr, true);
第二种是
$str = serialize($arr);
这两种机制转换之后的字符串是不一样的,第一种是数组的原型模式,第二种是序列化后的形式。第一种存入文件中的只要加上<?php ?>标签,就形式了一个可用的数组原型,对调用来说,不用转换,直接返回这个数组就可以,但第二种,则需要再用一次unserialize函数反序列化一下。对于第种一说,就多了一步操作。下来我们用数据说话吧:
<?
set_time_limit(50);
$a = array(1,2,3);
$b = array('a'=>1, 'b'=>2, 'c'=>3);
$c = array('a'=>array(1,2,3), 'b'=>array(4,5,6));
$time1 = microtime(true);
$times = 1000000; #10w
for($i=1; $i<=$times; $i++){
$A = var_export($a, true);
}
$time2 = microtime(true);
for($i=1; $i<=$times; $i++){
$B = var_export($b, true);
}
$time3 = microtime(true);
for($i=1; $i<=$times; $i++){
$C = var_export($c, true);
}
$time4 = microtime(true);
for($i=1; $i<=$times; $i++){
$X = serialize($a);
}
$time5 = microtime(true);
for($i=1; $i<=$times; $i++){
$Y = serialize($b);
}
$time6 = microtime(true);
for($i=1; $i<=$times; $i++){
$Z = serialize($c);
}
$time7 = microtime(true);
for($i=1; $i<=$times; $i++){
$O = unserialize($X);
}
$time8 = microtime(true);
for($i=1; $i<=$times; $i++){
$P = unserialize($Y);
}
$time9 = microtime(true);
for($i=1; $i<=$times; $i++){
$Q = unserialize($Z);
}
$time10 = microtime(true);
$var_export_time['a'] = $time2 - $time1;
$var_export_time['b'] = $time3 - $time2;
$var_export_time['c'] = $time4 - $time3;
$serialize_time['a'] = $time5 - $time4;
$serialize_time['b'] = $time6 - $time5;
$serialize_time['c'] = $time7 - $time6;
$unserialize_time['a'] = $time8 - $time7;
$unserialize_time['b'] = $time9 - $time8;
$unserialize_time['c'] = $time10 - $time9;
print_r($var_export_time);
print_r($serialize_time);
print_r($unserialize_time);
?>
output:
Array
(
[a] => 3.3401498794556
[b] => 5.1394801139832
[c] => 8.8483898639679
)
Array
(
[a] => 1.6063709259033
[b] => 1.7033960819244
[c] => 3.4534389972687
)
Array
(
[a] => 1.6037359237671
[b] => 1.817803144455
[c] => 3.7992968559265
)
由上面数据说明:
var_export函数性能比serialize函数性能差一倍,而unserialize时间也需要和serialize差不多的时间,serialize加上unserialize时间,和用var_export时间差不多。
所以在应用的时候,如果只用于读取数据的时候,最好存成数组原型,如果只考虑写入缓存,用serialize是不错的选择,还有就是serialize还可以处理Object类型。所以应用上能广泛一些。
但如果论生成后的缓存文件大小,那还是用var_export去除数组中的换行和空白,比用serialize要小大概10%左右,这个测试我就不放上来了,有兴趣的自己可以尝试一下。原因是因为serialize函数中加入了一些冗余字符串。
来源:http://blog.zol.com.cn/1207/article_1206962.html