`
文章列表
现在一开电脑,尤其是一些IT性质的网站论坛,所谓大数据真是铺天盖地,很有气势。 好像每个搞IT的同仁不说点关于大数据的东西,都不好意思跟人打招呼。   关于这种疯狂,我们已经看得够多了。什么SOA、Ajax、RIA、HTML5.. ...
在实际工作中我们经常会遇到将一个list中最大[最小]的前TopK个元素输出的问题。 比如说在电商领域,求上个月卖的最好的前10个商品,或者是每个品类下卖的最好的前10个商品。   这类问题,很多数据库或数据仓库工具可以 ...
C语言的少即是多:   从语言内容来讲,C绝对是足够精炼的,它提供且仅提供了我们工作所必须的编程元素。 从可以实现的功能以及能为我们提供的代码管理和性能支持上来看,它也做的恰到好处。 没有C++的繁琐、比脚本及所谓的OO语言更高效、当然也比汇编更容易理解。   不过对于用惯了Java的HashMap、LinkedHashMap,Python的Dict,以及PHP的Array 的同学来说,C的简洁似乎就有些简陋,甚至是蹩脚了。   最近项目中需要在C语言中使用HashTable来提高按键的查找速度,在网上找了很多现成的实现,发现写的都很随意,都有问题。很多现有的实现版本中都是使 ...
    前两天团队讨论了什么是推荐、什么是个性化推荐。关于这,大家有的顾名思义、有的引经据典。当然都能够较好地解释上面这两个概念。这里,我则试图从现实现象中去理解什么是推荐、什么是个性化推荐。 开始啰嗦了: 这次请假去外地,在火车站的一个卖报点发现一个比较有趣的现象。这个摊位除了报纸,还有杂志、书籍等。此外,很多人在买报的时候都不只买一份,基本上是两份起。 现象一: 经过我长达一个小时的观察,有两份报纸同时被买的次数最多,一份是《参考消息》,一份是《环球时报》。我想,这个现象与我们推荐的理论完全吻合。而且卖报点的这两份报纸也是放在一起的,更绝的是这两份报纸价钱:《参考消息》0.8元 ...
  一、决策树简介:   关于决策树,几乎是数据挖掘分类算法中最先介绍到的。 决策树,顾名思义就是用来做决定的树,一个分支就是一个决策过程。   每个决策过程中涉及一个数据的属性,而且只涉及一个。然后递归地,贪心地直到满足决策条件(即可以得到明确的决策结果)。   决策树的实现首先要有一些先验(已经知道结果的历史)数据做训练,通过分析训练数据得到每个属性对结果的影响的大小,这里我们通过一种叫做信息增益的理论去描述它,期间也涉及到熵的概念。也可参考文章信息增益与熵.   下面我们结合实例说一下决策树实现过程中的上述关键概念:   假设我们有如下数据:   ...
本文假设读者至少有对数据挖掘中的关联规则有基本了解,对Apriori算法的实现有一定了解。   在此基础上,我们讨论一种比Apriori更加高效的关联规则挖掘方法——基于FP-Tree的关联规则挖掘。   (一) 关于Apriori:   Apriori是关联规则挖掘中最最最经典的算法,没有之一。同时,它也是向初学同学阐明关联规则精髓的最佳武器。   首先,我们简单回顾下Apriori算法的两个概念: 频繁项集:即支持度不小于指定的最小支持度的项集就是频繁项集。 向下封闭:如果k项候选集中有一项不是频繁项集,则这个k项集也不是频繁项集。   它的主要问题是: 在由频繁 ...
  DJBX33A 哈希函数又叫做time33 哈希函数,PHP、Perl、Apache中都是用该方法做为其哈希函数的实现。   本文就对该哈希函数做一简单的介绍,并用Bash对其进行实现。   该方法十分简单,将字符串中的每个字符的ascii码迭代*33加在一起即可。即hash(i)=hash(i-1)*33+ascii(i)。   假如字符串为:abc,则结果就是hashCode=(ascii(a)*33+ascii(b))*33+ascii(c)   PHP中的实现见博客:PHP中的hash函数实现
该问题和求单调递增子序列有点像,但不一样。 其主要区别就是在于连不连续,如果不要求连续(单调递增子序列)在实现时的算法是动态规划,比较复杂。 本文描述的问题是子序列连续的问题,相比而言会简单很多,原理和求最大值是一样的。   具体描述为给定一个字符串,求一个子串,该子串满足: 1. 连续 2. 该子串递增 3. 是最长的单调连续递增的子串   例如:zxuhababcba 结果:abc     代码如下:    #!/bin/bash ## the input str for test inputStr="zxuhababcba"; ...
上篇文章我们讨论了快速排序算法,它与归并算法同属分治算法的一种。 两者在实现上很相似,都使用了分治递归的策略来实现。   相信大家对快排和归并排序都不陌生,不过我们平常接触到的一般是这两种算法的递归实现方式。 以Java为例,其Arrays类中的sort在排序Object的时候用的就是归并排序。 不过其在实现上做了优化,在子问题足够小时(每个递归子序列长度不大于7)通过插入排序完成这个子序列的排序。   概括而言,Java中的Arrays.sort在排序Object对象的数组时用的是归并排序+插入排序的方式,即对插入排序结果的归并。   Java中的实现如下:     ...
写blog的好处是,琢磨过的东西不用再琢磨第二次了。   快速排序算法的非递归实现:   #!/bin/bash declare -a inputArray=(2 3 5 0 1 5 7 1 2 9 0); declare -a startStack; declare -a endStack; #init inputArray randomly for((i=0;i<10000;i++)) do inputArray[$i]=$RANDOM; done arrayLength=${#inputArray[@]}; lastIndex=$(( ...
假设我们有一个求集合的全部子集(包含集合自身)的需求,即有一个集合s,包含两个元素 <a,b>,则其全部的子集为<a,ab,b>. 不难求得,子集个数sn与原集合元素个数n之间的关系为:sn=2^n-1。   本文分别讲述两种实现方法:   一:位图法: 1)构造一个和集合一样大小的数组A,分别与集合中的某个元素对应,数组A中的元素只有两种状态:“1”和“0”,分别代表每次子集输出中集合中对应元素是否要输出,这样数组A可以看作是原集合的一个标记位图。 2)数组A模拟整数“加一”的操作,每“加一”之后,就将原集合中所有与数组A中值为“1”的相对应的元素输出。 ...
在数据库操作中,我们常常遇到需要将数据去重计数的工作。例如: 表A,列col A C A B C D A B   结果就是一共出现4个不同的字母A、B、C、D 即结果为4 大体上我们可以选择count(distinct col)的方法和group+count的方法。 分别为 ...
相信编程时,字符串的处理是很频繁被处理的问题,其中大家肯定不陌生各种语言的string.split('sp')将字符串按照某个字符或子串切分成一个数组。 同样,我们在用shell处理文本信息时也可以方便地实现该功能。 这里主要使用了bash中关于字符串变量的处理和array初始化的能力。   如下:   #!/bin/bash str="hello,world,i,like,you,babalala" arr=(${str//,/ }) for i in ${arr[@]} do echo $i done     将str按照 ...
昨天一个同事遇到一个需求: 有一个日志文件A,当日志文件中的某行包含某个字符串BC时,将字符串EF变成EG,并输出到新文件。即: Input,A: asdfasdf asdfasdBCasdfEFasd   output: asdfasdf asdfasdBCasdfEGasd   这个文件有500w+行。 最开始用如下脚本解决:   cat $1 | while read line do echo $line | grep -q "BC" if [ $? -eq 0 ] ; then echo $line | sed "s/ ...

写在2012岁始

本来决定在iteye上不码情绪类的文字,但面对f*ck的2011却又不得不说点什么。   前年的今天,我很happy的在哈尔滨享受着冰城的风度。天气虽然寒冷,但心里很火热,对生活也充满了期待。 而就是从哈尔滨归来开始,各种不顺、各种纠结、各种悲剧,生活一下子仿佛回到了本来的颜色。让我无奈到觉得生活本来就TM是让人无奈的。   生活就是一面镜子,站在前面,我们都无法回避丑陋的自己。   自己很后悔当时在学校没有好好学习,把大好的青春都混过去了。其实想想,学习很简单,也不是非得让我们读多少书,上多少课,背多少单词,考多少分,拿多少奖学金。。。统统都不是,在学校里最珍贵的是打心底里要真 ...
Global site tag (gtag.js) - Google Analytics