这里并没不是讨论大学课程中所学的《编译原理》,只是写一些我自己对C++编译器及链接器的工作原理的理解和看法吧,以我的水平,还达不到讲解编译原理(这个很复杂,大学时几乎没学明白)。

要明白的几个概念:

阅读全文 »

序言

新浪微博在2014年3月公布的月活跃用户(MAU)已经达到1.43亿,2014年新年第一分钟发送的微博达808298条,如此巨大的用户规模和业务量,需要高可用(HA)、高并发访问、低延时的强大后台系统支撑。
微博平台第一代架构为LAMP架构,数据库使用的是MyIsam,后台用的是php,缓存为Memcache。
随着应用规模的增长,衍生出的第二代架构对业务功能进行了模块化、服务化和组件化,后台系统从php替换为Java,逐渐形成SOA架构,在很长一段时间支撑了微博平台的业务发展。

阅读全文 »

走了很远很远的路后,再回首,纷扰的往事如潮退去,岁月的沙滩上,只留下一层亮晶晶的珠贝——那是从记忆的深海里冲上来的,是我们这一路遇到的一个个人的背影。赤足走在细软的沙上,俯身拣拾一个个微小的片段,在我,是最温暖的事。我总是能从这样的回望里,获得足够多直面现实的力量。总能从渐去渐远的步履里,寻觅到一种深深的感动,在一遍遍悠长的回味中,独自微笑,或不由自主地落下泪来。

阅读全文 »

做RESTful开放平台,一方面其API变动越少, 对API调用者越有利;另一方面,没有人可以预测未来,系统在发展的过程中,不可避免的需要添加新的资源,或者修改现有资源。因此,改动升级必不可少,但是,作为平台开发者,你必须有觉悟:一旦你的API开放出去,有人开始用了,你就不能只管自己Happy了,你对平台的任何改动都需要考虑对当前用户的影响。因此,做开放平台,你从第一个API的设计就需要开始API的版本控制策略问题,API的版本控制策略就像是开放平台和平台用户之间的长期协议,其设计的好坏将直接决定用户是否使用该平台,或者说用户在使用之后是否会因为某次版本升级直接弃用该平台。

阅读全文 »

Redis简介

Redis是一个Key-Value 存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与 memcached一样,为了保证效率,数据都是缓存在内存中。区别的是 Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave(主从)同步。

阅读全文 »

原生的Hexo是不支持数学公式的显示的,但听说过Latex所以在网上搜教程来着,大部分搜到的渲染公式的方法都分为两个步骤:

在theme的header中插入对MathJax CDN script的引用,并配置inline math;
在文章中用inline math插入公式。
但其中似乎存在两个缺点:
需要人肉进行的工作太多;
遇到特殊符号需要人肉escape,否则会被markdown parser吃掉。
于是引用了CATX开发的一款插件来实现这个功能。

阅读全文 »

大家都看过Stackoverflow上的公式吧,漂亮,其生成的不是图片。这就要用到MathJax引擎,在Markdown中添加MathJax引擎也很简单,

1
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>

然后,再使用Tex写公式。$$公式$$表示行间公式,本来Tex中使用(公式)表示行内公式,但因为Markdown中\是转义字符,所以在Markdown中输入行内公式使用\(公式\),如下代码:

阅读全文 »