May 25, 2012
New HTTP status codes
"RFC 6585 has been published quite recently. This document describes 4 new HTTP status codes.\nSo in case you were wondering, yes.. HTTP is still evolving :), and these new statuses may be quite useful for developing your REST, or otherwise HTTP-based service. This post describes why they are important, and when you should use them.\n428 Precondition Required A precondition is something a client can send along with a HTTP request."
May 25, 2012
MySQL数据库的IO操作
"导读:\n淘宝丁奇分享的PPT:MySQL数据库的IO操作,详细分享了四块的内容,并且告诉大家如何调整MySQL数据库IO操作相关的参数,给出了详细的选择策略,现替其整理成文章分享与此。\nPPT内容提纲:\n1.MySQL的文件及简介\n2.数据访问流程\n3.文件访问模式\n4.影响io行为的一些参数和选择策略\n1.MySQL的文件及简介\n2.数据访问流程\n一个简单的查询 select * from t where id\u0026gt;=( select id from t where k1=100 limit 100000,1) limit 2;\n表结构:\nCREATE TABLE t (\nid int(11) NOT NULL,\nk1 int(11) DEFAULT NULL,\ndata char(100) DEFAULT NULL,\nPRIMARY KEY (id),\nKEY k1 (k1)\n) ENGINE=InnoDB DEFAULT CHARSET=gbk;\n3.数据访问流程\n4.数据访问流程\n一个简单的更新 insert into t values(1, 100, ‘abcd’);\n5. …"
May 25, 2012
从PHP客户端看MongoDB通信协议
"MongoDB的 PHP 客户端有一个 MongoCursor 类,它是用于获取一次查询结果集的句柄(或者叫游标),这个简单的取数据操作,内部实现其实不是那么简单。本文就通过对 MongoCursor 类一些操作进行分析,向大家揭开 MongoDB 客户端服务器通信的一些内部细节。\ngetNext与网络请求 通常来说,每一次find操作都会返回一个MongoCursor对象,在这个对象上调用getNext方法,就能够获得一条结果数据。循环调用getNext方法就能获取多条数据。下面我们就来看看其内部取数据的具体逻辑。\n首先我们用最简单的方法来生成一个MongoCursor对象:\n$m = new Mongo(); $collection = $m-\u0026gt;demoDb-\u0026gt;demoCollection; $cursor = $collection-\u0026gt;find(); 当我们调用 find 方法的时候,会生成一个 MongoCursor 对象,而这时候只是生成一个内存中的对象而已,并不会把我们的 find 查询发送到服务端,因为在生成 MongoCursor 对象后,我们还可能对 …"
May 12, 2012
MongoDB 客户端 MongoVue
"今天在同事那里看到了一个很不错的MongoDB的客户端工具MongoVue,地址是http://www.mongovue.com/。做的不错,1.0版本的开始收费了,费用也不贵才35$。真正需要的同学可以掏点钱买个吧,也算是支持这个工具,如果只是学习研究用的话我这里还有一个0.9.7版本,虽然比起1.0版来说有些bug,平常使用也够了,需要的同学可以单独联系我。\n1.0版之后超过15天后功能受限。可以通过删除以下注册表项来解除限制:\n[HKEY_CURRENT_USER\\Software\\Classes\\CLSID{B1159E65-821C3-21C5-CE21-34A484D54444}\\4FF78130]\n把这个项下的值全删掉就可以了。\n下面上图给大家感受下强大的MongoVue,可以提高你使用MongoDB的幸福指数好几十点,上图是王道:\n1、配置连接\n2、试下新建一个名为AccessLog的Collection :\n3、插入一个Document\n4、查看我们插入的数据,数据可以通过多种方式展示(树形、表格、文本)\n上面我们都是通过图形界面的操作的吧,下面有一个窗口列出了上述操 …"
May 11, 2012
ps和pstree
"ps和pstree是用于系统分析的基本命令。ps有3中不同风格的命令选项,UNIX风格、BSD风格和GNU风格。这里我们只介绍UNIX风格选项。\nps命令可以显示当前运行的进程列表。top命令也可以显示进程信息,但ps可以提供更加详细的内容。使用相应选项可以影响进程显示的数量。ps -A命令可以列出所有进程及其相应的进程ID(PID),当我们使用如pmap或renice等工具时会用到此PID。\n当系统运行java应用时,ps -A产生的输出结果很容易填满整个显示区域,这导致很难得到所有运行中进程的完整视图。在这种情况下,pstree命令就派上用场了,它使用树状显示所有运行中的进程并合并所有的子进程(例如java线程),pstree命令有助于确认原始进程。还有另一个ps变种pgrep也非常有用。\n例子2-4:ps输出示例\n下面我们来了解一些常用的选项\n-e :所有进程。等同于-A\n-l :显示长格式\n-F :附加全格式\n-H :显示进程的层次结构\n-L :显示线程,可能出现LWP和NLWP栏位\n-m :在进程后显示线程\n下面的命令演示输出进程的详细信息:\nps -elFL\n例子2-5:输 …"
May 10, 2012
时间即财富:创业者浪费精力的八个错误
"导读:本文作者Jeff Miller是美食网页应用Punchfork的创始人,同时也是DuckDuckGo、Ginzametrics、Art.sy、DataMinr以及Forkly的投资人。作者通过对自己创业初期一些错误选择进行盘点,告诉读者在创业初期应该学会选择,因为在创业初期,时间是最宝贵的财富。\n创业的选择有两种,一是白手起家做创新品牌,另外就是已经有发展基础的品牌去做大,这两者之间最大的不同就是把握时机。每天都会有成百上千的机会摆在你的面前,你会选择哪一个?把握住其中的一个机会就意味着你将放弃其它那成百上千的诱惑。所以,创业最关键的技能就是把握时机。\n作为一个成熟的企业,在发展的过程中都会面临各种时机,这些时机有的会让公司在付出较少的前提下获得更多利益,有的会促使公司有较大的发展。这些时机会由很多事情决定,比如有足够的活跃用户会向你进行反馈市场信息、发现某个榜样可以让你参考学习、发现了能够促进达成目标的优化方案等等。\n回顾我自己创业的这六个月,发现自己对时机的选择真的是非常糟糕的。我经常在某项工作上花费大量时间,而最后对达成目标却没有任何效果。我特别容易偏爱短期(1至2周时间) …"
May 10, 2012
Mongodb 与mysql 语法比较
"mongodb与mysql命令对比\n传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由**数据库(database)、集合(collection)、文档对象(document)**三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。\nMySQL\nMongoDB\n说明\nmysqld\nmongod\n服务器守护进程\nmysql\nmongo\n客户端工具\nmysqldump\nmongodump\n逻辑备份工具\nmysql\nmongorestore\n逻辑恢复工具\ndb.repairDatabase()\n修复数据库\nmysqldump\nmongoexport\n数据导出工具\nsource\nmongoimport\n数据导入工具\ngrant * privileges on . to …\nDb.addUser()\nDb.auth()\n新建用户并权限\nshow databases\nshow dbs\n显示库列表\nShow tables\nShow collections …"
May 10, 2012
MongoDB数据库优化:Mongo Database Profiler
"在MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是Mongo Database Profiler.不仅有,而且还有一些比MySQL的Slow Query Log更详细的信息。它就是我们这篇文章的主题。\n** 开启 Profiling 功能**\n有两种方式可以控制 Profiling 的开关和级别,第一种是直接在启动参数里直接进行设置。\n启动MongoDB时加上–profile=级别 即可。\n也可以在客户端调用db.setProfilingLevel(级别) 命令来实时配置。可以通过db.getProfilingLevel()命令来获取当前的Profile级别。 \u0026gt; db.setProfilingLevel(2);\n{“was” : 0 , “ok” : 1}\ndb.getProfilingLevel() 上面斜体的级别可以取0,1,2 三个值,他们表示的意义如下:\n0 – 不开启\n1 – 记录慢命令 (默认为\u0026gt;100ms)\n2 – 记录所有命令\nProfile 记录在级别1时会记录慢命令,那么这个慢的定义是 …"
May 8, 2012
优化MySQL语句的十个建议
"(译者注:作者借这个题目反讽另一篇同名的文章)\nJaslabs的Justin Silverton列出了十条有关优化MySQL查询的语句,我不得不对此发表言论,因为这个清单非常非常糟糕。另外一个Mike也同样意识到了。所以在这个博客中,我要做两件事情,第一,指出为什么这个清单很糟糕,第二,列出我的清单,希望我的比较好些。继续看吧,无畏的读者们!\n为什么那个清单很糟糕\n1.他的力气没使对地方\n我们要遵循的一个准则就是如果你要优化代码时,应该先找出瓶颈在哪。然而Silverton先生的力气没有用对地方。我认为60%的优化是基于清楚理解SQL和数据库基础的。你需要知道join和子查询的区别,列索引,以及如何将数据规范化等等。另外的35%的优化是需要清楚数据库选择时的性能表现,例如COUNT(*)可能很快也可能很慢,要看你选用什么数据库引擎。还有一些其他要考虑的因素,例如数据库在什么时候不用缓存,什么时候存在硬盘上而不存在内存中,什么时候数据库创建临时表等等。剩下的5%就很少会有人碰到了,但Silverton先生恰好在这上面花了大量的时间。我从来就没用过SQL_SAMLL_RESULT。\n2.很 …"
May 8, 2012
Mysql中出现的"MySQL Got error 139 from storage engine"的原因
"今天再从excel里导入数据到Mysql中的时候,发现一个表里的数据总是导入失败.后来经过查找是用的INNODB表引擎的问题.而换成MYISAM表引擎的话,则不存在此问题.并试图先导入成Myisam表,然后手动修改表引擎为INNODB.结果提示"MySQL Got error 139 from storage engine"错误.经google一番发现.是由于INNODB单条记录有8K的限制,而导入的excel表里字段不到20个.内容特别的多的.\n官方解释如下:\nSolution:\n1.divide your table into small ones. If one table contain more than 10 text colums, and the data contain is a little bit long. this error will be thrown out.\n2.modify InnoDB to MyISAM.Problem description:\nDescription: Since upgrading MySQL from version …"