http://bbs.bo-blog.com/viewthread.php?action=printable&tid=24684
文章来源:
http://news.ccidnet.com/art/945/20091118/1941103_1.html
转载本站地址:
http://blog.5ifd.com/post/2242/

读后感想:
我看了这篇文章,不免感慨作者独到在观点,有一点说得很对:不得不惊讶新浪的执行力和影响力。它的确是一个靠传统的传播来赚钱的企业,确实也不是一个互联网软件公司,是一个媒体,技术已经不再重要。对于博客这个原本属于2.0阵营的东西,硬生生被新浪做成了1.0。这个在当时来说并不是件坏事,君不见他的一个很破的博客编辑器也不好用被其他网站加以借鉴,当时是没有谁去管2.0的,1和2那只是一个概念大家都是摸着石头过河罢了。至于转型的失败,个人认为是UC部门没有冲出互联网的第一,而让腾讯占得先机,当然领导层也是有责任的,至于为什么会向作者说的那么失败,正如作者所言:牛顿告诉我说:作用力是相互的。个人认为这是很有趣的。我这里有一个有趣的观点:谁对不起互联网,那么互联网就会对不起谁。因为互联网是最残酷的:只有做第一,第二第三,要么就等着收购要么等死。
  
  论成败:
  当时不得不说sina博客后起之秀让早期的博客中国倒下,你2.0也好,1.0也罢,在当时用户和传播才是王道,这点本质上是没有什么伤大雅之堂的,走精英道路也是对的,模式也很不错:那个时候有多少人上网,多少人会写东西,能写出东西?也只有少部分人了。笔者所说的精英和当时那批人想的精英完全不是一个概念,我问过当时博客开发团队的产品莫凡:当时我们就想少部分人写,有人看,带动其余会写的人加进来,是我们的初衷,但是最后变成了一个草根,也是我们没有想到的。
  
  论产品:
  这么多年的发展,就其本质来讲Sina死死抓住传播这条不放,作者认为这是不对的,我觉得也是欠妥,试想那如果放弃这个,sina何去何从?我想很难说清这个事情,就其原因是它本质就不是一个真正的互联网公司,是一个媒体,转型肯定困难重重。
  
  论理念:
  当然想涉足互联网,但都没有做起来,当然有其原因的,我个人认为其原因有二:1.不肯放下品牌。2.不按照互联网规律办事。做产品一定要精益求精,领导认为好就好,创造了地下,执行缓慢。做一件产品如:space sina朋友(本人经历过这个过程),一直在做,如;sina朋友就没有上线,想拿出一个精品,这个对于互联网一直是beta版本的行业来说,想搞出个released版本,想法不对。
  
  论传播:
  究其本质就是抓住传播,影响力,现实社会中关注的确实是那些小部分人,而这小部分人掌握着传播信息内容的80%,然而,这也是对的,但它同时也是错的。精英传播时代已经过去,价值底下,现在进入了SNS时代,是一个尽可能满足所有用户的时代到了,用户个性时代来了,都得给伺候好了!如:QQ就是一个很大的SNS。据我估算:一个注册用户的价值是一个浏览用户价值的五倍。
  
  论潮流:
  以少部分人摇旗呐喊的年代已经逐步淡化,而以社会关系的互联网化逐步凸显,sina时代单一广告模式已经基本结束而且单一,而SNS的收入取到增值服务盈利模式众多,大势所催。常言说得好:成也萧何,失败也萧何,商业的成功和失败是用其盈利能力来衡量的,谁也没有想到当时的成功奠定了现在的失败,但这也是可以避免的:就其当时新浪起家时候是王志东带的队出来的,其实那一批人的本质是开放的,但是他们都远去了,自己单干去了。
  
  论结盟:
  sina的登陆用户的缺少,这个是一个最大的危险,而战略级的产品邮箱并没有发挥出他强健的开疆拓土的功效,相反在腾讯酷讯邮箱的推出江河日下,尽管后期有sina.cn邮箱的推出,以及sina vip邮箱的品牌鼎立支撑,但是,这仍然是一个孤枕难眠的境地,目前也只有和开心网,校内网共享登陆平台互相共生共赢,结成联盟,方能有一线希望,否则前途渺茫,危险依然存在,因为究其微博客,仍然是没有从本质走出精英的模式,就注定它没法走出盈利模式单一的困境,越走越远到相去甚远,但他仍然幻想通过微博客来榨取更多的注册用户,邮箱的开疆拓土,但腾讯早以悄然跟进,潜伏在身边,可谓处境岌岌可危啊,Sina唯有考结盟来合纵连横,更加开放的心态来迎接变化,拥抱变化是当务之级,试想会有合纵连横,会不会有横扫六合的秦出现的可能呢?我们拭目以待。
                                                                                               评论员:向东
                                                                                                 2009-11-18



  

腾讯科技讯 11月18日消息,今日金融时报旗下FT中文网刊发了专栏作家程苓峰的文章。文章观点认为:新浪是一家披着互联网外皮的极端传统的公司。新浪越成功,就离互联网越远。因为新浪成功的方式,完全是反互联网的。

以下为程苓峰文章全文:阅读全文
苏东坡写过"我欲乘风归去,又恐琼楼玉宇,高处不胜寒"的词句。

  "高处不胜寒"现在常常用来比喻一些成功的人,没有知心的朋友,总是担心被别人从高高的位置上推下来。简单地说就是,站在高高的地方承受不住那里的风寒;又比喻一个地位或者能力太高而受到重视的人往往会被别人疏远,孤立。

  乔治是一家公司的业务员,他是一个能力很强的人,在和一家法国客户的谈判中表现突出,为公司创造了良好的效益,被评为年度精英,受到了经理的高度赞扬。这次谈判使乔治信心大增,他觉得自己的能力非同一般,在公司里绝对没人能超过自己,经理那样赏识自己,自己的前途一定是不可限量,于是就变得目中无人飘飘然起来。在日常工作中,他不再和其他同事进行沟通和交流。一副自高自大、目中无人的样子,他总是独来独往,好像任何人都不在他的眼里。

  乔治的这种态度,让同事们很反感,渐渐地谁都不愿意理他了,没有一个人愿意与他合作。于是,乔治成了孤家寡人,遇到困难也没有人帮助他,甚至连个说知心话的人都没有。为此他陷入了极其尴尬的境地。乔治与同事们关系不好,经理也有所耳闻,渐渐地也产生了对他不好的看法。后来的一笔生意,由于他判断失误给公司造成了不小的损失,经理十分恼怒,同事有的幸灾乐祸,有的落井下石,使他无法再继续干下去,最后不得不收拾东西灰溜溜地离开了公司。

  无独有偶。罗蒙也是因为自高自大而尝尽了苦头。他在一家出版社工作,在编辑部里是公认的非常有才能的人,他所编辑的几套丛书为出版社带来了不小的经济效益。出版商也常常请他做选题策划,并许以丰厚的报酬。按他在办公室里的资历和能力,应该早就升迁了。可是多年下来,他还只是一个编辑室负责人。

  在罗蒙的眼里,编辑室里多是平庸之辈,那些俗人怎么能和自己相提并论呢?他不把任何人放在眼里,连社长也不例外。他恃才自傲,目空一切。到考核的时候,同事中没有一个人说他好话,大家都说他目中无人,不容易相处,缺乏团队协作精神,纷纷表示不会到他负责的编辑室工作。他被孤立起来。很多人是这样评论他的:"有才华,有能力,可惜不太会做人!"因为他的不会做人,招来了同事的一致"炮轰",成了同事眼中的"异类"。于是乎,他的前途也就可想而知了。

  高处不胜寒,有些人一旦成功了就不自觉地把自己抬得很高,其实,越是高高在上就越容易被孤立与冷落。成功固然有它正面的意义,但也会相应地产生一些负面性的东西。它会蒙蔽成功者的双眼,甚至扭曲他们的心灵。当你更上一层楼时,更要摆正自己的心态。
SecureCRT特常用快捷键:
Alt+R:EnterHost
Alt+I:Filter by session name<Alt+I>
Alt+M:Session Manager和Terminal终端来回切换。


一、
secureCRT同时向多个打开的seesion发送命令:
使用secureCRT的都知道,可以同时打开多个session连接一台或多台服务器,假设需要在两个或以上的服务器上执行相同的操作,例如编译安装相同的软件,最原始的办法就是在每个上执行一遍相同操作。不过可以使用“chat window”的方式来同时向两个服务器发送相同命令。具体操作如为:在view菜单中选中Chat Window,此时在secureCRT最下方会出现一个窗口,在里面点击鼠标邮件,然后选择“Send Chat to All Tabs”,此时在里面输入命令,当前secureCRT打开的所有session都会执行输入的命令。
http://www.netingcn.com/securecrt-chat-window.html

注意一下:新版本的secureCRT8.0.1里面,多个窗口发命令时,特别是想vi /etc/hosts里面加上一些数据时,这时得最下方会出现一个窗口里右键后勾选上[V]secureCRT send charactors immediately。这时再vi /etc/hosts打开后,就可用vim的ctrl+V进行多个窗口选中批里操作里面的数据了,也可批量添加。
这和旧版本区别就在于此,相当于secureCRT send charactors immediately和Send Chat to All Tabs分开了。如果先打开文件后再才勾选secureCRT send charactors immediately,想达到上面的选中多行且光标同步目的是不行的,只能关闭多个tab里刚打开的vim文件。总之,勾选后,尽可能在运行命令后把鼠标给focus到secureCRT最下方会出现一个窗口,再运行命令,secureCRT send charactors immediately就是解决操作文件实时操作的,而Send Chat to All Tabs是用来批量发送命令用的,也就是命令行。

二、SecureCRT多会话窗口中输入不同命令的脚本编写:
作者 :华业

在我们平时的工作中很多人都使用过SecureCRT,SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的远程系统的理想工具。通过使用内含的VCP命令行程序可以进行加密文件的传输。有流行CRTTelnet客户机的所有特点,包括:自动注册、对不同主机保持不同的特性、打印功能、颜色设置、可变屏幕尺寸、用户定义的键位图和优良的VT100,VT102,VT220和ANSI竞争.能从命令行中运行或从浏览器中运行.其它特点包括文本手稿、易于使用的工具条、用户的键位图编辑器、可定制的ANSI颜色等.SecureCRT的SSH协议支持DES,3DES和RC4密码和密码与RSA鉴别。阅读全文
最近在设计一个SNS的体系,所以比较关注相关的东西,转一篇好文来共赏:
1.提高创建圈子成本
     创建圈子的成本提高,才会让成员对自己创建的圈子珍惜,重视。
2.限制圈子的创建和加入
     俗话说:物以稀为贵。如果对创建和加入圈子不做限制,对于创建人来说,这个不行还可以创建多个,对加入者来说,一个人加入N个圈子。人的精力是有限的,这样创建者无法精心打理,圈子成员很难对某个圈子有归属感。
3.限制群组的数量,圈子淘汰机制
     还是同上道理,对于那些半死不活的圈子,可以让它死亡,圈子犹如一个小国家,当一个国家面临生死存亡的时候,成员会齐心协力,共度难关,但是要以第2点为前提。道理很明显,如果一个人有多个圈子,或者一人加入多个圈子,他就很不在乎这个圈子的生死。
4.尽量能通过创建圈子的方法筛选出贡献力和活跃度比较高的用户做圈主
     通过1%法则,我们知道,一个关系网内,只有1%用户贡献内容,10%的用户参与话题。所以圈主尽量能是那些活跃度高,贡献主动性强的用户,这样才会让圈子有生机。
5.圈子的规则应该满足个人,群组,社区之间的价值传递和平衡
我觉得社区,群组,个人之间只有通过双向的价值传递和平衡,才能稳固的发展。因此一个圈子的规则既要能满足圈子成员和圈子之间的双向价值传递,同时还要满足圈子和社区之间的价值传递。同时,通过一定的规则,还可以最终完成用户和社区之间的价值传递和平衡。
这里有2个问题,一个是价值传递,一个是平衡。只有2者都能解决,才能稳固的发展。
6.可以参考游戏的帮会系统
     游戏的帮会来说,成员的归属感和对帮会的忠诚度要高的多,源于游戏帮会复杂的规则和功能,能够完成个人——帮会——游戏之间和价值传递和平衡。简单的说就是个人能从帮会得到好处,比如帮会交朋友,共患难,共做任务,庇护伞。这些属于交际需要和情感需要。比如做帮会任务可以给经验,大家共同努力让帮会升级后可以在帮会购买更便宜的药,这个属于物质需求。成员通过直接的获益间接的促进了帮会的发展。这样就完成了价值的合理传递。如果不是这样,口空喊为帮会服务,为了帮会万死不辞,这些都是空口号而已。犹如现实的社会。关于现实社会的游戏规则,我想别人比我懂得更多。游戏也好,网站社区也好,都是现实社会的缩影,所以游戏规则大同小异。笔者以前玩过《刀剑online》,觉得其帮会系统比较完善,能够调动帮会成员的积极性,同时让帮会发展。其实这些都是规则而已,成败就在于你如何来制定这个规则,能让这个价值供求体系更好的运作。当然,归属感,情感需求,使命感这些也是非考虑不可的。人是一个很复杂的动物,在国难当头的时候会同仇敌忾,但是平时却会为了鸡毛蒜皮的事而吵的面红耳赤。因此,关键在于引导。
  
东哥,你好,本人是一个大部分一辈子只做一件事的人,那就是在人之上,要把人当人,在人之下,要把自己当人。所以本人抱着努力、成功的想法,也向东哥大神你一样,自己写了一本书,还是那抱着在人之上,要把人当人,在人之下,要把自己当人的想法写的,现在本人来是向东哥大神你请教写书的,同时希望大神你能够指出本人书的不足来,小弟诚心诚意拜谢!现在先发上本人愚作一章,希望大大能够诚心指教!拜谢了。
论window.location.href = window.location.href刷新页面的问题


在JS中可以用window.location.href = window.location.href来刷新页面(当然还有很多其他的方法),

在使用这个方法刷新页面的时候回出现问题,如下:

阅读全文
javascript + flash

代码示例:

var flashcopier = 'flashcopier';
if (!document.getElementById(flashcopier)) {
var divholder = document.createElement('div');
divholder.id = flashcopier;
document.body.appendChild(divholder);
}
document.getElementById(flashcopier).innerHTML = '';
var divinfo = '<embed src="clipboard.swf" FlashVars="clipboard=' + text2copy + '"
width="0" height="0" type="application/x-shockwave-flash"></embed>';


document.getElementById(flashcopier).innerHTML = divinfo;}
评论:这个方案是一个最流行的方法,著名的Clipboard Copy解决方案 利用一个clipboard.swf作为桥梁,复制内容到剪贴板。原理是:创建一个隐藏的flash文件,同时给给flash的变量FlashVars 赋值“clipboard=..”,通过这个赋值flash就会把复制的内容放到剪贴板。这个方法兼容IE、Firefox、Opera、chrome、 Safari,真可谓“万能”的解决方案。浏览器Flash的安装率非常高,这几乎是一个完美的解决方案。

clipboard.swf 的下载地址:http://watch-life.googlecode.com/files/clipboard.swf。

但是,世界上有完美的事么?这个方法只支持flash 9 ,不支持最新的flash 10。因为flash10中规定了只有在swf上进行了真实的操作(比如鼠标点击)才能访问剪切板,而上述方法只是使用了一个隐藏的swf文件,通过 javascript操作flash的剪贴板,用户并没有对swf文件进行真实的操作,因此这个方法也就失效了。

那么如何解决这个“真实操作”的问题呢?可以使用一个JavaScript库:Zero Clipboard,利用这个js库可以支持利用flash 10 实现复制到剪贴板。这个方法原理是在一个透明的flash(对用户来说是不可见的)上覆盖一个dom元素比如button或div,当点击这个dom时,实际点击的是flash,从而访问flash的剪贴板。真够曲折的。:-)

具体的实现详见如下链接:

DEMO页面 :  http://bowser.macminicolo.net/~jhuckaby/zeroclipboard/

Zero Clipboard项目主页: http://code.google.com/p/zeroclipboard/

支持浏览器:Firefox1.5  firefox2.0  firefox3.0 IE5.5 IE6.0 IE 7.0 opera 8 opera 9 chorme 1.0 chorme 2.0 safari 3


http://bowser.macminicolo.net/~jhuckaby/zeroclipboard/
在一个页面设置一个cookie时,必须刷新或到下一个页面才可以用 $_COOKIE 得到变量的值.

原因是因为当页面第一次被浏览器访问载入时,页面中的 cookie 会被设置,将其发送存储到客户端指定的

存储位置,所以$_COOKIE没有接收到客户端发送过来的 cookie 变量的值,当刷新或到下一个页面时,客户

端会在页面程序在服务器端运行之前,发送与该地址相对应的 cookie到服务器端,所以 $_COOKIE 可以得

到的值! 阅读全文
一个php项目的config 文件的本地测试版本和服务器上的正式版本常常会不同(例如:在 config 中设置 mysql连接的用户名和密码,可是本地测试数据库 跟 服务器上的数据库很可能不同),这就给svn带来了麻烦。虽然可以通过 svn:ignore 属性来忽略这些 config 这些,可是 当config 文件的内容发生变化时,merge 会很麻烦(尤其你通过 ssh 管理服务器的话,没有gui的 diff 工具)。

我的解决办法是将配置数据设置为服务器的环境变量,在config 中使用这些环境变量,例如一个config 文件:
<?
// ... ...

// 数据库 首选参数
JCAT_DB::$sPreferredFactory                = 'JCAT_DBFactoryMySQL41' ;
JCAT_DB::$sPreferredDBServer            = 'localhost' ;
JCAT_DB::$sPreferredDBName                = SameDB' ;
JCAT_DB::$sPreferredDBUser                = 'root' ;
JCAT_DB::$sPreferredDBPassword            = '' ;      

// ... ...
?>
可以 改为:
<?
// ... ...

// 数据库 首选参数
JCAT_DB::$sPreferredFactory                = $_SERVER['DBPreferredFactory'];
JCAT_DB::$sPreferredDBServer            = $_SERVER['DBPreferredServer'];
JCAT_DB::$sPreferredDBName                = $_SERVER['DBPreferredName'];
JCAT_DB::$sPreferredDBUser                = $_SERVER['DBPreferredUser'];
JCAT_DB::$sPreferredDBPassword            = $_SERVER['DBPreferredPassword'];  

// ... ...
?>

然后在 apache 的配置文件中(或 .htaccess) 中设置:

SetEnv DBPreferredFactory 'JCAT_DBFactoryMySQL41'
SetEnv DBPreferredServer 'localhost'
SetEnv DBPreferredName 'SameDB'
SetEnv DBPreferredUser 'root'
SetEnv sPreferredDBPassword ''

(说明:SetEnv 属于 mod_env.so 所以必须先确保该模块可用)

在 php.ini 设置
safe_mode_allowed_env_vars=DB


重启 apache
在 svnsync sync 开始以后,会在目标版本库的 0版本(0 rev)上设置一个 svn:sync-lock 属性,在同步完成以后删除这个属性。只要目标版本库在存在这个属性,其它进程就无法向这个版本库执行同步工作,以避免两个进程同时相同一个版本库执行同步操作造成冲突。

但是由于网络断线或其它突发状况,svnsync sync 未能在正常结束工作以后删除 svn:sync-lock 属性,重新执行 svnsync sync 就会因为已经存在 svn:sync-lock 而遇到错误。 (使用 google code 的svn经常会遇到这样的情况)

Failed to get lock on destination repos, currently held by 'alee-desktop:99572f2d-0e43-4cb6-8a8e-2b326a85a177'
Failed to get lock on destination repos, currently held by 'alee-desktop:99572f2d-0e43-4cb6-8a8e-2b326a85a177'

只要手工清除目标版本库上 0版本的 svn:sync-lock 属性就可以了,执行:
svn propdel svn:sync-lock --revprop -r 0 XXXXXXXXXXX

XXXXXXXX 换成你的目标版本库。
在 Windows 中 通过命令 可以打开网页:
start http://www.baidu.com

start iexplorer http://www.baidu.com
第二种方式 是 指定用 ie 打开网页,前一种使用系统默认浏览器



在 Linux Gnome 环境下可以使用命令 :
gnome-open http://www.baidu.com

至于 Kde、Xfce、Openbox 大概都有自己的方式吧 ... ...
在 Gtk 中 用类 GtkStatusIcon 来创建一个系统托盘对象,以实现像 QQ 那样在 windows 桌面右下角显示 一个 小图标。这个类要求 Gtk 高于2.10 。在 www.kksou.com 上有关于这个类的一系列介绍: http://www.kksou.com/php-gtk2/articles/set-up-an-application-to-run-in-the-system-tray-using-GtkStatusIcon---Part-1.php 。
阅读全文
今天项目,由于性能问题,需要修改排序算法。

根据项目实际情况,数据采用了分页结构,每页30条数据,对于第一页的数据,我只需要排出top30,第二页排出top60,所以不需要进行全部排序。

这样会导致一个问题,越靠后面的页数,性能越差,但在实际应用中,这里是要进行的是排序(排行),排行榜后面的数据也无意义,所以限制的最大排序量为top4000,足够了。
阅读全文
+: 相同的数组键值以第一个为准,不会被覆盖。
PHP代码如下:

php arr.php  
Array
(
    [0] => 1
)

用array_merge后:
空数组合并也不报警告错:
可以用:$verBugsReturnArr = (array)json_decode($sucStrReturn2,True); 来代替:
$bugsReturnArr = array();这样的初始化。





php arr.php
Array
(
    [0] => 1
    [1] => 22
)


有一样的数组值,且键值一样的情况:

php arr.php
Array
(
    [0] => 1
    [1] => 1
)
于是,如果有相同,则需要去重,一般如下来使用:
$deAndOpratorArr = array_unique(array_merge($opratorArr,$de));//数组合并并去重
if(in_array($currentUser,$deAndOpratorArr))
{
       ......
}


转载:http://user.qzone.qq.com/165162897/blog/1258271003

在bbs的一个项目中,有的时候需要将一个查询的结果集,追加到另一个结果集的后面,使用了array_merge最加了数据,当数据量大的时候发现性能不是很好,像下面这个调用经常30秒没有返回。

$tplData = array_merge($tplData, $rows);

检查了下手册,说明如下。

  array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
可见,array_merge是用来合并两个数组的,他本身是要进行健名比较判断的,对健的查找肯定要消耗时间了。
而我之前用的array_merge仅仅是做追加用,不需要判断key是否重复。故略做改动,仅仅进行追加,性能提升很多。


PHP合并数组+与array_merge的区别:
PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的! 主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 1)键名为数字时,array_merge()不会覆盖掉原来的值,但+
PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的!
主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意
1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)
2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值
需要注意的是数组键形式 '数字' 等价于 数字





————————————————————————————————————————————————————————
http://php.net/manual/en/function.array-merge.php
If the input arrays have the same string keys, then the later value for that key will overwrite the previous one. If, however, the arrays contain numeric keys, the later value will not overwrite the original value, but will be appended.
————————————————————————————————————————————————————————
查看php的手册,array_merge函数的定义如下,(php有函数 可以在合并的时候保留?)合并数组的时候如何保留key?这样做就成有一个是字母就会把5和'5'保留下来:

---------- 调试PHP ----------
Array
(
    [0] => 5
    [1] => 1
    [2] => 33
    [3] => 4
    [k] => v
)

输出完成 (耗时 0 秒) - 正常终止
——————————这玩意用得小心—————————————————————————————————————
今天在使用时发现两个环境出现了不一致的情况:
$array1 = array();
$array2 = array("3337997418592025"=>"15043435569");

环境1:php:5.2.9   Linux 2.6.18
运行array_merge后结果数组为 array("3337997418592025"=>"15043435569");
环境2:php:5.2.14  linux版本不明
运行array_merge后结果数组为 array("15043435569");

结论:
2:64位系统与32位系统差异,导致“3337997418592025”分别解析为float?和正整数

来自:http://blog.sina.com.cn/s/blog_48f073080100syau.html
这两函数在PHP中用于将数据对象序列化成文本,或将文本反序列化成数据对象。

经常用于PHP的cache处理中,可以将一个数据库的查询结果,缓存到本地的硬盘中。

今天因为种种原因,需要将一个大数据集的数组(10W条数据),序列化存储,但是由于数据集比较大序列化和反序列化的速度异常的慢,大约需要10秒才能执行完毕。



分析数据发现,序列化的数据中有一些信息是冗余的,我10W条数据,其实对我有用的就是有些统计信息

比如说{s:2:"pv";i:0;s:2:"uv";i:0;s:8:"topCount";i:0;s:10:"eliteCount";i:0;s:12:"articleCount";i:0;s:10:"replyCount";i:0;s:14:"unionUserCount";i:0;s:6:"online";i:0;s:2:"id";s:2:"79";s:8:"pathInfo";a:1:{s:2:"id";s:2:"79";}},但实际存储中发现,之前为了减少读取文件的次数,我把很多无用的信息冗余的也存储到这里了,比如说一个用户的基本信息,姓名,年龄,还有版面的基本信息等(我相信很多人也经常这样做,用空间来换取时间),但这样构成的数组就太庞大了。



后来仔细研究了下,发现在这里用空间换时间是不可取的,相反速度会慢,因为我的一页只有30条数据,那些信息完全可以时时查找的,与其将其冗余存储到这10W条数据里,还不如等分完页后我在获取那些信息,组合起来,还节省了很多内存,经过这一步的改造

     程序的响应时间,提高了5s。
    序列化的文件大小 由原先的1.95M缩减到了326K



哈哈 看来数据分页所带来的好处还是蛮多的啊。

转自哥们延年的QQ空间!
分页: 199/272 第一页 上页 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 下页 最后页 [ 显示模式: 摘要 | 列表 ]