• PHP回顾--堆排序
  • 一、定义堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。二、排序演示给定一个列表array=[16,7,3,20,17,8],对其进行堆排序。首先根据该数组元素构建一个完全二叉树,得到然后需要构造初始堆,则从最后一个非叶节点开始调整,调整过程如下:第一步: 初始化大顶堆(从最后一个有子节点开始往上调整最大堆)20和16交换后导致16不满足堆的性质,因此需重新调整这样...
  •  2019-04-12  |    程成  |    853  |    0  |    PHP  |   PHP  排序    
  • PHP回顾--归并排序
  • 一、定义归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。二、排序演示归并操作归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。如 设有数列{6,202,100,301,38,8,1}初始状态:6,202,100,301,38,8,1...
  •  2019-04-10  |    程成  |    873  |    0  |    PHP  |   PHP  排序  归并  
  • PHP回顾--选择排序
  • 一、定义选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。二、排序演示三、性能分析时间复杂度选择排序的交换操作介于 0 和 (n - 1) 次之间。选择排序的比较操作为 n (n - 1) / 2 次之间。选择排序的赋值操作介于 0 和 3 (n...
  •  2019-04-10  |    程成  |    847  |    0  |    PHP  |   PHP  排序  选择  
  • 项目中常用的19条 MySQL 优化
  • 原文地址:https://segmentfault.com/a/1190000012155267声明一下:下面的优化方案都是基于 “ Mysql-索引-BTree类型 ” 的一、EXPLAIN做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式key_len...
  •  2019-04-09  |    程成  |    1103  |    1  |    数据库  |   MySQL  优化  数据库  项目  
  • Git 基本常用命令有哪些
  • Git基本常用命令如下:   mkdir:         XX (创建一个空目录 XX指目录名)   pwd:          显示当前目录的路径。   git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。   git add XX...
  •  2019-04-08  |    程成  |    731  |    0  |    其他  |   git  版本库  命令  
  • 手把手教你使用 Git
  • 一:Git是什么?       Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别?      SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了...
  •  2019-04-08  |    程成  |    728  |    0  |    其他  |   git  版本库  pull  冲突  
  • 如何防止定时脚本重复执行( Linux crontab)
  • 场景好多系统中会用到邮件系统,我们假设有一个 PHP 脚本用来发送邮件。使用 Linux cron 每分钟执行一次我们暂时不引入队列系统,其实使用队列处理此方式更优。我们得到下面的基本配置* * * * * php /home/app/email.php问题分析和解决如果这个邮件服务出现异常,进程僵死怎么办?假设由于未知因素, email.php 脚本一直执行,没有退出。极端的情况,进入一个 while 死循环。这下倒好,原来说好的一分...
  •  2019-04-02  |    程成  |    1534  |    0  |    服务器  |   flock   crontab  Linux  
  • 二叉树的三种遍历方式
  • 一、先序遍历访问顺序:根结点-->左子树-->右子树先序遍历:(1)访问根结点;(2)先序递归遍历左子树;(3)先序递归遍历右子树;(注:每个节点的分支都遵循上述的访问顺序,体现“递归调用”)先序遍历结果:A BDFE CGHI思维过程:(1) 先访问根节点A,(2) A分为左右两个子树,因为是递归调用,所以左子树也遵循“先根节点-再左-再右”的顺序,所以访问B节点,(3) 然后访问D节点,(4) 访问F节点的时候有分支,同样遵循“先根节点-再左--再右”的顺序,(5) 访问E节点,...
  •  2019-03-05  |    程成  |    977  |    0  |    其他  |   二叉树  遍历  访问  结构  
  • PHP回顾--插入排序(包含希尔排序)
  • 一、定义插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,是一种稳定的排序方法。希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序效果图上面解释来源于百度百科。先抛出个结论:你可以将希尔排序理解为 预排序的插入排序,后面会解释两者具体的关系。二、排序演示1、插...
  •  2019-03-01  |    程成  |    746  |    0  |    PHP  |   PHP  排序  插入  希尔  
  • PHP回顾--快速排序
  • 一、定义基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。通俗说就是数组中找出一个随机数(一般拿数组第一个数),把它插入一个位置,让它左边的数都比它小,右边的数都比它大,这样就将一个数组分成了两个字数组。然后再根据同样的方法递归,直到不能分解为止,这个时候数组就已经排好序了。二、排序演示下面演示了用第一个数字12将数组分成了两个数组。下...
  •  2019-03-01  |    程成  |    872  |    1  |    PHP  |   PHP  排序  快速  
  • MySQL 常用两种存储引擎选择 (MyISAM 和 InnoDB)
  • InnoDB和MyISAMInnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为: MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。所以从宏观来讲,事务数据库关注细节,而数据仓库关注高层次的聚集,所以,InnoDB更适合作为线上的事务处理,而MyISAM更适合作为ROLA...
  •  2019-02-27  |    程成  |    885  |    1  |    数据库  |   MySQL  存储引擎  MyISAM  InnoDB  
  • MySQL几种存储引擎介绍,以及适用场景
  • 一、存储引擎Isam该引擎在包括MySQL 5.1及其以上版本的数据库中不再支持。该引擎在读取数据方面速度很快,而且不占用大量的内存和存储资源;但是 Isam 不支持事务处理、不支持外键、不能够容错、也不支持索引。Berkeley该引擎在包括MySQL 5.1及其以上版本的数据库中不再支持。该存储引擎支持COMMIT和ROLLBACK等事务特性。CSV使用该引擎的MySQL数据库表会在MySQL安装目录data文件夹中的和该表所在数据库名相同的目录中生成一个.CSV文件(所以,它可以将CSV类型...
  •  2019-02-27  |    程成  |    1143  |    0  |    数据库  |   MySQL  存储引擎  数据库  
  • MySQL 外键约束 FOREIGN_KEY_CHECKS 启动和关闭
  • 当我导出表时,看见了下面两句SQL,明显 FOREIGN_KEY_CHECKS 是外键校验的意思。SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; ---------------------这里是你的SQL语句----------------------- SET FOREIGN_KEY_CHECKS = 1;但是为什么要先关闭外键约束,再开启外键约束。是因...
  •  2019-02-27  |    程成  |    1541  |    0  |    数据库  |   外键  MySQL  数据库