Awebone's Blog

见多方能识广,进而才可以融会贯通;取他人之所长,谦而才可以为我所用。


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 阅读排行

  • 站点地图

  • 搜索

多种计算引擎实现WordCount

发表于 2020-03-26 | 分类于 大数据 | 阅读次数: ℃
字数统计: 1,312 | 阅读时长 ≈ 6

本文使用多种计算引擎实现词频统计

MapReduce实现

编写MapReduce程序分成三部分:Mapper、Reducer、Driver

业务逻辑

  1. MapTask阶段处理每个数据分块的单词统计分析,每遇到一个单词,将其转换为一个k-v对,如<hello, 1>的形式,发送给ReduceTask进行汇总
  2. ReduceTask阶段接受MapTask的结果,做汇总计数

Mapper接受的四个泛型

  • KEYIN:输入的键的类型,在这里指的是每一行起始的偏移量
  • VALUEIN:输入的值的类型,在这里指的是一行的内容
  • KEYOUT:输出的键的类型,这里指的是单词,允许重复的
  • VALUEOUT:输出的值的类型
阅读全文 »

Java单例模式

发表于 2020-03-20 | 分类于 Java | 阅读次数: ℃
字数统计: 317 | 阅读时长 ≈ 1

懒汉式

在初次调用静态方法getSingleton,才会初始化signleton实例。

双重检查模式实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Singletom {
private volatile static Singletom singletom;
private Singletom(){}
public static Singletom getSingleton(){
if (singletom == null){
synchronized (Singletom.class){
if (singletom == null){
singletom = new Singletom();
}
}
}
return singletom;
}
}
  • 实现了延迟初始化,只有在初次调用静态方法getSingleton,才会初始化signleton实例。

  • 性能优化,同步会造成性能下降,在同步前通过判读singleton是否初始化,减少不必要的同步开销。

  • 线程安全,同步创建Singleton对象,同时注意到静态变量singleton使用volatile修饰,避免JVM进行优化重排序。

阅读全文 »

ElasticSearch安装避坑

发表于 2020-03-17 | 分类于 大数据 | 阅读次数: ℃
字数统计: 655 | 阅读时长 ≈ 3

本文使用Centos7安装ElasticSearch6.5.2,记录避坑指南。

升级内核

通过命令查看内核:

1
2
uname -a
# 3.10.0-327.el7.x86_64

Centos7自带的内核为3.10,但是ElasticSearch6.5.2要求系统内核必须在3.5以上,故升级内核,root用户下执行:

1
2
3
4
5
6
7
8
9
10
# 导入key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装elrepo的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 安装内核
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml
# 查看默认启动顺序
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
# 默认启动的顺序是从0开始,新内核是从头插入,选择0
grub2-set-default 0

安装完毕后重启reboot生效

查看内核为5.5.9:Linux awebone.com 5.5.9-1.el7.elrepo.x86_64 #1 SMP Wed Mar 11 19:01:01 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux

如果遇到curl 不兼容或不支持的协议版本的问题,通过以下方法解决:

1
yum update -y nss curl libcurl
阅读全文 »

MySQL基本使用

发表于 2019-03-17 | 分类于 数据库 | 阅读次数: ℃
字数统计: 3,527 | 阅读时长 ≈ 14

MySQL基本使用

修改MySQL提示符

修改提示符的两种方式:

  1. 连接客户端时通过参数指定:shell>mysql -uroot -proot --prompt 提示符
  2. 连接上客户端后,通过prompt修改:mysql>prompt 提示符

修改参数:

\D 完整日期
\d 数据库
还可以搭配一起+符号
\h 服务器
\u 用户

阅读全文 »

使用JavaScript实现焦点轮播图

发表于 2017-12-29 | 分类于 前端 | 阅读次数: ℃
字数统计: 2,118 | 阅读时长 ≈ 9

原理

各大网站都使用焦点轮播图来展示自己的图片,如淘宝、京东等。

  1. 焦点轮播图所用技能点:DOM操作、定时器、事件运用、JS动画、函数递归、无限滚动;
  2. 无限滚动实现:包含图片的父级标签要有一个属性overflow:hidden 来隐藏超出自身尺寸的内容;有style:left通过控制left值来实现滚动; 图片列表中要在开始和结束位置添加两张相同的附属图,使图片实现无缝连接。
阅读全文 »

HTML5音频解析与可视化

发表于 2017-10-25 | 分类于 web前端 | 阅读次数: ℃
字数统计: 421 | 阅读时长 ≈ 2

HTML5音频解析与可视化

基本结构

使用express 框架搭建后台基本结构

阅读全文 »

Mac转Windows的拯救指南

发表于 2017-10-13 | 分类于 工具 | 阅读次数: ℃
字数统计: 913 | 阅读时长 ≈ 3

Mac转Windows的拯救指南

假期使用Mac开发,目前转Windows开发学习,体会了Mac上高效率的快捷键之后,感觉用鼠标点来点去很麻烦,将一些小工具使用,来提高效率。这只是给新手介绍,大神请绕过。

下面开始介绍一些工具来拯救Mac党

1.Chocolatey

Chocolatey是一个Windows上的包管理器,类似于linux上的yum和 apt-get。 你可以在其官方网站上查看具体的使用说明。一般的安装步骤应该是下面这样:

CMD

1
@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

Powershell

1
Set-ExecutionPolicy Bypass; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

一般来说,使用Chocolatey来安装软件的时候,需要以管理员的身份来运行命令提示符窗口。chocolatey的网站可能在国内访问困难,导致上述安装命令无法正常完成。请使用科学上网。

阅读全文 »

MapReduce初探

发表于 2017-09-14 | 分类于 大数据 | 阅读次数: ℃
字数统计: 324 | 阅读时长 ≈ 1

MapReduce初探

MapReduce是一个用于处理海量数据的分布式计算框架

MapReduce解决的问题:

  • 数据分布式存储
  • 作业调度
  • 容错
  • 机器间通信
阅读全文 »

MongoDB基础学习

发表于 2017-07-01 | 分类于 数据库 | 阅读次数: ℃
字数统计: 1,356 | 阅读时长 ≈ 5

MongoDB是一个跨平台,面向文档的数据库,提供高性能,高可用性和易于扩展,总结知识点分享给与我一样刚入门MongoDB的人。

基本概念

  • 数据库:数据库是一个集合的物理容器。每个数据库获取其自己设定在文件系统上的文件。一个单一的MongoDB服务器通常有多个数据库
  • 集合:集合是一组MongoDB的文件。它与一个RDBMS表是等效的。一个集合存在于数据库中。集合不强制执行模式。集合中的文档可以有不同的字段。
  • 文档:文档是一组键值对。文档具有动态模式。动态模式是指,在同一个集合的文件不必具有相同一组集合的文档字段或结构,并且相同的字段可以保持不同类型的数据。

  • 文档是MongoDB中数据的基本单元

  • 在MongoDB中,一个MongoDB实例可以承载多个数据库,每个数据库拥有0或多个集合,一个集合拥有多个文档
  • 在同一个MongoDB服务器上存放多个应用那个程序或用户的数据,需要使用不同的数据库
  • 使用BSON格式
阅读全文 »

FreeCodeCamp学习笔记(二)

发表于 2017-05-14 | 分类于 web | 阅读次数: ℃
字数统计: 5,508 | 阅读时长 ≈ 19

FreeCodeCamp学习笔记(二)

基本概念

软件概念

  • 软件是程序或在硬件上运行的程序,写入硬件的代码,两种软件类型是操作系统和应用软件。
  • 有三个主要的操作系统:Windows,Mac和Linux。
  • 应用范围包括所有其他软件,如Web浏览器,游戏,还有像Photoshop,查看邮件,编辑文档的软件等。

CDN

  • 内容传递网络(CDN)是一种分布式服务器(网络),基于用户的地理位置向用户分发网页和其他Web内容,网页和内容分发服务器的起源。
  • CDN的目标是建立更高质量的网络连接。
  • CDNs通过为用户和用户目标站点之间建立快速通道或提供更快的建立在其他服务器上的镜像站点来达成目标。
  • 这个概念和这种类型的服务不是创新型的想法,但是它正使互联网更加普及。
  • 网站付费使用CDN服务,而CDN反过来you向因特网提供商付费来使用他们的服务和数据。
  • 谷歌托管库就是一种CDNs : developers.google.com/speed/libraries/#jquery
  • 谷歌托管那些(常用的)库,比起你自己(在自己的服务器上)部署这些库,你的用户就可以更快的访问到它。
  • 有可能的话,用户浏览器甚至会存储已经访问过的网站的缓存。
阅读全文 »
1234
Awebone

Awebone

35 日志
11 分类
25 标签
RSS
GitHub Segmentfault 码云 E-Mail
友链
  • 掘金
  • 开源中国
  • gitmemory
0%
© 2016 — 2021 Awebone.com 版权所有 ICP证:蒙ICP备20000954号-1
博客全站共50.8k字 | 
本站访客数:人 | 
本站总访问量次
微信扫一扫,订阅本博客