自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LMR的博客

奋斗的程序员

  • 博客(139)
  • 资源 (3)
  • 收藏
  • 关注

原创 将pySpark将array列展开为pandas单独列

将pySpark将array列展开为pandas单独列写在前面的话pyspark列展开写在前面的话这一系列主要记录我工作中遇到的一些问题,以及相应的解决办法。希望对大家能有帮助。pyspark列展开假设我们的数据中有4列,col_A,col_B,col_C和col_D,其中列A和列B都是数组列,我们需要将这两列进行展开,数组中的每一维都展开为一列。代码如下:#获取数据中的第一行,主要是为了获取数组长度first_row = raw_data.first()#数组列array_cols = [

2021-05-29 10:24:47 1004

原创 Spark中基于模型的特征选择实现

Spark中基于模型的特征选择实现基于模型的特征选择方法是一种常见的特征选择方法,此类方法是基于我们构造的最终模型来选择适合的特征子集。目前Spark中可直接使用的特征选择方法有限,下面介绍基于Spark中的交叉验证来进行特征选择的方法。1.Spark交叉验证由于本文介绍的特征选择方法的实现是基于交叉验证实现的,本节中我们先介绍Spark的交叉验证的使用。这里使用的模型是简单的逻辑回归模型,我们通过交叉验证来找到迭代次数等参数。import org.apache.spark.ml.classific

2020-12-19 10:19:56 706 1

原创 《JAVA捡漏系列》之equals方法的正确使用

equals方法在日常编程中使用十分广泛,但是在复杂的编程中很容易发生空指针异常,例如下面代码:String str = null;if (str.equals("LMRzero")) { ...} else { ..}上面的程序运行会抛出空指针异常,这是因为字符串没有进行初始化,不能调用其equals方法,我们需要改成如下方式才能运行:String str = null;if ("LMRzero".equals(str)) { ...} else { ..}

2020-07-18 20:39:25 619 1

转载 Java泛型类型擦除以及类型擦除带来的问题

Java泛型类型擦除以及类型擦除带来的问题1.Java泛型的实现方法:类型擦除1-2.通过两个例子证明Java类型的类型擦除2.类型擦除后保留的原始类型3.类型擦除引起的问题及解决方法3-1.先检查,再编译以及编译的对象和引用传递问题3-2.自动类型转换3-3.类型擦除与多态的冲突和解决方法3-4.泛型类型变量不能是基本数据类型3-5.编译时集合的instanceof3-6.泛型在静态方法和静态类中的问题1.Java泛型的实现方法:类型擦除1-2.通过两个例子证明Java类型的类型擦除例1.原始类型相

2020-07-18 18:15:13 1155

原创 《JAVA捡漏系列》之标签的使用

JAVA捡漏系列主要是用于记录近期看《Java编程思想》过程中发现自己没有用过的或者不了解的知识点。本文主要介绍Java中的标签如何使用。

2020-06-25 20:53:33 453

原创 白纸不够白,签名照片还需要ps去除背景?Python大法半完美解决电子签名背景问题(20行代码去除签名背景)

毕业季又来了,今年受疫情影响,毕业答辩基本都在网上进行。很多材料都需要电子签名。由于受到纸张、光线和手机等外部环境的影响,并不是每个人都有完美的条件拍出比较好的签名照片。本文主要是利用python来对签名背景去除,提取签名照片。

2020-05-24 20:19:38 15459

原创 Netty编程之基于Netty的私有协议设计与开发

通信协议从广义上来区分,可以分为公有协议和私有协议。由于私有协议的灵活性,它往往会在某个公司或者组织内部使用,按需定制,因因如此,升级起来会非常方便,灵活性较好。本博客基于《Netty 权威指南》,设计并实现私有协议。

2020-05-24 10:44:13 8271 1

原创 两个案例带你搞定JBoss Marshalling编解码在Netty中的应用

JBoss Marshalling 是一个 Java 对象序列化包,对 JDK 默认的序列化框架进行了优化,但又保持与 Serializable 接口的兼容,同时增加了一些可调用的参数和附加的属性,这些参数可通过工厂类进行配置。

2020-05-24 09:07:30 8588

原创 你了解Netty的编解码器吗?史上最通俗易懂的Netty解码器应用案例带你解开Netty解码器的神秘面纱

Netty解码器也是非常重要的一个模块, 服务端接收到客户端发送过来的消息, 准确说是字节数组, Netty底层已经将它们读取成ByteBuf了, 但是这些ByteBuf是没有任何含义的,需要我们根据业务来对字节数组进行解码。本文中我们将介绍Netty中常见的两种解码器DelimiterBasedFrameDecoder和FixedLengthFrameDecoder。

2020-05-21 20:56:38 9520

原创 Netty是如何解决TCP的粘包和拆包问题的?

TCP是个“流协议”,所谓流,就是没有界限的一连串数据,没有界限。TCP底层不了解业务数据的含义,它会根据TCP缓冲区的实际情况进行包的划分,所以业务上认为,一个完整的包可能被TCP拆分为多个包进行发送,也可能把多个小包封装成一个大的数据包进行发送,这就是所谓的TCP粘包和拆包问题。

2020-05-21 14:34:21 11255

原创 还在为Java的NIO编程发愁吗?也许你该接触下Netty网络编程了(从Netty环境搭建到Netty入门案例)

Netty是业界最流行的NIO框架之一,它的健壮性、功能、性能和可扩展性在同类框架中都是首屈一指的,它已经得到了成百上千的商用项目的验证。本文是Netty网络编程的入门教程,从Netty开发环境的搭建到Netty入门实例编程。Netty入门教程1. Netty开发环境搭建1.1. 下载Netty的jar包1.2 搭建Netty工程1.3 使用Maven工程2. Netty编程入门案例2.1 Netty服务端编程2.2 Netty客户端编程2.3 运行结果1. Netty开发环境搭建环境配置:J.

2020-05-20 21:48:49 11313

原创 一文搞定网络编程中的BIO、NIO和AIO(从理论到代码演示)

在学习网络编程时,容易混淆NIO、BIO、AIO这几个概念,同时对于阻塞和非阻塞、同步和异步的理解也较为晦涩,本文将从最基础的内核态/用户态进行介绍,逐步讲解在Java的IO编程中几种不同IO操作方式及其具体实现。

2020-05-19 22:55:01 12241 4

原创 你弄懂了Spark的Shuffle实现方式吗?手把手带你解析Spark的Sort Shuffle和Tungsten-Sort Shuffle

在大数据计算框架中,Shuffle阶段的设计优劣是决定性能好坏的关键因素之一。 为了深入理解Shuffle阶段的各个细节, 并进一步在理解的基础上优化代码,减少不必要的Shuffle开销, 我将通过几篇博客深入分析Spark Shuffle阶段的源代码实现,详细解析Spark Shuffle阶段的实现细节,主要内容包括Shuffle机制框架详解和当前Spark 2.12 中已经支持的Shuffle阶段的2种设计与实现。本文主要介绍当前Spark 2.12 中已经支持的Shuffle阶段的2种设计与实现。.

2020-05-17 14:05:13 3989 2

原创 还搞不懂Spark的Shuffle机制吗?基于Spark2.12的Shuffle机制框架详解(理论和源码相结合)

在大数据计算框架中,Shuffle阶段的设计优劣是决定性能好坏的关键因素之一。 为了深入理解Shuffle阶段的各个细节, 并进一步在理解的基础上优化代码,减少不必要的Shuffle开销, 我将通过几篇博客深入分析Spark Shuffle阶段的源代码实现,详细解析Spark Shuffle阶段的实现细节,主要内容包括Shuffle机制框架详解和当前Spark 2.12 中已经支持的Shuffle阶段的2种设计与实现。本文主要介绍Shuffle机制框架详解。Spark的Shuffle机制框架详解1. .

2020-05-15 19:54:28 3972

原创 你真的懂Spark吗?手把手带你解析Spark-Submit提交应用程序过程(Spark2.12)

前几篇博客详细解析了Spark的Job触发机制、Spark的DAGScheduler调度机制、Spark的TaskScheduler调度机制、Spark调度器的终端通信SchedulerBackend和Spark的Executor启动,在对这些源码进行分析之后,头脑中十分混乱,对于各个机制的具体执行过程不是十分了解。网上的各种分析博客也写得不是十分清晰,于是就开始了Spark任务提交流程的分析。本博客的Spark版本为2.12,是以Standalone Cluster部署模式为基础进行分析。Spark.

2020-05-14 12:05:02 4490 2

原创 一文搞定Spark的Executor创建与启动

Executor 是 Spark 中执行任务的进程, 它能被不同的调度模式所调度, 例如 Standalone、 Mesos 、 Yam。 博客主要讲解 Standalone 调度模式下的 Executor的创建与启动,通过对源代码的分析,能够使得我们更加深入了解Executor的创建和启动过程,也深入了解Spark等分布式框架的设计思路。

2020-05-12 13:55:17 6652 2

原创 一文搞定Spark的调度器的通信终端(SchedulerBackend)

本博客中的Spark版本为2.12SchedulerBackend1. SchedulerBackend原理2. SchedulerBackend启动流程源代码2.1. SchedulerBackend源代码解析2.2. Spark程序的注册机制3. Spark 程序对计算资源 Executor的管理1. SchedulerBackend原理以Spark Standalone部署方式为例, StandaloneSchedulerBackend在启动时构造了StandaloneAppClient实例,

2020-05-11 22:49:51 4970

原创 一文搞懂Spark的Task调度器(TaskScheduler)

TaskScheduler的核心任务是提交TaskSet到集群运算并汇报结果。为TaskSet创建和维护一个TaskSetManager, 并追踪任务的本地性及错误信息。遇到Straggle任务会放到其他结点进行重试。向DAGScheduler汇报执行情况, 包括在Shuffle输出丢失时报告fetch failed错误等信息。TaskScheduler底层调度器1. TaskScheduler原理剖析2. TaskScheduler源代码解析2.1 TaskScheduler 实例化源代码.

2020-05-10 13:11:29 6978

原创 一文搞定Spark的DAG调度器(DAGScheduler)

Spark的DAG调度器1. DAG定义2. DAG实例化3. DAGScheduler划分Stage的原理4 DAGScheduer划分Stage的源代码1. DAG定义RDD DAG还 构建了基于数据流之上的操作算子流, 即RDD的各个分区的数据总共会经过哪些 Transformation和 Action这两种类型的一系列操作的调度运行, 从而RDD先被Trans­formation操作转换为新的RDD, 然后被Action操作 将结果反馈到Driver Program或存储到外部存储系统上 。上

2020-05-10 10:42:47 8305 1

原创 一文搞定Spark的job触发机制

Spark的job触发机制1.Spark运行的基本概念1.1 Driver1.2 Cluster Manager1.3 Executor1.4 Worker2. Spark Job触发机制2.1 Job的逻辑执行2.2 Job的物理执行3. Job触发流程源代码解析1.Spark运行的基本概念本博客讲解的内容都是基于Spark的Standalone部署模式。在Standalone部署模式下, Spark比在YARN和Mesos更容易使用,因为不需要其他的东西。如果是基于Spark来处理数据,基本上一个S

2020-05-09 19:37:33 6087 1

原创 一文搞定Hadoop高可用集群搭建

Hadoop高可用集群搭建1. 前期准备和规划1.1 前期准备1.2 集群规划2.安装步骤2.1 .安装配置zooekeeper集群(在hadoop05上)2.1.1解压2.1.2.修改配置2.1.3将配置好的zookeeper拷贝到其他节点3.安装配置hadoop集群(在hadoop00上操作)3.1解压3.2配置HDFS3.2.1修改hadoo-env.sh3.2.2修改core-site.x...

2020-05-08 16:43:24 2719

原创 一文搞定Hive常用运算和函数

Hive常用运算和函数关系运算等值比较: =不等值比较: <>小于比较: <小于等于比较: <=大于等于比较: >=空值判断: IS NULL非空判断: IS NOT NULLLIKE比较: LIKEJAVA的LIKE操作: RLIKEREGEXP操作: REGEXP数学运算加法操作: +减法操作: -乘法操作 : *除法操作 : /取余操作 : %与操作 : &am...

2020-05-07 19:52:58 6200 1

原创 最全的Hive学习笔记

最全的Hive学习笔记1. 什么是hive1.1. hive基本思想1.2 为什么使用Hive1.3. Hive的特点2. hive的基本架构3. hive安装3.1. 最简安装:用内嵌derby作为元数据库3.2. 标准安装:将mysql作为元数据库3.2.1. mysql安装3.2.2. hive的元数据库配置4. hive使用方式4.1. 最基本使用方式4.2. 启动hive服务使用4.3....

2020-05-07 13:23:15 3844 1

原创 最全的Hbase学习笔记

最全的Hbase学习笔记1. zookeeper快速上手1.1. zookeeper的基本功能和应用场景1.2. zookeeper的整体运行机制1.3. zookeeper的数据存储机制1.3.1. 数据存储形式1.3.2. znode类型1.4. zookeeper的集群部署1.5. zookeeper的命令行客户端操作1.5.1. zookeeper的数据存储形式1.5.2. 数据管理功能1...

2020-05-07 11:08:17 3965

原创 爬虫利器:Python获取免费IP代理

由于现在很多网站都有反爬虫机制,同一个ip不能频繁访问同一个网站,这就使得我们在进行大量数据爬取时需要使用代理进行伪装,本博客给出几个免费ip代理获取网站爬取ip代理的代码,可以嵌入到不同的爬虫程序中去,已经亲自测试有用。需要的可以拿去使用(本人也是参考其他人爬虫程序实现的,但是忘记原地址了)。# coding=utf-8import urllib2import rep...

2020-05-06 20:58:48 4076 1

原创 时间序列分类算法ST及其实现代码

时间序列分类(TSC)问题对分类算法提出了一个特殊的挑战:如何度量序列间的相似性。shapelet是一个时间序列子序列,它允许基于形状的局部、相位无关相似性进行时间序列分类。(Shapelets是时间序列的辨别性子序列,可以最好地预测目标变量)。基于shapelet的分类使用shapelet和序列之间的相似性作为辨别性特征。shapelet方法的一个好处是shapelet是可理解的,并且可以提供对问题域的洞察。原始的基于shapelet的分类器将shapelet发现算法嵌入到决策树中,并利用信息增益来

2020-05-06 20:18:49 11579 15

原创 基于动态规划思想的时间序列距离方法介绍

时间序列指的是一组具有次序关系的数值型数据,这类数据在我们实际生活中十分普遍。例如,网页点击数据、广告点击量数据以及脑电图数据等等。时间序列数据也受到越来越多科研人员的关注,本博客主要介绍现有的基于动态规划思想的时间序列距离度量方法。在介绍这类方法之前首先介绍最经典的最简单的欧式距离度量。欧式距离度量 欧氏距离是一种按照时间点的对齐的时间序列对齐方法,计算相同...

2020-05-05 16:33:25 4836 2

原创 爬虫利器:PhantomJS快速入门

完成PhantomJS安装配置完成之后,下面进行简单的入门操作。首先通过一个小例子来演示PhantomJS,在电脑上新建一个JavaScript文件,在里面输入代码:console.log('Hello, world!');phantom.exit();在命令行输入:phantomjs test.js输出内容为Hello, world!。代码中的第...

2020-05-04 19:55:57 4734 3

原创 Window环境下下载安装Phantomjs

PhantomJS是一个基千WebKit的服务器端JavaScriptAPI。它全面支持Web而无需浏览器支持,不仅运行快,原生支持各种Web标准:DOM处理、css选择器、JSON、Canvas,和SVG。PhantomJS可以用于页面自动化、网络监测、网页截屏,以及无界面测试等。PhantomJS 可以看做一个没有界面的浏览器,它既有Firefox浏览器、google浏览器的功...

2020-05-04 18:15:11 3770 2

原创 Python爬虫之Scrapy(爬取csdn博客)

本博客介绍使用Scrapy爬取博客数据(标题,时间,链接,内容简介)。首先简要介绍Scrapy使用,scrapy安装自行百度安装。创建爬虫项目安装好scrapy之后,首先新建项目文件:scrapy startproject csdnSpider创建项目之后会在相应的文件夹位置创建文件:创建爬虫模块首先编写爬虫模块,爬虫模块的代码都放置于spiders文件夹中 。 爬虫模...

2020-05-03 15:49:00 5894 4

原创 Python动态网页爬取

前面所讲的都是对静态网页进行抓取,本博客介绍动态网站的抓取。 动态网站的抓取 相比静态网页来说困难一些,主要涉及的技术是Ajax和动态Html。简单的网页访问是无法获取完整的数据,需要对数据加载流程进行分析。针对不同的动态网页爬取方法,将分别用具体实例进行介绍。本博客主要是直接利用Ajax来获取数据。页面分析本博客以MTime电影网为例,主要爬取电影的评分票房等信息。首...

2020-05-02 11:25:51 5666 1

原创 Python静态网页爬虫项目实战

本爬虫是基于《Python爬虫开发与项目实战》一书实现的,基于现在的网页版本进行更新,可以成功抓取数据。爬虫基础架构和流程《Python爬虫开发与项目实战》一书中的介绍和图首先介绍爬虫的基础架构和流程如下图所示:基础爬虫框架主要包括五大模块, 分别为爬虫调度器、URL 管理器、HTML 下载器、 HTML解析器、数据存储器。功能分析如下:已爬虫调度器主要负责统筹其他四个模块...

2020-05-01 20:41:37 5055 1

原创 Python之BeatuifulSoup使用

# coding:utf-8from bs4 import BeautifulSoupimport bs4html_str = """<html><head><title>The Dormouse's story</title></head><body> <P class="title">&lt...

2020-04-28 23:31:50 4278 1

原创 Python正则表达式使用

Python通过re模块提供对正则表达式的支持 。 使用re的一般步骤是先将正则表达式的字符串形式 编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果,最后使用Match 实例获得信息, 进行其他操作。 主要用到的方法列举如下:re.compile(string[,flag]) re.match(pattem,string[, flags]) re...

2020-04-26 21:26:11 4458

原创 Python进程间通信(队列和管道)

Python提供了多种进程间通信的方式,例如Queue、Pipe、Value+Array等。本博客主要演示Queue和Pipe这两种方式。 Queue和Pipe的区别在于Pipe常用来在两个进程间通信,Queue用来在多个进程间实现通信 。Queue通信机制 首先讲解 一下Queue通信方式。Queue是多进程安全的队列,可以使用Queue实现多进 程之间的数据...

2020-04-26 07:32:58 4580 1

原创 Python多进程示例(fork和multiprocessing)

Python实现多进程的方式主要有两种, 一种是使用 os库中的fork方法, 另一种 方法是使用multiprocessing库。这两种方法的区别在千前者仅适用于Unix/Linux操作系统,对Windows 不支持, 后者则是跨平台的实现方式。 由于本人使用的是windows电脑,因此演示结果只有multiprocessing的,但是也给出了fork的代码。本文是基于《Python...

2020-04-25 20:55:01 4854 1

原创 秋招大数据\算法\数据挖掘面试总结(三)

HashMap为什么线程不安全concurrentHashMap1 在put数据的时候可能照成插入的数据被掩盖。2.在插入时,可能会照成resize,此时可能会造成环形链表 ,在get时会造成死循环HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时...

2020-04-22 11:13:40 6186 1

原创 秋招大数据\算法\数据挖掘面试题总结(二)

算法1、给定一个整数n,找出连续整数相加为该数的情况有多少?设等差数列:an=a+(n-1)*d (这里首项为a,公差d=1,第n项为an,前n项和为sn)a1=aan=a+n-1sn=(a1+an)n/2=(2a-1+n)*n/2再回到这个编程上来:我们的输入数据其实就是sn,需要找到以a开始的n个连续的递增数列使得和为sn。这里我们可以用循环来判定,给定一个...

2020-04-22 11:01:37 6430 1

原创 秋招大数据\算法\数据挖掘面试题总结(一)

本博客主要是用于总结秋招面试所被问到的相关问题和相关答案,答案也来自于各个博客,由于当初没有记录来源,这里不能标注来源,如有侵犯还请联系我标注。MySQL中的索引主键索引和非主键索引得区别?https://blog.csdn.net/tongdanping/article/details/79878302主键索引必须为非空1、主键索引:即主索引,根据主键pk_clolum...

2020-04-21 21:52:33 6304 1

原创 大数据基础以及项目视频下载(Spark、Hadoop等),面试必要学习

本博客主要更新大数据相关的教学视频和相关项目实战视频,以便于帮助广大大数据学习者。

2020-04-21 21:43:35 6372 1

机器学习视频(矩阵和线性代数教程)

Python机器学习学习视频。包括基础库的调用以及机器学习算法教程。包括概率论、矩阵学习、回归、分类、决策树、XGB、SVM、聚类、EM、主题模型和HMM

2020-05-07

最全简历模板(word单页模板)

里面包括100个简历模板,各种各样格式,包括应届生模板和社招模板。全部为word格式,可以随意更改内容和版式

2020-05-07

用于Lucene的IKAnalyzer分词器

IKAnalyzer是一个开源的,基于Java语言开发的轻量级的中文分词语言包,它是以Lucene为应用主体,结合词典分词和文法分析算法的中文词组组件。从3.0版本开始,IK发展为面向java的公用分词组件,独立Lucene项目,同时提供了对Lucene的默认优化实现。

2019-06-09

空空如也

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

TA关注的人

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