Browsed by
标签: Windows

性能调优攻略

性能调优攻略

关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充

在开始这篇文章之前,大家可以移步去看一下酷壳以前发表的《代码优化概要》,这篇文章基本上告诉你——要进行优化,先得找到性能瓶颈! 但是在讲如何定位系统性能瓶劲之前,请让我讲一下系统性能的定义和测试,因为没有这两件事,后面的定位和优化无从谈起。

一、系统性能定义

让我们先来说说如何什么是系统性能。这个定义非常关键,如果我们不清楚什么是系统性能,那么我们将无法定位之。我见过很多朋友会觉得这很容易,但是仔细一问,其实他们并没有一个比较系统的方法,所以,在这里我想告诉大家如何系统地来定位性能。 总体来说,系统性能就是两个事:

  1. Throughput ,吞吐量。也就是每秒钟可以处理的请求数,任务数。
  2. Latency, 系统延迟。也就是系统在处理一个请求或一个任务时的延迟。

一般来说,一个系统的性能受到这两个条件的约束,缺一不可。比如,我的系统可以顶得住一百万的并发,但是系统的延迟是2分钟以上,那么,这个一百万的负载毫无意义。系统延迟很短,但是吞吐量很低,同样没有意义。所以,一个好的系统的性能测试必然受到这两个条件的同时作用。 有经验的朋友一定知道,这两个东西的一些关系:

  • Throughput越大,Latency会越差。因为请求量过大,系统太繁忙,所以响应速度自然会低。
  • Latency越好,能支持的Throughput就会越高。因为Latency短说明处理速度快,于是就可以处理更多的请求。

二、系统性能测试

经过上述的说明,我们知道要测试系统的性能,需要我们收集系统的Throughput和Latency这两个值。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (52 人打了分,平均分: 4.27 )
Loading...
10大经典错误

10大经典错误

下面是10、11个经典的错误,升序排名。希望大家补充!

10、DOS的Abort,Retry, Fail?错误

85年以后出生的人可能不知道DOS是什么了,只有那老家伙还知道这是什么。我还记得当时的我对于Abort和Fail这两个选择还是比较清楚的,不过,今天完全忘记了Abort和Fail的差别是什么?这个出是DOS下的经常出现,也相当的经典,以至于在Wikepedia上都有专门的业面 Abort, Retry, Fail?。简称为ARF。当然,ARI – Abort, Retry, Ignore?

9、Windows Vista 的红屏错误

红屏错误(RSoD – Red Screen of Death)不单单只是Windows Vista引入的(也许是蓝屏太有名了,突然变成红屏,大家觉得这个是比蓝屏更NB的错,所以也就引人关注了),PlayStation的也喜欢使用红屏。

Windows Vista 的 RSoD

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (27 人打了分,平均分: 4.41 )
Loading...
如何学好C语言

如何学好C语言

有人在酷壳的留言版上询问下面的问题

keep_walker :
今天晚上我看到这篇文章。
http://programmers.stackexchange.com/questions/62502/small-c-projects

我也遇到了和提问的老外一样的问题。。能给像遇到这样烦恼的程序员一点建议嘛?谢谢!

我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程编到一定的时候,发现能力到了瓶颈,既不深,也不扎实,半吊子。比如:你长期地使用Java和.NET ,这些有虚拟机的语言对于开发便利是便利,但是对于程序员来说可能并不太好,原因有两个:

  1. 虚拟机屏蔽了操作系统的系统调用,以及很多底层机制。
  2. 大量的封装好的类库也屏蔽了很多实现细节。

一段时间后,你会发现你知其然,不知所以然。。我以前在CSDN上写过一篇《Java NIO类库Selector机制解析(》,在那篇文章中我说提到过(有讥讽的语气)Java的程序员不懂底层实现,所以很难把技术学得更扎实。此时,一部分程序员会不自然地想学学底层的技术,很自然的,C语言就被提了上来。

下面是我给这位朋友的一些建议:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (160 人打了分,平均分: 4.68 )
Loading...
纯文本配置还是注册表

纯文本配置还是注册表

我们知道Unix/Linux下的程序配置文件从来都是纯文本的,你可以自由地修改和查看,他们也没有什么什么XML之类的玩意(参看XML的这两篇文章:),这个最重要的Unix文化(参看Unix传奇下篇)40多年来就这么沿续下来了。我很佩服Microsoft的创新能力,一会儿用INI,一会儿用注册表,一会又是用XML,这就是Windows的编程中那“强大”的创新。在网上又看到有人在争论为什么用注册表而不是纯文本,所以,写下这篇文章。

引入注册表所谓的原因

首先,让我们来看一下为什么微软觉得要使用注册表而不是ini文件,下面是一些其列出来的ini方面的毛病:

  • ini文件不支持Unicode
  • ini文件的安全权限不够
  • ini文件在多进程下存取会有问题
  • 如果一个进程锁上了这个文件,另一个进程就无法获得,只能出错。
  • ini文件只能包含字符串,无法使用二进制
  • 解析ini文件相对来说性能比较慢,第一次读写都需要把整个文件读入内存,然后再写回去。
  • ini文件最大只有32K
  • ini文件的默认目录在Windows系统目录下,只能这个目录只能Windows管理员才能访问
  • ini只能包含了两层,对于多层不支持。
  • 把ini文件放在中央服务器上管理很困难。

而微软说,注册表可以完美地解决这些问题。居然微软只说到了ini文件,但我觉得不单单是ini,所有的以纯文本方式保存配置文件的方法都会出现上述这样的问题。

我的观点

那么,当你在看到这些言论时,你是怎么想的?你有没有经过自己的独立思考?还是你觉得注册表完美地解决了所有的一切?下面是我的一些观点:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (26 人打了分,平均分: 3.58 )
Loading...
Windows编程革命简史

Windows编程革命简史

源文:A Brief History of Windows Programming Revolutions (Ron Burk)

首先,是 Windows API 和 DLL Hell。(译注:DLL Hell——DLL灾难,就是微软的DLL升级时因为不同版本可能造成应用程序无法运行的灾难,首当其冲的是COM编程,相信大家都知道某些木马或是病毒更改了一些系统的DLL可以导致整个Windows不举,这就是DLL Hell) 于是,第一次革命是DDE——我们可以创建一个状态条在上面显示Microsoft的股票价格(译注:Dynamic Data Exchange,工作原理是: 甲方申请一块全局内存,然后把内存指针postmessage到乙方,乙方根据收到的指针访问那块全局内存)。

在那个时候,Microsoft 创建了 VERSIONINFO 资源来管理版本信息,当然,是用来消除DLL Hell。但是,另一个微软内部的小组发现了DDE的致命缺陷:这不是他们做的!

为了解决这个问题,他们创造了OLE(很像DDE,只是名字不一样),而且,我还记得在一次 Microsoft 大会上,某个微软的演讲者正式宣布—— Windows API 马上就会被 OLE API 所重写并取代,我还盲目地相信了这一说法。而且,所有的在图形界面的控件都会是OCX,那是OLE引入的接口,同样,其目的是为了消除DLL Hell。相信大家都记得,那个时候,我们是怎么地梦想着有一天,我们的应用程序(当然是非常大的程序)可以完全地被嵌入到Word文档中。

然而,在Microsoft的某处,Microsoft有些人开始信仰 C++,其确信MFC的出现并可以解决所有的一切问题,但是,因为历史原因,OLE并没有出局,其改了一个名字,叫COM,此时,我们立马意识到OLE(以前的DDE?)真正意味着什么——其用精心的版本管理系统来消除DLL Hell。与此同时,Microsoft的一个变节小组发现了一个MFC的致命缺陷:这不是他们做的!

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (55 人打了分,平均分: 4.13 )
Loading...
微软的安全补丁分析

微软的安全补丁分析

截止至2009年底,大约有90%的微软安全补丁是把管理员权限给disable了。根据 BeyondTrust的报告,到今年3月分,Windows 7 有57%的安全补丁是以移除管理员权限作为解决方法的,相比较而言,Windows 2000 是 53%,Windows XP 是 62%,Windows Server 2003 是 55%,Windows Vista 是 54% 以及 Windows Server 2008 是 53%,而最牛的要算是 —— 100% 的 Microsoft Office 和 94%  Internet Explorer (其中100% 的 IE8 )的安全补丁是移除管理员权限。

这对于某些公司的IT部门来说是个好消息,因为这些公司的IT部门通常是不会让公司的员工有本机的管理员权限的,根据微软大量的安全补丁是移除某些管理员权限的这一特性,这意味着对于本机只有一般用户权限IT管理,将会防住很大一部份的恶意攻击。

Paul Cooke, Windows Client Enterprise Security主管说:“我们相信,如果你只是用一般用户来操作Windows的话,这会是一种很好的方式”。而这一提法,相对于Unix的尽可能的不用root用户操作系统这一观点,整整落后了几十年,Windows的用户很习惯于在Administrator下操作系统,这样,一旦中招,任何程序都以系统管理员的权限运行,所以结果也是毁灭性的。这样操作电脑的方式对于Unix的用户来说简直是不可想像的,因为在Unix下,99%的情况下,操作者都不会使用管理员的账号。

还记得以前和朋友的一段对话:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (15 人打了分,平均分: 3.47 )
Loading...
一个Windows 3.1的Web网站

一个Windows 3.1的Web网站

啥也不说了,请大家围观下面这个网站吧。

http://www.michaelv.org/

打开这个网站,你会看到N年前DOS时代的Windows 3.1的界面,居然还可以扫雷,呵呵。真应了那句话——“只要是可以被Javascript实现的应用或程序,最终都会被Javascript所实现”。另,关于其它Web上更为疯狂的程序,可以查看本站的这篇文章。还有这个在线的IDE。下面是win3.1的截图:

 

好烂啊有点差凑合看看还不错很精彩 (11 人打了分,平均分: 3.36 )
Loading...
粉丝眼中的操作系统

粉丝眼中的操作系统

在发布完《程序员眼中的编程语言》一文后,发现网上还有一个关于操作系统的。如下所示。

  • 图片的横轴是三大操作系统。
  • 纵轴是各操作系统的粉丝和信徒。
  • 中间的各个小图片则是,粉丝眼中的操作系统的形象。

关于操作系统,还有这一张图也很有意思。

粉丝眼中的操作系统

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