自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小宝的博客

知识改变命运

  • 博客(17)
  • 收藏
  • 关注

原创 Java虚拟机08——Java内存模型与线程

硬件的效率与一致性绝大多数的运算任务都不可能只靠处理器“计算”就能完成,处理器至少要与内存交互,如读取运算数据、存储运算结果等。由于计算机的存储设备与处理器的运算速度有接数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存中,这样处...

2019-04-22 12:47:38 176

原创 Java虚拟机09——线程安全与锁优化

线程安全线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。java语言中的线程安全Java语言中各种操作共享的数据分为以下5类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立不可变(Immutable)不可变对象一定是线...

2019-04-22 12:45:39 205

原创 Java虚拟机07——类加载器与双亲委派模型

类加载器类加载器实现了通过一个类的全限定名来获取此类的二进制字节流,这个动作是放到Java虚拟机外部实现的,以便让应用程序自己决定如何去获取所需要的实现类。关于类的唯一性:只有加载它的类加载器和类本身一同确立其在Java虚拟机中的唯一性,即使这两个类来源于同一个Class文件,被同一个虚拟机加载,只要它们的类加载器不同,那这两个类就必定不同public class ClassLoadTes...

2019-04-12 17:07:14 199

原创 Java虚拟机06——类加载机制

虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性,Java里天生可以动态扩展的语言特性,就是以来运行期动态加载和动态连接这个特点实现的。类加...

2019-04-11 22:15:07 130

原创 Java虚拟机05——对象分配与回收策略

对象的内存分配基本规律有以下几条:大多数情况下就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配)。对象主要分配在新生代的Eden区上。如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中。对象的分配规则不是百分百固定的,其细节取决于当前使用的是哪一种垃圾收集组合,还有虚拟机中与内存相关的参数设置对象优先在Eden分配...

2019-04-09 13:05:06 223

原创 Java虚拟机04——垃圾收集器

主要介绍HotSpot虚拟机的垃圾收集器,这个虚拟机包含的所有收集器如图所示:可以看到,收集器之间是可以搭配使用的。下面介绍这些收集器的特性、基本原理和使用场景。在介绍之前先明确一个观点:直到现在为止还没有最好的收集器出现,更加没有万能的收集器,选择的是对具体应用最合适的收集器。串行收集器串行收集器是最基本、发展历史最悠久的收集器。它们的特点就是单线程运行及独占式运行,因此会带来很不好的用...

2019-04-07 22:40:16 97

原创 Java虚拟机03——垃圾收集算法

这里简要介绍几种垃圾收集算法的思想标记 - 清除算法该算法如同它的名字一样,分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象在标记完后统一回收所有被标记的对象这个算法其实已经过时了,但是后续的算法都是基于这种思路来的。它主要的不足点有两个:效率问题。标记和清理两个过程的效率都不高空间问题。标记清除后会产生大量不连续的内存碎片,空间碎片太对会导致程序运行过程中需要分...

2019-04-03 13:01:20 145

原创 只有掌握了这三种代理模式,才能进军Spring AOP哦!

代理模式定义首先我们来看看代理模式:所谓代理模式,是指客户端(Client)并不直接调用实际的对象(下图右下角的RealSubject),而是通过调用代理(ProxySubject),来间接的调用实际的对象。代理模式的使用场合,一般是由于客户端不想直接访问实际对象,或者访问实际的对象存在技术上的障碍,因而通过代理对象作为桥梁,来完成间接访问。业务场景首先有个UserService接口,...

2019-04-02 17:36:58 116

原创 Java虚拟机02——对象存活判断和4种引用

学习JVM必看的书籍无疑是《深入理解Java虚拟机》这本书了,在书中,关于运行时数据区域模型是这样描述的:在这里我们只针对HotSpot VM来说,它是OracleJDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。在JDK7之前,这样的模型是正确的。但是到了JDK8,如图标红的部分,做了一些优化。什么是方法区,什么是永久代,运行时常量池又是什么“方法区”(Met...

2019-03-31 17:58:42 142

原创 你还在看《深入理解Java虚拟机》的运行时数据模型吗?

学习JVM必看的书籍无疑是《深入理解Java虚拟机》这本书了,在书中,关于运行时数据区域模型是这样描述的:在这里我们只针对HotSpot VM来说,它是OracleJDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。在JDK7之前,这样的模型是正确的。但是到了JDK8,如图标红的部分,做了一些优化。什么是方法区,什么是永久代,运行时常量池又是什么“方法区”(Met...

2019-03-30 19:15:52 183

原创 Java虚拟机01——Java内存数据区域和内存溢出异常

运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(Java SE 7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示:我们可以将上面的数据区域分为线程独有...

2019-03-29 17:02:28 124

原创 别再用懒汉模式了——从JVM的角度看单例模式

网上结论:我们先来看看网上普遍的结论:所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间的不同。“懒汉式”是在你真正用到的时候才去建这个单例对象“饿汉式是在类创建的同时就已经创建好一个静态的对象,不管你用的用不上,一开始就建立这个单例对象先不说结论,看看下文代码实现:饿汉式public class Singleton1 { private final stat...

2019-03-22 12:38:15 422

原创 推荐一个基于Springboot+Vue的开源博客系统

简介这是一个基于Springboot2.x,vue2.x的前后端分离的开源博客系统,提供 前端界面+管理界面+后台服务 的整套系统源码。响应式设计,手机、平板、PC,都有良好的视觉效果!你可以拿它作为前端Vue2.0学习的练手教程;你也可以把它作为springboot技术的学习项目;你还可以将其视为一个前后端分离的项目实践;…站点演示www.dblearn.cn模块分层后端模...

2019-03-10 16:10:14 18017 10

原创 加油写博客

 把电脑带到公司了,现在要加油写博客了。千万记住在这个时代,不进步就是落后!!!

2018-09-01 15:04:15 166

原创 电脑换系统

终于下定决心把电脑换成Linux系统的了。折腾了好几天,把环境都配好了,可以开开心心的开发啦。接下来。。我要开发些什么项目呢??bug,刚毕业没钱买服务器啊啊啊...

2018-08-15 15:22:45 491 2

原创 上班第一天

加油哦!不要放松,一定要保持对技术的热情!

2018-05-08 17:07:14 437 1

原创 很详细的SpringBoot整合UEditor教程

UEditor只提供JSP版本的后端入口代码。但提供了项目源码,因此可以根据业务需求修改源代码。此处使用了SprngBoot框架,配备了Thymeleaf模板引擎,所以没有必要再添加jsp来兼容UEditor,可通过修改源码满足需要。下面是详细教程。

2017-04-10 20:27:21 47722 50

空空如也

空空如也

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

TA关注的人

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