自定义博客皮肤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)
  • 收藏
  • 关注

原创 彻底搞懂GC机制和GC算法

1. 分代堆中内存分为新生代和老年代,其中新生代又分为Eden区、(Survivor)fruom区、(Surviver)to区,大致如图:2. GC分类2.1 新生代垃圾回收器:Minor GC/Young GC2.2 老年代垃圾回收器:Mojor GC/Old GC2.3 整堆回收:Full GC(回收堆区和方法区)3. 垃圾回收算法复制算法:思想:将内存按容量分为两块,每次只使用其中一块,每次将其中一块存活的对象复制到另一块上去,再清空这块区域。这种方式不需要考虑内存碎片,只需要考虑

2020-08-17 23:15:42 1940

原创 JVM中的对象和引用详解

1. 对象的创建过程其中的步骤是:当虚拟机碰到一条new指令时,先检查对象是否被加载,如果未被加载,就先将class加载到运行时数据区;然后虚拟机为对象分配内存,分配内存有两种方式:内存空间如果不是碎片化的,内存中已经使用的和未使用的内存空间之间就有个指示器指针,分配内存就是挪动指示器的过程,这种方式称为指针碰撞(简单高效);内存空间如果是碎片化的,虚拟机就会维护一张记录哪些空间是空闲可用的,分配内存的过程就是更新这张列表的过程,这种方式称之为空闲列表(复杂)。分配内存的方式由垃圾回收器是否做内

2020-08-12 00:09:25 714

原创 java常量池详解

java常量池分为Class常量池、运行时常量池和字符串常量池Class常量池class文件中除了类的版本、字段、方法、接口等信息等,还有class常量池,它用于存放编译阶段生成的各种字面量和符号引用。字面量: 给基本类型变量赋值的字面量或者说是字面值,如int i = 6;String str = “abc”,这里的6和“abc”都是字面量;符号引用: Java程序在编译成class文件时,虚拟机并不知道类(接口)、类中引用对象、字段名称和描述符、方法名称和描述符的实际地址,就用符号引用来代替,

2020-08-09 22:12:41 239 3

原创 JVM内存结构,看这篇就够了

JVM JRE JDKjava程序在经过javac编译成.class文件后,需要JVM将这些字节码文件放到方法区翻译成机器码让执行引擎来执行,随后JVM调用操作系统函数完成操作。JVM是一个将class翻译成机器码。在生成机器码的过程中需要依赖很多类库(jar包)。JVM标准加上这些类库就组成了JRE(java runtime environment)。但是对代码的编译 反编译 调试 打包等等操作就需要用到JDK。其实JVM是一个虚拟化的操作系统,在理解JVM时将他和Windows或Linux操作系

2020-08-09 21:18:21 289

原创 springcloud feign调用服务踩坑!!

用springcloud开发的时候,遇到了个坑:服务端传递的数据(一个对象),客户端接收不到客户端(原错误写法):@RequestMapping("/student/addStudent") public void insStudent(Student student);服务方(原错误写法):@RequestMapping("/addStudent") @Response...

2020-03-20 13:13:47 1499

原创 java中AQS详解

AQS:AbstractQueuedSynchronizer(抽象队列同步器),AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,了解了AQS基本就了解了java同步机制。AQS源码解读1 AQS的设计模式:模板方法模式。2 AQS中方法:模板(框架)方法:独占式获取同步状态方法:accquire(忽略中断)acquirelnterruptibly(能响应中断...

2020-01-04 22:48:51 561

转载 ThreadLocal源码解析

ThreadLocal类维持线程封闭性除了Ad-hoc封闭和栈封闭,更规范的方法是使用ThreadLocal,这个类是java lang包下的一个类。他能使线程中的某个值与保存值的对象关联起来。ThreadLocal提供了get set等访问接口或方法,这些方法为每个使用该变量的线程都存有一份独立地副本,因此get总能返回由当前执行线程在调用set时设置的最新值。源码分析set方法: /...

2019-10-22 20:17:21 175

转载 解决hash冲突的几种方法(转)

1.开放定址法这种方法也称再散列法,其基本思想是:当关键字key的哈希地址p=H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突的哈希地址pi ,将相应元素存入其中。这种方法有一个通用的再散列函数形式:Hi=(H(key)+di)% m i=1,2,…,n其中H(key)为哈希函数,m 为表长,di称...

2019-09-21 10:36:01 183

原创 记一次java开发技术面试

约好的下午两点的电话面试,等了半个小时,等待的过程还真有点紧张,毕竟这家公司是我挺想去的几家之一,到了两点零3分,电话如期而至了。面试官开口就表明了他的身份,还道了个歉说晚了几分钟听不好意思,然后让我开始自我介绍,可能他听我说话时语气有点急促和拘谨,特意提示了下说介绍一下你自己和你的技能及项目经验或者课设。我做完了简短的自我介绍后,问:从你的项目介绍和技能中,感觉你是前后端都会的会吧?答:是...

2019-09-20 18:12:56 291

转载 对象序列化为什么要设置SerialversionUID

今天笔试时碰到一个题,是问对象序列化为什么要设置SerialversionUID,当时以为是多次序列化同一对象序列化号的问题,随便扯了一大堆,回到宿舍号查了一下,有了正确的答案:在java对象序列化时,如果没有设置SerialversionUID,他会给一个默认的值,但是通常是建议设置默认的建议自定义一个serialVersionUID,因为默认的serialVersinUID对于class的细...

2019-09-20 07:47:15 689

转载 进程和线程

今天笔试题中有一道题是问进程和线程的区别,感觉自己答的不完整,回寝室后查了一下,避免以后的踩雷。1.进程是资源分配的最小单位,线程是程序执行的最小单位。2.进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开...

2019-09-17 22:08:55 198

原创 不会还有人不会synchronized吧?

每个锁关联一个线程持有者和一个计数器。当计数器为0时表示该锁没有被任何线程持有,那么任何线程都都可能获得该锁而调用相应方法。当一个线程请求成功后,JVM会记下持有锁的线程,并将计数器计为1。此时其他线程请求该锁,则必须等待。而该持有锁的线程如果再次请求这个锁,就可以再次拿到这个锁,同时计数器会递增。当线程退出一个synchronized方法/块时,计数器会递减,如果计数器为0则释放该锁。...

2019-09-17 20:16:45 332

原创 java新增的NIO

新IO采用内存映射文件的方式来处理输入输出,新IO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件,通过这种方式来进行输入输出比传统的输入输出要快得多channel(通道)和buffer(缓冲)是nio中的两个核心对象:所有的数据都要通过channel来传输,它提供了一个map()方法,可以直接将一块数据映射到内存中所有发送到channel中的对象都必须先放到buffe...

2019-09-17 20:10:46 210

原创 java六大存储区域

1 寄存器(register):位于处理器内部,最快的存取区2 栈(stack):位于RAM中,这是一种快速有效的分配存储方法,仅次于寄存器,对象引用存储在栈中创建程序时候,JAVA编译器必须知道存储在堆栈内所有数据的确切大小和生命周期,因为它必须生成相应的代码,以便上下移动堆栈指针。3 堆(heap):位于RAM中,存放所有new出来的java对象,堆不同于栈的好处是:编译器不需要知道要...

2019-09-17 19:51:27 412

转载 java中==和equels()及hashcode()

1 ==:1.1如果比较的是基本数据类型,值相同就返回true1.2如果比较的是引用数据类型,引用对象所指向的内存地址相同就返回true,但是有一个例外就是Integer对象,在Integer对象中,系统会把[-128,127]区间内整数自动装箱成Integer实例,并放入一个叫做cache的数组中,所以在这个数组内的对象比较会返回true。例如:Integer a1 = 10;Intege...

2019-08-29 09:41:39 254

空空如也

空空如也

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

TA关注的人

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