所有文章: 2016/5


  1. Python GIL那些事

    GIL是什么?

    GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码。

    • CPython实现中的GIL?

      Global Interpreter Lock

      In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (However, since the GIL exists, other features have grown to depend on the guarantees that it enforces.)

      一个防止多线程并发执行机器码的一个Mutex


  2. Python的内存管理机制

    python的内存管理分为三个方面:

    • 引用计数
    • 垃圾回收
    • 内存池机制

  3. Redis基础篇

    Redis

    Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。


  4. 初探node.js

    什么是node.js

    1. node.js != Javascript
      事实上,Node.js采用C++语言编写而成,是一个Javascript的运行环境。

      • Node.js 是构建于Chrome的JavaScript引擎的
        Google的浏览器Chrome,有一个非常快速的JavaScript引擎,叫做V8。这个JS引擎可以被独立出来,该解释器拥有另一个独特特征;可以下载该引擎并将其嵌入任何 应用程序。Node.js就是建立在V8之上的。这也是为什么Node.js会运行的如此之快。对于开发者来说,有几个好处:
        • js完全通用
        • v8的发展影响着node.js

  5. python编写一个端口扫描器

    编写一个端口扫描器

    • 任何一个靠谱的网络攻击,都是起步于侦察。所以攻击服务器,也就是检查服务的漏洞。我使用的两种方式无非是web注入和端口扫描。所以先编写一个端口扫描器
    • 端口扫描是基于TCP的,一共分为三个步骤,分别编写三个方法:
      • 处理数据,也就是处理用户输入数据的,此处我们定义为main函数,用来获取主机名和端口
      • 将主机名转换为对应的IPv4互联网地址,采socket.gethostbyname(hostname),获取到IP,然后调用处理端口扫描的函数.定义为portScan(tgtHost,tgtPorts)
      • 端口扫描,也是就TCP的全连接,对目标地址和端口进行连接。最后为了确定该端口上运行的什么服务,我们还会发送垃圾信息,并读取返回的Banner.函数定义为connScan(tgtHost,tgtPort)