redis 内部的字符串实现,并不是c所定义的字符串, 而是一个sds对象, 这个特性也是redis如此高效,并且能够存储二进制数据类型的原因。
设计模式之观察者模式
观察者模式又叫发布订阅模式, 其本质是在被观察者对象中注册一系列的观察者, 当被观察者的状态发生改变的时候, 通过循环调用一系列观察者对象的方法,进而让观察者对被观察者的状态改变做出相应的响应。PHP也内建了观察者模式的接口点击这里查看php定义的观察者接口 被观察者接口
es定义动态mapping
elastic非常易于使用, 甚至都不用我们自己创建mapping, 它也能自动的帮我们创建。但是有时候es的默认行为可能并不是我们想要的, 或者我们要指定使用哪个analyzer这时我们都需要手动的创建mapping。如果我们要索引的文档的数据差异比较大,可能我们需要定义很多类型的mapping, 但是为了偷懒,我们可以只指定我们需要约束的几个字段, 其他字段的属性让es自动为我们创建, 这就需要用到动态模板。 这就需要用到动态模板。
elasticsearch中文搜索
使用elasticsearch能够简单的实现搜索业务, 但是elasticsearch默认是不支持中文搜索的,我们需要安装中文分词插件来让其支持中文的搜索,用的最多的应该是IKAnalyzer中文分词了。
ik的GitHub地址
依赖注入
推荐一篇介绍依赖注入的基础文章依赖注入基础讲解
说白了, 依赖注入就是不直接在使用类的内部创建对象, 而是将对象作为调用类的一个属性, 这样能够降低类与类之间的耦合, 使程序更加的灵活可变。还是举个简单的例子吧。
使用php异步执行脚本——不阻塞当前脚本的运行
有时会需要在程序运行的时候执行一些脚本, 但是当前程序并不关心执行的结果, 这时可以后台执行脚本
在Linux下每个进程都有三个文件描述符, 标准输入(0), 标准输出(1), 标准错误(2)。程序返回0代表没有错误, 返回任何其他数字都是错误,当程序执行有误的时候,可以使用PHP函数exit(num)指定任何非零数字, 以代表程序执行错误。
windows_下常用的shell命令
windows下的shell是出了名的难用, 但是没办法, gui除了mac就是windows,Linux的图形操作还是不太友好。因此, 为了方便windows下的常用命令我们还是需要了解一些的。
linux_systemd命令
新版的Linux发行版都开始使用systemd来取代传统的systemv, 相比于传统的systemv, systemd更加易于配置, 统一操作。发现已经有人写的很全了, 就做个链接好了简单入门看阮老师这篇, 希望能够更加深入的理解的话建议看arch的文档点这里 。
使用nginx-image_filter生成缩略图
如果缩略图的尺寸比较多, 并且不想使用程序去生成, 那么就可以借助nginx的image_filter模块帮助我们生成。但是这有个缺点, 就是会占用nginx的资源, 如果图片很大,资源占用会更大, 但是这仍不失为是一种好的解决方案, 况且我们可以利用nginx的代理功能生成本地资源, 这样就会只生成一次, 对nginx的压力大大减小。参考了这里, 原文由于使用的是http, 并不适用于我们的规则, 于是稍作修改。