- 博客(19)
- 收藏
- 关注
原创 模板方法模式在开发中的应用
模板方法模式在开发中的应用先说一下业务背景吧,公司这边需要做一个数据聚合的项目,要从各个数据源清洗出来历史数据,并进行整合统一存储。数据源大概有7、8 个,时间粒度包括历史全量数据、每天的新增数据、从某天开始至今的数据。面对这个需求,首先的想法是,定义一个接口,抽象各个数据源的处理过程;通过一个类单独进行参数解析、数据源接口实例管理、任务分发。定义好方案之后,于是我们就开始愉快地进行开发了。第一版接口方案首先我们定义一个数据源数据的接口,接口定义如下type Executor interface
2021-07-28 17:00:26
255
原创 谈谈缓存那些事---关于缓存击穿、缓存穿透和缓存雪崩
谈谈缓存那些事如何使用缓存缓存处理流程缓存预热缓存常见问题和解决方案缓存穿透缓存击穿缓存雪崩关于缓存的使用在项目开发过程中,我们们经常会用到缓存来加速项目访问、减小数据库压力,但是在使用缓存过程会有一些常见的问题。今天我们就来聊聊关于缓存那些事。说明以下示例代码均基于 PHP 的 Laravel 框架完成如何使用缓存缓存处理流程一般缓存会用在程序从数据库中查询数据之前,先从缓存中取数据...
2020-03-21 17:45:42
288
原创 Vim 使用配置指南
关键字,PHP 开发工具,Vim 插件Vim 编辑器一个在程序员届中享有盛誉,其丰富强大的插件和灵活的移动也使得开发起来事半功倍;但是 Vim 复杂的配置和极大的学习成本也让很多人望而生畏。今天就来整理一下如何配置一个 Vim 开发环境环境。说明本人目前主要从事 PHP 开发工作,如果针对其他语言,可能还需要额外的其他配置Vim 基本知识Vim 的不同模式我们知道 Vim 大概分...
2020-02-29 20:05:16
1303
原创 关于 PHP 引用的一个问题引发的思考
我们先来看一段代码:$a=[1,2,3]; foreach($a as &$v){} foreach($a as $v){}var_dump($a);我们来看一下运行结果是什么array(3) { [0]=> int(1) [1]=> int(2) [2]=> &int(2)}是不是和大家想的不一样。我...
2020-01-21 18:12:22
335
原创 3 年经验的 PHP 程序员应该掌握哪些知识
中级PHP开发面试经验及问题总结对于互联网的从业人员来说,每年的3,4月份可以说是一个跳槽的黄金时期,也因此业内有金三银四的说法。本人在上一家公司工作三年之后也渐渐按耐不住激动的心情选择了跳槽。在经过了半个多月的面试之后,对于目前市场上对于 3 年左右的程序员的的一个技能需求大概有了了解,对于个人的短板也有了一个更加全面的认识。今天我把最近一段时间面试中遇到的一些问题和考察的技能点总结下来...
2018-06-17 17:32:47
7412
1
原创 Laravel 源码分析---概述与目录
laravel 自诞生以来,以其优雅简洁的语法、强大的功能得到了越来越多人的喜爱,也成为了目前最流行的PHP框架。 The PHP Framework For Web Artisans声称专门为 Web 艺术家而开发的 laravel 框架,确实以非常优雅的方式实现了非常强大的功能,为 Web 开发提供了非常多的便利。并且 laravel 框架的基础上开发第三方没款并整合到 lar...
2018-05-23 12:17:59
725
原创 Laravel 框架源码分析---框架启动过程
在我们学习一个框架的过程中,了解一个框架的启动流程,对于我们理解、使用好框架具有很大帮助,今天我们就来看一下 laravel 框架启动过程。框架启动过程中的相关类在 laravel 启动过程中,主要涉及到以下类:Illuminate\Foundation\Application Application 是 laravel 框架最核心的类之一。它首先是一个 IOC 容器,管理整个框架...
2018-05-21 20:46:38
1728
原创 Laravel 源码分析---使用 Pipeline 实现中间件功能
在我们了解了 Pipeline 的源码及工作过程后(见文章Laravel 源码分析—Pineline),我们来看一下框架中使用 Pipeline 实现中间件功能的代码。框架中间件使用概述。在 laravel 框架中中间件的配置主要有两个地方,一个是在 App\Http\Kernel 类中进行配置,一个是在路由设置的时候进行配置。所以 laravel 框架中有两处管理与使用中间件的地方,...
2018-05-12 13:09:54
646
原创 Laravel 源码分析---Pineline
在 laravel 框架中,Illuminate\Pipeline\Pipeline 类是实现 laravel 中间件功能的重要工具之一。他的作用是,将一系列有序可执行的任务依次执行。也有人把这种功能成为管道模式,比如下面这篇文章的介绍: Laravel 中管道设计模式的使用 —— 中间件实现原理探究今天我们就来探究一下 Pipeline 类的功能和源码。Pipeline 的使用Pi...
2018-05-12 13:08:34
1157
原创 Laravel 源码分析---Facade(门面)
在 laravel 框架中,门面为应用服务容器中绑定的类提供了一个“静态”接口。通常在项目开发中,我们为通过 ServiceProvider 注入容器的服务类构建一个门面,以便我们可以非常方便地调用这些类接口。并且由于门面使用了动态方法对服务容器中解析出来的对象方法调用进行了代理,我们也可以像测试注入类实例那样测试门面。今天我们就来看一下 laravel 框架中 Facade 的源码。Faca...
2018-05-10 21:31:36
590
原创 Laravel 源码分析---Application 对 ServiceProvider 的管理与使用
Laravel 框架中 ServiceProvider 的实例化、注册、启动、延迟加载等管理功能都是由框架的核心类 Application 来完成的。Application 是框架最核心的类,管理整个框架的启动、运行以及整个生命周期,并通过 ServiceProvider 将其他功能的模块载入框架。Application 是 Container 类的子类,所以也管理者框架中其他类的实例化、存储等功...
2018-05-09 18:48:47
607
原创 Laravel 源码分析---ServiceProvider
ServiceProvider 是 laravel 框架中很重要的一个概念,理解 ServiceProvider 的在框架中的作用并阅读其源码对于我们理解框架的设计思想和用好框架很有作用。今天我们就来看一下 ServiceProvider 的功能及其源码。ServiceProvider 功能概述在框架中 ServiceProvider 扮演着沟通 laravel 框架核心和独立模块桥梁的...
2018-05-09 18:47:07
2124
原创 Laravel 源码分析---Container
Container 简介Container 是 laravel 框架的核心之一,laravel 框架中类的实例化、存储和管理都是由 Container 来负责的。laravel 里面的 Container 本质上是一个 IOC (Inversion of Control/控制反转) 容器,是用来实现依赖注入(DI/Dependency Injection)的。也有人把这种设计成为服务定位模式。...
2018-05-07 17:13:58
1763
2
原创 工厂方法模式和单例模式在 Laravel 框架中 ORM 搜索功能中的应用
Laravel 框架中 ORM 搜索结果缓存的实现标签: 设计模式 工厂方法模式 单例模式 Laravel PHP在 Gof 总结的 24 种设计模式中,用来分离类的创建与调用的工厂模式和单例模式的应用非常广泛 ,今天我们就来看一下这些模式在 Laravel 框架的 ORM 搜索结果缓存功能中的应用。ORM 模式介绍在使用 Laravel 框架或者其他框架的时候,ORM 的...
2018-05-07 16:43:35
1437
原创 使用 vagrant 搭建自己的 Laravel 开发环境 for windows
什么是vagrant网上对vagrant的介绍有很多,对于什么是vagrant这个问题,一般有这些说法: Vagrant 是一个可创建轻量级、高复用性和便于移植的开发环境的工具。 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。而我认为的v...
2018-05-07 16:41:34
780
原创 策略模式和工厂模式在促销系统下的应用
策略模式和工厂模式在促销系统下的应用设计模式为我们提供了在某些应用场景下特定问题的解决方案,今天我们利用策略模式和工厂模式实现一个简单的促销系统。 实现语言:PHP 我们先来回顾一下策略模式和工厂模式的基本知识策略模式Gof 对策略模式的作用的说明如下 定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替换。本模式使得算法可独立于他的客户而变化。策略模...
2018-05-03 21:33:02
1113
原创 git 常见问题解决命令
项目开发离不开项目管理,而项目管理我认为git是最好用的版本控制工具,结合github强大的资源,git应该成为每一个程序员的必备,今天就来介绍一下git常见问题的处理。关于git入门,廖雪峰的git博客 已经介绍地非常清楚了,这里就不在重复介绍,主要讲一些常见问题的解决方法。用线上版本强制覆盖本地代码有时候本地调试、debug,本地代码已经改的一团糟了;或者线上功能好使,而本地功能不好使,希望用线
2016-03-22 21:09:57
3397
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人