5 荒古

尚未进行身份认证

个人网站:https://haxianhe.com/

等级
TA的排名 4k+

PHP 常见概念

MVCMVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。视图:视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash...

2019-11-09 18:02:26

Session 原理解析

Session存在的意义,估计每个做web开发的人都是了解的,就为了解决HTTP是无状态协议所带来的问题,不多说了。这里主要想说的是服务端与客户端是如何利用session进行交互的。工作流程先看下面这幅流程图:当用户第一次访问站点时,PHP会用session_start()函数为用户创建一个session ID,这就是针对这个用户的唯一标识,每一个访问的用户都会得到一个自己独有的sessi...

2019-11-09 17:53:42

CGI、FastCGI和PHP-FPM关系解析

在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM、FastCGI和CGI 这几个概念。如果对它们一知半解,很难搭建出高性能的服务器。接下来我们就以图形方式,解释这些概念之间的关系。基础在整个网站架构中,Web Server(如Apache)只是内容的分发者。举个栗子,如果客户端请求的是 index.html,那么Web Server会去文件系统中找到这个文件,发送给浏览器,这里...

2019-11-09 17:48:38

PHP底层的运行机制与原理

记得我刚开始学习PHP的时候,许多面试官会经常问我PHP是什么,那时的标准回答是PHP是一种弱类型动态脚本编程语言,开源,免费,是超文本预处理器的缩写。这只是很浅的解释,PHP对我来说是一个工具,是我手里的一把锤子,虽然这把锤子时常被调侃为两边都是起钉器的锤子。使用「现实世界」中的任何工具时,如果理解这个工具的运作原理,那么你会更加得心应手的使用这个工具。应用开发也是这样。当你明白你的开发工具...

2019-11-09 12:25:28

Nginx核心模块之location规则浅析

location 规则匹配规则先匹配前缀字符串,然后记住最长匹配。再匹配正则,如果正则的location中有匹配上的则返回第一个匹配上的正则,否则返回上一步中记住的最长前缀匹配。当前缀字符串使用 =, ^~ 修饰的时候且匹配成功时直接返回结果,不进行正则匹配。修饰符匹配前缀字符串= 表示精确匹配。只有请求的url路径与后面的字符串完全相等时,才会命中。^~ 表示如果该符号后面...

2019-11-03 09:16:58

分布式系统唯一ID生成方案浅析

分布式系统唯一ID生成方案浅析在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。业务ID需要满足的要求如下全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。趋势递增:在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用B-tree的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。单调递增:保证下一个ID一定大...

2019-10-12 21:27:15

系统设计和架构之基础

性能性能指标响应时间指某个请求从发出到收到响应消耗的时间。在对响应时间进行测试时,通常采用重复请求的方式,然后计算平均响应时间。吞吐量指单位时间内系统处理的请求数量。TPS:每秒事务数QPS:每秒查询数HPS:每秒HTTP请求数并发用户数指系统能同时处理的并发用户请求数量。性能优化Web 前端性能优化浏览器访问优化减少 http 请求使用浏览器缓存启用压缩...

2019-09-23 18:53:36

MySQL总结之InnoDB事务实现

我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎的事务处理来理解事务、锁、隔离级别、MVCC、Next-Key Locks等概念。事务概念事...

2019-08-12 22:39:33

MySQL总结之索引

索引是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但当数据量逐渐增大时,性能则会急剧下降。在 MySQL 中,存储引擎用类似的方法使用索引,其先在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。索引可以包含一个或多个列的值。如果索引包含多...

2019-08-11 05:53:49

MySQL总结之数据类型

整数类型有两种类型的数字:整数和实数。如果存储整数,可以使用这几种整数类型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT。分别使用8,16,24,32,64位存储空间。它们可以存储的值的范围从-2^(N-1)到2(N-1),其中N是存储空间的位数。整数类型有可选的UNSIGNED属性,表示不允许负值,这大致可以使正数的上限提高一倍。例如TINYINT UNSIGN...

2019-08-07 20:15:45

MySQL总结之MySQL架构

MySQL 最重要、最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理及其他系统任务和数据的存储/提取相分离。这种处理和存储分离的设计可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式。MySQL 的逻辑架构 MySQL 逻辑架构图最上层的服务并不是MySQL 所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构。比如连接处...

2019-08-06 15:58:27

复杂度分析:如何分析、统计算法的执行效率和资源消耗?

我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?这里就要用到我们今天要讲的内容:时间、空间复杂度分析。其实,只要讲到数据结构与算法,就一定离不开时间、空间复杂度分析。复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容基本上就掌握了一半...

2019-07-27 21:04:52

yaf 框架学习

Yaf 是什么Yaf,全称 Yet Another Framework,是一个C语言编写的、基于PHP扩展开发的PHP框架。相比于一般的PHP框架,它更快,快到被誉为最快的PHP开发框架。它提供了Bootstrap、路由、分发、视图、插件功能。注:百度的odp框架,以及我们公司的PIE框架都是基于yaf开发的。Yaf 的优点用C语言开发的PHP框架, 相比原生的PHP, 几乎不...

2019-07-25 17:53:59

如何在phpstorm中查看yaf框架源码

1.到github下载yaf框架的doc下载链接https://github.com/haxianhe/php-yaf-doc.git2.解压zip包3.phpstrom配置打开phpstorm开发工具,找到Preferences…->php->Include Path:4.点击下方的+号,将上面解压后的目录添加到Include Path点击保存:5.验证一下配置是...

2019-07-25 16:42:05

积累——读《把时间当作朋友》

引言最近两周读了李笑来老师的《把时间当作朋友》这本书,我最开始听说李笑来老师是源自于他在得到app上的《财富自由之路》专栏,惭愧的是一直受困于资金,还没有买。这本书中,就我个人而言对我最有启发的有四点:一是作者开篇点明的本书的主旨“成长只有一条路——积累”。二是作者介绍了一些帮助自己更好的去利用时间的一些自我管理方法三是作者在书中对学习的鼓励以及对学习这件事本身的看法,最重要的是对自学...

2018-11-27 14:04:34

如何使用Go编程

这是一篇我摘自go官方文档的文章,讲一下为什么要把这篇文章单独拎出来。首先,这是一篇将我过去的学习方式同以后的学习方式区分开来的文章。其实,一直都知道学习一门技术最好的方式是看官方文档。但是,老实说,这是我除了PHP手册之外看的最入迷的一篇文档。其次,我学习go也有几天了,前几天一直看的是《Go 语言编程》这本书对语法、特性什么介绍的特别好,但总感觉操作性不强,让人索然乏味。基于以上原因,我选择...

2018-09-22 20:19:33

GO 语言学习路径与资料分享

GO 语言学习路径与资料分享本人最近刚刚经历了痛苦的入门过程,现想将自己的学习过程&学习资料整理、分享给有需要的人。最后更新时间:2018年9月15日Go 学习路径这里引用谢大在知乎上说的一句话来总结一下怎么学习一门新的语言:学习一门语言最重要的就是做到三点,第一看基础知识,第二学习抄代码,第三学习写代码。基础知识官方文档(中文版):http://docscn.stud...

2018-09-22 20:17:55

PHPStorm添加第三方库的代码自动补全

1.下载第三方库2.在PhpStrom中添加第三方库在你项目的External Libraries上右键->Configure PHP Include Path然后选择那个文件夹(phplib)就可以了done关注我:Github:https://github.com/haxianhe个人博客:https://haxianhe.com/CSDN 博客:https://b...

2018-09-22 19:57:32

PHP:对象赋值的原理

题目阅读下面PHP代码,并选择输出结果( )<?php class A{ public $num=100; }$a = new A();$b = $a;$a->num=200;echo $b->num;?>100200没有输出程序报错!答案是2.解析在PHP中,基本类型变量放在栈中,对象、数组放在堆中,对象中真正的内容是存在堆...

2018-09-22 19:55:31

PHP:unset操作对&变量的影响

题目$a="hello";$b= &$a;unset($b);$b="world";echo $a;的结果是什么?( )helloworldNULLunset答案是1解析:可以把“变量”看成一个容器,“变量名”相当于这个容器的标签unset相当于把这个标签名给撕了,但是只要这个盒子还有标签名贴着,那就不会被PHP的垃圾回收机制给回收掉!所以除非把所有标签...

2018-09-22 19:49:26

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。