在编程中的幂等性idempotence

在编程中,可能经常会听到幂等这个词,第一次是年初红包技术复盘时听到了这个词,这次是因为写脚本时被质疑,是否支持幂等。这里总结一下,也算是个记录吧。其实在编程中,很多时候都需要支持幂等,有的程序自然存在幂等,有的需要我们控制。比如与支付相关的场景,比如我们常见的HTTP方法。

Read More

mysql主从复制原理理解与实践

只从最简单的mysql主从复制原理与实践着手,之前看到Yshiba老师讲解的挺细致透彻,顺便做下笔记并实践一下。

主从复制原理 replication

主服务器(master)的binlog,记录master的各种操作(insert、update、delete),master的磁盘只要发生变化就会记录到自己的binlog里面。

从服务器(slave)如果能读取到master的binlog,那么就可以将master的所做操作跟着执行一遍。但是由于master的binlog中含有master的一些信息,所以需要对binlog进行分析加工,slave的relaylog就是干这种事的,实际上slave将使用relaylog终极日志上的sql操作,保证主从数据一致性。

mysql-master-slave

Read More

静态方法和静态成员变量

问题来源:

写了一个Model_User,创建了2个静态方法func1和func2,2个静态方法中都含有公共的连接数据库的逻辑,突然想到代码重用,然后创建了构造方法,将连接数据库的逻辑放在__construct()中,然后去调用Model_User的静态方法

Read More

vim学习笔记

还是要经常折腾一下

最近稍微折腾了一下vim,大家都知道linux环境下如果vim操作的足够熟练,完全可以替代各种文本编辑器,然而自己对vim的操作仍停留在最原始和基础的命令,只会简单的增删改查,比如删除d,进入编辑模式i,复制粘贴y&p,代码上下翻阅左右箭头,看到这你估计都惊呆了,怎么这么low!也是由于近期经常需要到仿真机上修改代码,发现自己vim编辑效率超级低,这才想着好好过一遍vim指令,提高逼格!^_^

vim配置文件.vimrc

这个文件是vim的配置文件,在这里配置一下全局生效,更加丰富的配置后续逐步学习

  1. 比如之前每次查代码行数都要 :set nu,如果写在.vimrc就不用每次都:set nu了。
  2. 比如写完一行代码enter换行后,又从头再来,必须手动tab缩进。。。
1
2
set number # 显示行号
set autoindent # 自动缩进

Read More

Mac下安装LNMP(Nginx+PHP5.6)环境

安装Homebrew

从零开始安装Mac下LNMP环境的过程

确保系统已经安装xcode,然后使用一行命令安装依赖管理工具Homebrew

1
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

之后就可以使用

1
brew install FORMULA

来安装所需要的依赖了.更详细的信息参考Homebrew的[官方Cookbook][1]

因此使用Homebrew常见的流程是:

  1. 增加一个程序源(新增一个水龙头) brew tap homebrew/php
  2. 更新程序源 brew update
  3. 安装程序包(按照配方酿酒) brew install git
  4. 查看配置 brew config 可以看到程序包默认安装在/usr/local/Cellar下 (酒桶放在地窖内)

    Read More

laravel基础任务学习清单

关于Restful路由

Route::resource('task', 'TaskController');
产生多条路由,POST/DELTE/PUT/GET,对应着TaskController的各个方法;
对于laravel5.2,使用 php artisan make:controller TaskController --resource可产生默认的多种方法
通过php artisan route:list可以显示已经注册的路由列表

laravel-route-list

Read More