分类 开发 下的文章

论crontab -r的危害性及预防措施

0x01 起因

今天某部门又发生了一次crontab被删事件,想起了上次一位同事误执行crontab -r导致计划任务被删除的事。

crontab -e 修改当前用户的计划任务
crontab -l 列出当前用户的计划任务
crontab -r 删除当前用户的所有计划任务,而且是直接删除,没有任何提示。

在键盘上e和r紧挨着,这就造成了一不小心清空了所有定时任务。如果没有crontab计划任务备份,就只能从crontab日志里捞任务了,万一有那种间隔长时间运行一次的计划任务,想要不遗漏任务,只能拼记忆力了。

万一是线上重要服务器,会瞬间体验到灵魂出窍的感觉,还得假装很镇定,先找SSH的buffer,再找crontab日志,联系相关童鞋协助恢复,然后祈求能够完整恢复。这种体验,想想都酸爽~

阅读全文 >>


Go语言环境配置

0x01 brew大法好

Brew大法好,用过都说好,它好我也好。

安装brew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
//安装成功后更新
brew update

安装Go

brew install go
==> Downloading https://homebrew.bintray.com/bottles/go-1.5.1.yosemite.bottle.ta
######################################################################## 100.0%
==> Pouring go-1.5.1.yosemite.bottle.tar.gz
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
  https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
  export PATH=$PATH:/usr/local/opt/go/libexec/bin
...

阅读全文 >>


PHP内核学习:PHP中的HashTable(二)

0x01 前言

之前说过了哈希表的一些基础概念,下面我们看下PHP中哈希表的实现。
首先要明确的是PHP5.*和PHP7的哈希实现是不同的,本文先分析php5.5.28为基础。

0x02 PHP哈希表的实现

了解了哈希表的实现原理之后,要看PHP的哈希表是如何实现的就很容易了,只需要注意下面三点:

  1. 哈希函数如何构造
  2. 哈希冲突如何解决
  3. 操作接口如何实现

阅读全文 >>


PHP内核学习:PHP中的HashTable(一)

本文只讲了哈希表的基础概念等,尚未涉及PHP中哈希表的实现。
不想看,请略过

0x01 前言

HashTable(哈希表)对于PHP来说是一种非常重要的数据结构,PHP的变量、数组、类的属性和方法等都是通过哈希表来实现的。众所周知,PHP7的性能优化也是花了大力气来优化哈希表的实现方式。

相关内容参考鸟哥的PPT

本篇文章开始将陆续的分享关于哈希表和PHP中具体的应用实现。

0x02 关于HashTable(哈希表)

什么是哈希表?哈希表是一种通过哈希函数,将特定的键映射到特定值的一种数据结构,它维护键和值之间一一对应关系。

在数据结构相关书籍中大家可能见过一个词“散列表”,这里所说的散列表就是哈希表。哈希表是将键名Key用哈希函数计算后映射到表中的一个位置,实现直接定位到数据位置,提高访问速度。

理想情况下,哈希表的时间复杂度是O(1),数据项可以在哈希表长度无关的情况下,通过哈希函数hash(key)出一个值,然后在固定时间内定位到一个槽(bucket,表示哈希表中一个位置),时间主要消耗在哈希函数的计算和槽的定位上。

阅读全文 >>


php-memcache扩展分析(四) 验证缓存节点分布情况&总结

php-memcache配置环境

memcache support => enabled
Version => 3.0.8
Revision => $Revision: 329835 $
Directive => Local Value => Master Value
memcache.allow_failover => 1 => 1
memcache.chunk_size => 32768 => 32768
memcache.compress_threshold => 20000 => 20000
memcache.default_port => 11211 => 11211
memcache.hash_function => crc32 => crc32
memcache.hash_strategy => consistent => consistent
memcache.lock_timeout => 15 => 15
memcache.max_failover_attempts => 20 => 20
memcache.protocol => ascii => ascii
memcache.redundancy => 1 => 1
memcache.session_redundancy => 2 => 2

php-memcache扩展版本:基于3.0.8 beta的修改版本: 链接

阅读全文 >>