Java进阶专题(十一) 探究JMM】的更多相关文章

前言 ​ JMM即java内存模型,JMM研究的就是多线程下Java代码的执行顺序,共享变量的读写.它定义了Java虚拟机在计算机内存中的工作方式.从抽象角度看,JMM定义了线程和主存之间的抽象关系:线程之前的共享变量存储在主内存中,每个线程有个私有的本地内存,本地内存中存储了该线程读写共享变量的副本.本地内存是JMM的一个抽象概念,并不真实存在.它涵盖了缓存.写缓冲区.寄存器以及其他硬件和编译器优化. ​ 先抛出两个问题: 你写的代码一定是实际运行的代码吗? 代码的编写顺序,一定是实际执行的顺…
前言 ​ 上次讲解了JVM内存相关知识,今天继续JVM专题. JVM垃圾回收算法 什么是垃圾回收 ​ 程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存资源,最终将导致内存溢出,所以对内存资源的管理是非常重要了. 什么样的对象需要回收 引用计数法 ​ 引用计数是历史最悠久的一种算法,最早George E. Collins在1960的时候首次提出,50年后的今天,该算法依然被很多编程语言使用. 原理 ​ 假设有一个对象A,任何一个对象对A的引用,那么对象A的引用计数器+1…
前言 ​ 前面我们了解了JVM相关的理论知识,这章节主要从实战方面,去解读JVM. 类加载机制 ​ Java源代码经过编译器编译成字节码之后,最终都需要加载到虚拟机之后才能运行.虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java 类型,这就是虚拟机的类加载机制. 类加载时机 ​ 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading).验证(Verification).准备(P…
Java进阶(三十一) Web服务调用 前言 有朋友问了一个问题:如何调用已知的音乐服务接口,服务文档如下: https://www.evernote.com/shard/s744/sh/c37cd503-68fc-4406-b8f2-5e90095be303/19b67e36aa2ccd19 查看代码之后,按照以往的服务调用方法实现,结果无法实现.很是费解,求教大师兄之后,问题,迎刃而解,只能说自己需要学习的地方还有很多. 完整代码如下: package plan.http.util; imp…
Java进阶(五十一)Could not create the view: An unexpected exception was thrown 今天打开Myeclipse10的时候,发现server窗口出现一堆问题,问题如标题,然后下方出现了一堆上面的问题. 这个问题的出现是在启动myeclipse之后出现的,这时还没有启动tomcat,因此可以排除tomcat中项目代码问题.应该是myeclipse在初始化工作空间workspace 的时候出的问题.仔细看下错误发现有一条 at com.ge…
Java进阶(五十一)必须记住的Myeclipse快捷键 在调试程序的时候,我们经常需要注释一些代码,在用Myeclipse编程时,就可以用 Ctrl+/ 为选中的一段代码加上以 // 打头的注释:当需要恢复代码功能的时候,又可以用Ctrl+/ 去掉注释.这样的快捷键确实让我们编程变得容易多了. 诸于此类的快捷方式,是利用Myeclipse进行Java开发程序的必备武器,可以让同学们在使用Myeclipse进行编程的时候灵活自如,充分享受编程的乐趣. 下面是收集整理的一些常用的Myeclipse…
前言 ​ 各位读者好,本系列为Java进阶专题,为那些有一定工作经验,做了多年业务的码农,希望突破技术瓶颈,但没有形成系统的Java只是体系,缺乏清晰的提升方法和学习路径的人,比如作者本人.该课题的是我在各大课程网站中寻得的一个比较系统.全面的进阶路线.大纲是跟某泡学院的8288元的架构师培训课程一致的.有条件的同学可以去直播面授.但是我们已经不是刚接触Java的小白了,此时的我们只需要有个学习路线便可自己在网上寻得各种自己想要的资料来自学了,所以我根据他们的课题去搜寻对应的学习资料来完成自己版…
前言 Kafka 是一款分布式消息发布和订阅系统,具有高性能.高吞吐量的特点而被广泛应用与大数据传输场景.它是由 LinkedIn 公司开发,使用 Scala 语言编写,之后成为 Apache 基金会的一个顶级项目.kafka 提供了类似 JMS 的特性,但是在设计和实现上是完全不同的,而且他也不是 JMS 规范的实现. Kafka简介 kafka产生背景 kafka 作为一个消息系统,早起设计的目的是用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipe…
前言 ​ 今天开始我们专题的第一课了,也是我开始进阶学习的第一天,我们先从经典设计思想开始,看看大牛市如何写代码的,提升技术审美.提高核心竞争力.本章节参考资料书籍<Spring 5核心原理>中的第一篇 Spring 内功心法(没有电子档,都是我取其精华并结合自己的理解,一个字一个字手敲出来的). 开闭原则 开闭原则(Open-Closed Principle,OCP)是指一个软件实体(如类,模块和函数)应该对扩展开发,对修改关闭.所谓的开闭,也正是对扩展和修改的两种行为的一个原则.它强调的是…
代理模式 前言 又开始我的专题了,又停滞了一段时间了,加油继续吧.都知道 SpringAOP 是用代理模式实现,到底是怎么实现的?我们来一探究竟,并且自己仿真手写还原部分细节. 代理模式的应用 在生活中,我们经常见到这样的场景,如:租房中介.售票黄牛.婚介.经纪人.快递. 事务代理.非侵入式日志监听等,这些都是代理模式的实际体现.代理模式(Proxy Pattern)的定义也非常简单,是指为其他对象提供一种代理,以控制对这个对象的访问. 代理对象在客服端和目标对象之间起到中介作用,代理模式属于结…