01 2021 档案
摘要:开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数的使用使得这些经典的难题可以被轻松的解决。目前在 MSSQLServer、Oracle、DB2 等主流
阅读全文
摘要:一、单表,多表查询优化: 多表查询索引优化: 左链接 索引建在右表 右链接 索引建在左表 JOIN 语句优化: 尽可能的减少Join语句中,NestedLoop的循环总次数:“永远用小结果集驱动大的结果集” 优先优化NestedLoop的内层循环。 保证Join语句中被驱动表中的Join条件字段已经
阅读全文
摘要:一、索引性能分析: 1、Mysql Query Optimize(mysql查询化分析器) MySQL中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供他认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为的最优,这
阅读全文
摘要:1)什么是索引: 索引是帮助mysql高效获取数据的数据结构, 索引的本质就是数据结构。(可以理解为排好序快速查找的数据结构) 结论:数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。
阅读全文
摘要:一、sql执行顺序 从这个顺序中我们不难发现,所有的 查询语句都是从from开始执行的,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。 第一步:首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表 vt1(选择相对小的表做基础表)。 第二步:
阅读全文
摘要:一、概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。 MySQL是一个关联数据库管理系统,将数据保存在不同的表中,而不是将所有的数据放在一个大的仓库内,这样增加了速度并提高了灵活性。 MySQL是开源的,所以不需要支付任何的费用。 MySQL支持
阅读全文
摘要:前言:以下是MySQL最基本的增删改查语句,很多IT工作者都必须要会的命令,也是IT行业面试最常考的知识点,由于是入门级基础命令,所有所有操作都建立在单表上,未涉及多表操作。 前提:在进行“增删改查”的操作之前,先建立一个包含数据表student的数据库(具体操作可以见MySQL之最基本命令): 1
阅读全文
摘要:一、库的基本用法创建数据库: #create database 数据库名 (字符集设置 default character set uft8); 删除数据库: #drop database 数据库名;(误删了可以参考mysql的数据恢复) 查看数据库 #show databases; 可以查看当前有
阅读全文
摘要:上一小节我们简单介绍了从PHP代码解析为抽象语法树的过程,这一节我们再介绍下从 抽象语法树->Opcodes 的过程。 语法解析过程的产物保存于CG(AST),接着zend引擎会把AST进一步编译为 zend_op_array ,它是编译阶段最终的产物,也是执行阶段的输入,后面我们介绍的东西基本都是
阅读全文
摘要:词法解析、语法解析 这一节我们分析下PHP的解析阶段,即 PHP代码->抽象语法树(AST) 的过程。 PHP使用re2c、bison完成这个阶段的工作: re2c: 词法分析器,将输入分割为一个个有意义的词块,称为token bison: 语法分析器,确定词法分析器分割出的token是如何彼此关联
阅读全文
摘要:PHP代码的编译 PHP是解析型高级语言,事实上从Zend内核的角度来看PHP就是一个普通的C程序,它有main函数,我们写的PHP代码是这个程序的输入,然后经过内核的处理输出结果,内核将PHP代码"翻译"为C程序可识别的过程就是PHP的编译。 那么这个"翻译"过程具体都有哪些操作呢? C程序在编译
阅读全文
摘要:常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变。常量默认为大小写敏感。通常常量标识符总是大写的。 常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。 PHP中的常量通过define()函数定义: def
阅读全文
摘要:2.4 全局变量 PHP中把定义在函数、类之外的变量称之为全局变量,也就是定义在主脚本中的变量,这些变量可以在函数、成员方法中通过global关键字引入使用。 function test() { global $id; $id++; } $id = 1; test(); echo $id; 2.4.
阅读全文
摘要:静态变量 PHP中局部变量分配在zend_execute_data结构上,每次执行zend_op_array都会生成一个新的zend_execute_data,局部变量在执行之初分配,然后在执行结束时释放,这是局部变量的生命周期,而局部变量中有一种特殊的类型:静态变量,它们不会在函数执行完后释放,当
阅读全文
摘要:2.2 数组 数组是PHP中非常强大、灵活的一种数据类型,它的底层实现为散列表(HashTable,也称作:哈希表),除了我们熟悉的PHP用户空间的Array类型之外,内核中也随处用到散列表,比如函数、类、常量、已include文件的索引表、全局符号表等都用的HashTable存储。 散列表是根据关
阅读全文
摘要:变量的内部实现 变量是一个语言实现的基础,变量有两个组成部分:变量名、变量值,PHP中可以将其对应为:zval、zend_value,这两个概念一定要区分开,PHP中变量的内存是通过引用计数进行管理的,而且PHP7中引用计数是在zend_value而不是zval上,变量之间的传递、赋值通常也是针对z
阅读全文
摘要:深入理解Zend执行引擎(PHP5) PHP:一种解释型语言 PHP经常会被定义为“脚本语言”或者是“解释型语言”,什么是“解释型语言”呢? 所谓“解释型语言”就是指用这种语言写的程序不会被直接编译为本地机器语言(native machine language),而是会被编译为一种中间形式(代码),
阅读全文
摘要:1.2 PHP的构成 源码下有几个主要的目录:SAPI、main、Zend、ext。 具体过程是:浏览器< >SAPI< >main< >Zend,Zend在解析的过程中会加载ext扩展 ●SAPI是PHP的应用接口层,为了适配不同的应用环境,是整个PHP框架最外层的一部分。最常用的SAPI是Cli
阅读全文
摘要:1.3 FPM 1.3.1 概述 FPM(FastCGI Process Manager)是PHP FastCGI运行模式的一个进程管理器,从它的定义可以看出,FPM的核心功能是进程管理,那么它用来管理什么进程呢?这个问题就需要从FastCGI说起了。 FastCGI是Web服务器(如:Nginx、
阅读全文
摘要:需求里结算首页需要按门店的首字母A-Z排序。我的数据结构原本是这样的: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
阅读全文
摘要:1,php闰年计算方法一:①、普通年能被4整除而不能被100整除的为闰年。(如2004年就是闰年,1900年不是闰年) ②、世纪年能被400整除而不能被3200整除的为闰年。(如2000年是闰年,3200年不是闰年) 1 2 3 4 5 6 7 8 9 10 11 12 $year=mt_rand(
阅读全文
摘要:在API返回前加入下面三行。 1 2 3 header("Access-Control-Allow-Origin:*"); //允许访问的来源域名 header('Access-Control-Allow-Methods:POST'); //响应类型: post,get等 允许的请求方式 heade
阅读全文
摘要:在做一个项目的时候发现,使用PHPexcel导出身份证号时,身份证格式会转成科学计数,那怎么处理呢?方法如下: 原来的代码: 1 $objPHPExcel->getActiveSheet()->setCellValue('E'.$v , $card_id); 身份证号码添加转义符 “\t”,如下 1
阅读全文