摘要:
转自:https://github.com/domnikl/DesignPatternsPHP 1 interface Logger 2 { 3 public function log(string $message); 4 } 5 6 class FileLogger implements Log 阅读全文
摘要:
转自:https://github.com/domnikl/DesignPatternsPHP 1 class Context 2 { 3 private Comparator $comparator; 4 5 public function __construct(Comparator $comp 阅读全文
摘要:
转自:https://github.com/domnikl/DesignPatternsPHP 1 final class Singleton 2 { 3 private static ?Singleton $instance = null; 4 5 public static function g 阅读全文
摘要:
转自:https://github.com/domnikl/DesignPatternsPHP 1 abstract class Journey 2 { 3 private array $thingsToDo = []; 4 5 final public function takeATrip() 6 阅读全文
摘要:
PHP 设计模式 B站视频 单一职责、开闭、里氏替换、依赖倒置、接口隔离、迪米特 阅读全文
摘要:
1、对现有业务造成冲击,可能导致整个网站瘫痪 秒杀系统独立部署,甚至使用独立的域名,和其他业务完全隔离。 2、用户会不停的刷新页面,对应用服务器和数据库服务器造成极大的压力 秒杀页面静态化 3、突然增加的带宽 租借服务器带宽,CDN也需要租借带宽 4、直接访问下单页面,提前下单 动态生成随机下单页面 阅读全文
摘要:
扩展性指的是各个模块高内聚低耦合,可以很容易地扩展新功能。 消息队列:各个模块不直接调用 纵向拆分业务:将大应用拆分成业务独立的小应用 横向拆分业务:将复用的业务拆分出来。 较复杂,涉及到:识别可复用的业务、设计服务接口、服务依赖关系、 分布式服务管理框架 阅读全文
摘要:
伸缩性指的是通过增加或减少机器的数量,来改变网站的处理能力。 负载均衡可以及时发现新上线或新下线的服务器,并向新上线的服务器分发请求,停止向已下线的服务器分发请求,那么就实现了应用服务器集群的伸缩性。 应用服务器负载均衡 特点:应用服务器没有状态,访问哪一台都行 DNS负载均衡: 优点:不需要维护负 阅读全文
摘要:
负载均衡:心跳检测,自动转移 解决负载均衡后的session问题: ip哈希,或根据cookie来转发。不满足高可用。 session服务器,利用分布式缓存、数据库等。引入了网络开销 session replication,即在服务器间同步session。同步开销、存储开销都很大 把session记 阅读全文
摘要:
XSS(Cross Site Script)跨站脚本攻击 持久型:黑客提交含有恶意脚本的请求,保存在被攻击的web站点的数据库中, 用户浏览网页时,恶意脚本被包含在正常页面中,被浏览器执行。 例如在博客里写一段js代码,把cookie发给黑客,里面可能含有sessionID 用户访问该博客,黑客就能 阅读全文
摘要:
前端优化: 减少http请求:合并css、js、img keep-alive复用tcp连接 浏览器缓存:css、js、img,设置http头Cache-Control、Expires。 如果要更新缓存的文件,可以改变文件名。 更新文件时,应当一个一个更新,避免浏览器缓存同时大量失效。 压缩:减少传输 阅读全文
摘要:
200 OK 请求已成功, 204 No Content 服务器成功处理了请求,没有返回任何内容。 206 Partial Content 成功处理了部分GET请求。 多用于断点续传、大文件拆分下载等 301 Moved Permanently 永久移动到新位置 302 Found 临时重定向 30 阅读全文
摘要:
套接字对:(源ip:源port,目的ip:目的port),唯一标识了一个网络上的TCP连接 收到报文,不仅要看目的port,还要看源ip和port才能确定报文该交给哪个连接 listen():将主动套接字转化成被动套接字,内核为每个监听套接字维护半连接队列和全连接队列 backlog参数指定半连接队 阅读全文
摘要:
TCP的差错恢复:tcp确认是累积式的,接收方不会确认失序的报文段, 发送方仅需维护已发送但未确认的最小序号,以及下一个要发送的序号 这样看来,tcp是GBN风格的,但tcp又会缓存失序的报文段, 并对缓存的报文段进行选择确认(SACK) 回退N步(Go-Back-N,GBN),也常被称为滑动窗口协 阅读全文
摘要:
大量的源想以过高的速度发送数据,导致路由器缓存溢出,继而丢包。 速率控制:TCP维护拥塞窗口cwnd变量,发送端未被确认的数据量不能超过cwnd cwnd代表发送端认为能发送的数据量,流量控制窗口代表接收端能接收的数据量, 实际能发送的数据量是二者的较小值 拥塞检测:隐式检测:超时或者收到三个冗余a 阅读全文
摘要:
三次握手:能确定双方都做好了传输数据的准备,并且彼此知道对方已经准备好, 通知对方自己的初始序号isn,设置其他初始化的参数和状态变量。 前两次握手不能携带数据,第三次握手可以携带数据。 syn flood攻击:攻击者发送syn,服务器创建半开连接并发送synack,攻击者不发送ack 解决方法:很 阅读全文
摘要:
序号:指字节流首字节的编号,例如100 000字节的数据,MSS为1000字节, 那么第一个报文段的序号为0,第二个报文段的序号为1000,第三个为2000 由于报文段的长度是可变的,所以不能对报文段进行确认,只能对字节进行确认 确认序号:收到0~199字节,和300~456字节,确认序号为200, 阅读全文
摘要:
ip协议不可靠,会丢失、出错、乱序 延迟、重复 tcp可靠性是指数据的可靠传递,或故障的可靠通知 tcp为保证可靠性,使用了“带重传的正面确认”技术 1.发送端需要知道接收端有没有收到段,接收端需要返回ack。 2.超时未收到ack就重传,重传会导致段重复,序号可以识别重复的段 3.停等式发一个确认 阅读全文
摘要:
创建函数 function func1 { ....... } 或者 func2() { ....... } 调用函数 需要先定义,再调用 .... func1 .... 返回值 默认情况下,函数的退出状态码是函数中最后一条命令的退出状态码 return 0~255 获取返回值:result=$(f 阅读全文
摘要:
临时重定向 echo "error" >&2 # test.sh 脚本里 将标准输出重定向到标准错误 ./test.sh 2> test2.txt # 运行脚本时,将错误重定向到文件,则 error 会被写入到文件中 永久重定向 exec 1>a.txt 将脚本中所有标准输出 都重定向到a.txt 阅读全文