进程上下文切换 – 残酷的性能杀手(上)
对于服务器的优化,很多人都有自己的经验和见解,但就我观察,有两点常常会被人忽视 – 上下文切换 和 Cache Line同步 问题,人们往往都会习惯性地把视线集中在尽力减少内存拷贝,减少IO次数这样的问题上,不可否认它们一样重要,但一个高性能服务器需要更细致地去考察这些问题,这个问题我将分成两篇文章... ...
协议森林08 不放弃 (TCP协议与"流"通信)
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。 TCP(Transportation Control Protocol)协议与IP协议是一同产生的。事实上,两者最初是一个协议,后来才被分拆成网络层的IP和传输层的TCP。我们已经在UDP协议中介绍 ...
Socket通信中的多进程编程实例
1 需求描述:(1)Linux下编写。(2)创建一个服务器、若干个客户端。(3)用户可以通过客户端输入文字向服务器发送消息。(4)服务器端接收到客户端发送的数据,将用户输入的内容在服务器上打印出来,并原样返回。2 相关基础2.1 套接字Socket通信编程2.1.1 TCP/IP通信过程:图2.1.... ...
“模态”对话框和“后退”按钮
各位,你们在浏览网站的时候还能看到“模态”对话框吗?(不是那种模拟的,是真实的用showModalDialog这个破玩意儿唤出来的)。你肯定说,现在那个网站还敢这么做呢,不是不相干了就是流氓网站吧,要不就是开发者是一群小白。OK,那么您在浏览网页的时候用“后退”按钮的次数多吗?甚至于依赖后退按钮的功... ...
E-Learning是学习系统而不是教育系统
从我开始开发企业E-Learning系统到现在已经四年了。这四年实在是有很多槽要吐,因此以下是一些胡言乱语。莫怪。 学习所产生的变化来源于两个方面,第一是教授,第二是体验。显然,“教育”仅仅是学习变化来源的一个方面。但是,目前的学习系统的着眼点大部分还是放在“教育”层面。即,在特定的场所(如果我们... ...
协议森林07 傀儡 (UDP协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。 我们已经讲解了物理层、连接层和网络层。最开始的连接层协议种类繁多(Ethernet、Wifi、ARP等等)。到了网络层,我们只剩下一个IP协议(IPv4和IPv6是替代关系)。进入到传输层(tran ...
协议森林06 瑞士军刀 (ICMP协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。 到现在为止,我们讲解了网络层中最重要的IP协议(参考协议森林)。IP协议的一个重要补充是是ICMP协议。 ICMP协议 ICMP(Internet Control Message Protocol) ...
裘千丈还是裘三尺——用挖矿的比喻说平台与门槛
先摆明观点:强烈反对 .NET社区面临的问题及其对策 一文中对“门槛”的定义,照这个观点下去,会害死很多人的。 从一个比喻开始:一个平台就是一个矿区,程序员就是在矿区里挖矿的人。这里就衍生出几个问题: (1)这个矿是贫矿还是富矿; (2)挖矿怎么个挖法; (3)矿好不好挖。 第一个问题是平台的前途问... ...
小喇叭开始广播——以太网与WiFi协议
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。 “小喇叭开始广播啦”,如果你知道这个,你一定是老一辈的人。“小喇叭”是五十年代到八十年代的儿童广播节目。在节目一开始,都会有一段这样的播音:“小朋友,小喇叭开始广播了!” 听到这里,收音机前的小朋友 ...
SQL server 容易让人误解的问题之 聚集表的物理顺序问题
对于MS SQL server 数据库,有几个容易让人产生误解的问题,对于这几个问题,即使很多 SQL server DBA 都有错误认识或者认识不充分,所以我想撰文几篇,把这些容易理解错误的问题前前后后深入阐述一下,也希望纠正一下网上对这几个问题的讹传(我也可能有认识不对的地方,欢迎批评指正)。 ... ...
邮差与邮局——网络协议概观
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。 信号的传输总要符合一定的协议(protocol)。比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了“敌人入侵”这一抽象信号。这样一个“狼烟=敌人入侵”就是一个简单的协议。协议可以更 ...
闭包解析(Fun with closure)
这篇随笔是对“闭包”这个的介绍,从构造到实现机制。为了轻松一些,用了Fun with closure这个标题。 1. 有点儿像闭包的东西 2. 做一个闭包 3. 什么是闭包? 4. Closure的“诡异”现象 5. C++ 的细节 ...
谈谈离职和跳槽
这篇文章是我在部门会议上的一次发言的总结。之所以会有这次会议,是因为我的一名员工向我提出了辞职,在思索了几天后,我整理了一下自己的思路,于是便有了那次的会议和现在的这篇文章。 ...
ASP.NET状态管理的总结
由于HTTP协议的无状态特性,导致在ASP.NET编程中,每个请求都会在服务端从头到执行一次管线过程,对于ASP.NET页面来说,Page对象都会重新创建,所有控件以及内容都会重新生成,因此,如果希望上一次的页面状态能够在后续页面中保留,则必需引入状态管理功能。ASP.NET为了实现状态管理功能,提... ...
jQuery最核心的基础设施之一——数据缓存模块进化史
数据缓存系统最早应该是jQuery1.2引入的,那时它的事件系统完成照搬DE大神的addEvent.js,而addEvent在实现有个缺憾,它把事件的回调都放到EventTarget之上,这会引发循环引用,如果EventTarget是window对象,又会引发全局污染。有了数据缓存系统,除了规避这两... ...
HBase: 看上去很美
hadoop已经得到大规模应用,hbase貌似也有不少大公司在用,如facebook、taobao等。从hbase的设计看,hbase系统堪称“完美”:LSM、HFile、WAL、zookeeper、Replication等,hbase的性能测试也不差。可惜从实测的结果看,0.94版本的hbase还... ...
XML-RPC 实现C++和C#交互
我们通常会面对这样的问题:整合不同平台或不同类库,这些类库可能来自不同的语言,甚至不同的操作系统。 如何解决这类棘手的问题呢?一.方案介绍 解决不同语言交互的方法有不少,对我了解的windows系统和.NET平台,有以下几种做法:P/Invoke: 调用native cpp的方法,处在同一个内存区间... ...