自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大冰的小屋

谁的青春不苦逼,谁的未来是确定,努力吧,少年!

  • 博客(237)
  • 资源 (1)
  • 收藏
  • 关注

转载 怎样才是理想的程序员

转载自 http://bbs.csdn.net/topics/391061326第1个一点点:专注眼下见过太多心猿意马的程序员,我不得不把「专注眼下」作为天字第一条。他们往往有各式各样的小梦想,比如做个小茶农、做个小鹅贩、做产品、做销售、做投资,却被程序员的高薪或是没有转行的魄力「耽误」了,而因为不专注,他们不在意做好自己的本分,不在意锤炼自己的技能,不在意学习新兴的技术。不可否认,这

2015-08-21 10:36:40 740

原创 支持Windows和Linux的文件目录创建和删除操作

文件目录的创建和删除在Windows和Linux下使用的函数有所不同,这里整理了一份。另外在删除目录时,需要先删除目录中的内容。在这里只做了删除目录的内容,没有做删除当前目录的操作。代码如下: file_util.h#ifndef FILE_UTIL_H#define FILE_UTIL_H#ifdef WIN32#include <windows.h>#include <direct.h>

2016-11-30 10:23:34 839

原创 Java构造器内部的多态方法的行为

在一般的方法内部,动态绑定的调用是在运行时才决定的,因为对象无法知道它是属于方法所在的那个类,还是属于那个类的导出类。如果要调用构造器内部的一个动态绑定方法,就要用到那个方法的被覆盖后的定义。但是这个调用的效果可能很难预料,因为被覆盖的方法在对象被完全构造之前就会被调用。而C++则会避免这个问题。 Java 例子:package com.myjava.study;class Glyph {

2016-11-20 13:19:29 727

原创 WebSocket的简单使用

WebSocket一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端直接向客户端推送数据而不需要客户端进行请求,在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并允许数据进行双向传送。——- 《维基百科》最近在项目中使用了WebSocket,开发了一个非常简单的服务器端

2016-11-15 07:21:55 7467

原创 Spark任务提交与执行之RDD的创建、转换及DAG构建

在这里通过使用wordcount例子来学习Spark是如何进行任务的提交与执行。本次先进行RDD的创建、转换以及DAG的构建进行学习。 整个wordcount的代码可以简单如下实现:sc.textFile("/library/wordcount/input").flatMap(_.split(" ")).map(word => (word, 1)).reduceByKey(_ + _).colle

2016-09-25 16:29:21 2806

原创 ExternalBlockStore

ExternalBlockStore作为存储Block文件的外部管理器,其实际是封装了TachyonBlockManager。这样做可以更好的解耦合,方便以后加入新的第三方的管理器。ExternalBlockStore创建TachyonBlockManager代码如下:/** * Stores BlockManager blocks on ExternalBlockStore. * We cap

2016-09-22 07:04:51 836

原创 BlockManager

Spark为了避免Hadoop读写磁盘的I/O操作成为性能瓶颈,优先将配置信息、中间计算结果等数据存入内存,极大的提高了系统的执行效率。1. 块管理器BlockManager块管理器BlockManager是Spark存储体系中的核心组件。Driver 和 Executor都会创建BlockManager。其主构造器如下:/** * Manager running on every node (d

2016-09-22 06:47:43 2999

原创 内存存储 MemoryStore

MemoryStroe负责将没有序列化的Java对象数组或者序列化的ByteBuffer存储到内存中。 1. entries : 存储Block数据的Map,key 为 BlockId,value 为 MemoryEntry,并能根据存储的先后顺序访问; private val entries = new LinkedHashMap[BlockId, MemoryEntry](32, 0.75f

2016-09-15 06:34:39 3493

原创 磁盘存储DiskStore

当MemoryStore没有足够的空间时,就会使用DiskStore将块存入磁盘。DiskStore继承自BlockStore,实现了getBytes、putBytes、putArray、putIterator等方法。val minMemoryMapBytes = blockManager.conf.getSizeAsBytes("spark.storage.memoryMapThreshold",

2016-09-14 06:49:00 1583

原创 磁盘块管理器DiskBlockManager

BlockManager管理和维护了逻辑上的Block和存储在Disk上的物理的Block的映射。默认情况下,一个逻辑的Block会根据它的BlockId生成的名字映射到一个物理上的文件。但是,也可以使用mapBlockToFileSegment方法映射到一个文件的一段区域。 这些物理文件会被hash到由spark.local.dir(或者通过SPARK_LOCAL_DIRS来设置)上的不同目录中

2016-09-13 07:19:06 2341

原创 BlockManagerMaster对BlockManager的管理

BlockManagerMaster是在SparkEnv中创建的,负责对Block的管理和协调,具体操作依赖于BlockManagerMasterEndpoint。Drive和Executor处理BlockManagerMaster的方式不同: val blockManagerMaster = new BlockManagerMaster(registerOrLookupEndpoint(

2016-09-12 06:50:50 4036

原创 Spark Shuffle服务和客户端

BlockTransferServiceSpark是分布式部署的,每个Task最终都运行在不同的机器节点上。map任务的输出结果直接存储到map任务所在的机器的存储体系中,reduce任务很可能不在同一台机器上运行,所以需要远程下载map任务的中间输出。ShuffleClient不仅将shuffle文件上传到其他Executor或者下载到本地的客户端,也提供了可以被其他Executor访问的shuf

2016-09-11 09:11:46 2998

原创 SparkEnv

SparkEnv是Spark的执行环境对象,其中包括与众多Executor执行相关的对象。在local模式下Driver会创建Executor,local-cluster部署模式或者Standalone部署模式下Worker另起的CoarseGrainedExecutorBackend进程中也会创建Executor,所以SparkEnv存在于Driver或者CoarseGrainedExecutor

2016-09-08 06:47:18 2516

原创 SparkContext主要组成部分

1. 基本说明SparkContext是应用程序的提交执行的前提。先来看一下SparkContext的注释:/** * Main entry point for Spark functionality. A SparkContext represents the connection to a Spark * cluster, and can be used to create RDDs, ac

2016-09-07 08:21:00 7056 2

原创 SparkConf

SparkConf的注释:/** * Configuration for a Spark application. Used to set various Spark parameters as key-value pairs. * * Most of the time, you would create a SparkConf object with `new SparkConf()`, w

2016-08-25 08:49:39 2207

原创 Spark Transformation和Action算子速查表

Transformation算子 Transformation算子 作用 map(func) 返回一个新的分布式数据集,其中每个元素都是由源RDD中每一个元素经过func函数转换得到的 filter(func) 返回一个新的数据集,其中包含的元素来自源RDD中元素经过func函数过滤后的结果(func函数返回true的结果) flatMap(func) 类似于map,

2016-08-20 16:31:21 1564

原创 Spark 使用sortByKey进行二次排序

Spark的sortByKey API允许自定义排序规则,这样就可以进行自定义的二次排序、三次排序等等。 先来看一下sortByKey的源码实现:def sortByKey(): JavaPairRDD[K, V] = sortByKey(true)def sortByKey(ascending: Boolean): JavaPairRDD[K, V] = { val comp = com

2016-08-15 07:33:48 5617

原创 Spark的Action算子的简单例子

package com.spark.Appimport org.apache.spark.{SparkContext, SparkConf}/** * Created by Administrator on 2016/8/14 0014. */object Actions { def main(args: Array[String]) { val conf = new Spar

2016-08-14 11:21:19 955

原创 Spark常用的Transformation算子的简单例子

Spark的常用Transformation算子有map、filter、flatMap、reduceByKey、groupByKey、join、leftOuterJoin、rightOuterJoin、cogroup等算子。在这里进行的简历例子的使用,以后随着学习的深入需要第每个算子深入分析。package com.imfimport org.apache.spark.{SparkContext,

2016-08-13 18:16:55 2820

原创 Spark第一个程序开发 wordcount

这里介绍了程序运行在本地模式和Standalone模式两种方式package com.spark.appimport org.apache.spark.{SparkContext, SparkConf}/** * Created by Administrator on 2016/7/24 0024. */object WordCount { def main(args: Array[S

2016-07-24 12:17:08 21477 6

原创 Spark集群启动后进程的简单介绍

刚开始学习Spark,首先看一下Spark集群启动之后都会产生哪些进程,方便查看集群是否启动正常。首先介绍下我的Spark集群是以Hadoop的HDFS作为分布式文件存储系统,资源管理系统既可以使用Hadoop的Yarn,也可以使用Spark自带的Standalone模式,当然也可以使用其他的资源管理系统,例如Mesos、EC2等。我的测试集群是一个master节点和4个worker节点启动HDFS

2016-07-24 10:59:10 9312

原创 快学Scala第20章----Actor

本章要点每个actor都要扩展Actor类并提供act方法要往actor发送消息,可以用actor ! message .消息发送是异步的:“发完就忘”要接收消息,actor可以调用receive或react,通常是在循环中这样做。receive/react的参数是由case语句组成的代码块(从技术上讲,这是一个偏函数)不同actor之间不应该共享状态。总是使用消息来发送状态不要直接调

2016-07-13 22:31:18 1472

原创 快学Scala第18章----高级类型

本章要点单例类型可用于方法串接和带对象参数的方法。类型投影对所有外部类型的对象都包含了其内部类的实例。类型别名给类型指定一个短小的名称。结构类型等效于“鸭子类型”。存在类型为泛型类型的通配参数提供了统一形式。使用自身类型来表明某特质对混入它的类或对象的类型要求。“蛋糕模式”用自身类型来实例依赖注入。抽象类型必须在子类中被具体化。高等类型带有本身为参数化类型的类型参数。单例类型给定

2016-07-13 22:25:50 1599

原创 快学Scala第17章----类型参数

本章要点类、特质、方法和函数都可以有类型参数将类型参数放置在名称之后,以方括号括起来。类型界定的语法为 T <: UpperBound、 T >: LowerBound、 T <% ViewBound、 T : ContextBound你可以用类型约束来约束另一个方法,比如(implicit ev: T <:< UpperBound)用+T(协变)来表示某个泛型类的子类型关系和参数T方向一

2016-07-05 23:11:15 601

原创 快学Scala第15章----注解

本章要点你可以为类、方法、字段、局部变量、参数、表达式、类型参数以及各种类型定义添加注解。对于表达式和类型,注解跟在被注解的条目之后注解的形式有: @Annotation、 @Annotation(value) 或 @Annotation(namel = value, …)@volatitle、 @transient、 @strictfp 和 @native 分别生成等效的Java修饰符。

2016-07-04 21:45:16 1444

原创 快学Scala第14章----模式匹配和样例类

本章要点match表达式是一个更好的switch,不会有意外掉入到下一个分支的问题。如果没有模式能够匹配,会抛出MatchError。可以用case _ 模式来避免。模式可以包含一个随意定义的条件,称作守卫。你可以对表达式的类型进行匹配;优先选择模式匹配而不是isInstanceOf/asInstanceOf。你可以匹配数组、元组和样例类的模式,然后将匹配到的不同部分绑定到变量。在for

2016-07-02 21:29:23 2708

原创 快学Scala第13章----集合

本章要点所有集合都扩展自Iterable特质集合有三大类:序列、集、映射对于几乎所有集合类,Scala都同时提供了可变的和不可变的版本Scala列表要么是空的,要么拥有一头一尾,其中尾部本身又是一个列表集是无先后次序的集合用LinkedhashSet 来保留插入顺序,或者用SortedSet来按顺序进行迭代‘+’ 将元素添加到无先后次序的集合中; +: 和 :+ 向前或向后追加到序列;

2016-06-28 23:48:15 3111

原创 快学Scala第12章----高阶函数

本章要点在Scala中函数是“头等公民”,就和数字一样;你可以创建匿名函数,通常还会把它们交给其他函数;函数参数可以给出需要稍后执行的行为;许多集合方法都接受函数参数,将函数应用到集合中的值;有很多语法上的简写让你以简短且易读的方式表达函数参数;你可以创建操作代码块的函数,它们看上去就像是内建的控制语句。作为值的函数在Scala中,你可以在变量中存放函数:import scala.ma

2016-06-26 22:42:52 1150

原创 快学Scala第11章----操作符

本章要点标识符由字母、数字或运算符构成。一元和二元操作符其实是方法调用操作符优先级取决于第一个字符,而结合性取决于最后一个字符apply 和 update方法在对expr(args)表达式求值时被调用。提取器从输入中提取元组或值的序列。标识符变量、函数、类等名称统一称为标识符;虽然在Scala中有更多的选择,可以由字母、数字和各种运算符构成,但是如果语义不够明确,还是不要随意使用(个人觉

2016-06-26 14:25:26 509

原创 快学Scala第10章----特质

本章要点类可以实现任意数量的特质特质可以要求实现它们的类具备特定的字段、方法或超类和Java接口不同,Scala特质可以提供方法和字段的实现当你将多个特质叠加在一起时,顺序很重要—-其方法先被执行的特质排在更后面为什么没有多重继承Scala和Java一样不允许类从多个超类继承;从多了超类继承可能会导致许多问题,例如两个超类有相同的方法,子类该如何使用和菱形继承。在java 中类只能扩展自一

2016-06-26 09:47:54 2825

原创 快学Scala第9章----文件和正则表达式

本章要点Source.fromFile(…).getLines.toArray 输出文件文件的所有行Source.fromFile(…).mkString 以字符串形式输出文件内容将字符串转换为数字,可以用toInt或toDouble方法使用Java的PrintWriter来写入文本文件- “正则”.r 是一个Regex对象如果你的正则表达式包含反斜杠或引号的话,用”“”…”“”如果正则

2016-06-21 23:40:21 639

原创 快学Scala第8章----继承

快学Scala第8章—–继承本章要点extends、final关键字和Java中相同重写方法时必须用override只有主构造器可以调用超类的主构造器你可以重写字段扩展类Scala扩展类的方式和Java一样—–使用extends关键字class Employee extends Person { var salary = 0.0 ...}可以将类声明为final,这样就不

2016-06-20 21:43:36 875

原创 快学Scala第7章----包和引入

快学Scala第7章—–包和引入本章要点包也可以像内部类那样嵌套包路径不是绝对路径包声明链x.y.z并不自动将中间包x和x.y变成可见位于文件顶部不带花括号的包声明在整个文件范围内有效包对象可以持有函数好变量引入语句可以引入包、类和对象引入语句可以出现在任何位置引入语句可以重命名和隐藏特定成员java.lang、scala和Predef总是被引入包要增加条目到包中:package

2016-06-19 15:56:37 891

原创 快学Scala第6章--对象

快学Scala第6章—–对象(Object)本章要点:用对象作为单例或者存放工具方法类可以拥有一个同名的伴生对象对象可以扩展类或特质对象的apply方法通常用来构造伴生类的新实例如果不想显示定义main方法,可以使用扩展APP特质的对象你可以通过扩展Enumeration对象来实现枚举单例对象需要特别说明的,与C++/Java不同的是,Scala没有静态方法和静态字段,你可以用Obje

2016-06-19 13:41:56 586

原创 快学Scala第5章--类

快学Scala第5章—–类本章要点类中的字段自动带有getter方法和setter方法你可以用定制的getter/setter方法替换掉字段的定义,而不必修改使用类的客户端—–这就是所谓的统一访问原则用@BeanProperty注解来生成JavaBeans的getXxx/setXxx方法。每个类都有一个主要的构造器,这个构造器和类定义交织在一起。它的参数直接成为类的字段。主构造器执行类体中所

2016-06-18 18:44:39 689

原创 快学Scala第4章--映射和元组

快学Scala第四章–映射和元组映射是键/值(key-value)对偶的集合。Scala有一个通用的叫法–元组—–n个对象的聚集,并且不一定要相同类型的。而对偶不过是n=2的元组本章要点Scala有十分容易的语法来创建、查询和遍历映射你需要从可变的和不可变的映射中做出选择默认情况下,你得到的是一个哈希映射,不过你也可以指明要树形映射你可以很容易的在Scala映射和Java映射之间来回切换元

2016-06-18 00:04:30 655

原创 快学Scala第3章--数组相关操作

快学Scala第三章–数组相关操作本章的主题若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer提供初始值时不要使用new用()来访问元素用for(elem <- arr) 来遍历元素用for(elem <- arr if…)… yield … 来将原数组转型为新数组Scala数组和Java数组可以互操作;用ArrayBuffer,使用scala.collection

2016-06-16 00:20:12 668

原创 快学Scala第2章--控制结构和函数

快学Scala第二章–控制结构和函数本章要点if表达式有值。块也有值—-是它最后一个表达式的值。Scala的for循环就像是增强版的Java for循环分号(在绝大多数情况下)不是必须的void类型是Unit避免在函数定义中使用return注意别在函数式定义中漏掉了=异常的工作方式和Java或C++中基本一样,不同的是你在catch语句中使用“模式匹配”Scala没有受检异常条件

2016-06-14 23:33:32 2100

原创 快学Scala第1章--基础

快学Scala第一章–基础本章的要点包括:使用Scala解释器用var 和 val 定义变量数字类型使用操作符浏览ScaladocScala 解释器Scala解释器可以与Python的解释器类似,边编写边解释执行,非常方便。但是从技术上讲,Scala程序并不是一个解释器,实际上发生的是,你输入的内容被快速的编译成字节码,然后这段字节码由Java虚拟机执行,因此被称为REPL(读取-求值-

2016-06-13 22:11:33 845

原创 软件测试之独步武林系列(一)

千秋万载,一统江湖......

2015-08-17 19:59:30 1120 2

用C++实现数据结构中的各种算法

用c++实现的数据结构中的各种算法,有完整的实现过程

2013-09-02

空空如也

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

TA关注的人

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