自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白杨的专栏

选择大于努力,态度决定高度!

  • 博客(102)
  • 资源 (5)
  • 收藏
  • 关注

原创 Golang Unit Test单元测试

1. Golang单元测试对文件名和方法名要求文件名必须以xx_test.go命名方法必须是Test[^a-z]开头方法参数必须 t *testing.T2. go test 参数解读   go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试。通过go help test可以看到go test的使用说明:格式go test [-c] [-i] [build fla

2016-07-21 11:41:10 3255

原创 tmux使用及个性化配置

1. tmux介绍tmux是一个优秀的终端复用软件,split窗口。可以在一个terminal下打开多个终端。即使非正常掉线,也能保证当前的任务运行,这一点对于远程SSH访问特别有用,网络不好的情况下仍然能保证工作现场不丢失。SSH重新连接以后,就可以直接回到原来的工作环境,不但提高了工作效率,还降低了风险,增加了安全性。tmux完全使用键盘控制窗口,实现窗口的切换功能。2. 安装sudo

2016-07-08 11:30:03 15665

原创 Raft一致性协议

0. 写在前面分布式存储系统通过维护多个副本来进行fault-tolerance,提高系统的availability。 带来的代价就是分布式存储系统的核心问题之一:维护多个副本的一致性。一致性协议就是用来干这事的,即使在部分副本宕机的情况下。Raft是一种较容易理解的一致性协议。 一致性协议通常基于replicated state machines,即所有结点都从同一个state出发,都经

2016-07-08 11:27:19 1281 1

原创 加密、数字摘要、数字证书、SSL、HTTPS及SSH免密登录

在看一些资料中经常会遇到加密、数字摘要、数字证书、SSL、HTTPS及SSH免密登录这写概念。下面将对加密、数字摘要、数字证书、SSL、HTTPS及SSH免密登录这些领域技术做一个简单介绍。1. 常用技术间的关系在我们正式开始对每一项技术进行介绍之前,让我们先有一个宏观的认识,下图罗列我们将要涉及的安全技术以及它们之间的关联。 安全领域的技术众多,但是归根结底,他们都是为了保障如下三个方面:认

2016-07-08 11:23:09 3226

原创 Github 配置SSH KEY

0. 前言很多朋友在用 github 管理项目的时候,都是直接使用 https url 克隆到本地,当然也有有些人使用 SSH url 克隆到本地。然而,为什么绝大多数人会使用 https url 克隆呢? 这是因为,使用 https url 克隆对初学者来说会比较方便,复制 https url 然后到 git Bash 里面直接用 clone 命令克隆到本地就好了。而使用 SSH url 克隆

2016-07-08 11:20:14 2790

原创 Bloom Filter 原理及 Google BloomFilter

1. Bloom Filter简介布隆过滤器 (Bloom Filter)是由Burton Howard Bloom于1970年提出,它是一种space efficient的概率型数据结构,用于判断一个元素是否在集合中。在垃圾邮件过滤的黑白名单方法、爬虫(Crawler)的网址判重模块中等等经常被用到。哈希表也能用于判断元素是否在集合中,但是布隆过滤器只需要哈希表的1/8或1/4的空间复杂度就能完成

2016-05-25 08:24:47 3789

原创 linux free命令使用及解析

1. 命令格式free [参数]2. 命令功能 free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略3. 命令参数-b  以Byte为单位显示内存使用情况。 -k  以KB为单位显示内存使用情况。 -m  以MB为单位显示内存使用情况。-g 以GB为单位显示内存使用情况。-h 自动转换单位(最常用)-o  不显示

2016-05-25 08:20:09 2450

原创 scala中集合的交集、并集、差集

交集:scala> Set(1,2,3) & Set(2,4) // &方法等同于interset方法scala> Set(1,2,3) intersect Set(2,4)并集:scala> Set(1,2,3) ++ Set(2,4)scala> Set(1,2,3) | Set(2,4) // |方法等同于union方法scala> Set(1,2,3) union Set(2

2016-05-25 08:09:44 3814

原创 变量命名规范

1. 驼峰命名法1.1 小驼峰法 除第一个单词之外,其他单词首字母大写(常用于变量)int myStudentNumber1.2 大驼峰法(帕斯卡命名法) 每一个单词的首字母都采用大写字母(常用语类名,函数名,属性,命名空间)class StudentFamily2. 匈牙利命名法 变量名=属性+类型+对象描述,这样做的好处是使程序员第一眼看到变量时就对变量的类型和其它属性有直观

2016-05-25 08:07:14 17759 2

原创 Virtualenv 快速上手指南

1. virtualenv概述 virtualenv 通过创建独立Python开发环境的工具,来解决依赖、版本以及间接权限问题。比如一个项目依赖Django1.3 而当前全局开发环境为Django1.7,版本跨度过大, 导致不兼容使项目无法正在运行,使用virtualenv可以解决这些问题。 virtualenv 创建一个拥有自己安装目录的环境,这个环境不与其他虚拟环境共享库, 能够方

2016-05-25 08:04:00 3919

原创 Zipf,Power-laws,Pareto分布

对于在对数坐标系中出现一条直线而言,三种分布都是可能的:Zipf,Power-laws和 Pareto。这三种分布都是用于描述同一种现象:大量事件是稀少的,而一些小事件确是很普遍的。 例如:成绩非常优异的学生是少数,但是成绩中等的学生却很多。(1)Zipf分布描述事件出现平率yy与其由下优先级r(Rank)r(Rank)之间的关系,按照Zipf模型,事件出现的平率与其优先级rr成反比:

2016-05-25 08:01:41 3424

原创 影响Spark输出RDD分区的操作函数

1. 会影响到Spark输出RDD分区(partitioner)的操作cogroup, groupWith, join, leftOuterJoin, rightOuterJoin, groupByKey, reduceByKey, combineByKey, partitionBy, sort, mapValues(如果父RDD存在partitioner), flatMapValues(如果父RD

2016-05-01 10:05:13 1489

原创 fold/foldLeft/foldRight区别和联系

1. fold介绍从本质上说,fold函数将一种格式的输入数据转化成另外一种格式返回。fold, foldLeft和foldRight这三个函数除了有一点点不同外,做的事情差不多。我将在下文解释它们的共同点并解释它们的不同点。 我将从一个简单的例子开始,用fold计算一系列整型的和。val numbers = List(5, 4, 8, 6, 2)numbers.fold(0) { (z, i)

2016-05-01 09:59:30 5676

原创 Mysql支持的数据类型

1. 数值类型Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展。扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的整形,并增加了BIT类型,用来存放位数据。 整类型 字节 范围(

2016-05-01 09:54:48 8982

原创 Markdown数学符号

Markdown数学符号,Latex数学符号

2016-05-01 09:50:33 20075 10

原创 RESTful API 设计最佳实践

1. 背景REST(英文:Representational State Transfer,表述性状态转移)描述了一个架构样式的网络系统,比如 web 应用程序。 目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API 格式如何?你的API是否应该加入版本信息?当你开始写一个a

2016-05-01 09:30:02 9397

原创 GraphX源码解析(Graph构建过程)

1. Graph构建Graph对象是用户的操作入口,主要包含edge和vertex两部分。边是由点组成,所以边中所有的点就是点的全集,但这个全集包含了重复的点,去重后就是VertexRDD。1.1 构建图的方法从边的集合构建图(Graph.fromEdges)def fromEdges[VD: ClassTag, ED: ClassTag]( edges: RDD[Edge[ED]],

2016-04-06 15:58:49 5719

原创 Leanote 博客详细安装教程

0. 写在前面本教程仅适合Mac, linux用户。1. 下载leanote二进制版下载 leanote 最新二进制版假设将文件下载到 /home/user1下, 解压文件 $> cd /home/user1$> tar -xzvf leanote-.tar.gz此时在/home/user1目录下有leanote目录, 可以看看里面有什么:$> cd leanote$> lsapp bin

2016-03-30 09:14:02 11225

原创 scala中sealed关键字使用指南

1. 防止继承滥用​sealed关键字可以修饰类和特质(特质)。密封类提供了一种约束:不能在类定义的文件之外定义任何新的子类。然而,这样做有什么用呢?在scala源码中List的实现用到了sealed关键字。抽象类List有sealed关键字修饰,接下来Nil和::分别继承了该List抽象类。那我们来尝试实现基于List实现一个自己的List:scala> class NewList extends

2016-03-10 17:22:59 7755 1

原创 基于近邻用户协同过滤算法的音乐推荐系统

0. 摘 要基于近邻用户的协同过滤音乐推荐系统,主要是将与目标用户有相同行为和兴趣爱好的用户,形成一个最近邻的推荐群组,从最近邻推荐群组中产生最终的目标用户推荐列表。该推荐系统通过网络爬虫获取虾米音乐网站真实未脱敏用户的行为信息,采用余弦相似度作为求解相似矩阵的算法,从而为目标用户推荐喜欢的音乐,达到推荐目标。1. 引言1.1 研究背景人类已经进入信息爆炸的时代,面对这么庞大的信息,是很难进行人为筛

2016-03-03 11:04:12 19307 21

原创 图解Spark Transformation算子

0. 写在前面Spark总共有两类算子,分别是Transformation算子和Action算子。Transformation算子变换不触发提交作业,而Action算子会触发SparkContext提交Job作业,下面主要使用pySpark API来作为事例,图解Spark的Transformation算子。1. join# joinx = sc.parallelize([(...

2016-02-26 21:16:55 6028 2

原创 Git从库中移除已删除大文件

写在前面大家一定遇到过在使用Git时,不小心将一个很大的文件添加到库中,即使删除,记录中还是保存了这个文件。以后不管是拷贝,还是push/pull都比较麻烦。今天在上传工程到github上,发现最大只能上传100MB大小文件,在本地git库中有一个150MB文件,虽然已经删除,但还保存了记录。下面教大家如何从库中彻底删除无效大文件。删除大文件方法很简单,就是先找到大文件对象再删除。先提交所有更改

2016-02-23 15:53:06 28014 5

原创 Git 命令表

1. 常用Git命令 命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 git annotate 同义词,等同于 git blame git archive 文件归档打包 git bisect 二分查找 git blame

2016-02-23 10:52:20 2534

转载 云计算环境下的大规模图数据处理技术

1. 引 言图是计算机科学中最常用的一类抽象数据结构, 在结构和语义方面比线性表和树更为复杂, 更具有一般性表示能力。 现实世界中的许多应用场景都需要用图结构表示, 与图相关的处理和应用几乎无所不在。 传统应用如最优运输路线的确定、疾病爆发路径的预测、科技文献的引用关系等; 新兴应用如社交网络分析、语义Web 分析、生物信息网络分析等。虽然图的应用和处理技术已经发展了很长时间, 理论也日趋完善, 但

2016-02-21 10:58:13 12321

原创 Check—强大的C语言单元测试框架

1. 前言在看基数树源码时,发现源码里面有个deps的依赖文件夹,deps里是一个叫Check的源码安装包,Google之后发现Check原来是C语言单元测试框架。关于单元测试,Wikipedia的介绍点这里。 Check 最主要的优点是对于每一个测试用例的运行都 fork 一个子进程,这么做的原因是因为 C 语言的独特性: (1) 其它语言如 Java,Python,Ruby等,单元测试

2015-12-28 20:40:51 19747 2

原创 Makefile VPATH && vpath 区别

0. 写在前面编译C工程源码时,经常需要用到make命令。makefile文件中有个一容易被忽视的细节,即VPATH与vpath的区别,下面就来详细叙述这两者不同之处。1. 让系统自动取寻找文件到依赖关系。在利用make命令来编译一些大型项目时,往往会涉及到大量的源文件。此时在编译的时候,就需要指定文件的依赖关系。虽然可以在配制文件中指定,但是这不是最好的方法。因为一旦源代码改变了,就需要去更改配制

2015-12-28 19:05:59 10221

原创 分布式图并行计算框架:PowerGraph

1. About Joseph E.Conzalez首先关于约瑟夫,他目前在伯克利AMP实验室做博士后,这是他博客的一个截图。在他博客中写道,下个月即2016年1月份将要当任伯克利的助理教授。在看了他的简历后,发现他居然也是Spark Graphx的第一作者,并且Graphx这篇论论文也是发表在OSDI上,非常牛逼!戳这里,是他的博客地址。2. About OSDI第二个要介绍的是关于OSDI这个会

2015-12-16 22:39:01 23281 2

原创 PageRank算法原理剖析及Spark实现

1. 什么是PageRankPageRank对网页排名的算法,曾是Google发家致富的法宝。PageRank算法计算每一个网页的PageRank值,然后根据这个值的大小对网页的重要性进行排序。2. 简单PageRank计算首先,将Web做如下抽象:将每个网页抽象成一个节点;如果一个页面AA有链接直接链向BB,则存在一条有向边从AA到BB(多个相同链接不重复计算边)。因此,整个Web被抽象为一

2015-12-10 20:21:38 10081 5

原创 GraphLab 安装在Hadoop集群

0. 写在前面感觉GraphLab非常惊艳,可以在python环境当中非常好地使用。但它在接受了两轮投资之后已经由原来的免费项目变成了一个付费试用的项目。但是个人和学术使用依然可以申请。伴随着这个商业化的过程,graphlab.org也变成了dato.com。下面详细介绍GraphLab单机测试和集群部署的过程。1. 实验环境 系统 主机名 IP地址 内存 CPU Ubuntu

2015-11-29 08:43:48 3872 3

原创 Graphx 最短路径源码解析

最短路径测试代码下面主要是对Spark图计算框架GraphX中的单源点最短路径的源码进行解析。 GraphX最短路径求解中使用了Pregel模型,这是一个非常高效的图计算模型。但目前最短路径有如下限制:1. 只能用于无向图;2. 只能用于非带权图(权值相等);3. 利用的算法是迪杰斯特拉求解最短路径。

2015-11-24 08:32:49 5478 7

原创 IndexedRDD 源码解读一

1. IndexedRDDPartion构建过程调用构建函数 val vp = IndexedRDDPartition(Iterator((0L, 1), (1L, 1)))这里会调用IndexedRDDPartition 的apply 方法。 def apply[V: ClassTag](iter: Iterator[(Id, V)]): IndexedRDDPartition

2015-11-16 19:19:33 1048

原创 Chapter12 Scala操作符

1. 标识符变量名、函数名、类名等统称为标识符,scala可以使用任何字符来作标识符,比如 ()!#%&×+-/:<>=?@\^|~ 等。反引号中可以使用任何字符序列。 val √ = scala.math.sqrt _ √(2) val `val` = 42 println(`val`)2. 中置操作符操作符要接两个参数,分别位于操作符两边。a 标识符

2015-11-15 09:59:38 2241

原创 Chapter11 类型参数

1. 泛型类 个人理解:泛型实质就是类或方法在定义时没有给定具体参数类型,需要在编译或运行时自动推断出类型的一种方法。用方括号来定义类型参数,放在类名后面。下面就定义了一个带有两个类型参数T和S的类。 class Pair[T, S](val first: T, val second: S) { override def toString = "(" + first + ",

2015-11-14 16:13:21 925

原创 Chapter10 注 解

Chapter10这节还是挺重要的,在看Spark源码的过程中,发现其源码使用到很多注解的知识,所以这节一定要好好学习。1. 什么是注解注解:是那些你插入到代码中以方便工具可以对它们进行处理的标签。注解作用:是描述哪些被注解的表达式、变量、字段、方法或类型。Java中注解不会影响编译器生成字节码,而Scala中会影响。下面是注解的一个简单实例: import scala.refle

2015-11-13 21:14:59 1701

原创 ubuntu下恢复rm删除的数据

1. 论“备份”的重要性今天手真快,Tab补全文件名后回车,昨天一天写的代码就被我remove了。虽然自己写了脚本备份系统和home目录,但系统是1天一备份,home是2天一次增量备份。又恰巧昨晚没有备份home,并且git也没有提交,欲哭无泪的感觉5555~~。被rm掉的文件其实是可以恢复的,删除命令只是在文件节点中作了删除标记,并不是真正清空内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些

2015-11-13 08:26:01 28387 4

原创 Ubuntu终端访问samba服务器

习惯终端访问文件和目录,每次访问实验室samba服务器都要动鼠标,好麻烦~_~,呵呵,发现自己好懒。在google搜索找到终端访问samba好多方法,下面整理了两种方法:第一种是使用smbclient访问samba服务器,第二种是直接将共享目录挂载到自己的电脑上,强烈推荐第二种。1. smbclient安装 sudo apt-get install smbclient2. 查看目录的所有共

2015-11-12 22:18:01 31253 2

原创 Chapter09 特质

1. 为什么没有多重继承Chapter09讲的是文件和正则表达式,这章节按照其他语言安排一般都是在最后几章节,所以暂时先忽略该章节,后面会补上。转入正题,如果有两个类Student和Employee,它们都有name这个属性,如果要同时扩展这两个基类该如何做,主要问题是name属性如何处理?如果保留两个,那么访问时到底访问的是哪个呢?如果只保留一个,那么保留哪一个?该问题就是菱形问题。画一个形象

2015-11-11 14:22:21 876

原创 高效细粒度更新的RDD:Spark IndexedRDD

1. 概述由于Spark RDD的Immutable特性,如果想要更新RDD里面的数据,就要对RDD中的每个Partition进行一次transformation,生成一个新的RDD。而对于Streaming Aggregation(聚合)以及Incremental(增量) Algorithm之类的算法,每次迭代都会更新少量数据,但是需要迭代非常多的次数,每一次对RDD的更新代价相对较大。针对这个问

2015-11-08 15:18:05 4598 7

原创 Chapter08 继承

1. 扩展类扩展的方法是使用extends关键字 class Person { var name = "" } class Employee extends Person { var salary = 0.0 def description = "An employee with name " + name + " and salary "

2015-11-07 09:47:44 908

原创 Chapter07 包和引入

1. 包 package源文件目录和包之间并没有强制的关联关系。比如下面Manager.scala不一定要在./com/horstmann/impatient目录中。 // Manager.scala package com { package horstmann { package impatient { class Manager

2015-11-06 19:56:01 853

深度实践kvm pdf

虚拟化技术是大数据和云计算应用中的核心技术,经过几年的友展,KVM已经非常成熟和稳定,逐渐取代Xen等商业虚拟化技术和产品,成为该领域事实上的标准。因为采用KVM技术的业务规模都比较大,生产环境大多比较复杂,加上KVM整个技术生态中涉及的技术较多,使用起来有一定的门槛,企业的学习成本较高。, 当KVM技术在国内鲜有人使用时,本书作者团队就开始钻研并在生产环境中使用,短短几年内,就为公司节省了上亿的运莒成本,帮助公司多个处于生命周期末的游戏项目实现扭亏为盈。本书中所有的知识和经验都来自国内一线的互联网公司的生产环境,比如金山西山居、盛大游戏等,最大的特点就是业务规模大、环境复杂,非常具有代表性,极为珍贵。, 本书从多个维度详细讲解了KVM虚拟化原理、技术及性能调优、软硬件选型,生产环境虚拟化项目实施方法,开源管理平台介绍及部署,虚拟化后端存储方案,开源分布式文件系统GIusterFS、Ceph在虚拟化中的使用方法,虚拟化监控、报警、应急方案的制定,并附有大量生产环境案例。

2018-05-26

MFC函数库使用手则

MFC函数库使用手则 VC6.0 虽然有点小,但对于初学者很实用

2011-09-17

仿真2D第二次培训技术部分

校赛仿真2D第二次培训技术部分(绝密内部资料)

2011-08-06

空空如也

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

TA关注的人

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