易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
Mysql分区表局限性总结

Mysql分区表局限性总结

昨天晚上asers.z问我怎么样使得数据在搜索的时候和58.com差不多,而且展示数据的速度要快。我一直想着用mysql的分区表解决,而乔楚(乔大姐)则认为是采用sphinx来解决。
但后来我找了一个资料才发现,原来分区表还是有局限性的,比如他就不支持全文索引。我是看这里看到的。。
--START--

Mysql5.1已经发行很久了,本文根据官方文档的翻译和自己的一些测试,对Mysql分区表的局限性做了一些总结,因为个人能力以及测试环境的 原因,有可能有错误的地方,还请大家看到能及时指出,当然有兴趣的朋友可以去官 方网站查阅。

本文测试的版本

mysql> select version();
+------------+
| version() |
+------------+
| 5.1.33-log |
+------------+
1 row in set (0.00 sec)

一、关于Partitioning Keys, Primary Keys, and Unique Keys的限制

在5.1中分区表对唯一约束有明确的规定,每一个唯一约束必须包含在分区表的分区键(也包括主键约束)。
这句话也许不好理解,我们做几个实验:

CREATE TABLE t1
( id INT NOT NULL,
uid INT NOT NULL,
PRIMARY KEY (id)
)
PARTITION BY RANGE (id)
(PARTITION p0 VALUES LESS THAN(5) ENGINE = INNODB,
PARTITION p1 VALUES LESS THAN(10) ENGINE = INNODB
);

CREATE TABLE t1
( id INT NOT NULL,
uid INT NOT NULL,
PRIMARY KEY (id)
)
PARTITION BY RANGE (id)
(PARTITION p0 VALUES LESS THAN(5) ENGINE = MyISAM DATA DIRECTORY='/tmp' INDEX DIRECTORY='/tmp',
PARTITION p1 VALUES LESS THAN(10) ENGINE = MyISAM DATA DIRECTORY='/tmp' INDEX DIRECTORY='/tmp'
);

mysql> CREATE TABLE t1
-> ( id INT NOT NULL,
-> uid INT NOT NULL,
-> PRIMARY KEY (id),
-> UNIQUE KEY (uid)
-> )
-> PARTITION BY RANGE (id)
-> (PARTITION p0 VALUES LESS THAN(5),
-> PARTITION p1 VALUES LESS THAN(10)
-> );
ERROR 1503 (HY000): A UNIQUE INDEX must include all columns in the table's partitioning function

二、关于存储引擎的限制
2.1 MERGE引擎不支持分区,分区表也不支持merge。
2.2 FEDERATED引擎不支持分区。这限制可能会在以后的版本去掉。
2.3 CSV引擎不支持分区
2.4 BLACKHOLE引擎不支持分区
2.5 在NDBCLUSTER引擎上使用分区表,分区类型只能是KEY(or LINEAR KEY) 分区。
2.6 当升级MYSQL的时候,如果你有使用了KEY分区的表(不管是什么引擎,NDBCLUSTER除外),那么你需要把这个表dumped在 reloaded。
2.7 分区表的所有分区或者子分区的存储引擎必须相同,这个限制也许会在以后的版本取消。
不指定任何引擎(使用默认引擎)。
所有分区或者子分区指定相同引擎。

三、关于函数的限制
在mysql5.1中建立分区表的语句中,只能包含下列函数:
ABS()
CEILING() and FLOOR() (在使用这2个函数的建立分区表的前提是使用函数的分区键是INT类型),例如

mysql> CREATE TABLE t (c FLOAT) PARTITION BY LIST( FLOOR(c) )(
-> PARTITION p0 VALUES IN (1,3,5),
-> PARTITION p1 VALUES IN (2,4,6)
-> );;
ERROR 1491 (HY000): The PARTITION function returns the wrong type

mysql> CREATE TABLE t (c int) PARTITION BY LIST( FLOOR(c) )(
-> PARTITION p0 VALUES IN (1,3,5),
-> PARTITION p1 VALUES IN (2,4,6)
-> );
Query OK, 0 rows affected (0.01 sec)
DAY()
DAYOFMONTH()
DAYOFWEEK()
DAYOFYEAR()
DATEDIFF()
EXTRACT()
HOUR()
MICROSECOND()
MINUTE()
MOD()
MONTH()
QUARTER()
SECOND()
TIME_TO_SEC()
TO_DAYS()
WEEKDAY()
YEAR()
YEARWEEK()

四、其他限制

4.1 对象限制
下面这些对象在不能出现在分区表达式
Stored functions, stored procedures, UDFs, or plugins.
Declared variables or user variables.

4.2 运算限制
支持加减乘等运算出现在分区表达式,但是运算后的结果必须是一个INT或者NULL。 |, &, ^, <<, >>, , ~ 等不允许出现在分区表达式。

4.3 sql_mode限制
官方强烈建议你在创建分区表后,永远别改变mysql的sql_mode。因为在不同的模式下,某些函数或者运算返回的结果可能会不一样。

4.4 Performance considerations.(省略)

4.5 最多支持1024个分区,包括子分区。
当你建立分区表包含很多分区但没有超过1024限制的时候,如果报错 Got error 24 from storage engine,那意味着你需要增大open_files_limit参数。

4.6 不支持外键。MYSQL中,INNODB引擎才支持外键。

4.7 不支持FULLTEXT indexes(全文索引),包括MYISAM引擎。

mysql> CREATE TABLE articles (
-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> title VARCHAR(200),
-> body TEXT,
-> FULLTEXT (title,body)
-> )
-> PARTITION BY HASH(id)
-> PARTITIONS 4;
ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes
4.8 不支持spatial column types。
4.9 临时表不能被分区。
mysql> CREATE Temporary TABLE t1
-> ( id INT NOT NULL,
-> uid INT NOT NULL,
-> PRIMARY KEY (id)
-> )
-> PARTITION BY RANGE (id)
-> (PARTITION p0 VALUES LESS THAN(5) ENGINE = MyISAM,
-> PARTITION p1 VALUES LESS THAN(10) ENGINE = MyISAM
-> );
ERROR 1562 (HY000): Cannot create temporary table with partitions
4.10 log table不支持分区。
mysql> alter table mysql.slow_log PARTITION BY KEY(start_time) PARTITIONS 2;
ERROR 1221 (HY000): Incorrect usage of PARTITION and log table
5.11 分区键必须是INT类型,或者通过表达式返回INT类型,可以为NULL。唯一的例外是当分区类型为KEY分区的时候,可以使用其他类型的列作为分区键( BLOB or TEXT 列除外)。
mysql> CREATE TABLE tkc (c1 CHAR)
-> PARTITION BY KEY(c1)
-> PARTITIONS 4;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE tkc2 (c1 CHAR)
-> PARTITION BY HASH(c1)
-> PARTITIONS 4;
ERROR 1491 (HY000): The PARTITION function returns the wrong type

mysql> CREATE TABLE tkc3 (c1 INT)
-> PARTITION BY HASH(c1)
-> PARTITIONS 4;
Query OK, 0 rows affected (0.00 sec)

5.12 分区键不能是一个子查询。 A partitioning key may not be a subquery, even if that subquery resolves to an integer value or NULL

5.13 只有RANG和LIST分区能进行子分区。HASH和KEY分区不能进行子分区。

5.14 分区表不支持Key caches。

mysql> SET GLOBAL keycache1.key_buffer_size=128*1024;
Query OK, 0 rows affected (0.00 sec)
mysql> CACHE INDEX login,user_msg,user_msg_p IN keycache1;
+-----------------+--------------------+----------+---------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+-----------------+--------------------+----------+---------------------------------------------------------------------+
| test.login | assign_to_keycache | status | OK |
| test.user_msg | assign_to_keycache | status | OK |
| test.user_msg_p | assign_to_keycache | note | The storage engine for the table doesn't support assign_to_keycache |
+-----------------+--------------------+----------+---------------------------------------------------------------------+
3 rows in set (0.00 sec)
5.15 分区表不支持INSERT DELAYED.
mysql> insert DELAYED into user_msg_p values(18156629,0,0,0,0,0,0,0,0,0);
ERROR 1616 (HY000): DELAYED option not supported for table 'user_msg_p'
5.16 DATA DIRECTORY 和 INDEX DIRECTORY 参数在分区表将被忽略。
这个限制应该不存在了:
mysql> CREATE TABLE t1
-> ( id INT NOT NULL,
-> uid INT NOT NULL,
-> PRIMARY KEY (id)
-> )
-> PARTITION BY RANGE (id)
-> (PARTITION p0 VALUES LESS THAN(5) ENGINE = MyISAM DATA DIRECTORY='/tmp' INDEX DIRECTORY='/tmp',
-> PARTITION p1 VALUES LESS THAN(10) ENGINE = MyISAM DATA DIRECTORY='/tmp' INDEX DIRECTORY='/tmp'
-> );
Query OK, 0 rows affected (0.01 sec)
5.17 分区表不支持mysqlcheck和myisamchk
在5.1.33版本中已经支持mysqlcheck和myisamchk
./mysqlcheck -u -p -r test user_msg_p;
test.user_msg_p OK

./myisamchk -i /u01/data/test/user_msg_p#P#p0.MYI
Checking MyISAM file: /u01/data/test/user_msg_p#P#p0.MYI
Data records: 4423615 Deleted blocks: 0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
Key: 1: Keyblocks used: 98% Packed: 0% Max levels: 4
Total: Keyblocks used: 98% Packed: 0%

User time 0.97, System time 0.02
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 324, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 1, Involuntary context switches 5
5.18 分区表的分区键创建索引,那么这个索引也将被分区。分区键没有全局索引一说。
5.19 在分区表使用ALTER TABLE … ORDER BY,只能在每个分区内进行order by。

--EOF--

看了一下,居然有这么多的限制,唉。不是特别敢用了,再加上现在NoSQL开始风行,天知道以后会怎么样。

上面的文章来自:http://www.bigheaddba.net/article/y2009/339_mysql%E5%88%86%E5%8C%BA%E8%A1%A8%E5%B1%80%E9%99%90%E6%80%A7%E6%80%BB%E7%BB%93.html

[转]Firefox的优化技巧

[转]Firefox的优化技巧

这是一些优化firefox的奇技淫巧之一,我也是转载来的。
firefox是我最常用的浏览器(没有之一,最常用的就是它,没有其他的),从开机到关机,浏览器都在运行。除非是addon updater后的重启或者我新装了add-on后的重启,其他时间,就一直开着。
家里的笔记本还好,4G内存,随便我挥霍,单位只有2G,经常会发现FF占了4~500M左右的内存。所以当有个优化技巧在我面前时,我还得选择了尝试。目前尚未看出效果,估计时间还短效果还没有出来。

OK,打开你的Firefox,在地址栏内键入 about:config

在页面的 filter 栏内输入 network
找到network.http.pipelining 这一项,把值设为 True
找到network.http.piplining.maxrequest这一项,把值改为10。

这是因为很多浏览器的默认设置都是依照拨号上网的情况来设置的,所以在现在的宽带时代,它们的潜力并没有被挖掘出来
查找 browser.cache.disk.parent_directory
如果没有找到 browser.cache.disk.parent_directory ,则新建这个“字符串”
修改到你需要存放的位置,例如我修改到RamDisk位置 x:\firefox
在地址栏输入 about:cache ,可以发现Cache位置已经成功修改
查找 config.trim_on_minimize
如果没有找到 config.trim_on_minimize ,则新建这个“布尔”
设置为true——好处:在最小化时自动释放内存
查找 browser.cache.memory.capacity
如果没有找到 browser.cache.memory.capacity ,则新建这个“整数”
设置为固定值16384——好处:据说是最优化的大小
查 找 browser.sessionhistory.max_total_viewers
如 果没有找到 browser.sessionhistory.max_total_viewers ,则新建这个“整数”
设置为固定值5或者更小 ——好处:页面快进/快退功能中保存的页面总数,默 认是-1(无限)
查 找 network.prefetch-next
如 果没有找到 network.prefetch-next ,则新建这个“布尔”
设置为固定值false——好处:关闭预读取网页的功能

转帖的来源:

http://blog.sunshow.net/2007/02/%E8%BD%AC%E8%BD%BD%E4%BC%98%E5%8C%96firefox%E7%9A%84%E6%96%B9%E6%B3%95/

http://blog.sunshow.net/2006/12/%E8%BD%AC%E8%BD%BD%E8%AE%A9%E4%BD%A0%E7%9A%84firefox%E5%92%8Cie%E8%B7%91%E7%9A%84%E6%9B%B4%E5%BF%AB/

setInterval和setTimeout到底有啥区别?

setInterval和setTimeout到底有啥区别?

对于javascript的setInterval和setTimeout,很多人到现在一直搞不清楚。其实,真的很简单,也很方便的就能让人搞清楚在什么时候用什么函数。

当然我说的是简单的方法,请打开词霸,查看interval和timeout,就可以明白很多了

interval: n. 间隔;幕间休息;间距

timeout: n. 暂时休息;工间休息;超时

看到这两个意思,估计你也可以明白,setTimeout是在超过你定义的时间后,执行。而setInterval是间隔你定义时间区间执行函数。这样解释就让你明白很多了吧?

以前写的:

之所以写这篇文章,主要是因为看了http://www.phpweblog.net/jig68/archive/2010/03/17/7137.html这篇博客。才明白还是有很多人不太了解这方面,所以,换个简单的解释方法,总可以让人明白了吧?
PS:意外啊,一不小心多复制了点代码。。。
Javascript:不要将属性写在prototype里

Javascript:不要将属性写在prototype里

没有仔细研究过,但觉得得这就象PHP的类(Class)的复制和引用的关系。好象差不多。

原文来自:http://www.beiju123.cn/blog/?p=304

年前,某次分享会上听玉伯偶然说了这句话,当时糊里糊涂,不明所以,偶然有一天我做一个东西,发现某个对象的实例之间竟然会互相操作了定义在 prototype里的属性,于是我验证了下:

var objA=function(){

}
objA.prototype={
name:{},
setName:function(str){
this.name=str;
},
getName:function(){
return this.name;
}
}
var a=new objA();

var b=new objA();
//a.name={firstname:"孙",fathername:"信宇"};//undefined
a.name.firstname="孙";//弹出sun
alert(b.name.firstname);

在这个例子里,当我修改实例a的name属性的时候,实例b的name属性页跟着变了,而且说明他们引用了同一份对象.

如果name属性是值类型,例如字符串,就不会与这种问题了,那是因为字符串每次被操作都返回新实例,当然反映不出冲突来了.
那为什么会出现这种冲突呢?
专业术语我不太会讲,但是prototype这种原型继承的好处其实就是节省程序运行空间,当你从objA实例化两个实例:a和b时,并不会创建两份属性 和方法,而是把他们都指向一份属性和方法,所以prototype里的所有的东西都被所有的实例共享,实例中保存的只是一个json索引.
正因为如此,如果整个改变name的值的话,让他指向别的对象,这样就不会互相影响了,而且对于值类型来说,本质就是每次操作都会返回新的实例,所以不会 出现冲突.
对于这种冲突来说,最好的解决办法就是将属性从prototype里移出来,写在构造函数里:

var objA=function(){
this.name={}
}
objA.prototype={
setName:function(str){
this.name=str;
},
getName:function(){
return this.name;
}
}

这样再试一次就会发现,每次创建实例都会创建一个新的name属性对象,而不是指向同一个对象;
也可以在prototype理的init方法里用this.name={}来初始化配置参数,属性等内容,反正就是不能写在prototype里面.但是 可以在函数里初始化定义.

还有一点要注意:我个人认为,js里所有的东西都是对象,包括值类型,他们之所以表现出非引用类型的性质,是因为每次对这些对象操作都会返回新的实 例,这只是一种假象,事实上可以说,js里所有的东西都是引用类型,只是值类型在被操作时引用总是被改变,表面上来看就是非引用类型了.

--EOF--

即使是上面的情况,我还是认为可以看看

http://lifesinger.org/blog/2009/01/javascript-run-mechanism/

http://www.cnblogs.com/rainman/archive/2009/04/28/1445687.html

带动画的GIF图片在IE中不能正常工作

这个问题,怎么说呢,先把症状重复一遍吧:IE显示了图片,但是动画却不能播放。而在FirFox中却能正常的工作。
一直以来,我都以为是浏览器的关系。没有设定好而导致这种情况发生,比如一些在IE核心上开发的浏览器(maxthon)等,都可以把GIF动画关闭的。所以我也就没有仔细研究过。

来看看这个:
IE和FirFox在很多地方都有着或多或少的不同,这导致在开发时需要考虑很多的特殊情况。在最近的项目中居然发现带动画的GIF图片在页面Load之 后再以脚本控制的方式展现时,动画不能表现出来。在我的项目中,需要在点击一个按钮后来显示一个动态的Loading图片以此表示程序正在进行后台处理。 这是通过一段jQuery代码来实现的:

<font size="3" face="Calibri"><script language="javascript" type="text/javascript">function showMessage() {
......
$("div#Processing").show();
......
}</script>
<div id="Processing" style="display: none">
<center>
<img src="placeOrder_processing.gif" />
</center>
</div></font>

E显示了图片,但是动画却不能播放。而在FirFox中却能正常的工作。当你将整个DIV加入到DOM中时,这个DIV是隐藏的,不可见的。但是当你将其 属性设置为可见时,动画却不能被正常播放。如果将带动画的GIF图片直接以可见的形式加入到DOM中,它是可以正确的现实并播放动画的。那么,可以这样更 改代码:

<font size="3" face="Calibri"><script language="javascript" type="text/javascript">
function showMessage() {

$("div#Processing").show();
var imgSrc = '<%=ResolveUrl("~/Images/Checkout/placeOrder_processing.gif") %>';
$("td#imgSection").append("<img src='" + imgSrc + "'/>");

}
</script></font>

这样,在可见的内容中将Img加入到DOM中就可以解决这个问题了。
--EOF--
贴出这个案例地址是在:http://www.cnblogs.com/zlgcool/archive/2010/03/15/1686507.html,真的很意外的例子,所以就记录下来了

听说,宗庆后提议应禁止学生用电脑写作业

听说,宗庆后提议应禁止学生用电脑写作业

在cnbeta上看到这个新闻,心里还是觉得挺有必要,自从电脑普及后,提笔忘字的情况越来越多了。不过,象我这种打五笔的还要好一点,那些打拼音的,估计就惨了。事实上也是如此,经常看到某个字很象啥啥,然后就越看越不象。郁闷的。。。

小孩子正在一个学习阶段,所以我觉得还是有必要一定要手写,毕竟我可不想以后的小孩写出去的文章错别字连篇,甚至于连自己名字都写不来吧。我也不求小孩的字象书法家一样,但最起码要端端正正的吧?端正写字,正直做人,还是有必要的。

以下是Cnbeta上的内容,来源网址是 http://www.cnbeta.com/articles/106181.htm:

随着信息化社会的来临和电脑的普及运用,目前大部分中小学校、高等院校都不重视学生的书写训练,只有部分学校在美术课中开设了书法课。若 不及时在学校教育 中加强对学生的书写训练,不仅会造成国人书写不美观,还有可能造成汉字书写这一传统文化的断代、丢失。为此,全国人大代表、杭州娃哈哈集团有限公司董事长 兼总经理宗庆后建议在学校教育中加强对学生的书写训练。

宗庆后建议,在学校教育中开设专门的书写训练必修课,并严格规定训练课时,要对学生的书写水平进行考核,不上足规定课时,不达到一定水平不能毕 业。

宗庆后认为,电脑的普遍使用确实给学校教育的教与学都带来了很大方便,但弊端也显而易见,最突出的表现就是学生的书写能力严重退化。宗庆后建议学生的作业 一律用手写,不能用电脑,学校强制执行。

宗庆后还建议教育部门将书写水平纳入教育质量考核体系,首先对教师实行考核,如果达不到相关标准不能上课;对学校的书写教育总体状况进行考核,作为学校评 级的依据之一。
--EOF--
书写水平,我就不讲究啥了,小孩子的字也写不到哪里去,但老师的字也还是要讲究一下的,连字都写不好,怎么教书育人,再说了,练点字也不难,怎么就写不好呢?当一名老师,天天要写字,居然都练不好,怎么相信你能教育孩子。

功耗仅5W的国内第一台插座式计算机BTplug

功耗仅5W的国内第一台插座式计算机BTplug

刚看到这个新闻的时候,我还以为龙芯又出了新产品了。却不料真的是这样。。。听说国外也有类似产品。后来去文章内容里的网站看了一下。再搜索了一下,发现还是需要将近600元。所以一下子不知道觉得是否有意义了。反正我贴出来,随便大家看吧。

内容如下:

本来是打算配一台超低功耗PC机,用于做临时WebService。在网上查来查去,怎么配 都不满意,功耗始终很难突破50W大关。在翻阅了大半低功耗PC资料后,终于发现了一国外产品Sheevaplug,据说功耗只有区区5W不到。正当我兴奋不已时,却发现,这款产品是用的ARM架构。不过,我不死心,跟着这条线一路查下去,无意中被我看到了BTplug这款产品。

一开始,我还以为BTplug就是Sheevaplug被国人拿来简单包装的产品。不过再深 入了解后,我才知道,BTplug其实就是实实在在的国产货。其性能和Sheevaplug有过之而无不及。一样的超低功耗,一样的强大配置。最值得一提 的是这款产品可以支持Sheevaplug所不能支持的XP系统。

先来看看这款产品的配置:

- 约1GHz主频的CPU,支持应用最广的x86指令集
- 512M DDR2内存
- 2个USB2.0接口,PATA硬盘接口及串口、GPIO口
- 100M快速以太网接口

BTplug的体积很小,相当于移动硬盘大小,耗电不高于5W,只需要12V1A电源供电即可。怎么样?是不是很有吸引力?

--EOF--
网址是在http://bbs.btplug.cn,唉。图片上看上去好象不错

【PS】额,居然写了这么多年才被网友评论告诉我是BTplug而不是BTblug。。。我真挫啊。

网站线上线下推广的观后感

网站线上线下推广的观后感

作为一个网站,线上线下的推广确实十分重要,否则,真的就象那个酒香也怕巷子深 了。最近,我也一直在研究SEO,也在看什么样的东西最容易被人吸引,也在看着统计程序分析的来源关键字、网购兴趣等。

今天看到的是某人写的文章,截了一断过来:

线上推广一般指网络上的推广
如:
1.行业从业人员邮件通知,所谓群发邮件.
2.行业QQ群内群发信息. ps:QQ群邮件发送方便快捷.
3.网站关键字优化等
4.同行友情连接交换
5.如果有钱的话,手机短信群发(只发同行)
6.百度贴吧,QQ搜吧,有道快贴等发送自己的信息.
7.软文
以上的全做好了,基本上也能带来一定的流量与影响力.

线下推广的方式也不少,如:
1.传统的DM单子,名片等.
2.行业杂志广告.
3.生活中的广告牌位等.
......
还有很多种方式.线上加线下走完全部基本上也有点影响力加流量了,还有个最重要的是"坚持"

目前我是做线上的推广,但尽量不想花钱,否则推广就真的成了无底洞了。也不想发垃圾邮件,那毕竟还是属于垃圾网站的做法,我需要的是网站的回头客,回头率和在线率越高,跳出率越低,才是我所希望的。

当然那是对于单位的网站来说,资讯类的网站,容易有吸引人的地方,但技术类的就不一样了。技术类的网站上的广告几乎都没有人点的(我也一样不太点别人的广告,所以也不能要求别人点我的。呵呵)。

对edong的域名备案自动检测系统感到鸡动

我的服务器托管在edong 江阴机房 ,下午突然有人和我说放在我服务器上的一个域名不能被访问了。于是联系了一下edong,结果却发现我自己的neatstudio.com也不能被访问了。

访问提示都是:该域名因为未备案而被关闭。

当然,我的网站是已经备过案的,出现这个的原因是什么呢?是因为edong在我的服务器上装了一个监测软件(是apache的so组件),当别人访问我的服务器上的域名时,如果在他们的白名单里,那么就可以被访问,如果不在,那就会提示“该域名因为未备案而被关闭”

虽然不喜欢这种行为,但,总算还是可以被我接受的。毕竟在去年11月12月的时候,那时候都是直接拔网线的,如今只是提示一下,已经是很不错的进步了(只是我不知道这玩意有多耗资源)。仔细想想,我还是能理解,要知道去年有N多IDC被吊销执照,现在这么一点提示,怎么不能被接受?呵呵

只是以后就需要事先向他们申请加入白名单才行。

NeatCN.COM 另作他用了

NeatCN.COM 另作他用了

各位朋友,neatcn.com我算是正式作为团队信息的博客来使用了。
当然我会拉着walker和hihiyou过来写一些技术博客(心情也要写写的),但我要求技术尽量是原创,如果转载优秀代码,一定要做详细注释以及转载原因。

请朋友们还重新更新一下rss的链接哦。