架构师修炼之道

知识日新月异,唯有保持同步迭代,才能适应美好的未来!

0%

grep是一个最初用于Unix操作系统的命令行工具。在给出文件列表或标准输入后,grep会匹配一个或多个正则表达式的文本进行搜索,并只输出匹配的行或文本。它是一个非常实用的强大文本搜索命令,下面介绍它常见的几种应用场景。

使用方法

为了方便演示grep的各种常见使用方法,我们在github上随意找一个项目并下载,接着进入根目录开始测试。

1
2
3
4
5
cd /tmp
wget -c https://github.com/WordPress/WordPress/archive/master.zip
unzip master.zip
mv WordPress-master WordPress
cd WordPress
阅读全文 »

CAS介绍

  • CAS 是Yale(耶鲁)大学一个开源的企业级单点登录系统,它的特点:
    1. Java (Spring Webflow/Spring Boot) 服务组件
    2. 可插拔身份验证支持(LDAP,Database,X.509,MFA)
    3. 支持多种协议(CAS,SAML,OAuth,OpenID,OIDC)
    4. 跨平台客户端支持(Java,.Net,PHP,Perl,Apache等)
    5. 与uPortal,Liferay,BlueSocket,Moodle,Google Apps等集成

CAS提供了一个友好的开源社区,方便开发者积极支持和贡献项目。

阅读全文 »

背景

  • 从支付宝转账1万块钱到余额宝,支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。
  • 在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的商品数量必须减1,怎么保证?
  • 在广告系统中,当用户点击某广告后,除了在点击事件表中增加一条记录外,还得去商家账户表中找到这个商家并扣除广告费,怎么保证?
    这些问题本质上都可以抽象为:当一个表数据更新后,怎么保证另一个表的数据也必须要更新成功。

思考

  1. 如果系统规模较小,数据表都在一个数据库实例上,本地事务方式可以很好地运行。
  2. 但是如果系统规模较大,比如支付宝账户表和余额宝账户表显然不会在同一个数据库实例上,他们往往分布在不同的物理节点上,这时本地事务已经失去用武之地。
    阅读全文 »

背景

越权漏洞是Web应用程序中一种非常常见的安全漏洞,在中小网站甚至某些大型网站中同样存在,它的威胁在于某个账户可以控制全站用户数据,包括新增、修改和删除操作。越权漏洞的成因主要是由于开发人员在对数据进行操作时对客户端请求过来的数据过分相信而遗漏了权限判定。

越权类型

为了方便描述,在这里假设某网站有两种角色(普通用户和管理员),有三位用户,其中两位普通用户A和B,一位管理员C。

垂直越权

如果A用户登录网站可以查看或变更C的功能则属于垂直越权,由此可见垂直越权通常发生在不同角色之间的。

水平越权

而同角色之间可以互相查看或变更对方的数据则属于水平越权,即A可以查看或变更B的数据。

阅读全文 »

在phpstorm中发现项目打开之后找不到引入的第三方库,尝试过重新打开并引入项目仍然不能解决,最后采用下面方法解决了问题。

由于phpstorm编辑器在初次引入项目时会缓存项目文件,并为这些文件建立索引,以满足全文查询和方法间的跳转要求。如果这些索引出现损坏那势必影响前述的要求,我遇到的问题就在这里,只要让它清理这些缓存文件并重新加载就好。

阅读全文 »