该类的作用就是帮助其他的类“生产”对象,也就是说,只要传递给这个“工厂”一个类名,就可以得到一个相应的对象。
PHP单例模式
单例模式是一种常见的设计模式
在实际的运用中,存在一些类,只需要实例化一个对象,就可以完成其所有的功能操作,最典型的就是数据库操作。
所以,如果我们能够通过某些技巧,使得一个类只能开辟一个对象空间的话,就可以节省相应的对象资源,这种模式就叫作单例模式。
php、python3实现二分法查找
二分法查找的思路如下:
1、首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。
2、如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤(1)的操作。
3、如果某一步数组为空,则表示找不到目标元素。
php、python3实现快速排序算法
原理:快速排序使用分治策略来把待排序数据序列分为两个子序列,具体步骤为:
1、从数列中挑出一个元素,称该元素为“基准”。
2、扫描一遍数列,将所有比“基准”小的元素排在基准前面,所有比“基准”大的元素排在基准后面。
3、通过递归,将各子序列划分为更小的序列,直到把小于基准值元素的子数列和大于基准值元素的子数列排序。
使用fastcgi_finish_request提高页面响应速度
当PHP运行在FastCGI模式时,可用fastcgi_finish_request可以提高请求的处理速度,让一些处理可以在页面生成完后再进行。
(PHP 5 >= 5.3.3, PHP 7)
fastcgi_finish_request ()
fastcgi_finish_request — 冲刷(flush)所有响应的数据给客户端
此函数冲刷(flush)所有响应的数据给客户端并结束请求。 这使得客户端结束连接后,需要大量时间运行的任务能够继续运行。
Linux: grep多个关键字
或操作:
grep -E '123|abc' filename // 找出文件(filename)中包含123或者包含abc的行 egrep '123|abc' filename // 用egrep同样可以实现 awk '/123|abc/' filename // awk 的实现方式
与操作:
grep pattern1 files | grep pattern2 //显示既匹配 pattern1 又匹配 pattern2 的行。
其他操作:
grep -i pattern files //不区分大小写地搜索。默认情况区分大小写, grep -l pattern files //只列出匹配的文件名, grep -L pattern files //列出不匹配的文件名, grep -w pattern files //只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’), grep -C number pattern files //匹配的上下文分别显示[number]行,
redis的持久化
redis的数据本身是保存在内存里面的,但是redis提供了持久化的功能,可以把数据保存在磁盘上,下一次启动redis服务的时候,会自动的把磁盘上的数据载入到内存里面。
当两种方式同时开启时,数据恢复Redis会优先选择AOF恢复。
redis安全问题
- 不放在公网,只在内网使用(局域网)
- 公网(防火墙规则)
- redis作为数据库是登录密码的存在(默认是关闭)。
Redis常用命令以及基础操作
redis是一个nosql的产品,支持的存储数据的类型(value)很多,常见的类型有
string 字符串、
link 链表、
hash(类似php里面关联数组)、
set一组数据的集合(无序性、唯一性、确定性)、
sorted set:对无序集合的一个升级,里面的集合元素需要按照一定的权值(按照某个规则来排序)来排序
所有redis也叫作结构化的nosql数据库。
php 函数使用可变数量的参数
在php5.6以上版本可以使用…语法实现:
参数列表可以包含 …标记,表示该函数接受可变数量的参数。参数将作为数组传递给给定变量。