分类目录归档:未分类

线程池的自我修养

  最近重构行情服务端的框架,其中有一部分就是重写mysql线程池,线程池是一个很独立的东西,今天就拿出来给大家分享, 怎样设计一个线程池, 以及我是怎么做的.

为什么要使用线程池

  常见的线程池使用场景分为两种

  1. 大量计算, 充分利用多核

  这个很好理解, 当程序需要大量计算, 单核CPU跑到100%, 这个时候可以将计算任务分解, 分多个线程计算, 如果我们有4核, 那这个时候我们可以跑到400%, 理想情况下, 可以节省3倍的时间. 当然这个不是绝对的, 具体情况要具体分析. 总而言之, 是为了让程序充分打满CPU.

  1. 同步阻塞,转异步回调

  如果这个是web程序, 异步绝对是提高并发的神器. 在我们的C++服务器中, 也会有大量的阻塞任务, 可能是读取mysql, 可能是读取mongodb, 或者任意需要同步等待完成的事情, 那么在等待的时候, 我们的工作线程是完全没法做别的工作的, 这个时候我们就把等待的过程, 变成一个任务, 让线程池去做, 主线程继续处理别的工作, 等线程池完成之后, 再接管任务, 继续往下面执行.
继续阅读

合格的程序员

一个掉队的伙伴

前几天开除一个下属, 称他为A吧, 理由是负责的项目发生太多线上事故, 工作将近一年,产出太少. 做出这个决定是艰难的,意味着一年对他的培养付诸流水. 不仅是对A的一种伤害, 对公司, 直属负责人, 都是不小的损失. A有太多的毛病, 其中最严重的就是懒. 懒所以不学习, 不学习就不会进步, 思虑不周, 导致线上问题频发. 因为懒所以进度慢, 进而没有产出. 所以,怎样才是一个合格的程序员呢?

做一个勤奋的人

这是个很泛的概念, 怎样才能称得上勤奋? 是加班到12点? 熬夜赶项目? 这个没有定论. 个人觉得勤奋是一种思想, 一种体现在行动上的思想.
继续阅读

安装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

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



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

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;
  }