August 3, 2011
新浪微博、腾讯微博:mysql数据库主表设计猜想
"用户信息表(t_user_info)\n字段名称\n字节数\n类型\n描述\nUser_id\n4\nuint32\n用户编号(主键)\nUser_name\n20\nChar[20]\n名称\nMsg_count\n4\nuint32\n发布消息数量,可以作为t_msg_info水平切分新表的auto_increment\nFans_count\n4\nuint32\n粉丝数量\nFollow_count\n4\nUint32\n关注对象数量\n备注:以User_id取模分表\n用户之间关系表(t_user_relation),必须有关注与被关注的关系\n字段名称\n字节数\n类型\n描述\nUser_id\n4\nuint32\n用户编号(联合主键)\nFollow_id\n4\nuint32\n被关注者编号(联合主键)\nType\n1\nUint8\n关系类型(0,粉丝;1,关注)\n备注:关系是单向的,以User_id取模分表\n用户消息索引表(t_uer_msg_index)\n字段名称\n字节数\n类型\n描述\nUser_id\n4\nuint32\n用户编号(联合主键)\nAuthor_id\n4\nuint32\n消息发布者编号(可能是被关注者,也可能是自己)(联合主键) …"
August 2, 2011
nagios访问apache权限问题解决
"It appears as though you do not have permission to view information for any of the services you requested…\n打开cgi.cfg配置文件,里面有个参数:\nuse_authentication=1\n为了保障系统的安全性,nagios设置了这个参数,默认为1,改为0即可\n1.装了几次,换了几个版本的系统,脑袋都大了,终于解决了\nnrpe在 ./configure时提示\nchecking for SSL… configure: error: Cannot find ssl libraries\n把openssl-devel装上就可以了\n2.nagios web界面提示\nIt appears as though you do not have permission to view information for any of the services you requested…\n打开cgi.cfg配置文件,里面有个参数:\nuse_authentication=1\n为了保障系统的安全 …"
August 1, 2011
理解Linux系统负荷
"一、查看系统负荷\n如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了。\n在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行)。(另外,它们在苹果公司的Mac电脑上也适用。)\n你在终端窗口键入uptime,系统会返回一行信息。\n这行信息的后半部分,显示”load average”,它的意思是”系统的平均负荷”,里面有三个数字,我们可以从中判断系统负荷是大还是小。\n为什么会有三个数字呢?你从手册中查到,它们的意思分别是1分钟、5分钟、15分钟内系统的平均负荷。\n如果你继续看手册,它还会告诉你,当CPU完全空闲的时候,平均负荷为0;当CPU工作量饱和的时候,平均负荷为1。\n那么很显然,”load average”的值越低,比如等于0.2或0.3,就说明电脑的工作量越小,系统负荷比较轻。\n但是,什么时候能看出系统负荷比较重呢?等于1的时候,还是等于0.5或等于1.5的时候?如果1分钟、5分钟、15分钟三个值不一样,怎么办?\n二、一个类比\n判断系统负荷是否过重,必须理解load average的真正含义。下面,我根据” Understanding Linux …"
July 31, 2011
Apache下实现隐藏服务器名称
"我这里用的是FreeBSD的操作系统的.用curl 命令查看文件头\n为了安全起见,我们需要将FreeBSD字样及其它信息隐藏起来.操作如下:\n在httpd.conf文件里添加以下两行\nServerTokens Prod ServerSignature Off\n重启apache即可.\n如图所示:"
July 29, 2011
性能测试工具sysbench简介
"sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL。本文只是简单演示一下几种测试的用法,后续准备利用sysbench来对MySQL进行一系列的测试。具体的一些参数设置,需要根据不同的测试要求来进行调整。\n下载\n** 编译安装** 默认支持MySQL,如果需要测试Oracle/PostgreSQL,则在configure时需要加上–with-oracle或者–with-pgsql参数\n./configure --prefix=/u01/sysbench \\ --with-mysql-includes=/opt/mysql/include/mysql \\ --with-mysql-libs=/opt/mysql/lib/mysql make \u0026amp;\u0026amp; make install 参数\nNinGoo:/u01/sysbench/bin\u0026gt;$sysbench Missing required command argument. Usage: sysbench …"
July 28, 2011
mongodb中实现自定义自增ID
"PHP代码:\nfunction get_autoincre_id($name, $db){ $update = array(\u0026#39;$inc\u0026#39;=\u0026gt;array(\u0026#34;id\u0026#34;=\u0026gt;1)); $query = array(\u0026#39;table_name\u0026#39; =\u0026gt; $name); $command = array( \u0026#39;findandmodify\u0026#39;=\u0026gt;\u0026#39;autoincre_system\u0026#39;, \u0026#39;update\u0026#39;=\u0026gt;$update, \u0026#39;query\u0026#39;=\u0026gt;$query, \u0026#39;new\u0026#39;=\u0026gt;true, \u0026#39;upsert\u0026#39;=\u0026gt;true ); $id = $db-\u0026gt;command($command); return $id[\u0026#39;value\u0026#39;][\u0026#39;id\u0026#39;]; } 其中上面的table_name可以用来区别多个表,这样可以灵活实现单独的几个表的自增ID值.\n$conn = new Mongo(); $db = …"
July 27, 2011
修改window下dos窗口的编码为utf8
"在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。\n如果想正确显示UTF-8字符,可以按照以下步骤操作:\n1、打开CMD.exe命令行窗口\n2、通过 chcp命令改变代码页,UTF-8的代码页为65001\nchcp 65001\n执行该操作后,代码页就被变成UTF-8了。但是,在窗口中仍旧不能正确显示UTF-8字符。\n3、修改窗口属性,改变字体\n在命令行标题栏上点击右键,选择”属性”-\u0026gt;”字体”,将字体修改为True Type字体”Lucida Console“,然后点击确定将属性应用到当前窗口。\n这时使用type命令就可以显示UTF-8文本文件的内容了:\ntype filename.txt\n4、通过以上操作并不能完全解决问题,因为显示出来的内容有可能不完全。可以先最小化,然后最大化命令行窗口,文件的内容就完整的显示出来了。"
July 27, 2011
MongoDB的ObjectId
"前段时间有个朋友问我,分布式主键生成策略在我们这边是怎么实现的,当时我给的答案是sequence,当然这在不高并发的情况下是没有任何问题,实际上,我们的主键生成是可控的,但如果是在分布式高并发的情况下,那肯定是有问题的。\n突然想起mongodb的objectid,记得以前看过文档,objectid是一种轻量型的,不同的机器都能用全局唯一的同种方法轻量的生成它,而不是采用传统的自增的主键策略,因为在多台服务器上同步自动增加主键既费力又费时,不得不佩服,mongodb从开始设计就被定义为分布式数据库。\n下面深入一点来翻翻这个Objectid的底细,在mongodb集合中的每个document中都必须有一个”_id”建,这个键的值可以是任何类型的,在默认的情况下是个Objectid对象。\n当我们让一个collection中插入一条不带_id的记录,系统会自动地生成一个_id的key\ndb.t_test.insert({“name”:”cyz”})\ndb.t_test.findOne({“name”:”cyz”})\n{ “_id” : …"
July 27, 2011
服务器出现-由注册表引起的I/O操作发生了不可恢复的错误 的解决方法
"昨天一台服务器的80端口突然不行了,3389虽然通,但连接不上,其它的3306和21端口都正常的.初步怀疑是系统资源不足引起的.第二天让机房检查,最后没有办法重启解决了.\n服务器出现此问题: 很多使用Windows Server 2003系统的用户都会收到如下错误: 事件类型: 错误 事件来源: Application Popup 事件种类: 无 事件 ID: 333 日期: 2007-8-11 事件: 8:48:03 用户: N/A 计算机: LZ_YQ 描述: 由注册表引起的 I/O 操作发生了不可恢复的错误。 注册表将不能读取、写出或刷新包含注册表系统图像的其中一个文件。\n然后系统失去响应,需要重新启动。\n事件ID是333,英文日志为:\nEvent Type: Error Event Source: Application Popup Event Category: None Event ID: 333 Date: date Time: time User: N/A Computer: computer name Description: An I/O operation …"