什么是幂等
幂等(idempotent)是一个数学 / 计算机学的概念。
一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。
幂等操作
可以是一个数学函数、一个类方法、一个 API
调用 etc.
任意多次执行
是指用相同参数,重复多次调用。
影响相同
是指对业务状态的影响是一致的。这个概念比较抽象,用具体的例子说明。
Writing 1000 Words a Day Changed My Life
幂等(idempotent)是一个数学 / 计算机学的概念。
一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。
幂等操作
可以是一个数学函数、一个类方法、一个 API
调用 etc.
任意多次执行
是指用相同参数,重复多次调用。
影响相同
是指对业务状态的影响是一致的。这个概念比较抽象,用具体的例子说明。
2010 年 5 月,谷歌开始提供
HTTPS
加密搜索服务。2014 年 8 月,谷歌曾调整搜索引擎算法,并称「比起同等
HTTP
网站,采用HTTPS
加密的网站在搜索结果中的排名将会更高」。2014 年 9 月, 百度在一份公告中表示「百度不会主动抓取
HTTPS
网页」2015 年 3 月, 百度启用全站
HTTPS
加密搜索服务2016 年 9 月,微信宣布小程序要求使用
HTTPS
请求进行网络通信。2016 年 9 月,百度曾就「
HTTPS
站点如何建设才能对百度友好」问题发布了一篇文章,给出了「提高HTTPS
站点的百度友好度」的四项建议及具体操作。2016 年 10 月,苹果要求
iOS
设备发起的所有请求必须在 2017 年 1 月 1 号之前使用HTTPS
。(WebView 内的请求不在要求范围内)
众所周知,HTTPS
在效率上要比 HTTP
差、在部分搜索引擎上 HTTPS
也会对SEO
也会造成一定的负面影响、站点要支持 HTTPS
也必然会付出不少的精力。
可既然有这么多的问题和成本在里面,那为什么这么多的大厂还在争先恐后的推动 HTTPS
的发展和建设呢?
类似 Ubuntu 下的 apt-get
.
使用 Homebrew 可以安装 macOS 没有预装 但你需要的东西, 比如 wget
|
|
也可以用来安装 macOS 预装了,但版本较低的软件,比如 vim
|
|
软件包存放目录 /usr/local/Cellar
“To install, drag this icon…” no more!
它可以让我们更加优雅、简洁、快速的管理我们的 Mac 应用。
安装:
|
|
正常的 Mac 软件安装流程:打开官网,下载,双击 *.dmg
, drag this icon into Folder Application
更加优雅的安装方式:
|
|
软件存放目录 /usr/local/Caskroom
推荐安装的软件
|
|
今天为大家介绍一下链家网的架构演进历史.
在 2014-2016 两年间,B 端用户由 3W 增加到 15 W, 网站点击数量由 80,000,000 提升到 1,600,000,000。
从业务图的最上面可以看出来, 整个系统的交易链路很长
整个平台主要分为 2B、2C 两大块。
对于 C 端用户, 如果系统出了问题, 用户可能就会丢失.
对于 B 端用户, 他们是非常敏感的, 如果系统出了问题会直接影响到他们的绩效, 奖金.
所以系统的稳定性对于链家而言是很重要的概念. 链家之前也很重视这块, 所以和一些知名的厂商进行了很深入的合作. 什么叫深入呢?
就是花了好几个亿, 订做了一整套完整的系统, 当时的系统非常的高大上. 支撑了过去很多年的业务发展.
C 端项目主要用 PHP 实现。
B 端项目主要用 Java 实现,运行在 商业 的 Websphere 容器中。
前端用 F5 做硬件负载。
B 端存储主要用 Oracle。 C 端存储主要用 MySQL
这么强大的一套系统, 运行的怎么样呢?
有时候很有规律, 每个月总有那么几天会挂掉;
有时候也不是那么有规律, 每次挂掉的原因都不一样.
当时在刚刚接手这套系统的时候, 就是在救火, 同事给我起的外号, 叫消防队长.
当时的情况就是拿着消防队长的钱, 操着卖白粉的心. 一个不小心就可能被十几万经纪人在背后默默的慰问了无数次.
master
分支Release
版本 - 包含线上已发布代码。master
分支的代码只允许从 pre_release
分支进行merge
pre_release
分支预发布版本 - 发布到测试环境,用于产品 & 测试人员进行功能性测试。
包含本次 Release 时,预上线的所有功能。
Note:禁止提交任何正在开发中 & 不准备上线的功能代码。
dev
分支 - 此分支策略仅供参考
Dev
版本 - 发布代码到开发公用的测试服务器,当开发的功能需要多个 Developer
协作完成时,可以把代码提交到 dev
分支。
dev
分支的代码,只需要在 push
前,保证代码的正确性即可(不要让其他人在检出项目后报错
)。
Dev
版本 - 每个人新建自己的分支 dev_xxx
(xxx 为开发人员自己的名字缩写)& push
到远程仓库。
主要用于保存本地代码在远程服务器的备份,防止开发工作丢失。
feature-xxx
- 功能性开发分支Developer
在接到新需求时,可在本地自建 feature-xxx
分支。
在开发过程中,如果有需要,可以将代码 push
到 dev
分支,进行多人协作。
在功能开发完成后,
merge
到 pre_release
分支 & push
。bug-xxx
- Bug 分支在修复 Bug
时,
Bug
不着急 & 很好修复, 直接在 pre_release
分支修正后 push
到远程仓库即可。Bug
不着急 & 很难修复,可能会影响到版本的发布,则在本地新建分支 bug-xxx
,修复完成后,根据是否需要在下次发版时修复此 bug
来决定是否推送到 pre_release
分支Bug
是从线上环境发现,并需要立即解决。则:master
分支新建分支 bug-xxx
, 修正完成后,直接 push
到远程仓库,然后由项目负责人进行合并处理 & 发布上线bug-xxx
分支 merge
到 pre_release
分支 & push
在程序员的世界里, 有一个有驳常理的现象,优秀的程序员都是既懒又傻的。
因为懒,他才会写出各种各样的工具来替自己干活。
因为懒,他才会想办法避免去写无聊重复的代码——因此避免的代码的冗余,消减了维护的成本,使重构变得容易。
最终,这些由于懒惰激发出的动力而开发出的工具和最佳编程实践方法提升了产品的质量。
Maven 的诞生自然也难以摆脱这个既定的事实 - 只是因为程序员很懒 ╮(╯▽╰)╭, 还爱瞎折腾。
Demo 中安装版本为
1.0.0
前提 Python on Linux - 安装
Source
下载地址, 并复制Linux
服务器的终端cd /usr/local
wget https://pypi.python.org/packages/source/T/Twisted/Twisted-15.2.1.tar.bz2
tar xvf Twisted-15.2.1.tar.bz2
cd Twisted-15.2.1
python setup.py install
yum install libxml2
yum install libxslt-devel
pip install lxml
yum install libffi-devel
pip install scrapy
scrapy version
# 是否正常输出
REF : 官方文档
Demo 中安装版本为
2.7.10
日期:20150629.0530
yum install sqlite-devel
安装新版本的 python 时, python(CentOS)需要重新编译sqlite3 的类库Gzipped source tarball
de 超链地址复制.Linux
服务器的终端cd /usr/local
wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
tar xvf Python-2.7.10.tgz
cd Python-2.7.10
./configure
make & make install
python --version
是否显示正常版本号
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip -V
是否显示正常版本号
你看, 生活好像本就该这样, 有一点小小的追求, 一点小小的期望. 随心, 随性的活着. 会遇到一点挫折, 会感到一点辛苦. 就好像一切都是那么的自然而然. 我们努力去感受平凡中那点滴的幸福, 而在一切的不如意的面前, 幸福也才显得更加弥足珍贵.
你说呢?
在 Programmer 的世界里, Hello World 永远是第一个老师. 就像刚刚折腾到的个人博客~, ta 还是第一个出生的~.
|
|
博客框架选取: Hexo