centos php7.4 安装记录
最近记性不太好,做个记录,防止下次忘了。
若果有遗漏,之后再补充。
更新1yum update && yum upgrade
安装 php7.4 的 yum 源12345yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmyum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpmyum -y install yum-utils
安装 php 7.412yum-config-manager --enable remi-php74yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
安装新版 mariadb先加个源:
1234567vim /etc/ ...
laravel 导入 excel 报错排查记录
今天公司项目导入 excel 时突遇一个报错:Undefined index: Sheet1,一下给我整懵逼了,一通排查,发现是因为执行过 composer update,把一个包升级到了最高,然后,它就不能用了。
看官方 issues 说:
This is a known bug in PhpSpreadsheet PHPOffice/PhpSpreadsheet#1895. Until they release a new version, you have to lock the phpspreadsheet version to 1.16
啥意思呢,翻译一下吧:这是PhpSpreadsheet PHPOffice / PhpSpreadsheet#1895中的一个已知错误。在他们发布新版本之前,您必须将phpspreadsheet版本锁定为1.16
版本太高有时候也不是个好事呀!
issuse
一句话看懂集群、微服务和分布式的区别
一个完整的服务拆分成多个微小的服务,就是微服务。
每个服务不止一个就是集群。
微服务部署在多台服务器上,服务器之间可以相互通信就是分布式。
微服务与分布式的细微差别是微服务可以部署在一台服务器,也可以部署在多台服务器。
少年,留下你的键帽吧!
今天干了一件有点伤感,但是挺有意思的事情。虽然是个流水账,但是我觉得有必要记录一下。
我跟要离职的 阿龙同学 换了一个键帽。
我想,如果把这个做法一直延续下去,每离职一个关系不错的小伙伴就相互交换一个键帽,那最后这把键盘也就非常有意义了,对吧。
😓看我这油光铮亮的空格……
网络一线牵,珍惜这段缘。
祝愿阿龙的工作越来越好!
hexo 表格测试
发现之前写的一篇文章表格不显示,试试咋回事……
排序方法
平均情况
最好情况
最坏情况
辅助空间
稳定性
冒泡排序
O(n²)
O(nlogn)
O(n²)
O(1)
稳定
简单选择
O(n²)
O(n²)
O(n²)
O(1)
稳定
直接插入
O(n²)
O(n)
O(n²)
O(1)
稳定
希尔排序
O(nlogn)~O(n²)
O(n^1.3)
O(n²)
O(1)
不稳定
堆排序
O(nlogn)
O(nlogn)
O(nlogn)
O(1)
不稳定
归并排序
O(nlogn)
O(nlogn)
O(nlogn)
O(n)
不稳定
快速排序
O(nlogn)
O(nlogn)
O(n²)
O(nlogn)~O(n)
不稳定
mac 默认终端记住 ssh 密码
前几天,在小伙伴的极力推荐下装了 iTerm2,用了几天,奈何与我八字不合,ssh 后 vi 模式错乱,各种修复无果,但是在自带终端却又正常,无奈只能切回。
iTerm2 用 sh 文件配置过 ssh 记住密码,在默认终端也是可以用的。
配置方式如下:
新建 sh 脚本1sudo vi /usr/local/bin/terminal.sh
然后放入以下内容
123456789101112131415161718#!/usr/bin/expectset timeout 30set host [lindex $argv 0]set port [lindex $argv 1]set user [lindex $argv 2]set pswd [lindex $argv 3]spawn ssh -p $port $user@$host expect { "(yes/no)?" {send "yes\n";exp_continue;} -re "(p|P)ass(wor ...
mweb hexo 设置
hexo 借助图片插件可以在 post 目录建立跟文章文件的同名文件夹来保存图片,之前也一直都是这么做的,但是在 mweb 上预览时图片不显示,经过一番折腾,反正总会有一番折腾,而且也少不了一番折腾以后,弄好了。
现在将折腾的经过记下来留档。
首先,用 mweb 的外部模式打开 hexo 下的 source 目录,然后右键目录,选择编辑,具体配置如下图,如果没有配置图床可以不用理它,我配完也没理它,为啥呢,因为慢。
把 hexo 的配置文件中:post_asset_folder 改为 false。
下一步,把你花花哨哨的图片放到 source/images 目录即可,新增图片时用 mweb 的图片工具添加,会自动保存到文件夹内,并且会自动添加 mackdown 格式的图片到文档内。
然后,就没了。
哦,可能需要执行一下这个:
1npm install hexo-asset-image --save
这次真的没了。
php ziparchive addfile return false
有个文件,存储了两条准备用于给文件重命名的字符串和文件路径的数据,每行一条,名称和字符串以 , 间隔。
然后问题来了,通过读文件取出数据,然后获取文件路径并打包时,ZipArchive 的 addFile 总会有一个 false。
折腾半天,最后发现还是因为粗心大意,没过滤行尾的换行符……
一声叹息,掏出小本本默默记上一笔。
最后附上代码:
12345678910111213141516171819202122232425<?php$txt_file = './zip.txt';$zip = new ZipArchive();$fileName = './res.zip';$path = '/opt/homebrew/var/www/';if(file_exists($fileName)){ unlink($fileName);}if(!$zip->open($fileName, ZipArchive::CREATE)){ echo '文件读取失败', ...
php 和设计模式 - 门面模式
门面模式也叫外观模式,主要是为子系统中的一组接口提供一个一致的接口,facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
一个简单的🌰:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051class Facade{ private Subsystem $subsystemA; private Subsystem $subsystemB; public function __construct(Subsystem $subsystemA, Subsystem $subsystemB) { $this->subsystemA = $subsystemA; $this->subsystemB = $subsystemB; } public function subsystemARun() { $thi ...
php 和设计模式 - 中介者模式
最近太忙,拖更好多天,难受……
废话不多说,先来看看概念:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地互相引用,从而使其耦合松散,而且可以肚里地改变它们之间的交互。
也就相当于你租了个房子,但是房东常年旅居国外,有事情你也不需要找房东,因为房东把所有事情都委托给了中介。
令人羡慕的房东啊……
举个🌰:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990<?php// 中介者模式interface MediatorInterface{ public function send($service, string $message);}class Mediator implements MediatorInterface{ public ...