[关闭]
@guochy2012 2015-05-07T11:35:20.000000Z 字数 1297 阅读 2218

郭春阳

教育经历

08.9 - 12.7 青岛大学 软件工程 本科

求职意向

Linux C++服务器开发

开发技能

  1. 掌握C++,了解STL、Boost部分组件以及C++11新特性 右值引用、Lambda
  2. 了解Linux下的shell和网络编程、进程间通信
  3. IO、非阻塞
  4. 了解TCP协议
  5. 熟悉Linux多线程服务器的编写,熟悉网络库Netty、muduo(源码实现),了解常见的服务器并发模型
  6. UNIX 域套接字
  7. 了解常见的数据结构与算法,例如链表、红黑树、排序、哈希表、动态规划等
  8. 了解MySQL数据库编程
  9. 熟练掌握Git版本控制系统
  10. 其他较熟练的技术为JavaSE,Ruby on Rails,PHP等

工作经历和项目经验

2013.9 - 2014.11 XXXXXX

最初负责用Rails进行web后端开发,后使用C++编写Linux服务器程序

  1. 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/

  2. 搜索词纠错模块
    这是公司一个搜索项目的子模块。大体思路是根据字符串编辑距离算法计算单词之间的相似度,向用户反馈最精确的结果。
    之后根据UTF8编码的特性改进编辑距离算法,使之可以正确处理UTF8编码的中文词语,用到结巴中文分词计算中文词频。
    后来把英文字母和汉字根据UTF8,统一转化成uint32_t的整数,实现了倒排索引,可以正确的索引英文单词和中文词语,以及基于生产者消费者模型和LRU算法,编写了一个小型的缓存池,用以提高查询速度。 项目框架采用TCP和线程池搭建。

protobuf redis

  1. FTP服务器的实现
    项目采用C语言和多进程模型实现,使用了socketpair作为进程通信机制。实现了FTP服务器的基本功能,如用户登录、密码验证、目录传输、文件传输以及断点续传,同时数据的传输实现了FTP的PORT和PASV两种工作模式。子进程采用了命令映射来处理FTP指令。
    对于用户的每次连接都创建一对父子进程,nobody进程负责数据连接的发起、控制,子进程登录为用户进程,负责数据的传输。
    整个项目分为辅助模块(实现常用的函数,如readn、readLine、传递fd等)、nobody模块(负责发起数据连接、绑定20端口等)、子进程模块(主要处理各种FTP指令)以及进程通信模块(负责父子进程的通信)。
    最后实现了限速、空闲断开、限制最大并发连接数等功能。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注