全网最具深度的三次握手、四次挥手讲解,深夜思考
1、上下文切换
上下文定义
cpu发生进程或者线程切换时,所依赖的数据集合,比如一个函数有外部变量,函数运行时,必须获取外部变量,这些变量值的集合就是上下文。
引发问题
对于CPU密集型任务,多线程处理会发生上下文切换,会影响到执行速度,如果时IO密集型,多线程技术优点尽显。
如何减少上下文切换
- 无锁并发编程,锁的获取与释放会发生上下文切换,多线程时会影响效率。无锁并发编程就是将数据分块,每个线程处理各自模块。比如LongAdder中部分代码。
- CAS算法,并发编程时通过CAS算法更新数据,而不必加锁。如Java的atomic包下的工具类。
- 使用最少线程,减少不必要的线程创建,自定义线程池。
- 使用协程,在单线程中维护多任务调度,处理任务间切换,Golang对于协程的使用很强大。
2、死锁
死锁定义
死锁是进程死锁的简称,是由Dijkstra于1965年研究银行家算法时首先提出来的。
系统发生死锁现象不仅浪费大量的系统资源,甚至导致整个系统崩溃,带来灾难性后果。
产生死锁原因
- 系统资源不足
- 进程推进顺序不当
- 资源分配不合理
死锁产生的必要条件
- 互斥条件:一个资源只能被一个进程或者线程使用。
- 请求和保持条件:一个进程或者线程,请求资源的时候发生阻塞,对已经获取的资源保持不放。
- 不可剥夺条件:进程或者线程以获得的资源,在未使用完成时,不能强行剥夺。
- 循环等待条件:若干进程或者线程形成一种头尾相接的循环等待的资源关系。
这四分条件是死锁产生的必要条件,只要发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
如何避免死锁
- 以确定的顺序获得锁
- 加锁时限
Lock接口提供了boolean tryLock(long time, TimeUnit unit) throws InterruptedException方法,该方法可以按照固定时长等待锁,因此线程可以在获取锁超时以后,主动释放之前已经获得的所有的锁。
总结
虽然面试套路众多,但对于技术面试来说,主要还是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。
上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料都是免费分享的,有需要学习的小伙伴可以直接点点点点点这里免费下载
习的小伙伴可以直接点点点点点这里免费下载**
有些面试官喜欢问自己擅长的问题,比如在实际编程中遇到的或者他自己一直在琢磨的这方面的问题,还有些面试官,尤其是大厂的比如 BAT 的面试官喜欢问面试者认为自己擅长的,然后通过提问的方式深挖细节,刨根到底。
全网最具深度的三次握手、四次挥手讲解,深夜思考相关推荐
- 干货分享!全网最具深度的三次握手、四次挥手讲解,看这一篇就够了!
安卓基础知识 安卓基础知识确实很多,如果日常积累不够的话确实比较头晕,比如我承认我只在 APP 升级的时候搞过一个前台的 Service,但是面试的时候就会问你 Service 生命周期,如何绑定,如 ...
- 全网最具深度的三次握手、四次挥手讲解,知乎上已获万赞
越来越多的人在提"移动端的下半场"."Android 开发的焦虑"之类的,也有人在喊"技术天天在变,学也学不完","昨天 Kotl ...
- 程序员如何解决中年危机?全网最具深度的三次握手、四次挥手讲解,附面试题答案
前言 今天我给大家再次分享一下,我最近的一些读书的感想,思考起来,确实能够给自己带来一些真实的帮助和启发,希望大家在平时的工作学习中,也能够认清楚学习的一些本质. 如果我们的学习是在不断掌握应对具体工 ...
- 面试学习!全网最具深度的三次握手、四次挥手讲解,已拿到offer
前言 "金三银四"再过几天就到了,又到了一年一度的大型**"程序猿跳槽大会"**.作为大龄IT从业者的我们,每到这个时候就会想起年轻时的自己,为了能搞定面试官, ...
- 全网最具深度的三次握手、四次挥手讲解,稳进大厂
如何学习TCP/IP? <TCP/IP核心解读>是一份介绍互联网核心协议TCP/IP知识的科普性读物,内容不仅包括TCP/IP的起源.组成.规则.应用.路由协议.常用命令.主流技术,还涵盖 ...
- go tcp客户端自动重连_阿里面试: HTTP、HTTPS、TCP/IP、三次握手四次挥手过程?(附全网最具深度讲解)
前言 这段时间面试官都挺忙的,频频出现在博客文章标题,虽然我不是特别想蹭热度,但是实在想不到好的标题了-.-,蹭蹭就蹭蹭 :) 事实上我在阿里面试的时候确实被问到了这个问题,HTTP.HTTPS.TC ...
- ssh协议是osi_TCP/IP协议和三次握手四次挥手
计算机网络体系结构 在计算机网络的基本概念中,分层次的体系结构是最基本的.计算机网络体系结构的抽象概念较多,在学习时要多思考.这些概念对后面的学习很有帮助. 网络协议是什么? 在计算机网络要做到有条不 ...
- 在深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP
如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...
- java锁一次交互二次握手_Java后台开发面试实战(二):TCP三次握手四次挥手
感谢牛客网网友提供的面试经验! 1. 解释一下TCP三次握手四次挥手 图片来源于微信公众号:码农求职小助手 答: 嗯(稍作思考)- 三次握手简单来说,在数据传输开始前: 第一次握手:客户端向服务端发送 ...
最新文章
- 漫画说算法--动态规划算法三(绝对通俗易懂,非常棒)
- java文件名大小_java 比较指定文件夹内.txt文件名的大小
- Django套用现成模板,导入css,js,images等文件【转】
- 清除浏览器缓存之后为什么还是显示旧的html页面_Web缓存控制策略详解
- .NET Core中使用Razor模板引擎
- pandas的apply函数解析
- hystrix 页面_《SpringCloud微服务之Hystrix组件》
- CCF201803-4 棋局评估(100分)【博弈+DFS】
- 51-高级路由:BGP community属性:local-as
- 罗马时钟代码html,用Html实现炫酷罗马时钟
- JAVA商城系统开发 VS PHP商城系统开发
- Eplan教学视频合集-百度网盘-收集于网络,供参考
- 小米mix2安兔兔html5跑分,小米MIX 2S跑分多少?高通骁龙845安兔兔跑分实测 (全文)...
- 互联网日报 | 京东健康提交赴港上市招股书;荣耀联合美团推出“共享笔记本”服务;携程获第三方支付牌照...
- 使用科大讯飞SDK实现语音功能
- 苹果cms新手快速入门常见问题汇总及解决教程
- RACV2022观点集锦 | 视觉基础模型
- 【C# Opencv机器视觉】 Opencv水位检测、液体高度检测、卡尺高度检测
- Simulink导出FMU方法
- 【万字长文】——作者底层逻辑辨析【自组织场景宣言】,拉开未来序幕!
热门文章
- Mybatis问题解释?
- pytorch scatter_函数学习笔记
- 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 | ICLR 2021
- android camera之nv21旋转
- log_softmax
- Please use HDF reader for matlab v7.3 files
- python opencv 视频剪辑
- UnicodeEncodeError: 'ascii' codec can't encode character '\xe3' in position 0: ordinal not in range
- numpy.core.multiarray failed to import
- Win32 OpenGL标准例子