自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Spring Cloud Sleuth整合Zipkin实现链路监控

1.分布式链路监控与追踪产生背景         在微服务系统中,随着业务的发展,系统会变得越来越大,那么各个服务之间的调用关系也就变得越来越复杂。一个 HTTP 请求会调用多个不同的微服务来处理返回最后的结果,在这个...

2020-05-24 10:46:25 17 0

原创 Hystrix实现熔断、降级、服务隔离

1.Hystrix简介 1.1 使用Hystrix实现服务隔离         Hystrix 是一个微服务关于服务保护的框架,是Netflix开源的一款针对分布式系统的延迟和容错解决框架,目的是用来隔离分布式服务故障...

2020-05-24 09:46:54 36 0

原创 布隆过滤器的原理和实现(Guava、Redis)

<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>...

2020-05-15 00:40:52 53 0

原创 SpringBoot整合Sharding-Jdbc

1.Sharding-Jdbc介绍 Sharding-Jdbc在3.0后改名为ShardingSphere它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用...

2020-05-14 23:37:06 52 0

原创 数组的实现

数组 /** * @author Administrator */ public class Array { /** * 定义整型数据data保存数据 */ public int[] data; /** * 数组容量 */ ...

2020-05-13 23:43:31 22 0

原创 Mycat查询原理、取模算法和枚举算法

1.取模算法 1.1相关配置文件 rule.xml <?xml version="1.0" encoding="UTF-8"?> <!-- - - Licensed under the Apache License, Version 2.0...

2020-05-11 21:37:13 1768 0

原创 Mycat入门和读写分离实战

1.什么是MyCat         MyCAT是一款由阿里Cobar演变而来的用于支持数据库,读写分离、分表分库的分布式中间件。MyCAT支持Oracle、MSSQL、MYSQL、PG、DB2关系型数据库,同时也支持MongoDB等非关系型数据库。 &nb...

2020-05-09 22:32:17 1821 0

原创 RabbitMQ消息应答模式、事务、公平转发

1.消息应答模式(手动、自动) 1.1应答模式         为了确保消息不会丢失,RabbitMQ支持消息应答。消费者发送一个消息应答,告诉RabbitMQ这个消息已经接收并且处理完毕了。RabbitMQ就可以...

2020-05-07 02:03:12 1345 0

原创 RabbitMq的安装和三种常用方式(direct,fanout,topic)

RabbitMq原理 请参考这篇文档和Springboot整合RabbitMq 1.Rabbit安装 1.安装Erlang 由于RabbitMQ依赖Erlang, 所以需要先安装Erlang。         从EPE...

2020-05-07 00:04:50 860 0

原创 Kafka原理以及SpringBoot整合Kafka

1.Kafka原理 1. brokers有多个broker组成,broker是指Kafka服务器(192.168.223.140就是其中的一个broker),上面三台Kafka服务器组成了Kafka集群 2. broker.id代表集群中broker的唯一性,不能重复 3. partions主题...

2020-05-05 16:53:46 347 0

原创 Kafka集群环境搭建

Kafka集群环境搭建 1.安装kafka集群,要确保安装zookeeper集群zookeeper安装方式 2. Kafka安装 3台虚拟机均进行以下操作: 2.1 解压下载好的kafka压缩包并重命名 cd /usr/local wget http://mirror.bit.edu.cn/ap...

2020-05-05 10:18:14 952 8

原创 Zookeeper搭建集群

Zookeeper集群环境搭建 1.每台服务器节点上安装jdk1.8环境 使用java -version命令测试 java -version 2.每台服务器节点上安装Zookeeper 1.下载并且安装zookeeper安装包 wget https://mirrors.tuna.tsingh...

2020-05-05 00:40:31 1835 13

原创 VMWare克隆虚拟机并修改为固定ip

1.选择我们要克隆的虚拟机,右键点击----管理----克隆,点后点击下一步 2.选择克隆类型,创建链接克隆虽然节约磁盘空间,但是原始虚拟机被删除后,无法使用,建议选择创建完整克隆,然后一直下一步等待完成。 3.重新生成MAC地址 4.修改为静态ip,查询当前ip信息 修改ip信息 cd /...

2020-05-03 23:42:42 202 0

原创 Redis的分布式锁

1.基于Redis的分布式锁 1.使用常用命令 SETNX SETNX key val当且仅当key不存在时,set一个key为val的字符串,返回1;若key存在,则什么都不做,返回0。 Expire expire key timeout为key设置一个超时时间,单位为second,超过这个时...

2020-04-11 00:12:36 183 13

原创 分布式锁的实现方案

1.什么是分布式锁 分布式锁一般用在分布式系统或者多个应用中,用来控制同一任务是否执行或者任务的执行顺序。在项目中,部署了多个tomcat应用,在执行定时任务时就会遇到同一任务可能执行多次的情况,我们可以借助分布式锁,保证在同一时间只有一个tomcat应用执行了定时任务 2.分布式锁的实现方案 1...

2020-04-10 23:40:11 157 0

原创 Zookeeper实现分布式锁

p ublic interface EtLock { /** * * 获取锁 */ void getLock(); /** * 释放锁 */ void unLock(); } /** * @author Adm...

2020-04-09 01:56:55 76 0

原创 ZooKeeper安装和创建修改删除节点

1.Zookeeper应用场景## 2.Zookeeper数据结构 3.Zookeeperan安装 1.上传zk并且解压 cd /usr/local/ tar -zxvf zookeeper-3.4.6.tar.gz mv zookeeper-3.4.6 zookeeper 2.修改zookee...

2020-04-09 01:13:43 39 0

原创 Redis雪崩和缓存穿透

缓存雪崩 缓存雪崩产生的原因 缓存雪崩通俗简单的理解就是:由于原有缓存失效(或者数据未加载到缓存中),新缓存未到期间(缓存正常从Redis中获取,如下图)所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机,造成系统的崩溃。 缓存失效的时候 解...

2020-04-04 22:27:15 39 0

原创 Redis-cluster原理和实践

Redis-cluster原理 1.概念原理          Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot(哈希槽),每个 Redis 实...

2020-04-04 15:18:14 55 0

原创 Redis 哈希槽概念

         Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 163...

2020-04-04 10:51:00 47 0

原创 redis事务原理和实践

Redis事务的概念:         Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插...

2020-04-04 10:01:28 32 0

原创 lvs+keepalived+nginx双机主从热备

1.相关名词介绍 1.1 LVS是什么?       lvs是一个开源的软件,可以实现传输层四层负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。 目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR...

2020-04-01 00:27:08 47 0

原创 JVM参数调优和垃圾收集器

1.常见参数配置 -XX:+PrintGC 每次触发GC的时候打印相关日志 -XX:+UseSerialGC 串行回收 -XX:+PrintGCDetails 更详细的GC日志 -Xms 堆初始值 -Xmx 堆最大可用值...

2020-03-25 01:08:35 42 0

原创 Java内存结构和常用垃圾回收算法

一.Java内存结构 内存结构图 Java堆(Java Heap) java堆是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。 java...

2020-03-25 00:02:20 46 0

原创 重入锁、读写锁、悲观锁和乐观锁、CAS无锁原理

一、重入锁 锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) 。这些已经写好提供的锁为我们开发提供了便利。 重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁...

2020-03-24 22:11:20 49 0

原创 线程池4种常用方式实现以及自定义线程池原理

1.什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序 都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。 第一:降低资源消耗。 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。 当任务到达时,任务可以不需要等...

2020-03-13 02:12:16 139 0

原创 Synchronized和Volatile的区别

1.多线程三大特性? 原子性、可见性、有序性 (1)什么是原子性?         即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 一个很经典的例子就是银行账户转账问题: 比如从...

2020-03-11 22:47:33 46 0

原创 RabbitMq的原理及四种常用方式(direct,fanout,topic)

1.RabbitMQ简介 在介绍RabbitMQ之前实现要介绍一下MQ,MQ是什么?         MQ全称是Message Queue,可以理解为消息队列的意思,简单来说就是消息以管道的方式进行传递。  ...

2020-02-26 01:11:54 63 0

原创 Vue入门-模板语法

1.Vue.js 安装 三种方式的使用:vue的安装 vue的原理:     vue中遵循mvvm,第一个m代表model也就是数据的意思,第二个和第三个代表vm也就是vue的实例,vm中分为:事件监听和数据绑定,第四个v代表view也就是视图的意思 2....

2020-02-15 22:48:04 77 0

原创 分布式session解决方案之一

1.分布式sesssion解决方案介绍 四种分布式解决方案 2.实现分布式session?     我们通过将用户信息存储到redis,登录信息只需要在redis查询即可,我们项目中使用redis的哨兵模式,保证了redis的高可用。 (1)随机生成...

2020-01-19 01:00:07 82 0

原创 Java-两次MD5加密

两次加密加密的是什么? 第一次客户端加密(前端加密)第二次服务端加密(后端加密) 第一次客户端加密方式:明文+固定盐值 第二次服务端:第一次前端传过来的密码+随机盐值 项目里面模拟的是登录查询的过程 整个过程分析如下:首先,第一次用户注册的时候输入框输入明文,然后前端再加固定盐值, 第二次前端传过...

2020-01-18 23:39:27 91 0

原创 redis哨兵模式原理及实现

1.什么是哨兵机制? 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒(Notification): 当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。 ...

2020-01-13 00:11:28 100 0

原创 SpringBoot配置多数据源(动态切换,主从复制,读写分离)

SpringBoot2.x整合多数据源,基于注解动态切换数据源,主从复制,读写分离,多数据源的事务处理 1.多数据源实现主从复制,读写分离? 这里介绍的是MYSQL的主从复制实现及其原理,数据源分为主从,主数据源用于写操作,从数据源用于读操作,实现了读写分离 MYSQL主从复制实现以及原理 2.在...

2020-01-09 00:25:46 281 0

原创 Mysql主从复制(读写分离)原理及实现

1.主从复制原理 (1)主数据库(master)在每个事务更新数据完成之前,主数据库(master)在二进制日志记录这些改变。 (2)从数据库(slave)开启一个I/O线程,读取主数据库(master)的二进制日志文件,然后写入到从数据库(slave)的中继日志。I/O线程会在maste...

2020-01-07 00:17:57 94 0

原创 Mysql慢查询定位并记录到日志

1.什么是慢查询?         MySQL默认10秒内没有响应SQL结果,则为慢查询 可以去修改MySQL慢查询默认时间 2.如何修改慢查询? --查询慢查询时间 show variables like 'long_query_time...

2019-12-26 22:14:53 26 0

原创 Java数组-动态数组实现增删

实现代码 package com.itmayiedu.pattern.day01; /** * @author Administrator */ public class Array<E> { /** * 未查找到指定元素 */ private...

2019-12-16 23:15:19 37 0

原创 nginx基础入门

1.基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 相应的配置(需要建立/data/www /data/bbs目录,windows本地hosts添加虚拟机ip地址对应的域名解析; 对应域名网站目录下新增index.html文件) 2.基于端口的虚拟主机,通过端口来区分虚拟主机—...

2019-11-05 01:31:03 56 0

原创 springboot2.0基于拦截器实现简单的登录

实现流程: springboot2.0以后实现自定义登录拦截器,首先要实现WebMvcConfigurer,再把我们定义的拦截器注册进去,对于没有排除定义的接口且没有登录的接口,返回给前端相应的信息。 1.实现WebMvcConfigurer接口,重写相应的方法 @Configuration pu...

2019-11-05 00:58:31 66 0

原创 Springboot使用lombok,全局异常,aop统一处理web日志

全局异常是入门案例 背景: 比如我们代码里面出现重复的异常需要捕获,每次都要重复写代码,有没有可以解决的办法,就诞生了全局异常捕获。 首先对相关注解说明: /** * 1. ControllerAdvice 的一个辅助类,最常用的就是作为全局异常处理的切面类 * 2.可以指定扫描范围,是指扫描...

2019-10-27 23:36:36 72 0

原创 并发编程之多线程线程安全(二)

1.什么是线程安全? 1.1为什么有线程安全问题?         当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。 案...

2019-09-08 23:29:35 260 0

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