# 字符串匹配的后缀算法

const char* strstr( const char* str, const char* target );
char* strstr( char* str, const char* target );

Finds the first occurrence of the byte string target in the byte string pointed to by str. The terminating null characters are not compared.

“无敌”的C++

TCP发送接收过程图

# Hello, SciPy!

“学而时习之，不亦乐乎”，利用放假几天时间，简单复习了一下之前学习的Machine Learning课程，并且用刚上手没两天的SciPy重新完成了大部分Ng的课后作业，SciPy真的非常好用~

SciPy

# OpenStack网络迷宫：Neutron以及LBaaS

“一团糟” – 我对OpenStack网络实现的第一感觉

OpenStack的网络模块相信不会有人否认是整个OpenStack中最复杂的部分，即使是OpenStack社区的成员也常常被网络模块的复杂性搞的焦头烂额。因为研究负载均衡的关系，我不得不对网络模块进行一点粗浅的了解，这里按照个人的理解把这些东西总结起来写下来。

PS：本文中所描述的所有概念和实现均基于OpenStack当前版本（neutron git version : 2921d3c686b5f5cd68d51f906766983f975b1cf2）,在此也强烈建议任何想要了解OpenStack网络的同学一定要实际搭建一个可用的环境来对其中网络的每一个环节进行推敲。

# SRM657 DIV1 Problem Sets

Cat Snuke came up with some problems. He wants to construct as many problem sets as possible using those problems. Each problem set must contain exactly three problems: one for the Easy slot, one for the Medium slot, and one for the Hard slot. Each problem can only be assigned to a single slot in a single problem set. He came up with E + EM + M + MH + H problems in total. The distribution of the problems is as follows:

• E problems can only be used in the Easy slot.
• EM problems can be used either in the Easy slot or the Medium slot.
• M problems can only be used in the Medium slot.
• MH problems can be used either in the Medium slot or the Hard slot.
• H problems can only be used in the Hard slot.

Return the maximal number of problem sets he can construct.