自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 类加载过程(双亲委派模型)JVM内存模型以及垃圾回收机制算法(二)

上篇文章我们主要讲了类加载过程,双亲委派模型,和JVM内存模型,本篇文章我们主要讲垃圾回收算法,垃圾回收器,通过上篇文章,我们知道JVM内存主要包括五大块:1. 堆内存,2. 方法区(元空间),3. 本地方法栈,4. 虚拟机栈,5. 程序计数器,其中,堆内存是最大的一块,而且我们new的对象就在堆内存中开辟内存,因此,堆内存可以说是JVM中最重要的一块,因此,垃圾回收就是针对堆内存的,现在我们就来讲讲垃圾回收。1. 堆内存模型JDK1.8及以前,我们的堆内存的结构是分代模型,如上图所示,即分为新生代和老

2021-04-26 17:14:30 413 3

原创 类加载过程(双亲委派模型)JVM内存模型以及垃圾回收机制算法(一)

本文我们将讲解JVM的内存模型和垃圾回收算法,由于内容较多,我们分为两篇文章进行讲解,其中,第一篇文章将讲解JVM内存模型及类加载器。第二篇文章讲解垃圾回收算法,相当于将一个对象从产生、使用到销毁的全流程全部进行解析。jvm类加载过程从上图可以看出,就是我们一个java文件的加载过程,从最初始状态的java文件,通过javac命令编译转化成class文件,我们的jvm只是识别class文件,class文件通过ClassLoader类加载器加载对象,当然我们的代码里面可能引入的java类库中的包,也

2021-04-22 18:51:37 370

原创 通俗易懂的理解为什么重写了equals,必须重写hashcode

在实际项目中或者面试中我们经常能遇到,重写equals,就必须重写hashcode,很多小伙伴不知道为什么,本文就来通俗易懂的讲解一下这么操作的原因。我们先说两条规则:两个对象的hashcode相等,两个对象不一定相等 Integer a = 97; String b = "a"; // 结果为true System.out.println(a.hashCode() == b.hashCode()); // 结果为false System.out.println(a.equals(b))

2021-04-14 13:57:04 340

原创 docker初级使用讲解-so easy

什么是dockerdocker是一个轻量级的容器引擎,使用方便,一键部署,到处使用,传统部署方案我们需要将服务打包上传至服务器,然后依次启动,如果有多台服务器,则要依次执行打包->上传->部署多次,非常耗时,而使用docker部署的话,我们只需要部署一次,然后将生成的镜像上传至docker仓库,其他服务器需要部署时只需要将镜像拉取下来直接启动即可,省时省力,方便快捷,这可是docker如今非常火的原因。docker三大件说到docker,就必须要说说docker的重要的核心的三个组..

2021-04-13 18:20:08 248 1

原创 接口幂等性实现思路原来这么简单

什么是接口的幂等性幂等性:简单来说就是多次请求返回相同的结果,多次操作和一次操作的影响是一致的。幂等性应用场景2.1 表单多次提交2.2 恶意攻击2.3 消息发送2.4 创建订单如何保证接口幂等性一般我们接口操作分为四种:3.1 查询查询操作是天然的幂等操作,无论执行多少次,结果都是一致的,查询一次和查询多次影响是一样的。3.2 删除如果不考虑返回结果,删除操作也是幂等的,删除一次和多次删除没有什么影响。3.3 新增新增操作不是幂等性操作,新增一次和新增多次结果是不一..

2021-04-13 15:27:10 128

原创 监控利器之使用JConsole轻松监控JVM运行情况

jdk本身给我们提供了两种工具用于监控JVM运行情况,其中一个是Jconsole,还有一个是jvisualvm,这两个工具都安装在jdk的bin目录下:本文我们使用jconsule来监控jvm的运行情况。启动项目首先我们看一下项目的tomcat基本配置信息:端口号为60021,tomcat最大线程数为200,最小线程数为10现在我们启动项目:项目已经启动了,接下来我们去查看jconsole的运行情况查看jconsole在jdk的bin目录下,我们双击jconsole.exe就可

2021-04-13 10:51:16 643

原创 分布式系统如何生成全局唯一id

我们知道,分布式系统,不同的服务部署在不同的机器上,当多个系统同时操作数据库的时候,可能存在id是冲突的情况,此时就产生了一个问题,分布式系统下,如何保证生成的id是唯一的。分布式系统生成全局唯一id一般有四种策略,个人建议使用后面两种:uuid我们知道uuid是不会重复的,所以分布式系统下我们可以使用uuid作为全局唯一id,但是uuid是字符串,且不能排序,如果我们要生成订单编号且要进行排序,此时uuid就不能满足使用场景了。使用mysql数据库时设置步长和初始值我们知道mysql数据库的主

2021-04-12 16:11:26 1221

原创 最新rabbitmq使用讲解

rabbitmq结构:如上,就是rabbitmq的模型,生产者生产消息投递到交换机,交换机将消息推送给不同的队列,队列和消费者进行绑定,消费者消费队列里面的消息。rabbitmq有五种工作模式:简单模式:一个生产者,一个消费者,一个队列工作模式:一个生产者,多个消费者,一个队列,但是每个消息只能消费一次,即每个消费者消费模式是轮询机制,循环消费订阅模式:一个生产者,多个消费者,每个消费者获取到的消息是一样的,即广播模式路由模式:发送消息到交换机并且要指定路由key ,消费者将队列绑定到交换机

2021-04-12 14:49:09 306 1

原创 非常简单清晰的悲观锁和乐观锁原理解析

什么是悲观锁,什么是乐观锁?悲观锁:顾名思义就是比较悲观的,就是对程序进行加锁处理,一次只有一个线程能进行操作,保证线程的安全性。乐观锁:顾名思义就是乐观的,乐观锁实际并没有加锁,是通过程序控制来保证线程的安全性的。悲观锁和乐观锁对比对比:悲观锁是重量级锁,乐观锁是轻量级锁。悲观锁效率低,乐观锁效率高。悲观锁是通过实际加锁来控制程序运行,乐观锁是通过程序控制来保证线程安全的。悲观锁原理悲观锁是属于重量级锁,是通过对程序加锁来保证线程的安全性的,比如我们常用的synchroniz..

2021-04-12 11:14:54 666

原创 轻轻松松半小时搞懂两种分布式锁(redis,zookeeper)实现及原理

分布式锁讲解:在讲分布式锁之前,我们先了解一下什么是分布式锁,为什么要使用分布式锁。什么是分布式锁?分布式锁是在分布式系统中所使用的一种锁机制,是作用于多个JVM之间的锁机制。为什么要使用分布式锁?为了防止在分布式系统中,多个JVM操作同一块资源而造成资源协调问题,例如上图。3. 分布式锁实现原理其实所有的锁实现原理都是一样的,分三步走:第一步:获取锁第二步:等待获取第三步:释放锁只是不同的中间件基于各自的特点,写法不一样,但是实现思路基本是一致的,比如基于redis,由于red

2021-04-09 15:14:00 648 6

原创 简单白话文解析redis,快速了解redis的秘密

我们都知道,redis是单线程的,所以redis是线程安全的,但说到这,就有很多人不明白了,既然redis是单线程的,为什么还可以支持高并发,读写的效率特别高,是如何实现的,不知道大家发现了没,redis官方只提供了linux版本的安装包,没有windows版本的,别急,下面我将用最简洁的语句给大家解析一下。 1. redis请求解析图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210409135139899.png?x-oss-process=...

2021-04-09 14:12:13 371 4

原创 HTTPS请求和HTTP请求原理

https默认端口号 443http默认端口号 80https和http对比:安全性:https相对于http请求安全性高,因为https采用的是混合加密算法(对称加密和非对称加密混合),http采用的是明文传输。效率:http效率相对于https高,因为https请求请求链长。对称加密:加密和解密使用同一个秘钥,比如:DES,AES非对称加密:有一对秘钥,公钥和私钥,公钥一般是公开的,存储在客户端,私钥存储在服务器端,使用公钥加密,私钥解密,比如:RSAhttps请求解析:流

2021-04-08 18:37:58 227 1

原创 详细精讲redis主从+哨兵以及redis-cluster两种模式部署方案(最详细)

redis官方目前提供了两种部署方案:1.主从+哨兵主从模式是为了高可用,采用一主(master)多从(slave)的部署方案,主写从读,实现读写分离哨兵是为了保证服务不宕机,帮助选举,所有的哨兵全部监听主机,只要主机宕机,哨兵就会进行选举,选出新的主机出来。2.redis-clusterredis-cluster主要是为了提高并发量而产生的部署方案,采用多主多从(也可一主多从)的方式,提高写的效率,主机宕机,自动选举。无需引入哨兵。3.redis安装(大致说一下就行,我们的重点不在这里)re

2021-03-23 19:59:51 779

空空如也

空空如也

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

TA关注的人

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