前言   在[JAVA进阶架构师指南]系列二和三中,我们了解了JVM的内存模型以及类加载机制,其中在内存模型中,我们说到,从线程角度来说,JVM分为线程私有的区域(虚拟机栈/本地方法栈/程序计数器)和线程公有区域(方法区和java堆),其中线程私有区域内存随着线程的结束而跟着被回收,GC主要关注的是堆和方法区这部分的内存. GC回收算法   GC如何确定哪些对象需要回收呢?一般而言,有两种算法:引用计数算法和可达性分析算法. 引用计数算法   为每个对象都持有一个引用计数器,初试状态为0,该对象…
前言   在上一篇文章中,我们知道了JVM的内存划分,其中在说到方法区的时候说到方法区中存放的信息包括[已被JVM加载的类信息,常量,静态变量,即时编译的代码等],整个方法区其实就和类加载有关. 类加载过程   类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.它们开始的顺序如下图所示:   而类加载是指的前五个阶段,在这五个阶段中,加载.验证.准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它既可能在初始化前…
前言   本博客是长篇系列博客,旨在帮助想提升自己,突破技术瓶颈,但又苦于不知道如何进行系统学习从而提升自己的童鞋.笔者假设读者具有3-5年开发经验,java基础扎实,想突破自己的技术瓶颈,成为一位优秀的架构师,所谓java基础扎实,比如:   1.java语言三大特性.   2.java语言八大基本类型及其表示范围.   3.为什么float和double存在精度丢失?   4.publish/private/default/protected表示的范围?   5.static/final的用…
前言   谈到JAVA,就不得不提JVM---JAVA程序员绕不开的话题.也许有童鞋会说,我不懂JVM,但是我一样可以写出JAVA代码,我相信说这种话的童鞋,往往是只有1-3年的初级开发人员,对JAVA理解还不深,不明白JVM的重要性,那接下来我们来说说,为什么要学习JVM?   1.理解JVM,才能帮助我们写出更好,更健壮的代码.举个例子,以下代码的执行结果会是什么呢?很多童鞋肯定会说:嗯?当我傻吗?两个不都是true吗?这有啥好说的,真的是这样吗?感兴趣的童鞋可以自己下来试一试,至于为什么是…
前言   首先给大家说声对不起,最近属实太忙了,白天上班,晚上加班,回家还要收拾家里,基本每天做完所有事儿都是凌晨一两点了,没有精力再搞其他的了.   好了,进入正题,让我们来聊聊JVM篇最后一个章节----JVM性能调优.童鞋们随便打开一个大厂的招聘岗位JD,应该都会有JVM调优相关的描述,其实招聘方不一定要求候选人真的对JVM调优有实际调优经验,但是至少得有思路,知道应该怎样进行JVM层面的性能调优,说实话,知道如何进行JVM层面的性能调优的人,在面试中确实是有加分的.   笔者在公司担任面…
Java互联网架构师系统进阶课程学习 (4)[享学] 4.显式锁和AQS   显式锁 Lock接口和核心方法 Lock接口和synchronized的比较 synchronized 代码简洁,Lock:获取锁可以被中断,超时获取锁,尝试获取锁,读多写少用读写锁 可重入锁ReentrantLock.所谓锁的公平和非公平 如果在时间上,先对锁进行获取的请求,一定先被满足,这个锁就是公平的,不满足,就是非公平的 非公平的效率一般来讲更高 ReadWriteLock接口和读写锁ReentrantRead…
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat…
图灵学院JAVA互联网架构师专题学习笔记 下载链接:链接: https://pan.baidu.com/s/1xbxDzmnQudnYtMt5Ce1ONQ 密码: fbdj如果失效联系v:itit11223344 官网:https://ke.qq.com/course/231516#term_id=100488011 01JAVA架构课开班典礼[录播]致新加入同学的学习计划-诸葛(34分钟)[回放]IOC容器设计理念与核心注解的使用(6月5日 20:10-22:00)02 源码框架专题[回放]S…
在一些小企业或者公司人力不足的时候,经常会出现一个人干多个人的活.开发可能会干架构.测试.运维,一些小项目可能需要一个人完成.我把这些角色合并在一起称之为兼职架构师. 我用我的经历来说说兼职架构师的需要干的事吧. 1.首先,幸运的事情至少我还有一个产品经理,可以给出RoadMap,比如下: 单独项目的唯一好处是,产品经理会给你安排一个大致时间,可以把控一下时间和进度.你也不需要开会,因为就你一个人,不过看过<人月神话>的都知道,1+1有时并不能大于2.当然我们底层功能的版本有人C++的人来支持…
[IT168 技术]作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们. 一.Java编程入门类 对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵吞枣不求甚解”,先对Java熟悉起来再说.用很短的时间快速过一遍Java语法,连懵带猜多写写代码,要…