网络协议计算机网络五层协议:物理层、数据链路层、网络层、传输层、应用层计算机网络七层协议(OSI):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层TCP/IP(协议族,不是单一协议):网络接口层、IP层、传输层、应用层网线和集线器属于物理层网卡和交换机属于数据链路层路由器属于网络层TCP和UDPtcp的面向连接的字节流服务,需要较多的系统资源和复杂的程序结构来保证数据的正确性和顺序性。UDP是无连接的,面向数据报,占用系统资源要求少,程序结构简单,不能保证数据的正确性和顺序网站安全和防护SQL注入预防方法:使用PDO预处理,使用或编写类似mysqli_real_escape_string的方法来逃逸SQLxss(crosssitescript)跨站脚本攻击的特殊字符:在页面中植入外部脚本预防方法:htmlspecialchars()将特殊字符转义为字符实体,strip_tags()过滤html标签,addslashes(可以转义单双引号backslashNULL)特殊字符前加反斜杠转义csrf(cross-siterequestforgery)跨站请求伪造:伪造可信用户信息请求网站防范方法:请求附加随机token验证,或者基本验证码算法相关基础排序算法:冒泡排序(时间复杂度:o(n平方))for($i=0;$i<计数($arr);$i++)for($j=0;$j$arr[$j])$min=$j;将最小值与当前第i个位置的内容交换,进行快速排序。将序列分为两部分,一部分中的所有数据都小于另一部分中的所有数据,然后在这两个序列内部进行快速排序操作,最终形成有序序列。二分插入排序的思想(前面的序列是有序的):插入第i个元素时,将前面的0~i-1减半,比较当前元素和中间元素。小的话,上半场再减半。如果大,则后半部分减半,直到最后left>right,然后把目标位置到i-1的所有元素整体后移,将当前元素放入其中基本搜索算法:SequentialsearchBinarysearch(对半查找):将序列分成两部分,找到序列的中间值,如果查找值大于中间值,则继续对半查找右半部分,如果查找值小于中间值中间值,左半部分减半,直到找到或前端>端结束,时间复杂度O(log2n)对数设计模式MVCwithbase2n是设计框架,不是设计模式。框架是比模式更高的概念。模型负责数据逻辑。控制器负责用户交互。视图负责数据展示过程:用户向控制器的某个方法发送请求,控制器调用对应的模型返回数据,然后将数据渲染到视图中返回给用户1)单例模式我。私有构造函数和__clone方法ii。提供公共静态方法来返回实例iii。提供私有静态属性保存实例2)简单工厂模式(重点是创建不同的对象,功能是创建对象)——比如计算器的加减乘除取余四舍五入。定义一个抽象基类,供子类继承并实现相应的方法ii.定义一个Factory工厂类提供静态方法根据不同的参数实例化相应的子类对象3)策略模式(重点是实例化不同类型的解决方案有不同的策略,作用是根据不同的情况调用相应的策略或算法)——比如qq普通用户vipsvip购买皮肤的优惠攻略i。为子类定义抽象基类继承并实现相应的方法ii.根据不同的场景实例化相应的类,然后调用方法获取结果4)观察者模式i。需要有一个抽象的主题接口和一个抽象的观察者接口ii.实施一个主题并实施多个观察者iii。实例化主题,然后调用主题的方法并实例化不同的观察者对象传入,在主题的方法中将传入的观察者对象保存到一个属性中,并在主题中定义另一个方法来调用观察者的方法保存观察者对象名词解释ORM模型:将表映射到类,将行记录映射到实例对象,将字段映射到对象的属性OOP:面向对象编程nosql:redis、MongoDB、memcached高流量高并发网站解决思路防盗链(其他网站链接到你服务器上的资源),验证来源:$_SERVER['HTTP_REFERER']apache或nginx相关配置CDN加速减少http请求,添加异步请求Enablebrowsercachecodecompression(removeblanks)pagestatic:静态处理信息变化不频繁的页面,生成html文件数据缓存(数据库缓存redis,文件缓存)使用Nginx,负载均衡mysql数据库,优化字段数据类型优化,索引优化、SQL语句优化、存储引擎优化、表结构设计优化、分表分库分区、主从复制、读写分离COOKIE和SESSIONsession和cookie是session技术,session默认依赖cookie客户端保存字符串,服务端保存session,保存对象cookie,安全性低,可以被拦截或从本地分析中获得。会话安全性高。session是保存在服务器上的,会占用服务器的资源。理论上,大小没有限制,与服务器内存相关的单个cookie保存的数据不能超过4K。许多浏览器将一个站点限制为最多20个cookie,例如登录信息,并将重要信息存储为会话。如果需要保留其他信息,可以在cookie中包含和要求。文件,include在使用的时候加载,require在开头加载include并导入错误,会给出警告,并继续执行后面的代码,require引入错误,报致命错误并终止当前程序运行不支持MyISAM和InnoDBMyISAM事务和外键操作。InnoDB支持事务处理和外键。MyISAM是表级锁,InnoDB是行级锁。大量的selectMyISAM比较好,InnoDB大量的insertupdate比较好。global和$GLOBALS$GLOBALS['var']是外部全局变量$var本身global$var是一个与外部$var同名的引用或者一个指针emptyandissetempty以下条件将被认为是空的""(空字符串)0(0asaninteger)0.0(0asafloat)"0"(作为字符串0)NULLFALSEarray()(空数组)$var;(声明但没有值的变量)isset下面的条件如果变量存在且值不为NULL,则认为存在,则返回TRUEget和postget主要用于获取数据,post主要用于提交dataget提交参数附加在url上,post通过httpbody提交的url会有长度限制,post传输数据理论上是无限的get提交信息以明文形式显示在url上,不够安全,post是相对安全性来说,get提交可以被浏览器缓存,post不会被浏览器缓存。static和selfself可以用来访问类的静态属性、静态方法和常量,但是self指向的是当前定义所在的类,这是self限制。static也可以用来访问类的静态属性、静态方法和常量,static在真正被调用的时候指向类。调用非静态方法时,类名(static指向的类名)为对象所属的类,即实际调用时对象所属的类。一个完整的HTTP请求流程1.首先域名解析(DNS解析):浏览器将域名(主机名)解析为对应的IP地址2.建立TCP连接:三次握手Client:Canyouhearme?服务器:我能听到你,你能听到我吗?客户:我也可以,那我就开始发数据了。.3、浏览器向服务器发起http请求4、服务器响应http请求,返回html代码5、浏览器解析html代码,请求html中的资源6、浏览器渲染页面并显示给用户7.关闭TCP连接:挥手四次-客户端:“兄弟,我没有数据要传输,我们关闭连接吧。”-服务器:“知道了,我看看我这边有没有数据。”-服务器:“兄弟,我没有任何数据要发送给你,我们可以关闭连接。”-客户:“好的。”