自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Black&White的专栏

岁月留痕,只及肌肤

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

翻译 设计模式之建造者模式

什么是建造者模式建造者模式,或者说是构建着模式,是一种创建型模式。建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(建造者模式就是如何一步步构建包含多个组件的对象,相同的创建过程可以创建不同的产品,适用于流程固定但顺序不一定固定的对象,比如做一盘菜,有人喜欢先放盐,有人喜欢后放盐,都没关系,但放盐这个过程是一定要有的)建造者模式使用场景一般创建对象我们最常用的方式是直接使用new调用对象的构造函数。但是如果创建的是一个参数较多的复杂对象呢?如果通过构造函数直接ne

2020-07-05 23:37:06 292 1

原创 线程的创建

创建线程的方式可以有以下几种:继承Thread类实现Runnable接口匿名内部类的方式带返回值的线程定时器线程池的实现Spring的线程实现Lambda表达式实现继承Thread类(创建运行并中断)//Demo1本身是一个Thread,可以直接new Demo1public class Demo1 extends Thread{ public Demo1(String name) { super(name); } @Override

2020-06-28 22:17:47 239

原创 设计模式之抽象工厂方法模式

什么是抽象工厂方法模式属于创建型模型,抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口无须指定它们具体的类。抽象工厂方法模式使用场景抽象工厂方法模式强调一系列相关的产品对象(属于同一产品族)一起使用时创建对象需要大量重复的代码。抽象工厂方法模式的使用场景比较特殊,所以没有简单工厂方法和工厂方法模式常用。工厂方法模式创建的对象由一个纬度决定,抽象工厂方法模式创建的对象不止由一个纬度决定。抽象工厂方法模式的纬度可以分为产品族和产品等级。工厂方法针对的是产品等级结构,抽象工厂模式针对的是产品族

2020-06-21 20:12:40 265

原创 设计模式之工厂方法模式

什么是工厂方法模式属于创建型模式,又称多态性工厂模式。在工厂方法模式中,核心的工厂类不再负责所有的实例创建,而是将具体的创建工作交给子类工厂去做,核心工厂类成为一个抽象工厂角色,仅定义接口。工厂方法模式使用场景创建对象需要大量重复的代码客户端(应用层)不依赖于产品类实例如何被创建、被实现等细节工厂方法模式示例还是通过简单工厂方法模式示例场景说明一下工厂方法模式的写法。要求:根据不同的请求类型(read、write、delete、execute)选择不同的helper帮助构建不同的请求对象。工

2020-06-14 20:05:31 166

原创 设计模式之简单工厂模式

什么是简单工厂模式工厂模式属于创建型模式,一般情况下,工厂模式可以分为简单工厂模式、工厂方法模式和抽象工厂模式,不过,在GoF 的《设计模式》中,简单工厂模式属于工厂方法模式的一种特例,不属于23种模式之内。但平时开始中,简单工厂模式用的场景还是挺多的。简单工厂模式就是由一个工厂类根据参数创建指定对象,客户端不关心对象创建过程。简单工厂模式使用场景使用于工厂类创建的对象比较少的场景。简单工厂模式中工厂类有多处if分支判断语句,虽然不太符合开闭原则,同时工厂类集中了所有实例对象的创建逻辑,违反单一职

2020-06-07 22:49:58 123

原创 设计模式之单例模式

为什么要学习设计模式作为一个程序员,有了扎实的基础知识,才能探寻更深的技术深度,才能潜移默化提高对技术的理解。设计模式也是一种基础知识,而且是一种能够直接变现为编码生产力,提高开发能力的基础知识。设计模式是对软件设计开发中普遍存在的各种问题,所提出的解决方案,可以帮助编写可扩展、可读、可维护的高质量代码,帮助提高复杂代码的设计和开发能力,也可以帮助我们更容易阅读容易理解源码,因为优秀的框架为了保证代码的可扩展性、可维护性等不可避免地会使用到很多设计模式。设计模式分类经典的设计模式有23种,主要分为创

2020-05-31 17:18:35 598

原创 记一次JVM时区引发的问题

问题描述:有个业务需求,统计某个时间点之前数据库中的数据,不传时间的话就统计所有,接口写完之后做了两个测试,分别是不传时间和传当天晚上23:00的时间,当天晚上23:00属于未来时间,两次统计的记录数应该是一样的才对,可事实是两者不一致。传23:00的时间的统计数据每次统计的结果是一样的,比不传时间统计的数据要少,不传时间每次统计的数据都是不一样的,因为数据库的数据一直在变,所以23:00的时间统计的一直是某个历史时间的数据,因为统计结果每次都一样,当时下意识看了下时间,是17点多,而公司的业务除了国内

2020-05-24 23:52:29 415

原创 设计原则之迪米特原则

迪米特原则 Law of Demeter, LOD迪米特原则定义迪米特原则也叫最小知识原则(The Least Knowledge Principle)。即,每个模块只应该了解那些与它关系密切的模块的有限知识,或者说,每个模块只和自己的朋友”说话“,不和陌生人”说话“。这里的模块可以是微服务、框架、组件、类库、模块、类、甚至是函数,以下的描述主要以“类”作为迪米特原则的描述对象。什么是朋友和陌生人对类来说,出现在成员变量以及方法对输入输出参数中对类是朋友类,出现在方法体内部的类不是朋友类,是陌生人

2020-05-17 21:34:56 228

原创 代码质量管理平台SonarQube安装与使用

环境系统:jdk:mysql:下载安装sonar因为系统安装的jdk是1.8,所以选择一个支持1.8的sonar版本。wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.2.zip下载后解压到指定文件夹。unzip sonarqube-7.2.zip -d sonar准备启动sonar查看系统是32位还是64位:root@node1:/home/shine/sonarqube/son

2020-05-09 17:24:36 380

原创 ES几种搜索方式

1、query string search方式的条件查询:搜索商品名称中包含yagao的商品,而且按照售价降序排序:GET /ecommerce/product/_search?q=name:yagao&sort=price:desc2、query DSL的方式DSL:Domain Specified Language,特定领域的语言查询所有的商品GET /ecommerce...

2020-05-01 22:18:19 3010

原创 设计原则之依赖倒转原则

之前已经总结过单一职责原则、开闭原则、里氏替换原则和接口隔离原则,这四个原则和这篇的依赖倒转原则合称SOLID原则。依赖倒转原则 Dependency Inversion Principle,DIP依赖倒转原则定义High-level modules shouldn’t depend on low-level modules.Both modules should depend on abs...

2020-04-26 23:07:19 222

原创 Hive安装启动填坑

Hive下载hive下载地址:http://mirror.bit.edu.cn/apache/hive/解压到/usr/local:tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local/重命名:mv apache-hive-2.3.4-bin/ hive-2.3.4修改环境变量并保存/etc/profile:vim /etc/profi...

2020-04-20 00:01:04 1595

原创 IDEA构建Kafka源码

环境准备在阅读 Kafka 源码之前,我们要先做一些必要的环境准备工作:至少要提前安装好 Java、Gradle、Scala、IDEA 和 Git 等软件。这里编译的当前Kafka源码的trunk分支的最新代码。JavaJava不用说了,一般的应该都安装了,这里需要Java8及以上。Gradle当前时间Kafka的源码编译需要Gradle5.2及以上,我这里安装的5.5版本。官网下载...

2020-04-19 23:46:19 647

原创 hive beeline连接User: root is not allowed to impersonate anonymous

分析 : 访问权限问题解决 :在hadoop的conf目录下的配置文件core-site.xml中加入如下配置<property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> &...

2020-04-12 23:30:02 499

原创 设计原则之接口隔离原则

接口隔离原则 Interface Segregation Principle , ISP接口隔离原则定义客户端不应该被迫依赖它不需要的接口。其中的“客户端”可以理解为接口的调用者或者使用者。如何理解接口隔离原则理解接口隔离原则的关键,就是理解其中的“接口”二字。在接口隔离原则中,“接口”可以理解为下面三种情况:一组API接口集合当把接口隔离原则的接口理解成一组API接口集合时,可以...

2020-04-12 23:14:20 211

原创 设计原则之里式替换原则

这是一篇专栏学习总结里式替换原则,Liskov Substitution Principle,LSP。最早是在1986年由Barbara Liskov 提出。里式替换原则定义子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变,且正确性不被破坏。里式替换原则还有一个更有指导意义的描述,“Design By Contract”,即按照协议设计。也就是说在设计子类的时候...

2020-04-05 22:30:32 275

原创 并发编程之同步工具

同步工具类可以是任何一个对象,只要能够根据其自身的状态来协调线程的控制流就行,阻塞队列就可以作为同步工具类,java平台类库中还包含其他一些同步工具类,不过这里主要分享CountDownLatch、CyclicBarrier、Semaphore和 Exchanger。CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作。它维护了一个锁存器的计数,当计数...

2020-04-05 21:35:27 148

原创 并发编程之并发容器

这篇文章来自《并发编程实战》的部分总结。引言这里分享的是并发编程常用的一些并发容器 以及并发容器对应的同步容器。同步容器java中的集合框架(一种容器工具类,存储具有共同属性的对象)List、Set、Queue接口继承了Collection接口,分别代表数组、集合、队列三大容器 ,Map自身是一个接口。ArrayList,LinkedList实现了List接口,同时Linke...

2020-03-30 00:10:48 165

原创 设计原则之开闭原则

这是一篇专栏学习总结。开闭原则,Open Closed Principle,OCP。开闭原则定义一个软件实体如类、模块和方法等,应该对扩展开放,对修改关闭。强调用抽象构建框架,用实现扩展细节。提高软件的可扩展性,可维护性。开闭原则是设计原则中最有用的一条原则,因为扩展性是衡量代码质量的重要标准之一,在23种设计模式中,大部分设计模式都是为了解决代码的可扩展性问题而存在,主要遵从的原...

2020-03-29 23:35:59 487

原创 JMeter提取响应Token关联请求

关联现在做性能测试的,有很多都是单纯的接口测试,不需要将上一次响应的数据保存下来再发出去,但如果需要,就需要关联,那什么样的数据需要关联呢?数据由服务器产生数据每次请求时都是动态变化的数据在后续请求中需要再发送出去可以把关联理解为取服务器端返回的值,然后在后续请求发送出去,比如登录请求返回的token信息就是一个典型的需要关联的数据,需要在后续请求中作为身份认证的凭证。以下给出获取...

2020-03-22 22:45:36 1243

原创 JMeter接口测试

性能测试总是离不了性能测试工具,JMeter和LoadRunner是最常用的两个性能测试工具,同时JMeter又是最常使用的性能测试工具,因为JMeter支持分布式,开源免费,功能一直在被扩展,而LoadRunner虽然功能很齐,很强大,但是很贵。下面是JMeter最基本的接口测试的全步骤。准备工作JMeter是Java编写的,所以首先得下载JDK配置Java开发环境,Jmeter4.0以上版...

2020-03-22 22:01:02 228

原创 为什么重写对象equals()方法就尽量重写hashCode()方法

定义一个Page对象类,并重写equals方法,并实例化两个对象放入HashSet集合,看下面两段代码的输出:重写equals方法但不重写hashCode()时,输出结果为2。public class Page { private int start; private int limit; private String name; ...

2020-03-15 22:41:29 143

原创 设计原则之单一职责原则

单一职责原则(SRP)Single Responsibility Principle。如何理解单一职责原则A class or module should have a single reponsibility。翻译成中文就是,一个类或者模块只负责一个单独的职责(或功能)。这里原则的应用对象是类和模块,模块可以是一种更抽象的描述,也可以是多个类的集合。对于类来讲,遵循单一职责原则就是不要设计大...

2020-03-15 22:20:29 238

原创 Java面向对象之封装、继承、多态和抽象

这是一篇专栏学习总结。主要从特性的定义及意义两方面解读。封装什么是封装封装是对信息的隐藏和保护,类通过暴露有限的访问接口,授权外部访问内部的信息或数据。怎样实现封装通过访问权限控制,private只允许类内部访问,public提供外部访问接口封装的意义如果对类中的属性方法的访问不做限制,那任何代码都可以访问、修改类的属性,虽然看起来很灵活方便,但是同时也意味着不可控,属性可以被任何...

2020-03-08 23:37:57 191

原创 记一次线上Kafka CommitFailedException

CommitFailedException,顾名思义就是Consumer客户端在提交位移时出现错误或异常,还是那种不可恢复的严重异常。报错:Caused by: org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed since the group has already rebal...

2020-03-08 10:58:36 856

翻译 Spark RDD操作之Action操作

firstdef first(): Tfirst返回RDD中的第一个元素,不排序。scala> var rdd1 = sc.makeRDD(Array(("A","1"),("B","2"),("C","3")),2)rdd1: org.apache.spark.rdd.RDD[(String, String)] = ParallelCollectionRDD[33] at mak...

2020-03-01 20:49:37 416

翻译 Spark RDD操作之键值转换

partitionBydef partitionBy(partitioner: Partitioner): RDD[(K, V)]该函数根据partitioner函数生成新的ShuffleRDD,将原RDD重新分区。scala> var rdd1 = sc.makeRDD(Array((1,"A"),(2,"B"),(3,"C"),(4,"D")),2)rdd1: org.apac...

2020-03-01 20:36:30 363

翻译 Spark RDD操作之基本转换

mapmap是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。 任何原RDD中的元素在新RDD中都有且只有一个元素与之对应。举例:scala> val a = sc.parallelize(1 to 9, 3)scala> val b = a.map(x => x*2)scala> a.collectres10: Array[Int] = Arra...

2020-02-23 22:07:27 435

翻译 Scala模式匹配

模式匹配scala有一个十分强大的模式匹配机制,可以应用到很多场合。switch语句类型查询以及快速获取数据并且scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配。1 匹配字符串//todo:匹配字符串object CaseDemo01 extends App{ //定义一个数组 val arr=Array("hadoop","zookeeper",...

2020-02-23 21:48:31 80

翻译 Scala类和对象

1. scala面向对象编程之类1.1 类的定义scala是支持面向对象的,也有类和对象的概念。定义一个Customer类,并添加成员变量/成员方法添加一个main方法,并创建Customer类的对象,并给对象赋值,打印对象中的成员,调用成员方法class Customer { var name:String = _ var sex:String = _ val r...

2020-02-16 18:41:25 140

翻译 Scala之函数式编程

1. 函数式编程Spark/Flink的大量业务代码都会使用到函数式编程。1.1 遍历 - foreach方法描述foreach(f: (A) ⇒ Unit): Unit方法说明foreachAPI说明参数f: (A) ⇒ Unit接收一个函数对象函数的输入参数为集合的元素返回值为空返回值Unit空方法实操scala&g...

2020-02-16 18:35:38 200

翻译 Scala容器之Set和List

1 Set集合Set是代表没有重复元素的集合。Set具备以下性质:1、元素不重复2、不保证插入顺序scala中的集也分为两种,一种是不可变集合,另一种是可变集合。1.1 不可变Set集合语法//创建一个空的不可变集val/var 变量名 = Set[类型]()//给定元素来创建一个不可变集val/var 变量名 = Set[类型](元素1, 元素2, 元素3....

2020-02-09 18:42:59 408

翻译 Scala容器之Map

映射MapMap可以称之为映射。它是由键值对组成的集合。scala当中的Map集合与java当中的Map类似,也是key,value对形式的。在scala中,Map也分为不可变Map和可变 Map。1 不可变Map定义语法val/var map = Map(键->值, 键->值, 键->值...) // 推荐,可读性更好 val/var map = Ma...

2020-02-09 18:28:05 275

翻译 Scala数组和元组

数组scala中数组的概念是和Java类似,可以用数组来存放一组数据scala中,有两种数组,一种是定长数组,另一种是变长数组1 定长数组定长数组指的是数组的长度是不允许改变的数组的元素是可以改变的语法// 通过指定长度定义数组val/var 变量名 = new Array[元素类型](数组长度)// 用元素直接初始化数组val/var 变量名 = Array...

2020-02-02 23:58:40 909

翻译 Scala方法和函数

方法语法def methodName (参数名:参数类型, 参数名:参数类型) : [return type] = { // 方法体:一系列的代码}说明参数列表的参数类型不能省略返回值类型可以省略,由scala编译器自动推断返回值可以不写return,默认就是{}块表达式的值示例scala> def add(a:Int,b:Int) = a+badd: ...

2020-01-30 20:34:59 137

原创 定义申请OMA LwM2M Model Object

在LwM2M简介中有提到对象定义及资源定义,LwM2M Model即LwM2M协议定义的对象资源模型。LwM2M定义了资源模型,所有信息都可以抽象为资源以提供访问。资源是对象的内在组成,隶属于对象,LwM2M客户端可以拥有任意数量的资源。和对象一样,资源也可以有多个实例。OMA资源模型由OMA统一管理,现有模型列表参照https://github.com/OpenMobileAlliance/...

2020-01-21 15:25:40 1433

原创 LeshanClient启动过程

LeshanClient启动时序图可配启动参数:-h help 帮助信息-n client的endpoint name,默认LeshanClientDemo-b 是否使用bootstrap-lh local CoaP address of client-lp local CoaP port of client-u 设置LWM2M Server或者bootstrap ...

2020-01-20 17:44:21 1042

原创 Scala基础语法

一、scala中声明变量1、语法格式val/var 变量名称:变量类型 = 初始值val定义的是不可重新赋值的变量(值不可修改)var定义的是可重新赋值的变量(值可以修改)注:scala中声明变量是变量名称在前,变量类型在后,跟java是正好相反scala的语句最后不需要添加分号2、示例#使用val声明变量,相当于java中的final修饰,不能在指向其他的数据了 val...

2020-01-19 22:27:26 165

原创 LeshanServer启动过程

启动过程时序图:启动可配命令行参数:-h help 帮助信息-lh coaphost 本地coap地址,默认任何本地地址-lp coapport 本地coap端口,默认5683-slh coapshost 安全的本地coap地址,默认任何本地地址-slp coapsport 安全的本地CoAP端口,默认5684-wh webhost web服务的H...

2020-01-19 18:29:05 1319

原创 CDH部署客户端报错deploy client configuration fail

环境:CDH-5.14.2-1.cdh5.14.2.p0.3问题描述:添加Hive服务时,部署hdfs,yarn,hbase,kafka,spark2,hive的client配置时报错如下。解决方案:首先解决第一个问题JAVA_HOME is not set and could not be found.命令行查看,确实配置了JAVA_HOME:[root...

2020-01-08 00:02:10 1169 1

空空如也

空空如也

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

TA关注的人

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