自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 自研RPC框架-原理篇

1. 背景笔者工作也有些时间了,在某互联网一二线场都工作过,当时在某二线厂工作时,部门自研了RPC框架,用来支撑部门C端产品业务开发,当时一直想自己也要写一个RPC框架,但由于一直没有时间,这个想法隔着了很久。最近稍微有点时间,决定自己写一个RPC框架。其实有很多优秀的RPC框架,常见的如下:Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java

2021-09-04 18:26:36 1109 9

原创 Apache Zeppelin可视化插件开发详解

1.可视化插件的生命周期可视化插件的基类中包括的主要方法如下,比较重要的包括constructor、render、activate、destroy方法。当我们的插件实现该基类并覆盖相应的方法时,zeppelin框架会去按照插件的生命周期调用相应的方法(感觉和JavaEE 中的servlet类很相似,覆盖实现相应方法,容器如Tomcat会去调用特定的方法)。Zeppelin后台调用插件的是result.controller.js,这是采用了angularJS框架调用我们插件相应的方法,只要我们

2021-06-17 20:29:21 729 2

原创 Apache Zeppelin体系及可视化插件介绍

1. 基本介绍1.1 Zeppelin是什么?Zeppelin是一个基于Web的notebook,提供交互数据分析和可视化。后台支持接入多种数据处理引擎,如spark,hive等。支持多种语言:Scala(Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等。2.基本特点2.1多种语言支持2.1.1 zeppelin支持支持很多解释性程序,包括Apache Spark, Python, JDBC, Markdow

2021-06-17 19:57:08 3410 1

原创 Hadoop基本原理及Map-Reduce体系

分布式文件系统HDFS一、测试安装好的hadoop集群1.在hadoop的同级目录input中创建两个文件2.将两个文件拷贝到hadoop目录下的in目录(注意这个in目录不是linux实际目录)bin/hadoop dfs -put ../input in3.查看这两个文件bin/hadoop dfs -ls ./in/* 4.提交运行作业bin/hadoop jar hadoop-0.x.x-examples.jar wordcount in out其中hadoop

2021-06-13 18:00:02 205 2

原创 搭建完整的hadoop、Spark、Zookpeer、Hbase、Hive测试集群

一、搭建Hadoop集群1.修改网络配置文件- vi /etc/sysconfig/network-scripts/ifcfg-ens33#配置静态IPTYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6

2021-06-13 15:23:30 410

原创 八、Spark SQL

一、基本概念Spark SQL提供了一种特殊的RDD,叫做SchemaRDD。SchemaRDD是存放Row对象的RDD,每个Row对象代表一行记录。SchemaRDD支持RDD上所没有的一些新操作,比如运行SQL查询。SchemaRDD可以从外部数据源创建,也可以从查询结果或普通RDD中创建。二、连接Spark SQL1.Spark SQL依赖等信息跟spark其他程序库一样,需要在应用中引入Spark SQL需要添加一些额外的依赖。这种分离机制使得spark内核编译无需依赖大量额外的

2021-05-29 13:57:16 167

原创 七、Spark调优与调试

一、使用SparkConf配置Spark在Scala中使用SparkConf创建一个应用val conf = new SparkConf()conf.set("spark.app.name","My Spark App")conf.set("spark.master","local[4]")conf.set("spark.ui.port","36000")//重载默认端口配置//使用这个配置对象创建一个SparkContextval sc = new SparkContext(conf)

2021-05-29 13:55:32 380

原创 六、在集群上运行Spark

一、使用SparkConf配置Spark在Scala中使用SparkConf创建一个应用val conf = new SparkConf()conf.set("spark.app.name","My Spark App")conf.set("spark.master","local[4]")conf.set("spark.ui.port","36000")//重载默认端口配置//使用这个配置对象创建一个SparkContextval sc = new SparkContext(conf)

2021-05-29 13:53:48 384

原创 五、Spark编程进阶

一、累加器1.累加器的用法通过在驱动器中调用SparkContext.accumulator(initialValue)方法,创建出有初始值的累加器。返回值为org.apache.spark.Accumulator[T]对象,其中T是初始值initialValue的类型。Spark闭包里的执行器代码可以使用累加器的+=方法增加累加器的值。驱动器程序可以调用累加器的value属性来访问累加器的值。注意:工作节点上的任务不能访问累加器的值。累加器是一个只写变量。2.累加器与容错性Spark会

2021-05-29 13:51:59 148

原创 四、Spark数据保存与读取

一、文本文件读取文件textFile()当我们将一个文本文件读取为RDD时,输入的每一行都会成为RDD的一个元素。也可以将多个完整的文本文件一次性读取为一个pair RDD,其中键是文件名,值是文件内容。使用wholeTextFiles()方法: 它也以目录为参数,返回一个 pair RDD,其中key是输入文件的文件名,value是对应文件的所有数据,size为文件个数。wholeTextFiles() 在每个文件表示一个特定时间段内的数据时非常有用。比如文件表示不同阶段销售数据,则可

2021-05-29 13:50:16 1734 4

原创 三、Spark键值对操作

一、创建Pair RDD返回二元组二、Pair RDD转化操作可以使用所有标准RDD上的可用的转化操作具体操作函数,请参考书43-44页三、聚合操作combineByKey()是最为常用的基于键进行聚合的函数大多数基于基于键聚合的函数都是用它实现的。和aggregate一样,combineByKey()可以让用户返回与输入数据的类型不同的返回值combineByKey的工作流程combineByKey(createCombiner,mergeValue,mergeCo

2021-05-29 13:49:02 280

原创 二、Spark RDD介绍

1. 什么是RDDRDD(Resilient Distributed Dataset)叫做分布式数据集,是spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大的提升了查询速度。2. RDD的属性一组分片(Partition),即数据集的基本组成单位。(某个节点中的具体数据)对于RDD来说,每个分片都会被

2021-05-29 12:25:25 185

原创 一、Spark安装与部署

1.jdk和scala的安装配置1.1 spark官方下载路径链接:https://www.apache.org/dyn/closer.lua/spark/spark-2.3.1/spark-2.3.1-bin-hadoop2.7.tgz1.2 windows下的spark开发环境配置注意:windows下开发spark不需要在本地安装hadoop,但是需要winutils.exe、hadoop.dll等文件,所以还需要安装Hadoop。下载windows下hadoop工具包(分为32

2021-05-29 12:23:00 1033

原创 前端踩坑

JS相关JavaScript中原型对象的彻底理解https://blog.csdn.net/u012468376/article/details/53121081JS的forEach和map方法的区别forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的。jQuery也有一个方法$.e...

2018-08-14 14:38:55 295

原创 VMware虚拟机安装设置

虚拟机桥接模式网络设置 虚拟机网卡的配置输入vi /etc/sysconfig/network-scripts/ifcfg-xxx命令 保存后退出,然后Service network restart ,此时运行ifconfig时可以看到对应网卡上的ip,用xshell连接即可。...

2018-06-21 20:29:10 246

原创 IntelliJ IDEA配置与使用(图文教程)

一、IntelliJ配置1.代码提示与补充2.设置自动导包3.设置字体4.设置快捷键- 5.设置字符码表

2018-05-18 11:24:43 462

转载 ActiveMQ基本详解与总结& 消息队列-推/拉模式学习 & ActiveMQ及JMS学习

转自:https://www.cnblogs.com/Survivalist/p/8094069.htmlActiveMQ基本详解与总结MQ简介:   MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信...

2018-04-30 15:01:43 1450

转载 ActiveMQ常见的问题和解决方法

转自:https://www.cnblogs.com/chn58/p/6538161.html1.先讲严重的:服务挂掉。这得从ActiveMQ的储存机制说起。在通常的情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的,它们的最大限制在配置文件的节点中配置。但是,在非持久化消息堆积到一定程度,内存告急的时候,ActiveMQ会将内存中的非持久化消息写入临时文件中,以腾出内存...

2018-04-28 15:18:54 3694

转载 Java并发编程:深入剖析ThreadLocal

转自:http://www.cnblogs.com/dolphin0520/p/3920407.html想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。  以下是本文目录大纲:...

2018-04-17 21:39:50 125

原创 Linux进程线程查看命令与java线程的监控分析

Linux进程查看命令PS命令1.不带参数的ps使用 2.显示所有的当前进程ps –ax -a 代表 all。同时加上x参数会显示没有控制终端的进程。ps -ax | less 可以结合less命令和管道来使用以方便查看。3.通过cpu和内存使用来过滤进程ps -aux | less默认的结果集是未排好序的。可以通过 –sort命令来排序。根据 CPU 使用来升...

2018-03-26 21:53:46 28009

原创 HTTP协议

HTTP协议1.HTTP协议用于定义客户端与web服务器的通信格式HTTP是hypertext transfer protocal(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议HTTP使用请求-响应的方式进行传输,一个请求对应一个响应,并且请求只能是由客户端发起的HTTP协议的版本:HTTP/1.0,HTTP/1.1,其中1.0一次请求发起一次连接,响应过后连接自动断...

2018-03-25 20:57:02 160

原创 Socket网络编程

更详细的代码及测试方法请参照github项目 https://github.com/RobinLiew/SocketInAction ,测试方法与说明请参照readme.Socket基础类服务端package com.robinliew.basedemo;import java.io.BufferedReader;import java.io.IOException;imp...

2018-03-17 17:50:24 191

转载 Java Socket 常见问题

Java Socket超时浅析Java Socket应答与HTTP服务器的瓜葛Java Socket通信技术收发线程互斥的解决方法java.net.SocketException四大异常解决方案

2018-03-17 16:29:06 515

转载 深入分析Java的序列化与反序列化

转载自http://www.hollischuang.com/archives/1140序列化是一种对象持久化的手段。普遍应用在网络传输、RMI等场景中。本文通过分析ArrayList的序列化来介绍Java序列化的相关内容。主要涉及到以下几个问题:怎么实现Java的序列化为什么实现了java.io.Serializable接口才能被序列化transient的作用是什么怎么自定义序列...

2018-03-17 14:18:08 101

原创 MySQL引擎类型

MySQL引擎类型MySQL内部有一个具体管理和处理数据的内部引擎。在你使用create table语句时,该引擎具体创建表,而在你使用select语句或进行其他数据库处理时,该引擎在内部处理你的请求。多数时候,此引擎都隐藏在DBMS内,不需要过多关注它。MySQL与其他DBMS不一样,它具有多种引擎。它打包多个引擎,这些引擎都隐藏在MySQL服务器内,全都能执行create table和...

2018-03-11 15:34:20 224

原创 linux学习笔记(Shell)

一、Bash Shell基础1.Bash Shell简单介绍管理整个硬件的其实是核心(kernel),通常用户(user)都是以shell来与核心沟通。什么是Shell? 我们通过shell与核心沟通,shell相当于用户和核心之间的桥梁。 系统当前有多少Shells?可以检查一下/etc/shells文件。我们一般使用linux支持最广泛的bash。Bash的...

2018-03-09 17:35:35 235

原创 AngularJS学习笔记

最近开发一个项目用到AngularJS,作为一个java后端程序员,有点赶鸭子上架的赶脚,万幸AngularJS这个前端框架上手比较快,我参照 http://www.runoob.com/angularjs/angularjs-tutorial.html 网站上的教程进行学习,并对其进行笔记总结,加深记忆。1.AngularJS基本介绍AngularJS是什么?AngularJ...

2018-03-08 13:38:58 235

原创 NPM工具的使用

NPM工具的使用NPM基本介绍NPM是什么?NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题。NPM的中文文档https://www.npmjs.com.cn/getting-started/what-is-npm/上介绍说: 它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代...

2018-03-06 17:30:34 1595

转载 负载均衡基础知识

转载自: https://www.cnblogs.com/danbing/p/7459224.html一、什么是负载均衡? 互联网早期,业务流量比较小并且业务逻辑比较简单,单台服务器便可以满足基本的需求;但随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台机器的性能问题以及单点问题凸显了出来,因此需要多台机器来进行性能的水平扩展以及避免单点故障。但是要如何将不同的用户的流...

2018-03-04 16:42:07 191

原创 linux学习笔记(基础)

一、启动、关机等基础操作date 显示日期命令 date +%Y/%m/%ddate +%H %Mcal(calender) 显示日历 显示当前月份的日历 cal显示2008年的日历 cal 2008正确的关机方法观察系统的使用状态(用来判断是否可以关机) 如果要查看当前有谁在线,可以发出who命令如果要查看网络联机状态,可以使用netstat -a命令...

2018-03-03 14:13:20 270

原创 tomcat服务器的介绍、安装与配置

基本介绍Tomcat服务器架构 Tomcat目录 bin:存放tomcat启动关闭所用的批处理文件conf : tomcat的配置文件, 最重要的是server.xml,其中可以修改端口号lib : tomcat运行所需的jar包logs : tomcat运行时产生的日志文件temp : tomcat运行时使用的临时目录,不需要关注webapps : web应用所存放的根...

2018-03-01 11:04:06 325

原创 Maven基本使用(图文教程)

Maven基本使用一、安装先去官网下载maven(http://maven.apache.org/download.cgi)下载下来解压后如下所示 配置环境变量 查看配置成功与否 maven配置文件 maven项目目录结构 使用myeclipse构建maven项目 pom.xml文件<project xmlns="http://maven...

2018-02-24 16:05:23 16823 1

原创 myeclipse闪退的解决办法

今天突然遇到myeclipse闪退,搜了一下解决办法,靠谱的有下面两种(亲测有效) 两种解决办法: 1.删除问题所在工作空间下的.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi(推荐) 2.删除问题所在工作空间下的.metadata,这样的话对应的myeclipse配置,诸如字体大小,编码方式等配置也会被删除,你需要进行重...

2018-02-24 10:31:20 5251 2

原创 基于BP神经元网络算法的模式识别

这是以前自己读研时的一个比较简单的项目,分享出来,希望能帮到一些对神经网络和模式识别感兴趣的人。基于BP神经元网络算法的模式识别BP神经元网络算法神经网络是对人脑或自然神经网络的若干基本特性的抽象,是一种基于连接假说构造的智能仿生模型,人们试图通过对它的研究最终揭开人脑的奥秘,建立起能模拟人脑功能和结构的智能系统,使计算机能够像人脑那样进行信息处理。本文主要用基于BP神经元网络算

2018-01-06 17:14:38 4823 1

原创 RS纠删算法原理与项目源码

RS纠删算法原理中文描述可以参照该链接: http://qa.blog.163.com/blog/static/1901470022015916101344975Github项目源码源码来自:https://github.com/Backblaze/JavaReedSolomon 如果你想处理使用RS纠删算法处理字节数组,可以参照我的GitHub项目(在上一链接的基础上我进

2018-01-06 16:45:39 1712 2

原创 Java Web基础

自己以前的学习笔记,希望可以帮助到一些学习Java web的人。还有一部分内容没写完,以后抽时间补上。注意:图片可以右击点击查看图片,放大(使用火狐浏览器) Java Web基础 Java Web基础一、Servlet1.创建Servlet1.实现Servlet接口2.继承javax.servlet.Gener

2018-01-06 16:32:39 382

原创 RS(255,223)纠错算法原理与项目源码

RS(255,223)纠错算法原理与项目源码1.背景数据在网络传输、存储过程中由于信道噪声条件,硬件设备等问题数据产生了差错,这时候应该如何处理呢?特别是现在企业对海量大数据的传输,存储的重视,要求我们使用一定的技术处理这些数据差错。2.纠错编解码原理简单介绍为什么纠错码具有发现错误!纠正错误的能力呢?纠错码又是按什么样的原理去编的呢?为了说明这些问题,我们首先介绍一

2018-01-06 15:52:33 10443 3

原创 Java并发编程基础

因为最近的项目遇到大量并发编程的问题,抽出时间把并发编程的基础整理一下,毕竟万丈高楼平地起。更深层次的并发编程会在以后的博客中介绍。一、为什么要并发编程?并发编程可以使程序的执行速度更快。多处理器的情况并发编程可以更好的发挥多个处理器的能力,从而提高程序的执行速度,但是,并发编程通常是提高运行在单处理器上的程序性能。初看,线程间的上下文切换会增大开销,并不能提高程序的执行性能。但是,...

2017-12-25 18:57:13 386

转载 什么时候使用CountDownLatch

正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDownLatch相关的以下几点: 目录CountDownLatch是什么?CountDo

2017-12-12 18:36:31 127

转载 多线程中 interrupt、interrupted 、isInterrupted 区别

1、interrupt interrupt方法用于中断线程。调用该方法的线程的状态为将被置为”中断”状态。 注意:线程中断仅仅是置线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态为并做处理。支持线程中断的方法(也就是线程中断后会抛出interruptedException的方法)就是在监视线程的中断状态,一旦线程的中断状态被置为“中断状态”,就会抛出中断异常。2、interrupt

2017-12-06 20:14:34 290

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除