自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

段渣渣推轮子的飙车场

轮子推不好,怎么能飙车?

  • 博客(131)
  • 收藏
  • 关注

原创 索引堆及其优化

索引堆基本理解最小生成树算法, 还是最短路径算法, 我们都需要使用索引堆进行优化。索引堆解决普通堆的一些局限性 堆中存储的元素结构复杂,交换元素的代价很大堆建成后改变了原本他在数组中的位置,我们如果想要修改某个元素的值,将会很困难,如果添加一个元素表示他原来的位置的话,我们需要遍历一遍堆才能找到进行修改,这样的性能也是低效的对于索引堆来说,我们将数据和索引这两部分分开存储。真正表...

2018-07-31 12:32:40 312

原创 原地堆排序

原地堆排序基于堆相关的操作,我们可以很容易的定义堆排序。例如,假设我们已经读入一系列数据并创建了一个堆,一个最直观的算法就是反复的调用extractMax函数,因为该函数总是能够返回堆中最大的值,然后把它从堆中删除,从而对这一系列返回值的输出就得到了该序列的降序排列。真正的原地堆排序使用了另外一个小技巧。堆排序的过程创建一个堆H[0...n−1]H[0...n−1]H[0...n...

2018-07-31 12:31:45 237

原创 堆排序及其优化

堆排序堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。排序过程图示 首先,将元素进行重排,以匹配堆的条件。图中排序过程之前简单的绘出了堆树的结构复杂度分析分类 排序算法 数据结构 数组 最坏时间复杂度O(nlogn)O(nl...

2018-07-31 12:31:11 627

原创 优先队列与最大堆

优先队列与最大堆什么是优先队列优先队列:出队顺序与入队顺序无关,和优先级有关 普通队列:先进先出,后进后出不同底层结构底层实现优先队列的时间 底层机构 入队 出队(拿出最大元素) 普通线性结构 O(1) O(n) 顺序线性结构 O(n) O(1) 堆 O(logn) O(logn)可以看出普通与顺序的...

2018-07-30 21:32:42 886 1

原创 快速排序及其优化——随机化标定点、双路快排、三路快排

快速排序及其优化——随机化标定点、双路快排、三路快排快速排序基本概念快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序 n个项目要 O(nlog n)(大O符号)次比较。在最坏状况下则需要 O(n2)O(n2)O(n^{2})次比较,但这种状况并不常见。事实上,快速排序...

2018-07-29 23:12:50 566

原创 归并排序及其优化

归并排序基本概念归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为 O(n\log n)}(大O符号)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。算法步骤递归法(Top-down) 1. 申请空间,使其大小为两...

2018-07-29 23:10:29 1604 1

原创 插入排序

插入排序简单理解插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。算法步骤一般来说,插入...

2018-07-28 22:04:11 181

原创 选择排序

选择排序基本理解选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,...

2018-07-28 22:03:07 132

原创 红黑树

红黑树大名鼎鼎的红黑树 红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。 它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里...

2018-07-26 10:06:55 138

原创 基于二分搜索树的集合的实现

基于二分搜索树的集合的实现集合是一种存放不同元素的抽象数据结构,底层可以用不同的方式实现,但是不同的方式会有不同的性能。比如用二分搜索树会比链表快很多,用红黑树又会比链表快很多。实现思路二分搜索树实现集合的具体思路 首先实现二分搜索树类,然后实现集合的接口。 二分搜索树类package SetBasicsAndBSTSet;import java.util....

2018-07-26 10:06:05 188

原创 Spark中的Data Sources (数据源)【官网学习摘录笔记】

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ Spark中的Data Sources (数据源)Spark SQL 支持通过 DataFrame 接口对各种 data sources (数据源)进行操作. DataFrame 可以使用 relational transformations (关系转换)操作, 也可用于创建 temporary view (临时视图)....

2018-06-28 11:29:11 630

原创 新浪股票信息爬取

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ 新浪股票信息爬取老师想要通过数据做股票预测,我那帮老师爬取了一点数据。 大一时候写的代码了,比较蠢。 不做解释了,只贴上当时的代码。留作纪念吧。1. 爬取股票列表如果要爬取各各股票的信息,首先要有股票的代码,所以先爬去股票的编号为后续做准备# -*- coding:UTF-8 -*-import...

2018-06-27 21:27:32 1424

原创 淘女郎个人信息爬取

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ 淘女郎个人信息爬取淘宝的模特小姐姐们贼好看,就想爬一波小姐姐们的个人信息喽,大致就是这个图片啦 1.寻找接口通过网络请求分析发现是json传递的信息 接口就是“https://v.taobao.com/micromission/req/selectCreatorV3.do” 这个接口的翻页参数是curr...

2018-06-27 21:22:57 2243

原创 Spark-shell启动的时候报Error while instantiating ‘org.apache.spark.sql.hive.HiveSessionStateBuilder’错误

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ https://blog.csdn.net/xiaoduan_/article/details/79815692Spark-shell启动的时候报java.lang.IllegalArgumentException: Error while instantiating ‘org.apache.spark.sql.hive...

2018-04-04 12:21:35 8212 7

原创 Spark的4种运行模式

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ https://blog.csdn.net/xiaoduan_/article/details/79809247Spark的4种运行模式模式简介Spark支持4中运行模式,分别是local Standalone YARN 和 Mesos 1. Local:建议开发的时候使用,在本地IDE中便于编码和调试 ...

2018-04-03 21:04:58 783

原创 RDD转DataFrame的两种方法

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ https://blog.csdn.net/xiaoduan_/article/details/79809225RDD转DataFrame的两种方法使用反射来推断包含特定类型对象的 RDD 的模式(Inferring the Schema Using Reflection) The first metho...

2018-04-03 21:03:29 586

原创 maven-assembly-plugin的使用,打包SparkSQL项目到生产环境

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ https://blog.csdn.net/xiaoduan_/article/details/79809188maven-assembly-plugin的使用,打包SparkSQL项目到生产环境  这里有一个pom.xml文件,其中Spark,hadoop等生产上已经有环境。所以打包的时候需要将这些依赖不打包进去,...

2018-04-03 21:00:40 1148

原创 thriftserver/beeline/jdbc等方式连接到SparkSQL

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ https://blog.csdn.net/xiaoduan_/article/details/79730384thriftserver/beeline、jdbc等方式连接到SparkSQLthriftserver和beeline的简单配置和使用启动thriftserver: 默认端口是10000 ,可以修...

2018-03-28 16:58:51 2258

原创 HDFS架构的基本认知

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ https://blog.csdn.net/xiaoduan_/article/details/79687600HDFS架构的基本认知1 Master(NameNode/NN) 带 N个Slaves(DataNode/DN) HDFS/YARN/HBase也都是采用这种方式1个文件会被拆分成多个Block ...

2018-03-25 16:07:04 155

原创 Windows报Failed to locate the winutils binary in the hadoop binary path,java.io.IOException:

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ http://blog.csdn.net/xiaoduan_/article/details/79476815Windows平台上运行hadoop与spark程序涉及读写操作时报空指针等错误解决方案问题详细描述:Windows平台上运行hadoop与spark程序涉及读写操作时报 Failed to ...

2018-03-07 20:59:47 2314

原创 单一职责原则

@(设计模式)[设计原则]单一职责原则定义:不要存在多于一个导致类变更的原因一个类、方法、接口应该只负责一项职责优点:降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险类级别例子:将走的鸟与飞行的鸟各自为一类接口级别例子:课程管理接口与内容接口相互影响,应该分为两个接口...

2019-07-05 22:35:58 245

原创 简单工厂模式

简单工厂模式简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些。因为它至少不是Gof23种设计模式之一。但它在实际的编程中经常被用到,而且思想也非常简单模式定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专...

2019-07-05 22:35:51 364

原创 接口隔离原则

接口隔离原则定义:用多个专门的接口,而不使用单一的总接口,客户端不应该依赖他不需要的接口一个类对应一个类的依赖应该建立在最小的接口上建立单一的接口,不要建立庞大臃肿的接口尽量细化接口,接口中的方法尽量的少注意适度原则,一定要适度优点:符合我们所说的高内聚低耦合的设计思想,从而使得类具有更高的可读性可扩展性和可维护性例子:有的鸟不会游泳,不会飞,但是必须实现这个方法 显然不符合接口...

2019-07-05 22:35:37 221

原创 抽象工厂模式

抽象工厂模式定义:抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。产品族与产品等级结构比如,餐馆新推出的套餐,炸鸡加可乐为一个组...

2019-07-05 22:35:28 211

原创 工厂方法模式

工厂方法模式定义与类型定义:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。属于创建型适用场景创建对象需要大量的代码客户端不需要知道产品类型如何创建的细节一个类通过其子类来指定创建哪个对象优点用户只需要关心产品所对应的工程无需关心细节加入新产品符合开闭原则,提高可扩展性缺点类的个数增多,增加了系统的复杂性增加...

2019-07-05 22:35:18 163

原创 迪米特原则

@(设计模式)[设计原则]迪米特原则定义:一个对象应该对其他对象保持最少的了解,又叫最少知道原则强调只和朋友交流不和陌生人说话朋友是指出现在成员变量、方法输入输出中出现的类、称为朋友类。而出现在方法体内的类不属于朋友类尽量降低类与类之间的耦合优点:降低类之间的耦合例子 老板不需要知道如何统计课程信息,他只需要下达命令给经理,而经理需要知道如何进行统计...

2019-07-05 22:35:09 123

原创 合成复用原则

合成复用原则定义:尽量使用对象组合/聚合而不是继承关系达到软件复用的目的优点:可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类影响较小例子:数据库连接添加,连接类进行抽象,不同数据库之间是同等级的实现类...

2019-07-05 22:35:00 149

原创 建造者模式

建造者模式建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。简介意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个...

2019-07-05 22:34:52 135

原创 开闭原则

开闭原则概念定义:一个软件实体如类,模块和函数应该对扩展开方,对修改关闭。优点用抽象构建框架,用实现扩展细节提高软件系统的可复用行及可维护性代码示例现有功能需求,打印出原本的价格和打折后的课程价格依照开闭原则,最好是添加一个打折的课程类继承原始课程类,并且添加打折价格计算方法,并在test中new打折的课程类...

2019-07-05 22:34:42 128

原创 依赖倒置原则

依赖倒置原则定义:高层模块不应该依赖底层模块,二者应该都依赖其抽象要点抽象不应该依赖细节,细节应该依赖抽象针对接口编程,不要针对实现编程优点可以减少类之间的耦合性,提高系统稳定性,提高代码可读性和可维护性,可减低修改程序所造成的风险例子:将课程信息抽象出来,便于以后扩展添加课程信息...

2019-07-05 22:34:31 144

原创 UML入门

UML入门简介UML是统一建模语言(unified Modeling Language )非专利的第三代建模和规约语言分类结构式图形:强调的是系统式的建模行为式图形:强调系统模型中触发的事件交互式图形:属于行为式图形子集合,强调系统模型中的资料流程结构式图形静态图(类图,对象图,包图)实现图(组件图,部署图)剖面图复合结构图行为式图形活动图状态图用例图...

2019-07-05 22:34:06 255

原创 求的带权图最小生成树的Prim算法和Kruskal算法

求的带权图最小生成树的Prim算法和Kruskal算法最小生成树的概念最小生成树其实是最小权重生成树的简称。一个连通图可能有多个生成树。当图中的边具有权值时,总会有一个生成树的边的权值之和小于或者等于其它生成树的边的权值之和。广义上而言,对于非连通无向图来说,它的每一连通分量同样有最小生成树,它们的并被称为最小生成森林。以有线电视电缆的架设为例,若只能沿着街道布线,则以街道为边...

2018-08-02 15:16:08 6010

原创 有权图的表示和存储

有权图的表示和存储带权图的存储于无全图的存储差别在于边上,这里将边作为一个类存储。 Edge类package MinimumSpanTrees;/** * @ Description: 图的边 类 * @ Date: Created in 07:47 2018/8/2 * @ Author: Anthony_Duan */public class Edge<Wei...

2018-08-02 15:15:25 522

原创 使用BellmanFord算法求带负权图的单源最短路径

使用BellmanFord算法求带负权图的单源最短路径BellmanFord算法可以处理带不带负权环的图,及时权为负也可以接受,但是时间复杂度较高贝尔曼-福特算法与迪科斯彻算法类似,都以松弛操作为基础,即估计的最短路径值渐渐地被更加准确的值替代,直至得到最优解。在两个算法中,计算时每个边之间的估计距离值都比真实值大,并且被新找到路径的最小长度替代。 然而,迪科斯彻算法以贪心法选取未被处理的...

2018-08-02 15:12:07 380

原创 Dijkstra算法求带权图的单源最短路径

Dijkstra算法求带权图的单源最短路径Dijkstra可以用来求不带负权的带权图 Dijkstra的核心是松弛操作,具体松弛操作是什么,请看代码吧。 使用索引堆优化过的Dijkstra算法的时间复杂度为O(Elog(V))O(Elog(V))O(Elog(V))实现代码package ShortestPath;import java.util.Stack;impo...

2018-08-02 15:11:20 1091

原创 求图的连通分量

求图的连通分量什么是连通分量无向图G的一个极大连通子图称为G的一个连通分量(或连通分支)。连通图只有一个连通分量,即其自身;非连通的无向图有多个连通分量。实现代码package GraphBasics;/** * @ Description: 求无全图的联通分量 * @ Date: Created in 12:37 2018/8/1 * @ Author: A...

2018-08-01 18:57:30 4062

原创 图的深度优先遍历寻路算法

图的深度优先遍历寻路算法看注释吧package GraphBasics;import java.util.Stack;import java.util.Vector;/** * @ Description:深度优先遍历寻路算法 * @ Date: Created in 12:53 2018/8/1 * @ Author: Anthony_Duan */public ...

2018-08-01 18:56:21 1013

原创 无权图的广度优先遍历寻找单源最短路径

图的广度优先遍历寻找最短路径直接看代码package GraphBasics;import java.util.LinkedList;import java.util.Stack;import java.util.Vector;/** * @ Description: 寻找s到w的最短路径 * @ Date: Created in 13:14 2018/8/1 * @...

2018-08-01 18:55:49 1619

原创 简单图的存储和表示

什么是简单图在无向图中,关联一对顶点的无向边如果多于1条,则称这些边为平行边,平行边的条数称为重数。在有向图中,关联一对顶点的有向边如果多于1条,并且这些边的始点与终点相同(也就是它们的的方向相同),称这些边为平行边。含平行边的图称为多重图,既不含平行边也不含环的图称为简单图。稠密图和稀疏图的定义有很少条边或弧(边的条数|E|远小于|V|²)的图称为稀疏图(sparse graph...

2018-08-01 18:54:31 1106

原创 希尔排序

希尔排序基本概念希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: + 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率 + 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位算法过程(wiki百科)原始的算法实现在最坏的情况下需要进行...

2018-07-28 22:02:04 117

空空如也

空空如也

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

TA关注的人

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