php基础

  1. Session与Cookie的区别

    1、Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端。
    2、Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。
    3、Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击。
    4、Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。

  2. PHP常用数组函数

    array_keys 获取数组所有的键
    array_values 获取数组所有的值
    array_search 在数组中搜索某个值
    array_key_exists 指定键是否存在数组中
    array_count_values 统计数组中所有的值出现的次数
    array_push 将一个或多个单元压入数组的末尾
    array_unshift 将一个或多个单元压入数组的开头
    array_reverse 数组反序
    array_sum 数组求和
    array_product 数组乘积
    array_unique 数组唯一
    array_merge 数组合并
    list 把数组的值赋予变量
    count 统计数组个数
    in_array 数组值是否存在
    array_diff 计算数组的差集
    array_pop 弹出数组的最后一个元素

  3. PHP魔术方法、魔术常量、超级全局变量

    魔术方法:所有的魔术方法必须声明为public

    __construct(),类的构造函数
    __destruct(),类的析构函数
    __call(),在对象中调用一个不可访问方法时调用
    __callStatic(),用静态方式中调用一个不可访问方法时调用
    __get(),获得一个类的成员变量时调用
    __set(),设置一个类的成员变量时调用
    __isset(),当对不可访问属性调用isset()或empty()时调用
    __unset(),当对不可访问属性调用unset()时被调用。
    __sleep(),执行serialize()时,先会调用这个函数
    __wakeup(),执行unserialize()时,先会调用这个函数
    __toString(),类被当成字符串时的回应方法
    __invoke(),调用函数的方式调用一个对象时的回应方法
    __set_state(),调用var_export()导出类时,此静态方法会被调用。
    __clone(),当对象复制完成时调用
    __autoload(),尝试加载未定义的类
    __debugInfo(),打印所需调试信息

    魔术常量:PHP预定义的一些常量,这些常量会随着所在的位置而变化。

    1、LINE 获取文件中的当前行号。
    2、FILE 获取文件的完整路径和文件名。
    3、DIR 获取文件所在目录。
    4、FUNCTION 获取函数名称(PHP 4.3.0 新加)。
    5、CLASS 获取类的名称(PHP 4.3.0 新加)。
    6、METHOD 获取类的方法名(PHP 5.0.0 新加)。
    7、NAMESPACE 当前命名空间的名称(区分大小写)。
    8、TRAIT Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

    超级全局变量

    1、$GLOBALS  :储存全局作用域中的变量
    2、$_SERVER  :获取服务器相关信息
    3、$_REQUEST :获取POST和GET请求的参数
    4、$_POST : 获取表单的POST请求参数
    5、$_GET: 获取表单的GET请求参数
    6、$_FILES :获取上传文件的的变量
    7、$_ENV : 获取服务器端环境变量的数组
    8、$_COOKIE:获取浏览器的cookie
    
  4. PHP常用关键字:final 、static、const

    final

    1.final不能用来修饰成员属性
    2.final只能修饰类和方法
    作用:被修饰的类不能被子类所继承;被修饰的方法不能被子类的方法覆盖。

    static

    1.static用来修饰成员属性和成员方法,但不能用来修饰类
    2.用static修饰的成员属性可以被同一个类的所有对象共享
    3.静态的数据是存在 内存中的 数据段中(初始化静态段)
    4.静态的数据是在类在第一次加载时,分配到内存中的
    5.什么是类被加载?只要在程序中使用到这个类(有这个类名出现)
    6.静态的成员属性都要用类名去访问,不用创建对象,不用对象去访问;在类里边可以用self代表本类($this)
    7.静态方法,不能访问非静态的成员属性(但是,在非静态方法却能访问静态的成员属性),非静态的成员属性,必须用对象访问,在内部访问非静态成员属性,用$this.
    8.如果你确定一个方法中不需使用到非静态的成员属性,则可以将这个方法声明为静态方法,不需实例化对象,就可以访问
    

    const

    1、它只能修饰成员属性
    2、类名中声明常量属性使用const
    3、类名的方式和我们以前学习的define是一样的效果
    4、访问方式个static静态成员属性是一样的(在类外部使用:类名::常量 ,在类内部使用: self::常量)
    5、常量一定要在声明时给初值

  5. 浏览器访问百度的整个过程

    对www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址
    根据这个IP,找到对应的服务器,发起TCP的三次握手
    建立TCP连接后, 发起HTTP请求
    服务器响应HTTP请求,浏览器得到html代码
    浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)(先得到html代码,才能去找这些资源)
    浏览器对页面进行渲染呈现给用户
    服务过程完毕, 关闭TCP连接, 四次挥手

  6. HTTP常用状态码

    200 OK //客户端请求成功
    400 Bad Request //客户端请求有语法错误,不能被服务器所理解
    401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
    403 Forbidden //服务器收到请求,但是拒绝提供服务
    404 Not Found //请求资源不存在,eg:输入了错误的URL
    500 Internal Server Error //服务器发生不可预期的错误
    503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

  7. php常用设计模式

    1.单例模式:确保一个类只有一个实例,并提供一个全局访问点来获取该实例。这种模式在数据库连接、缓存操作或分布式存储等场景中非常有用。
    2.工厂模式:用于创建对象的过程,将对象的实例化过程封装在一个工厂类中。这有助于将对象的创建和使用分离,使得代码更加灵活和可维护。
    3.适配器模式:将一个类的接口转换成另一个类的接口,使得两个类可以相互兼容工作。这种模式在需要使用不同库或框架的程序中特别有用。

  8. oop思想

    1.封装性:隐藏实现细节,调用方法时才能传入参数,不能直接进行对数据的改动
    2.继承性:就是子类自动继承其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。PHP只支持单继承,也就是说一个子类只能有一个父类。
    3.多态性:子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。

  9. 接口和抽象类的区别

    1.接口:
    只能定义公共的方法,这些方法不能包含任何实现。
    一个类可以实现一个或多个接口。
    接口定义了一种contract(契约),实现了接口的类必须实现接口中的所有方法。
    接口不能包含属性,除了const定义的常量。

    概括总结:
    接口定义了一套规则,必须被实现。
    抽象类定义了一套规则,可以部分被实现,还可以包含自己的实现

  10. php安全攻击

    XSS攻击 :跨站点脚本攻击,由用户输入一些数据到你的网站,其中包括客户端脚本(通常JavaScript)。如果你没有过滤就输出数据到另一个web页面,这个脚本将被执行。
    CSRF:跨站点请求伪造,是指一个页面发出的请求,看起来就像是网站的信任用户,但是是伪造的

    概括总结:
    CSRF,跨站请求伪造,攻击方伪装用户身份发送请求从而窃取信息或者破坏系统。讲述基本原理:用户访问A网站登陆并生 成了cookie,再访问B网站,如果A网站存在CSRF漏洞,此时B网站给A网站的请求(此时相当于是用户访问),A网站会认为是用 户发的请求,从而B网站就成功伪装了你的身份,因此叫跨站脚本攻击。

    CSRF防范:A、合理规范api请求方式,GET,POSTB、对POST请求加token令牌验证,生成一个随机码并存入session,表单中带上这个随机码,提交的时候服务端进行验证随机码是否相同。

    XSS,跨站脚本攻击。
    防范:不相信任何输入,过滤输入。
    抽象类定义了一套规则,可以部分被实现,还可以包含自己的实现

  11. php垃圾回收机制

    PHP 可以自动进行内存管理,清除不需要的对象。
    PHP 使用了引用计数 (reference counting) GC 机制。
    每个对象都内含一个引用计数器 refcount,每个 reference 连接到对象,计数器加 1。当 reference 离开生存空间或被设为 NULL,计数器减 1。当某个对象的引用计数器为零时,PHP 知道你将不再需要使用这个对象,释放其所占的内存空间。

    总结:
    在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁;这是PHP 的GC垃圾处理机制,防止内存溢出。
    当一个 PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中所有对象同时被销毁。GC进程一般都跟着每起一个SESSION而开始运行的.gc目的是为了在session文件过期以后自动销毁删除这些文件.

  12. 长连接和短连接

长连接:client 方与 server 方先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。此种方式常用于 P2P 通信。

短连接:Client 方与 server 每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。C/S 通信。

  1. socket 连接步骤

Socket(套接字)概念

套接字(socket)是通信的基石,是支持 TCP/IP 协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的 IP 地址,本地进程的协议端口,远地主机的 IP 地址,远地进程的协议端口。

Socket 连接过程

建立 Socket 连接至少需要一对套接字,其中一个运行于客户端,称为 ClientSocket ,另一个运行于服务器端,称为 ServerSocket

套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端

套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值