- 博客(36)
- 收藏
- 关注
原创 n的阶乘末尾含0的个数
本博主曾被问过这样一个问题:求n的阶乘中末尾含有多少个0。例如n=10,n!=3628800,那么n!末尾有两个0。直接计算n!的值显然不合适,因为n!数值太大,很容易溢出。而且这种无脑的计算方式,显然不适合面试的时候装nbility拿高薪offer。1解法一:分解质因数本博主当时被问这个问题的时候的第一反应就是:要相乘产生0,那肯定是与5相乘的结果。对n!如果分解质因数的话,结果为0的个数只与2与
2016-05-30 17:08:12 4001 1
原创 反转二叉树
反转二叉树,因为Max Howell(Homebrew,mac版的apt-get作者 )出名: Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.在leetcode上找了这道题的解答1.递
2016-05-30 16:01:30 5525 1
原创 用java数组实现栈
栈是一种常见的数据结构。如果用一句话来概括栈的特点,估计大部分同学都能脱口而出:后进先出,即先进来的元素保存在栈的最底部,新来的元素则在栈顶堆积,直到栈满为止;而取元素的时候,只能从栈顶取,直到栈空为止。整个过程,与摞书的过程很类似:放书的时候都是摞在最上面,取书的时候也是从最上面开始取。要想取出下面的书,就必须先将上面的书先取走。原理就讲这么多,本身也比较简单。接下来,照例是咱们的口号: tal
2016-05-30 13:06:30 7029
原创 python sort sorted 排序详解
python中,list类型内置了sort()方法用于排序。当然,python还有内置的全局sorted()方法,用于可迭代序列的排序。这两个方法大部分的用法是相同的,最大的不同在于,sort()方法不会生成一个新的list,而是在原有的list上进行修改;sorted()方法则是生成一个新的可迭代序列。1.最简单的排序首先help一把list.sort()方法In [1]: help(list.s
2016-05-30 12:04:26 4698
原创 二叉树 先序遍历 中序遍历 后续遍历 java实现
二叉树是一种非常重要的数据结构,也是平时面试的时候面试官喜欢出的问题之一。关于二叉树的概念,就不做过多解释,估计各种课本网络上各种资料都充斥着关于二叉树的原理介绍。我们是实战派,原理不在啰嗦,重点看代码,看看怎样实现一棵二叉树,并分别用实现先序遍历,中序遍历以及后续遍历。package leilei.bit.edu.tree;import java.util.Stack;public class B
2016-05-28 21:22:24 2972
原创 最大连续子序列和
求最大连续子序列的和是一个很经典很古老的面试题了,本博主记得在刚毕业找工作面试那会也遇到过同款问题。今儿突然想起来,正好快到毕业季,又该是苦逼的应届生们各种面试的时候到了,就给写了一些小代码解决这个问题。也希望各位找工作的同志们都拿到心目中理想的offer,从此以后,战胜高富帅,赢取白富美,走上人生巅峰。1.问题描述假设有一数组(python里为list啦)[1,3,-3,4,-6,-1],求数组中
2016-05-28 18:02:09 6637 2
转载 搞机器学习需要哪些技能
1. 前言本来这篇标题我想的是算法工程师的技能,但是我觉得要是加上机器学习在标题上,估计点的人会多一点,所以标题成这样了,呵呵,而且被搜索引擎收录的时候多了一个时下的热门词,估计曝光也会更多点。不过放心,文章没有偏题,我们来说正经的。今天就说说机器学习这个最近两年计算机领域最火的话题,这不是一篇机器学习的技术文章,只是告诉大家机器学习里面的坑实在是太多,而且很多还没入门或者刚刚入门的朋友们,其实在你
2016-05-27 22:53:06 14059 3
转载 hadoop SequenceFile
1 SequenceFile的理解1)SequenceFile是Hadoop用来存储二进制形式的对而设计的一种平面文件(Flat File); (2)可以把SequenceFile当做一个容器,把所有文件打包到SequenceFile类中可以高效的对小文件进行存储和处理; (3)SequenceFile文件并不按照其存储的key进行排序存储,SequenceFile的内部类Writer提供了ap
2016-05-25 11:01:05 747
原创 hadoop 压缩工具 比较
hadoop里支持许多压缩算法。压缩的好处主要有两点:1.减少了文件占用的存储空间,原来上T的文件可能压缩完以后只需要两三百G的空间即可;2.文件的体积小了以后,数据传输的速度自然就快了。在现在的大数据环境下,这两点显得更加重要。所以现在hdfs文件系统上存的文件,如果数据量大到一定程度,都需要经过压缩处理。hadoop上常用的压缩格式包括gzip,lzo,snappy,bzip2。以下我们对这四种
2016-05-25 10:12:26 2225
转载 社交网络中的共同好友计算(一度好友与二度好友)
社交网络中经常存在求共同好友的需求,比如最常见的求一度好友与二度好友,如上图所示。package bit.edu.cn;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Friend { /* * 思路:如果A与
2016-05-24 16:46:36 12434
原创 信息熵 条件熵 信息增益 信息增益比 GINI系数
在信息论与概率统计学中,熵(entropy)是一个很重要的概念。在机器学习与特征工程中,熵的概念也用得灰常多。今天就把跟熵有关的东东稍微整理一下,权当笔记。1.信息熵熵是神马东东?信息论的开山祖师爷Shannon(中文翻译过来一般叫香农,总觉得很多文字经过翻译就不对劲,就跟人家老外翻译贱人就是矫情一样,感觉怪怪的。所以咱们还是用英文了,偷偷装个小逼)明确告诉我们,信息的不确定性可以用熵来表示: 对
2016-05-24 10:30:55 26636 12
转载 Hbase rowkey 设计原则
HBase是三维有序存储的,三维指的是:RowKey(行健)、column key(columnFamily和qualifier)、TimeStamp(时间戳),通过这三个维度我们可以对HBase中的数据进行快速定位。下面我们主要来讨论RowKey的设计原则:HBase中RowKey可以唯一标识一条记录,在HBase查询的时候,我们有两种方式,第一种是通过get()方法指定RowKey条件后获取唯一
2016-05-24 09:49:12 9262
原创 logistic回归详解(三):梯度下降训练方法
在http://blog.csdn.net/bitcarmanlee/article/details/51165444中,我们已经对logistic回归的cost function做了完整的推导。如果是单个样本,其损失函数为: cost(hθ(x),y)=−yilog(hθ(x))−(1−yi)log(1−hθ(x))cost(h_{\theta}(x),y) = -y_ilog(h_{\thet
2016-05-22 08:14:49 19569 5
原创 基于sklearn 的one hot encoding
1.one hot编码的由来在实际的应用场景中,有非常多的特征不是连续的数值变量,而是某一些离散的类别。比如在广告系统中,用户的性别,用户的地址,用户的兴趣爱好等等一系列特征,都是一些分类值。这些特征一般都无法直接应用在需要进行数值型计算的算法里,比如CTR预估中最常用的LR。那针对这种情况最简单的处理方式是将不同的类别映射为一个整数,比如男性是0号特征,女性为1号特征。这种方式最大的优点就是简单粗
2016-05-21 22:41:54 36002 5
原创 Hadoop Configuration 源码详解
hadoop里相关的配置在org.apache.hadoop.conf包里,Configuration类就在里面。关于配置类的相互关系,已经在: http://blog.csdn.net/bitcarmanlee/article/details/51454564中 有过详细的介绍。为了让大家更好地看清楚conf的东东,特意截个图: 1.温习一下前面的内容在前面的文章中,我们已经介绍了这几者的关系
2016-05-21 10:13:19 4516
原创 hadoop fs.trash 详解
linux系统里,我觉得最大的不方便之一就是没有回收站的概念。由rm -rf引发的血案,估计每个写代码的同学都遇到过。在hadoop或者说hdfs里面,有trash相关的概念,可以使得数据被误删以后,还可以找回来。1.打开trash相关选项hadoop里的trash选项默认是关闭的。所以如果要生效,需要提前将trash选项打开。修改conf里的core-site.xml即可。我们集群的相关配置如下:
2016-05-20 22:18:54 11428 2
原创 hadoop Configured Configrable Configuration Tool 源码详解
在用java写MR的时候,定义类的第一行一般都是如下方式:public class XXX extends Configured implements Toolrun方法的一个实例如下:public int run(String[] args) throws Exception { Configuration conf = getConf(); GenericOpti
2016-05-19 16:00:32 1438
原创 linux mac tree 命令 总结
在写项目相关的解释文档或者说明文档或者需求文档的时候,经常需要列出项目代码的树状结构。tree命令就能很好的满足我们这个小小的需求linux与mac中的tree都不是自带的,需要自行安装。如果不会安装,请自行google在linux或者mac中怎样安装软件即可。。。1.最简单的方式最简单的使用方式就是直接输入tree命令了 :$ tree.├── get_user_order.sh├── mr
2016-05-19 11:27:59 844
原创 git 远程仓库 remote 使用总结
git的远程仓库是指托管在网络上的项目仓库。对于公司来说,绝大部分公司都会自己搭建自己的git仓库。对于RD来说,自然免不了要经常跟远程仓库 remote打交道。今天我们就来对远程仓库的使用做一个总结。第一步自然是将代码从仓库clone过来:lei.wang ~/gitcode $ git clone git@xxx:lei.wang/user_labels_merge.gitCloning in
2016-05-17 09:24:57 9592
原创 hadoop mapper从源码开始 详解
hadoop的mapreduce计算框架中,最重要的两个部分自然就是mapper跟reducer了。写了这么久的MR,一直没有机会研究源码,也挺遗憾的。趁着这波有一些要深入了解的需求,加上周末的一些时间,仔细阅读了一下mapper相关源码,有了自己的一些小小心得,权当笔记。写得不好或者有不对的地方,请童鞋们指出1.mapper源码/** * Licensed to the Apache Softw
2016-05-15 22:38:32 7860
原创 hadoop 新API与旧API对比
Hadoop现在同时提供了新旧的两套API接口。现在编写MR代码的时候,当然尽可能使用新的API接口。但是旧的API接口暂时也还有保留,也还能使用。实际项目开发的时候,尽量统一标准用一套API较好,以免带来不必要的麻烦。下面我们来简单介绍一下新旧两套API的区别。1.存放的位置这是最令人蛋疼,最需要引起注意的地方之一。博主用的IDE是eclipse,经常写入一个类以后,然后command+shift
2016-05-15 20:56:25 1578
转载 eclipse 常用快捷键
Ctrl+左键 和F3 这个是大多数人经常用到的,用来查看变量、方法、类的定义 跳到光标所在标识符的定义代码。当按执行流程阅读时,F3实现了大部分导航动作。2 Ctrl+Shift+G 在工作空间中查找引用了光标所在标识符的位置。可以说是与F3相反的快捷键。当按类定义进行阅读时,可以迅速找出当前类方法在被哪些类调用了。Ctrl+O查看一个类的纲要,列出其方法和成员变量。提示:再多按一次C
2016-05-15 11:05:52 874
原创 hadoop 注解之 interfaceAudience interfaceStability
在阅读hadoop相关源码的过程中,经常见到类似@InterfaceAudience.Public@InterfaceStability.Stable之类的标识。特意查阅了一下相关资料,在此做一个小结InterfaceAudienceInterfaceAudience 类包含有三个注解类型,用来说明被他们注解的类型的潜在使用范围,即audienceInterfaceAudience的源码如下/*
2016-05-14 23:18:47 4730
原创 python numpy模块玩转矩阵与科学计算
学生时代玩矩阵最爽的工具自然是matlab了。而且matlab天生就是为科学计算,为矩阵而生。matlab的一切对象皆可看成矩阵,最简单的一个整数,也是个1*1的矩阵。但是在公司里面以后,matlab就玩不转了。道理很简单,matlab虽然好用,但是正版软件非常贵。而且,matlab是闭源,跟现在开源的潮流也有些不大符合。。。 那在公司里面,怎么玩科学计算,怎么玩矩阵呢。其实很简单,涉及到数据处理
2016-05-10 22:31:01 16442 1
原创 python random 生成随机数
代码中经常有一些生成随机数的需求。特意整理了一下python中random模块的一些相关用法。python生成随机数随机整数:>>> import random>>> random.randint(0,99)21随机选取0到100间的偶数:>>> import random>>> random.randrange(0, 101, 2)42随机浮点数:>>> import random>>>
2016-05-10 21:16:15 9961
原创 插入排序 java实现
插入排序也是一种经典的排序方式,适合于已经基本有序,且数据量较小的数组。自己动手写了一个java版本的插入排序。请同学们参考。package leilei.bit.edu.t2;public class InsertSort { public static void insertSort(int[] a) { int arr_length = a.length;
2016-05-10 10:07:45 6910
原创 数据归一化小结
在各种模型训练,特征选择相关的算法中,大量涉及到数据归一化的问题。比如最常见的情况是计算距离,如果不同维度之间的取值范围不一样,比如feature1的取值范围是[100,200],feature2的取值范围是[1,2],如果数据不做归一化处理,会造成feature1在距离计算中占压倒性的优势,feature2完全体现不出来作用。而数据做归一化处理以后,会让各个不同特征对距离计算的贡献大致相同,从而避
2016-05-09 14:46:53 24245
原创 mac上怎样截图
截图是平时很常见的需求。不管是开发也好,还是平时聊天扯淡也罢,都少不了截图。用mac的时间不是很长,截图一直玩不溜,只好每次用qq截图来代替(大神勿喷)。偶然发现在mac上截图的好方法,赶紧记下来。又get到新技能点,好开心的说。。。全屏截图command + shift + 3 按下这组快捷键以后,马上会截取当前的全屏并保存在桌面上。区域截图command + shift + 4 按下这组快捷键以
2016-05-09 00:10:08 1730
原创 python 迭代器与生成器 详解
在python中,我们经常使用for循环来遍历各种集合,例如最常用的有list,dict等等,这些集合都是可迭代对象。我们先来了解一下python中的迭代器(Iterator)。一、迭代器顾名思义,迭代器,自然就是用来做迭代用的(好像是废话)。以list为例,我们用list,最多的情况就是用来做循环了(循环就是迭代嘛)>>> list = [1,2,3]>>> dir(list)['__add_
2016-05-06 22:09:30 3038
原创 mysql 优化 整体思路
sql优化的整体思路,根据博主一些浅薄的经验已经网上的资料,总结如下: 1.选择合适的存储引擎。 2.优化sql与索引。因为一条sql引起的血案,网上的案例很多,不再多说。 3.加缓存。大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操
2016-05-05 20:27:17 1655
原创 linux shell 数字计算详解
代码中免不了要进行各种数据计算。抛开科学计算不提,普通的计算占地,百分比,同比,环比等需求就很常见。linux shell中进行数字计算,主要有如下几种方式:1.bcbc是比较常用的linux计算工具了,而且支持浮点运算:[webopa@namenode-backup expensive_user]$ a=`echo 1+1 | bc`[webopa@namenode-backup expensi
2016-05-05 17:52:20 9466
原创 如何给awk传外部参数
在awk中,传参的方式主要有如下两种:1.用-v传参[xxx@xxx expensive_user]$ A=3[xxx@xxx expensive_user]$ B=4[xxx@xxx expensive_user]$ echo | awk -v A=$A -v B=$B '{printf("%.2f\n",A/B)}'0.752.在action后传参这种方式就是在awk的动作语句后面指定参数
2016-05-05 17:12:10 6135
原创 azkaban 入门简介
前言80后的同学们看到azkaban这个词,第一反应就会想起哈利波特。没错,就是哈利波特系列的第三部:阿兹卡班的囚徒(Harry Potter and the Prisoner of Azkaban)。这个囚徒,就是指Potter的教父小天狼星。一晃,哈利波特都写完多好多年了,俺们都从十多岁的小屁孩变成三十岁的中年人了。。。 当然,今天咱们文章的主角不是Potter,也不是小天狼星,也不是K.J.
2016-05-05 10:01:08 19164
转载 程序运行过程浅析
1.读取命令在shell中输入 ./hello 时,首先hello这个字符串要到达内存,这样shell才知道你要执行 什么程序。这个过程有两种方式实现,一个是从键盘到CPU寄存器再到内存的过程,另外一个 是通过直接存储器存取(DMA),不经过CPU直接进入内存。DMA(直接存储器访问) DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件
2016-05-04 22:15:14 769
原创 git 删除文件后如何恢复
有时候不小心在git中rm了文件。怎么恢复呢?别急,咱们一步步来。首先git status一把,看看此时工作区的状态[xxx@xxx static_files]$ git status# On branch masternothing to commit (working directory clean)可见此时没有任何修改的内容。 再看看具体有什么xxx@xxx static_files]$
2016-05-04 15:36:08 81825 3
原创 指数分布族(The Exponential Family)与广义线性回归(Generalized Linear Model GLM)
在各种算法相关的paper中,经常看到指数分布族这个概念。博主作为一个好奇心很强喜欢打破砂锅问到底的人,看到一个东西老在眼前晃来晃去却又似懂非懂,心里非常难受,于是想好好了解一下这个指数分布族到底是个什么鬼。。。1.指数分布族的概念指数分布族是指可以表示为指数形式的概率分布。wiki上的定义如下: A single-parameter exponential family is a set of
2016-05-01 23:46:23 16836
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人