MacOS下PHP7.1升级到PHP7.4.15

最近写SDK的时候需要用到object类型提示符,PHPStorm智能提示说需要PHP7.2以上才能支持这种类型提示。 我一查我本机的PHP是7.1.30版本,于是考虑升级一下PHP版本。 首先要尝试使用如下命令进行升级: brew update brew upgrade php@7.4 第一个遇到 ... »

php性能分析利器:xhprof

xhprof是facebook团队开发的用于研究php性能的扩展,并且提供了图形化的界面展示性能参数和过程。对于各种php的项目的性能瓶颈研究有一定帮助,值得一用。 我在上一篇《Dockerfile搭建极简LNMP环境》一文中已经创建好了LNMP环境,下面是基于这个容器进行xhprof的安装和使用。 ... »

后Low Code时代:聚焦和突破

很多人都不想被贴上标签,我曾经也一样。觉得青春不能被定义,人也不能被分类。但随着学习和工作的变迁,慢慢开始发现标签也是一种名片效应。 比如一个做汽车销售的朋友,他就对BMW的车型非常熟悉,可以说是懂车帝。那么他在销售BMW的时候就会特别得劲和顺手,顾客也更有可能被他说服成交。同样的,如果一个深耕某个 ... »

Dockfile搭建极简LNMP环境

最近才发现ThinkPHP6.0和CI4.x都要求php版本为7.1以上了,本机的php版本还停留在7.0.3x,又懒得升级,于是考虑使用Docker来运行一个lnmp环境。 常规环境搭建的方式有两种,一种是把php、mysql、nginx分别编写一个Dockerfile,然后再使用docker-c ... »

CSS之伪元素

之前做一个需求的时候需要对页面上所有的banner上添加提示文案,例如:这是广告。本来想一个一个广告部件上添加文案div来实现。 后面向同组大佬请教,可以利用css中的伪元素:before来实现。 伪元素,顾名思义,就是它们不是真的HTML页面元素,实际上就一个带有css样式的透明元素,只展示某些c ... »

简化工作流之代码审查回复消息生成

在一个规范化的研发流程中,一般遵循如下流程: 开发阶段:研发功能或者修复bug,在本地自测。 代码审核阶段:提交代码,并请求团队内人员做code review。 测试环境测试阶段:部署到测试环境并请求测试。 发布线上待测阶段:测试环境通过测试发布到线上进行测试。 验收完成任务:线上验证成功,关闭这个 ... »

前端工程构建之谈:gulp3要不要升级到Gulp4

关于升级还是不升级,这是一个哲学问题。 gulp4的语法更加现代,支持ES6的大部分写法,使用exports的方式去暴露任务组合,更加灵活和便捷。 gulp4同时也提供了很多强大的API,例如parallel()和series()。此外,gulp4不再支持同步任务,所以可以看到编写任务的时候也不再推 ... »

Gulp4.0入门和实战

gulp4.0入门和实战 我最近遇到需要优化web的性能的任务,然后就捣鼓了一些对资源文件优化压缩的方案。由于之前的项目中有使用到gulp,所以在需要处理的web项目中也优先使用这个技术。 先聊聊gulp是什么? gulp被称为基于流的自动化构建工具,也是用NodeJS编写的额。使用NodeJs对文 ... »

RocetMQ搭建攻略和问题解决之道

最近有在尝试给项目加入消息中间件服务,首先想到了鼎鼎大名的RocketMQ。RocketMQ是一款高性能的、分布式消息中间件,由阿里开源。它提供了丰富的消息拉取方式,能够处理上亿级的海量数据,甚至在阿里双十上经受了超大的请求峰值,其商业可用性值得依赖和使用。 安装方式比较简单,就是在Rocket官网 ... »

编程方式实现MySQL批量导入sql文件

有时候需要在本地导入一些stage环境的数据到本地mysql,面对1000+的sql文件(包含表结构和数据,放在同一个文件夹下),使用navicat一个一个导入sql文件显然有点太慢了,于是考虑使用source命令批量来实现。网上看了很多人遇到这个高频的数据库sql导入问题,但是没有特别具体的解决方 ... »

MacOS下解决宿主机和docker容器之间网络互通

docker在Mac下使用非常方便,官网提供了desktop版本的可视化软件,甚至还十分贴心地集成好了k8s套件。然而如果想同时部署和使用多个容器,每个容器不使用127.0.0.1地址,而是各自有ip,如使用172.17.0.x网段,则需要解决从宿主机到各个容器的网络通信。 如果是使用其他Linux ... »

消失的大多数

十六年前的夏天,你是否还记得那段时光? 是阳光下的绵延的蝉鸣,是篮球场上挥洒的汗水,是广播里反复播放的《七里香》。随着时间流逝是我们,是消失的大多数。 这段时间抖音上有一种很火的短片形式,大致是一男一女同时用耳机听同一首歌,一个来自04年左右的mp3耳机,一个来自2020年的手机。好似时空交错的相遇 ... »

php判断用户设备类型

最近做的一个需求里面希望能判断用户访问页面的设备类型,根据不同的类型去加载不同的数据和页面样式。由于技术栈是使用的php,于是考虑在php层面去做这个判断。 假设主要判断的设备有平板和手机为主,分两个大类。 最开始是使用了简单的判断,编写了如下代码: public static function i ... »

Java反射:new一个宝可梦吧

最近写Spring Boot的测试用例会发现经常会有用到@RunWith(SpringRunner.class)的设置注解,关于SpringRunner.class的理解也有点似是而非。其实这种写法是Java反射相关的知识,于是动手总结一下常用的反射使用方式。 假设极客君编写了一个口袋妖怪接口,如下 ... »

1024:写给还活着的研发工程师们

​今天刚好是1024节,很多IT圈的朋友希望我写一篇文章来给大家看看,我本来也是拒绝了,毕竟我出圈已经快一年了,对于还在内卷严重环境的小伙伴和那种混乱的生活,我是感到陌生的。 我曾经也996过,甚至9117。加班是无偿的,以为自己是在为中国医疗事业进程做了巨大贡献;我曾经也差一点完成了某新一线城市的 ... »

Gearman实战第一弹:异步处理结算单

昨天梦回jm,醒来之后看着窗外万里晴空,想大声喊一句:爷青回! 我想起之前使用gearman的岁月。不知不觉也过了快5年,想总结一篇关于gearman的技术文章算是一种对青春的祭奠,再不写的话更少有phper用过这个强大的分布式任务分发框架,毕竟这个时代已经属于swoole。 先讲一下Gearman ... »

递归和回溯解决括号匹配问题

递归和回溯解决括号匹配问题 递归在之前的文章中有提及,有朋友在后台大呼不过瘾,刚好又刷到了一道可以用到递归的算法题,还是我们的老朋友:匹配有效括号,废话不多说,先上题目。 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例: 输入:n = 3 输出: ... »

打个总结:Web性能优化

前段时间优化一个公司历史老项目的Web性能,却引出了一系列的问题,让我反思良多。 我通过Chrome的Lighthouse工具可以看出一些性能参数和问题反馈,我逐一对其进行优化。 根据资源请求的不同,大致可以分为前端资源性能和后端程序性能两个方面。 先分析一下前端资源吧: Defer offscre ... »

PHP之从反向删除单链表元素的问题谈起

在完成一个单链表的删除指定元素的题目中,我发现了一件神奇的事情,php对象赋值给另外一个变量后,可以如同引用传值一般继续利用新的变量来实现链表的链接。 后面经过查证后发现: PHP7.0版本除了对象,资源之外,其余数据类型均已实现写时复制 尝试写了一个简单测试代码,如下所示: 打印出的$obj1的结 ... »

WordPress使用PHPMailer发送gmail邮件

wordpress使用phpmailer发送gmail邮件 0.保证用于gmail账号已经开启imap服务,且你能正常访问到gmail的smtp服务。(需要climb over the wall) 1.引入phpmailer相关类 原来在wp includes里面有class phpmailer.p ... »