PHP 实现简单多路归并排序大文件

2021-07-07
阅读 2 分钟
3.2k
原文链接:何晓东 博客算是一道常见的面试题引来的,有些大厂也喜欢把这个题当做面试题。题目:例如有一个 1g 的文件,里面存放这乱序不唯一的数字,如果利用 100m 完成整体排序?实现过程就是:先将大文件逐行读取,每 10000 行为一组,然后排序后写入文件中,文件名称类似 t1.txt, t2.txt ... 这样的名称,直至读取和...

2021年php常见面试题

2021-05-08
阅读 1 分钟
3.8k
主要是2021年4-5月本人面试准备和面试中不断完善的知识点,更多是八股文,能应对基础知识类的考察,深入的研究需要日常的积累了,算法类的没有体现在文档中,基本算法类的能在LeetCode上看到,我遇到的除了一线大厂,其他不是很在乎算法的考核,能有思路或者学习过,就可以带过这个问题了。

一些不常用的PHP字符类型检测函数

2021-02-22
阅读 2 分钟
1.8k
主要是 Ctype 扩展所提供的函数,用来检测在当前的区域设定下,一个字符或者字符串,是否仅包含指定类型的字符。此类函数用来替代简单的正则验证,效率高于正则验证。参数为字符串,如果给出一个 -128 到 255 之间(含)的 int, 将会被解释为该值对应的 ASCII 字符 (负值将加上 256 以支持扩展 ASCII 字符). 其它整数将会...

LeetCode 从滑动窗口到初级动态规划解决一类题

2020-12-23
阅读 4 分钟
3.9k
原文链接:何晓东 博客剑指 Offer 57 - II. 和为s的连续正数序列输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1: {代码...} 示例 2: {代码...} 限制:1 <= target <= 10^5来源:力扣(LeetCode)链接:...

[LeetCode 面试题01.05]一次编辑

2020-12-16
阅读 2 分钟
2.4k
原文链接:何晓东 博客面试题 01.05. 一次编辑字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。 示例 1: {代码...} 示例 2: {代码...} 来源:力扣(LeetCode)链接:[链接]解题思路 1暴力破解,都从开始到结尾查找字符,如果遇...

[LeetCode 34]PHP 求解在排序数组中查找元素的第一个和最后一个位置

2020-12-02
阅读 3 分钟
1.6k
原文链接: 何晓东 博客在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗? 示例 1: {代码...} ...

PhpStorm中两个提升生产力的插件

2020-11-18
阅读 1 分钟
6.2k
Php Inspections ​(EA Extended)一个代码优化和安全提示的插件主要功能:与架构有关的问题弱类型控制和可能的代码构造简化性能问题非最佳,重复和可疑的“如果”条件验证魔术方法的使用常用表达兼容性问题各种耗时的错误PHPUnit API用法安全问题提示场景:TabNine智能自动补全插件,不会自己写代码的 IDE 不是好的 IDE,那...

[LeetCode 15]PHP求解三数之和问题

2020-11-07
阅读 2 分钟
2.1k
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。

[LeetCode 491]PHP 求解有效的山脉数组

2020-11-04
阅读 2 分钟
1.1k
原文链接:何晓东 博客有效的山脉数组给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3在 0 < i < A.length - 1 条件下,存在 i 使得:A[0] < A[1] < ... A[i-1] < A[i]A[i] > A[i+1] > ......

[LeetCode 142/287]PHP 快慢指针的进阶题

2020-10-10
阅读 3 分钟
2.2k
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

PHP 和 Go 实现环路链表检测

2020-10-09
阅读 2 分钟
2.9k
给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。

PHP 求解二叉树 - 二叉搜索树的最近公共祖先

2020-09-27
阅读 4 分钟
2.1k
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

[LeetCode 78]PHP 回溯算法求解子集问题

2020-09-21
阅读 2 分钟
1.9k
原文链接:何晓东 博客子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例: {代码...} 来源:力扣(LeetCode)链接:[链接]解题思路 1直接参考 回溯算法团灭排列/组合/子集问题代码 {代码...}  解题思路 2 迭代法初始化结果为 二维空数组遍历给定数组中的...

[LeetCode 46/47]PHP 回溯算法求解全排列

2020-09-18
阅读 2 分钟
2.1k
原文链接: 何晓东 博客全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例: {代码...} 来源:力扣(LeetCode)链接:[链接]解题思路直接参考 回溯算法团灭排列/组合/子集问题代码 {代码...} 额外:LeetCode 47 全排列 Ⅱ,区别是 第一:加了一个sort,排序之后只有相邻元素才会相同 第二:判断去重条件,...

[LeetCode 977]PHP 实现有序数组的平方

2020-09-15
阅读 2 分钟
1.5k
原文链接: 何晓东 博客有序数组的平方给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1: {代码...} 示例 2: {代码...} 来源:力扣(LeetCode)链接:[链接]解题思路 1内置函数求解代码 {代码...} 解题思路 2双指针遍历,同时借助新数组,将计算平方之后的结果...

[LeetCode 121]PHP三种方式求解买卖股票的最佳时期

2020-09-02
阅读 4 分钟
1.9k
原文链接: 何晓东 博客买卖股票最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。 示例 1: {代码...} 示例 2: {代码...} 来源:力扣(LeetCode)链接:[链...

[LeetCode 477]PHP 计算汉明距离总和

2020-08-28
阅读 2 分钟
2k
原文链接: 何晓东 博客PHP 计算汉明距离总和两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。计算一个数组中,任意两个数之间汉明距离的总和。示例: {代码...} 注意:数组中元素的范围为从 0到 10^9。数组的长度不超过 10^4。来源:力扣(LeetCode)链接:477. Total Hamming Distance解题思路 1穷举...

Go 和 PHP 基于两组数计算相加的结果

2020-04-16
阅读 2 分钟
1.5k
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:    输入:(2 -> 4 -> 3) + (5 -> 6 -&...

Go 和 PHP 根据目标值计算两数之和

2020-04-16
阅读 2 分钟
1.8k
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。示例:    给定 nums = [2, 7, 11, 15],target = 9    因为 nums[0] + nums[1] = 2 + 7 = 9    所以返回 [0, 1]来源:力扣

Go 和 PHP 实现计算最长公共前缀

2020-04-16
阅读 2 分钟
2.2k
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:  输入: ["flower","flow","flight"]  输出: "fl"示例 2:  输入: ["dog","racecar","car"]  输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。来源:力扣

Go 和 PHP 基于一组数计算盛最多水的容器

2020-04-16
阅读 3 分钟
1.5k
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况...

Laravel 手动开关 Eloquent 修改器

2019-12-29
阅读 1 分钟
3.9k
修改器的手动开关的场景就是差异化的返回数据,例如在后台管理的时候,图片地址要相对路径,然后 app 端期望返回全路径的地址,这个时候就需要手动开启和关闭了。

PHP7.4 Preload 特性了解与理解

2019-12-09
阅读 3 分钟
7.1k
  根据 rfc 描述,Preload 简明翻译是预加载,是基于 opcache 的一层升级,也是 opcache 的一部分。现有的 opcache 存储文件可以消除编译开销,但从缓存中获取文件并获取特定请求的上下文仍有相关成本。PHP 仍然需要检查源文件是否已被修改,将类和函数的某些部分从共享内存缓存复制到进程内存等。值得注意的是,由于每...

MySQL 执行过程中两步权限检查的不同

2019-11-26
阅读 1 分钟
4.3k
题主的测试场景是:是 k 字段不存在,也没有 select 权限,看先抛出哪个错误,结果是抛出了权限不足的错误。是在执行阶段进行细粒度的权限检查,没有打开表的权限,也就无法确定 k 字段是否存在。这块翻了半天文档没发现官方给出直接的结论。

Python 爬虫与反爬的几个方案

2019-08-13
阅读 1 分钟
4.8k
原文链接: 何晓东 博客没有绝对的反爬虫措施,只能提高爬虫爬取的成本。爬虫措施:不设防的网站,直接爬取,不做任何伪装基础防备的网站,爬取过程中增加 time.sleep(n) 进行休眠一下,降级爬取频次,防止被限制。再可以每次爬取切换 header 头信息,伪装成多个终端发起的请求需要登录的情况下,需要多个用户账户,爬取...

高并发高可用系统的一些胡乱思考

2019-07-26
阅读 2 分钟
3.4k
个人理解高并发系统主要在于:机器资源的合理分配和性能的压榨,代码质量,及维护高并发系统在请求峰值的时候,系统中有机器宕机时整个系统的可用性。核心是提高吞吐,降低响应时间。

使用swoole 定时器变更超时未支付订单状态

2019-07-23
阅读 2 分钟
2.9k
原文链接: 何晓东 博客如果对几种方案没有很好的想法,可以先看一下延伸阅读里的其他方案,是一篇laravel china社区的讨论借助 swoole 定时器和 redis 的 zset 来实现的定时检查并过期未支付订单  起源于一个需求:将30分钟内未支付的订单过期处理成已失效状态。  最常规简单的解决方案:在服务器上,跑一个定时任务,...

数据结构中数组和链表的区别

2019-07-20
阅读 1 分钟
14k
数组 和 链表 之间的主要区别在于它们的结构。数组是基于索引的数据结构,其中每个元素与索引相关联。另一方面,链表 依赖于引用,其中每个节点由数据和对前一个和下一个元素的引用组成。

Nginx 配置根据请求IP末段进行分流

2019-07-09
阅读 1 分钟
11.4k
以上为将 IP 末段为 1-125 的请求来源转发到 huaji-01.com,其他转向huaji-02.com,同样可以修改正则,例如规则: $remote_addr ~* ^(.*)\.(.*)\.(.*)\.*[0268]$ 末尾为0268这样的偶数ip,跳转到 huaji-01.com,其他跳转到第二个域名;规则:$remote_addr ~* ^(112)\.(.*)\.(.*)\.(.*)$ 开头为 112 的 IP 跳转到指定的域...

Web 性能优化的几个策略

2019-07-04
阅读 3 分钟
2.1k
个人理解优化最开始需要做的是:将现有资源有效利用到极致,然后在做更多提升。开发人员多了解一些优化技术,不仅可以怒斥前端写的代码辣鸡,甚至可以和架构师谈笑风生。😀