Save
Saving
  • G
    guluting

    alt

    配置centos上网

    cd /etc/sysconfig/network-scripts/  
    vi ifcfg-enoxxxxxxxxx  
    将最后一行的ONBOOT=no改为ONBOOT=yes  
    service network restart  
    yum install net-tools  
    

    GCC安装
    yum install gcc-c++


    一键安装开发工具集合
    yum groupinstall "Development Tools"


    EPEL仓库安装
    yum install epel-release


    安装GDB

    yum install ncurses-devel  
    wget http://ftp.gnu.org/gnu/gdb/gdb-7.6.1.tar.gz  
    tar -zxvf gdb-7.6.1.tar.gz  
    ./configure  
    make  
    sudo make install  
    cp gdb-7.6.1/gdb/gdb /usr/bin/gdb   
    gdb -v  
    

    OPEN SSL 安装
    yum install openssl-devel


    iconv 下载安装

    wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz  
    tar -zxvf libiconv-1.14.tar.gz   
    cd cd srclib/  
    sed -i -e '/gets is a security/d' ./stdio.in.h  
    
    ./configure --prefix=/usr/local  
    make  
    make install
    

    mysqlclient安装
    yum install mysql-devel


    CURL安装

    wget http://curl.haxx.se/download/curl-7.39.0.tar.gz
    tar -xzvf curl-7.39.0.tar.gz
    cd curl-7.39.0
    ./configure --with-ssl
    make
    make install
    

    BOOST安装

    yum install boost    
    yum install boost-devel    
    yum install boost-doc
    

    libevent安装
    yum install libevent-devel


    安装PIL图像处理模块
    yum install python-imaging

    posted in GuaiK机房 read more
  • G
    guluting

    alt


    第一步 添加mongodb源
    vi /etc/yum.repos.d/mongodb-org-3.2.repo


    输入如下内容:

    [mongodb-org-3.2]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
    

    第二步 开始安装
    yum -y install mongodb-org

    posted in GuaiK机房 read more
  • G
    guluting

    # -*- coding:utf-8 -*-
    import json
    import base64
    from Crypto.Signature import PKCS1_v1_5
    from Crypto.Hash import SHA
    from Crypto.PublicKey import RSA
    
    def sign_data(data):
        """ 将交易参数转换成签名用的字符串格式 """
        complex_keys = []
        for key, value in data.items():
            if isinstance(value, dict):
                complex_keys.append(key)
        # 将字典类型的数据单独排序
        for key in complex_keys:
            data[key] = json.dumps(data[key], sort_keys=True).replace(" ", "")
        return "&".join("{}={}".format(k, v) for k, v in sorted([(k, v) for k, v in data.items()]))
    
    def sha1_with_rsa(private_key, unsigned_string):
        """ 支付宝用的签名加密 """
        pkey_template = """-----BEGIN PRIVATE KEY-----
        {}
        -----END PRIVATE KEY-----"""
        # 开始计算签名
        key = RSA.importKey(pkey_template.format(private_key))
        signer = PKCS1_v1_5.new(key)
        signature = signer.sign(SHA.new(unsigned_string.encode("utf8")))
        # base64 编码,转换为unicode表示并移除回车
        sign = base64.b64encode(signature).decode("utf8").replace("\n", "")
        return sign
    

    posted in GuaiK实验室 read more
  • G
    guluting

    创建Docker组
    sudo groupadd docker

    将用户加入Docker组
    sudo gpasswd -a [username] docker

    重启Docker服务
    sudo systemctl restart docker

    posted in GuaiK机房 read more
  • G
    guluting

    修改sshd服务配置:
    vi /etc/ssh/sshd_config

    修改下面两项:
    GSSAPIAuthentication no UseDNS no

    重启sshd服务:
    systemctl restart sshd

    posted in GuaiK机房 read more
  • G
    guluting

    第一步备份原始文件,然后打开源

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak  #备份为 sources.list.bak
    sudo nano /etc/apt/sources.list     #编辑sources.list  文件
    

    写入一下数据

    deb http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
    deb-src http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
    

    然后使用 Ctrl+O 回车后保存文件,Ctrl+X 退出编辑器。

    执行一下指令:

    sudo apt-get update       #更新系统软件
    sudo apt-get upgrade      #更新已安装的包
    

    posted in GuaiK实验室 read more
  • G
    guluting

    Mjpeg-Streamer是一个从摄像头中捕获图像并通过网络组件提供在线视频服务的软件。

    安装步奏如下:

    sudo apt-get update
    
    sudo apt-get upgrade -y
    
    sudo apt-get install build-essential libjpeg8-dev imagemagick libv4l-dev cmake -y
    
    git clone https://github.com/jacksonliam/mjpg-streamer.git
    
    cd mjpg-streamer/mjpg-streamer-experimental
    
    make
    
    ./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www" –p  8080
    

    接着在浏览器中输入:http://树莓派ip:8080 就可以访问了

    posted in GuaiK实验室 read more
  • G
    guluting

    下载solr-7.2.0:
    wget http://archive.apache.org/dist/lucene/solr/7.2.0/solr-7.2.0.zip

    解压solr-7.2.0:
    unzip solr-7.2.0.zip
    mv solr-7.2.0 ./solr

    进入solr可执行程序目录
    cd ./solr/bin

    试运行一下看看输出什么结果:
    ./solr
    0_1532366214473_WX20180724-011613@2x.png

    启动solr服务(监听8080端口):
    ./solr start -p 8080

    检测服务是否启动成功,在浏览器中输入:
    http://localhost:8080
    或者在控制台输入:
    wget http://localhost:8080
    能够正常访问则说明启动成功了

    查看服务状态:
    ./solr status

    停止服务:
    ./solr stop


    下面说下如何在solr中创建Core:
    默认情况下创建会报错Can't find resource 'solrconfig.xml'
    假设Core的name和instanceDir都为ghost
    首先进入以下目录中:
    cd ./solr/server/solr
    再该目录下我发现了刚才我创建的目录ghost,并且还有一个将会被用到的目录configsets,这时候执行一下命令
    cp -r ./configsets/_default/conf/ ./ghost
    其中的名字更具实际情况修改,这时候在回到网页控制台创建Core即可成功

    posted in GuaiK机房 read more
  • G
    guluting

    搜索引擎4大组件:

    • 索引管理器(Index Manager)
    • 索引检索器(Index Searcher)
    • 索引构建器(Indexer)
    • 文档管理器(Document Manager)

    全文搜索方式:

    • 全扫描进行全文搜索(grep型搜索),KMP算法和BM算法
    • 索引进行全文搜索

    倒排索引(Inverted Index)基本原理

    0_1532273332303_WechatIMG321.jpeg

    当同时查找多个单词的文档时,先从词典中找出各个单词,然后分别获取这些单词的倒排列表,计算出这些列表的交集即可得到同事包含所有单词的文档列表。


    分词

    可以将一句短语拆分成多个单词,用来构建倒排索引。

    常用的中文分词算法:词素解析分割法,N-gram(q-gram)分割法。

    各个单词在文档中出现的次数叫做TF(Term Frequency)词频,常用于计算检索结果的排名等。


    检索模型(如何进行检索)

    将布尔检索的检索模型叫做布尔模型,布尔模型使用多个单词通过逻辑运算符连接而成进行查询检索(AND,OR,NOT)。


    关联度的计算方法

    • 余弦相似度(CosineSimilarity)
    • OkapiBM25

    构建倒排索引的过程

    提取词元,从作为检索对象的文档中提取出词元及其出现的位置,对于每个词元将其所在文档的引用信息(文档编号)和出现在文档中的位置保存起来。
    利用N-gram或者词素解析的方法将句子分割成词元的序列。


    倒排索引的学习资料

    Inverted_Index.pdf

    posted in GuaiK实验室 read more
  • G
    guluting

    首先使用include包含头文件:

    #include <iostream>
    #include <wchar.h>
    #include <locale>
    #include <codecvt>
    
    using namespace std;
    

    wstring转换成utf8编码

    /**
     * 将wstring转换成utf8编码
     * @param [in] text : 待转换的宽字符
     * @return 
     */
    string Utils::wstr2utf8(const wstring &text){
        std::wstring_convert<std::codecvt_utf8<wchar_t>>cnv;
        return cnv.to_bytes(text);
    }
    

    将utf8转换成wstring

    /**
     * 将utf8转换成wstring
     * @param  [in] text : 待转换的utf8字符串
     * @return 
     */
    wstring Utils::utf82wstr(const string &text){
        std::wstring_convert<std::codecvt_utf8<wchar_t>> cnv;
        return cnv.from_bytes(text);
    }
    

    分割UTF-8字符串

    /**
     * 分割UTF-8字符串
     * @param [in] text : 待处理的utf8字符串
     * @param [in] start : 开始位置
     * @param [in] leng : 长度
     * @return 
     */
    std::string Utils::utf8_substr(const std::string& text, uint32_t start, uint32_t leng){
        if (leng==0) { return ""; }
        uint32_t c, i, ix, q, min=string::npos, max=string::npos;
        for (q=0, i=0, ix=text.length(); i < ix; i++, q++){
            if (q==start){ min=i;}                                // 记录下截取的开始下标
            if (q<=start+leng || leng==string::npos){ max=i;}     // leng == -1 代表截取到末尾 所以每次max=i即可
            c = (unsigned char) text[i];
            if      (c<=127) i+=0;
            else if ((c & 0xE0) == 0xC0) i+=1;
            else if ((c & 0xF0) == 0xE0) i+=2;
            else if ((c & 0xF8) == 0xF0) i+=3;
            else if ((c & 0xFC) == 0xF8) i+=4;
            else if ((c & 0xFE) == 0xFC) i+=5;
            else return "";
        }
        //    printf("min:%d,max:%d,ix:%d,i:%d\n",min,max,ix,i);
        if (q<=start+leng || leng==std::string::npos){ max=i; }
        if (min==std::string::npos || max==std::string::npos) { return ""; }
        return text.substr(min,max-min);
    }
    

    获取UTF-8字符串长度

    /**
     * 获取UTF-8字符串长度
     * @param [in] text : 待处理的utf8字符串
     * @retval 长度
     */
    int Utils::utf8_strlen(const string& text){
        int c,i,ix,q;
        for (q=0, i=0, ix=text.length(); i < ix; i++, q++){
            c = (unsigned char) text[i];
            if      (c<=127) i+=0;
            else if ((c & 0xE0) == 0xC0) i+=1;
            else if ((c & 0xF0) == 0xE0) i+=2;
            else if ((c & 0xF8) == 0xF0) i+=3;
            else if ((c & 0xFC) == 0xF8) i+=4;
            else if ((c & 0xFE) == 0xFC) i+=5;
            else return 0;    
        }
        return q;
    }
    

    posted in GuaiK实验室 read more