摘要: 相信大家对siege还是比较了解的,它是一款比较功能比较强大的压力测试软件。可能大家平常也会用,但直到前阵子,发现自己对它的参数理解还不够深刻,分享出来希望对大家有所帮助。如果我用以下这样的参数去进行压力测试,具体是怎样的?siege -r1000 -c20 "127.0.0.1:1823"是不是“20个并发用户,每个用户重复请求1000次,去压本地的1823端口”。好的,那接下来的问题来了,每个用户的每个请求之间会不会有延时?如果有延时的话,会不会对得到的性能指标有所影响呢?这就我们之前很可能忽视的一个参数:-b, --benchmark BENCHMARK: no de 阅读全文
posted @ 2012-08-14 17:00 lengyuhong 阅读(834) 评论(0) 推荐(0) 编辑
摘要: 最近在操作MongoDB时,遇到一个比较坑爹的问题,就是将“query”当做一条的记录,它在一些条件下就“失效”。 我使用的MongoDB数据库版本是1.8.3。MongoDB shell version: 2.0.3 具体数据:{ "_id" : ObjectId("4fe955021219143f31b9d2b9"), "query" : 1, "test" : [ 1, 2, 3 ] }{ "_id" : ObjectId("4fe9557b1219143f31b9d2ba&qu 阅读全文
posted @ 2012-06-28 20:04 lengyuhong 阅读(1437) 评论(2) 推荐(0) 编辑
摘要: 要测试javascript代码执行效率,当然有很多方法,今天听了清笃的一个技术分享,发现之前一直忽略了一个最简单快速的方法:console.time(name)Creates a new timer under the given name. Call console.timeEnd(name) with the same name to stop the timer and print the time elapsed..console.timeEnd(name)Stops a timer created by a call to console.time(name) and wr... 阅读全文
posted @ 2012-06-27 13:32 lengyuhong 阅读(783) 评论(1) 推荐(0) 编辑
摘要: 之前看了这篇文章《The Difference Between jQuery’s .bind(), .live(), and .delegate()》一文,觉得自己已经完全理解了.live() 和.delagate(),直到遇到了一个另一个问题,发现还是有遗漏。 先再补充下知识,简单讲讲两者之间的区别: .live()$('a').live('click', function() { alert("That tickles!") }); JQuery把alert函数绑定到$(document)元素上,并使用’click’和’a’作为参数。任何 阅读全文
posted @ 2012-06-17 21:25 lengyuhong 阅读(1961) 评论(3) 推荐(0) 编辑
摘要: 自己写nodejs也有一段时间,踩过很多坑(而且大部分是自己给自己埋),也见过很多别人踩过的坑,原因其实也很简单,要么是对这个知识点理解不够深入,要么就是编码的习惯不好。这段响应朋春大牛的号召,打算陆陆续续整理下这些坑,算是给自己一个备忘,同时也希望能对大家有所帮助。 1. callback 事件回调是nodejs非常常见的一个应用场景,那大家先来看看以下这段代码是否存在什么问题?get(params, function(err, data) { if (err) { callback(err); } //对data进行操作 var row = data[0];}); ... 阅读全文
posted @ 2012-05-31 21:44 lengyuhong 阅读(4701) 评论(7) 推荐(3) 编辑
摘要: 前几天听了部门内朋春大牛讲分布式缓存的一个技术分享,还是非常有收获。 PPT如下: 这个分享的副标题是“简单的事情从来不简单”,这句话讲得非常在理。缓存看似简单,但要做“好”一个缓存系统也是很有讲究的。 写点自己的心得收获吧: 1. 分布式缓存面临比较大的三个问题: (1) 数据一致性。 在分布式系统这点显得尤为重要,主要原因有三点: 缓存系统与底层数据的一致性。这点在底层系统是“可读可写”时,写得尤为重要 有继承关系的缓存之间的一致性。为了尽量提高缓存命中率,缓存也是分层:全局缓存,二级缓存。他们是存在继承关系的。全局缓存可以有二级缓存来... 阅读全文
posted @ 2012-05-26 19:03 lengyuhong 阅读(5025) 评论(3) 推荐(3) 编辑
摘要: 在讲这个问题之前,先来补充几个知识点,如果对此已经比较了解可以直接跳过 1. 大多数浏览器的组件构成如图 在最底层的三个组件分别是网络,UI后端和js解释器。作用如下: (1)网络- 用来完成网络调用,例如http请求,它具有平台无关的接口,可以在不同平台上工作 (2)UI 后端- 用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口 (3)JS解释器- 用来解释执行JS代码ps:上图和知识点主要来自《HOW BROWSERS WORK: BEHIND THE SCENES OF MODERN WEB BROWSERS》 想深入... 阅读全文
posted @ 2012-05-20 18:28 lengyuhong 阅读(11707) 评论(5) 推荐(8) 编辑
摘要: 一、简介 CSRF (Cross-site Request Forgery),中文名称:跨站伪造。危害是攻击者可以盗用你的身份,以你的名义发送恶意请求。比如可以盗取你的账号,以你的身份发送邮件,购买商品等。 二、原理 具体的原理图如下: 更加恐怖的是使用诸如img之类的标签,甚至不需要用户点击某个链接就可以发起攻击,比如B网站可以添加如下代码: <img src='http://www.company.com/action?k1=v1&k2=v2' width=0 height=0 /> 这里width=0 height=0表示图片是不可见的。这个语句会导致 阅读全文
posted @ 2012-05-16 22:17 lengyuhong 阅读(5034) 评论(5) 推荐(2) 编辑
摘要: 在web服务中,提交表达和数据时,get和post是非常常用的两种服务。现用nodejs实现这两个服务。一、get操作app.html:<html> <head> <title>登陆页面</title> </head> <body> <form action="check" method="get"> <p>First name: <input type="text" name="fname" /></ 阅读全文
posted @ 2012-05-07 21:37 lengyuhong 阅读(2698) 评论(0) 推荐(0) 编辑
摘要: 众所周知,mongodb是不支持join操作的,因此我们只能自己来实现这个功能。前段时间,我遇到这个一个业务场景: collection A 的数据格式:{ "_id" : { "username" : "jifeng.zjd", "version" : 2 }, "value" : 1 } collection B 的数据格式:{ "user_id" : 12630, "username" : "jifeng.zjd" } A表的数据 阅读全文
posted @ 2012-04-14 15:38 lengyuhong 阅读(8665) 评论(3) 推荐(1) 编辑