总结

2018-06-11  本文已影响0人  zerokong

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的区别

上一篇下一篇

猜你喜欢

热点阅读