ubuntu升级内核报boot空间不足的解决过程
突然想起我的vps好久没有升级系统软件了,于是照惯例上去一顿apt update和apt upgrade,结果在安装内核的时候报错了: Setting up linux-firmware (20220329.git681281e4-0ubuntu3.26) ... update-initramfs: Generating /boot/initrd.…
记一次生产线Yii2无法捕获异常信息的问题
最近公司线上项目经常报出服务器内部错误,也就是Yii2框架的An internal server error occurred,经排查日志发现是某处业务逻辑抛出了一个Exception拦截消息,但是消息没有捕获到,无法返回给前端,并且开发环境复现不出来。 最后在Yii2框架源码中找到了问题原因,文件vendor/yiisoft/yii2/base/…
细说PHP后期静态绑定
概念 后期静态绑定这个概念平时听的很少,但是在项目中使用却相当广泛,理解了它,日常面向对象开发时将会非常顺手,关于PHP后期静态绑定,官方文档有相关的解释: 准确说,后期静态绑定工作原理是存储了在上一个“非转发调用”(non-forwarding call)的类名。当进行静态方法调用时,该类名即为明确指定的那个(通常在 :: 运算符左侧部分);当进…
一次诡异的PHP浮点运算精度丢失以及打印问题
项目开发时发现几个小数组成的数组进行求和的结果不对,第一反应就觉得是精度问题,于是做了实验: $array = [0.4, 0.4, 0.2, 0.4, 0.4, 0.2]; $arraySum = array_sum($array); var_dump($arraySum); var_dump(intval($arraySum)); var_ex…
最新的Let’s Encrypt免费https证书配置
Let's Encrypt是一个数字证书认证机构,为网站提供免费的TLS证书。 本次流程基于Ubuntu,首先安装certbot apt install certbot 使用 openssl 工具生成 dhparams openssl dhparam -out /etc/ssl/certs/dhparams.pem 2048 生成免费证书…
MySQL8无法使用root账户在外部登录的解决办法
新安装的最新版本MySQL,可以在服务器终端登录root账户,但是外部始终登录不上,报连接拒绝错误 mysqli::real_connect(): (hy000/1698): access denied for user 'root'@'localhost' 这时突然想到我一直用的初始密码,可能是root账户…
PHP设计模式之——依赖注入
依赖注入(dependency injection)是实现控制反转的一种技术,顾名思义,就是将依赖(被调用者)注入给依赖对象(调用者)。 用户类User有一个注册方法,我们需要实现一个功能,在注册成功后,给用户发送一封邮件通知。我们先写一个发送邮件的类: class EmailClass { public function sendEmail($u…
RabbitMQ在Python中的安装配置和使用
RabbitMQ是一个免费开源的消息队列应用,应用非常广泛,本文主要介绍RabbitMQ的安装使用和Python+pika的简单调用. RabbitMQ安装 Mac brew install rabbitmq Ubuntu apt install rabbitmq-server systemctl start rabbitmq-server 更多平…
VSCode+MarkdownImage实现md文档插入图片
写博客时遇到了上传图片的需求,于是找到了markdown-image这个VSCode插件,可以直接把剪切板图片存入本地指定目录(也可以根据自己需求上传到其他云服务器,详情可见插件文档说明),并自动生成md引用图片的语法。 首先安装插件markdown-image,可以直接在VSCode插件中搜索安装。 在VSCode的workspace setti…