Browsed by
分类: 编程语言

十个免费的Web压力测试工具

十个免费的Web压力测试工具

两天,jnj在本站发布了《如何在低速率网络中测试 Web 应用》,那是测试网络不好的情况。而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的WEB应用能够顶得住多少的并发量,以及你的网站的性能。我相信,北京奥组委的订票网站的开发团队并不知道有这样的测试工具。

Grinder –  Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利。 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理。根据项目网站的说法,Grinder的 主要目标用户是“理解他们所测代码的人——Grinder不仅仅是带有一组相关响应时间的‘黑盒’测试。由于测试过程可以进行编码——而不是简单地脚本 化,所以程序员能测试应用中内部的各个层次,而不仅仅是通过用户界面测试响应时间。

Pylot -Pylot是一款开源的测试web service性能和扩展性的工具,它运行HTTP 负载测试,这对容量计划,确定基准点,分析以及系统调优都很有用处。Pylot产生并发负载(HTTP Requests),检验服务器响应,以及产生带有metrics的报表。通过GUI或者shell/console来执行和监视test suites。

Web Capacity Analysis Tool (WCAT) – 这是一种轻量级负载生成实用工具,不仅能够重现对 Web 服务器(或负载平衡服务器场)的脚本 HTTP 请求,同时还可以收集性能统计数据供日后分析之用。WCAT 是多线程应用程序,并且支持从单个源控制多个负载测试客户端,因此您可以模拟数千个并发用户。该实用工具利用您的旧机器作为测试客户端,其中每个测试客户端又可以产生多个虚拟客户端(最大数量取决于客户端机器的网络适配器和其他硬件)。您可以选择使用 HTTP 1.0 还是 HTTP 1.1 请求,以及是否使用 SSL。并且,如果测试方案需要,您还可以使用脚本执行的基本或 NTLM 身份验证来访问站点的受限部分。(如果您的站点使用 cookie、表单或基于会话的身份验证,那您可以创建正确的 GET 或 POST 请求来对测试用户进行身份验证。)WCAT 还可管理您站点可能设置的任何 cookie,所以配置文件和会话信息将永久保存。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 3.29 )
Loading...
一些重要的算法

一些重要的算法

下面是一些比较重要的算法,原文罗列了32个,但我觉得有很多是数论里的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解一下也是好事。也欢迎你留下你觉得有意义的算法。(注:本篇文章并非翻译,其中的算法描述大部份摘自Wikipedia,因为维基百科描述的很专业了)

  1. A*搜寻算法
    俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstra算法一样,可以找到一条最短路径;也像BFS一样,进行启发式的搜索。
  2. Beam Search
    束搜索(beam search) 方法是解决优化问题的一种启发式方法,它是在分枝定界方法基础上发展起来的,它使用启发式方法估计k 个最好的路径,仅从这k 个路径出发向下搜索,即每一层只有满意的结点会被保留,其它的结点则被永久抛弃,从而比分枝定界法能大大节省运行时间。束搜索于20 世纪70 年代中期首先被应用于人工智能领域,1976 年Lowerre 在其称为HARPY的语音识别系统中第一次使用了束搜索方法,他的目标是并行地搜索几个潜在的最优决策路径以减少回溯,并快速地获得一个解。
  3. 二分取中查找算法
    一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。这种搜索算法每一次比较都使搜索范围缩小一半。

    阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (19 人打了分,平均分: 4.21 )
Loading...
Web版的VNC

Web版的VNC

想在Web上远程控制远端的电脑吗?Guacamole开源项目提供了这样的解决方案,其主要使用了HTML5和Ajax。下面是一个载图。如果你能够访问Youtube的话,你可以看看这个视频

Guacamole 一个 HTML5 + JavaScript (AJAX) 的 VNC 客户端

是啊,HTML5强大了,什么都能干了,连Flash也要取代了。现如今,什么事都在往Web上移植了,Chrome也OS了。可以预见在HTML5出来后,未来这样的事情会越来越多,以后的一些移动和掌上设备真的只需要一个Web Browsers.

好烂啊有点差凑合看看还不错很精彩 (9 人打了分,平均分: 2.33 )
Loading...
如何在低速率网络中测试 Web 应用

如何在低速率网络中测试 Web 应用

大家看到标题后的第一个问题可能是:“我们需要这样做吗?”

如果我们开发的是局域网 Web 应用的话,可能没有必要这样做。但如果我们的 Web 应用面向的是互联网上的成千上万的用户,这样做就很必要了。因为在现实世界中并不是所有的用户都有高数率的网络连接,也许用户使用的是拨号接入,移动设备,3G,或者是 USB 网络加密狗。如果我们没有在低数率的网络环境中测试过我们 Web 应用,极有可能在上线后收到一些意想不到的关于系统性能方面的抱怨。这个时候无论我们的 Web 应用界面多么地 Web 2.0,功能多么地强大,对于用户来说都失去了使用价值。

目前有很多工具能够模拟慢速网络,值得一提的是 Firefox Throttle,这是一个 Firefox 插件,你可以设置上载和下载的数率,并且监控当前带宽的使用情况。另一个非常有用的特性是它可以控制你的 localhost 的连接数率,对本地测试很有用。

Firefox Throttle 的截图

另一个工具是 Sloppy,它是一个 Java Web Start application。

文章来源

好烂啊有点差凑合看看还不错很精彩 (6 人打了分,平均分: 2.50 )
Loading...
参透软件开发的本质 – Uncle Bob Martin 推荐的经典书籍

参透软件开发的本质 – Uncle Bob Martin 推荐的经典书籍

数量级25(10^25)是 Uncle Bob 在 RailsConf 演讲的主题。如果你用一台 PDP 8( 1960年代的计算机)和 Mac PowerBook 做比较的话,你会发现 Mac PowerBook 比 PDP 8 快8000倍,有6百万倍大的内存,11000倍的耗能,1500倍的容量等等。如果将这些0累加起来,很容易达到10^25。在过去40年里,我们的硬件计算能力获得了10^25倍的提升,而作为软件开发人员的我们并没有利用这些计算能力来提升多少我们的软件开发能力。没错,我们是写了不少的代码,但是它们基本上都是一些顺序语句,if 语句,和 while 循环等,没有什么新鲜的东西。你可能会说面向对象是新东西呀,但是那只是另外一种组织顺序、选择和迭代等语句的方法而已。除我们现有的编程语言之外,如果有新的编程语言能够产生并创造新的“微积分学”,从而将软件开发提高到一个新的高度,将会是一件非常令人期待的事情,因为顺序语句,选择语句和迭代等最终将成为历史。

Uncle Bob 认为以下四本书是软件开发人员必须阅读的,并由他自己来排名。

1. The Structure & Interpretation of Computer Programs 计算机程序的构造和解释 (By Harold Abelson & Gerald Sussman)

书中使用的是 Scheme 语言(Lisp 的一个变种),此书的内容曾经是 MIT 计算机系的一门课程,当然现在已经不是了。

2. Structured Programming 结构化程序设计 (By Edsger W. Dijkstra)

相信软件专业的同学们都上过此课程,我们的启蒙书籍。这本书讨论了 go to 是怎样的邪恶,同时也讨论了面向对象。对比一下今天我们视为 best practice 的测试驱动开发(TDD),go to 在过去也曾经是 Fortran,Cobol 等语言的核心。

3. The Annotated TURING (By Charles Petzold)

Uncle Bob 令人尴尬地忘记了这本书的名字,他自嘲说自己从来记不住这本书名。但是此书在他的推荐列表中列第三位。

4. Clean Code (By Robert C. Martin)

Uncle Bob 本人的大作。

我的一位同事将这位 Uncle Bob 视为软件开发领域中的上帝,Uncle Bob 这位大师在当下各类编程语言和平台层出不穷的时候,在我们为该学什么语言买什么书举棋不定的时候,推荐给读者这几本经典,也许是煞费苦心地想让我们参透软件开发的本质吧。不过会不会也是因为我们都在慢慢变老,许多旧的东西如今又变成了新鲜有趣的事情啦?(出自采访记者之口)

文章来源

好烂啊有点差凑合看看还不错很精彩 (10 人打了分,平均分: 3.60 )
Loading...
几个Web的资源

几个Web的资源

首先一个先给大家介绍一个HTML5的资源网站:http://www.html5rocks.com/ ,在这个网站上,有三个子站:

  1. HTML5的幻灯片:http://slides.html5rocks.com/,虽然是英文的,但相信我,这个幻灯片做得很好,你应该能看得懂。
  2. HTML5的操练场:http://playground.html5rocks.com/,这个页面上有很多HTML5的源码,你可以就直接在上面修改,并查看修改结果。
  3. HTML5的教程:http://www.html5rocks.com/tutorials/,这个页上有一些Steps by Steps的教程,很不错。

第二个,给大家推荐一个Javascript库,叫——DragDealer。这个JS主要是处理Web上的各种拖动效果,脚本很小,在没有压缩的情况下也只有12K,而且没有任何的dependence,使用起来也比较方便。

第三个,是Apple的Showcase,我们都知道,iPhone不支持flash,但支持HTML5,大家可以点下面这些链接看看Apple公司自己做的HTML5的一些效果。当然,有一些需要safari浏览器。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 3.14 )
Loading...
把Flash转成Javascript/HTML5

把Flash转成Javascript/HTML5

SmokeScreen是这样一个开源软件,它可以把Flash的swf文件转成Javascript/HTML5,它的口号是:Flash without plugin。为什么要这样做呢?它说主要是因主Apple的iPhone/iPod/iPad不支持flash,而且看似Steve Jobs也不愿意在以后支持flash。所以,他们搞了这样一个玩意。目前,这个开源软件还在开发阶段,在其主页上,你可以看到一些Demo,在Chrome上看上去很不错,虽然还有一些小问题,不过已经很不错了。

HTML5几乎颠覆了原来的HTML,其可以让你用HTML不单单只是做网页布局,而且还让你可以开发更强的东西,比如:WebSockets,使用这项技术,已经有人在搞Web版的Quake 2了(http://code.google.com/p/quake2-gwt-port/),还有Google的3D Javascript API,所以,把swf完美地转成Javscript/HTML5可能也只是一个时间问题。

虽然,HTML5还在draft阶段,而且很多东西都和flash重复了。所以,加上iPhone的推波助澜,发生这样的事情也不奇怪,不知道adobe会怎么想?也许adobe目前对其AIR或是Actionscript还抱有希望,虽然有这样一篇文章力挺Flash,但未来真的不好说,adobe会使用HTML5/Javascript来作为其flash的引擎吗?如果不这样的话,我相信总有一天,会有人开发出HTML5/Javascript的IDE。而且,有理由相信,一旦在未来所有的浏览全面支持HTML5,那么我们可以想像,这个世界可能几乎所有的桌面应用都会被Web所取代,这个进程可能会越来越快。让我们拭目以待。

好烂啊有点差凑合看看还不错很精彩 (11 人打了分,平均分: 3.45 )
Loading...
WTF Javascript

WTF Javascript

请先看一下下面的这段Javascript程序以及其结果。

[javascript]
1 + + 1              // => 2
1 + – + 1            // => 0
1 + – + – + 1        // => 2
1 + – + – + – + 1    // => 0
1 + – + + + – + 1    // => 2
1 + / + + + / + 1    // => 1/ + + + /1
[/javascript]

提示一下,1++1等价于1 + (+1),也就是1加上一个正数1,如果你能搞懂其它的表达式的话,请看看下面的这段程序,你能说出其结果吗?

[javascript]
1 + / + / + / + 1 // => ?
[/javascript]

如果不知道的话,你可以到这个网页上去讨论讨论。当然,如果你不懂也没有什么关系,因为Javascript本身就是一个很怪异的语言,再加上浏览器的种种不是,所以,Javascript程序员也是很郁闷的。在以前的“最为奇怪的程序语言的特性”中也说过一些。Javascript最怪异的特性导致了wtfjs.com这样的一个网站,还有一个WTF JS的开源站点。呵呵。

好烂啊有点差凑合看看还不错很精彩 (8 人打了分,平均分: 3.25 )
Loading...
四个流行的Java连接池

四个流行的Java连接池

C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。(主页:http://sourceforge.net/projects/c3p0/

BoneCP 是一个开源的快速的 JDBC 连接池。BoneCP很小,只有四十几K(运行时需要log4jGoogle Collections的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。另外个人觉得 BoneCP 有个缺点是,JDBC驱动的加载是在连接池之外的,这样在一些应用服务器的配置上就不够灵活。当然,体积小并不是 BoneCP 优秀的原因,BoneCP 到底有什么突出的地方呢,请看看性能测试报告。(主页:http://jolbox.com/

DBCPDatabase Connection Pool)是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat的数据源使用的就是DBCP。目前 DBCP 有两个版本分别是 1.3 和 1.4。1.3 版本对应的是 JDK 1.4-1.5 和 JDBC 3,而1.4 版本对应 JDK 1.6 和 JDBC 4。因此在选择版本的时候要看看你用的是什么 JDK 版本了,功能上倒是没有什么区别。(主页:http://commons.apache.org/dbcp/

Proxool是一个Java SQL Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中。完全可配置。快速,成熟,健壮。可以透明地为你现存的JDBC驱动程序增加连接池功能。(主页:http://proxool.sourceforge.net/

好烂啊有点差凑合看看还不错很精彩 (9 人打了分,平均分: 3.44 )
Loading...
(麻省理工免费课程)C语言内存管理和C++面向对象编程

(麻省理工免费课程)C语言内存管理和C++面向对象编程

此课程有全部讲义习题

课程描述实在得令人发指。翻译如下:

您是否由于自己的Python程序比同僚们的C程序慢而垂头丧气?你是否想不用JAVA实现面向对象?加入我们,学习C和C++吧!我们带您从简单的C程序入手,深入C语言的内存管理,简介C++里的面向对象,深入C++面向对象的高级功能以及STL。我们还教您一些以后面试用得着的技巧和知识。

原文:

Ever hang your head in shame after your Python program wasn’t as fast as your friend’s C program? Ever wish you could use objects without having to use Java? Join us for this fun introduction to C and C++! We will take you through a tour that will start with writing simple C programs, go deep into the caves of C memory manipulation, resurface with an introduction to using C++ classes, dive deeper into advanced C++ class use and the C++ Standard Template Libraries. We’ll wrap up by teaching you some tricks of the trade that you may need for tech interviews.

麻省理工开放课程里有很多计算机科学的宝贝。不仅有一流的教程,还有习题和答案。适合英语不错的程序员平时充电。

课程地址(英文)

好烂啊有点差凑合看看还不错很精彩 (20 人打了分,平均分: 4.00 )
Loading...