北上广深,2020,多少K的Java程序员应该懂高并发多线程和JVM优化

本文主要是介绍北上广深,2020,多少K的Java程序员应该懂高并发多线程和JVM优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

初级—初阶
掌握java基础,熟悉常用类库。理解javaweb中的servlet,jsp,并了解常用的框架对java web的封装原理,能够借助框架完成增删改查功能。理解数据库在web开发中的地位。

初级—中阶
理解java中较为高级的特性,如反射,动态代理,JVM,内存模型,多线程等等。熟练使用框架,对框架中遇到的bug,能够借助日志和搜索引擎分析出问题的原因。在团队中,能够独立完成普通后台业务功能的开发。了解数据库的高级特性,如索引,存储引擎等等。

初级—高阶
理解java分布式架构,微服务架构(如rpc框架dubbo,motan,或springcloud一类)了解其与集中式架构的区别,并能保证分布式代码质量。熟练使用各个中间件如redis,mq,zookeeper等等,并了解其工作原理和使用场景。能够在中级或高级程序员的带领之下,完成非核心功能的研发。能够关注开源,并且具有阅读源码的能力。

中级
初级高阶已经很厉害了,但是往往缺乏的是一些项目经验,所以在我这里还是初级。脱离初级程序员不仅仅需要技术方面的支撑,还需要具备一定的项目开发经验(3年之上一线互联网产品研发经验),拥有线上bug的处理能力,JVM调有能力,以及完成核心业务功能的开发。并且带领团队的新人,能够按能力分配任务。(本想把初级高阶分为中级初阶,但我还是觉得中级必备的水平是线上解决bug的能力)

高级
团队的核心人物,把控整个项目的质量,包括代码漏洞和规范问题。具有5年以上项目开发经验,2年以上架构搭建的经验,能够根据业务选择不同的架构类型;根据团队组成,分配不同的任务。具有将自己的知识分享出去的能力,带领初级程序员走向中级,中级程序员走向高级的能力。

 

多线程与高并发

北上广深,2020,多少K的Java程序员应该懂高并发多线程和JVM优化

 

 

JVM调优案例式实战化指导

北上广深,2020,多少K的Java程序员应该懂高并发多线程和JVM优化

 

一、多线程为什么会有并发问题

为什么多线程同时访问(读写)同个变量,会有并发问题?

  1. Java 内存模型规定了所有的变量都存储在主内存中,每条线程有自己的工作内存。
  2. 线程的工作内存中保存了该线程中用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存。
  3. 线程访问一个变量,首先将变量从主内存拷贝到工作内存,对变量的写操作,不会马上同步到主内存。
  4. 不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量的传递均需要自己的工作内存和主存之间进行数据同步进行。

二、Java 内存模型(JMM)

Java 内存模型(JMM) 作用于工作内存(本地内存)和主存之间数据同步过程,它规定了如何做数据同步以及什么时候做数据同步,如下图。

北上广深,2020,多少K的Java程序员应该懂高并发多线程和JVM优化

 

三、并发三要素

原子性:在一个操作中,CPU 不可以在中途暂停然后再调度,即不被中断操作,要么执行完成,要么就不执行。

可见性:多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。

有序性:程序执行的顺序按照代码的先后顺序执行。

推荐:

马士兵2020年最新Java多线程高并发讲解——20年架构师告诉你Java多线程与高并发应该怎么学

https://www.bilibili.com/video/BV1xK4y1C7aT

P1马士兵Java多线程与高并发①volatile关键字的字节码原语

https://www.bilibili.com/video/BV1xK4y1C7aT?p=1

P2java多线程与高并发②synchronized与volatile的硬件级实现

https://www.bilibili.com/video/BV1xK4y1C7aT?p=2

P3java多线程与高并发③无锁、偏向锁、轻量级锁、重量级锁升级过程

https://www.bilibili.com/video/BV1xK4y1C7aT?p=3

P4java多线程与高并发④内存屏障的基本概念

https://www.bilibili.com/video/BV1xK4y1C7aT?p=4

P5java多线程与高并发⑤使用线程池的好与不好

https://www.bilibili.com/video/BV1xK4y1C7aT?p=5

P6java多线程与高并发⑥为什么阿里开发手册建议自定义线程池

https://www.bilibili.com/video/BV1xK4y1C7aT?p=6

P7java多线程与高并发⑦自定义线程池的最佳实践

https://www.bilibili.com/video/BV1xK4y1C7aT?p=7

P8java多线程与高并发⑧常见线程池类型与应用场景

https://www.bilibili.com/video/BV1xK4y1C7aT?p=8

P9java多线程与高并发⑨JVM规范如何要求内存屏障

https://www.bilibili.com/video/BV1xK4y1C7aT?p=9

P10java多线程与高并发⑩硬件层级内存屏障如何帮助java实现高并发

https://www.bilibili.com/video/BV1xK4y1C7aT?p=10

这篇关于北上广深,2020,多少K的Java程序员应该懂高并发多线程和JVM优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/545846

相关文章

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.