摘要: 推荐系统广泛应用于各类网站,电子商务中的商品推荐、博客网站的文章推荐,以及帮助人们寻找音乐和影片的各类应用。但如何才能从无到有的给网站配备一个推荐系统呢?针对这个问题,我在搜索引擎中遍寻多时,但始终没有找到满意的答案。这期间我也加入了国内推荐系统高手聚集的推荐系统邮件列表,其中不乏当当、卓越亚马逊、豆瓣等业内在推荐系统上领先的产品、技术高手,但浸淫多日却始终无法在脑海中形成一个以内容推荐为最终目的的产品框架或产品路线图。这种状态一直持续到我购买了集体智慧编程(Programming Collective Intelligence)后才得以改观,现在我将此书的部分读书笔记予以整理,希望能给同样对 阅读全文
posted @ 2013-09-12 17:16 visionwang 阅读(264) 评论(0) 推荐(0) 编辑
摘要: select * from user where name in (select name from user group by name having count(*)>1) 阅读全文
posted @ 2013-09-12 17:15 visionwang 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 在读盛大智能推荐团队负责人陈运文博士的文章后整理的思维导图,图片太大使用附件。思维导图见原文链接:http://www.resyschina.com/2013/03/recommendation-keypoint.html 阅读全文
posted @ 2013-09-01 13:16 visionwang 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 准备运行1个主节点,2个从节点,从节点中其中是一个是仲裁节点(Arb)。sudo mongod --replSet application --dbpath /data/node1/ --port 9927 --oplogSize 1024sudo mongod --replSet application --dbpath /data/node2/ --port 9928 --oplogSize 1024sudo mongod --replSet application --dbpath /data/arbiter/ --port 9929 --oplogSize 1024其中applicat 阅读全文
posted @ 2013-08-29 22:09 visionwang 阅读(8285) 评论(0) 推荐(1) 编辑
摘要: 什么是Unicode对象呢?你可以认为unicode对象就是一个Python字符串,它可以处理上百万不同类别的字符——从古老版本的Latin字符到非Latin字符,再到曲折的引用和艰涩的符号。普通的python字符串是经过编码的,意思就是它们使用了某种编码方式(如ASCII,ISO-8859-1或者UTF-8)来编码。 如果你把奇特的字符(其它任何超出标准128个如0-9和A-Z之类的ASCII字符)保存在一个普通的Python字符串里,你一定要跟踪你的字符串是用什么编码的,否则这些奇特的字符可能会在显示或者打印的时候出现乱码。 当你尝试要将用某种编码保存的数据结合到另外一种编码的数据中,或者 阅读全文
posted @ 2013-08-24 11:55 visionwang 阅读(1214) 评论(0) 推荐(0) 编辑
摘要: 任何情况中都应该提供足够的“5W1H”信息! by CpyUG社区#问题领域...产品开发测试部署...1.Who目标用户?谁来完成谁交付的交付给谁?...给出提问者自身的足够信息,至少有个 blog 地址...2.When其出现的最佳时机何时完成何时需要最后期限?...话题引发的时间点,历史变迁...3.Where其产生与支持环境必须运行在?可能运行在?目标机群?...现象发生的系统/版本/包等等环境依赖..4.What具体内容具体功能?哪些功能?依赖什么软件?...问题的本质需求?最终期望的指标? 怎么测试?定义?5.Why其存在的意义和价值支持什么业务?用户为什么这么用?先后依赖的关系? 阅读全文
posted @ 2013-08-21 22:35 visionwang 阅读(331) 评论(0) 推荐(0) 编辑
摘要: Python不像C/C++,Java等有switch-case的语法。不过其这个功能,比如用Dictionary以及lambda匿名函数特性来替代实现。实现方法分为两步:首先,定义一个字典;其次,调用字典的get()获取相应的表达式。下面是个计算器的例子,函数定义如下:def add(a,b): return a + bdef multi(a,b): return a* bdef sub(a,b): return a - bdef div(a,b): return a/ b#b is non-zero如果是switch实现的话,case(‘操作数’)来判断之行的对应函数... 阅读全文
posted @ 2013-08-04 16:19 visionwang 阅读(1551) 评论(0) 推荐(0) 编辑
摘要: 在使用和阅读lucene源代码时,发现为了提高查找的性能,Lucene在很多地方采取的跳跃表的数据结构。跳跃表(Skip List)是如图的一种数据结构,有以下几个基本特征:元素是按顺序排列的,在Lucene中,或是按字典顺序排列,或是按从小到大顺序排列。跳跃是有间隔的(Interval),也即每次跳跃的元素数,间隔是事先配置好的,如图跳跃表的间隔为3。跳跃表是由层次的(level),每一层的每隔指定间隔的元素构成上一层,如图跳跃表共有2层。看了redisbook中也有关于该数据结构的详细介绍http://www.redisbook.com/en/latest/internal-datastr 阅读全文
posted @ 2013-08-03 12:23 visionwang 阅读(2182) 评论(0) 推荐(0) 编辑
摘要: 本篇文章介绍几个redis的应用场景。1.取最新N个数据的操作–比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取•使用LPUSH latest.comments命令,向list集合中插入数据 •插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID •然后我们在客户端获取某一页评论时可以用下面的逻辑(伪代码) –FUNCTION get_latest_comments(start,num_items): id_list = redis.lrange(& 阅读全文
posted @ 2013-08-03 12:11 visionwang 阅读(1855) 评论(0) 推荐(0) 编辑
摘要: 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化、主从复制、简单的事务支持及发布订阅功能。持久化•redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化,这是相对memcache来说的一个大的优势。redis支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另一种是Append-only file(缩写aof)的方式。Snapshotting 快照是默认的持久化方式。这种方式将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以配置自动做快照持久 化的方式。我们. 阅读全文
posted @ 2013-08-03 12:09 visionwang 阅读(3410) 评论(0) 推荐(1) 编辑