邯郸营销网站建设公司,网络推广文案策划书,濮阳网站开发,wordpress普通用户登录职业生涯规划
Android系统的市场地位
Android程序开发的技能成长经验
Android程序员为什么需要学习Html5
Android软件工程师为什么不会被前端替代
为什么小程序无法替代原生开发
为什么Html5无法取代NativeAPP
Html5在Android中的应用场景
如何成为一名合格的高级Android程序员…职业生涯规划
Android系统的市场地位
Android程序开发的技能成长经验
Android程序员为什么需要学习Html5
Android软件工程师为什么不会被前端替代
为什么小程序无法替代原生开发
为什么Html5无法取代NativeAPP
Html5在Android中的应用场景
如何成为一名合格的高级Android程序员TCP与UDP的区别
TCP面向连接的, 传输数据时需先进行三次握手,建立连接UDP是无连接的发送数据之前不需要建立连接TCP通过确认和重传机制提供可靠的服务。即通过TCP连接传送的数据无差错不丢失不重复且按序到达而UDP不保证可靠传输,只是尽可能得交付TCP面向字节流即将数据看成一连串无结构的字节流。UDP是面向报文的,UDP没有拥塞控制因此网络出现拥塞不会使源主机的发送速率降低对实时应用很有用如IP电话实时视频会议等每一条TCP连接只能是点到点的;UDP支持一对一一对多多对一和多对多的交互通信TCP的逻辑通信信道是全双工的可靠信道UDP则是不可靠信道
TCP的三次握手和四次挥手 这个概念大家一定不陌生我以前写过一篇详细关于TCP的三次握手和四次挥手的文章可以参考这里就不赘述 TCP流量控制 很多人会将流量控制和拥塞控制搞混所以单独拎出来考究细节 流量控制如果发送者发送数据过快接收者来不及接收那 点击领取完整开源项目《安卓学习笔记总结最新移动架构视频大厂安卓面试真题项目实战源码讲义》 么就会有分组丢失。流量控制策略就是控制发送者的发送速度使得接收者来得及接收,达到不丢失分组的目的。流量控制是构成TCP可靠性的一方面。 流量控制主要使用滑动窗口机制实现。下面以上图讲解滑动窗口(也叫接受窗口rwnd)的细节
主机A向主机B发送数据开始双方确定的窗口值为400字节,这两个是前提条件。开始A发送了200字节之后发生了分组丢失现象B调整接受窗口大小为300字节。之后A又连续发送了300字节。此时A已经不能发送数据需等待B的窗口信号。之后B调整窗口为100字节。接收到100字节数据后调整窗口值为0表示暂时不想接受数据。总共B调整了三次窗口大小进行了三次流量控制
假如B向A发送了零窗口的报文段后不久B的接收缓存又有了一些存储空间。于是B向A发送了rwind400的报文段然而这个报文段在传送中丢失 了。A一直等待收到B发送的非零窗口的通知而B也一直等待A发送的数据。这样就死锁了。为了解决这种死锁状态TCP为每个连接设有一个持续计时器。只 要TCP连接的一方收到对方的零窗口通知就启动持续计时器若持续计时器设置的时间到期就发送一个零窗口探测报文段仅携带1字节的数据而对方就在确认这个探测报文段时给出了现在的窗口值。
TCP拥塞控制 拥塞控制大家都能背出来什么慢开始、拥塞避免、快重传、快恢复大家都耳熟能详但是有些细节问题可以大家没有留意比如快重传阶段后为什么不直接进入慢开始阶段而是进入拥塞避免阶段 拥塞的概念在某段时间对网络中的某一资源的需求超过了该资源所能提供的可用部分网络的性能就要变化这种情况叫拥塞。网络拥塞往往是由许多因素引起的简单的提高节点处理机的速度或者扩大结点缓存的存储空间并不能解决拥塞问题。拥塞问题的是指往往是整个系统的各个部分不匹配只有各个部分平衡了问题才会得到解决。
拥塞控制防止过多的数据注入到网络导致网络中的路由器或链路过载。
流量控制和拥塞控制的区别可以看出流量控制是一个端到端的问题而拥塞控制是一个全局性问题设计到所有的主机、所有的路由器。 慢开始乘法增加
发送方维持一个拥塞窗口cwnd大小取决于网络的拥塞程度动态地在变化。发送窗口小于等于拥塞窗口而发送窗口一定不能超过接收窗口。发送方控制拥塞窗口的原则是只要网络没有出现拥塞拥塞窗口就增大一些以便把更多的分组发送出去。但是只要网络出现拥塞拥塞窗口就减小一些以减少注入到网络的分组数。
开始时如果发送大量数据包容易导致网络中路由器缓冲空间耗尽从而发生拥塞。所以新建连接时cwnd初始化为1个最大报文段(MSS)大小每经过一个迭代拥塞窗口就乘以2所以也称为乘法增加阶段。拥塞窗口不可能一直增大所以一般会设置一个慢开始门限ssthresh.
当cwndssthresh时使用慢开始算法。当cwndssthresh时改用拥塞避免算法。 拥塞避免加法增大
一旦达到慢开始的初始门限ssthresh,就进入了拥塞避免阶段。每一个迭代拥塞窗口加1而不是加一倍
快重传
快重传算法规定发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段而不必继续等待设置的重传计时器时间到期。快重传策略是为了防止TCP连接因等待重传计时器超时而空闲较长的时间。
快恢复
快重传和快恢复是搭配使用的快重传完成后立即执行快恢复算法。将ssthresh门限设置为当前拥塞窗口的一半之后将拥塞窗口设置为新的ssthresh门限(即减半), 进入拥塞避免阶段。
这里可能会有人有疑问为什么不直接进入慢开始阶段更彻底得避免拥塞。**主要的原因是考虑到如果网络出现拥塞得话就不会收到多次重复确认所以发送方认为网络可能没有出现拥塞所以不执行慢开始算法而是将cwnd设置为新得ssthresh门限执行拥塞避免算法
文末
初级工程师拿到需求会直接开始做然后做着做着发现有问题了要么技术实现不了要么逻辑有问题。
而高级工程师拿到需求会考虑很多技术的可行性对现有业务有没有帮助对现有技术架构的影响扩展性如何等等…之后才会再进行设计编码阶段。
而现在随着跨平台开发混合式开发前端开发之类的热门Android开发者需要学习和掌握的技术也在不断的增加。
通过和一些行业里的朋友交流讨论以及参考现在大厂面试的要求。我们花了差不多一个月时间整理出了这份Android高级工程师需要掌握的所有知识体系。你可以看下掌握了多少。
混合式开发微信小程序。都是得学会并且熟练的 这些是Android相关技术的内核还有Java进阶 高级进阶必备的一些技术。像移动开发架构项目实战等 Android前沿技术包括了组件化热升级和热修复以及各种架构跟框架的详细技术体系 以上即是我们整理的Android高级工程师需要掌握的技术体系了。可能很多朋友觉得很多技术自己都会了只是一些新的技术不清楚而已。应该没什么太大的问题。
而这恰恰是问题所在为什么别人高级工程师能年限突破30万而你只有十几万呢
就因为你只需补充你自己认为需要的但并不知道企业需要的。这个就特别容易造成差距。因为你的技术体系并不系统是零碎的散乱的。那么你凭什么突破30万年薪呢
我这些话比较直接可能会戳到一些人的玻璃心但是我知道肯定会对一些人起到点醒的效果的。而但凡只要有人因为我的这份高级系统大纲以及这些话找到了方向并且付出行动去提升自我为了成功变得更加努力。那么我做的这些就都有了意义。
喜欢的话请帮忙转发点赞一下能让更多有需要的人看到吧。谢谢
以上系统大纲里包含的所有技术资料我这里都有的。可以免费分享给有需要的朋友
了方向并且付出行动去提升自我为了成功变得更加努力。那么我做的这些就都有了意义。
喜欢的话请帮忙转发点赞一下能让更多有需要的人看到吧。谢谢
以上系统大纲里包含的所有技术资料我这里都有的。可以免费分享给有需要的朋友
资料领取方式点击我的GitHub