总结

作者: zerokong | 来源:发表于2018-06-11 22:58 被阅读0次

    1.php魔术方法列举及使用

    2.单例模式

    3.二叉树的遍历以及高度的求法

    4.304header 头里面的信息

    5.负载均衡实现的方式

    6.php rpc

    7.mysql通过修改配置文件参数来优化

    8.locate,find

    9.mysql有索引却没有使用的原因

    10.mysql强制使用索引

    11.php深浅拷贝

    浅复制: 使用clone来复制对象,这种复制叫做“浅复制“,被赋值对象的所有变量都还有与原来对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。 

    深复制:被复制的对象的所有的变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。

    12.static:如果在子类中重写了父类中的static方法、属性,父类就会去访问了子类的static方法

    self: 是类内指针,不管子类有没有重写过父类中的方法、属性都指向本类的静态方法、属性

    13.php hashtable的底层数据结构

    HashTable的底层实现代码如下:

    typedef struct _hashtable{

    uint nTableSize; // hash Bucket的大小,最小为8

    uint nTableMask; //nTableSize - 1, 索引取值的优化

    uint nNumofElements // bucket 里面存的总数

    ulong nNextFreeElement //下一个数字索引的位置

    Bucket *pInternalPointer //当前遍历的指针(foreach比较快的原因)

    Bucket *pListHead //整个hashtable的头指针

    Bucket *pListTail //整个hashTable的尾指针

    Bucket **argBuckets // Buceket 数组,用来存储数据

    doctor_func_t pDestructor //删除元素时的回调函数,用于资源的释放

    zend_bool persistent //Bucket的内存分配方式,true使用系统的分配函数,false 使用php的内存分配函数

    unsigned char nApplyCount //标记当前hash bucket 被递归的次数

        zend_bool bApplyProtection

    #if ZEND_DEBUG

    int inconsistent

    #endif

    }HashTable

    再谈一下 bucket的结构

    typedef struct bucket{

    ulong h; //对key索引以后的值,数字key不做kash

    uint nKeyLength; //key的长度

    void *pData;

    void *pDataPtr; //指针数据,指向真实数据

    struct bucket * pListNext; //整个hash表的下个元素

    struct bucket *pListLast; //整个hash表的上个元素

    struct bucket *pNext; //本bucket里面,下一个元素

    struct bucket *pLast; //本bucket里面的上一个元素

    char arKey[1];

    }Bucket

    14.tcp三次握手

    第一次握手:主机A发送位码为syn=1,随机产生seq number=10001的数据包到服务器,主机B由SYN=1知道,A要求建立联机,此时状态为SYN_SENT;

    第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=20001的包,此时状态由LISTEN变为SYN_RECV;

    第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功,双方状态ESTABLISHED。

    15.struct _zval_struct {

    zvalue_value value;    /* value */ 

    zend_uint refcount__gc;  /* variable ref count */ 

    zend_uchar type;          /* active type */   

    zend_uchar is_ref__gc;    /* if it is a ref variable */};

    typedef struct_zval_struct zval;

    16一致性hash

    17nginx,apache区别

    18反射类

    19僵尸进程 孤儿进程

    20redis部署

    21linux日志切割命令

    split

    22.mysql执行顺序

    23 http和https的区别

    相关文章

      网友评论

          本文标题:总结

          本文链接:https://www.haomeiwen.com/subject/tmykeftx.html