自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 java 之分布式锁-redis-Redisson-Zookeeper 不同方式实现

Redis 实现分布式锁原理采用Setnx 命令 为 key 设置指定的值,设置成功,返回 1 。 设置失败,返回 0如何考虑避免死锁问题设置锁的过期时间,避免死锁问题Redis key过期了,但是业务还没有执行完毕如何处理采用续命设计:获取锁成功之后,开启一个续命的线程,检测如果当前业务逻辑还没有执行完毕的情况下,应该不断的延迟过期key的时间,防止死锁 ,限制次数,并且回滚事物Redis集群,主节点宕机如何处理Redis集群数据同步改为同步的形式;效率偏低Redisson实现分布式

2021-11-17 18:19:36 1577

原创 java-之分布式任务调度xxl-job

调度中心(xxl-job-admin)作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。一致性:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行;调度器 一主多从的形式运行的调度中心集群调度中心支持集群部署,提升调度系统容灾和可用性。调度中心集群部署时,几点要求和建议:1 DB配置保持一致;2 集群机器时钟保持一致(单机集群忽视);建议:推荐通过nginx为调度中心集群做负载均衡,分配域名。调度中心访问、执行器回调配置、调用API服

2021-11-16 21:51:03 1132

原创 java-之分布式数据同步方案

Mysql与Redis缓存一致性原Mysql与Redis缓存一致性原理理1.canal服务器模拟伪装成mysql从节点,订阅mysql 主节点的binlog文件;2.当mysql主节点binlog文件发生变化的时候,会通知给canal服务器端;3.Canal服务器端在将该binlog文件转换为json格式数据发送给canal客户端监听者。4.canal客户端,在将该数据异步写入到mq中 然后在同步到redis中;...

2021-11-16 15:22:05 799

原创 java-之分布式事物解决方案

RPC接口幂等问题Insert类型数据库表字段中根据全局id设定唯一主键 防止重复插入update类型使用乐观锁+版本号码实现控制分布式事物解决方案lcn事物原理怎么判断发起方和参与方:是否有分组id1 发起方与参与方与我们的LCN管理器全局事务协调者一直保持长连接;2 发起方在调用接口之前会使用Aop生成一个全局的事务分组id,并且发送给事物协调者;3.当我们发起方调用接口的时候,会再请求头中设置该事务全局分组id;4 参与方从请求头中获取到该全局分组id,数据源事物就不会提交5

2021-11-15 20:44:26 418

原创 mysql-事物隔离级别-mvcc多版本控制原理

解决mysql行锁mysql 事物没提交或者回滚,会让行锁没释放,可以查询当前事物表 然后kill 结束掉锁;mysql事物隔离级别读未提交(READ UNCOMMITTED)A事物能读到B事物未提交的数据,可能会产生脏读。读已经提交 (READ COMMITTED)A事物只能读到B事物已经提交的数据,可以避免脏读。可重复读 (REPEATABLE READ)(innerDB默认)A事物开始读到B事物的数据,后面就一直是这个数据。串行化 (SERIALIZABLE)变成单线程,一个事物一

2021-11-12 20:56:30 1037

原创 分布式框架组件源码解读-eureka-nacos-feign-gateway

eureka原理服务注册EurekClient端会调用EurekServer端的接口吧自己的信息当做参数传过去,EurekServer 拿到信息放到ConcurrentHashMap中存放,然后返回204代表成功;ConcurrentHashMap<String, Map<String, Lease>> registryEureka服务续约(心跳)EurekClient是正常关闭会向EurekServer发送一个通知剔除该服务EurekClient非正常关闭Eurek

2021-11-08 23:19:32 142

原创 jvm cpu飙升问题 以及 内存诊断工具

1 cpu飙升问题的可能出现的原因Tomcat 出现死锁 或者 高并发的时候定时任务 或者 是循环的时候 或者批量操作的时候被注入挖矿程序 比如redis c语言 根据6379端口号注入 (可以设置外网不能 )分布式锁 乐观锁 的重试机制 设置次数限制2 jvm 内存诊断工具1 Jps 命令 查看当前系统有那些java进程2.jmap -heap 进程id 命令 查看堆内存占用情况 (老年代 新生代 enden form to )3 Jconsole工具 图形界面管理 (可以检测死锁

2021-10-31 14:47:34 302

原创 jvm 类加载器-双亲委派机制

1.什么是类加载是什么将.class加载到JVM的呢?就是类加载器。2.类加载器类型1 Bootstrap ClassLoader(启动类加载器)加载$JAVA_HOME/jre/lib(底层C语言实现)2 Extension ClassLoader(扩展类加载器)加载JAVA_HOME/jre/lib/ext目录中的文件(或由System.getProperty(“java.ext.dirs”)所指定的文件)。 底层是Java实现3 App ClassLoader (应用类加载器)他加载

2021-10-29 16:40:30 67

原创 java 之 web系统优化

前端静态资源可以放第三方cdn里面采用前后端分离模式,后端只需要以josn格式返回需要的内容即可后端Lvs是四层负载均衡基于ip+端口实现负载均衡Nginx是基于应用层Http层实现负载均衡Lvs相比Nginx实现负载均衡抗负载能力更加强、稳定、配置低keepAlived(如果nginx宕机会帮助我们执行脚本重启)一系统集群然后利用Nginx+Lvs+keepAlived负载均衡二jvm 最大堆内存(Xmx) 和最小推内存(Xms)可以设置可以设置成一致 ,这样gc回收频率低三加缓

2020-05-16 16:25:24 171

原创 java 之 分布式微服务注册中心Eureka,Zookeeper,Nacos区别

Zookeeper主要采用CP保证数据的一致性的问题,当我们ZK领导者因为某种情况下部分节点出现了故障,会自动重新实现选举新的领导角色,整个选举的过程中为了保证数据一致性的问题,客户端暂时无法使用我们的Zookeeper,那么这以为着整个微服务无法实现通讯。...

2020-05-16 15:15:30 664

原创 java 之 笔记==============

public static void quickSortlhl(int[] arr,int index,int last) { if(index>last){ return; } int i=index; int j=last; int jiwei=arr[index]; int temp; while (i&l

2020-05-14 08:09:10 228

原创 java 之 elasticsearch

Elasticsearch优势横向可扩展性:只需要增加台服务器,做一点儿配置,启动一下Elasticsearch就可以并入集群。分片机制提供更好的分布性:同一个索引分成多个分片(sharding), 这点类似于HDFS的块机制;分而治之的方式可提升处理效率。高可用:提供复制( replica) 机制,一个分片可以设置多个复制,使得某台服务器在宕机的情况下,集群仍旧可以照常运行,并会把服务器宕机丢失的数据信息复制恢复到其他可用节点上。口使用简单:共需一条命令就可以下载文件,然后很快就能搭建一一个站内搜

2020-05-12 18:04:00 139

原创 java 之 zookeeper

注意:首先需要明确zookeeper选举的规则:leader选举,要求 可用节点数量 > 总节点数量/2 。注意 是 > , 不是 ≥。Zk集群节点总数为什么要是为奇数1.加入Zookeeper的集群节点为5的话,宕机几个Zookeeper节点之后剩余的节点个数大于宕机个数;也就是必须大于剩下服务器个数n(集群节点总数)/2,Zookeeper才可以继续使用2.无论是奇数还是偶数个数可以做选举leader的,如果是5台集群节点也就是最多只可以允许两台zk宕机;如果是六台zk集群节点那么也

2020-05-11 21:49:14 141

原创 java 之 分布式锁

基于Redis实现分布式锁思路1.获取锁多个不同的jvm 同时创建一个相同的标记使用Setnx命令,因为Rediskey必须保证是唯一的,只要谁能够创建成功谁就能够获取锁Set命令的时候:如果key不存在则创建,如果key已经存在则修改原值;SetNx命令: 如果key不存在则创建 返回1,如果已经存在则不执行任何操作返回01 不存在创建成功 0 已经存在 不执行任何操作。2.释放锁对我们的redis的key设置一个有效期(或者是主动删除该key)可以灵活的自动的释放该全局唯一的标记,其他的j

2020-05-09 15:30:13 118

原创 java 之 mybatis 一级 二级缓存

mybatis的一级缓存是SqlSession级别的缓存,在操作数据库的时候需要先创建SqlSession会话对象,在对象中有一个HashMap用于存储缓存数据,此HashMap是当前会话对象私有的,别的SqlSession会话对象无法访问。具体流程:1.第一次执行select完毕会将查到的数据写入SqlSession内的HashMap中缓存起来2.第二次执行select会从缓存中查数据,如...

2020-05-08 17:13:46 177

原创 java 之-Spring-SpringMVC-SpringBoot

什么是spring?spring注册bean有哪些方式?注解@Import(bean的id为当前类的全路径)@Bean(bean的id为当前类的名称以小写开头)实现ImportSelector,接口注册bean实现ImportBeanDefinitionRegistrar接口注册bean实现FactoryBean接口注册bean经常用的有@Controller@Service @...

2020-05-08 16:52:43 145

原创 java 之 hashmap

1.hashset 为什么不能重复?hashset 底层就是包装了hashMap ,其实就是用到了hashMap的Key不能重复的特征 从而实现了不能重复的功能1hashMap的初始容量是162.hashMap是如何解决hash冲突?底层是把hash冲突的值使用链表进行连接起来3.hashMap的key为null的时候放在哪的?固定的放在数组的第1个位置 (也就是0下标)4.hash...

2020-05-07 22:34:16 104

原创 java 多线程锁的深入化

1.什么是可重入锁当一个线程获取对象锁之后,这个线程可以再次获取这个对象的锁,而其他的线程是不可以的。synchronized 和 ReentrantLock 都是可重入锁。可重入锁的意义之一在于防止死锁。实现原理实现是通过为每个锁关联一个请求计数器和一个占有它的线程。当计数为0时,认为锁是未被占有的;线程请求一个未被占有的锁时,JVM将记录锁的占有者,并且将请求计数器置为1 。如果...

2020-04-20 14:11:49 165

原创 linux环境RocketMQ环境搭建以及springboot集成RocketMQ

1由于RocketMQ是有Java语言编写的所以要先安装jdk,以下为傻瓜式一键安装jdk1.8yum install -y java-1.8.0-openjdk-devel.x86_642.上传最新的RocketMQ安装包并解压(如果报错 -bash: unzip: 未找到命令,解决办法:yum install -y unzip zip)unzip rocketmq-all-4.6.0-...

2020-01-17 10:29:12 383

原创 RocketMQ--常用命令

RocketMQ–相关命令启动NameServer(进入到rocketmq目录执行)nohup sh bin/mqnamesrv & (后面加上& 表示后台启动)启动mqbroker(进入到rocketmq目录执行)nohup sh bin/mqbroker -c ./conf/broker.conf &查看pid的命令ps aux | grep Roc...

2020-01-15 17:08:07 235

原创 java 之 Redis 环境搭建-5种类型使用-持久化方式-数据结构原理

1

2019-12-06 17:55:10 198 1

原创 java 之 Netty 序列化 与 反序列化协议

《1》用对象的持久化的概念去理解 序列化 和 反序列化序列化就是把对象转换成字节文件然后在他它永久的保存在硬盘上 称为序列化反序列化也就是读取保存在硬盘上的字节文件然后转成我们的对象 称为反序列化《2》用网络传输对象的概念去理解 序列化 和 反序列化就是客户端将对象序列化为字节(序列化),变成二进制的形式发送到服务器端,服务器端接受到字节对象后,反序列化成对象(注意序列化的类必须...

2019-11-30 17:55:04 258

原创 java 之 Netty 粘包,拆包--原因 以及 解决方案

什么是粘包?多次发送的消息,服务器端(server)一次合并读取 就如下所示:消息一Msg 消息二Msg 最终变成了 msgmsg什么是拆包?多次发送的消息,服务器端(server)把某一个消息给拆开与例外一个消息合并了 就如下所示:消息一Msg 消息二Msg 最终变成了 消息一MsgM 消息二sg粘包,拆包 的原因?因为我们现在的tcp连接默认为长连接的形式实现通讯,发送请求之后...

2019-11-30 17:18:58 223

原创 网络编程 之 基础 Socket/Bio/Nio/tcp/udp/http

应用层:Http协议、电子文件传输、文件服务器等表示层:解决我们不同系统之间语法的通讯会话层:建立与应用程序之间的通讯传输层:提供了端口号和接口协议TPC/Udp网络层:为数据包选择路由 路由器、交换机定义了ip地址,可以根据ip地址找到对应的服务器数据链路层:传输有地址的帧以及错误检测功能物理层:以二进制形式,在物理机器上实现传输(光纤、各种物理介质传输)什么是Socket?so...

2019-11-13 14:34:14 233

原创 数据结构Hash、平衡二叉树、B树、B+树区别

数据结构Hash算法哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。优点:查找可以直接根据key访问缺点: 不能进行范围查找index=Hash(key)数据结构平衡二叉树算法平衡二叉查找树,又称 AVL...

2019-10-22 21:47:08 933

原创 java 之 RabbitMQ 面试题

1.消息队列RabbitMQ的五种形式队列1.点对点(简单)的队列2.工作(公平性)队列模式3.发布订阅模式(fanout)4.路由模式Routing (公司)5.通配符模式Topics (*号只可以匹配.后面一个词,#号可以匹配.后面多个词)2.Virtual Host:虚拟主机的概念,类似权限控制组,一个Virtual Host里可以有多个Exchange和Queue。3....

2019-10-21 12:10:31 113

原创 java 之 Spring Cloud 之 分布式事务

分布式事务产生的背景在微服务环境下,因为会根据不同的业务会拆分成不同的服务,比如会员服务、订单服务、商品服务等,让专业的人做专业的事情,每个服务都有自己独立的数据库,并且是独立运行,互不影响。服务与服务之间通讯采用RPC远程调用技术,但是每个服务中都有自己独立的数据源,即自己独立的本地事务。两个服务相互通讯的时候,两个本地事务互不影响,从而出现分布式事务产生的原因。举例并且画图说明传统项目...

2019-10-16 14:12:05 255

原创 开发接口的注意事项

1.要支持跨越2要考虑 移动端 和 pc端 是否有不一样的需求 接口就应该针对这两种类型的操作提供额外的支持。3通用的数据交换格式 json 本身没有Date类型 可能由于 不同环境, 不同平台,以及用不同的JSON解析库,转换后的结果经常会不同 所以跨越换车 string类型 或者 时间戳4安全问题...

2019-10-15 22:17:05 197

原创 java 之 SpringCloud 之 SpringCloud Bus 消息总线

1.什么是消息总线消息总线其实就是当你向一个服务发送消息的时候,它会以广播形式将消息推送给所有 在注册中心上所有的服务(也就是说刷新一个服务,所有的服务都会生效)2.SpringCloud底层默认支持哪几种mqRabbitMQ和Kafka3消息总线刷新配置的底层原理它底层会帮 注册中心上所有的服务创建一个队列并且绑定一个交换机,当你刷新某一个服务的配置文件时 这个服务会以生产者的身份用...

2019-10-15 21:48:09 304

原创 java中字符串的常用方法

//获取字符串长度 int strLenth=str.length(); //获取字符串指定位置的字符 char indexChar=str.charAt(0); //查找某个字符在字符串中首次出现的位置 int firstIndex=str.indexOf("1"); //...

2019-09-26 14:34:32 69

原创 vue.js

v-if vs v-showv-if 隐藏不占位 如果在运行时条件很少改变,则使用 v-if 较好。v-show 隐藏占位 如果需要非常频繁地切换,则使用 v-show 较好

2019-09-26 11:38:12 75

原创 java 之 内存结构-垃圾回收机制算-垃圾收集器

jvm运行时内存划分1.方法区:类的信息,常量,静态 (1.8前叫永久区)2.堆内存:new 出来的对象,数组,3.java栈 :基本数据类型,局部变量(每个线程独立栈)4.本地方法栈:java调用外部语言(c语言),方法使用native(CAS),安卓开发,应用层 java api 底层 C 语言 JNI5.程序计数器 :是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号...

2019-09-20 18:03:49 152

原创 java 之 jdk5,jdk7,jdk8新特性

Jdk5 :注解、泛型、for-eanch、并发包出现Jdk7 :switch中使用StringJdk8 :推出了Lambda、函数编程等。这里总结java8种新特性接口变化接口可以写普通方法 只需用 default 或者 static(不能被重写) 关键字修饰即可函数接口的出现什么是函数接口?在接口中定义唯一一个抽象方法 或者 用 @Functionalinterface注解...

2019-09-18 11:27:40 162

原创 java 之 单例模式 之 懒汉式-饿汉式-双重检验锁-......

饿汉式public class Singleton1 { private static Singleton1 singleton1 = new Singleton1(); private Singleton1() { } public static Singleton1 getInstance() { return singleton1; ...

2019-09-16 15:05:26 322

原创 java 之 代理模式

1.什么是代理模式就是给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。就相当于我们生活中租房不是找 房东(原对象) 而是去找 中介(代理对象)2.为什么使用代理模式它可以在不修改别代理对象代码的基础上,通过扩展代理类,进行一些功能的附加与增强(例如Spring AOP中编写切面日志的时候)3.代理模式应用场景SpringAop、日志收集、权限控制、过滤器、RPC远程调...

2019-09-12 14:52:57 100 1

rocketmq-all-4.6.0-bin-release.zip

rocketmq-all-4.6.0-bin-release.zip资源包 免费下载 rocketmq-all-4.6.0-bin-release.zip资源包 免费下载

2020-01-15

空空如也

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

TA关注的人

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