开头

我们面试的时候 ,经常会被问这种到问题:Spring中bean的循环依赖怎么解决? Spring中bean的加载过程? spring相关的问题一直是大厂面试常问到的一个问题,也是一直困扰这我们,不知道从哪里下手,今天举例分析大厂的一些spring相关的面试真题。和分享我学习spring相关问题所整理的一些知识点。

1 进程

进程与程序

操作系统之中最为通用的概念就是「进程」。与此相关的面试题以及各种技术优化策略也层出不穷,足以够证明它对于理解操作系统中举足轻重的地位。事实上,通过「进程」,程序员可以更为直观的理解自己所开发的软件,并且能够从中深刻的认识到操作系统在软件运行做了些什么。

简单来讲,进程就是正在执行的程序。每个进程都包含有属于自己的一段地址空间,可以看作是一部分内存空间。在这样的地址空间中,进程能够根据需要进行内存的读写。

地址空间里面一般包含可执行程序,以及对应程序的数据及其堆栈。与每个进程相关的还有一组资源,通常包括寄存器(包括程序计数器和堆栈指针)以及运行程序所需的所有其他信息。从这可以看出,程序本身只是指令、数据以及其组织形式的一种描述方式,而程序的实际的运行实例就是一个进程。

不过进程与程序也并不完全等同,他们不是简单的一一对应的关系,而是在不同层面的表现形式。他们的主要区别在于:

  • 程序是进程的静态文本,而进程是执行程序的动态过程;
  • 进程与程序不是一一对应,同一程序可在不同进程中运行,一个进程也可以执行多个程序;
  • 程序是一种长期可保存的文本,进程是暂时的一次执行过程;
  • 进程是操作系统分配调度的独立单位,而程序是操作系统层级之上的应用程序。

进程状态

从上面我们知道,进程可看作是程序运行的动态过程。那么为了更好的对进程进行描述,我们给运行中的进程定义了三种基本状态,包括就绪、执行和阻塞。

这就是所谓的三态模型,描述了进程在整个运行周期中状态变化。每个状态的转移过程可以通过下图来表示。

就绪状态 是指进程已经被分配到了所有必需的资源,除了CPU。在这个状态下,进程处于箭在弦上随时待发的状态,只要一获得CPU的执行权限,进程便会立刻执行,从而进入执行状态。

当有多个处于就绪状态的进程时,不同的进程会根据优先级被划分入不同的队列。一个因为时间片用完而进入就绪状态的进程会被划分入低优先级队列,而因为I/O操作完成而进入就绪状态的进程,则会被划分入高优先级队列。

执行状态 是指进程正常运行的状态。而当处于执行状态的进程由于需要等待某个事件发送(通常为等待I/O)时,就会放弃CPU,从而进入暂时的阻塞状态。CPU这时一旦空出,通过不同的调度算法,CPU又会被分配给另一个就绪进程。

阻塞状态 相当于就绪状态和执行状态的一个缓冲状态。当处于执行状态的进程无法正常执行时,会先进入阻塞状态,等待需要的请求执行完成,再回到就绪状态,等待下一次的CPU分配和执行。

三态模式是用来描述进程状态转移最为精简的模型,实际上光这三种状态是无法处理复杂的进程运行过程的。所以为了对进程进行更好的管理和调度,在三态模型的基础上引入了两种进程状态,即创建状态终止状态,这就有了五态模型。

创建状态 是指进程刚刚创建的状态,在这个状态下,需要等待操作系统完成创建和分配进程的各种所需信息,包括建立PCB(Process Control Block)、加载程序并创建地址空间等。在完成这些准备工作后,该进程的状态就会转移为就绪状态并划分入就绪队列中。

PCB:进程控制块,用于存放进程的管理和控制信息的数据结构

创建状态看起来好像没什么太多用处,

作为Java程序员都应掌握:java考试题及答案大一相关推荐

  1. 作为Java程序员都应掌握:手把手教会你,含爱奇艺,小米,腾讯,阿里

    零基础如何学习Java? 首先,你要明白一点,Java入门不难! 无论你是从事哪个行业,兴趣一定是最好的老师,也是你学习的动力. 学习方式1:自学 自学模式其实我个人不建议绝大部分的人选择,因为自学是 ...

  2. Java程序员都是青春饭吗?

    Java程序员都是青春饭吗?过了35岁还能找到工作吗?会不会没人要了?随着IT行业的发展,互联网行业龙头企业中都流传一句话35岁是程序员的一个坎,过去了就没事,过不去就会被裁掉.正因为这句话大家才会认 ...

  3. 每个Java程序员都应该Follow的10个Twitter账号

    想让自己在第一时间了解Java世界正在发生什么吗? Twitter绝对是了解最新动态的优质资源.我列举了每个Java程序员都应该关注的10个twitter账号.在评论中可添加你喜欢的. 1 @java ...

  4. Java程序员都30岁了,还剩下5年“寿命”,这就是所谓的中年危机?

    Java程序员都30岁了,还剩下5年"寿命",这就是所谓的中年危机? 30岁时,我是一个程序员,离传说中的"退休"只有5年了,为了优雅从容的所谓"光荣 ...

  5. 一提到Reference 百分之九十九的java程序员都懵逼了

    原来的标题是:"一提到Reference 99.99%的java程序员都懵逼了",为啥改成汉字了呢?吐槽一下,因为CSDN出bug了,如果你用了%做标题,你的文章就别想用它的编辑器 ...

  6. java面试spring_针对Java程序员的二十大Spring REST面试问题答案

    java面试spring 大家好,过去两周来,我一直在与Spring教程共享一些REST,今天,我将向申请Web开发人员角色的Java开发人员共享一些常见的Spring和REST采访问题. 由于Spr ...

  7. 学习C语言的教材、如何成为一名优秀的C程序员、激发程序员创意的6本书、国外程序员推荐:每个程序员都应读的书

    学习C语言的教材 我的C语言是自学的,这些年看过不少教材. 下面,我对其中一些教材做个点评. 1. How to Think Like a Computer Scientist: C version ...

  8. 国外程序员推荐:每个程序员都应读的书(作为一个码奴,这个也留着)(转)

    国外程序员推荐:每个程序员都应读的书(作为一个码奴,这个也留着)(转)来源: 方健的日志 国外程序员推荐:每个程序员都应读的书 来自:http://www.williamlong.info/archi ...

  9. 每个程序员都应读的书

    国外程序员推荐:每个程序员都应读的书 作者 fmms 2012-03-18 21:33:31 编者按:2008年8月4日,StackOverflow 网友 Bert F 发帖提问:哪本最具影响力的书, ...

最新文章

  1. 【入门级】自学Python第一步,记住这7大编码规范
  2. QT的QCalendarWidget类的使用
  3. 孩子在华艺舞校的画画投稿-天女之梦
  4. mysql 分库分表 建表,mysql 分库分表 建表MySQL常用操作
  5. pytorch中lr_scheduler的使用
  6. 统计每小时数据的处理
  7. python字符串左_Python去除字符串左边指定字符
  8. 如何采用SMW0存储模板和OLED操作Excel的方式生成Excel单据
  9. linux设置ipsan_Linux下搭建iSCSI共享存储详细步骤(服务器模拟IPSAN存储)
  10. html标签设计视频音量,如何在HTML5视频标签只添加音量控制
  11. win7 pptp服务器未响应,win7下vpn无法使用的解决办法
  12. 1.广电、电信、联通、移动、无线覆盖、物联网络、校园入网统一认证问题痛点分析
  13. 智能车浅谈——手把手让车跑起来(电磁篇)
  14. 二本电气工程应届生收割5个offer,转型大数据真的与专业无关
  15. OpenStack搭建过程(随笔搭建)
  16. 【渝粤题库】国家开放大学2021春2114人体解剖生理学题目
  17. 【尚硅谷】新web项目-QQZone代码及详细解析
  18. [生而为人-思考] Knowledge Cooking -3rd 分享会记录
  19. android手机连接PC无法正常安装驱动
  20. objdump命令的使用

热门文章

  1. 如何统计网站各页面一天内的 PV 和 UV?
  2. asp.net mvc 微信支付代码分析(根据沐雪微信平台3.1商城业务来分析)
  3. 最全的 DB2 错误代码大全
  4. 大数据平台的防火墙、服务网关Knox
  5. ccf认证java编程环境是什么_CSP/CCF 认证, 关于编程语言选择.
  6. .net core 登入全局验证过滤器
  7. Java学习 布局管理器之GridLayout(网格布局)
  8. Gstreamer- QoS
  9. in perspective用法
  10. pytorch计算分类验证精度acc1,acc5代码