自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 Hadoop分布式搭建

1. 环境准备准备三台centos7虚拟机,设置静态IP(192.168.1.103,192.168.1.104,192.168.1.105)主机名称分别用hadoop3,hadoop4,hadoop5命名三台机器安装好java环境,并准备好上一篇博客中编译好的hadoop压缩包2. 集群规划部署HDFS有三个组件:NameNode(很重要,占资源)部署在一个节点上(企业级不会将其他模块与NameNode 部署在一起),用于查找数据块DataNode为实际存放数据的模块,

2020-06-03 11:13:18 87

原创 Hadoop单机版搭建

1. Jar包准备在上一篇博客中已经准备好linux环境,看本篇博客之前请看楼主上一篇大数据简介博客,准备系统环境下载以下jar包,传入linux服务器的opt目录下hadoop-2.7.2-src.tar.gz ,apache-maven-3.6.0-bin.tar.gz,apache-ant-1.9.15-bin.tar.gz,protobuf-2.5.0.tar.gz1.1 安装maven# 1. 解压maven包tar -zxvf apache-maven-3.6.0-bin.tar.g

2020-05-20 16:24:08 76

原创 大数据简介

1. 大数据简介大数据指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。目前主要解决海量数据的存储和海量数据的分析计算问题。按顺序给出数据存储单位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。1Byte = 8bit 1K = 1024Byte 1MB = 1024K1G = 1024M 1T = 1024G 1P = 1024T1.2 大数

2020-05-18 17:53:15 220

原创 notify和notifyall的区别

讲解之前先贴上一篇代码,如下代码线程A中执行lock.wait()方法,不设置等待时间,设置无限等待public static void main(String[] args) { final Object lock = new Object(); new Thread(new Runnable() { @Override ...

2020-03-26 16:48:38 161

原创 sleep和wait的区别

1. 基本的差别sleep是Thread类的方法,wait是Object类中定义的方法sleep方法可以在任何地方使用 ,wait方法只能在synchronized方法或synchronized块中使用2. 最主要的本质区别Thread.sleep只会让出CPU, 不会导致锁行为的改变即如果当前线程拥有锁,那么Thread.sleep不会让线程释放锁,而只会主动让出CPU,CPU会可以去...

2020-03-26 15:57:13 48

原创 线程的状态

我们打开Thread类的源码,搜索State字段,会看到State的枚举值 public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for...

2020-03-26 14:54:52 37

原创 实现处理线程的返回值

1. 给run()方法传参实现的方式主要有三种构造函数传参成员变量传参(set)回调函数传参这里不贴具体代码。可以自行实验2. 如何实现处理线程的返回值2.1 主线程等待法主线程等待法实现起来比较简单,但是必须自己实现线程等待逻辑,当需要等待的变量一多,代码会变得异常的臃肿,而且无法控制等待多久,无法精准控制2.2 使用Thread类的join()阻塞当前线程以等待子线...

2020-03-26 14:10:13 67

原创 Thread和Runnable的关系

1. 简介Thread是一个类,而Runnable是一个接口。Thread类实现了Runnable接口,Runnable接口里只有一个抽象的run()方法。说明Runnable不具备多线程的特性。Runnable依赖Thread类的start方法创建一个子线程,再在这个子线程里调用run()方法,才能让Runnable接口具备多线程的特性2. 使用Thread创建线程创建一个自定义类...

2020-03-26 11:42:18 200

原创 线程的start方法和run方法的区别

1. 使用run方法启动线程public class ThreadTest { private static void attack() { System.out.println("Fight"); System.out.println("Cuurrent Thread is : " + Thread.currentThread().getName());...

2020-03-26 11:13:30 140

原创 vue-element-admin配置讲解

1. 项目初始化git clone https://github.com/PanJiaChen/vue-element-admincd vue-element-adminnpm install npm run dev 2. 项目精简删除scr/views下的源码, 保留:dashboard:首页error-page:异常页面login:登录redirect:重定向...

2020-03-17 14:53:24 6433 7

原创 RocketMQ总结与补充

1. 消息队列优缺点优点:1. 异步2. 解耦3. 削峰缺点:1. 系统可用性越低:外部依赖越多,依赖越多,出问题风险越大2. 系统复杂性挺高:需要考虑多种场景,比如消息重复消费,消息丢失3. 需要更多的机器的人力:消息队列一般集群部署,而且需要运维和监控,例如topic申请等2. 消息队列怎么避免重复消费任何一个消息队列无法保证消息不重复消费,RocketMQ也一样不保证消息...

2020-02-19 14:37:52 109

原创 RocketMQ分布式事务消息

1. 分布式事务消息介绍简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2. RocketMQ4.X分布式事务消息架构讲解RocketMQ事务消息:RocketMQ提供分布式事务功能,通过RocketMQ事务消息能达到分布...

2020-02-16 15:53:34 220

原创 RocketMQ消费者核心配置和核心知识讲解

1. RocketMQ消费者核心配置讲解consumeFromWhere配置1. CONSUME_FROM_FIRST_OFFSET:初次从消息队列头部开始消费,即历史消息(还存在broker的),全部消费一遍,后续再启动接着上次消费的进度开始消费2. CONSUME_FROM_LAST_OFFSET:默认策略,初次从该队列最尾开始消费,即跳过历史消息,后续再启动接着上次消费的进度开始消费...

2020-02-14 21:29:00 240

原创 RocketMQ生产者核心配置和核心知识讲解

1. 消息队列RocketMQ生产者核心配置生产者常见核心配置:compressMsgBodyOverHowmuch:消息超过默认字节4096后进行压缩retryTimesWhenSendFailed:失败重复次数maxMessageSize:最大消息配置,默认128ktopicQueueNums:主题下面的队列数量,默认是4autoCreateTopicEnable:是否自动创建t...

2020-02-13 16:26:58 381

原创 RocketMQ集群架构分析与主从模式搭建

1. RocketMQ集群模式架构分析1.1 单节点优点:本地开发测试,配置简单,同步刷盘消息一条都不会丢缺点:不可靠,如果宕机,会导致服务不可用1.2 主从(异步、同步消息)优点:同步双写消息不丢失,异步复制存在少量丢失,主节点宕机,从节点可以对外提供消息的消费,但是不支持写入缺点:主备有短暂消息延迟,毫秒级,目前不支持自动切换,需要脚本或者其他程序进行监测然后进行停止broker,...

2020-02-12 12:07:29 450

原创 RocketMQ介绍与安装

1.RocketMQ简介RocketMQ是Apache RocketMQ֢作为阿里开源的一款高性能、高吞吐量的分布式消息中间件特点:支持Broker和Consumer端消息过滤支持发布订阅模型,和点对点支持拉pull和推push两种消息模式单一队列百万消息、亿级消息堆积支持单master节点,多master节点,多master多slave节点任意一点都是高可用,水平拓展,prod...

2020-01-19 10:39:52 126

原创 RabbitMQ--核心概念及AMQP协议

1. 互联网大厂为什么选择RabbitMQRabbitMQ的高性能之道是如何做到的什么是AMQP高级协议AMQP核心概念是什么

2020-01-14 16:16:15 77

原创 rabbitmq、kafka、activemq、rocketmq之间对比,区别

1. 为什么使用消息队列使用消息队列主要应用于三个场景:解耦、异步、削峰1.1 解耦传统模式:传统模式的缺点:系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!中间件模式:中间件模式的的优点:将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。1.2 异步传统...

2020-01-13 14:42:58 213

原创 Redis--秒杀系统分析需求

1. 秒杀系统业务分析2. 秒杀系统结构分析如图所示,第一层是前端拦截层、第二层是网关处理层、第三层是业务逻辑层、第四层是DB入库。在第三层中我们会用到Redis,这篇博客是秒杀系统中的Redis的应用场景,所以这篇博客主要讲解业务逻辑层。2.1 网关处理层简单讲一件网关处理层的实现,网关处理层主要处理后端流量数据的拦截,比如说我们有几十万的用户同时进行一个秒杀的功能,那么我们就会有这...

2020-01-08 16:43:54 210

原创 Redis--布隆过滤器

1. 简介布隆过滤器可以用来判断一个元素是否在一个集合中。它的优势是只需要占用很小的内存空间以及有着高效的查询效率布隆过滤器是什么,一定要用吗?黑客流量攻击:故意访问不存在的数据,导致程序不断访问DB数据库的数据黑客安全阻击:当黑客访问不存在的缓存时迅速返回避免缓存及DB挂掉思考:50亿个电话号码,现有10万个电话号码,如何判断这10万个是否已经存在在50亿个之中?(可能方案:数...

2020-01-04 16:08:07 124

原创 Redis---过期key清除策略

我们模拟一个业务场景, 我们使用redis来保存一些登录信息,来实现一个redissession,如果我们的用户特别特别多,然后我们的token又有一个过期时间,那redis是怎么对过期的key进行删除的呢?redis的删除策略主要有三种惰性删除定时删除定期删除1. 惰性删除当一些客户端获取 key 的时候,key会被发现并主动的过期。放任键过期不管,但是每次从键空间中获取时,都...

2020-01-02 18:07:54 45

原创 Redis--分布式锁

在Java中,关于锁我想大家都很熟悉。在并发编程中,我们通过锁,来避免由于竞争而造成的数据不一致问题。通常,我们以synchronized 、Lock来使用它。但是Java中的锁,只能保证在同一个JVM进程内中执行。如果在分布式集群环境下呢?1. 什么是分布式锁分布式锁是控制分布式系统或不同系统之家共同访问共享资源的一种实现。如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往通...

2020-01-02 17:00:46 65 2

原创 Redis--持久化

Redis持久化用一句话可以将持久化概括为:将数据(如内存中的对象)保存到可永久保存的存储设备中。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、 XML 数据文件中等等。Redis 为什么要持久化?Redis 中的数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis 支持各种不同方式...

2019-12-30 10:43:42 129

原创 Redis--GEO

简介GEO(地理信息定位)是存储经纬度,计算两地距离,范围计算等。命令geoadd增加地理位置信息geoadd key longitude latitude member [longitude latitude member...]geopos查找指定key的经纬度信息,可以指定多个key,批量返回geopos key member [member...]geodist...

2019-12-26 17:23:22 75

原创 Redis--HyperLogLog

1. 介绍Redis 在 2.8.9 版本添加了 HyperLogLog 结构。Redis HyperLogLog 是用来做基数统计的算法HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身。HyperLogLog的本质还是字符串在开始这一节之前,我们...

2019-12-26 16:32:10 27

原创 Redis--pipeline(流水线)

什么是流水线首先我们看一下Redis1次网络命令通讯模型如果要执行多条命令,要执行多次操作,批量网络命令通讯模型如下我们知道Redis的命令执行时间是特别快的,但是网络相反会有很大的不同,可能是内网之间通讯,也有可能是外网之间通讯,也甚至可能是跨机房,跨地区访问都有可能。那么什么是流水线,流水线是将一批命令批量打包,然后在服务端进行批量计算,然后将批量结果返回给客户端,如下图所示,这样...

2019-12-26 14:51:08 82

原创 Redis--慢查询

Redis慢查询日志是一个记录超过指定执行时间的查询的系统。 这里的执行时间不包括IO操作,比如与客户端通信,发送回复等等,而只是实际执行命令所需的时间(这是唯一在命令执行过程中线程被阻塞且不能同时处理其他请求的阶段)。如上图所示:Redis客户端一条命令执行分4个步骤:发送命令命令进入队列排队执行命令返回结果慢查询统计的是第3步(执行命令)的时间参数配置慢查询有两个参数需要...

2019-12-25 17:59:54 52

原创 Redis--数据结构

1. 字符串结构string是redis最基本的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象string类型是Redis最基本的数据类型,一个键最大能存储512MB命令--增set mykey "test" --为键设置新值,并覆盖原有值getset mycounter ...

2019-12-25 16:58:35 62

原创 Redis--介绍与安装

1. Redis简介Remote Dictionary Server(Redis) 远程字典服务器是完全开源免费的,用C语言编写的,遵守BSD开源协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,它也通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有...

2019-12-24 17:41:21 78

原创 Docker-compose---模板文件

标题模板文件简介Compose允许用户通过一个docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。Compose模板文件是一个定义服务、网络和卷的YAML文件。Compose模板文件默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。Docker-Compose标准模板文件应...

2019-12-16 15:16:15 435

原创 Docker-compose---命令说明

Compose 命令说明1. build格式为docker-compose build [options] [SERVICE…]构建(重新构建)项目中的服务容器服务容器一旦构建后,将会带上一个标记名,例如对于web项目中的一个db容器,可能是web_db。可以随时在项目目录下运行docker-compose build来重新构建服务参数选项包括:–force-rm 删除构建过程中的临...

2019-12-13 17:08:32 330

原创 Docker compose---安装

1. 简介Compose 是 docker 提供的一个命令行工具,用来定义和运行由多个容器组成的应用。使用 compose,我们可以通过 YAML 文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。Compose 的使用方式非常简单,基本上就是下面的三板斧:定义 Dockerfile定义 docker-compose.yml运行 docker-compose up...

2019-12-13 14:34:33 82

原创 从0开始搭建springcloud---配置中心

1. 简介分布式系统中,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件springCloud Config ,它支持从远程Git仓库中读取配置文件并存放到本地Git仓库。接下来我们来看一下服务端和客户端分别应该如何配置。2. 配置中心服务端2.1 pom.xml2.2 启动类添加注解启动类增加注解@EnableC...

2019-09-16 14:29:05 243

原创 从0开始搭建springcloud---链路追踪

1. 简介微服务架构上通过业务来划分服务的,通过REST调用,对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。我们知道微服务架构就是按照功能模块把我们的应用抽取成一个一个独立的服务,而服务和服务之间相互调用,相互影响,一个服务可能会去调用很多个其他的服务,由于...

2019-09-11 16:19:25 142

原创 从0开始搭建springcloud---Zuul网关

1. 什么是网关API Gateway, 是系统唯一对外的入口, 介于客户端和服务器端之间的中间层,处理非业务功能提供路由请求、鉴权、监控、缓存限流等功能主流的网关:zuul:是Netflix开源的微服务网关,和Eureka,Ribbon,Hystrix等组件配合使用,Zuul 2.0比1.0的性能提高很多kong: 由Mashape公司开源的,基于Nginx的API gatewayn...

2019-09-11 09:30:42 260

原创 从0开始搭建springcloud---Dashboard监控仪表盘

我们复制一份上一篇博客中的pj-consumer-movie-feign-hystrix项目,重命名为pj-consumer-movie-feign-hystrix-dashboard1. 简介Hystrix Dashboard 是 Hystrix 的仪表盘组件,提供了数据监控,可以实时监控 Hystrix 的各个指标,然后通过图形化界面展示出来。2. 代码配置2.1 pom.xml2...

2019-09-05 17:59:18 448

原创 从0开始搭建springcloud---Hystrix请求熔断与服务降级

1. 简介Hystrix是Spring Cloud提供的一种带有熔断机制的框架,由于在微服务系统中同一个操作会由多个不同的微服务来共同完成,所以微服务与微服务之间会由很多相互的调用,由于在分布式环境中经常会出现某个微服务节点故障的情况,所以会由调用失败发生,而熔断器的作用就是当出现远程调用失败的时候提供一种机制来保证程序的正常运行而不会卡死在某一次调用,类似Java程序中的try-catch结构...

2019-09-05 17:24:05 53

原创 从0开始搭建springcloud---Feign

1. 简介在前面的文章中可以发现当我们通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率低下,并且显得好傻。那么有没有更好的解决方案呢?答案是确定的有,Netflix已经为我们提供了一个框架:Feign。Feign是一个声明式的Web Service客户端,它的目的就是让...

2019-08-30 17:12:42 86

原创 从0开始搭建springcloud---Ribbon

本文讲解SpringCloud组件中的Ribbon组件,使用Ribbon调用用户微服务。如下图所示。1. Ribbon简介Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为。为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多负载均衡算法,例如轮询、随机等。当然,我们也可为...

2019-08-30 12:13:01 210

原创 从0开始搭建springcloud---eureka注册中心

1. CAP理论知识CAP定理指的是一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性), 三者不可同时获得。一致性( C ) : 在分布式系统中的所有数据备份,在同一时刻是否同样的值。(所有节点再同一时间的数据完全一致,越多节点,数据同步越耗时)可用性( A ) : 负载过大后,集群整体是否还能响应客户...

2019-08-29 15:18:13 211

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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