- 博客(45)
- 收藏
- 关注
原创 SpringBoot整合ElasticSearch7.4.2,简单而详细
SpringBoot整合ElasticSearch7.4.2,简单而详细SpringBoot整合ElasticSearch7.4.2,简单而详细1、创建一个SpringBoot项目2、导入相关的坐标,写入pom文件3、创建一个配置类,用于配置Elasticsearch的集群信息4、编写配置文件5、向elasticsearch中存入测试数据6、编写测试controller7、启动服务,并使用postman发送请求SpringBoot整合ElasticSearch7.4.2,简单而详细这篇博客是给刚刚接触E
2020-07-28 17:50:28 7611 4
原创 canal数据增量同步Mysql8.0至ElasticSearch7(windows 本地环境)
canal数据增量同步Mysql8.0至ElasticSearch7(windows 本地环境)canal数据增量同步Mysql8.0至ElasticSearch7(windows 本地环境)1、(Mysql、ES)软件下载安装2、下载安装Canal3、准备es及mysql的索引、表结构4、配置canal-deploy5、配置canal-adaptercanal数据增量同步Mysql8.0至ElasticSearch7(windows 本地环境)截止笔者当前日期2021-10-29canal的目前版本
2021-10-29 15:38:36 1546 1
原创 200行代码实现接口限流,探究开源项目eladmin接口限流原理
eladmin的接口限流是如何实现的呢?eladmin的接口限流是如何实现的呢?1、下载eladmin后端项目2、接下来我们用idea打开项目,分析注解3、AOP切入解析注解eladmin的接口限流是如何实现的呢?今天闲来无事的时候,看了一下eladmin这个开源项目。发现了其中真的有非常多我们可以借鉴的地方。今天我们就来看看eladmin中接口限流这个小功能是如何实现。可能会对你之后的项目有所帮助。这里预先给大家说一下他的实现用到了如下技术:自定义注解Spring提供的Aopredis+lu
2021-08-04 16:55:12 783 3
原创 JAVA(SpringBoot+JMS)接入IBM MQ 收发消息全网最完整(下)
JAVA(SpringBoot)接入IBM MQ 收发消息全网最完整(下)我的上一篇博客,包括IBM MQ的安装,及队列配置。JAVA(SpringBoot)接入IBM MQ 收发消息全网最完整(上)新建一个springboot项目,导入如下依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20
2021-01-26 17:19:33 4798 5
原创 Redisson使用(可重入锁,信号量,闭锁)
Redisson使用(可重入锁,信号量,闭锁)在分布式系统大行其道的年代,JUC包下的单机锁,已经不能适用了。这时分布式锁应运而生。分布式锁的实现方法有很多,相信大家最最常用的,应该是结合redis的分布式锁了。如果要使用redis的分布式锁,就需要实现the Redlock algorithm。这个时候就出现了Redisson,也就是我们JAVA版本的the Redlock algorithm实现。1、什么是Redisson?我们来看一下,较为官方的说法。Redisson是一个在Redis的基础上
2021-01-26 16:58:18 2125 1
原创 JAVA(SpringBoot+JMS)接入IBM MQ 收发消息全网最完整(上)
JAVA(SpringBoot)接入IBM MQ 收发消息全网最完整一、安装二、配置环境2.1、修改mqm用户密码2.1、修改环境变量三、配置一个队列(可以通过java程序进行收发)一、安装先登录到root用户下,然后执行如下命令,进入tmp文件夹命令: cd /tmp然后创建一个文件夹命令: mkdir mq进入文件夹命令: cd mq然后将我们的IBM MQ的安装包放到这个文件夹下(使用传输工具)然后使用命令解压到当前目录命令:tar -zxvf mq
2021-01-07 14:18:42 3932 4
原创 Tomcat 中使用ipv6地址
Tomcat 中使用ipv6地址在公司的一次项目改造过程中,需要将原来的IPV6替换成IPV4。查询资料资料之后,你会遇到如下问题,总结解决办法如下:1、替换老版本Tomcattomcat6不支持监听ipv6 tomcat7不支持监听ipv6 tomcat8不支持监听ipv6我们只需将tomcat换为8.5以上的版本即可!!!!!!!!!2、项目无法启动如果使用Tomcat 8.5来替换老版本的Tomcat,那么问题来了你会无法启动项目。错误日志:26-Aug-2020 16:11
2020-08-26 16:24:31 9697 1
原创 NIO学习笔记(八)FileLock文件锁的使用
NIO学习笔记(八)FileLock文件锁的使用1、执行锁定的操作FileLock lock(long position , long size , boolean shared)方法的作用是获取此通道的文件给定区域上的锁定。在可以锁定该区须之前、已关闭此通道之前或者已中断调用线程之前,将阻塞此方法的调用。再次方法调用期间,如果另一个线程关闭了此通道,则会抛出AsynchronousCloseException异常。如果等待获取锁定的同时中断了调用线程,则将状态设置为中断并抛出FileLockInte
2020-08-20 15:13:44 1676
原创 常用配置及命令V1.0
常用配置及命令V1.0常用配置及命令V1.0docker 安装ElasticSearch|KibanaOracle命令docker 安装nacosredis中的常用命令nginx常用命令nginx的配置文件docker常用命令git命令服务远程调用open-feign1、引入openfeign2、编写一个接口来调用远程服务3、开启feign的远程调用功能Nacos作为配置中心1、引入依赖2、编写bootstrap.properties3、在配置中心添加一个配置,名为当前应用名+.properties4、动态
2020-07-24 17:15:07 391
原创 NIO学习笔记(六)FileChannel类API的使用
NIO学习笔记(六)FileChannel类API的使用NIO学习笔记(六)FileChannel类API的使用1、写操作与位置使用2、读操作3、批量写操作4、批量读操作5、部分批量写操作6、部分批量读操作7、向通道的指定position位置写入数据8、读取通道指定位置的数据9、设置位置与获取大小10、截断缓冲区11、将数据传输到其他可写入字节通道12、将字节给定可读取字节通道传输到此通道的文件中NIO学习笔记(六)FileChannel类API的使用FileChannel的主要作用是读取、写入、映射和
2020-07-17 14:56:14 485
原创 NIO学习笔记(七)NetworkInterface常用方法
NIO学习笔记(七)NetworkInterface常用方法NIO学习笔记(七)NetworkInterface常用方法1、NetworkInterface的常用方法1.1获得网络接口的基本信息1.2获取MTU的大小1.3子接口的处理1.4获得硬件地址1.5获得ip地址1.5.1获得本地主机和环回地址1.5.2根据主机名获得ip地址NIO学习笔记(七)NetworkInterface常用方法在计算机软件中,实现计算机之间数据通信的方式有很多种。在web开发领域中,实现数据通信时是用的最多的就是HTTP协
2020-07-15 18:00:53 874
原创 NIO学习笔记(五)通道概述
NIO学习笔记(五)通道概述1、什么是通道?什么是通道呢?首先我们来看一下百度百科的解释:通道是一个计算机词汇,属于操作码,记数段,内存地址段等。能够完成内存与外设之间数据的传输。一个独立于CPU的专门I/O控制的处理机,控制设备与内存直接进行数据交换。它有自己的通道命令,可由CPU执行相应指令来启动通道,并在操作结束时向CPU发出中断信号。通道指令的格式一般由:操作码,记数段,内存地址段,结束标志组成。一个系统中可设立三种类型的通道:字节多路通道、数组多路通道、选择通道。百度百科的解释还是非常
2020-07-13 08:10:38 810
原创 jquery+Select2限制搜索下拉框内的选项数量
jquery+Select2限制搜索下拉框内的选项数量先决条件这里先规定一下版本,我的select2版本是4.0.12然后开始导入jquery,大家可以去网上下载一下jquery的相关js,这里我就直接导入进来了<script type="text/javascript" src="js/jquery-3.3.1.min.js" ></script><link rel="stylesheet" href="https://cdnjs.cloudflare.com/aj
2020-07-13 08:08:31 2292
原创 NIO学习笔记(四)CharBuffer类API的使用
NIO学习笔记(四)CharBuffer类API的使用NIO学习笔记(四)CharBuffer类API的使用1、重载append(char)/append(CharSequence)/append(CharSequence,start,end)方法的使用2、读取相对于当前位置的给定索引处的字符3、put(String src)、int read(CharBuffer target) 和subSequence(int start , int end)方法的使用4、static CharBuffer wrap(
2020-07-01 10:21:39 1855
原创 NIO学习笔记(三)ByteBuffer其他API
NIO学习笔记(三)ByteBuffer其他APINIO学习笔记(三)ByteBuffer其他API1、slice()方法的使用与arrayOffset()为非0测试2、bytebuffer转换为charbuffer字符缓冲区及中文处理3、设置和获得字节顺序(大端模式,小端模式)4、创建只读缓冲区5、压缩缓冲区6、比较缓冲区的内容7、复制缓冲区8、缓冲区扩容NIO学习笔记(三)ByteBuffer其他API1、slice()方法的使用与arrayOffset()为非0测试slice()方法的作用:创建
2020-06-30 16:02:07 411
原创 NIO学习笔记(二)ByteBuffer的put和get使用实例
NIO学习笔记(二)ByteBuffer的put和get使用实例1、put(byte b)和get()方法的使用与position的自增特性Buffer类的子类都定义了两种get(读)和put(写)操作,分别对应相对位置和绝对位置的操作相对位置操作是指在读取或写入一个元素时,他从当前位置开始,然后将位置增加所传输的元素数。如果请求的传输超出了限制,则相对get操作抛出BufferUnderflowException,相对put操作抛出BufferOverflowException,也就是说在这两种情况
2020-06-29 16:15:10 5757
原创 NIO学习笔记(一)入门ByteBuffer类
NIO学习笔记(一)入门ByteBuffer类ByteBuffer类是Buffer类的子类,可以在缓冲区中以字节为单位对数据进行存取,而且他也是比较常用和重要的缓冲区类。在使用NIO技术时,有很大的概率使用ByteBuffer类来进行数据处理。ByteBuffer类提供6类操作:以绝对位置和相对位置读写单个字符的get()和put()方法。使用相对批量get(byte[ ] dst)方法可以将缓冲区中的连续字节传输到byte[ ] dst目标数组中使用相对批量put(byte[ ] dst)方法
2020-06-28 17:26:47 260
原创 RabbitMQ学习笔记(三)简单队列、工作队列(Java编写)
RabbitMQ学习笔记(三)简单队列、工作队列(Java编写)1、添加用户打开控制台,选择admin一栏(按照要求填写信息)2、用户角色超级管理员(administrator)可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。监控者(monitoring)可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)策略制定者(policymaker)可登陆管理控制台, 同时可以对policy进行管理。但无法查看节
2020-05-29 13:38:30 171
原创 RabbitMQ学习笔记(二)Windows10安装RabbitMQ
RabbitMQ学习笔记(二)Windows10安装RabbitMQ由于RabbbitMQ是使用Erlang语言开发的,所以我们需要安装Erlang环境1、Erlang安装这里安装当然不是随便安装的,这里Erlang的版本需要与RabbitMQ的版本相对应。具体的版本对应信息在RabbitMQ的官网可以查看到。网址如下:https://www.rabbitmq.com/which-erlang.html由上图可知,版本的对应关系,这里我选择的是Erlang的版本为23.0.下载地址如下:http
2020-05-29 13:36:05 186
原创 RabbitMQ学习笔记(一)Rabbit简介
RabbitMQ学习笔记(一)Rabbit简介1.什么是MQ消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。其主要用途:不同进程Process/线程Thread之间通信。为什么会产生消息队列?有几个原因:不同进程(process)之间传递消息时,两个进程之间耦合程度过高,改动一个进程,引发必须修改另一个进程,为了隔离这两个进程,在两进程间抽离出一层(一个模块),所有两进程之间传递的消息,都必须通过消息
2020-05-29 13:30:32 304
原创 Windows下安装ElasticSearch、Logstash、Kibana(详细,内附国内镜像,下载极快)
Windows下安装ElasticSearch、Logstash、Kibana(详细,内附国内镜像,下载极快)在进行安装之前一定要选择好ELK的版本,也就是ElasticSearch、Logstash、Kibana的三者版本要一致。下载慢的小伙伴们可以到 华为云的镜像去下载ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch...
2020-05-07 13:18:19 1545
原创 注册中心Consul,高可用集群搭建
Consul集群搭建首先准备节点,3台server(使用vm的虚拟机)和一台client(就使用本地机器,本地机器为windows10)server-1 ip:192.168.74.101server-2 ip:192.168.74.102server-3 ip:192.168.74.103本地机器在Linux上安装Consul#下载consulwget https...
2020-02-26 13:07:18 314
原创 JAVA并发编程(二十二)StampedLock锁如何使用?看这一篇就够了
JAVA并发编程(二十二)StampedLock锁如何使用?看这一篇就够了JAVA并发编程(二十二)StampedLock锁如何使用?看这一篇就够了1、StampedLock是什么呢?2、StampedLock的三种模式2.1、写锁(WriteLock)2.2悲观读锁(readLock)2.3、乐观读锁(tryoptimisticRead)3、案例展示JAVA并发编程(二十二)StampedLo...
2020-01-13 17:34:01 755
原创 JAVA并发编程(二十一)ReentrantReadWriteLock看这一篇就够了
JAVA并发编程(二十一)ReentrantReadWriteLock看这一篇就够了JAVA并发编程(二十一)ReentrantReadWriteLock看这一篇就够了1、初探ReentrantReadWriteLock2、写锁的获取与释放2.1、void lock()2.2、void lockInterruptibly()2.3、boolean tryLock()2.4、boolean tryL...
2020-01-10 17:02:22 254
原创 JAVA并发编程(二十)独占锁ReentrantLock源码分析----抽丝剥茧
JAVA并发编程(二十)独占锁ReentrantLock源码分析----抽丝剥茧JAVA并发编程(二十)独占锁ReentrantLock源码分析----抽丝剥茧1、ReentrantLock初探2、具体实现的方法2.1 void lock()方法2.2 void lockTnterruptibly()方法2.3 boolean tryLock(long timeout , TimeUnit uni...
2020-01-09 17:36:16 243
原创 JAVA并发编程(十九)AQS条件变量及自定义同步器
JAVA并发编程(十九)AQS条件变量及自定义同步器JAVA并发编程(十九)AQS条件变量及自定义同步器1、AQS--条件变量2、AQS--条件变量小结3、基于AQS实现自定义同步器JAVA并发编程(十九)AQS条件变量及自定义同步器1、AQS–条件变量我在之前的博客里面讲到过,wait和notify,他是配合synchronized内置锁实现线程同步的基础的工具方法,而条件变量Condit...
2020-01-08 17:10:39 397
原创 JAVA并发编程(十八)抽象同步队列AQS概述
JAVA并发编程(十八)抽象同步队列AQS概述JAVA并发编程(十八)抽象同步队列AQS概述1、AQS初探2、获取与释放资源2.1在独占的方式下,获取与释放资源的流程如下:2.2在共享的方式下,获取与释放资源的流程如下:3、AQS如何维护队列的JAVA并发编程(十八)抽象同步队列AQS概述1、AQS初探AQS是AbstractQueuedSynchronizer的全称,又叫做抽象同步队列,并...
2020-01-07 16:31:43 315
原创 JAVA并发编程(十七)JUC下LockSupport类
JAVA并发编程(十七)JUC下LockSupport类JAVA并发编程(十七)JUC下LockSupport类1、初识LockSupport2、LockSupport的常用方法及使用2.1 void park()方法2.2 void unpark(Thread thread)方法2.3 void parkNanos(long nanos)方法2.4 void park(Object blocke...
2020-01-03 15:56:25 258
原创 JAVA并发编程(十六)CopyOnWriteArrayList源码探究
JAVA并发编程(十六)CopyOnWriteArrayList源码探究JAVA并发编程(十六)CopyOnWriteArrayList源码探究1、初探CopyOnWriteArrayList2、CopyOnWriteArrayList源码探究2.1初始化2.2添加元素2.3获取指定位置元素2.4修改指定元素2.5删除元素2.6使用迭代器(弱一致性)3、总结JAVA并发编程(十六)CopyOnW...
2020-01-02 15:34:32 974
原创 JAVA并发编程(十五)LongAccumulator类原理探究
JAVA并发编程(十五)LongAccumulator类原理探究JAVA并发编程(十五)LongAccumulator类原理探究1.1简单介绍LongAccumulator1.2 LongAccumulator源码分析JAVA并发编程(十五)LongAccumulator类原理探究1.1简单介绍LongAccumulator上一篇博客讲到了LongAdder这个类他弥补了AtomicLong...
2019-12-31 09:47:30 378
原创 JAVA并发编程(十四)JDK8新增原子操作类LongAdder源码深入分析
JAVA并发编程(十四)JDK8新增原子操作类LongAdder源码深入分析JAVA并发编程(十四)JDK8新增原子操作类LongAdder源码深入分析1.1 初识LongAdder1.2 LongAdder源码分析1.2.1 LongAdder结构是怎么样的呢?1.2.2 当前线程访问的是Cells数组里面的哪一个元素呢?1.2.3 Cells数组如何初始化,如何扩容,以及如何解决冲突?J...
2019-12-30 17:13:43 268
原创 JAVA并发编程(十三)JUC下原子变量操作类AtomicLong源码分析
JAVA并发编程(十三)JUC下原子变量操作类AtomicLong源码分析JAVA并发编程(十三)JUC下原子变量操作类AtomicLong源码分析1.1 什么是原子变量操作类?1.2 AtomicLong源码分析1.2.1递增递减操作1.2.2 boolean comapreAndSet(long expect , long update)方法1.2.3 简单应用实例JAVA并发编程(十三)J...
2019-12-28 15:34:42 355
原创 JAVA并发编程(十二)Random类和ThreadLocalRandom类原理剖析
JAVA并发编程(十二)Random类和ThreadLocalRandom类原理剖析JAVA并发编程(十二)Random类和ThreadLocalRandom类原理剖析1.1 Random类源码分析1.2Random类的局限性2.1初识ThreadLocalRandom类2.2ThreadLocalRandom源码分析JAVA并发编程(十二)Random类和ThreadLocalRandom类原...
2019-12-27 16:30:17 541
原创 JAVA并发编程(十一)锁的概述
JAVA并发编程(十一)锁的概述JAVA并发编程(十一)锁的概述1.1公平锁与非公平锁1.2独占锁与共享锁1.3可重入锁1.4自旋锁1.5悲观锁和乐观锁JAVA并发编程(十一)锁的概述1.1公平锁与非公平锁根据线程获取锁的机制,所可以分为公平锁和非公平锁。如果我们不看概念,光从字面上理解,其实也并不难理解。也就是一个锁对于线程来说是公平,另一个是不公平的。公平锁表示线程获取锁的顺序,是按照线...
2019-12-25 16:38:30 230
原创 JAVA并发编程(十)JAVA伪共享
JAVA并发编程(十)JAVA伪共享1.1什么是伪共享1.2为什么会出现伪共享1.3伪共享如何避免1.1什么是伪共享为了解决计算机系统主内存与CPU之间运行速度差的问题,我们会在CPU和主内存之间加一级或者多级高速缓冲存储器(Cache)。这个Cache一般是被集成到我们的CPU内部的,所以也叫CPU Cache。下面有一幅图,可以帮助你理解哦。在Cache内部是按行存储的,其中每一行被称...
2019-12-24 16:25:47 268
原创 JAVA并发编程(九)Unsafe类和JAVA指令重排序
JAVA并发编程(九)Unsafe类和JAVA指令重排序1、Unsafe类1.1初识Unsafe1.2如何使用Unsafe1.3Unsafe中的CAS操作1.4Unsafe中的原子操作2、JAVA指令重排序2.1认识指令重排序1、Unsafe类1.1初识UnsafeUnsafe类它是用来干什么的呢?可能从名字上来看,他是一个不安全的类。那为什么不安全呢?这个类不安全为什么又要使用呢?可能有一...
2019-12-23 16:05:52 436
原创 JAVA并发编程(八)原子性与CAS操作、ABA问题
JAVA并发编程(八)原子性与CAS操作、ABA问题1、JAVA的原子性操作1.1简单例子2、JAVA的CAS操作3、JAVA的CAS操作中的ABA问题1、JAVA的原子性操作 什么是Java的原子性操作呢?可能很多人都会问。一般得到的回答肯定是这样的:执行一系列操作的时候,这些操作要么全部执行,要么全部不执行。不存在这些操...
2019-12-21 16:50:28 348 1
原创 JAVA并发编程(七)synchronized、volatile内存语义及内存可见性
JAVA并发编程(七)synchronized、volatile内存语义及内存可见性1、JAVA中的线程安全的问题2、JAVA中的共享变量的内存可见性的问题3、synchronized介绍(不深入JVM探讨)4、volatile介绍1、JAVA中的线程安全的问题2、JAVA中的共享变量的内存可见性的问题3、synchronized介绍(不深入JVM探讨)4、volatile介绍...
2019-10-31 14:47:19 391
原创 JAVA并发编程(五)用户线程、守护线程
JAVA并发编程(五)用户线程、守护线程1、什么是用户线程与守护线程?2、举例说明两者区别3、两个注意点1、什么是用户线程与守护线程? 守护线程是一种特殊的线程,在后台默默地完成一些系统性的服务,比如垃圾回收线程、JIT线程都是守护线程。与之对应的是用户线程,用户线程可以理解为是系统的工作线程,它会完成这个程序需要完成的业务...
2019-10-26 14:08:08 283
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人