共 188篇 前 10 页: 10    每页10篇 下一页  

自荐文章

这门课程是系统介绍有关博弈论和战略思想。比如支配思想、落后的感应、纳什均衡、进化稳定性、承诺,信誉,信息不对称,逆向选择等。并在课堂上提供了各种游戏以及经济、政治,电影和其他方面的案例来讨论。

http://open.163.com/special/gametheory/

PS:这两年,对于我各方面最具指导意义的知识。

meiking   2017-09-15 11:35:55 阅读:9  评论:1  引用:0
https://www.zhihu.com/question/22171896/answer/137308472

中国股市暴涨暴跌,散户盛行,大妈投机管用,价值投资无用,这不是成熟股市的常态?非也!可见的人类历史中股市的大起大落才是常态。香港70年代的股灾,台湾80年代末的崩盘,日本90年代后“失落的二十年”,美国纳斯达克千禧年后的狂泻,股市从来就没有成熟过。

股市从进化上的稳定策略(ESS)正是投机为主,投资为辅。在股市里,趋势投机客才是羞怯忠诚的大多数,价值投资者洽洽是放荡薄情的一小撮。

meiking   2017-09-05 22:52:30 阅读:12  评论:0  引用:0

可能是上学年纪太小的缘故,小时候极讨厌文科的东西,如今从事理科相关的工作,却异常喜欢文科的知识。如果从处事策略上来讲,我就是“计算机世界里懂历史与文学,历史与文学的世界里懂计算机的”,这样大概能显得自己比较高深莫测吧。

读书对于我而言,像是精神上的一种旅行,饱学各文学大家的智慧精华,算是一种智力锻炼的捷径。读的还是少,但是能花时间读下去的,也算是一种机遇,整理一下自己读过的书,博观而约取,推荐的打

 

2012-2015

《明朝那些事儿》    共七册(itouch电子书)
《三国演义》    (itouch电子书)
《红楼梦》
《西游记》    (ipad电子书)
《流血的仕途》    共两册(itouch电子书)
《春秋战国那时候儿》
《话说春秋战国那时候儿》
《话说秦汉那时候儿》
《话说三国两晋那时候儿》
《话说隋唐那时候儿》
《话说宋元那时候儿》
《话说明朝那时候儿》
《话说清朝那时候儿》
《汉朝那些事儿》    共八册,只读了两册
《蛙》
《红高粱家族》
《生死疲劳》
《丰乳肥臀》
《酒国》
《食草家族》
《檀香刑》
《胡适:四十自述》
《活着》
《鲁滨逊漂流记》    (ipad电子书)
《了不起的盖茨比》
《小王子》
《富爸爸,穷爸爸》
《小狗钱钱》
《世界上最伟大的推销员》
《管道的力量》
《随机漫步的傻瓜》
《蒋介石与现代中国》
《中国家谱史图志》
《乔布斯传记》
《李开复自传》
《饥饿游戏》 共三册
《少年派的奇幻漂流》
《围城》
《一句顶一万句》
《白鹿原》


2015-01-20 —————
《我们仨》
《许三观卖血记》
《手机》
《平凡的世界》
《易中天中华史》
《一地鸡毛》

2015-11-13 —————
《骆驼祥子》
《四世同堂》
《鲁迅小说集》
《天堂蒜苔之歌》
《亮剑》
《人生》

meiking   2016-03-08 12:41:22 阅读:146  评论:2  引用:0
〖摘要:〗

一个项目需求是要从N个目标网站上采集相关的文章,然后做文本分析提炼关键词以及文章之间的关联,当然还要实现全文检索。采集使用的是scrapy,文章关联的标准做法一般是通过聚类算法或者去重算法,这两种方案的问题是在处理大数据时,性能完全跟不上。权衡之后,我的大致的方案是先计算每篇文章的词频和关键词权重,最后利用关键词权重作为参数去solrcloud里查找评分相对较高的文章作为关联文章。

首先自然语言处理这块是很难的,自己没有高数基础,很多基础的算法只知道概念,就不去从造轮子开始了,找找成熟方案。文本分析首先最基本的是分词,分词做的不好的其它都无从开始,选型过程中参考了mmseg、ansj(nlpcn.org)和IKAnalyzer,试了下分词效果感觉ansj更好一些,而且ansj功能比较全,最终就选了ansj。不过ansj没有相应的solr支持,这块需要自己简单的封装一下。

软件版本:solr-5.2.0, ansj_seg-3.5, nlp-lang-1.1

先解决ansj对solr支持的问题:solr分词需要实现两个抽象类,Tokenizer和TokenizerFactory,分别是用于构建分词器和管理分词器的调用。ansj官方有个项目ansj_seg(https://github.com/NLPchina/ansj_seg),里面提供了一个lucene的plugin,有分词器的实现,可以直接使用,这里只需要构建TokenizerFactory。

package org.ansj.solr;

import org.apache.lucene.analysis.util.TokenizerFactory;
import org.apache.lucene.util.AttributeFactory;

import java.io.IOException;
import java.io.Reader;
import java.util.Map;
import org.apache.lucene.util.*;
import org.apache.lucene.analysis.*;
import org.ansj.lucene.util.*;
import org.ansj.splitWord.analysis.*;
import org.nlpcn.commons.lang.tire.domain.Forest;

public class AnsjTokenizerFactory extends TokenizerFactory
{
    public AnsjTokenizerFactory(Map<String, String> args)
    {
        super(args);
    }

    @Override
    public Tokenizer create(AttributeFactory factory)
    {
        return new AnsjTokenizer(new NlpAnalysis());
    }
}

源码使用maven部署的,在该plugin目录中执行:mvn install -Dmaven.test.skip=true,得到target/ansj_lucene5_plug-3.0.jar,将对应的jar包复制到solr-webapp/WEB-INF/lib/下,开始配置solr schema的分词器:

    <!-- ansj_seg -->
    <fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
         <tokenizer class="org.ansj.solr.AnsjTokenizerFactory" />
      </analyzer>
      <analyzer type="query">
        <tokenizer class="org.ansj.solr.AnsjTokenizerFactory" />
      </analyzer>
    </fieldType>

重启solr,测试分词效果还是很不错的,不是纯粹的基于词库的,还有基于规则的判断,例如“250美元”:

继续阅读其余的  145597 字

meiking   2016-02-24 15:53:44 阅读:367  评论:0  引用:0
感觉C++的概念太多了,不像java相对而言单纯的多。做了个简单的socket server练习,多线程还没弄明白,先给单线程的做个记录。

使用telnet localhost 4401 测试通过。

参考资料: http://www.cnblogs.com/L-hq815/archive/2012/07/09/2583043.html
/*
 * File:   SocketTest.cpp
 * Author: Benjamin
 *
 * Created on 2015年5月4日, 下午9:06
 */

#include "SocketTest.h"
#include <iostream>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

#define SERVER_PORT 4401
#define BACKLOG 10

using namespace std;

SocketTest::SocketTest()
{
}

void SocketTest::initialServer()
{
  cout << "starting a socket server..." << endl;
  int sockfd, new_fd;
  struct sockaddr_in my_addr;
  struct sockaddr_in their_addr;

  int sin_size;

  if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
    cerr << "socket() error!" << endl;
    exit(1);
  }
  cout << "socket initialed" << endl;

  my_addr.sin_family = AF_INET;
  my_addr.sin_port = htons(SERVER_PORT);
  my_addr.sin_addr.s_addr = INADDR_ANY;

  bzero(&(my_addr.sin_zero), 0);

  if (bind(sockfd, (struct sockaddr *) &my_addr, sizeof (struct sockaddr)) == -1) {
    cerr << "bind() error!" << endl;
    exit(1);
  }
  cout << "binder initialed" << endl;

  if (listen(sockfd, BACKLOG) == -1) {
    cerr << "listen() error!" << endl;
    exit(1);
  }
  cout << "listener initialed" << endl;

  while (1) {
    sin_size = sizeof (struct sockaddr_in);
    if ((new_fd = accept(sockfd, (struct sockaddr *) &their_addr, (socklen_t *) & sin_size)) == -1) {
      cerr << "accept failure!" << endl;
      continue;
    }

    cout << "server: got connection from " << inet_ntoa(their_addr.sin_addr) << endl;
    
    char buffer[64];
    int length = -1;
    
    cout<<"Got message : ";
    while ((length = recv(new_fd, buffer, 64, 0)) != -1) {
      cout<<buffer;
      
      //finish by enter
      if (buffer[length - 1] == '\n') {
        string bye = "Good bye!\n";
        if (send(new_fd, &bye, sizeof(bye), 0) == -1) {
          cerr<<"send message to client failure!"<<endl;
        }
        close(new_fd);
      }
    }
    cout<<endl;

    close(new_fd);
    while (waitpid(-1, NULL, WNOHANG) > 0);

  }

  cout << "end!" << endl;
}

 
 
meiking   2015-05-06 12:39:25 阅读:142  评论:0  引用:0
〖摘要:〗
受任于败军之际,奉命于危难之间。应老大要求,开始学习C++,学习资料:http://c.biancheng.net/cpp/biancheng/cpp/rumen/ 。花了两天时间读完教程,开始coding练习。

从比较重要的文件系统开始,目前并不确定下列方法是否为读写效率最优的方式。

main方法和所在的主文件就不贴了。

################# 头文件 ###################
/*
 * File:   FileTest.h
 * Author: Benjamin
 *
 * Created on 2015年4月30日, 下午8:15
 */
#include <iostream>

namespace test {

    class FileTest {
    public:
        FileTest(std::string path);
        void outByBuffer();
        void outByLine();
        void append();
        void writeByBuffer();
    private:
        void readFile();
        std::string path;

    };

}


################# CPP文件 ###################
/*
 * File:   FileTest.cpp
 * Author: Benjamin
 *
 * Created on 2015年4月30日, 下午8:15
 */

#include "FileTest.h"
#include <fstream>
#include <iostream>

using namespace std;

namespace test {

    FileTest::FileTest(string path) {
        this->path = path;
    }

    void FileTest::outByBuffer() {
        ifstream is(path);
        if (!is) {
            cerr << "IOException, can not found the file" << endl;
            abort();
        }

        int bufferSize = 64;

        char * buff;
        while (!is.eof()) {
            buff = new char[bufferSize];
            is.read(buff, bufferSize);
            cout << buff;

        }
        delete buff;

        is.close();
    }

    void FileTest::outByLine() {
        ifstream is(path);
        if (!is) {
            cerr << "IOException, can not found the file" << endl;
            abort();
        }

        char * line = new char[1024];
        while (is.getline(line, 1024)) {
            cout << line << endl;
        }

        delete line;
    }

    void FileTest::append() {
        ofstream os(path, ofstream::out | ofstream::app);

        os << "test" << endl;

        os.close();
    }

    void FileTest::writeByBuffer() {
        ifstream is("/Users/Benjamin/Desktop/KM.jpg");
        ofstream os(path + ".jpg", ofstream::out);
        
        int bufferSize = 1024;
        char *buffer;
        while (!is.eof()) {
            buffer = new char[bufferSize];
   &
继续阅读其余的  719 字
meiking   2015-04-30 23:28:05 阅读:82  评论:0  引用:0

solrcloud本身没有提供直接rebalance的接口,达到rebalance的方法比较麻烦,可参考 http://wiki.apache.org/solr/ZooKeeperIntegration#Rebalancing。大致的思路就是通过splitshard将原始shard一分为二,添加待转移sub shard的replica core,此replica core就是目标节点,当其为replica状态时会自动recovery leader中的数据,recovery结束后,删掉leader core,一个流程完毕。如果集群的节点较多,则需要通过不断重复上面的流程。

http://wenku.baidu.com/view/414cc4483968011ca30091fd

 
 
meiking   2015-03-31 18:48:53 阅读:189  评论:0  引用:0
简单整理了一下solr5.0 的功能,包含一些实例操作示范,很多高级功能还没有完全领会在中文环境中得使用方法,就没有写。

http://wenku.baidu.com/view/121bcbd0d1f34693dbef3e6a
 
meiking   2015-03-31 18:46:41 阅读:118  评论:0  引用:0
〖摘要:〗
官网地址: https://github.com/chenlb/mmseg4j-solr

下载下来后有两个jar包,http://pan.baidu.com/s/1dD7qMFf#path=%252Fmmseg4j-solr ,下载2.3.0版本:
1. mmseg4j-core-1.10.0.jar, 包含字典
2. mmseg4j-solr-2.3.0.jar, 给solr用的

将两个jar包放到 server/solr-webapp/webapp/WEB-INF/lib/ 下。

配置solr schema分词器:
   <fieldType name="text_cn" class="solr.TextField">
      <analyzer>
          <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/>
      </analyzer>
    </fieldType>
 
重启solr cloud:
./bin/solr restart -c -z 172.16.5.2:2181

测试:
继续阅读其余的  359674 字
meiking   2015-03-26 12:31:49 阅读:466  评论:0  引用:0
主要讲得solr schema的定义方式和一些特性,入门级的。

http://wenku.baidu.com/view/0f0140fc83d049649b66588f
 
meiking   2015-03-26 09:55:57 阅读:104  评论:0  引用:0
Copyright@2004-2010 powered by YuLog