刘本龙的专栏

个人邮箱:3089008201@qq.com. 技术交流群:684457529
私信 关注
快乐崇拜234
码龄11年

学习笔记

  • 1,388,618
    被访问量
  • 271
    原创文章
  • 3,040
    作者排名
  • 1,325
    粉丝数量
  • 于 2010-05-28 加入CSDN
获得成就
  • 博客专家认证
  • 获得376次点赞
  • 内容获得249次评论
  • 获得880次收藏
荣誉勋章
兴趣领域
  • #后端
    #Java#架构
TA的专栏
  • 分布式事务seata
    付费
    3篇
  • spring boot 2/spring cloud教程
    付费
    45篇
  • python
    9篇
  • Java11源码分析
    21篇
  • docker/k8s
    1篇
  • 管理日记
  • netty
    8篇
  • redis学习教程
    11篇
  • akka学习教程
    14篇
  • 分布式+高并发
    28篇
  • dubbo
    2篇
  • java/java8
    40篇
  • zookeeper
    1篇
  • mysql
    3篇
  • oracle
    2篇
  • android
    2篇
  • html+css+js
    5篇
  • jquery
    3篇
  • SSH
    3篇
  • ant
    1篇
  • linux
    4篇
  • jbpm
    3篇
  • 项目管理
    8篇
  • 随笔
    9篇
  • 项目运维
    9篇
  • 架构设计
    5篇
  • Thrift
    1篇
  • Elasticseach
    8篇
  • Lucene
    8篇
  • 设计模式
    8篇
  • 算法与数据结构
    12篇
  • kafka
    2篇
  • 异常
    13篇
  • spring
    1篇
  • jvm
    4篇
  • 区块链
    10篇
  • spring cloud
    14篇
  • mq 消息队列
    10篇
  • hbase
    31篇
  • hadoop
    4篇
作者简介
工作多年的老码农,一直专注于互联网高并发架构的学习研究。 对java分布式高并发等有深入研究. 曾就职于 京东、网易 等公司。
欢迎关注作者公众号:
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

安装使用Jupyter

一、什么是Jupyter Notebook?简介Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。——Jupyter Notebook官方介绍简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。组成部分① 网页应用网页应用即基于网页形式的、结
原创
51阅读
0评论
0点赞
发布博客于 22 天前

Python入门--06错误、调试和测试

错误处理在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在操作系统提供的调用中,返回错误码非常常见。比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1。用错误码来表示是否出错十分不便,因为函数本身应该返回的正常结果和错误码混在一起,造成调用者必须用大量的代码来判断是否出错:def foo(): r = some_function() if r==(-1): return (-1
原创
204阅读
1评论
0点赞
发布博客于 28 天前

Python入门--05面向对象编程

面向对象编程类和实例定义类是通过class关键字,class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,所有类都会继承object类。object可以不写类中的变量没有定义也可以直接赋值使用:class Student(object): passa = Student();a.name= '李四'print(a)print(a.name)结果:<__main__.Student object a
原创
129阅读
1评论
0点赞
发布博客于 28 天前

Python入门--04 函数式编程

概念编程语言,就是越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言;越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Lisp语言。函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允
原创
101阅读
1评论
0点赞
发布博客于 28 天前

Python入门-03 高级特性

切片类似于java里的split废话不多说,上代码a = list(range(20))print(a)print(a[0:10])print(a[2:10])print(a[:10]) # 前面是0可以省略print(a[:]) # 完整复制一份print(a[-10:-3]) # 允许倒着数,不过倒着数最后一个索引是-1.正在数第一个索引是0结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1
原创
28阅读
0评论
0点赞
发布博客于 28 天前

python入门--02 函数

函数定义defdef bijiao(param): if param > 0: return True elif param < 0: return False else: return "0"print(bijiao(0)) #输出结果为0返回多个值(其实是tuple)def move(x, y): x = x + 10 y = y+20 return x, yprint(mo
原创
162阅读
1评论
0点赞
发布博客于 28 天前

python入门-01

Python入门(一)-- HelloWordHelloWord程序代码:print('Hello Word!')print(' 1 + 2 =', 1 + 2)a = 5*6print(a)输出:Hello Word! 1 + 2 = 330输入input:name = input('请输入姓名:')print('hello', name)结果:请输入姓名:tomhello tom通用语法注释符号:#python没有大括号,是通过缩进来表示代码块的,通常使
原创
138阅读
1评论
0点赞
发布博客于 28 天前

python预测分析--环境搭建

Python数据处理分析是很强大的,本文介绍环境搭建,依赖包的引用等,为后面学习做准备。statsmodels statsmodels(http://www.statsmodels.org)是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索和可视化。statsmodels包含更多的“经典”频率学派统计方法,而贝叶斯方法和机器学习模型可在其他库中找到。statsmodels是一个Python软件包,为scipy提供了补充,以进行统计计算,包括描述性统计以及统计模型的估计和推断。
原创
174阅读
0评论
0点赞
发布博客于 2 月前

python开发环境搭建

安装PyCharm直接到 PyCharm官网 下载最新的PyCharm安装包,安装即可。安装python3无论mac还是Linux,目前默认安装的都是Python2版本。我这里要使用statsmodels,需要安装python3。安装方式有多种:去 python官网 下载对应安装包,然后配置环境变量即可。按照流程安装即可,会默认配置python3 环境。通过python3 -V命令查看Python版本信息:$ python3 -VPython 3.7.3PyCharm配置Pyth
原创
221阅读
1评论
0点赞
发布博客于 2 月前

使用lombok的@Data会导致栈溢出StackOverflowError

最近撸代码发现一个问题,使用lombok的@Data会导致栈溢出StackOverflowError。问题复现两个类,有循环引用:@Datapublic class Obj1 { private String a; private String b; private Obj2 obj2;}@Datapublic class Obj2 { private String a; private String b; private Obj1 obj1;
原创
250阅读
0评论
1点赞
发布博客于 2 月前

java最长重复子串

例如:例如字符串 s =“abcdeabc”输出:abcpublic class Test { public static void main(String[] args) { System.out.println(maxString("ckabcabck")); System.out.println(maxString("abdcdyedhjhyed")); System.out.println(maxString("abcdeabc"));
原创
97阅读
0评论
0点赞
发布博客于 3 月前

java 最长不重复子串,最长无重复字符子串

问题描述:输入:abdca 返回:abdc方法一:使用双指针(滑动窗口)来实现。该方法需要配合map保存已经出现过的字符。public static int maxLength(String nums, int begin, int end, int maxStr){ if (null == nums || nums.length() == 0) return 0; if (end>=nums.length()) return maxStr; Ma
原创
196阅读
0评论
0点赞
发布博客于 3 月前

java异常处理规范

文章目录java 异常简介异常处理规范前面介绍了 日志打印规范, 如果想打印出合格的日志,还需要了解Java对异常处理的一些知识。java 异常简介先来看一下Java中异常的类图,该类图只是把常见的异常列了一下。更详细的请读者去看jdk源码。先看一下Throwable ,它是所有errors和exceptions的超类。 * The {@code Throwable} class is the superclass of all errors and * exceptions in the J
原创
206阅读
0评论
0点赞
发布博客于 3 月前

稳定性可靠性设计--源码篇

文章目录概述日志空指针异常入参校验线程安全ThreadLocal注意有些类不是线程安全的volatile 不能保证原子性正确的try-cache-finally事务bigdecimal资源释放概述稳定性可靠性设计计划写4篇文章:源码篇网络篇流程篇架构篇存储篇大数据计算(本期不提供)本文是第一篇,源码篇。从源码角度来看如何写出稳定性高的系统。我这里把可靠性的内容也一起讲了,稳定性和可靠性也没必要分的太清,相辅相成的。其实目前已经有很多很优秀的代码规范可以很好的约束程序员写出可靠的,健
原创
143阅读
0评论
0点赞
发布博客于 3 月前

日志打印规范

文章目录打印日志的目的日志级别ERRORWARNINFODEBUG如何打印日志打印日志的位置打印输出哪些内容告警告警分级谁来处理告警拾遗空指针异常入参校验分布式链路追踪灵魂之问:撸了那么多年代码,你真的会打日志吗?打印日志的目的不仅是初学者,很多老码农也不能很好的打印日志(大牛除外,如果你是大牛,就不需要看本文了),本质的原因是没有意识到为什么要打印日志,打印日志的目的是什么,这里我就为大家介绍一下。最重要的原则:在确保日志数量有限的情况下,可以快速定位问题。你仔细想想,在你遇到问题的时候,尤
原创
289阅读
0评论
0点赞
发布博客于 3 月前

LRU算法在MySQL/hbase/Caffeine 中的优化

在上一篇文章中介绍了LRU的原理及实现,但是实际企业级应用中不会直接使用如此简单的LRU算法。本文看看各个优秀的中间件是如何优化LRU算法的。mysql对LRU的优化大家思考一个问题,在我前面讲到的算法实现中,每次访问的数据都会立刻移动到链表的尾端,这样是否是稳定可靠的?答案显然是否定的。实际的应用场景是比较复杂的,大家考虑这样一个场景,你的系统运行了一段时间,缓存都根据LRU算法正常运行,此时,有一个大的查询,数据量比较大,新查询出来的数据根据LRU算法会插入到队尾,此时缓存的数据超出了容量限制,将队
原创
127阅读
0评论
0点赞
发布博客于 3 月前

zookeeper与etcd的对比

背景最近在看到Pachyderm的介绍时,看到作者拿YARN和Kubernetes做类比,拿Zookeeper和etcd做对比。YARN和Kubernetes的类比还相对比较好理解,毕竟他们都有资源管理和调度的职能,只不过YARN上运行的对象是JVM,而Kubernetes上运行的是容器。但是拿Zookeeper和etcd来类比我就有些不懂了,在我之前的概念里zookeeper并不是一个存储组件啊,因此有了本文的过程。Zookeeper和etcd可以做类比吗?etcd的官网介绍是一个分布式的K/V存储
转载
220阅读
0评论
0点赞
发布博客于 3 月前

手撸一致性hash算法(java实现)

一、一致性Hash(Consistent Hashing)原理剖析引入一致性哈希算法是分布式系统中常用的算法。一致性哈希算法解决了普通余数Hash算法伸缩性差的问题,可以保证在上线、下线服务器的情况下尽量有多的请求命中原来路由到的服务器。在业务开发中,我们常把数据持久化到数据库中。如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取。读取数据的过程一般为:图1:加入缓存的数据读取过程对于分布式缓存,不同机器上存储不同对象的数
转载
102阅读
0评论
0点赞
发布博客于 3 月前

手撸LRU算法(java实现)

使用javaAPIjava 的LinkedHashMap可以实现LRU算法,LinkedHashMap 本身内部有一个触发条件则自动执行的方法:删除最老元素(最近最少使用的元素)。我们只需要通过参数控制数据排序逻辑和数据删除规则就行了。LinkedHashMap源码中有这么一个注释:<p>The {@link #removeEldestEntry(Map.Entry)} method may be overridden to * impose a policy for removing
原创
351阅读
0评论
0点赞
发布博客于 3 月前

LVS介绍及工作原理图解

一、LVS简介LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,官方站点是:http://www.linuxvirtualserver.org。现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须重新编译内核以支持LVS功能模块,但是从Linux2.4内核心之后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。使用LVS技术要达到的目标是:通过LVS提供
转载
108阅读
0评论
0点赞
发布博客于 3 月前

spring3升级到spring4.3

项目中有一个外购的老的系统,使用的spring3,太老了,也不符合公司安全要求,固将其升级为spring4。这里就记录一下修改内容。升级spring版本<spring.version>3.2.18.RELEASE</spring.version>升级到<spring.version>4.3.29.RELEASE</spring.version>升级xml文件中的xsd版本如http://www.springframework.org/schem
原创
338阅读
0评论
0点赞
发布博客于 3 月前

数据库连接池到底应该设多大?

数据库连接池的配置是开发者们常常搞出坑的地方,在配置数据库连接池时,有几个可以说是和直觉背道而驰的原则需要明确。1万并发用户访问想象你有一个网站,压力虽然还没到Facebook那个级别,但也有个1万上下的并发访问——也就是说差不多2万左右的TPS。那么这个网站的数据库连接池应该设置成多大呢?结果可能会让你惊讶,因为这个问题的正确问法是:“这个网站的数据库连接池应该设置成多小呢?”下面这个视频是Oracle Real World Performance Group发布的,请先看完:http://ww
转载
232阅读
0评论
0点赞
发布博客于 3 月前

java设计模式之访问者模式

定义访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。优缺点访问者(Visitor)模式是一种对象行为型模式,其主要优点如下。扩展性好。能够在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。复用性好。可以通过访问者来定义整个对象结构通用的功能,从而提高系统的复用程度。
原创
141阅读
0评论
1点赞
发布博客于 4 月前

java设计模式之状态模式

状态模式的定义与特点对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。模式的结构状态模式包含以下主要角色。环境(Context)角色:也称为上下文,它定义了客户感兴趣的接口,维护一个当前状态,并将与状态相关的操作委托给当前状态对象来处理。抽象状态(State)角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为。具体状态(Concrete State)角色:实现抽象状态所对应的行为。典型类图为:demo以学生成绩为
原创
163阅读
0评论
0点赞
发布博客于 4 月前

JIT实时编译优化带来的问题:几千次异常以后取不到错误信息了

问题public static void main(String[] args) { BigDecimal value1 = new BigDecimal("0.0000"); BigDecimal value2 = new BigDecimal("0.0000"); int i = 0; while (i < 11000) { try { value1.subtract(value2).divide(value2, 6, Bi
原创
142阅读
0评论
0点赞
发布博客于 5 月前

RocketMQ事务消息实现原理

文章目录概述RocketMQ事务消息实现原理RocketMQ事务消息流程概要RocketMQ事务消息设计事务消息优缺点优势缺陷注意概述在之前文章seata(一) 分布式事务解决方案汇总中介绍了十来种分布式事务的解决方案或理论,其中有一个是事务消息。rocketmq是支持事务消息的,本文将介绍rocketmq事务消息的实现原理,以及具体实例。RocketMQ事务消息实现原理RocketMQ是基于2PC协议基础之上演变而来的,同时增加一个补偿(回查)逻辑来处理二阶段超时或者失败的消息。2PC协议可以参
原创
847阅读
3评论
2点赞
发布博客于 5 月前

seata(一) 分布式事务解决方案汇总

概述分布式事务是老生长谈的话题了,过去也一直没有很好的解决办法,没有很方便使用的架构。不过现在阿里开源了seata, 笔者正在学习中,顺便记录一下笔记。本文先来梳理一下目前流行的分布式事务的各种解决方案,以及他们的对比分析。什么是分布式事务事务: 由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。一致性(consistency)。事务必须是使
原创
254阅读
0评论
0点赞
发布博客于 5 月前

CreateProcess error=206, 文件名或扩展名太长

欢迎关注本人公众号近期接手一个老项目,启动报错:CreateProcess error=206, 文件名或扩展名太长这是因为Windows命令行支持的字符串长度有限制。Linux不会有这个问题。如果你是使用的gradle的bootrun方式启动,那么可以参考gradle官方文档 来解决这个问题,引入插件。方式一:Using the plugins DSLplugins { id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"}方式二:
原创
4837阅读
2评论
0点赞
发布博客于 7 月前

seata(二) 分布式事务框架seata1.3 AT及XA模式实例演示

欢迎关注本人公众号概述Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。本文先将官方实例跑起来,看看运行效果,值后在对其原理和源码进行分析。下载源码进入seata的GitHub主页,下载seata和seata-samples两个项目。下载下来后可以用idea打开。下载完成后,idea导入seata-samples文件夹下的seata-xa和seata
原创
1997阅读
3评论
1点赞
发布博客于 7 月前

mysql8.0.20安装教程

欢迎关注本人公众号mysql8 的安装先比较之前的版本复杂了一些,下面就一步一步安装。下载到 mysql官网 下载最新版本的mysql下载完成后解压,并新建my.ini文件my.ini 文件配置my.ini文件内容:[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录basedir=C:\Program Files\mysql-8.0.20-winx64# 设置mysql数据库的数据的存放目录datadir=C:\Program Files\my
原创
485阅读
0评论
0点赞
发布博客于 8 月前

docker/k8s(1):docker安装使用

依赖docker使用安装docker使用yum安装最新版本dockeryum install docker查看docker版本[root@localhost ~]# docker versionClient: Version: 1.13.1 API version: 1.26 Package version: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the do
原创
278阅读
0评论
0点赞
发布博客于 8 月前

transmittable-thread-local:解决线程池之间ThreadLocal本地变量传递的问题

欢迎关注本人公众号概述当InheritableThreadLocal遇到线程池:主线程本地变量修改后,子线程无法读取到新值 一文中介绍了InheritableThreadLocal的问题:主线程变量修改后,子线程无法取到的问题。阿里开源的transmittable-thread-local解决了这个问题。transmittable-thread-local介绍git地址:transmittable-thread-local需求场景在ThreadLocal的需求场景即是TTL的潜在需求场景,如
原创
1213阅读
0评论
0点赞
发布博客于 8 月前

当InheritableThreadLocal遇到线程池:主线程本地变量修改后,子线程无法读取到新值

欢迎关注本人公众号之前已经介绍,InheritableThreadLocal可以在子线程创建的时候,将父线程的本地变量拷贝到子线程中。那么问题就来了,是只有在创建的时候才拷贝,只拷贝一次,然后就放到线程中的inheritableThreadLocals属性缓存起来。由于使用了线程池,该线程可能会存活很久甚至一直存活,那么inheritableThreadLocals属性将不会看到父线程的本地变量的变化public class InheritableThreadLocalTest1 { pub
原创
1337阅读
0评论
0点赞
发布博客于 8 月前

InheritableThreadLocal:子线程继承父线程的本地变量

欢迎关注本人公众号概述ThreadLocal可以保存一些变量仅供当前线程使用,其他线程不可见。实际工作中可能会由于任务复杂,父线程创建几个子线程并发致性任务,那么父线程的本地变量如何传递到子线程呢? 答案是使用InheritableThreadLocal。代码实例public static ThreadLocal<Integer> threadLocal = new InheritableThreadLocal<>(); public static void m
原创
774阅读
0评论
0点赞
发布博客于 8 月前

ThreadLocal 内存泄漏 代码演示 实例演示

欢迎关注本人公众号阅读本文前请先阅读: ThreadLocal内存泄露原因分析不使用ThreadLocal下面这段程序创建了一个有5个线程的线程池。每个线程致性都申请5M大小的堆空间。public class MyThreadLocalOOM1 { public static final Integer SIZE = 500; static ThreadPoolExecutor executor = new ThreadPoolExecutor( 5, 5
原创
992阅读
12评论
3点赞
发布博客于 8 月前

ThreadLocal内存泄露原因分析

欢迎关注本人公众号背景知识引用Object o = new Object();这个o,我们可以称之为对象引用,而new Object()我们可以称之为在内存中产生了一个对象实例。当写下 o=null时,只是表示o不再指向堆中object的对象实例,不代表这个对象实例不存在了。强引用一直活着:类似“Object obj=new Object()”这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象实例。软引用有一次活的机会:软引用关联着的对象,在系统将要发生内存溢出异常之前,
原创
1110阅读
1评论
2点赞
发布博客于 8 月前

google aviator:轻量级Java公式引擎

文章目录常用的方法官方文档简介包依赖使用手册执行表达式使用变量exec 方法调用函数自定义函数编译表达式访问数组和集合三元操作符正则表达式匹配变量的语法糖nil 对象日期比较大数计算和精度字面量表示运算类型转换和提升decimal 的计算精度强大的 seq 库两种运行模式调试信息语法手册数据类型操作符算术运算符逻辑运算符关系运算符位运算符匹配运算符三元运算符内置函数常用的方法@Test public void playAviator(){ String string = AviatorEvalua
转载
1583阅读
0评论
5点赞
发布博客于 8 月前

如何让发布丝般顺滑

欢迎关注本人公众号文章目录欢迎关注本人公众号前言概述环境说明前言笔者在过去几年的工作中, 曾负责管理过多个项目,最高也负责过几百万日活的项目,十几人的研发团队,在工作中也总结了一些项目管理经验,参与制定了一些规范,提升团队的整体效率,保障服务的高可用。接下来笔者会将过去的一些经验进行总结,输出文档。管理相关的大多是软技能,每个人心中都有一套自己衡量标准;而且不同团队的做事风格,人员水平,组织架构,技术架构等都不同,所以笔者的经验也许并不适用于正在阅读文章的您;如果读者有认为不妥之处,欢迎留言交流。
原创
261阅读
0评论
0点赞
发布博客于 8 月前

java自定义类加载器并观察类卸载过程

欢迎关注本人公众号文章目录欢迎关注本人公众号概述代码实现概述之前我写了篇博客: java自定义类加载器实现类隔离 ,里面介绍了如何自定义类加载器实现了类隔离。通常情况下,在JSP,OSGI及其他一些支持热替换的库,都是需要进行类的卸载回收的,否则类在替换后,老的类就没用了但是还在内存中,就会造成内存泄漏。我们知道类的卸载需要满足以下三个条件:该类所有的实例都已经被GC,也就是JVM中不存在该Class的任何实例。加载该类的ClassLoader已经被GC。该类的java.lang.Cl
原创
442阅读
0评论
0点赞
发布博客于 8 月前

spring boot 全局统一日志打印

欢迎关注本人公众号概述本文以使用spring boot或者springmvc为例。微服务之间调用,或者controller接收请求时,为了方便排查问题,通常会将入参与出参(返回值)打印出来。为了简化代码,这里使用AOP统一处理日志的打印。由于比较简单,废话不多说,直接上代码:@Aspect@Component@Slf4jpublic class LogAspect { @Pointcut("execution(public * com.example.controller..*
原创
1075阅读
0评论
0点赞
发布博客于 9 月前

不要以为你用了BigDecimal后,计算结果就一定精确了

欢迎关注本人公众号异常再现大家应该都已经知道,涉及到金钱的计算应该使用BigDecimal,没有使用BigDecimal的已经被开除。但是使用了BigDecimal后计算结果就一定是精确的吗?未必。看下面测试BigDecimal a = new BigDecimal(1.01); BigDecimal b = new BigDecimal(2.02); BigDecimal c = new BigDecimal("1.01"); BigDecim
原创
440阅读
1评论
1点赞
发布博客于 9 月前

spring boot 2.1学习笔记【十九】使用spring validation实现全局参数校验

概述本文介绍在Spring Boot中实现对controller请求的数据进行全局校验。JSR303/JSR-349: JSR303是一项标准,只提供规范不提供实现,规定一些校验规范即校验注解,如@Null,@NotNull,@Pattern,位于javax.validation.constraints包下。JSR-349是其的升级版本,添加了一些新特性。hibernate validation:hibernate validation是对这个规范的实现,并增加了一些其他校验注解,如@Email,@
原创
547阅读
1评论
0点赞
发布博客于 9 月前

rabbitmq 事务消息

文章目录AMQP 事务消息confirm 事务消息生产者纯异步操作rabbitmq支持两种模式的事务消息:AMQPconfirmAMQP 事务消息代码比较简单,开启事务txSelect,提交txCommit,回滚txRollback。实例:生产者public class Send { private final static String QUEUE_NAME = ...
原创
835阅读
0评论
0点赞
发布博客于 1 年前

rabbitmq消息可靠性之消息应答与持久化

文章目录消息应答ack持久化消息应答ack前面介绍了rabbitmq有两种ack模式自动ack:消息从rabbitmq队列中发送给消费者则从队列内存中删除该消息。此时如果消费者宕机等原因未来得及消费完消息,则该消息丢失。手动ack:消费者在去确定消费完消息以后再ack,rabbitmq服务器收到ack后才会从内存队列中删除消息,如此一来,可以保证消息在消费者和队列这个环节不丢失。注意一点...
原创
312阅读
0评论
0点赞
发布博客于 1 年前

rabbitmq 7种队列实现java版

文章目录搭建maven项目引入依赖创建连接简单队列消息生产者消息消费者搭建maven项目引入依赖<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.8.0</...
原创
416阅读
0评论
0点赞
发布博客于 1 年前

rabbitmq用户及vhost配置

文章目录用户添加用户配置virtual hosts授权用户访问vhost用户上一节我们是通过guest用户登录的,但是实际工作中肯定不能以该账户使用,通常是会设置多个账户供不同的业务方使用。下图中可以看到guest是administrator权限。添加用户我这里作为演示,添加一个admin用户,tags选的是admin(直接点击下面的几个选项即可)。添加完成后:可以看到virt...
原创
861阅读
0评论
0点赞
发布博客于 1 年前

windows10安装rabbitmq

文章目录安装Erlang安装rabbitmq安装Erlang由于rabbitMQ是Erlang语言编写的,所以要先安装Erlang语言环境,与安装java类似。rabbitmq官网安装教程:https://www.rabbitmq.com/install-windows.html。官网已经告诉我们如何安装了。进入erlang下载页面:https://www.erlang.org/down...
原创
505阅读
0评论
0点赞
发布博客于 1 年前

java11:NoClassDefFoundError: javax/activation/MimetypesFileTypeMap

文章目录错误描述解决办法错误描述在 netty4.1实现http文件服务器 一文中我们有使用到javax.activation.MimetypesFileTypeMap。但是java9+对Java实行了模块化处理,有一些模块没有默认加载,所以在使用这些模块时,需要我们主动的引入。错误信息:NoClassDefFoundError: javax/activation/MimetypesFile...
原创
1047阅读
0评论
0点赞
发布博客于 1 年前

Netty实现聊天室

文章目录本文内容基于上一篇博客 netty实现WebSocket协议,一些基本使用请参考该博客。本例实现的功能:有新成员加入时,群广播消息,欢迎加入有成员退出时,群广播消息,退出每个成员都可以发送消息,消息广播给群内的每个人完整的服务器代码如下:package com.example;import com.alibaba.fastjson.JSONObject;import...
原创
995阅读
0评论
0点赞
发布博客于 1 年前

netty实现WebSocket协议

文章目录WebSocket协议服务端开发客户端运行测试全双工WebSocket协议一般web应用都是使用的HTTP协议。HTTP协议有以下特点:支持客户端-服务端模式使用简单:只需要知道服务端URL,携带参数发送请求即可支持多种传输数据类型,由消息头中content-type标识无状态,使得HTTP服务轻量级HTTP协议也存在一些缺点:半双工通信:同一时刻,数据只能往同一方向...
原创
1065阅读
0评论
0点赞
发布博客于 1 年前

网关基于Netty 在Http 协议的实践

文章目录网关基于Netty 在Http 协议的实践http编解码Head 请求ByteBuf 释放,防止内存泄漏引用计数PoolThreadCache连接池连接复用接入端用Netty完全异步Tomcat 做容器Netty 实现网关基于Netty 在Http 协议的实践我们网关现在完全基于netty 实现http 协议,包含客户端和服务端,http 客户端有很多选择,比如 HttpClient ...
转载
604阅读
0评论
0点赞
发布博客于 1 年前

netty4.1实现http文件服务器

概述netty版本:4.1.45使用netty搭建一个简单的文件服务器,使用HTTP协议对外提供服务。如果文件不存在,返回403响应码。如果是文件夹,以超链接展示,如果是文件,支持下载。服务器编码/** * netty http 文件下载 服务器 */public class MyHttpFileBrowserServer { int port; publi...
原创
556阅读
1评论
0点赞
发布博客于 1 年前

netty实现HTTP服务器

文章目录概述HTTP服务器代码实现验证概述目前主流的Java web服务器还是采用springboot+Tomcat来实现的,底层还是基于servlet开发的。servlet不是异步的,所以性能并不是很理性,无法满足当下的快速服务器的要求。目前spring5已经实现了基于reactor的webflux异步编程(响应式编程),springboot2.X也已经支持webflux,性能会提升很多。...
原创
420阅读
0评论
0点赞
发布博客于 1 年前

Mac升级系统后,idea中Git无法使用:xcrun: error: invalid active developer path

Mac升级了最新的系统,idea右下角提示Git无法使用的错误。完整错误信息:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun解决办法:首...
原创
426阅读
0评论
0点赞
发布博客于 1 年前

Mac安装protobuf

Mac上安装软件通常使用brew来安装,类似于Linux平台上的yum.本文使用brew安装protobuf两条命令:brew install protobufprotoc --version
原创
437阅读
0评论
0点赞
发布博客于 1 年前

mac 安装 brew(homebrew)

brew是MacOS上的包管理工具。类似RHEL/CentOS上的yum或者Ubuntu上的apt-get一样。确认你的Mac电脑安装了ruby:ruby -vruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]访问 https://brew.sh/复制网页上的安装命令:等待安装完成,然...
原创
1507阅读
0评论
1点赞
发布博客于 1 年前

netty 4.1.45 protobuf 编解码实现

文章目录PB协议简单使用netty使用PB协议进行编解码PB协议简单使用关于PB协议的使用介绍请移步至: protocol buffer 3 (Protobuf3) ( java 版本 ) 使用入门。netty使用PB协议进行编解码...
原创
228阅读
0评论
0点赞
发布博客于 1 年前

netty 4.1.45自定义编解码器

概述前面介绍了使用netty本身提供的LineBasedFrameDecoder、DelimiterBasedFrameDecoder、FixedLengthFrameDecoder三种编解码方案。不过实际工作中直接使用这几种编解码的还是比较少的。比如处于安全、性能、私有网络等。这里介绍简单的自定义编解码器的实现,后续再介绍如何与json,PB协议等进行集成实现复杂的netty协议。自定义编...
原创
419阅读
0评论
1点赞
发布博客于 1 年前

netty 4.1.45 TCP拆包粘包原因及解决办法

文章目录异常情况模拟服务器改造客户端改造运行结果拆包粘包原因分析拆包粘包解决办法LineBasedFrameDecoder 换行符分隔消息服务端修改客户端修改运行结果原理分析DelimiterBasedFrameDecoder 固定分隔符解码器服务端修改客户端修改FixedLengthFrameDecoder 固定长度的分隔符自定义解码器在netty 4.1.45 第一个netty程序中,编写了...
原创
486阅读
0评论
1点赞
发布博客于 1 年前

netty 4.1.45 第一个netty程序

概述本系列文章介绍netty的学习。使用的版本是4.1.45jdk采用Java11本系列文章由浅入深,先学习使用,再研究其实现原理。本节编写一个最简单的netty服务器。maven依赖<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</art...
原创
1183阅读
0评论
0点赞
发布博客于 1 年前

6. rocketmq事务消息

什么是事务消息事务消息用于解决分布式系统中的事务问题,不了解分布式事务的请自行Google。通常分布式事务可以使用两阶段,三阶段,TCC,XA,本地事务表等方式来实现强一致性或者最终一致性事务。这里rocketmq的事务消息就是采用的最终一致性解决的分布式事务。分布式事务的两个参与者,一方参与者通过事务消息保证本地事务执行结果与MQ中的消息一致,要么都成功,要么都失败回滚。另一个参与者则...
原创
232阅读
0评论
0点赞
发布博客于 1 年前

5. rocketmq延迟消息队列

什么是延迟消息队列对于消息中间件来说,producer将消息发送到mq的服务器,但并不期望这条消息马上被消费,而是推迟到当前时间点之后的某个时间点后再投递到queue中让consumer进行消费。也可以认为是定时消息。延迟消息的使用场景很多,一种比较常见的场景就是在电商系统中,订单创建后,会有一个等待用户支付的时间窗口,一般为30分钟,30分钟后consumer收到这条订单消息,然后程序去订...
原创
1377阅读
0评论
0点赞
发布博客于 1 年前

4. RocketMQ顺序消息

什么事顺序消息消息顺序(Message Order)有两种:顺序消费(Orderly)和并行消费(Concurrently)。顺序消费表示消息消费的顺序同生产者为每个消息队列发送的顺序一致,所以如果正在处理全局顺序是强制性的场景,需要确保使用的主题只有一个消息队列。并行消费不再保证消息顺序,消费的最大并行数量受每个消费者客户端指定的线程池限制。要保证顺序消息,需满足以下三点:生产者写入有序...
原创
345阅读
0评论
0点赞
发布博客于 1 年前

3. springboot集成rocketmq

引入依赖这里我们使用rocketmq-spring-boot-starter来访问rocketmq。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId><...
原创
645阅读
0评论
0点赞
发布博客于 1 年前

2. RocketMQ安装部署

下载请到 rocketmq官方地址 下载最新的rocketmq。我这里下载的是 rocketmq-all-4.6.0-bin-release.zip 。其他装备:JDK 1.8+;64位centos系统。部署并启动服务将下载的rocketmq-all-4.6.0-bin-release.zip上传到Linux系统进行解压unzip rocketmq-all-4.6.0-bin-rel...
原创
297阅读
0评论
0点赞
发布博客于 1 年前

hbase--walgroup源码分析

本文介绍hbase的walgroup原理及实现开启多wal默认情况下,一个regionserver只有一个wal文件。 在HBase-5699之后,可以配置多个wal,在hbase-site.xml中,添加以下配置,既可开启多wal(同一个RS服务中):<property> <name>hbase.wal.provider</name> &...
原创
524阅读
0评论
0点赞
发布博客于 1 年前

jdk11源码--LongAdder源码分析原理分析

概述针对JDK中的原子类,想必大家都熟悉AtomicInteger,AtomicLong等类。他们都是采用CAS乐观锁方式来实现的。但是这种方式是否还有继续优化的空间呢?答案是肯定的。CAS乐观锁对临界区的数据(也就是atomicLong中的volatile long value属性)进行修改,这个属性是热点数据。并发量高的时候,会出现很多线程都轮询修改value属性的情况,CPU消耗比较高...
原创
238阅读
0评论
0点赞
发布博客于 1 年前

Intellij idea 2019.3.1 代码提示忽略大小写

最近idea升级了版本。有的配置发生了变化。本文介绍最新的Intellij idea 2019.3.1版本如何修改配置,让代码提示忽略大小写。so easy:
原创
1149阅读
0评论
0点赞
发布博客于 1 年前

java自定义类加载器实现类隔离

网上java自定义类加载器很多容易找到,但是都是加载的单个类,如果被加载的类,有引用了其他类怎么办呢?接下来看一下如何来处理这种情况
原创
212阅读
0评论
0点赞
发布博客于 2 年前

计算权重随机数

import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;/*** * java 权重随机数生成。 * 如抽奖,每个奖项获奖概率不同。 * * 假如 A 30%;B 20% ; C 50% 概率中奖 * * 方法一: 30...
原创
179阅读
0评论
0点赞
发布博客于 2 年前

Java对象占用堆内存大小计算

概述最近在看hbase源码,里面有对象占用内存大小的计算。正好笔记记录一下。一般来说,int占4个字节,long占8个字节,等等。但是对象在队中的存储不止其包含的字段所占用的空间,还包括对象头,对齐填充等信息。接下来就结合hbase源码分析一下对象在堆中的存储情况。原生类型(primitive type)的内存占用类型占用空间boolean在数组中占1个字节,单独使用...
原创
590阅读
0评论
2点赞
发布博客于 2 年前

hbase/hadoop异常:No lease on /hbase/archive/data/... File is not open for writing

问题描述我在进行hbase快照拷贝时报了以下错误:./hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot "MODEL.THIRD_PARTY_KV-11211752-snapshot" -copy-from hdfs://fromIP:9000/hbase -copy-to hdfs://toIP:9000/hbas...
原创
1089阅读
0评论
0点赞
发布博客于 2 年前

hbase 预分区Pre-splitting 解决热点问题

预分区在创建表时我们可以指定分区数量及规则等信息。最简单的方法是在创建表时指定分割点数组。 请注意,将字符串文字指定为拆分点时,它们将基于字符串的基础字节表示形式创建拆分点。 因此,当指定分割点“ 10”时,实际上是在指定字节分割点“ \ x31 \ 30”。分割点将定义n + 1个区域,其中n是分割点的数量。 第一个region包含从最小的可能rowkey到最大但不包括第一个分割点所有ro...
原创
303阅读
0评论
1点赞
发布博客于 2 年前

hbase集群滚动重启Rolling Restart

概述在我们修改了regionserver的配置后,需要对某个或所有的regionserver进行重启。或者在集群升级到新的版本时进行滚动升级。以上都需要尽可能的不影响业务,集群保持存活可用。当然最简单的方法是停止整个集群,修改完后再重启,但是显然不适用。下面看看如何使用rolling-restart和graceful_stop来实现集群优雅滚动重启。Rolling Restart先看看...
原创
1063阅读
0评论
1点赞
发布博客于 2 年前

HBASE手动触发major_compact

定时执行脚本#!/bin/bashsource /etc/profilesh ./hbase shell <<EOFmajor_compact 'table_name'EOFmajor_compact 语法:#Compact all regions in a table:hbase> major_compact 't1' #Compact an entire...
原创
1131阅读
0评论
0点赞
发布博客于 2 年前

hbase扩容 缩容

初始化集群初始化集群:hadoop三个DataNode,HBASE集群只有一个regionserver。后面我们不停服的情况下,动态添加一个机器node4,在node4上启动Hregionserver服务。hbase动态扩容配置regionservers配置每台机器的regionservers,添加node4:[root@node1 conf]# cat regionservers...
原创
1733阅读
0评论
1点赞
发布博客于 2 年前

hbase 负载均衡

概述hbase 有多个regionserver,固需要负载均衡。本文讲述hbase的负载均衡如何使用。以下命令都是在hbase shell 控制台使用的。balance_switchhbase(main):001:0> help 'balance_switch'Enable/Disable balancer. Returns previous balancer state.Exa...
原创
426阅读
0评论
0点赞
发布博客于 2 年前

hadoop 动态扩容 缩容

初始化集群初始化集群:hadoop三个DataNode,HBASE集群只有一个regionserver。后面我们不停服的情况下,动态添加一个机器node4,在node4上启动DataNode和Hregionserver服务。hadoop动态扩容准备工作准备工作与新搭建集群类似,这里参考笔者另一篇博客Hadoop 2.8.5 完全分布式HA高可用安装(一)–环境准备安装java配...
原创
404阅读
0评论
1点赞
发布博客于 2 年前

hbase源码调试

为了调试源码,我们最好只启动一个regionserver。hbase集群配置为了避免在调试过程中由于请求超时而导致地调试中断,可以适当的延长请求的超时时间,修改hbase-site.xml文件中的zookeeper.session.timeout和hbase.zookeeper.property.tickTime的参数值,其中,timeout应该取2-20倍tickTime之间的值。生产环境上...
原创
193阅读
0评论
0点赞
发布博客于 2 年前

hbase--cluster replication 源码分析

复制操作步骤准备两个集群,clusterA,clusterB .两个集群都建表 create table PERSON (id integer not null primary key,name varchar,age integer, sex INTEGER, val DOUBLE) compression = ‘snappy’, UPDATE_CACHE_FREQUENCY=30000...
原创
300阅读
0评论
0点赞
发布博客于 2 年前

hbase --HLOG写入流程源码分析

hlog写入流程如果配置了属性hbase.wal.provide=multiwal,则一个RS会有多个HLOG。This parallelization is done by partitioning incoming edits by their Region,并行化是通过对region分区(分组)实现的,因此无法提高单个region的吞吐量。 具体分几个WAL,这个有待继续探究。HL...
原创
554阅读
0评论
0点赞
发布博客于 2 年前

为什么ArrayBlockingQueue单锁实现,LinkedBlockingQueue双锁实现

首先看一下本人两篇源码解析:jdk11源码–LinkedBlockingQueue源码分析jdk11源码–ArrayBlockingQueue源码分析细心的同学会发现,ArrayBlockingQueue的实现是“单锁+两个condition”,而LinkedBlockingQueue是采用的“双锁+各自的condition”来实现的。两个类的作者都是Doug Lea,这是为什么呢?...
转载
1456阅读
0评论
0点赞
发布博客于 2 年前

LinkedBlockingQueue 和 ConcurrentLinkedQueue 的区别与联系

联系LinkedBlockingQueue 与 ConcurrentLinkedQueue 都是先进先出 FIFO的线程同步的队列。阻塞队列典型例子是 LinkedBlockingQueue适用阻塞队列的好处:多线程操作共同的队列时不需要额外的同步,另外就是队列会自动平衡负载,即那边(生产与消费两边)处理快了就会被阻塞掉,从而减少两边的处理速度差距。非阻塞队列典型例子是 Concurr...
原创
160阅读
0评论
1点赞
发布博客于 2 年前

OKhttp3 简单使用

概述okhttp 官网:https://square.github.io/okhttp/HTTP是现代应用网络的方式。这就是我们交换数据和媒体的方式。有效地执行HTTP可以加快您的负载并节省带宽。OkHttp是一个默认有效的HTTP客户端:HTTP / 2支持允许对同一主机的所有请求共享套接字。连接池减少了请求延迟(如果HTTP / 2不可用)。透明GZIP缩小了下载大小。响应缓存...
原创
175阅读
0评论
1点赞
发布博客于 2 年前

phoenix5表结构变更,修改字段类型

概述众所周知,hbase中存储的数据都是二进制的字节数组,是没有数据类型的 ,所以这里的数据类型也就是说的Phoenix中的数据类型。在Phoenix中,有以下几张系统表,其中SYSTEM.CATALOG表保存了表的元数据信息SYSTEM:CATALOG SY...
原创
1532阅读
0评论
1点赞
发布博客于 2 年前

HBase 多租户:RegionServer Group

RegionServer Group 通过对 RegionServer 进行分组,不同的 RegionServer 分到不同的组。每个组可以按需挂载不同的表,并且当组内的表发生异常后,Region 不会迁移到其他的组。这样,每个组就相当于一个逻辑上的子集群,通过这种方式达到资源隔离的效果,降低管理成本,不必为每个高 SLA 的业务线单独搭集群。不过目前hbase的不同rsgroup之间还是有影响...
原创
284阅读
0评论
1点赞
发布博客于 2 年前

hbase 数据迁移 : CopyTable

上一篇文章介绍了快照方式的迁移: hbase数据迁移:基于 hbase Snapshot。本文介绍基于CopyTable迁移。copyTable是于HBase数据迁移的工具之一,以表级别进行数据迁移。copyTable的本质也是利用MapReduce进行同步的,利用MR去scan原表的数据,然后把scan出来的数据写入put到目标集群的表。copyTable优点是使用方便,简单,可以集群内复...
原创
718阅读
0评论
1点赞
发布博客于 2 年前

Phoenix4.7 向 Phoenix 5.0 集群迁移数据

前面讲述了Phoenix hbase 的数据迁移:hbase数据迁移:基于 hbase Snapshot。但这个是相同版本的。但是我想要将Phoenix4.7创建的表的数据迁移到Phoenix5.0.0集群中(Phoenix5.0.0 hbase 2.1.5),数据迁移过去了,但是查询时只有pk, 其他数据查询不出来。问题排查:通过hbase shell 查看不通版本的数据格式,会发现col...
原创
672阅读
0评论
1点赞
发布博客于 2 年前

hbase 多版本version

默认保存version数量测试SQLcreate table PERSON3 (id integer not null primary key,name varchar,age integer, sex INTEGER, val DOUBLE);创建成后,查看表结构信息:hbase(main):018:0> describe 'PERSON3'Table PERSON3 is E...
原创
1223阅读
0评论
1点赞
发布博客于 2 年前

Phoenix 5索引

文章目录增删改查phoenix shell下创建view映射hbase表退出Phoenixpsql.py 执行外部SQL文件创建表导入数据复杂SQL:计数平均值聚合Phoenix5.0 安装部署 搭建了Phoenix环境,本文介绍一下Phoenix的shell使用。增删改查下面演示一下创建表,插入语句,查询的操作。0: jdbc:phoenix:node1,node2,node3:2181...
原创
887阅读
0评论
1点赞
发布博客于 2 年前

hbase数据迁移:基于 hbase Snapshot

文章目录初始环境说明表迁移创建快照数据迁移恢复快照参考资料初始环境说明hbase有两个集群:集群A和集群B,这里是1.1.3版本,2.X版本还没有测试。集群A上使用Phoenix创建表:create table lbltest1 (id varchar PRIMARY KEY,account varchar ,passwd varchar);然后插入一些数据upsert into lb...
原创
1168阅读
0评论
1点赞
发布博客于 2 年前

hadoop 2.7 使用 distcp 在不同集群间数据迁移拷贝

文章目录本文讲述在多个hadoop集群中进行数据迁移操作。工作中可能会遇到同样的需求,还是很实用的。hadoop官方提供了distcp 工具吗,具体使用说明参加官方文档:https://hadoop.apache.org/docs/r2.7.7/hadoop-distcp/DistCp.html#Command_Line_Options假设在hadoop集群1 的目录/hbase/data...
原创
864阅读
0评论
0点赞
发布博客于 2 年前

flink 读取kafka数据,并写入hbase

文章目录概述环境说明代码编写写入hbase概述环境说明scala: 2.12.8 linux下scala安装部署flink : 1.8.1 Flink1.8.1 集群部署kafka_2.12-2.2.0 kafka_2.12-2.2.0 集群部署hbase 2.1 hbase 2.1 环境搭建–完全分布式模式 Advanced - Fully Distributedhad...
原创
5181阅读
5评论
0点赞
发布博客于 2 年前

Flink1.8.1 集群部署

文章目录概述单机版部署HA部署概述首先需要安装scala环境,参照 linux下scala安装部署我使用的scala是 scala-2.12.8单机版部署到官网 https://flink.apache.org/downloads.html#apache-flink-181 下载最新的1.8.1版本的flink。接下来安装官方文档的操作,进行最简单的安装 https://ci.a...
原创
1203阅读
1评论
0点赞
发布博客于 2 年前

linux下scala安装部署

文章目录到scala官网 下载Scala,我这里下载的是scala-2.12.8.tgz版本。下载地址: https://www.scala-lang.org/download/2.12.8.html下载完成后,上传到Linux安装目录,tar -xzvf scala-2.12.8.tgz解压.配置环境变量vim /etc/profile:添加以下内容export SCALA_HO...
原创
491阅读
0评论
0点赞
发布博客于 2 年前

kafka_2.12-2.2.0 集群部署

文章目录zk 搭建kafka下载配置启动服务测试创建一个topic “my-test-topic”测试消息的发送与接收zk 搭建zk 集群需要优先搭建起来,这里使用 Hadoop 2.8.5 完全分布式HA高可用安装(一)–环境准备中搭建的ZK集群。kafka下载到kafka官网 下载最新的kafka_2.12-2.2.0.tgz这里我们部署3台kafka,部署在node1,node2...
原创
675阅读
0评论
0点赞
发布博客于 2 年前

使用Phoenix5 Java api操作HBase

文章目录引入依赖配置文件编写测试类建表插入记录查询引入依赖<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.1.5</version><...
原创
1904阅读
0评论
0点赞
发布博客于 2 年前

Phoenix5.0 安装部署

文章目录概述Phoenix5.0 shell 安装Phoenix5.0 shell 使用使用Phoenix操作表phoenix shell下创建view映射hbase表概述现有hbase的查询工具有很多如:Hive,Tez,Impala,Shark/Spark,Phoenix等。phoenix是一个在hbase上面实现的基于hadoop的OLTP技术,具有低延迟、事务性、可使用sql、提供jd...
原创
2867阅读
1评论
0点赞
发布博客于 2 年前

Hbase 使用高可用 (HA)的hadoop集群,hbase.rootdir如何配置

文章目录问题描述解决办法问题描述在前面文章中搭建了高可用的hadoop集群,然后hbase使用这个集群的hdfs。但是我们d hbase.rootdir配置的仍然是写死的机器:<property> <name>hbase.rootdir</name> <value>hdfs://node1:9000/hbase&...
原创
6777阅读
0评论
4点赞
发布博客于 2 年前

Java 8 函数式库 Vavr 学习笔记

文章目录概述引入依赖option元组TupleTry函数式接口集合Collections延迟计算Lazy模式匹配Pattern Matching概述最近接手一个项目,里面使用到了Java 8 函数式库 Vavr ,故而来学习一下。其实很多库都是在java8之前出现的,借鉴了一些新兴语言的特性,比如guava。在java8以后的版本中,提供了很多的函数式编程的特征,已经够用,一些库可以不用了。...
原创
590阅读
0评论
0点赞
发布博客于 2 年前