自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java并发编程之-CAS详解

乐观锁,悲观锁悲观锁每次获取数据都很悲观,觉得会有人同时修改,所以每次在拿数据的时候都会上锁。也就是共享资源每次都只给一个线程使用,其他的线程会阻塞着,当第一个线程执行完后再让出资源给其他线程,synchronized和ReentranLock 采用的都是悲观锁的思想乐观锁每次获取数据的时间都很乐观,认为不会被人修改。因此每次操作都不会上锁。只是在更新的时候去判断在这期间内有没有人去更新过这个数据,如果有就重新获取,并在此进行判断,一直循环执行,直到拿到没有修改过的数据。CAS就是乐观锁的一种实现方

2020-08-25 00:47:04 223

原创 Spirng MVC简介及工作流程

为什么使用Spring MVCSpirng MVC是一种实现了MVC涉及模式的轻量级WEB框架,使用了MVC的架构思想,将web层的职责进行解耦,简化开发。什么是MVC设计模式MVC即Model-View-Controller,将程序按照Model,View,Controller进行分离。View:代表与用户交互的界面,对于Web程序来说,可以使HTML,也可以使JSP,XML等,每个应用可以有多个不同的视图,MVC设计模式对于视图的处理进行与视图上数据的采集和处理,和用户的请求,而不包含视图上的业

2020-08-24 00:24:52 199

原创 线程池的应用及核心原理详解

线程池是什么线程池是值提前创建好若干的线程,让有任务需要处理时,就会分配线程池中的线程去执行这些任务,让任务在执行完成后也不会销毁这个线程,而是会由线程池进行管理,继续等待下一任务提交到线程池。由于创建和销毁线程池都是消耗系统资源的,所以有业务需要频繁的创建线程时,就可以使用线程池来管理这些线程。使用线程池的好处1:降低系统资源消耗,通过重复利用已创建的线程执行任务,降低频繁创建销毁线程造成的资源消耗。2:提高系统的响应速度,当有任务提交到线程池时可以直接分配线程执行,不需要再去创建线程。3:提高

2020-08-19 22:32:39 214

原创 一文带你了解什么是Redis缓存雪崩,缓存击穿,缓存穿透及其解决方案

本次我们来聊一下面试中关于Redis的高频面试题,缓存雪崩,缓存击穿,缓存穿透;缓存雪崩假设服务器每秒处理五千并发,其中四千个请求都是读操作,一千个写操作,使用缓存将四千个读操作缓存起来,避免了大量请求同时请求数据库,保证了系统的安全,但是突然redis服务器宕机了,导致所有的请求都直接请求了数据库,从而导致DB承受不住并发然后挂了,接连导致系统不可用。这就是缓存雪崩。解决方案事前:redis实现高可用,主从+哨兵,或 集群模式,避免redis宕机。事中:本地缓存+程序内实现限流,避免大量请求同时

2020-08-18 23:10:48 208 1

原创 详细分析JVM运行时数据区

运行时数据区Java程序在运行期间,会产生各种类型的数据,而这些运行时的数据就会存储到JVM中的运行时数据区。根据JVM规范,将内存共分为 程序计数器,虚拟机栈,本地方法栈,堆,方法区 五个部分程序计数器程序计数器也叫做PC寄存器,它存储了指令相关的信息。它是内存中很小的一块区域,与其他数据区相比是运行速度最快的区域。主要的作用就是存储指向下一条要执行指令的地址,执行引擎会获取到下一条指令,然后执行。由于Java是支持多线程执行的,但是CPU同一时刻只能执行一个线程,CPU就是通过不停的切换时间片

2020-07-31 01:43:48 280

原创 深入理解JVM类加载流程

类加载器基本概念顾名思义,类加载器就是用来加载Java类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:.java文件在经过编译器编译后转换成字节码的.class文件。类加载器负责读取.class文件并转换成 Class 类的一个实例。每个这样的实例用来表示一个 Java 类,通过new 或 类的newInstance 就可以创建出该类的对象。实际的情况可能更加复杂,比如 Java 字节代码可能是通过工具动态生成的,也可能是通过网络下载的Java的类加载流程java的

2020-07-28 23:20:24 342

原创 深入理解Java的类加载器及双亲委派机制

当我们在写完一个Java文件的时候,编译器会将.java文件编译成.class文件,然后当程序运行时,JVM首先会找到main方法所在类,并将main所在类的class文件字节码读到内存中,转换成JVM运行中运行时对应的Class对象,而执行这个加操作的就是类加载器(Classloader)。类加载器的分类Bootstrap ClassLoader:启动类加载器负责将放在<JAVA_HOME>\lib目录中的,或被-Xbootclasspath参数所指定的路径中的,并且是虚拟机识别的类库加

2020-07-28 00:01:38 127

原创 MySQL架构及原理详解

Mysql的架构可分为两层:Server层和存储引擎层。Server层:包含连接器,缓存,分析器,优化器,执行器,包含MySQL大多数核心的功能及内置函数;存储引擎层:主要负责数据的存储和提取,是基于插件的形式的架构,支持InnoDB,MyISAM等存储引擎;5.5.5后默认使用InnoDB作为默认的存储引擎。在创建表的时候不指定引擎,默认就是InnoDB,也可以通过engine=memory来指定使用的存储引擎。Server层Server层是MySQL的基础架构,包含了MySQL的大多数核心功能及

2020-07-26 02:07:28 280

原创 Redis主从同步原理及实战详细讲解

主从模式与MySQL主从复制的原因一样,Redis虽然读写的速度非常快,但是当读请求较多时也会产生较大的压力,为了分担读Redis的压力,Redis支持了主从复制的架构,从节点可以分担主节点的读压力,Redis的主从复制可以根据是否是全量,分为全量同步和增量同步。配置方式在Slave节点的配置文件中加上slaveof ip:port #主节点的地址全量同步全量同步发生在slave初始化的阶段,这个阶段slave需要将master上所有的数据都复制到本节点上,全量同步的步骤:1:从节点连接

2020-07-24 00:01:11 239

原创 超详细!Redis入门详解!

什么是Redis​ Redis 是完全开源免费的,使用C语言编写的高性能NoSQL(非关系型数据库)数据库。基于Key-Value键值对的形式来存储数据, 其中Key是String类型,Value的类型较为丰富,下面我们专门介绍数据类型。​ 与传统数据库不同的是Redis中的数据都是存储在内存中,所以读写效率非常高,并且数据还支持持久化,以及支持主从复制,集群,哨兵等多种架构模式。Redis与Memcached的区别先简单的介绍下Memcached的特点:​ Memcached与Redis相

2020-07-14 15:47:13 250

空空如也

空空如也

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

TA关注的人

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