多图 | Java 程序员必备的一些流程图

  • 1.spring的生命周期
  • 2.TCP三次握手,四次挥手
  • 3.线程池执行流程图
  • 4.JVM内存结构
  • 5.Java内存模型
  • 6.springMVC执行流程图
  • 7.JDBC执行流程
  • 8.spring cloud组件架构
  • 9.dubbo 调用

整理了一些Java基础流程图/架构图,做一下笔记,大家一起学习。

1.spring的生命周期

Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要;

  • 首先容器启动后,对bean进行初始化
  • 按照bean的定义,注入属性
  • 检测该对象是否实现了xxxAware接口,并将相关的xxxAware实例注入给bean,如BeanNameAware等
  • 以上步骤,bean对象已正确构造,通过实现BeanPostProcessor接口,可以再进行一些自定义方法处理。如:postProcessBeforeInitialzation。
  • BeanPostProcessor的前置处理完成后,可以实现postConstruct,afterPropertiesSet,init-method等方法, 增加我们自定义的逻辑,
  • 通过实现BeanPostProcessor接口,进行postProcessAfterInitialzation后置处理
  • 接着Bean准备好被使用啦。
  • 容器关闭后,如果Bean实现了DisposableBean接口,则会回调该接口的destroy()方法
  • 通过给destroy-method指定函数,就可以在bean销毁前执行指定的逻

2.TCP三次握手,四次挥手

tcp的三次握手四次挥手是每个程序员都应该熟悉的。

三次握手:

  • 第一次握手(SYN=1, seq=x),发送完毕后,客户端进入 SYN_SEND 状态
  • 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1), 发送完毕后,服务器端进入 SYN_RCVD 状态。
  • 第三次握手(ACK=1,ACKnum=y+1),发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLISHED 状态,TCP 握手,即可以开始数据传输。

四次挥手:

  • 第一次挥手(FIN=1,seq=a),发送完毕后,客户端进入 FIN_WAIT_1 状态
  • 第二次挥手(ACK=1,ACKnum=a+1),发送完毕后,服务器端进入 CLOSE_WAIT 状态,客户端接收到这个确认包之后,进入 FIN_WAIT_2 状态
  • 第三次挥手(FIN=1,seq=b),发送完毕后,服务器端进入 LAST_ACK 状态,等待来自客户端的最后一个ACK。
  • 第四次挥手(ACK=1,ACKnum=b+1),客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT状态,等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。

3.线程池执行流程图

线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务,这避免了在处理短时间任务时创建与销毁线程的代价。线程池执行流程是每个开发必备的。

执行流程

  • 提交一个任务,线程池里存活的核心线程数小于线程数corePoolSize时,线程池会创建一个核心线程去处理提交的任务。
  • 如果线程池核心线程数已满,即线程数已经等于corePoolSize,一个新提交的任务,会被放进任务队列workQueue排队等待执行。
  • 当线程池里面存活的线程数已经等于corePoolSize了,并且任务队列workQueue也满,判断线程数是否达到maximumPoolSize,即最大线程数是否已满,如果没到达,创建一个非核心线程执行提交的任务。
  • 如果当前的线程数达到了maximumPoolSize,还有新的任务过来的话,直接采用拒绝策略处理。

JDK提供了四种拒绝策略处理类

  • AbortPolicy(抛出一个异常,默认的)
  • DiscardPolicy(直接丢弃任务)
  • DiscardOldestPolicy(丢弃队列里最老的任务,将当前这个任务继续提交给线程池)
  • CallerRunsPolicy(交给线程池调用所在的线程进行处理)

4.JVM内存结构

JVM内存结构是Java程序员必须掌握的基础。

程序计数器(PC 寄存器)

程序计数器是一块较小的内存空间,可以看作当前线程所执行的字节码的行号指示器。在虚拟机的模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、异常处理、线程恢复等基础功能都需要依赖计数器完成。

Java虚拟机栈

  • 与程序计数器一样,Java虚拟机栈也是线程私有的,它的生命周期与线程相同
  • 每个方法被执行的时候都会创建一个"栈帧",用于存储局部变量表(包括参数)、操作数栈、动态链接、方法出口等信息。每个方法被调用到执行完的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
  • 局部变量表存放各种基本数据类型boolean、byte、char、short等

本地方法栈

与虚拟机栈基本类似,区别在于虚拟机栈为虚拟机执行的java方法服务,而本地方法栈则是为Native方法服务。

Java堆

  • GC堆是java虚拟机所管理的内存中最大的一块内存区域,也是被各个线程共享的内存区域,在JVM启动时创建。
  • 其大小通过-Xms(最小值)和-Xmx(最大值)参数设置,-Xms为JVM启动时申请的最小内存,-Xmx为JVM可申请的最大内存。
  • 由于现在收集器都是采用分代收集算法,堆被划分为新生代和老年代。新生代由S0和S1构成,可通过-Xmn参数来指定新生代的大小。
  • 所有对象实例以及数组都在堆上分配。
  • Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中。

方法区

  • 也称”永久代” ,它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。
  • 运行时常量池:是方法区的一部分,其中的主要内容来自于JVM对Class的加载。
  • Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中。

5.Java内存模型

  • Java的多线程之间是通过共享内存进行通信的,在通信过程中会存在一系列如可见性、原子性、顺序性等问题,而JMM就是围绕着多线程通信以及与其相关的一系列特性而建立的模型。JMM定义了一些语法集,这些语法集映射到Java语言中就是volatile、synchronized等关键字。有兴趣可以看看我的另外一篇笔记:www.jianshu.com/p/3c1691aed…
  • Java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中保存了该线程中是用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量的传递均需要自己的工作内存和主存之间进行数据同步进行。

6.springMVC执行流程图

  • User向服务器发送request,前端控制Servelt DispatcherServlet捕获;
  • DispatcherServlet对请求URL进行解析,调用HandlerMapping获得该Handler配置的所有相关的对象,最后以HandlerExecutionChain对象的形式返回.
  • DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter.
  • 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)
  • Handler执行完成后,返回一个ModelAndView对象到DispatcherServlet
  • 根据返回的ModelAndView,选择一个适合的ViewResolver
  • ViewResolver 结合Model和View,来渲染视图
  • 将渲染结果返回给客户端。

7.JDBC执行流程

 

 

JDBC执行流程:

  • 连接数据源
  • 为数据库传递查询和更新指令
  • 处理数据库响应并返回的结果

8.spring cloud组件架构

Spring Cloud是一个基于Spring Boot实现的云原生应用开发工具,它为基于JVM的云原生应用开发中涉及的配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

  • Eureka 负责服务的注册与发现。
  • Hystrix 负责监控服务之间的调用情况,起到熔断,降级作用。
  • Spring Cloud Config 提供了统一的配置中心服务。
  • 所有对外的请求和服务,我们都通过Zuul来进行转发,起到 API 网关的作用
  • 最后我们使用 Sleuth+Zipkin 将所有的请求数据记录下来,方便我们进行后续分析。
  • Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。它是一个基于HTTP和TCP的客户端负载均衡器。
  • Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单。

9.dubbo 调用

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的远程服务调用方案,这容易和负载均衡弄混,负载均衡是对外提供一个公共地址,请求过来时通过轮询、随机等,路由到不同server。

  • Provider: 暴露服务的服务提供方。
  • Consumer: 调用远程服务的服务消费方。
  • Registry: 服务注册与发现的注册中心。
  • Monitor: 统计服务的调用次调和调用时间的监控中心。
  • Container: 服务运行容器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/40710.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信整人假红包图片_微信假红包图片生成器,假红包生成器微信(玩别人没商量)...

你要记住,无论最后我们疏远成什么样子,一个红包最能回到当初 。这段话在朋友圈很是流行,而且现在大家的聊天方式就是一言不合就发红包,惹女朋友生气了,发个红包就好了,亲朋好友的聊天群里,发个红…

2021年中国假发制品行业现状分析:颜值经济促进需求量[图]

一、假发分类 假发制品是通过人造技术制造而成的头发,用于装饰的饰品。可供秃头或头发稀少的人作头饰戴用,或作为戏装、官员或专业人员装束或时髦装饰的一部分。 假发分类 资料来源:智研咨询整理 二、假发制品销售收入 假发属于轻工业制造…

【探花交友DAY 07】即时通讯模块的实现

1. 即时通讯模块设计 1.1 什么是即时通讯 即时通讯简称IM(Instant Message),是指能够即时地发送和接受互联网消息等服务。常见的即时通讯服务有QQ,微信等。在我们探花交友项目中,也运用到了即时通讯技术。两个陌生人…

花房集团成功上市,构建互联互通的在线社交娱乐生态

近日,花房集团正式在香港联合交易所主板上市。对于花房集团而言,登陆港股市场是新的征程、新的起点。 可以看到,花房集团在稳固“直播社交”业务基本盘的同时,持续探索元宇宙领域,上市当日首次发布了最新的战略方向“娱…

软件/APP/产品投放渠道分类大全

随着行业马太效应的加深,APP流量的获取愈发艰难,酒香也怕巷子深,再好的产品,没有优质的推广渠道加持也很难实现有效传播。 因此准备用一个系列专题,汇总整理APP传播的渠道、投放策略和数据分析疑难杂症等实用经验&…

腾讯应用宝米大师直购模式支付流程以及服务端php回调校验

一. 米大师简介 1.米大师(Midas)为腾讯官方唯一虚拟支付平台。 2.YSDK已经内置了米大师(Midas)支付模块,游戏开发者接入YSDK后,可以通过相应的配置开启米大师的支付功能,并调用YSDK已经封装好的…

免费好用的划词搜题神器插件

年初疫情爆发至今,可能不少家长头疼坏了-因为小孩的教育突然成了家长们巨大的烦恼,面对漫天飞的试题和教辅,不知道多少家长疲于应付,今天分享一个可以在浏览器中进行划词搜题的插件,不光可以一定程度上缓解家长们的教育…

网页搜题插件使用

安装划词搜题 根据自己的浏览器类型查看安装指南 一、Chrome浏览器(谷歌浏览器) 1、下载划词搜题安装文件 Chrome版划词搜题扩展下载地址2、解压安装文件 3、Chrome浏览器地址栏打开 chrome://extensions/ ,然后打开开发者模式,点击加载已解压的扩展程序,选择上一步中解压…

纬衡多个用户荣获“第五届建筑创作奖”

2008年12月,“第五届建筑创作奖”正式产生。 “第五届建筑创作奖”评奖办公室共收到全国18个省、市、自治区67个建筑设计研究单位申报的建筑创作项目248个。经过严格遵照公开、公正和公平的评选和无记名的投票,最后确定北京市建筑设计研究院之“国家大剧…

主要股东近3年净买入排名

主要股东在此区间内的净买入排名: 到 2019-08-08。 主要股东是指:公司管理层、机构和重要的个人股东。 来源:主要股东近3年净买入排名 1 - 中国建筑(SH601668) - 净买入:172.33亿 - 占A股流通市值比:7.493% - 市盈率…

“1024”讲话两个月后,深交所正式发布区块链50指数,板块再迎利好

“业务领域涉及区块链产业上中下游的公司为选样空间,按近半年日均总市值从高到低排序,筛选排名前50名的股票构成样本股。” 本文来源:巴比特;作者:邱祥宇;该内容旨在传递更多市场信息,不构成任何…

【12月19日】传媒行业的股票排名

便宜指数为PE、PB、股息和ROE四因子等权相加的值,越大代表越低估。 来源:传媒行业的股票排名 中原传媒(SZ000719), 便宜指数: 7.21, 扣非市盈率(PE):9.9, 股息: 3.46%, …

首次!深交所发布区块链50指数,成分股总市值1.3万亿

作者:邱祥宇 12月24日,深圳证券交易所和深圳证券信息有限公司发布深证区块链50指数(指数代码:399286),以反映深圳证券市场区块链产业相关公司的表现和丰富指数化投资工具。指数基点为1000点,24日…

正好股票开户核污染主概念简直通杀

周三两市成交6440亿,比昨日又少了200多亿,指数弱反弹收涨0.6%。盘前券商给予中国中免买入评级,竟然真被拉出大阳,白酒企稳,给了指数支撑。破位下行,一个研报就吹起来,明日预期不太达观。 短线方…

特斯拉要对车内数据服务收费了:年费100美元;百度14.43亿投资东软,又在长沙投入45辆自动驾驶出租车;途歌倒闭消失了......

整理: 数据猿 Toby 数据猿官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云云社区 【目录精要】贵州将投资200亿元加快推进5G建设;数梦工场完成6亿元B轮融资&a…

陀螺产业区块链第九季 | 区块链+海关关务生态链

2020年4月,国家发改委在例行新闻发布会上宣布区块链被正式列为新型基础设施中的信息基础设施,自此区块链正式搭上新基建的“风口”。 从2020年到2021年,我国的区块链政策环境、基础设施建设、行业标准规范、技术研发实力、产业生态构建、行业…

天载正规股票数字货币逆势领涨

到午盘,上证指数跌1.18%,报3376.30点,深证成指跌1.38%,报13547.90点,创业板指跌1.39%,报2765.32点。 指数早盘震动走低,团体跌超1%,二胎概念开盘逆势领涨,数字钱银、白酒…

从腾讯的频繁增持看“游戏之王”的繁华和危情

近期,游戏圈真是热闹非凡。 特别是腾讯这个老牌游戏厂商,市场热度似乎从未消减。 近日,腾讯的操作可谓是让群众吃饱了瓜,原由竟是腾讯律师口出狂言:“玩家不是我们的重心”,一时间“腾讯与DD373”事件冲上…

百舸争流,盘点我国主流区块链企业联盟链技术与应用

文/尹宁 出品/陀螺研究院 区块链(blockchain)是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术。2020年10月15号,美国白宫发布《关键与新兴技术国家战略》&…

申宝策略-元宇宙板块拉升

上午各大指数震荡反弹,创业板指数领涨。盘面上,云游戏、传媒、元宇宙、知识产权保护、虚拟现实等板块涨幅前列,盐湖提锂、物流、港口航运、煤炭等板块跌幅居前。 板块上,游戏板块大幅走强,新国脉、凯撒文化、惠程科技、…