• 面试知识记录


    php7新特性的理解和比较
    1. null合并运算符(??)
    2.define() 定义常量数组

    3. 组合比较符(<=>)

    4. 变量类型声明,返回值类型声明

    5.允许new class {} 创建一个匿名的对象.

    6.unserialize()函数:过滤的特性,可以防止非法数据进行代码注入,提供了更安全的反序列化数据,

    7.CSPRNG 函数提供一种简单的机制来生成密码的随机数.use 语句,

    8.新增加intdiv()函数,接收两个参数,返回值为第一个参数除于第二个参数的值并取整,

    9.PHP7 错误处理大多数错误被作为Error异常抛出

    10.函数语法修改 例如grep_replace 修饰符e 被删去。

    单例模式

    class Singleton
    {
    private static $instance = null;
    private function __construct()
    {}
    //对外提供一个静态方法
    public static function getInstance(): Singleton
    {
    if (self::$instance === null) {
    //如果没有,则创建当前类的实例
    self::$instance = new self();
    }
    return self::$instance;
    }

    1、构造函数需要标记为private(访问控制:防止外部代码使用new操作符创建对象),单例类不能在其他类中实例化,只能被其自身实例化;
    2、拥有一个保存类的实例的静态成员变量
    3、拥有一个访问这个实例的公共的静态方法(常用getInstance()方法进行实例化单例类,通过instanceof操作符可以检测到类是否已经被实例化

    主键索引和非主键索引的区别

    非主键索引的叶子节点存放的是主键的值,而主键索引的叶子节点存放的是整行数据,其中非主键索引也被称为二级索引,而主键索引也被称为聚簇索引。根据这两种结构我们来进行下查询,看看他们在查询上有什么区别。
    1、如果查询语句是 select * from table where ID = 100,即主键查询的方式,则只需要搜索 ID 这棵 B+树。
    2、如果查询语句是 select * from table where k = 1,即非主键的查询方式,则先搜索k索引树,得到ID=100,再到ID索引树搜索一次,这个过程也被称为回表。

    视频流处理

    <?php 
    function GetMp4File($file) { 
        $size = filesize($file); 
        header("Content-type: video/mp4"); 
        header("Accept-Ranges: bytes"); 
        if(isset($_SERVER['HTTP_RANGE'])){ 
            header("HTTP/1.1 206 Partial Content"); 
            list($name, $range) = explode("=", $_SERVER['HTTP_RANGE']); 
            list($begin, $end) =explode("-", $range); 
            if($end == 0){ 
                $end = $size - 1; 
            } 
        }else { 
            $begin = 0; $end = $size - 1; 
        } 
        header("Content-Length: " . ($end - $begin + 1)); 
        header("Content-Disposition: filename=".basename($file)); 
        header("Content-Range: bytes ".$begin."-".$end."/".$size); 
        $fp = fopen($file, 'rb'); 
        fseek($fp, $begin); 
        while(!feof($fp)) { 
            $p = min(1024, $end - $begin + 1); 
            $begin += $p; 
            echo fread($fp, $p); 
        } 
        fclose($fp); 
    } 
    GetMp4File("demo.mp4"); 

    方法主要是将视频拆分成N个碎片,每份1KB,此方法缺陷是用户在观看视频是会不断向服务器读取视频

    大文件上传,文件上传验证损坏,大小,格式

    1,修改服务端上传的限制配置;Nginx 以及 PHP 的上传文件限制 不宜过大,一般5M 左右为好;

    2,大文件分片,一片一片的传到服务端,再由服务端合并。这么做的好处在于一旦上传失败只是损失一个分片而已,不用整个文件重传,而且每个分片的大小可以控制在4MB以内,服务端限制在4M即可。

    https://www.cnblogs.com/songsu/p/11504547.html

    ajax的实现原理

    1.使用CSS和XHTML来表示。

    2. 使用DOM模型来交互和动态显示。

    3.使用XMLHttpRequest来和服务器进行异步通信。

    4.使用javascript来绑定和调用。

    AJAX 的核心是 XMLHttpRequest 对象。Ajax的工作原理相当于在用户和服务器之间加了—个中间层(AJAX引擎),使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器。像—些数据验证和数据处理等都交给Ajax引擎自己来做,,只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。

    大并发下优化页面内存数据

    图片处理,裁切

    $image = "jiequ.jpg"; // 原图
    $imgstream = file_get_contents($image);
    $im = imagecreatefromstring($imgstream);
    $x = imagesx($im);//获取图片的宽
    $y = imagesy($im);//获取图片的高
     
    // 缩略后的大小
    $xx = 140;
    $yy = 200;
     
    if($x>$y){
    //图片宽大于高
        $sx = abs(($y-$x)/2);
        $sy = 0;
        $thumbw = $y;
        $thumbh = $y;
    } else {
    //图片高大于等于宽
        $sy = abs(($x-$y)/2.5);
        $sx = 0;
        $thumbw = $x;
        $thumbh = $x;
      }
    if(function_exists("imagecreatetruecolor")) {
      $dim = imagecreatetruecolor($yy, $xx); // 创建目标图gd2
    } else {
      $dim = imagecreate($yy, $xx); // 创建目标图gd1
    }
    imageCopyreSampled ($dim,$im,0,0,$sx,$sy,$yy,$xx,$thumbw,$thumbh);
    header ("Content-type: image/jpeg");
    imagejpeg ($dim, false, 100);

    imageCopyreSampled函数

    jQ$,符号,

    $代表的就是jQuery,$ 实际上表示的是一个函数名.

    三种以上居中布局

    1、设置position:absolute;和transform:traslate(x,y)实现水平垂直居中

    2、绝对定位,配合top:0;bottom:0;和margin:auto进行垂直居中

    3、针对文本,通过display:flex;配合align-items和justify-content实现文本居中

    position五种

    https://www.jianshu.com/p/88771619077e

    js的原型链

            1、__proto__ 是原型链查询中实际用到的,它总是指向 prototype;

            2、prototype 是函数所独有的在定义构造函数时自动创建,它总是被 __proto__ 所指。

    所有对象都有__proto__属性,函数这个特殊对象除了具有__proto__属性,还有特有的原型属性prototype。prototype对象默认有两个属性,constructor属性和__proto__属性。prototype属性可以给函数和对象添加可共享(继承)的方法、属性,而__proto__是查找某函数或对象的原型链方式。constructor,这个属性包含了一个指针,指回原构造函数。

    闭包

    「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。闭包常常用来「间接访问一个变量」。换句话说,「隐藏一个变量」。

    !function(){
    
      var lives = 50
    
      window.奖励一条命 = function(){
        lives += 1
      }
    
      window.死一条命 = function(){
        lives -= 1
      }
    
    }()

    那么在其他的 JS 文件,就可以使用 window.奖励一条命() 来涨命,使用 window.死一条命() 来让角色掉一条命。

    清除浮动问题,

    父级div定义 伪类:after 和 zoom

    .clearfloat:after{display:block;clear:both;content:"";visibility:hidden;height:0}
    .clearfloat{zoom:1}

    js this箭头函数的指向问题

            var x = 11;
            var obb = {
                x: 222,
                y: {
                    x:333,
                    obc: function f() {
                        console.log(this)
                        var x = 111;
                        var obj = {
                            x: 22,
                            say: () => {
                                console.log(this.x);
                            }
                        }
                        obj.say()
                    }
                }
            }
            obb.y.obc()

    输出结果是333

    箭头函数没有this,剪头函数的this是继承父执行上下文里面的this ,这里箭头函数的执行上下文是函数f(),所以它就继承了f()的this,

    高山仰止,景行行止,虽不能至,心向往之。
  • 相关阅读:
    centos 7 -- Disk Requirements: At least 134MB more space needed on the / filesystem.
    DNS Server Centos 7
    生成report由Eamil定時寄出
    WRT 版本说明
    cisco linksys ea3500 刷机 openwrt
    [QNAP crontab 定時執行程式
    实例 编辑 .bashrc(不断更新)
    tar命令
    ls -l 显示年份
    git 丢弃本地代码时遇到的问题
  • 原文地址:https://www.cnblogs.com/yudubujue/p/11819362.html
Copyright © 2020-2023  润新知