常见的设计模式
设计模式 概念 代码 工厂模式 用来实现创建对象和对象的使用分离,将对象的创建交给专门的工厂类负责简单工厂模式工厂模式抽象工厂模式 简单工厂模式,根据不同的入参new实例化不同的类对象 单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适配器模式 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 观察者模式 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,简单来说该模式相当于源 - 监听(Source-Listener)模式(即监听器)、发布 - 订阅(Publish-Subscribe)模式 策略模式 用相同的方法实现不同的功能 注册树模式
接口与抽象类
区别 接口类 抽象类 条件 必须实现接口类中所有的公共方法 必须定义父类中所有的抽象方法 关键字 interface abstract 方式 实现implements 继承extends 特性 实现多个接口 只能继承一个抽象类 修饰符 public 公有的 保持一致或更为宽泛
PHP版本区别
版本 特性 4 支持 autoload、PDO 和 MySQLi、类型约束,纯过程式语言,没太多复杂的 5.2 支持JSON,完全实现了面向对象 5.3 匿名函数,魔术方法,命名空间,后期静态变量绑定,hereDoc、nowDoc、const、三元运算、Phar 5.4 (无需修改ini配置)短标签,数组简写,Traits工具类,内置Web服务器 5.5 yield迭代器、生成器(foreach),foreach支持list() 5.6 增强常量、命名空间,可变函数参数,**幂运算,大文件上传,php://input可重用 7.0 新版ZendEngine引擎,匿名类,返回类型声明,变量类型、错误异常、zval使用栈内存等许多新特性 7.1 可空(NullLable)类型、list简写[]、指定key,const常量可指定权限,多异常捕获处理 7.2 新的对象类型,逆变和协变,通过名称加载扩展,允许重写抽象方法,使用argon2算法生成密码散列,新增ext/PDO字符串扩展类型 7.3 取数组第一个...
OOP - 面向对象
一句话 OOP = 把”数据”和”操作数据的方法”封装到一起,再用继承/多态在不改旧代码的前提下扩展新行为。 它的对立面是「面向过程」(数据是数据,函数是函数)和「函数式」(数据不可变,靠函数组合)。三种范式各有适用场景,OOP 不是唯一正解。 三大特性1. 封装(Encapsulation)把内部状态藏起来,只暴露必要接口。 123456789class BankAccount { private int $balance = 0; // 外面碰不到 public function deposit(int $amount): void { if ($amount <= 0) throw new InvalidArgumentException(); $this->balance += $amount; } public function balance(): int { return $this->balance; }} ...
MacOS基础
MacOSmacOS 使用pecl安装PHP扩展 安装kafka扩展前,确保MacOS已经安装了librdkafka,如果没有,可以使用 brew 安装 librdkafka: 1brew install librdkafka 因为mongodb在默认版本下,对PHP的版本要求是7.2,所以可以指定版本安装 1pecl i redis rdkafka mongodb-1.11.1 pecl安装PHP扩展的版本地址 拷贝文件内容的命令pbcopy 1pbcopy < ~/.ssh/id_rsa.pub
Linux
Linux系统中的644权限是什么意思? 权限 简称 全称 值 表达式 读取权限 r Read 4 2^2^ 写入权限 w Write 2 2^1^ 执行权限 x Execute 1 2^0^ 无权限 – — 0 0 rw- r– r– 第一位 6 = 4 + 2 + 0 所以是 rw- 即:所有(拥有)者 拥有读写权限; 第二位 4 = 4 + 0 + 0 所以是 r– 即:(同组)用户组 拥有读权限; 第三位 4 = 4 + 0 + 0 所以是 r– 即:公共(其他)用户 拥有读权限;
书单
软技能 代码之外的生存指南 约翰 Z.森梅兹 著 代码整洁之道 马丁 著 代码整洁之道 程序员的职业素养 罗伯特·C.马丁 著 编程珠玑(第2版 修订版) 乔恩·本特利(Jon Bentley) 著 编程珠玑(续 修订版) 乔恩·本特利 著 重构 改善既有代码的设计 马丁·福勒(Martin Fowler) 著 程序员面试白皮书 逸超, 董飞著 师兄教你找工作——100场面试 20个offer背后的求职秘密 韩速(@美牙君)著 趣学算法 陈小玉 著 算法谜题 【美】Anany Levitin 著 C和C++程序员面试秘笈 董山海 著 Java程序员面试秘笈 常建功著 编程之法:面试和算法心得 July 著 .NET程序员面试秘笈 张云翯著 软件测试工程师面试秘籍 G.li, 51Testing软件测试网 著 Android高薪之路—Android程序员面试宝典 李宁著 从跨界到专精 T型产品经理的自我修炼 简浅 著
索引的最左前缀原则
最左前缀原则就是最左优先, 在创建多列索引时,要根据业务需求, where子句中使用最频繁的一列放在最左边。 mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配, 比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的, 如果建立(a,b,d,c)的索引则都可以用到, a,b,d的顺序可以任意调整。 =和in可以乱序, 比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序, mysql的查询优化器会帮你优化成索引可以识别的形式。 最左前缀原则可以是联合索引的的最左N个字段,也可以是字符串索引的最左的M个字符。举个例子,假如现在有一个表的原始数据如下所示: 并根据col3 ,col2的顺序建立联合索引,此时联合索引树结构如图下所示: 叶子结点中首先会根据col3的字符进行排序,若是col3相等,在col3相等的值里面再对col2进行排序,假如...
Lumen 基础
Lumen依赖注入 它是”其中一种对象依赖于另一个对象”的技术。 依赖注入有三种类型: 1)构造函数注入 2) setter 注入 3)接口注入. 下面是laravel的主要优点: Laravel具有blade模板引擎,可创建动态布局并増加编译任务 可以很简单的复用代码 您不需要手动維护和包含路径,因为Laravel具有自动加载功能 该框架可帮助您使用LOC容器制作新工具 Laravel提供了一个版本控制系统,可帮助简化迁移管理 区别: 1、Laravel是一个全栈Web应用程序框架,而Lumen是一个微框架,用于开发微服务和API开发; 2、Laravel可以与更多数量的工具集成,而Lumen与其他工具的集成设施数量较少。 laravel与lumen的区别是什么 Laravel是用于Web开发的开源PHP框架。它是免费的,由Taylor Otwell创建。它基于MVC(模型视图控制器)架构模式。它主要用于开发Web应用程序。Laravel易于理解,并且健壮的MVC框架可用于PHP中的Web应用程序开发。Lumen是一个微型框架,意味着更小,更简单,更精简和更快,Lumen主...
Kubernetes 基础操作命令
初始版本 2014年6月7日,7年前 稳定版本 1.23.1(2021年12月16日,2个月前) 源代码库 kubernetes 编程语言 Go 操作系统 跨平台 类型 集群管理 许可协议 Apache许可证 2.0 网站 kubernetes.io Kubernetes(常简称为K8s)是用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。该系统由 Google 设计并捐赠给Cloud Native Computing Foundation(今属Linux基金会)来使用。 它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具,包括Docker等。 More info: Kubernetes Bash Command查看默认命名空间下的pod1kubectl get pods 或 1kubectl get pod 或 1kubectl get po 查看所有的命名空间1kubectl get po -A 查看指定命名空间下的所有pod1kubectl get...




