安装mongodb cxx

安装环境centos7

安装libmongoc

sudo yum install pkg-config openssl-devel cyrus-sasl-devel
wget https://github.com/mongodb/mongo-c-driver/releases/download/1.8.0/mongo-c-driver-1.8.0.tar.gz
tar xzf mongo-c-driver-1.8.0.tar.gz
cd mongo-c-driver-1.8.0
./configure
make
sudo make install

安装mongocxx

wget https://github.com/mongodb/mongo-cxx-driver/archive/r3.0.1.tar.gz
tar xzf r3.0.1.tar.gz
cd mongo-cxx-driver-r3.0.1/build
#需要先安装好git,yum -y install git,不然会报错
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/ ..
sudo make EP_mnmlstc_core
sudo make -j4
sudo make install

欢迎大家订阅雀观代码, 我将给你讲述, 中小企业程序员, 淘金路上的故事.



写一个合适的监控运维系统-05-一年的优化打磨

杂谈

监控运维系统已经运行一年有余, 已经是开发和运维人员不可或缺的工具了, 几乎所有人上班的第一件事就是打开监控系统, 查看服务器状态. 即使出门在外, 也用可以用手机访问. 经过大量使用之后, 很多问题暴漏出来了, 该改的改, 改优化的优化, 这里说一下这一年的优化动作.

微信报警优化

如果服务器发生状况, 发送微信到用户, 可是如果处理不好, 就会产生微信轰炸, 所以后面定义了几个规则, 保证不产生信息轰炸.

  • 分组订阅, 每个人只关心负责的服务器分组
  • 单机报警限制, 如果一个服务, 在2.5分钟之内发生连续报警, 只触发第一次微信报警
  • 单用户报警限制, 单个用户2.5分钟之内, 同一组服务器, 只接受一次报警

这样可以有效的避免微信轰炸.
继续阅读

familia小白使用

familia到底是什么

Familia百度开源的文档主题推断工具、语义匹配计算工具。

主题模型在工业界的应用范式可以抽象为两大类: 语义表示和语义匹配。

  • 语义表示 (Semantic Representation)

    对文档进行主题降维,获得文档的语义表示,这些语义表示可以应用于文本分类、文本内容分析、CTR预估等下游应用。

  • 语义匹配 (Semantic Matching)

    计算文本间的语义匹配度,我们提供两种文本类型的相似度计算方式:

    • 短文本-长文本相似度计算,使用场景包括文档关键词抽取、计算搜索引擎查询和网页的相似度等等。
    • 长文本-长文本相似度计算,使用场景包括计算两篇文档的相似度、计算用户画像和新闻的相似度等等。
      继续阅读

composer 私有项目

接触composer

composer 是php的包管理工具, 有了composer我们可以轻易的从网上获取需要的组件, 构建我们的项目. 最近在写一个软件项目, 需要从C++行情服务器获取一些数据, 准备写一个模块专门用来对接C++接口. 考虑到公司大量的php项目需要获取行情数据, 如果把此模块做成composer包, 将会有很大的帮助.
继续阅读

流量优化

服务器带宽流量

带宽跟流量是个怎么也不能忽略的问题, 如果无法做好流量优化, 服务端写得再好, 客户端依然会卡.

客户端卡顿分析

如果服务器与客户端之间, 平均流量为100k, 客户端的网络情况为200k, 那么平时推送客户端不会卡顿, 可是实际上客户端会生成某些数据,这些数据的生成需要大量的历史数据才能完成, 假设需要2M的历史数据. 那么实际上我们将花费10秒左右的时间才能完成此数据的推送. 这个时候整个客户端会表现为不走数据, 用户就会觉得, 这是什么鬼!!!
继续阅读

hiredis 异步

hiredis

hiredis是redis官方库, 提供了同步与异步的接口. 对于高性能的服务器, 异步的接口给我们很大的发挥空间.

同步还是异步

使用同步还是异步并没有绝对的定论, 我们可以根据一些性能表现确定使用同步或是异步. redis性能非常好, 以至于在插入或是读取单条数据的时候几乎是感觉不到差异的. 可是一旦同时插入大量数据, 同步延迟非常严重, 读取平均长度30的kv, 大约是10万/秒, 如果我们有千万级别的数据, 整个卡顿会上分钟, 而且带宽会被打满, 所以一般大数据的读取, 我们会采用异步的方法.
继续阅读

libevent zmq消息无法响应

前言

服务器使用libevent做事件循环, 然后使用zmq做线程间通讯, libevent监听zmq的消息, 一旦zmq有消息过来, 就会回调到固定的函数。使用zmq需要注意的是, 一旦zmq消息回调, 必须读空整个队列的消息. 否则下次就不会回调。

问题症状

我们使用libevent监听了多个zmq, 同时监听了别的事件(退出事件等). 其中有一个zmq消息非常繁忙, 每秒会产生上万到十万不等的数据. 这种时候会发现libevent再也无法响应其他消息。
继续阅读

前端的一些奇怪的问题备注

bind函数

当绑定一个函数, 然后这个函数会在别的地方回调的时候,会丢失上下文的信息,这个时候,我们就要使用bind函数, 将这个上下文绑定到这个函数里面

  stRes: STRes = {
    reName: {
      list: "users",
      total: 'pageinfo.count'
    },
    // 这个函数, 会在内部被调用, 这个时候一定要绑定this, 否者这个this, 就会是奇怪的东西
    process: this.resprocess.bind(this)
  };

  resprocess(data: STData[], rawData?: any) {
    for(let index in data) {
      data[index]['image'] =this.userimage(data[index]['image']);
    }
    return data;
  }