@guochy2012
2015-05-07T11:35:20.000000Z
字数 1297
阅读 2218
08.9 - 12.7 青岛大学 软件工程 本科
Linux C++服务器开发
最初负责用Rails进行web后端开发,后使用C++编写Linux服务器程序
Echo网络库的实现
这个项目主要是对TCP网络编程中的常用逻辑进行封装,采用Non-blocking IO和IO复用实现了Reactor模式。
项目分为两大块,一是TcpServer,内部实质是封装了一个EPoll模型,用户只需向TcpServer注册三个回调函数即可加入自己的业务逻辑,这部分的关键是对Tcp连接进行了封装。最初使用阻塞IO,后来改用非阻塞IO和缓冲区Buffer提高了效率。
二是对大量Linux底层组件进行封装,实现了MutexLock、Condition、Thread、ThreadPool、定时器等模块。
整个项目采用了C++11的function、bind实现用户回调函数,使用智能指针管理TCP连接的生存期。
//以前的缺点
最后项目打包成静态库使用。
代码见https://github.com/guochy2012/EchoLib/
搜索词纠错模块
这是公司一个搜索项目的子模块。大体思路是根据字符串编辑距离算法计算单词之间的相似度,向用户反馈最精确的结果。
之后根据UTF8编码的特性改进编辑距离算法,使之可以正确处理UTF8编码的中文词语,用到结巴中文分词计算中文词频。
后来把英文字母和汉字根据UTF8,统一转化成uint32_t的整数,实现了倒排索引,可以正确的索引英文单词和中文词语,以及基于生产者消费者模型和LRU算法,编写了一个小型的缓存池,用以提高查询速度。 项目框架采用TCP和线程池搭建。
protobuf redis