大数据学习目录

背景

最近有很多朋友问我,该怎么转大数据? 这个问题太大了,不是一句两句话能说清楚的,毕竟每个人情况不一样,每个公司的情况不一样,技术栈也不一样。而且大数据这个范围太大了,也有很多个方向。所以,我只能以我了解的维度,从一个JAVA开发转大数据开发的技术栈,做一个系列给大家讲一讲。这篇文章,主要是我的大数据技术栈。大家可以参考目录,去学习自己想了解的知识。由于本人水平有限,如有错误,欢迎联系Wx: woaiqiandaxian 加以批评指正。本目录也将随着个人成长,持续更新下去。

教程代码:
https://github.com/qiandaxian/bigdata-learn


说道现如今的大数据技术,很多重要思想,起源于谷歌的三篇论文,所以想要学习大数据,最好先了解谷歌的三篇论文:

继续阅读大数据学习目录

Vue项目从webpack3.x升级webpack4完全指南

近日,泡面将自己的一个Vue-cli构建的前端框架从webpack3.x升级到了4.x版本。其中有一些细节还是需要记录一下,以免过两天就忘记了。

原先的环境

  • 项目原先通过Vue-cli 2.9.3 版本构建,
  • 原先使用的webpack 3.x版本

首先需要对基础包进行更新(package.json)

  • webpack 更新到4.x版本,泡面这里更新到了4.28.3
  • 更新webpack-dev-server,泡面更新到了3.1.14版本,
  • 安装webpack-cli,泡面安装的是3.2.1版本

继续阅读Vue项目从webpack3.x升级webpack4完全指南

分享一个数学计算

前几天群里不认识的一个哥们,需要计算一下:
A+B=C,其中 C 不包含 A,B 中任意数字的集合
一时闲来无事,正好练练手,用python写了下,代码如下:

# -*- coding: utf-8 -*-
import time

'''
A+B=C,C不包含A,B中任意数字
'''

'''按位切分数字,返回字典{0-9,0-1}
ex{
  0:1,
  9:1
} 说明结果中包含0,9两个数字
'''
def spiltNumber( num ):
    n = num
    result = {}
    while (n > 0):
        if(n % 10 not in result):
            result[n % 10] = 1
        n = n / 10
    return result

# 2个字典取并集,为空说明不重复
def checkDictContains(dict1,dict2):
    return len(dict.fromkeys([x for x in dict1 if x in dict2])) == 0

def getList(start, end):
    list = range(start, end)
    return list

def getResult(start,end):
    # 返回的结果列表
    result = []
    # 迭代的次数
    z = 0
    for i in range(start, end):
        print("执行矩阵运算 x:%d,y:(%d~%d)..." % (i,i,end))
        for j in range(i, end):
            z += 1
            # 将左侧乘数转成倒排索引
            leftNumberDict = dict(spiltNumber(i), **spiltNumber(j))
            # 结果转换成倒排索引
            count = i + j
            countDict = spiltNumber(count)
            if (checkDictContains(countDict, leftNumberDict)):
                result.append(" %d + %d = %d" % (i, j, count))
                print("匹配结果: %d + %d = %d" % (i, j, count))
    print("匹配的结果数:%d" % (len(result)))
    print("迭代总次数:%d" % (z))

if __name__ == '__main__':
    startTime = time.time()
    getResult(100,999)
    print("执行时间:%d s" % (time.time()-startTime))

执行结果如下:

...
执行矩阵运算 x:992,y:(992~999)...
执行矩阵运算 x:993,y:(993~999)...
执行矩阵运算 x:994,y:(994~999)...
执行矩阵运算 x:995,y:(995~999)...
执行矩阵运算 x:996,y:(996~999)...
执行矩阵运算 x:997,y:(997~999)...
执行矩阵运算 x:998,y:(998~999)...
匹配的结果数:55509
迭代总次数:404550
执行时间:4 s

继续阅读分享一个数学计算

复习Javascript原型链

现在我们在日常的工作中由于有各种大神造好的轮子,导致我们在业务开发中已经很少能经常性接触到开发低层的一些事情。有时候就要时不时的给自己充充电,否则我们就只能用降龙十八掌吓唬人了,根本没有内功 :P

原型对象和构造函数

我们从一个构造函数开始:

function Person (name) {
  this.name = name
}
var person = new Person('Jack')

我们在声明它的时候,JS会自动生成一个与其对应原型对象(原型对象是对象),该构造函数会有一个内部属性,名为prototype指向原型对象,你可以通过Person.prototype来访问其中的内容,这也就是我们通常在原型对象上挂载属性和方法的方式。

继续阅读复习Javascript原型链

使用ambari2.7.0搭建hdp3.0集群

base

本文参考自:https://docs.hortonworks.com/HDPDocuments/Ambari-2.7.0.0/bk_ambari-installation/content/ch_Getting_Ready.html
文中所有安装配置,基于centos7。

ambari安装步骤

  1. 配置服务器

操作系统版本 centos7.4,我的配置是:

hostname ip 内存
server1 192.168.50.60 4G
server2 192.168.50.61 4G
server3 192.168.50.62 4G
server2 192.168.50.63 4G
server3 192.168.50.64 4G

虚拟机请配置成桥接模式,保存每台设备,都有独立的局域网IP,便于局域网访问

继续阅读使用ambari2.7.0搭建hdp3.0集群

一个时代已过去,带着USB-C和全面屏的iPad pro 2018

上周,我们见证了在厨子(Tim Cook)领导下的苹果发布了最新一代的iPad pro,这是其第三代产品,也是自从乔帮主发布在2010年发布第一代iPad后外观变化最大的一次。
泡面本人也是在首发日就预定了12.9寸的版本。(国行因为过审原因延后了2天),就在昨天11月10日拿到了真机。这次泡面除了机器本身以外,还另购了第二代Apple Pencil 以及智能双面夹(贵成狗)。


(图1)

泡面从昨天到今天已经重度使用了1天半的时间,因为网上各类介绍已经相当的多,这里我就不在赘述,只简单说说自己的使用体验。

继续阅读一个时代已过去,带着USB-C和全面屏的iPad pro 2018

调用链监控系统的选型

背景

最近进行系统分布式改造,需要上一款调用链监控系统。预研了一下cat,zipkin,pinpoint。现就将3者做一个简单的归纳总结;

对比

cat zipkin pinpoint
可视化
java埋点方式 侵入 侵入 不侵入字节码
serverMap 简单的依赖图 简单
heartbeat
报表 非常丰富
JAVA客户端支持
社区 文档丰富 文档一般,暂无中文社区 一般,文档少,无中文社区
案例 携程,点评 京东,阿里改造后不开源 暂无
项目源头 ebay cal google dapper google dapper

继续阅读调用链监控系统的选型