MENU

[置顶] 博客回归

起源

自2014年开博客至今,算起来也有俩三年啦。以前还在读书没有时间管理,很多东西不了解,如今上到大学才能看懂一些网页的代码,现在趁着寒假对博客重新整理,以前写的文章全部删除,从现在开始重新编写文章。

阅读全文

[置顶] 基于Linux EPOLL多路复用的C++轻量级WebServer

功能

  • 可作为静态webserver(常规的html、图片、视频等)
  • 支持GET、POST(交由cgi处理)请求
  • 多站点支持
  • 支持fastcgi(目前已支持php-fpm)
  • 支持反向代理
  • 支持session、cookie

todo:

  • 负载均衡(开发中,完善支持随机模式、hash模式、权重模式三种负载均衡策略)
  • 日志完善
  • 实现类似nginx中rewrite模块

项目地址 欢迎PR、Issue、Star。

阅读全文

基于余弦相似度算法计算文本相似度

原理

在数学几何运算中,余弦定理用于计算两条边的夹角,余弦值越大,夹角越小。当夹角为0°时,两条边(x,y)完全重合。计算公式如下:
$$ cosθ = \frac{ x_{1}x_{2} + y_{1}y_{2} }{\sqrt{ x_{1}^{2} + y_{1}^{2} }\sqrt{ x_{2}^{2} + y_{2}^{2} }} $$

而对于多维图像(x,y,z...)三(甚至n)条边,计算公式如下:
$$ cos(θ) = \frac{a*b}{|a||b|} = \frac{ \sum \limits_{i=1}^{n}(x_{i} * y_{i})}{ \sqrt{ \sum \limits_{i=1}^{n}(x_{i})^{2}} \sqrt{ \sum \limits_{i=1}^{n}(y_{i})^{2} } } $$

阅读全文

手撸基于C++11线程池

技术点

  • 采用queue作为一个队列,生产者消费者模式
  • std::condition_variable条件变量代替Linux Pthread库中的pthread_cond_*()函数提供条件变量相关的功能
  • C++11风格的std::function,后续可以改造成templete模板方法

阅读全文

Redis5之stream数据结构

redis中stream数据结构用于实现消息队列,当然之前版本也存在有pubsub(发布订阅方式的消息队列),而这个stream的设计引进类似kafka中的消费组

引用来自官方:Consumer groups were initially introduced by the popular messaging system called Kafka (TM). Redis reimplements a similar idea in completely different terms, but the goal is the same: to allow a group of clients to cooperate consuming a different portion of the same stream of messages.

阅读全文