文章目录
Ioc和DI
IoC(Inversion of Control)即控制反转,是一种设计思想。是由容器帮对象查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转。依赖对象获取被反转了。不是对象直接创建依赖对象。
DI (Dependency Injection)即依赖注入,组件间依赖关系在运行期决定,容器动态的将某个依赖关系注入到组件中,提升了组件重用频率,为系统搭建了一个灵活、可扩展的平台。
IoC和DI是同一个概念的不同角度描述,IoC比较模糊,于是2004年又给出了新名字:依赖注入。依赖注入描述了被注入对象依赖IoC容器配置依赖对象。
php访问路径去掉index.php,nginx配置伪静态模板
laravel
location / {
try_files $uri $uri/ /index.php?$query_string;
}
ThinkPhp
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
其余参考Phpts,nginx配置伪静态模板
empty、is_null、isset
//isset:定义的且非null的都是true,??类似于isset
//empty:0,0.0,false,[],未定义的都未true,?: 类似于empty
//is_null:定义的值为null的是true
//未定义变量,isset()=false,empty()=true,is_null报错.
$data = ["", " ", 0,0.0, "0", null, "null", true, false, []];
foreach ($data as $key => $value) {
echo $key . '=>' ;
echo var_dump(empty($value)) . "__";
echo var_dump(isset($value)) . "__";
echo var_dump(is_null($value)) . "\r\n";
}
原码、反码、补码
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
[1000 0000]表示-128
限流
固定窗口:实现简单,存储时间窗口上的计数。缺点:会有突刺现象。
滑动窗口:划分区间窗口为更小的固定窗口,数据划过更小的固定窗口后,抛弃更老的一个区间,记录新的一个区间。
漏桶算法:流入速率不固定,流出速率固定。请求放入桶中,如果桶满了,抛弃新请求,总量大小是设计的关键。突发流量不丢弃,放入桶内,场景:瞬时高并发,例如秒杀。
令牌桶算法:以一定的速率将令牌放入到桶中,速率控制,令牌的速度是关键。突发的流量会丢弃更多的请求。令牌桶算法能够在限制数据的平均传输速率的同时还允许某种程度的突发传输。
请求太多的话,漏桶是尽量缓存请求(缓存不下才丢),令牌桶是丢弃请求(即使系统还能处理,只要超过指定的速率就丢弃,除非此时动态提高速率)
PHP安装扩展swoole
下载源码 https://github.com/swoole/swoole-src/releases
选择合适的版本 4.8 版本需要 php-7.2 或更高版本;5.0 版本需要 php-8.0 或更高版本
安装 cd swoole-src && phpize && ./configure && sudo make && sudo make install
启用扩展 php.ini 中加入一行 extension=swoole.so
PHP启动
service php7.2-fpm start/restart/stop