自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM-虚拟机字节码执行引擎

文章目录虚拟机字节码执行引擎运行时栈桢结构局部变量表操作数栈动态链接方法调用解析分派虚拟机字节码执行引擎执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机 器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层 面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执 行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。解释执行:通过解释器执行,每次都需要解释,时间较快编译执行:

2020-07-26 17:03:20 288

原创 JVM-类加载

文章目录类加载的时机类加载过程加载类加载器双亲委派模型连接初始化类加载的时机一个类从被加载到虚拟机内存中开始,到被卸载出内存为止,他的整个生命周期会经历:加载 -》 连接 -》 初始化 -》 使用 -》 卸载6种情况下必须立即对类进行初始化,初始化只会执行一次遇到new,getstatic,putstatic,invokestatic四个字节码指令时,如果没有执行过初始化则先触发其初始化new对象读/写一个类的静态字段(除开final修饰的)调静态方法反射,没有初始化,必须先触发

2020-07-23 21:48:22 222

原创 JMV-GC

文章目录GC一,哪些内存需要回收引用计数法可达性分析法二,如何回收分代收集垃圾收集算法垃圾收集器三,对象内存分配和回收GC一,哪些内存需要回收判断对象是否存活有两个方法:引用计数法可达性分析法引用计数法流程:在对象中添加一个引用计数器,每当有一个地方引用他,计数器值就+1,每当引用失效,计数器值就-1,任何时刻计数器为0的对象就是不可能在被使用的。优缺点:优点:即使计数器占用一定内存,但是判定效率高缺点:无法解决循环依赖的引用计数判断,导致依赖对象永远无法回收可达性分析法基

2020-07-22 11:16:51 321

原创 JVM-Java内存区域

文章目录Java内存区域线程私有程序计数器虚拟机栈线程共享堆对象创建Java内存区域Java虚拟机会在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域线程私有线程私有区域是随着线程的创建而创建,随着线程的销毁而销毁,每个线程各自独立,互不干扰程序计数器作用:当前线程执行的字节码的行号指示器程序控制流的指示器此区域是唯一不会出现OOM的区域虚拟机栈虚拟机栈是Java方法执行的线程内存模型每个方法执行时,Java虚拟机栈都会同步创建一个栈桢(存储局部变

2020-07-22 11:14:23 347

原创 并发编程-线程池

文章目录线程池线程池原理线程池分类线程池为什么需要使用线程池?线程的创建和销毁都需要消耗系统资源,线程池可以复用已有的线程线程也是对象,线程池可以复用线程对象,减低内存消耗可以控制并发数量,并发数量过多,可能会导致资源消耗过多可以对线程进行统一管理线程池原理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SmBclC3n-1595301423983)(https://raw.githubusercontent.com/chenxiao19920206/Red

2020-07-21 11:17:21 179

原创 并发编程-并发容器

文章目录并发容器阻塞队列BlockingQueue实现类ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueueSynchronousQueuecopyOnWrite容器CopyOnWriteArrayList并发Map并发容器阻塞队列BlockingQueue是JUC包下的重要数据结构,区别于普通队列,BlockingQueue提供了线程安全的队列访问方式,并发包下很多高级同步类都是基于BlockingQueue实现的Blocking

2020-07-21 10:56:40 331 1

原创 并发编程-AQS

AQS文章目录AQS一,简介二,AQS数据结构三,主要方法源码分析四,AQS实现类顶层锁接口ReentrantLockReentrantReadWriteLock一,简介AQS是抽象队列同步器抽象:抽象类,只实现了一些主要逻辑,有些方法由子类实现队列:使用先进先出队列存储数据同步:可以实现同步功能AQS是用来构建锁和同步器的框架,JUC包中很多同步工具类都基于AQS实现二,AQS数据结构AQS内部使用一个volatile变量state来作为资源的标识,同时定义了几个获取和修改sta

2020-07-20 17:31:39 283

原创 并发编程-Threadlocal

文章目录Threadlocal原理解析内存关系图主要方法内存泄漏原因Threadlocalthreadlocal是一个创建线程局部变量的类threadlocal创建的变量只能被当前线程访问,其他线程无法访问和修改原理解析内存关系图每个thread内部有一个threadlocalMap ThreadLocal.ThreadLocalMap threadLocals = null;threadLocalMap内部其实是由entry数组构建的map,每个entry的key是threadloc

2020-07-20 11:07:38 179

原创 Git多人协作

Git多人协作每次项目都是使用的git,整理下多人协作时git的流程。以一个在Gitlab上的TestProject作为例子首先创建远程库在对应的Git代码管理平台上创建一个项目,比如Gitlab,就new出一个项目如果本地没有版本库,也没有项目文件直接使用如下命令:git clone git@gitlab.com:dolphin/testproject.gitcd test...

2020-07-19 01:38:15 184

原创 并发编程-基础

并发基础一,进程和线程1.1 进程和线程的定义进程是程序的一次执行过程,程序是静态的,进程是动态的线程是一个比进程更小的执行单位,一个进程在执行过程中可以产生很多线程,每个线程都有自己独立的程序计数器,栈,也可以共享进程内的堆和方法区,进程之前的切换开销比线程大1.2 进程和线程的关系,区别关系操作系统内存中可以存在多个进程,让操作系统并发成为了可能线程在进程内可以存在多个,同时处理多个进程子任务,让进程内部并发成为了可能区别:进程拥有独立的内存地址空间,进程和进程之间的内存地

2020-07-19 01:37:28 426

原创 并发编程-JMM

Java内存模型一,并发编程痛点并发编程有两个痛点问题需要解决:线程通信:线程之间通过何种机制来实现数据交互线程同步:线程通过何种机制来保证线程之间操作的相对顺序二,JMM2.1 JMM基础JMM定义了线程和主内存之间的抽象关系:(类似于操作系统中主内存和CPU缓存和CPU的关系)Java线程之间的通信由JMM控制JMM定义了一套规范:共享变量都存放在主内存,每个线程拥有自己的工作内存,线程和线程之间的工作内存不可以互相访问,线程之间的通信必须通过主内存线程只能对自己工作内存中

2020-07-19 00:40:48 241

原创 并发编程-volatile

volatile前言复习volatile实现原理之前先复习下JMMCPU缓存和主内存的关系模型:CPU为了解决其运算速度和内存读写速度不匹配的矛盾,CPU运算速度比内存读写快超级多解决方法:高速缓存cpu附近有L1,L2,L3三级缓存,之后就是主内存,引入了三级缓存带来的就是缓存的一致性问题,需要用到缓存一致性协议去解决缓存一致性问题,如MESI缓存行在总结MESI缓存一致性协议前先看看缓存行的定义:缓存是分段的,一个段代表一个存储空间,即缓存行,也是CPU缓存中可分配的最小单

2020-07-19 00:36:40 142

原创 并发编程-synchronized

synchronized字节码层面Java提供了两种语义级同步:synchronized修饰方法synchronized代码块public class SyncTest { public void syncBlock(){ synchronized (this){ System.out.println("hello block"); } } public synchronized void syncMethod()

2020-07-18 16:26:49 151

原创 网易互联网,网易互娱 2021届校招内推开始啦

网易互联网,网易互娱 2021届校招内推均已开启,早投递早面试,欢迎各位加入网易的大家庭雷火 互娱 互联网是分开招聘的 互不冲突 机会也更大 冲呀~查进度可以通过私人邮箱:caikeren@corp.netease.com或者牛客私信或者在帖子下评论留言同时欢迎大家找我Java后端开发相关的问题,我这边也会在空闲时间积极回复大家!...

2020-07-16 11:18:51 860

原创 分布式锁

文章目录分布式锁一,为什么需要分布式锁二,分布式锁实现2.1 Redis实现分布式锁加锁解锁原理实现深入探索Redisson加锁解锁原理不足2.2 zookeeper实现分布式锁加锁解锁原理实现优缺点分布式锁一,为什么需要分布式锁在单台服务器系统中,我们在解决并发问题时常用本地锁(synchronized,lock)去处理,但是在集群部署下,本地锁只能在单实例下起作用,服务和服务之前不能保证并发线程安全,所以,针对分布式环境下的并发问题就需要用到分布式锁去解决。分布式锁特性:**互斥性:**分布

2020-07-15 12:41:37 317

go语言源码包

方便那些不能下的朋友们,这是go的包,本人官网下载

2019-05-03

空空如也

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

TA关注的人

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