零碎知识整理

2017年01月04日00:20:21


  • 1Byte = 8 Bit(s) ;1Bit是一位 0 / 1 sizeof(int) = 4 * 8 Bit = 2^32 长度

HTTP协议 TCPIP协议

  • HTTP: 四个步骤: 客户端服务器建立连接; 发出请求(传输数据URL、协议版本号);服务器响应信息;断开连接;

  • TCP/IP: 三次握手:建立连接时客户端向服务器发送同步序列编号,进入请求状态;服务器收到同步序列编号包,确认,向客户端发送ACK和SYN包,进入接收状态;客户端收到ACK包,想服务器发送ACK,连接成功。

  • mysql优化,并发

  • ajax原理

    • JavaScript利用XMLHttpRequest 在不阻塞用户操作的前提下向服务器发送异步请求。

empty 、 isset

empty : NULL ,false, '', "", 0, 0.00 , '0', [] ,$var

isset : 检查变量是否已经设置值并且值不是NULL

进程与线程区别

  • 进程:执行的程序,一个可以调度操作系统资源的程序,进程可以调度线程。
  • 进程相互独立,同一个进程内的线程资源共享。不同进程相互独立。
  • 线程死锁:同步导致,
  • 线程同步:
    • Muetex 互斥对象: 同时只能被一个线程占用,其他线程等待Muetex释放才可执行。
    • 事件 Event :通过设置不同的状态调度线程。
    • 临界区

CGI 、FASTCGI 、php-cgi、php-fpm

  • CGI : Common Gateway Interface, 是HTTP与服务器程序交互的接口,CGI程序运行在HTTP服务器上,将收到的请求数据处理,有HTTP服务器收集输出,返回给客户端。
  • FASTCGI: Fast Common Gateway Inferface 是CGI的增强版本。为了减少CGI程序与Web服务器的互动开销,提高并发处理;不用每次都forkCGI进程。
  • php-fpm: php5.3.3版本之后加入到php里的FastCGI管理器。
  • php-cgi: php 自带的CGI管理器。

require 、 require_once 、 include:

  • require 和 include 的功能几乎一样:除了失败时候的表现: require会报错程序终止: E_COMPLIER_ERROR; 但include 只发出警告:E_WARNING.
  • require_once: 如果文件已被包含的时候就不在包含了,此时include 和 require会导致重定义。

SESSION与 COOKIE

  • Cookie:存在于客户端里的由服务器响应来的。请求服务器的时候会带上Cookie。不可跨域;
  • Session:存在于服务器中的,与客户端对应的。为了提高响应速度,web服务器会把Session存在内存里,超时时间。

各种常见排序算法

  • 冒泡:相邻元素比较,将大元素往后扔,每每一次排序选出一个最大的待排元素
  • 选择:每次选择一个最小或最大的元素,跟现有比较元素交换位置。
  • 快排:选参考元素将待排元素分两组,递归,直至分完。
  • 归并:拆分,合并,合并的时候排序。
  • 插入:在已排好序的元素中选择合适的位置放置新元素。

PHP编码转换

PHP可以从代码里修改php.ini的函数:

default_time_zone_set()
ini_restore() //恢复ini配置
ini_set    // 为某些配置项设置动态值
set_time_limit //设置脚本最长执行时间

# ini_set 常见配置
ini_set(’memory_limit’, ‘16M‘);    // 指定脚本运行的时候所允许分配的最大内存
ini_set('error_reporting' , E_ALL & ~E_NOTICE); //显示执行错误的级别
ini_set('display_errors', ‘1’)  //是否打印错误到屏幕
ini_set('error_log' , '/var/log/xx.log') //记录脚本执行错误的日志存储
  • PHP什么时候区分大小写

  • 常用设计模式的PHP实现

    • 单例
    • 工厂
    • 命令
  • mysql数据库有哪些引擎,为什么你的产品选用这个引擎?

    • INNODB
    • ISAM
    • MYSQL ISAM
  • c语言中 int number=1;和PHP中$number=1;在各个方面有什么区别

    • c: 分配4字节给number在内存中的存储位置,这块内存地址指向的值为1.
    • 由PHP解释器分配内存空间,实例化一个zval结构体,1存储在zval结构体中的zvalue联合体成员中。

Zend虚拟机执行PHP代码的过程:

描述1:

  1. Scanning (Lexing):将PHP代码转换为语言片段(Tokens)
  2. Parsing:将Tokens转换成简单而有意义的表达式
  3. Compilation:将表达式编译成Opocdes
  4. Execution:顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。

描述2:

  • 首先,Zend Engine(Zend引擎),调用词法分析器(Lex生成的,源文件在 Zend/zend_language_sanner.l), 将我们要执行的PHP源文件,去掉空格 ,注释,分割成一个一个的token。
  • 然后,Zend引擎会将得到的token forward给语法分析器(yacc生成, 源文件在 Zend/zend_language_parser.y),生成一个一个的op code,opcode一般会以op array的形式存在,它是PHP执行的中间语言。
  • 最后,Zend引擎调用zend_executor来执行op array,输出结果。

post和get

索引是不是越多越好

  • insert、update、delete的时候就要维护索引。
  • 存储空间

你可能感兴趣的:(零碎知识整理)