PS:一张非常有意思的图
PHP命名空间的解析规则
命名空间名称定义
- 非限定名称Unqualified name:名称中不包含命名空间分隔符的标识符,例如 Foo
- 限定名称Qualified name:名称中含有命名空间分隔符的标识符,例如 Foo\Bar
- 完全限定名称Fully qualified name:名称中包含命名空间分隔符,并以命名空间分隔符开始的标识符,例如 \Foo\Bar。 namespace\Foo 也是一个完全限定名称。
PHP5.4中新增Traits的用法
自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。这是一个非常强大的方法,下面详细介绍Traits的用法。
Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集。Traits 和类组合的语义是定义了一种方式来减少复杂性,避免传统多继承和混入类(Mixin)相关的典型问题。
Trait 和一个类相似,但仅仅旨在用细粒度和一致的方式来组合功能。Trait 不能通过它自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用类的成员不需要继承。
php中的declare详细用法
一般用法是 declare(ticks=N);
拿declare(ticks=1)来说,这句主要作用有两种:
1、Zend引擎每执行1条低级语句就去执行一次 register_tick_function() 注册的函数。
可以粗略的理解为每执行一句php代码(例如:$num=1;)就去执行下已经注册的tick函数。
一个用途就是控制某段代码执行时间,例如下面的代码虽然最后有个死循环,但是执行时间不会超过5秒。
PHP的魔术常量与魔术方法
一、魔术常量
__LINE__ |
文件中的当前行号。 |
__FILE__ |
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。 |
__DIR__ |
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) = |
__FUNCTION__ |
函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。 |
__CLASS__ |
类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。 |
__TRAIT__ |
Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。 |
__METHOD__ |
类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。 |
__NAMESPACE__ |
当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。 |
日志分析常用命令
一些较为入门级的操作,这里不做介绍,例如cp、mv、rm、mkdir、touch、ls、tar等操作.
1、查看文件的内容cat
cat命令是一个显示文本文件内容的便捷工具,如果一个日志的文件较小,可以直接使用cat命令将其内容打印出来,进行查看。如果一个日志的文件较大,请不要这样操作,打开一个过大的文件,可能会占用过多的系统资源,从而影响系统对外的服务。
大型分布式网络架构
一个大型、稳健、成熟的分布式系统的背后,往往会涉及众多的支撑系统,我们将这些支撑系统称为分布式系统的基础设施,包括:分布式协作及配置管理系统zookeeper,分布式缓存系统,持久化存储,分布式消息系统,搜索引擎,CDN系统,负载均衡系统,运维自动化系统,实时计算习系统,离线计算系统,分布式文件系统,日志搜集系统,监控系统,数据仓库等.
Linux环境变量set、env、export的区别
set、env、export这三个命令都可以用来显示shell变量;
set:显示当前shell的变量,包括当前用户的变量
env:显示当前用户的变量
export:显示当前导出成用户变量的shell变量
Git branch命令的用法总结
Git常用的config配置
Git配置命令config
Git中的config命令用来初始化Git环境配置,一旦配置成功后,即使Git升级了,也会绑定到你的环境中,Git的config配置分为三种:系统配置、全局配置、项目配置
>/dev/null 2>&1的含义
shell中可能经常能看到:>/dev/null 2>&1 ,命令的结果可以通过%>的形式来定义输出
- >/dev/null 代表空设备文件
- > 代表重定向到哪里,例如:echo “123” > /home/123.txt
- 1 表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于”1>/dev/null”
- 2 表示stderr标准错误
- & 表示等同于的意思,2>&1,表示2的输出重定向等同于1
crontab命令详解
linux系统中由 cron (crond) 这个系统服务来控制,循环运行的例行性计划任务。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。
强大的PHP函数对数组进行排序
-
sort / rsort
对数组排序
bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排
PHP中不常用的函数(一)
-
get_declared_classes
返回由已定义类的名字所组成的数组 继续阅读
彻底理解PHP的SESSION机制
默认机制
用磁盘文件来实现PHP会话。php.ini配置:session.save_handler = files
一、session_start()
session_start()是session机制的开始,它有一定概率开启垃圾回收,因为session是存放在文件中,
PHP对 Session 进行自定义处理
在php 5.4之前使用session_set_save_handler函数,进行用户自定义会话存储,这里不做详细介绍.
-
session_set_save_handler
设置用户自定义会话存储函数
谈谈Redis的SETNX
Nginx 配置之安全篇
一、隐藏不必要的信息
大家可以看一下我的博客请求响应头,有这么一行 server: nginx,说明我用的是 Nginx 服务器,但并没有具体的版本号。由于某些 Nginx 漏洞只存在于特定的版本,隐藏版本号可以提高安全性。这只需要在配置里加上这个就可以了:
server_tokens off;
Nginx 配置之性能篇
本文提到的一些 Nginx 配置,需要较高版本 Linux 内核才支持。在实际生产环境中,升级服务器内核并不是一件容易的事,但为了获得最好的性能,有些升级还是必须的。很多公司服务器运维和项目开发并不在一个团队,一方追求稳定不出事故,另一方希望提升性能,本来就是矛盾的。好在我们折腾自己 VPS 时,可以无视这些限制。