- 博客(45)
- 资源 (26)
- 收藏
- 关注
转载 ScalaTest——测试分类
6.1 Pending待测试占位符,方便记下一个想法,但是还没有实现或者还没准备好。待测试(Pending Test)这个思想我觉得在实际中会用的比较多。pending是一个占位符,可以将尚未实现或定义的测试以pending来填充。Pending Test实际上就是利用pending来将测试标记为TODO的。如下面的例子:class AlbumSpec extends FunSpec wit...
2018-10-25 09:23:07 1243
转载 ScalaTest——Specifications行为规范
FunSepc,WordSpec,FeatureSpec,FreeSpec,FlatSpec大同小异,这里以FeatureSpec为例FeatureSpec是将测试分类为一系列的功能的测试。一个feature是软件的一个简单的功能点。每个功能将有该功能的多个场景(测试用例),每个场景代表一个成功的或者失败的测试案例。场景越多,测试越充分,健壮性越好。7.1 FunSpec下面的FunSpec...
2018-10-25 09:22:57 838
转载 ScalaTest——Fixtures
Fixture翻译成中文有这么些意思:固定装置;卡具;固定附物,固定附着物;固定财产,在ScalaTest中,可能会有这么一种情境:在一个测试类中,不同的测试方法需要的类实例、依赖等数据是一样的,显然,没必要为每个测试类去new一些它们专用的数据,可以提供一些公共的数据,然后在不同的测试方法中重用它们。要做到数据的重用,有很多方法:Scala语言自带的方法ScalaTest测试框架提供的解...
2018-10-25 09:22:48 496
原创 Spark通过JDBC加载部分数据、添加过滤条件
当我们需要使用SparkSQL通过JDBC方式连接MySQL、Oracle、Greenplum等来实现对数据的操作时,可能在某些情况下并不需要加载全量的数据表。例如:只需要其中的部分字段按照条件进行筛选后的数据此时就需要在JDBC连接时对option(“dbtable”, tablename)属性值进行修改,参看spark官网给出的属性介绍:(spark2.3 jdbc-to-other...
2018-10-25 09:22:31 3723
转载 ScalaTest——日志打印
5.1 Informers日志Informer在ScalaTest中是为了打印日志方便观察,跟debug语句很相似,但它可以放在任何地方来输出一些跟测试相关的信息。使用Informer只要调用info(String)方法即可。如下面的例子:import org.scalatest.{FunSpec, ShouldMatchers}class AlbumTest extends FunSpe...
2018-10-24 09:15:06 957
原创 ScalaTest——matcher匹配器
ScalaTest中的Matchers匹配器分为两大类:Should Matcher和Must Matcher。它们的区别仅在测试报告中体现,所以在后面不同情形下的Matcher的说明中,只以Should Matcher为例。3.1 简单匹配器Simple Matcher就是在两个值之间使用一个断言在测试代码里,我们作出了一个断言:Thriller这张专辑的作者的firstName是Mic...
2018-10-24 09:14:43 1204
原创 ScalaTest——Assertion断言
ScalaTest默认在任何样式特征中都提供三个断言。您可以使用:assert 一般断言;assertResult 区分预期值和实际值;assertThrows 确保一些代码抛出预期的异常。ScalaTest的断言在特征中被定义,特征Assertions由Suite超级特征扩展到所有风格特征。特质Assertions还提供:assume有条件地取消测试;fail 无条件地测试失败...
2018-10-24 09:14:15 1320
原创 ScalaTest——测试风格
建议使用 FlatSpec单元和集成测试以及 FeatureSpec验收测试。将FlatSpec作为默认选择,因为它与大多数开发人员熟悉的XUnit测试类似2.1 FunSuiteFunSuite可以轻松编写描述性测试名称,自然地编写集中测试,并生成类似规范的输出import org.scalatest.FunSuite//ScalaTest提供了名为FunSuite的特质重载了execu...
2018-10-24 09:14:03 4297
原创 ScalaTest——ScalaTest简介
1. ScalaTest简介ScalaTest几乎已经成为Scala语言默认的测试框架,而在JVM平台下,无论是否使用Scala进行开发,我认为仍有尝试ScalaTest的必要。这主要源于它提供了多种表达力超强的测试风格,能够满足各种层次的需求包括单元测试、BDD、验收测试、数据驱动测试。1. 1 UT与IT的风格选择ScalaTest一共提供了七种测试风格,分别为:FunSuite,Fla...
2018-10-24 09:13:52 3175
转载 linux中vim使用与快捷键介绍
VIM的运行模式编辑模式:等待编辑命令的输入插入模式:在编辑模式下,输入i 进入插入模式,输入修改文本内容 按ESC则由插入模式退回编辑模式命令模式:在编辑模式下,输入: 进入到命令模式:q 直接退出vi:wq 保存后退出vi: set number 在编辑器中显示行号: set nonumber 取消显示行号 : w 新的文件名称(另存为)...
2018-10-24 09:13:43 585
原创 linux输入ll命令各个字段的含义
ls -l(这个参数是字母L的小写,不是数字1) 这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料就要用到ls -l这个指令。例如我在某个目录下键入ls -l可能会显示如下信息文件属性 文件硬链接数 拥有者 所属group 文件大小 建档日期 文件名drwx------ 2 Guest users 1024 ...
2018-10-24 09:13:31 5275 1
原创 Linux常用命令
1、命令字 [命令选项] [命令参数]注:三者之间要用空格隔开。其中命令选项分短格式和长格式:短格式使用“-”符号,如:-l;而长格式使用“--”符号,如:--help;还可以使用组合命令选项:如:-a –l可以组合成--al或--la。2、命令提示符“$”普通用户 “#”管理员3、回车的使用 我们输完一个命令后,则要以回车符作为所输入命令的结束4、获得命令帮助 (...
2018-10-24 09:13:23 260
原创 Linux系统目录简介
目录说明目录说明/dev设备文件保存目录/etc配置文件保存目录/tmp临时目录/mnt系统挂载目录/proc直接写入内存/usr工具资源目录/var系统相关文档内容/var/log/系统日志位置/lib动态链接共享库保存目录mnt/misc/media挂载目录,推荐使用mnt目录/boot启动目录...
2018-10-24 09:13:11 200
原创 Spark读写MySQL、Oracle、PostgreSQL、Greenplum
添加pom依赖<!-- https://mvnrepository.com/artifact/com.pivotal/greenplum-jdbc --><dependency> <groupId>com.pivotal</groupId> <artifactId>green
2018-10-24 09:13:01 4085
原创 斐波那契数列——java代码实现
定义数组方法public class Demo1 { public static void main(String[] args) { int arr[] = new int[20]; arr[0] = arr[1] = 1; for (int i = 2; i < arr.length; i++) { arr[i] = arr[i - 1] + arr[i - 2];...
2018-10-23 20:09:02 13666 2
原创 Spark Join——Broadcast Join、Shuffle Hash Join、Sort Merge Join
1. Broadcast Join在数据库的常见模型中(比如星型模型或者雪花模型),表一般分为两种:事实表和维度表。维度表一般指固定的、变动较少的表,例如联系人、物品种类等,一般数据有限。而事实表一般记录流水,比如销售清单等,通常随着时间的增长不断膨胀。因为Join操作是对两个表中key值相同的记录进行连接,在SparkSQL中,对两个表做Join最直接的方式是先根据key分区,再在每个分区中...
2018-10-23 20:06:50 4494 1
原创 spark运行机制
Client模式提交——Driver进程运行在客户端执行流程:用户启动客户端,之后客户端运行用户程序,启动Driver进程。在Driver中启动或实例化DAGScheduler等组件。 客户端的Driver向Master注册。Worker向Master注册,Master命令Worker启动Exeuctor。Worker通过创建ExecutorRunner线程,在ExecutorRunner线程...
2018-10-23 20:03:32 251
转载 Hive数据倾斜解决办法
http://www.mamicode.com/info-detail-500353.htmlmap/reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完...
2018-10-23 20:01:53 710
原创 java代码实现求树的高度和节点数
求二叉树的高度public int getHeight(TreeNode node){ if(node == null){ return 0; } int i = getHeight(node.left); int j = getHeight(node.right); return (i<j)? j+1:i+1;}求二叉树的节点数public int getSize(...
2018-10-23 19:56:54 5817
原创 前序遍历、中序遍历、后序遍历代码实现——迭代与非迭代方式
迭代方式实现前序遍历——迭代public static void preOrder(TreeNode node){ if(node==null) return; System.out.println(node.getData()+" "); preOrder(node.left); preOrder(node.right); }中序遍历——迭代p...
2018-10-23 19:55:25 1080
原创 二叉树遍历——深度优先遍历、广度优先遍历
二叉树遍历简介深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下:先序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树。中序遍历:对任一子树,先遍历其左子树,然后访问根,...
2018-10-23 19:41:03 29856 4
原创 链表与栈——数组入栈出栈、单链表翻转
数组入栈出栈class Stack{ private Object[] data = new Object[0]; //栈的内容 private int size = 0; //栈的元素个数 public boolean isFull(){ //判断栈是否满 return data.length == size; } public boolean isEmpty(){ //判断栈...
2018-10-23 19:21:23 485
原创 treeMap与treeSet
为了理解 TreeMap 的底层实现,必须先介绍排序二叉树和红黑树这两种数据结构。其中红黑树又是一种特殊的排序二叉树。排序二叉树排序二叉树是一种特殊结构的二叉树,可以非常方便地对树中所有节点进行排序和检索。排序二叉树要么是一棵空二叉树,要么是具有下列性质的二叉树:若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值...
2018-10-23 19:19:10 355
原创 HashMap原理与实现
HashMap是基于哈希表的 Map 接口的实现,以key-value的形式存在。系统会根据hash算法来来计算key-value的存储位置,可以通过key快速地存、取value。HashMap提供了三个构造函数: HashMap():构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。 HashMap(int initialCapacity)...
2018-10-23 19:13:01 166
原创 java两个变量的值交换
不使用中间变量,如何实现两个变量值得交换?采用异或的方法,转化为二进制之间的运算int a = 1;int b = 2;a = a^b; System.out.println(a); //3b = a^b; System.out.println(b); //1a = a^b; System.out.println(a); //2...
2018-10-18 09:14:13 557
原创 java面向对象——设计原则
1. 开闭原则 (open close principle)对扩展开放,对修改关闭。在程序需要进行扩展的时候,不能去修改原有的代码,即实现一个热拔插效果。为了使程序的扩展性更好,易于维护和升级。为了达到这样的效果,需要使用【接口和抽象】类去操作。例如:车的电路,尽量不要去改动,如果有预留的接口扩展功能,这是可以的。因为修改原来的代码,会更容易引入bugpublic class Pe...
2018-10-18 09:13:55 181
原创 单例设计模式
在某些场合中,一个类对外提供一个且只提供一个对象时,这样的类叫做单例类。编写单例类的模式/套路叫做单例设计模式,是编程经验的总结实现流程a.私有化构造方法,使用private关键字修饰。b.提供本类的引用作为成员变量,并使用private和static共同修饰。c.提供公有的get成员变量方法用于将本类对象返回出去。编程实现Singleton类,要求该类对外能得到且只能得到一个对象1....
2018-10-18 09:13:42 103
原创 java排序算法:冒泡排序、插入排序、选择排序、快速排序
1. 冒泡排序核心思想:相邻的元素进行比较,满足条件就进行交换。如果一趟排序中没有出现元素交换则排序完成。 a.比较相邻位置的两个元素,若第一个元素(左边)比第二个元素(右边)大,则交换元素的位置。 b.从开始的第一对元素一直到结尾的最后一对,经过这一轮,排在最后的元素将是这组元素的最大值。 c.重复步骤b持续对越来越少的元素进行两两比较,直到所有元素处理完毕为止。 ...
2018-10-18 09:13:16 260
原创 java查找算法:线性查找、二分查找
线性查找从前往后依次对比需要查找的数据,如果找到对应的元素,则返回元素的位置。 a.使用目标元素与样本数列中的第一个元素起依次比较大小; b.若找到与目标元素相等的元素,则表示查找成功; c.若目标元素与样本数列的所有元素比较完毕也没有找到相等的元素,则表示查找失败。1. 二分查找算法流程 a.假定样本数列中的所有元素都是从小到大排列的。 b.使用目标元素...
2018-10-18 09:13:03 870
原创 java反射
反射机制本质上就是一种用于实现动态编程的机制,可以在运行阶段动态的创建对象,并且动态的调用方法,具体功能由实参决定。反射技术破坏了面向对象,在底层发挥作用。目前主流的框架SSH等底层是采用反射机制实现。java里的动态编程技术就是反射。动态编程编译期间变量的类型和调用的方法都不确定,运行时根据参数确定。动态编程可以让代码有更广泛的适应性,一段代码可以针对很多的类,但是程序的可读性非常低,编程...
2018-10-17 09:21:20 177
原创 网络编程、TCP、UDP
七层网络协议模型为了数据安全可靠地传递到对方,ISO(国际标准委员会组织)将数据的传递从逻辑上划分为以下七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。当发送数据时需要按照上述七层协议一层层进行加包再发送出去。当接收数据时需要按照上述七层协议相反的次序一层层进行拆分再显示出来。常用的协议协议 - 本质上就是一种规则/约定,规定了通信双方统一的语言规则。http协议 ...
2018-10-17 09:21:00 204
原创 java面向对象——线程的创建、状态、常用方法、同步机制、死锁
基本概念程序 - 主要指存放在硬盘/磁盘上的可执行文件。进程 - 主要指运行在内存中的程序。目前主流的操作系统都支持多进程,为了同时执行多个任务,进程是重量级的,新建进程对系统的资源消耗比较大,因此进程的数量还是有限的。线程就是指进程内部的程序流,是轻量级的,新建线程会共享所在进程的资源,因此对系统的资源消耗比较小,以后开发中采用多线程技术是主流的方式。目前主流的操作系统都是采用时间片轮...
2018-10-17 09:20:48 230
原创 java面向对象——IO流:File类
基本概念I/O就是Input/Output的简写,也就是输入/输出的含义。 I/O流就是指像流水一样不间断地进行读写的过程。按照读写单位的不同分为:字节流 - 主要指以字节为单位进行读写的流,可以用于任何文件的读写操作。字符流 - 主要指以字符(2字节)为单位进行读写的流,只能用于文本文件的读写操作按照数据流动方向的不同分为:输入流 - 主要指读取文件中的内容输入到程序中,也就是读文...
2018-10-17 09:20:39 448
原创 java面向对象——异常
异常表示不正常的意思,在java中主要指在程序运行阶段产生的错误异常的分类可检测异常:可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则,不捕捉这个异常,编译器就通不过,不允许编译。非检测异常:非检测异常不遵循处理或者声明规则。在产生此类异常时,不一定非要采取任何适当措施,编译器不会检查是否已经解决了这个异常。自定义异常:为了表示应用程序的一些错误类型,为...
2018-10-17 09:20:30 234
原创 java面向对象——集合:list、queue、set、map
数组 - 本质上就是一段连续的内存空间,用于记录多个类型相同的数据。 - 数组一旦定义则内存空间固定,若太大或太小都会造成麻烦。 - 插入和删除元素时可能会移动大量元素,因此效率比较低。 - 使用下标访问元素非常便利,支持随机访问。 - 数组中的元素可以是基本数据类型,也可以是引用数据类型。集合 - 内存空间可以连续也可以不连续,元素类型可以相同也可以...
2018-10-17 09:20:21 407
原创 java面向对象——正则表达式
正则表达式本质上就是一个用于进行格式验证的字符串,可以使用^开头,使用$结尾,也可以省略不写。常用的规则[abc] - 表示可以出现a、b或者c。[^abc] - 表示可以出现任何字符,除了a、b和c。[a-zA-Z] - 表示可以出现a-zA-z之间的任何字符,包括两头的字符。[a-z&amp;&amp;[^bc]] - 表示a-z中除了b,c外的任何字符 . - 表示可以出...
2018-10-17 09:20:10 163
原创 java面向对象——String类
java.lang.String 类由final关键字修饰,表示该类不能被继承该类用于描述字符串,使用该类创建的对象可以描述java应用程序中的所有字符串字面值(常量)如:“abc” , 而且该字符串字面值是个常量不能更改。String s1 = "hello";s1 = "world"; //本质上就是在改变s1本身的指向,而不是指向的内容。String s1 = null; 和 ...
2018-10-17 09:19:49 1606
原创 Hadoop2.0 HA高可用机制
单点故障HDFS:Hadoop1.x版本中单NameNode设计,其单点处理能力成为HDFS的主要瓶颈 单点故障、内存受限,制约集群扩展性和缺乏隔离机制(不同业务使用同一个NameNode导致业务相互影响)等 因为客户端对HDFS的读、写操作之前都要访问NameNode服务器。存在【单点故障问题】 1.计划内的软件或硬件升级,将导致集群在短时间范围内不可用。 ...
2018-10-17 09:19:39 1878 1
原创 java面向对象——包装类
在某些场合(集合)中要求所有的数据内容都是对象,但java中8种基本数据类型定义的变量并不是对象,为了满足该场合的需求就需要对变量进行对象化处理,此时借助包装类常用的包装类int => 采用java.lang.Integer类包装(重点) char => java.lang.Character类byte => java.lang.Byte类 ...
2018-10-16 20:36:19 555
原创 java面向对象——Object类
1. 常用的包java.lang包 - 是java的核心包,该包中的所有类由java虚拟机自动导入。如:String/System/Math/thread等java.util包 - 是java的工具类/接口/集合框架类包, 如:Arrays、List、Set、Scanner、Random类等java.io包 - 是java的输入/输入编程相关的类、接口包,如:FileInputStream类...
2018-10-16 20:33:11 201
hadoop技术内幕三件套
2019-01-23
flink依赖jar包——解决NoClassDefFoundError: com/sun/jersey
2019-01-22
Scala程序设计第二版
2018-10-26
apache kafka实战pdf
2018-10-13
hadoop2.7-common-bin
2018-10-12
elasticsearch指南
2018-10-09
Spark大数据分析:核心概念、技术及实践
2018-10-09
spark大数据分析实战
2018-10-09
spark性能调节与优化
2018-10-09
HBase不睡觉书(完整目录)
2018-10-09
spark性能调优
2018-10-09
Flink学习书籍
2018-10-09
Flink高可用集群部署
2018-10-09
Flink学习资料
2018-10-09
apache kafka实战
2018-10-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人