一、定义接口:
接口分为两种:一种是数据型接口,一种是应用型接口。
数据型接口:是比抽象类更抽象的某种“结构”,它不是类,但是跟类有一样的结构规范,规范我们接口要以什么格式进行定义,一般用于团队比较大,分支比较多的情况下才使用。
应用型接口:就是API数据对外访问的一个入口。
客户端需要什么样的数据,我们就提供相应的数据,并且配以相应的接口文档。
二、特点:
1、接口的方法必须是公开的。
2、接口的方法默认是抽象的,所以不在方法名前面加abstract。
3、接口可以定义常量,但不能定义成员属性,常量的定义和用法和类中常量一样。
4、类可以实现多个接口(相当于把多个功能集于一身,如手机实现了小灵通、MP3、MP4的功能)
5、接口也可以继承接口。
三、概念:
接口是方法的抽象,如果不同的类有同样的方法,那么就应该考虑使用接口。
(1)接口是一个行为的规范、协议。其实就是类和类之间的一种协定,一种约束
(2)C#不支持多继承,但是他把这个功能交给接口来实现。
(3)类与类之间的系统资源调用方式不一样,导致他们之间的通信很困难,而接口可以屏蔽掉它们之间的差异,能使他们顺利通信。
(4)可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
四、接口安全方面处理:
我们当时是这么做的,使用HTTP的POST方式,对固定参数+附加参数进行数字签名,使用的是md5加密,比如:我想通过标题获取一个信息,在客户端使用 信息标题+日期+双方约定好的一个key通过md5加密生成一个签名(sign),然后作为参数传递到服务器端,服务器端使用同样的方法进行校验,如果接受过来的sign和我们通过算法算的值相同,证明是一个正常的接口请求,我们才会返回相应的接口数据。
五、接口登陆注册使用对称加密:
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密在PHP加密算法中有很多种算法,你使用哪种加密的方式,你就用哪种解密方式。但是我感觉使用非对称加密更安全。
非对称加密:
非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一 个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。
虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
(1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。
(2) Alice的浏览器向银行的网站请求公钥。
(3) 银行将公钥发送给Alice。
(4) Alice的浏览器使用银行的公钥将自己的对称密钥加密。
(5) Alice的浏览器将加密后的对称密钥发送给银行。
(6) 银行使用私钥解密得到Alice浏览器的对称密钥。
(7) Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了。
六、优化方向:
1.少写代码,多用php自身能力
2.php内置函数的性能优劣
3.尽可能少用魔法函数
4.合理使用内存
5.尽量少的使用正则表达式
6.避免在循环内做运算
7.减少计算密集型业务
8.运行环境,文件储存,数据库,缓存,
网络:设置超时时间、将串行请求并行化(使用curl_multi_*(),使用swoole扩展)