草庐IT

腾讯云Java后端15连问(6年经验):分布式+锁+MySQL+JVM+TCP

近一位朋友(6年工作经验)面了腾讯云,以下是面试题。加油,一起卷。1.聊聊项目,好的设计,好的代码2.谈谈什么是零拷贝?3.一共有几种IO模型?NIO和多路复用的区别?4.Future实现阻塞等待获取结果的原理?5.ReentrantLock和Synchronized的区别?Synchronized的原理?6.聊聊AOS?ReentrantLock的实现原理?7.乐观锁和悲观锁,让你来写你怎么实现?8.Paxos协议了解?工作流程是怎么样的?9.B+树聊一下?B+树是不是有序?B+树和B-树的主要区别?10.TCP的拥塞机制11.工作中有过JVM实践嘛12.数据库分库分表的缺点是啥?13.分布

腾讯云Java后端15连问(6年经验):分布式+锁+MySQL+JVM+TCP

近一位朋友(6年工作经验)面了腾讯云,以下是面试题。加油,一起卷。1.聊聊项目,好的设计,好的代码2.谈谈什么是零拷贝?3.一共有几种IO模型?NIO和多路复用的区别?4.Future实现阻塞等待获取结果的原理?5.ReentrantLock和Synchronized的区别?Synchronized的原理?6.聊聊AOS?ReentrantLock的实现原理?7.乐观锁和悲观锁,让你来写你怎么实现?8.Paxos协议了解?工作流程是怎么样的?9.B+树聊一下?B+树是不是有序?B+树和B-树的主要区别?10.TCP的拥塞机制11.工作中有过JVM实践嘛12.数据库分库分表的缺点是啥?13.分布

JVM 执行引擎的作用及工作过程

下面就要讲代码到底是怎么执行的。在讲源码之前,我们看看从流程角度到底是怎么运行的。image.pngimage.png执行引擎的概述执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构关系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是

JVM 执行引擎的作用及工作过程

下面就要讲代码到底是怎么执行的。在讲源码之前,我们看看从流程角度到底是怎么运行的。image.pngimage.png执行引擎的概述执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构关系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是

Prometheus+Grafana监控安装及配置JVM实现企业微信告警

背景本人Java开发工程师一枚,主攻后端,需要搭建一套Prometheus+Grafana的监控系统,采用企业微信告警通知。在网上各种查阅资料的同时,发现很多资料都大致相通且不完整,踩坑无数,经过多日钻研后,最终完成了整个搭建任务,特此记录下整个安装操作过程,希望能帮助各位。同时也请各位大神指导并提出意见,在此只能傻瓜式的记录下操作过程,如果有幸有哪位运维大神看到,还请指正不足之处,感激不尽[抱拳]一、Prometheus下载安装Promethus官网下载地址:https://prometheus.io/download/image.pngXshell连接服务器依次执行以下命令:进入local

Prometheus+Grafana监控安装及配置JVM实现企业微信告警

背景本人Java开发工程师一枚,主攻后端,需要搭建一套Prometheus+Grafana的监控系统,采用企业微信告警通知。在网上各种查阅资料的同时,发现很多资料都大致相通且不完整,踩坑无数,经过多日钻研后,最终完成了整个搭建任务,特此记录下整个安装操作过程,希望能帮助各位。同时也请各位大神指导并提出意见,在此只能傻瓜式的记录下操作过程,如果有幸有哪位运维大神看到,还请指正不足之处,感激不尽[抱拳]一、Prometheus下载安装Promethus官网下载地址:https://prometheus.io/download/image.pngXshell连接服务器依次执行以下命令:进入local

JVM

内存区域程序计数器、虚拟机栈、本地方法栈这三个是线程私有的;堆、方法区是线程公有的;程序计数器:记录线程走到字节码的哪一行;虚拟机栈:由栈帧组成,每个栈帧包含局部变量表、操作数栈、动态链接、方法返回地址,当执行到一个方法的时候,就会把这个方法以栈帧形式压入栈本地方法栈:与虚拟机栈差不多,只不过这个栈是给本地方法用的堆:堆的垃圾回收算法常用的是分代回收法,所以堆被划分出新生代,老年代;方法区:1.7之前方法区的实现是永久代,会存储已被虚拟机加载的类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据。****1.8之后方法区的实现变成了元空间,字符串常量池和静态变量等移出到

JVM

内存区域程序计数器、虚拟机栈、本地方法栈这三个是线程私有的;堆、方法区是线程公有的;程序计数器:记录线程走到字节码的哪一行;虚拟机栈:由栈帧组成,每个栈帧包含局部变量表、操作数栈、动态链接、方法返回地址,当执行到一个方法的时候,就会把这个方法以栈帧形式压入栈本地方法栈:与虚拟机栈差不多,只不过这个栈是给本地方法用的堆:堆的垃圾回收算法常用的是分代回收法,所以堆被划分出新生代,老年代;方法区:1.7之前方法区的实现是永久代,会存储已被虚拟机加载的类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据。****1.8之后方法区的实现变成了元空间,字符串常量池和静态变量等移出到

JVM(五)类加载

一、类文件1、结构:ClassFile{u4magic;//魔数,用于确定文件类型u2minor_version;//副版本号u2major_version;//主版本号,代表JDK版本,如:0034,十进制为52,表示JDK8u2constant_pool_count;//常量池数量cp_infoconstant_pool[constant_pool_count-1];//常量池u2access_flags;//标记,识别类是class还是接口;是否是public;是否是abstract;是否是final等u2this_class;//当前类u2super_class;//父类u2inter

JVM(五)类加载

一、类文件1、结构:ClassFile{u4magic;//魔数,用于确定文件类型u2minor_version;//副版本号u2major_version;//主版本号,代表JDK版本,如:0034,十进制为52,表示JDK8u2constant_pool_count;//常量池数量cp_infoconstant_pool[constant_pool_count-1];//常量池u2access_flags;//标记,识别类是class还是接口;是否是public;是否是abstract;是否是final等u2this_class;//当前类u2super_class;//父类u2inter