11 五山小新新

尚未进行身份认证

希望每天6点下班,然后逛超市,买水果,买牛奶,看美女。

等级
TA的排名 1w+

MySQL 索引基本常识

本文摘自微信公众号。什么是索引?索引为什么查询快,索引的数据结构是什么?聚簇索引/非聚簇索引区别?什么是覆盖索引?唯一索引/普通索引?单列索引/联合索引区别?Full-index全文索引?什么是下推索引?什么是最左匹配,查询回表?哪些字段适合建索引?为什么一般主键索引最好是自增长的, 尽量短的数值类型?为什么有些SQL不走索引?索引的最佳实践?1. 索引为什么快索引...

2020-03-28 00:31:19

TarsCpp 的pb2tarscpp支持协程

1. 背景讲真的,开源出来的tars代码质量真的很一般。虽然原生的tars协议(jce协议),支持的比较好, 但是其他协议支持就很一般了,比如pb协议的支持,里面有几个bug, 包括命名空间的支持、rpc调用多个函数指针错乱,以及对协程不支持。anyway,内部版本的taf应该没有这么些问题,可能是负责开源的同学把它阉割过度了。只能说,tars开源的项目真的一点都不真诚。再来讲讲,tars的异...

2020-02-17 08:40:21

double buffer 实现

1. 背景字典或者模型加载经常会用到双buffer这样读多写少的数据结构。这里介绍一个从百度的brpc拿出来的一个双buffer实现。2. 痛点经常会遇到的是一个读远多于写的数据结构:大部分时候,所有线程从一个不变的server列表中选取一台server。如果server列表真是“不变的”,那么选取server的过程就不用加锁,我们可以写更复杂的分流算法。一个方法是用读写锁,但当读临界区不是...

2020-01-18 15:31:16

基于DAG简单的任务调度

1. 背景DAG:是一个无回路的有向图。一个经典的应用是用于任务的调度,用来定义任务的依赖关系和流向, 根据整个DAG的定义,可以从中获取哪个任务该先执行,哪个任务后执行。哪些步骤是可以并行执行的。2. DAG的定义这里阐述一个简单的应用例子。推荐系统的通常需要进行多队列召回,然后进行粗排、精排、混排。可以将这些操作抽象成不同类型的rpc调用,在数据召回之后,还可以抽象出来两种动作,包括一种...

2020-01-11 01:16:56

无锁内存队列

#include <chrono>#include <iostream>#include <thread>#include <vector>#include "lockfree_queue.h"using namespace wwsearch;using namespace std;class LockFreeQueueTest {...

2019-12-23 01:01:05

tensorflow C++ api

1. 背景TensorFlow是一个从离线到在线一条龙实现的机器学习库。 一般来说,离线算法一般采用Python进行开发,并进行训练,以及得到模型结果, 而在线部分,采用的则是C++来实现,主要考虑到在线预测要一定的性能要求。这里可以采用TensorFlow serving来实现。但是一般来说,为了更好地和内部rpc框架融合,需要将TensorFlow的库,植入到内部的rpc的框架里面。本文主...

2019-11-19 23:47:13

java jni 入门

1. 安装java环境yum install java-devel -yyum install java -y2. 编译流程下面将介绍编写 JNI 入门教程HelloNative程序的编写, 主要的步骤为:编写 HelloNative.java 程序;编译并得到 HelloNative.h 头文件;编写 HelloNative.c 程序;编译动态链接库libHel...

2019-09-18 14:44:32

搜索排序之线性模型

1. 背景搜索排序最简单的模型算法是point wise,这里简单展示使用简单的线性模型调权的方案。2. 数据集合grade,titleScore,overviewScore,ratingScore,comment:# <docid> keywords@movietitle4,10.65,8.41,7.40,# 1366 rocky@Rocky3,0.00,6.75,7....

2019-09-16 01:53:52

NDCG原理和实现

1. 原理对于搜索引擎,本质是用户搜一个query, 引擎返回一个结果列表,那么如何衡量这个结果列表的好坏?我们希望把最相关的结果放到排名最靠前的位置,因为大部分用户都是从上往下阅读的, 那么最相关的前面可以最大程度减少用户的阅读时间。我们希望整个列表的结果尽可能的和query相关。第一个条件的满足是首要的,而第二个条件的加入是保证整体结果质量,而这两个条件都体现在了NDCG里...

2019-08-03 00:46:45

深度文本匹配

1. 传统的文本匹配最近在了解文本匹配相关一些实现和算法。在信息检索系统里面,如何厘清文本的相关性,是一个非常关键的问题。所谓的相关性,主要包括两个方面, 一个方面是文本相关性,还有一个语义的相关性。在经典的模型里面,比较常见的做法是向量空间模型(vector space model)。向量空间模型, 原理则是将query和doc的文本映射成同一个数字向量空间,然后通过consine或者Jac...

2019-07-31 08:13:15

向量检索的搜索引擎实现

1. 基本原理与推荐系统不同的是,搜索系统比较重要的用户特征是query,信息检索的过程则是根据query,给用户返回doc集合。传统的检索系统,对文本进行切词, 然后每个词下面会生成一个倒排索引。 query查询时,则是对query进行分词,然后到对应的词进行直接召回即可实现,数据集合的返回。有了数据集之后,如何给doc排序是一个比较关键的问题,毕竟人的精力是比较有限的,在浩渺的知识大海里...

2019-07-16 01:13:17

yum rpm 常用命令使用手册

1. yum 源直接使用yum命令实现对rpm包的搜索、安装以及yumdownloader下载rpm包,用于别的机器。yum search package_nameyum install package_nameyumdownloader package_name外部查找rpm包的网站:http://rpmfind.net/,el6的适用于tlinux1.2,而el7的适用于tlin...

2019-07-06 23:11:18

Faiss 入门

1. Faiss 原理单元-探测(Cell-probe) 方法以失去保证以找到最近邻居为代价来加速该过程的典型方法是采用诸如k均值的分区技术。 相应的算法有时被称为 cell-probe 方法:我们使用基于多探测的基于分区的方法(可以联想到best-bin KD-tree的一种变体)。特征空间被划分为 ncells 个单元格。由于散列函数(在k均值的情况下,对最靠近查询的质心的分配)...

2019-07-01 00:37:30

python 常用api

1. 用法从json str 转成jsonfor line in f: data = json.loads(line) one_data = data.values()按照文本顺序from collections import OrderedDictfor line in f: data = json.loads(line, object_pairs_hook=Orde...

2019-06-28 16:12:09

Flink 入门

Flink 目前最流行的流式引擎,主要是用来替换jstorm和spark streaming的, 实现对实时数据流的处理,很多实现和spark的操作非常相像。1. 源码安装http://archive.apache.org/dist/flink/flink-1.8.0/ tar -zxf flink-1.7.0-bin-hadoop28-scala_2.11.tgz ./bin/...

2019-06-25 23:37:45

RocksDB 入门

1. 基本介绍RocksDB是Facebook开源的一个k-v存储组件,支持点查找和范围扫描, 并提供ACID保证。实现架构主要参考的是开源的leveldb和hbase的设计思想。目前RocksDB主要用于本地存储引擎。1.1 基础架构图Rocksdb中引入了ColumnFamily(列族, CF)的概念,所谓列族也就是一系列kv组成的数据集。所有的读写操作都需要先指定列族。写操作先写WA...

2019-06-24 00:55:49

威尔逊得分 Wilson Score 排序算法

https://www.jianshu.com/p/4d2b45918958

2019-06-18 00:29:36

Protocol Buffer 常用操作指南

1. 数据结构复制

2019-06-17 17:41:23

Centos7 / Centos 8常用操作

1. 背景手动升级gcc版本相当麻烦,需要安装很多依赖。于是有了yum这样的包管理。可以方便升级软件解决依赖的问题。2. redhat提供的方案yum升级gcc 6方法具体如下:yum -y install centos-release-sclyum -y install devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutil...

2019-06-16 22:53:36

docker 常用命令

记录常用的docker命令1. 常用命令进入docker容器内部sudo docker ps -asudo docker exec -it 775c7c9ee1e1 /bin/bash停止容器sudo docker stop 775c7c9ee1e1 启动容器sudo docker run 775c7c9ee1e1 ...

2019-06-14 10:54:06

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。