月度归档:2016年11月

关于OAuth2.0的几个认识

OAuth2.0 是目前各大互联网公司主流使用的”单点登录+授权”协议,被各大开放平台所应用。

这里要注意,”单点登录”是SSO系统的职责,而”授权”则是OAuth系统的职责。但是,如果没有统一的用户帐号管理和登录认证能力,”授权”这个概念也无从谈起,因此现在OAuth2.0的实现普遍集成了两者。

OAuth2.0要解决的问题,一方面是统一的用户帐号体系,也就是一处登录处处使用;另一方面,通过”授权”机制避免用户帐号被第三方站点盗取的同时,又给予第三方获取用户基础信息的能力。

继续阅读

谈谈php里的DAO Model AR

这次要谈的3个关键字:DAO、Model、AR,是我们在做web应用时常见的几个概念,也被称作设计模式(design pattern),先简单看看它们的全拼和中文:

  • DAO:Data Access Object 数据访问对象
  • Model:数据模型
  • AR:Active Record 活动记录

几乎所有的web开发框架在设计的时候,都或多或少用到了这些设计模式来实现了MVC中的M层,通过为开发者提供强有力的类库,简单便捷的完成数据库访问。 继续阅读

基于redis实现可靠的分布式锁

什么是锁

今天要谈的是如何在分布式环境下实现一个全局锁,在开始之前先说说非分布式下的锁:

  • 单机 – 单进程程序使用互斥锁mutex,解决多个线程之间的同步问题
  • 单机 – 多进程程序使用信号量sem,解决多个进程之间的同步问题

这里同步的意思很简单:某个运行者,用某个工具,保障某段代码,独占的运行,直到释放。

分布式锁解决的是 多台机器 – 多个进程 之间的同步问题,因为不同的机器之间mutex/sem无法使用。不过要注意:即便如此,一个进程内多个线程之间仍旧建议使用mutex同步,尽量减少对分布式锁服务造成不必要的负担。 继续阅读

基于react实现无限分级菜单

在开发CMS(内容管理系统)系统时,一般都会用到一个侧边栏或者顶部的二级或者三级菜单,当点击或者鼠标悬浮时,菜单能够随之展开或收起。

本文纯粹为了练习一下react,因此我会在react环境下实现这么一个小组件:它假设了菜单数据来自于网络请求,并且仅实现无限分级菜单的核心功能(父子关系,展开与收起),至于样式则不是关注的重点。 继续阅读