硬核项目经理

【PHP数据结构】完全二叉树、线索二叉树及树的顺序存储结构
【PHP数据结构】完全二叉树、线索二叉树及树的顺序存储结构

在上篇文章中,我们学习了二叉树的基本链式结构以及建树和遍历相关的操作。今天我们学习的则是一些二叉树相关的概念以及二叉树的一种变形形式。

2021-07-29 04:51:11阅读全文

【PHP数据结构】队列的相关逻辑操作
【PHP数据结构】队列的相关逻辑操作

在逻辑结构中,我们已经学习了一个非常经典的结构类型:栈。今天,我们就来学习另外一个也是非常经典的逻辑结构类型:队列。相信不少同学已经使用过 redis 、 rabbitmq 之类的缓存队列工具。其实,数据库、程序代码,这些都可以实现队列的操作,就和栈一样,队列也是有其特定的规则,只要符合这个规则,它

2021-07-27 19:01:52阅读全文

【PHP数据结构】栈的相关逻辑操作
【PHP数据结构】栈的相关逻辑操作

对于逻辑结构来说,我们也是从最简单的开始。堆栈、队列,这两个词对于大部分人都不会陌生,但是,堆和栈其实是两个东西。在面试的时候千万不要被面试官绕晕了。堆是一种树结构,或者说是完全二叉树的结构。而今天,我们主要讲的就是这个栈的应用。

2021-07-28 22:02:46阅读全文

【PHP数据结构】二叉树的遍历及逻辑操作
【PHP数据结构】二叉树的遍历及逻辑操作

上篇文章我们讲了许多理论方面的知识,虽说很枯燥,但那些都是我们今天学习的前提,一会看代码的时候你就会发现这些理论知识是多么地重要了。首先,我们还是要说明一下,我们学习的主要内容是二叉树,因为二叉树是最典型的一种树的应用,不管是考试还是面试,它都是必知必学的内容。

2021-07-28 19:24:10阅读全文

【PHP数据结构】栈和队列的应用
【PHP数据结构】栈和队列的应用

通过栈和队列的学习,我们似乎会感觉到其实数据结构还是非常简单的嘛。当然,这只是一个开始,我们从顺序表、链表开始,到现在的栈和队列,其实都是为了将来在铺路。在树和图的遍历算法中,都可以见到栈和队列的身影。在这里,我们先简单的看看栈和队列的一些实际应用。

2021-07-29 11:20:55阅读全文

【PHP数据结构】图的概念和存储结构
【PHP数据结构】图的概念和存储结构

随着学习的深入,我们的知识也在不断的扩展丰富。树结构有没有让大家蒙圈呢?相信我,学完图以后你就会觉得二叉树简直是简单得没法说了。其实我们说所的树,也是图的一种特殊形式。

2021-07-28 23:48:11阅读全文

【PHP数据结构】图的存储结构
【PHP数据结构】图的存储结构

图的概念介绍得差不多了,大家可以消化消化再继续学习后面的内容。如果没有什么问题的话,我们就继续学习接下来的内容。当然,这还不是最麻烦的地方,因为今天我们只是介绍图的存储结构而已。

2021-07-29 10:57:39阅读全文

【PHP数据结构】树和二叉树
【PHP数据结构】树和二叉树

树的概念其实非常地广泛,也非常地常见,大家见到这个词千万不要惊慌,因为真的每天你都能见到树结构在我们生活中的应用。比如说公司的组织结构:

2021-07-28 22:12:50阅读全文

【PHP数据结构】图的遍历:深度优先与广度优先
【PHP数据结构】图的遍历:深度优先与广度优先

在上一篇文章中,我们学习完了图的相关的存储结构,也就是 邻接矩阵 和 邻接表 。它们分别就代表了最典型的 顺序存储 和 链式存储 两种类型。既然数据结构有了,那么我们接下来当然就是学习对这些数据结构的操作啦,也就是算法的部分。不管是图还是树,遍历都是很重要的部分,今天我们就先来学习最基础的两种图的遍

2021-07-29 20:03:33阅读全文

【PHP数据结构】图的应用:最小生成树
【PHP数据结构】图的应用:最小生成树

在学习了图的基本结构和遍历方式后,我们再继续地深入学习一些图的基本应用。在之前的数据结构中,我们并没接触太多的应用场景,但是图的这两类应用确是面试或考试中经常出现的问题,而且出现的频率还非常高,不得不来好好说一说。

2021-07-30 20:40:09阅读全文

【PHP数据结构】图的应用:最短路径
【PHP数据结构】图的应用:最短路径

上篇文章的最小生成树有没有意犹未尽的感觉呀?不知道大家掌握得怎么样,是不是搞清楚了普里姆和克鲁斯卡尔这两种算法的原理了呢?面试的时候如果你写不出,至少得说出个大概来吧,当然,如果你是要考研的学生,那就要深入的理解并且记住整个算法的代码了。

2021-07-31 20:14:52阅读全文

【PHP数据结构】线性查找与二分查找
【PHP数据结构】线性查找与二分查找

欢迎来到查找的世界,在学习完各种数据结构之后,总算走到了这一步,不知道大家有什么感想呢?反正我是边学边忘,现在让我去说说图的那几个算法还是在蒙圈的状态中。不过学习嘛,就是一步一步的来,暂时搞不懂的东西其实也是可以放一放的。打破砂锅和坚持不懈当然是好的品德,但有些东西可能真的是需要时间去消化的,甚至可

2021-08-01 23:00:20阅读全文

【PHP数据结构】散列表查找
【PHP数据结构】散列表查找

上篇文章的查找是不是有意犹未尽的感觉呢?因为我们是真真正正地接触到了时间复杂度的优化。从线性查找的 O(n) 直接优化到了折半查找的 O(logN) ,绝对是一个质的飞跃。但是,我们的折半查找最核心的一个要求是什么呢?那就是必须是原始数据是要有序的。这可是个麻烦事啊,毕竟如果数据量很庞大的话,排序又

2021-08-03 00:02:39阅读全文

【PHP数据结构】插入类排序:简单插入、希尔排序
【PHP数据结构】插入类排序:简单插入、希尔排序

总算进入我们的排序相关算法的学习了。相信不管是系统学习过的还是没有系统学习过算法的朋友都会听说过许多非常出名的排序算法,当然,我们今天入门的内容并不是直接先从最常见的那个算法说起,而是按照一定的规则一个一个的介绍。

2021-08-03 14:14:16阅读全文

【PHP数据结构】交换排序:冒泡、快排
【PHP数据结构】交换排序:冒泡、快排

上篇文章中我们好好地学习了一下插入类相关的两个排序,不过,和交换类的排序对比的话,它们真的只是弟弟。甚至可以说,在所有的排序算法中,最出名的两个排序都在今天要介绍的交换排序中了。不管是冒泡、还是快排,都是面试中的常见排序算法,常见到什么地步呢?但凡学习数据结构和算法,甚至是你完全没有学习过,也多少都

2021-08-05 06:25:39阅读全文

【PHP数据结构】其它排序:简单选择、桶排序
【PHP数据结构】其它排序:简单选择、桶排序

这是我们算法正式文章系列的最后一篇文章了,关于排序的知识我们学习了很多,包括常见的冒泡和快排,也学习过了不太常见的简单插入和希尔排序。既然今天这是最后一篇文章,也是排序相关的最后一篇,那我们就来轻松一些,再来学习两个非常简单的排序算法。

2021-08-05 11:49:41阅读全文

学习PHP中的iconv扩展相关函数
学习PHP中的iconv扩展相关函数

想必 iconv 这个扩展的相关函数大家多少都接触过,做为 PHP 的默认扩展它已经存在了很久,也是我们在操作字符编码时经常会使用的函数。不过除了 iconv() 这个函数外,你还知道它的其它函数吗?今天,我们就来学习一下 iconv 扩展中的各种好玩的函数。

2021-08-08 13:43:37阅读全文

PHP中一个好玩的性别判断扩展
PHP中一个好玩的性别判断扩展

今天我们来学习的一个扩展同时它也是非常小众的一个扩展,其实说白了,或许是根本没什么人用过得扩展。当然,我们也只是出于学习的目的来看看这个扩展到底是什么东西,有什么好玩的地方。

2021-08-08 11:37:19阅读全文

【PHP数据结构】PHP数据结构及算法总结
【PHP数据结构】PHP数据结构及算法总结

断断续续地把这个系列写完了,就像上一个设计模式一样,算法这个系列也是前前后后写了将近有一年的时间。当然,都是在业余或者晚上的时间写完的,所以进度如此地慢。更主要的是,既然要写,总得要自己先弄懂吧,对于一个没上过高中的人来说,这还真的是有点困难。

2021-08-08 17:51:53阅读全文

PHP中国际化的字符串比较对象
PHP中国际化的字符串比较对象

在 PHP 中,国际化的功能非常丰富,包括很多我们可能都不知道的东西其实都非常有用,比如说今天要介绍的这一系列的字符排序和比较的功能。

2021-08-10 00:12:12阅读全文

PHP中针对区域语言标记信息的操作
PHP中针对区域语言标记信息的操作

相信大家对 zh_CN 这个东西绝对不会陌生,不管是 PHP 中,还是在我们的网页上,都会见到它的身影。其实这就是指定我们的显示编码是什么国家或者地区的,使用何种语言。对于这种区域语言的标记来说,PHP 中也有很多好玩的内容。今天,我们要学习的 Locale 类就是操作区域语言相关内容的,它无法被实

2021-08-11 19:35:05阅读全文

学习PHP中的信息格式化操作
学习PHP中的信息格式化操作

在国际化组件的学习过程中,我们已经接触过了 NumberFormatter 这种数字的格式化操作,它可以让我们将数字转换成标准格式、货币、本地语言等形式。今天我们来学习的是另一种专门用于信息格式化的类 MessageFormatter ,它主要是针对字符串的操作。

2021-08-12 13:48:06阅读全文

学习PHP中的国际化日期格式化操作
学习PHP中的国际化日期格式化操作

对于国际化功能来说,日期相关的格式化操作也是一块重头戏,毕竟不同的时区,不同的国家对于日期的表示方式都会有些不同。今天我们主要来学习的就是国际化地表示日期相关的信息内容。

2021-08-15 23:33:01阅读全文

学习PHP中有趣的字符集国际化验证功能
学习PHP中有趣的字符集国际化验证功能

今天的内容非常简单,不过也很有趣。不知道大家有没有经历过这样的事情,就是在某些字体下,0 和 O 不好区分,1 和 l 也是很难看清楚。当然,现在大部分的编辑器和 IDE 的默认字体都是会选择那些比较好区分这些相似字符的,比如给 0 中间加上个斜杠或者一个点之类的。在 PHP 中也有这样的函数能够帮

2021-08-16 06:27:34阅读全文

PHP中的国际化日历类
PHP中的国际化日历类

在 PHP 的国际化组件中,还有一个我们并不是很常用的跟日期相关的操作类,它就是日历操作类。说是日历,其实大部分还是对日期时间的操作,一般也是主要用于日期的格式化和比较之类的。但是通常我们直接使用 date 相关的函数或者 DateTime 相关的类操作日期相关的功能,反而比这套日历的功能更方便灵活

2021-08-15 22:56:43阅读全文

简单入门PHP中的多字节字符串操作
简单入门PHP中的多字节字符串操作

什么是多字节的字符串操作呢?其实不少的同学可能都已经使用过了,但我们还是要从最基础的问题说起。

2021-08-16 19:44:24阅读全文

使用PHP获取图像文件的EXIF信息
使用PHP获取图像文件的EXIF信息

在我们拍的照片以及各类图像文件中,其实还保存着一些信息是无法直观看到的,比如手机拍照时会有的位置信息,图片的类型、大小等,这些信息就称为 EXIF 信息。一般 JPG 、 TIFF 这类的图片文件都会有这样的信息。EXIF 其实就是专门为这种数码照片所定制的,专门用于记录数码照片的属性信息和拍摄数据

2021-08-17 23:39:28阅读全文

一起学习PHP中GD库的使用(一)
一起学习PHP中GD库的使用(一)

又到了一个大家非常熟悉的库了,对于图像图形的处理来说,GD 库是 PHPer 们绕不过去的一道坎。从很早很早的 CMS 或者 Discuz 时代,各类开源软件在安装的时候就会明确地指出 GD 库是它们必备的一个扩展。当然,在现在的 PHP 版本中,相信大家也不会在编译的时候忽略掉这个库。不管你是为图

2021-08-18 12:43:17阅读全文

一起学习PHP中GD库的使用(二)
一起学习PHP中GD库的使用(二)

在日常的开发过程中,GD 库最常用的功能就是帮我们对图片进行一些处理,当然,除了处理已有的图片之外,它也可以直接来画图,就像我们最常见的图片验证码。今天的内容主要就是和画图有关,所以最后我们也会做一个非常简单的图片验证码的例子。

2021-08-20 03:39:11阅读全文

使用ImageMagick操作gif图
使用ImageMagick操作gif图

上篇文章我们已经学习了 GraphicsMagick 中的许多函数,也说过 GraphicsMagick 是 ImageMagick 的一个分支,所以他们很多的函数都是一样的使用方式和效果,相似的内容我们也就不再多说了,感兴趣的朋友可以直接查阅官方文档。

2021-08-24 04:15:57阅读全文

一起学习PHP中GD库的使用(三)
一起学习PHP中GD库的使用(三)

上篇文章我们已经学习了一个 GD 库的应用,那就是非常常用的制作验证码的功能。不过在现实的业务开发中,这种简单的验证码已经使用得不多了,大家会制作出更加复杂的验证码来使用。毕竟现在的各种外挂软件已经能够轻松地破解这种简单的图片验证码了。当然,我们也可以简单地对他进行变形,比如使用中文然后按顺序点击之

2021-08-24 04:48:14阅读全文

PHP中的IMAP扩展简单入门
PHP中的IMAP扩展简单入门

对于邮件处理来说,大家比较熟悉的应该是 POP3 、 SMTP 这类的协议,而今天我们介绍的 IMAP 其实也是非常常用的一种邮件处理协议。它和 POP3 比较类似,都是以接收处理邮件为主。不过相对于 POP3 来说,IMAP 在本地的操作都会直接同步到线上的邮件服务器, POP3 一般不会直接地进

2021-08-23 18:31:00阅读全文

学习PHP中好玩的Gmagick图像操作扩展的使用
学习PHP中好玩的Gmagick图像操作扩展的使用

在 PHP 的图像处理领域,要说最出名的 GD 库为什么好,那就是因为它不需要额外安装的别的什么图像处理工具,而且是随 PHP 源码一起发布的,只需要在安装 PHP 的时候添加上编译参数就可以了。

2021-08-23 17:54:09阅读全文

学习PHP中的任意精度扩展函数
学习PHP中的任意精度扩展函数

今天来学习的是关于数学方面的第一个扩展。对于数学操作来说,无非就是那些各种各样的数学运算,当然,整个程序软件的开发过程中,数学运算也是最基础最根本的东西之一。不管你是学得什么专业,到最后基本上都会要学习数据结构与算法,而算法其实就是研究的如何利用数学来优化各种排序和查找能力。PHP 在底层已经帮我们

2021-08-25 04:53:18阅读全文

PHP中操作任意精度大小的GMP扩展学习
PHP中操作任意精度大小的GMP扩展学习

对于各类开发语言来说,整数都有一个最大的位数,如果超过位数就无法显示或者操作了。其实,这也是一种精度越界之后产生的精度丢失问题。在我们的 PHP 代码中,最大的整数非常大,我们可以通过 PHP_INT_MAX 来查看。不过,当整数超过一定的位数之后,就会使用科学计数法来显示了,这个可不是我们想要的结

2021-08-25 23:29:17阅读全文

数学相关函数在PHP中的应用简介
数学相关函数在PHP中的应用简介

对于数学计算来说,最常见的其实还是我们使用各种操作符的操作,比如说 +加、-减 之类的。当然,PHP 中也为我们提供了一些可以方便地进行其他数学运算的操作函数。这些函数都属于 Math 扩展。这个扩展是默认包含在 PHP 源码中的,不需要额外的安装,也不需要在编译的时候有什么特别的参数,都是直接可以

2021-08-30 03:14:58阅读全文

PHP中的一些杂项函数学习
PHP中的一些杂项函数学习

今天来学习的这些杂项函数在官方文档中都是放在一个杂项扩展中的,其实这些函数都并不是什么什么特别的扩展,也不需要安装什么东西就可以使用,它们就是一些简单的功能函数而已。当然,其中不少内容也是我们经常会使用的,这里就带大家一起再学习学习。

2021-09-15 03:13:11阅读全文

深入学习PHP中的JSON相关函数
深入学习PHP中的JSON相关函数

在我们当年刚刚上班的那个年代,还全是 XML 的天下,但现在 JSON 数据格式已经是各种应用传输的事实标准了。最近几年开始学习编程开发的同学可能都完全没有接触过使用 XML 来进行数据传输。当然,时代是一直在进步的,JSON 相比 XML 来说,更加地方便快捷,可读性更高。但其实从语义的角度来说,

2021-09-15 14:21:06阅读全文

PHP的SPL扩展库(一)数据结构
PHP的SPL扩展库(一)数据结构

SPL 库也叫做 PHP 标准库,主要就是用于解决典型问题的一组接口或类的集合。这些典型问题包括什么呢?比如我们今天要讲的数据结构,还有一些设计模式的实现,就像我们之前讲过的观察者模式相关的接口在 SPL 库中都有提供。话说回来,在 PHP 中,由于语言的特点,其实很多数据结构都和我们用 C 语言实

2021-09-30 04:06:13阅读全文

PHP的SPL扩展库(二)对象数组与数组迭代器
PHP的SPL扩展库(二)对象数组与数组迭代器

在 PHP 中,数组可以说是非常强大的一个数据结构类型。甚至我们可以把 PHP 中的数组说成是 PHP 的灵魂,而且这么说一点都不夸张。相比 Java 之类的静态语言来说,PHP 的数组没有长度限制,没有键值的类型限制,非常地灵活方便。数组是一种基本的结构类型,它和 Int 、String 这一类的

2021-10-12 12:21:37阅读全文