自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

米粒人生

无穷的远方,无尽的人们都和我有关

  • 博客(36)
  • 收藏
  • 关注

原创 项目管理中的六力模型

2020-09-27 23:53:34 788

原创 记一次Excel导出导致内存耗尽的问题

今天遇到一个问题,导出线上2个月的Excel统计数据频繁导致报错,一查php-fpm日志,则是提示:PHP Fatal error: Allowed memory size of 298844160 bytes exhausted (tried to allocate 262144 bytes)一开始首先想到是Excel导出时很吃内存,数据一多就容易将内存耗尽,于是先从代码上做优化,取完数据后将无用的数组全部unset()掉。继续去预发布环境(全量数据)尝试,发现还是error错误,于是继续

2020-09-24 18:50:49 1207

原创 高性能数据库集群

根据阿里技术专家李云华老师的课程《从0开始学架构》中高性能存储的介绍,总结的思维导图。希望能让大家对高性能数据库集群有个大致的把握。

2019-04-02 10:35:50 654 1

原创 微服务架构思维导图

根据阿里技术专家李云华老师的课程《从0开始学架构》中微服务的介绍,总结的思维导图。希望能让大家对微服务有个大致的把握。

2019-03-11 17:51:15 2415

原创 如何使用开源项目

最近在极客时间上学习了阿里技术专家李云华老师的课程《从0开始学架构》,觉得受益匪浅。根据课程的《再谈开源项目:如何选择、使用以及二次开发?》一节内容,我整理出了一张思维导图,分享给大家。使用开源项目是广大开发技术人员经常会遇到的事情,这篇文章写得非常系统。我则是加工一下,以更为直观的方式展示给大家,希望对大家有所帮助。...

2019-03-06 13:08:23 1441

原创 互联网构架技术全景图

最近在极客时间上学习了阿里技术专家李云华老师的课程《从0开始学架构》,觉得受益匪浅。按照李老师的说法:抛开 BAT 各自差异很大的业务,站在技术的角度来看,其实 BAT 的技术架构基本是一样的。再将视角放大,你会发现整个互联网行业的技术发展,最后都是殊途同归。抛开 BAT 各自差异很大的业务,站在技术的角度来看,其实 BAT 的技术架构基本是一样的。再将视角放大,你会发现整个互联网行...

2019-03-01 17:28:26 5642 1

原创 算法和数据结构基础概念思维导图

以下是算法和数据结构基础概念的思维导图:

2019-02-13 15:45:41 1057

原创 Yii2设计模式——工厂方法模式

应用举例yii\db\Schema抽象类中://获取数据表元数据public function getTableSchema($name, $refresh = false) { if (array_key_exists($name, $this->_tables) && !$refresh) { return $this...

2019-01-02 09:47:18 467

原创 Yii2设计模式——静态工厂模式

应用举例yii\db\ActiveRecord//获取 Connection 实例public static function getDb(){ return Yii::$app->getDb();}//获取 ActiveQuery 实例 public static function find(){ return Yii::createObject(ActiveQuer...

2018-12-28 09:57:11 278

原创 Yii2设计模式——简单工厂模式

除了使用 new 操作符之外,还有更多的制造对象的方法。你将了解到实例化这个活动不应该总是公开进行,也会认识到初始化经常造成“耦合”问题。应用举例yii\db\mysql\Schema中://创建 QueryBuilder 实例public function createQueryBuilder(){ return new QueryBuilder($this->db);}...

2018-12-24 09:55:58 332

原创 Yii2设计模式——注册树模式

应用举例在Yii.php中:<?phpclass ServiceLocator extends Component{ //保存实例化的对象,每个对象都是单例,且有唯一string类型的ID做区分 private $_components = []; //保存设置的对象或者其定义,用于实例化 private $_definitions = [];...

2018-12-20 16:17:18 330

原创 Yii2设计模式——单例模式

应用举例在Yii.php中:require __DIR__ . '/BaseYii.php';// Yii框架的帮助类,提供框架基本的功能class Yii extends \yii\BaseYii{}spl_autoload_register(['Yii', 'autoload'], true, true);Yii::$classMap = require __DIR__ ....

2018-12-17 09:41:33 590

原创 nginx负载均衡指令least_conn的真正含义

负载均衡指令least_conn的含义,按照nginx文档的说法:Specifies that a group should use a load balancing method where a request is passed to the server with the least number of active connections, taking into account wei...

2018-12-14 14:28:39 6767 1

原创 Yii2设计模式——Yii2中用到哪些设计模式?

”Yii2设计模式“包含了两个方面的内容:1.设计模式,2.Yii2框架。《设计模式》一书虽然以JAVA语言来表达设计模式的思想,但是设计模式远不限制于某一种特定的语言,而是在面向对象编程中通用的思想,各个语言也都有各自的实现方式。Yii2是一款优秀的PHP Web框架,Yii2框架的里里外外都借鉴了很多设计模式的思想。而且,越是Yii2内核的部分,设计模式运用的越多。同样的,其他优秀的框架如...

2018-12-12 10:53:07 920

原创 Yii2设计模式——设计模式简介

Yii2设计模式——设计模式简介我们首先来思考一个问题:我们作为工程师,最重要的任务是什么?笔者认为是——解决用户问题。我们的任何知识和技能,如果不能解决特定的问题,那么就是无用的屠龙之术;我们的任何经验,如果不能对解决新的问题有用,那这经验就是过时的。工程师不是空谈者,也不是理论家,再好的理论,再好的设计,不能落地变成产品,不能解客户燃眉之急,那终究也是水中月镜中花,迟早要被淘汰。能解决现...

2018-12-10 10:01:52 800

原创 Openresty的同步输出与流式响应

Openresty的同步输出与流式响应默认情况下, ngx.say和ngx.print都是异步输出的,先来看一个例子:location /test { content_by_lua_block { ngx.say("hello") ngx.sleep(3) ngx.say("the world") }}执行测试,

2018-11-13 11:34:55 683 1

原创 Yii2 Scope 功能的改进

前段时间发表了一篇文章 面向对象的一小步:添加 ActiveRecord 的 Scope 功能 提到一种更加友好的方式做数据库查询。经小伙伴的建议,在满足同样条件下,可以有更为简洁的封装方法。这需要用到重载ActiveQuery方法,在通过gii建数据模型model时,可以勾选"Generate ActiveQuery"这么一项自动生成。例如,在生成Student Model时,可以自动生...

2018-08-01 10:14:07 621

原创 面向对象的一小步:添加ActiveRecord的Scope功能

问题场景我们用Yii2的ActiveRecord功能非常的方便,假如我们有个Model叫Student,那么ActiveQuery可以通过这种方式轻便地获得:$query = Student::find();然后,我们就可以在$query上继续使用各种方法添加SQL Clause:$query->where(['gender' => 'male' ]); //选择男生...

2018-07-25 10:53:54 374

原创 关于token和refresh token

最近在做公司的认证系统,总结了如下一番心得。传统的认证方式一般采用cookie/session来实现,这是我们的出发点。1.为什么选用token而不选用cookie/session?本质上token和cookie/session都是字符串,然而token是自带加密算法和用户信息(比如用户id),;而cookie本身不包含用户信息,它指向的是服务器上用户的 session,而由session保存用户...

2018-06-26 18:00:27 18255 3

原创 一个极为简单的方法实现本地(离线)yum安装rpm包

首先,我要关心的问题仍然是如何离线或者本地yum安装rpm包?这其中的关键当然是获取rpm包到本地,这其中的麻烦事是去解析依赖关系。然而,我发现一个极为简单的方法可以不用操心rpm包依赖关系,不多不少的获取全部rpm包,现在直接贴出来:1.设置可用的源,以及可以装rpm的干净环境2.开启缓存,vim /etc/yum.conf 设置cachedir=/var/cache/yum/$basearch...

2018-05-18 16:14:01 602

原创 Yii2基本概念之——生命周期(LifeCycle)

人有生老病死,一年有春夏秋冬四季演替,封建王朝有兴盛、停滞、衰亡的周期律——“其兴也勃焉,其亡也忽焉”。换句话说,人,季节,王朝等等这些世间万物都有自己的生命周期。同样地,在软件行业,一个系统,一个组件,一个功能,一个类都是有自己的生命周期的。那么,为什么要从生命周期的这个角度去理解程序? 在现实世界中如果你使用一个工具,当你理解工具的工作原理的时候你使用起来无疑更加有信心、更加得心应手;应用的开

2018-05-09 22:46:46 1055

原创 一篇文章说透Nginx的rewrite模块

rewrite模块即ngx_http_rewrite_module模块,主要功能是改写请求URI,是Nginx默认安装的模块。rewrite模块会根据PCRE正则匹配重写URI,然后发起内部跳转再匹配location,或者直接做30x重定向返回客户端。rewrite指令的工作原理rewrite模块的指令有break, if, return, rewrite, set等。rewrite指...

2018-04-18 09:32:07 598

原创 PHP Session 常用的函数

我们在前面的文章里面讲到session的原理和最佳实践,感到意犹未尽。现在再来聊下PHP Session用到的几个相关的函数。session_start()session_start() 会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式,或者使用 cookie 提交了会话 ID, 则会重用现有会话。当会话自动开始或者通过 session_start() 手动开...

2018-03-26 22:32:04 321

原创 Session 的原理及最佳实践

Http协议是基于请求和响应的一种无状态的协议,而通过session可以使得Http应用变得有状态,即可以“记住”客户端的信息。今天就来说说这个session和cookie。Session 的原理session是在服务器端保持用户会话数据的一种方法,对应的cookie是在客户端保持用户数据。为了在客户端(比如浏览器)可以跨页面交流数据,Netscape将cookie引入浏览器。所以,c...

2018-03-26 22:16:25 203

原创 Nginx负载均衡与反向代理——扩展功能(NGINX Plus)

本文主要是介绍了NGINX Plus的相关功能,横跨了NGINX Plus R5/R6/R7/R9等各个不同版本的更新。涉及的是Nginx反向代理和负载均衡的更为高级的用法。主要包含:HTTP负载均衡,HTTP长连接,TCP和UDP的负载均衡,上游连接数限制,最短时间的均衡算法,Session一致性,实时健康检查,DNS重解析,访问控制,客户端连接数限制,客户端带宽限制,无缓冲上传文件,SS...

2018-03-14 21:07:06 10297

原创 Yii2基本概念之——配置(Configurations)

在Yii中创建新对象或者初始化已经存在的对象广泛的使用配置,配置通常包含被创建对象的类名和一组将要赋值给对象的属性的初始值,这里的属性是Yii2的属性。还可以在对象的事件上绑定事件处理器,或者将行为附加到对象上。从而在定义了对象的初始值的同时,充分规定对象的运行时的动态特性。以下代码中的配置被用来创建并初始化一个数据库连接:$config = [ 'class' => '...

2018-03-13 22:47:48 1132

原创 Nginx负载均衡与反向代理——基础功能

熟悉Nginx的小伙伴都知道,Nginx是一个非常好的负载均衡器。除了用的非常普遍的Http负载均衡,Nginx还可以实现Email,FastCGI的负载均衡,甚至可以支持基于Tcp/UDP协议的各种应用的负载均衡(比如MySQL,DNS等)。这些功能分别在Nginx的不同模块实现了。负载均衡可以看成Nginx对外提供的一种服务。我们先来简单介绍下Nginx负载均衡的基本的功能。并且,我们在下...

2018-03-12 20:11:30 197

原创 忘记时间戳的存在——Yii2超实用的自动更新时间戳的Behavior(改进版)

本文改进了Yii2中内置行为类TimestampBehavior,使得时间戳字段(如created_at,updated_at) 完全自己更新,方便得让你忘记它们的存在。Yii2的内置行为类TimestampBehavior几乎成了各种介绍Yii2行为的常客。各种讲解行为的文章中都少不了它的身影,它甚至登堂入室,被Yii2官方文档采用了。它的标准用法——虽然大家都知道——但我也贴出来:...

2018-03-08 00:47:24 2335

原创 Yii2基本概念之——行为(Behavior)

使用行为(behavior)可以在不修改现有类的情况下,对类的功能进行扩充。通过将行为绑定到一个类,可以使得类具有行为本身所具有的属性和方法,就好像是类本来就具有的这些属性和功能一样。好的代码设计,必须要同时满足可复用性、可维护性和可扩展性。设计原则中有一条非常重要的一条:类应该对扩展开放,对修改关闭。改变原有代码往往会带来潜在风险,因此我们尽量减少修改的行为。我们的目标是允许类容易扩展,在不...

2018-03-02 23:15:49 4788

原创 Yii2中实用的helpler函数

借鉴Laravel5.2+的一些helper函数,Yii2在helper函数中也可以实现很多类似的有用函数。 比如,新建一个helper.php,放在某个目录下,比如./config/下。在web.php配置文件中引入:helper里面可以定义一些常用的函数。app()Laravel的app()函数相当于Yii2的Yii:$app + Yii::$container,用来自动解析

2018-02-04 22:20:01 2109

原创 Yii2基本概念之——事件(Event)

事件无非就是这个过程之中一些有意义的“点”。这些点是人为做的设定,比如插入数据库数据,那么校验前、后,插入前、后就可能是几个有意义的时间节点,把这些节点看成一个个的事件,就更加便于我们去理解这整个过程。

2018-02-04 21:24:02 2400

原创 Nginx的虚拟服务器域名配置

虚拟服务器名(server name)是通过指令server_name来指定的。在《 Nginx是如何处理Request的?》一节中,我们讲到nginx分两步来匹配过来的Request请求:1.选择server2.选择location在第1步中,其实也分两步:1).匹配port2).匹配server_name这一节就来聊聊nginx是如何

2018-01-16 09:56:36 524

原创 Yii2基本概念之——属性(Property)

学习任何一门学问,往往都是从起基本的概念学起。万丈高楼平地起,这些基本概念就是高楼的基石,必须做详尽的分析。我们知道,Yii2是一款脉络清晰的框架,理顺了基础的概念和基本功能,学习更高级和复杂的功能就容易多了。Yii2是一款纯面向对象的框架,它对类的功能做了扩充:PHP类的功能分为属性和方法,而Yii2定义了类的三个功能:属性(property),行为(behavior)和事件(event)。

2018-01-16 00:06:36 1121 2

原创 Nginx是如何处理Request的?

nginx是如何匹配过来的请求,然后做处理的呢?这个匹配的过程可以分为两步:1.选择server2.选择location 选择serverserver name的匹配加入Nginx的配置文件有这么几项:server {    listen      80;    server_name example.org ww

2018-01-12 19:39:03 1740

原创 《深入解剖Yii2框架》前言

通过针对Yii2框架的分享,我希望能为大家达到以下两个目标:第一,从内涵上说——通过对Yii2的解剖,深入理解这个框架的编程思想,掌握各个重要组成部分的构成和用法第二,从外延上说——通过对这款典型框架的解剖,能举一反三的了解其他PHP框架甚至整个服务端所涉及的重要知识点和涉及内容

2018-01-11 10:05:48 1638 2

原创 利用线上yum源,制作本地yum源

利用线上yum源,制作本地yum源对于CentOS系列的操作系统而言,yum是一个必不可少的rpm包管理工具,它的宗旨是自动化的升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。 一个yum源又叫做yum仓库,既可以是http或者ftp站点,也可以是在本地。我们今天来讨论下yum源在本地的情况。问题场景yum源安装时会有本地源和网络源,我们知道在联网的情况下的问题非常容

2017-12-13 22:54:32 1101

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除