Articles

  • nginx

    英文作者: Andrew Alexeev

    英文链接:nginx

    nginx(发音"engine x")是俄罗斯软件工程师Igor Sysoev开发的免费开源web服务器软件。nginx于2004年发布,专注于高性能,高并发和低内存消耗问题。并且具有多种web服务器功能特性:负载均衡,缓存,访问控制,带宽控制,以及高效整合各种应用的能力,这些特性使nginx很适合于现代网站架构。目前,nginx已经是互联网上第二流行的开源web服务器软件。

  • Linux poll

    介绍

    本篇为 Linux I/O 事件通知机制系列第二篇,介绍 poll。 其他两篇为:

  • Effective C++

    介绍

    从网络上整理的Effective C++ 读书笔记,鉴于其中有些部分内容太老,因为参考1的文章成语2006年,而最近有新出 C++11,其中有些内容需要更新,以反映语言的新变化。另外其中有些内容基于我自己的理解做了适当的更改,包括但不限于删除,添加和修改。

  • Linux select

    Introduction

    本篇为 Linux I/O 事件通知机制系列第一篇,介绍 select。 其他两篇为:

  • 函数式编程

    转自 coolshell,原文链接

    当我们说起函数式编程来说,我们会看到如下函数式编程的长相:

    • 函数式编程的三大特性:
      • immutable data 不可变数据:像Clojure一样,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改。这样一来,可以让你的程序少很多Bug。因为,程序中的状态不好维护,在并发的时候更不好维护。(你可以试想一下如果你的程序有个复杂的状态,当以后别人改你代码的时候,是很容易出bug的,在并行中这样的问题就更多了)
      • first class functions:这个技术可以让你的函数就像变量一样来使用。也就是说,你的函数可以像变量一样被创建,修改,并当成变量一样传递,返回或是在函数中嵌套函数。这个有点像Javascript的Prototype(参看Javascript的面向对象编程
      • 尾递归优化:我们知道递归的害处,那就是如果递归很深的话,stack受不了,并会导致性能大幅度下降。所以,我们使用尾递归优化技术——每次递归时都会重用stack,这样一来能够提升性能,当然,这需要语言或编译器的支持。Python就不支持。

     

  • Standard Template Library: Algorithms

    The header defines a collection of functions especially designed to be used on ranges of elements.

    A range is any sequence of objects that can be accessed through iterators or pointers, such as an array or an instance of some of the STL containers. Notice though, that algorithms operate through iterators directly on the values, not affecting in any way the structure of any possible container (it never affects the size or storage allocation of the container).

  • Class Member Function - move

    move member function

  • Linux epoll

    Introduction

    本篇为 Linux I/O 事件通知机制系列第三篇,介绍 epool。 其他两篇为:

  • public、protected和private继承

    Introduction

    Differences among public, protected and private.

  • C++ 对象的自杀

    前两天看到一个问题,一个类的成员函数是否可以delete this 
    据出题者的意思来看,是认为这样的问题一般比较少人会遇到,而这样就可以了解一下对方对未知问题的分析和解决思路。

    出于这点,我也想看看自己的思路,所以就先自己思考了一下。
    1. 要使用delete,那么对象需要使用new来实例化(处于堆中),而不能使用类似DemoCls d;这样的语句将对象放在栈中;
    2. 成员函数delete this,这样给了我一种感觉:这个成员函数是不是超出了自己的权限呢?然而进一步想,我认为delete this纯粹代表释放this指针指向的特定大小的内存空间,告诉内存管理单元这块内存区域又“自由”了;
    基于以上两点,我认为由new运算符分配空间得到的对象的成员函数可以调用delete this;语句。