初步认识一下布隆过滤器 BloomFilter,了解它的原理、应用场景、优缺点、Java 中的使用,以及初步查看 Guava 包中一些方法的实现源码。
ELK 是 ElasticSearch、Logstash、Kibana 的简称,一般用于日志系统,从日志收集,日志转储,日志展示等入手,用以提供简洁高效的日志处理机制。这篇文章记录一下我用 Docker 搭建 ELK,并且结合 logspout 实现自动化地把所有 Docker 容器的日志数据传输给 ELK 的过程。
在数据库的每张表中,建议都有 create_time
和 update_time
字段,记录每条数据的创建时间和更新时间。这通常需要在服务端代码中,设置好时间后再插入数据库,并不优雅。
记录一下解决方案,由 MySQL
记录时间,这样就无需再手动给这两个参数赋值。
开始用 ThinkPHP5 框架写 Web 接口,以一个用户注册接口,实现对数据库表的插入和查询、参数校验、加盐加密、Json 报文响应、http status code 设置、隐藏敏感信息等。
记录 MacOS 上 PHP 开发环境的搭建,包括 Composer、ThinkPHP、MySQL 和 Docker。
以前我都是使用 OneinStack
我们都知道,redis 的配置文件中,默认绑定接口是 127.0.0.1,也就是本地回环接口,所以是无法从外网连接 redis 服务的。如果想要让外网也能连接使用服务器上的 redis 服务,可以简单地注释掉 bind 这一行。但对于 bind 参数的作用,网上有很多文章的解释都是误人子弟的。
终端连接远程 SSH 服务,经常会出现长时间无操作后就自动断开,或者无响应,无法再通过键盘输入,再过一会就自动断开了。特别烦的就是有时候 vim 在编辑一个文本,编辑到一半,还没保存,就卡住了。只能强行断开重连,重新编辑,如果直接再敲一次 vim,还会返回一个 Swap file ".xx.swp" already exists
错误。
这阵子在做 Shadowsocks 的 iOS 客户端,有一个功能是扫二维码导入代理服务器的配置信息。二维码的内容是经过 Base64 编码后的,所以需要先解码。用 iOS 原生的 Base64 转码,有时候可以,有时候又不行,会返回 nil。但同样的密文到网上「在线Base64编码/解码」的网站去解码,却又可以解得出来。
解决问题的过程中,尝试用 node.js 当服务端,用 JS 实现 Base64 解密,这应该是最完美的解决方案。