用lockf保证同一时间只有一个进程运行
安装 参见github 使用场景 保证同一时间只有一个进程运行。 例如 crontab 设定每分钟跑一次 1.php ,但如果超过1分钟该脚本还没执行完,就会出现多个php脚本同时运行的情况,在某些场景下可能会有问题。 为了满足上述需求,我们可能会在脚本里添加一段代码,创建锁,执行完后删除锁,若锁文件存在则直接return。 还有另一种解决方案就是…
在mac安装nginx模块
今天有需求需要用到nginx的stream模块,但mac已经安装的nginx默认是不带该扩展的。 我选择了重新安装nginx。 brew tap denji/nginx brew install nginx-full --with-stream #如果已经是最新版本,则会提示nginx版本已安装,可选择重新安装 brew reinstall ngi…
给你的Mac/Linux的rm装一个回收站
作为程序员,在工作中经常用到rm。我在不久前用vscode写代码,在底下的终端里想删掉没用的文件,手抖把未提交到git的代码文件删了。还好代码量不多,否则会崩溃。毕竟重写代码是很痛苦的~ 因此本文标题提上了日程 选择一款安全的删除脚本 Github看到一个脚本满足需求。 github地址,里边有多种安装方式。我选择的是npm全局安装。 npm i …
HTTPS原理解析
HTTP是什么 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议。是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。 为了方便通信就必须统一约定好双方的数据协议,如果每个人都搞一套…
排查elasticsearch的cpu居高不下,查询慢的问题
背景 近来es查询很慢,kibana的discover界面偶尔还会因为查询请求超时而无法显示数据。/_cat/indices?v 等对es的查询也慢的出奇,需要1、2分钟才返回结果。 排查 top命令看了es的java进程,发现cpu一直很高,130%左右,一直没有下降过。查看es的日志,发现gc.log中几乎每秒都要触发一次GC Full GC …
mac卸载和安装java指定版本
2020-04-02更新: 之前的安装方法已经废弃了,可通过以下方式安装 brew tap AdoptOpenJDK/openjdk brew cask install <version> 这里有全部的version列表 例如可以这么安装 brew cask install adoptopenjdk8     之前用…
在挂着VPN的虚拟机搭建代理服务
背景 公司有台机器需要用VPN访问,资源包括ssh和web页面。在物理机上开VPN能够访问该内网资源,但会影响公网的访问效率和一些资源(毕竟通过VPN绕了一圈内网再回来)。很自然想到用虚拟机挂VPN,需要访问内网资源的时候到虚拟机上去解决。尽管我使用mac,触摸板划一下就能无缝切换虚拟机窗口,但多了个操作系统环境还是有些不方便。毕竟我想在同一个浏览…
mysql命令行神器mycli
为什么使用它 受够了mysql原生client后,你会爱上mycli的自动补全和高亮。对于我这种常常记不住表结构的人来说,自动补全真是爽得不行。 ps:sql新手谨慎使用,建议多裸写sql后再来使用该软件 安装 Mac brew install mycli CentOS # 请尽量先将pip升级到最新版本 pip install --upgrade…
下载知乎的视频(M3U8)
总结:知乎的视频播放基于M3U8文件,找一种支持通过该类文件下载目标文件的工具即可,例如FFmpeg   某个慵懒的周末上午刷着知乎,一位知友po了自己用鼓(还是啥?)敲击的旅行青蛙音乐的视频,评论区有小伙伴想要该视频的音频文件下载,想着举手之劳,顺便看看知乎的视频播放用的啥技术。 打开开发者工具,刷新网页并播放,观察网络请求并没有med…
NodeJs中将TinyInt转换为Boolean
Mysql的基本数据类型中并没有布尔型,之所以建表和数据操作中能够使用BOOLEAN是因为mysql将其作为了tinyint(1)的别名。用0表示false,1表示true。 但开发过程中,既然我们给某一字段定义为布尔型,那么在我们获取数据后,期望得到的必然是布尔值而不是0或1。因此我们可以在得到返回值后转换一下。 这里我使用的是mysql模块,该…