- 博客(18)
- 资源 (5)
- 收藏
- 关注
原创 Volatile指令重排详解
一、Volatile不可见性Volatile关键二、CPU的乱序执行CPU在进行读等待的同时执行指令,是CPU乱序的根源,不是乱,而是提高效率三、对象的创建过程对象的创建过程:创建->初始化->建立连接1.先申请内存,赋值默认值02.构造方法赋值初始值,83.建立连接,t->T四、DCL单例4.1 DCL单例代码DCL单例模式public class Singleton { pr...
2021-07-31 17:46:43 5494 1
原创 DCL单例模式
一、对象的创建过程视频教程对象的创建过程:创建->初始化->建立连接1.先申请内存,赋值默认值02.构造方法赋值初始值,83.建立连接,t->T二、DCL单例我们第一次写的单例模式是下面这样的:public class Singleton { private static Singleton instance = null; public static Singleton getInstance() { ..
2021-07-31 16:26:38 4648 3
原创 用户态与内核态
一、什么是用户态、内核态一般的操作系统对执行权限进行分级,分别为用用户态和内核态。用户态相较于内核态有较低的执行权限,很多操作是不被操作系统允许的,原因简单来说就是用户态出现问题(自己写的bug),也不能让操作系统崩溃呀。内核态相当于一个介于硬件与应用之间的层,内核有ring0的权限,可以执行任何cpu指令,也可以引用任何内存地址,包括外围设备,例如硬盘,网卡,权限等级最高。用户态则权利有限,例如在内存分配中,有一部分内存是仅为内核态使用的,用户态code则不允许访问那些内存地址...
2021-07-30 21:11:11 1704
原创 Java对象布局
一、Java对象的布局在 HotSpot虚拟机中,对象在内存中的存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)、对齐填充(Padding)如下图:1.1 对象头Mark Word:包含一系列的标记位,比如轻量级锁的标记位,偏向锁标记位等等。在32位系统占4字节,在64位系统中占8字节;Class Pointer(类型指针):用来指向对象对应的Class对象(其对应的元数据对象)的内存地址。在32位系统占4字节,在64位系统中占8字节;.
2021-07-30 20:59:27 728
原创 Synchronizd底层原理
一、CASCompare And Swap (Compare And Exchange) / 自旋 / 自旋锁 / 无锁因为经常配合循环操作,直到完成为止,所以泛指一类操作cas(v, a, b) ,变量v,期待值a, 修改值bABA问题,你的女朋友在离开你的这段儿时间经历了别的人,自旋就是你空转等待,一直等到她接纳你为止解决办法(版本号 AtomicStampedReference),基础类型简单值不需要版本号public class AtomicIntegerTest
2021-07-29 10:11:29 330
原创 Spring Cloud Ribbon源码解析
一、什么是RibbonSpring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer(LB)获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。Ribbon也可以实现我们自己的负载均衡算法。1.1 什么是客户端的负载均衡进程内的LB,他是一个类库集成到消费端,通过消费端进行获取提供者的地址。生活中:类似于你去火车
2021-07-17 16:35:58 407 4
原创 SpringBoot源码解析-依赖管理
问题:(1)为什么导入dependency时不需要指定版本?在Spring Boot入门程序中,项目pom.xml文件有两个核心依赖,分别是spring-boot-starter-parent和spring-boot-starter-web,关于这两个依赖的相关介绍具体如下一、spring-boot-starter-parent在我们项目中的pom.xml文件中找到spring-boot-starter-parent依赖,示例代码如下:上述代码中,将spring-boot-s..
2021-07-11 11:54:13 479 2
原创 SpringBoot源码解析-自动配置SpringMVC
在上一小节,我们介绍了SpringBoot是如何启动一个内置tomcat的。我们知道我们在SpringBoot项目里面是可以直接使用诸如@RequestMapping 这类的SpringMVC的注解,那么同学们会不会奇怪,这是为什么?我明明没有配置SpringMVC为什么就可以使用呢?其实仅仅引入starter是不够的,回忆一下,在一个普通的WEB项目中如何去使用SpringMVC,我们首先就是要在web.xml中配置如下配置视频教程...
2021-07-10 20:55:23 338 1
原创 SpringBoot源码解析-内嵌Tomcat
Spring Boot默认支持Tomcat,Jetty,和Undertow作为底层容器。而Spring Boot默认使用Tomcat,一旦引入spring-boot-starter-web模块,就默认使用Tomcat容器。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-sta
2021-07-10 19:19:10 447 1
原创 SpringBoot源码解析-自定义Start
一、SpringBoot Starter机制SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。SpringBoot提供了针对日常企业应用研发各种场景的
2021-07-10 13:08:45 340 1
原创 Java读取Excel文件
@Componentpublic class TestExcel { /** * 读取excel表格中特定的列 * * @param file * 文件 * @param index * 第index列(0开始) * @throws Exception */ public ArrayList<String> readColumn(File file,.
2021-07-05 12:40:45 496
SpringCloud 第二季.mmap
2020-07-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人