为 Debian 12 的容器更换 APT 源

自 Debian 12 (bookworm) 开始,Debian 的容器镜像开始使用 DEB822 格式,而非之前的单行格式。

该更改目前只被作用于诸如 Docker Image 之类的容器镜像,传统意义上的 Debian 操作系统不受影响

原先应该修改的 /etc/apt/sources.list 文件现在已被移除。

现在,默认源的相关配置已被移至...

分类至 Linux
0条评论

mysql 两个 timestamp 类型的字段相减问题

假设有两个 timestamp 类型的字段,值分别是: 字段a:2023-12-12 23:59:54 字段b:2023-12-13 00:01:04 这两个字段相差70秒,但是执行 SELECT b - a FROM table 这样的 SQL 语句,得到的结果却是764150。 原因是,timestamp 类型字段直接相减时,mysql 先把字段转换成数值...

分类至 MySQL
0条评论

PHP 实现平滑关闭/重启

写过 CLI 常驻进程的老司机肯定遇到过这么一个问题:在需要更新程序的时候,我要怎样才能安全关闭老进程?你可能会想到 NGINX、php-fpm 之类的平滑重启是给进程发送 USR2 信号,然后它就会将当前请求处理完再退出。 但进程是怎样接收信号、处理信号,估计就不是很多人能说清楚了...

分类至 PHP
0条评论

关于 PHP 导入/导出 Excel 文件

很久以前,还在用 php5.x 的时候,将数据导出为 Excel 文件需要用到 PHPExcel 扩展包。随着 php 版本更新到 7.x,PHPExcel 已过时,官方推出全新版本 PhpSpreadsheet。

但无论是 PHPExcel 还是 PhpSpreadsheet,都有个弊端:内存开销极大!这在操作大文件时及其明显,脚本动不动就内存超标。针对这个问题,PhpSpreadsheet 新增了一个缓存功能,可以在操作表格时,将数据缓冲到 Redis、Memcache 等地方。

近年来,开发项目一直使用 DcatAdmin 后台框架,记得框架里有个导出 Excel 的功能,但却不需要安装 PhpSpreadsheet,而是需要安装 Easy Excel...

分类至 PHP
1条评论

HBuilder 开发的 uniapp 运行到 Android 模拟器

最近团队接了一个 APP 项目,前端使用 uniapp 开发,本人想试试效果,奈何我没有安卓手机,也没有苹果电脑。

于是,在网上找了一堆 windows 下的安卓模拟器,试了几个比较出名的:夜神模拟器、逍遥模拟器、雷电模拟器...。这些都无法满足需求,有的会跟 Hyper-V 冲突(需要关闭 Hyper-V 才能运行,我的 Docker 就没法用了),即便模拟器运行成功,启动 APP 后会白屏,只显示底部的 TabBar 栏(包括 uniapp 官方示例也如此)...

分类至 杂项
0条评论

laravel 中 redis set 方法怎么把 nx, ex 怎么一起使用

在 .env 中可以配置 REDIS_CLIENT 指定 Laravel 框架使用 phpredis 或 predis 来操作 Redis:

REDIS_CLIENT=phpredis
#或
REDIS_CLIENT=predis

phpredis 与 predis 区别:

  • phpredis,它是用 c 语言写的 php 的高效扩展:https://github.com/phpredis/phpredis
  • predis,它是用纯 php 代码写的,也用的蛮多的:https://github.com/predis/predis

...

分类至 PHP
0条评论

PHP8 国密 SM4 加解密

OpenSSL 1.1.1 开始已支持国密算法(https://www.openssl.org/news/changelog.txt),现在使用 PHP8 的 OpenSSL 扩展就可以实现国密算法加解密了,本文示例使用的是 PHP 8.1.17。

SM4-CBC 算法加解密示例:...

分类至 PHP
0条评论

关于将金额xx元换算成xx分

接过微信支付的都知道,微信支付需要把单位为元的金额转成单位分再带入接口,于是,有些人会这样写:

$totalFee = intval($money * 100);

金额变量 $money 只精确到小数点后2位,在 mysql 中一般用 decimal(8,2) 类型存储。假设金额为9.70元 ,由于计算 $totalFee 用的是乘法,不像除法可能除不尽,所有你可能认为 $totalFee 的结果就是整数 970。但实际上,当你加上 var_dump 打印的时候,会有意想不到的结果...

分类至 PHP
0条评论

mysql 5.6 计算两个地图坐标的距离

在MySQL 5.6中,可以使用以下公式来计算两个地图坐标之间的距离:

SELECT 
    (6371 * acos(cos(radians(lat1)) * cos(radians(lat2)) * 
    cos(radians(lng2) - radians(lng1)) + sin(radians(lat1)) * 
    sin(radians(lat2)))) AS distance
FROM 
    your_table
WHERE 
    your_table.id = your_id;

其中,lat1lng1是第一个坐标的纬度和经度,lat2lng2是第二个坐标的纬度和经度。your_table是你的表的名称,your_id是你要查询的记录的ID。

这个公式使用了余弦定理来计算两个点之间的距离。它将地球视为一个完美的球体,并假设它的半径为6371公里。

分类至 MySQL
0条评论