Transmission

【转】TCP/IP 系列之 TCP 流控与拥塞控制(一)

泄露秘密 提交于 2020-04-24 03:13:09
原文地址: http://mrpeak.cn/blog/tcp-flow-control00/ TCP/IP 系列之 TCP 流控与拥塞控制(一) TCP 流控(flow control)与拥塞控制(congestion control),是我个人认为每个 iOS 工程师都应该熟悉的,价值含量极高的知识点。明白了三次握手,但是不了解流控和拥塞控制背后的设计原理,是不能够在简历上写「精通 tcp/ip」的。 Flow control 和 congestion control 的学习价值高,而且学习过程也会很有趣。掌握整个过程的意义,远超过学习 TCP 协议本身。 不少工程师在工作三五年之后,会尝试提升代码抽象和设计的能力,有些会刻意去读一些架构或者设计方面的书、文章,早些年的时候,流行研究 GOF 的 Design Patterns。这是一个方向,但我个人觉得,更高效可行的方法是研究经典的计算机问题。经典问题里所包含的设计思路,模块划分方式,架构处理等等,都凝结了无数前辈的智慧,理清楚整个流程,再扒一扒设计的细节,抽象的能力会自然而然的随之提升,这是内功心法方面的积累,比记住几个设计模式如何使用,意义要大的多。 TCP 流控和拥塞控制就是这样一个经典的计算机问题。流控机制和拥塞控制机制,也是学习 TCP 协议栈的精华所在。这两个机制又各自包含一系列其他设计,比如 sliding

并发系列64章(TPL 数据流)第七章

梦想与她 提交于 2020-04-18 17:35:39
前言 什么是TPL?全称:transmission control protocol 传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。 然后思维方式回到为什么有这个TPL 数据流上。 TPL 数据流库向具有高吞吐量和低滞后时间的占用大量 CPU 和 I/O 操作的应用程序的并行化和消息传递提供了基础。 它还能显式控制缓存数据的方式以及在系统中移动的方式。 为了更好地了解数据流编程模型,请考虑一个以异步方式从磁盘加载图像并创建复合图像的应用程序。 传统编程模型通常需要使用回调和同步对象(例如锁)来协调任务和访问共享数据。 通过使用数据流编程模型,您可以从磁盘读取时创建处理图像的数据流对象。 在数据流模型下,您可以声明当数据可用时的处理方式,以及数据之间的所有依赖项。 由于运行时管理数据之间的依赖项,因此通常可以避免这种要求来同步访问共享数据。 此外,因为运行时计划基于数据的异步到达,所以数据流可以通过有效管理基础线程提高响应能力和吞吐量。 分析一下,这段话。 TPL 数据流库向具有高吞吐量和低滞后时间的占用大量 CPU 和 I/O 操作的应用程序的并行化和消息传递提供了基础。 解决一个问题就是: 高吞吐量和低滞后时间的占用大量 CPU 和 I/O 操作的应用程序。 如何解决的: 应用程序的并行化和消息传递提供了基础。通过并行解决的。 例子:

SQLSERVER数据库死锁与优化杂谈

走远了吗. 提交于 2020-04-17 20:28:38
死锁杂谈 当数据库死锁时,SqlServer会释放一个优先级较低的锁,让另一个事务运行;所以,即时去捕捉数据库死锁,是挺不容易的。 如果,数据库死锁比较长时间,那么死锁是可以被捕捉的。 可以用SqlServer活动监视器来查看,哪些进程锁了数据库。 首先打开SqlServer活动监视器,然后可以看到,界面里有进程,查看资源,数据文件I/O,最近消耗大量资源的查询四项。 四项显示内容如下: 进程:在进程里可以看到哪些进程被阻塞,查看属性【阻塞者】可以看到,【阻塞者】的会话ID。 等待资源:等待资源里有一些锁,可以看看那些锁累计等待时间较多。 数据文件I/O:数据文件I/O记录一些数据库MDF,LDF的读写速度。 最近消耗大量资源的查询:记录一些消耗资源较大的SQL查询。 查询进程里被死锁的会话ID,然后执行下面的SQL,进行解锁。 declare @spid int Set @spid = 518 --锁表进程会话ID declare @sql varchar(1000) set @sql='kill '+cast(@spid as varchar) exec(@sql) 也可以用下面SQL语句查询死锁进程,这样查询死锁进程,定位比较快。 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id

Java—网络编程总结(整理版)

自作多情 提交于 2020-04-13 18:30:58
【今日推荐】:为什么一到面试就懵逼!>>> 1. 概述   计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来的,实现资源共享和数据传输的系统。网络编程就是编写程序使互联网的两个(或多个)设备(如计算机)之间进行数据传输。Java语言对网络编程提供了良好的支持。通过其提供的接口我们可以很方便地进行网络编程。 2. 网络分层   计算机网络20世纪60年代出现,经历了20世纪70年代、80年代和90年代的发展,进入21世纪后,计算机网络已经成为信息社会的基础设施,深入到人类社会的方方面面,与人们的工作、学习和生活息息相关。计算机网络分为网络协议和网络体系结构。 2.1 网络体系结构   通过网络发送数据是一项复杂的操作,必须仔细地协调网络的物理特性以及所发送数据的逻辑特征。通过网络将数据从一台主机发送到另外的主机,这个过程是通过 计算机网络通信 来完成。   网络通信的不同方面被分解为 多个层 , 层与层之间用接口连接 。通信的双方具有相同的层次,层次实现的功能由 协议数据单元(PDU)来描述 。不同系统中的同一层构成对等层,对等层之间通过对等层协议进行通信,理解批次定义好的规则和约定。每一层表示为物理硬件(即线缆和电流)与所传输信息之间的不同抽象层次。在理论上,每一层只与紧挨其上和其下的层对话。将网络分层,这样就可以修改甚至替换某一层的软件

eMMC总线协议简析

帅比萌擦擦* 提交于 2020-04-12 16:40:12
目录 1. eMMC 总线接口 2. eMMC 总线模型 2.1 速率模式 2.2 通信模型 2.2.1 Read Data 2.2.2 Write Data 2.2.3 No Data 2.2.4 Command 2.2.5 Response 2.2.6 Data Block 2.2.7 CRC Status Token 3. eMMC 总线测试过程 4. eMMC 总线 Sampling Tuning 4.1 Sampling Tuning 流程 4.2 Tuning Block 数据 本文转载自: http://www.wowotech.net/basic_tech/emmc_bus_protocol.html 1. eMMC 总线接口 eMMC 总线接口定义如下图所示: 各个信号的描述如下: CLK CLK 信号用于从 Host 端输出时钟信号,进行数据传输的同步和设备运作的驱动。 在一个时钟周期内,CMD 和 DAT0-7 信号上都可以支持传输 1 个比特,即 SDR (Single Data Rate) 模式。此外,DAT0-7 信号还支持配置为 DDR (Double Data Rate) 模式,在一个时钟周期内,可以传输 2 个比特。 Host 可以在通讯过程中动态调整时钟信号的频率(注,频率范围需要满足 Spec 的定义)。通过调整时钟频率

前端面试复习:网络篇 | 30岁的我找工作好难

岁酱吖の 提交于 2020-04-10 16:22:37
前言 个人情况(陈年老词): 2020.1 公司因为业务调整,90% 被友好劝退了(N+1)。又逢疫情在家耗了 4 个月,3 月末开始找工作,发现都没人搭理我,快 30 的我开始慌了。 某晚看到 【新鲜面经】 四月面试不用慌,掘友攻略来帮忙| 掘金技术征文展(第一弹) ,深深佩服各位掘友的 掘学 出众,反思自己太“弱”了,就这段时间好好再巩固下前端知识点,希望也能找到个不错的工作。 这篇主要写下 网络相关 的知识点。后续还会涉及:数据结构、js、css、Vue 等一些能归纳的知识块,不会面面俱到,起码为后续自己面试有个足够的准备。 每篇内容肯定不够细致,更多扩展的地方可以看如下的“参考文章”。 参考文章 短期内,无法落地 demo 用于实践,多数还是借鉴网上各个作者的知识总结,这里为他们的付出表示感谢! 【掘金】2020年前端面试复习必读精选文章【赠复习导图】 【掘金】面试官,不要再问我三次握手和四次挥手 【头条】web 前端基础:浏览器的缓存机制 【头条】从事件轮询 Event Loop,看 microTask、macroTask 【bbsmax】HTTP2.0 简明笔记 【segmentfault】你真的了解回流和重绘吗 【github】浅说 XSS 和 CSRF TCP TCP/IP 四层网络模型 TCP(Transmission Control Protocol)

第七周作业

混江龙づ霸主 提交于 2020-04-07 10:35:54
1、简述osi七层模型和TCP/IP五层模型 OSI七层模型: 1、物理层:位于最低层,是传送 信号 的物理实体。它的功能是:通过机械和电气的方式将各站点连接起来,组成物理通路,以便使数据流通过。 2、数据链路层:数据链路层在物理层所提供的数据传输电路的基础上,提供了一条无差错的数据链路。其作用是进行二进制数据流的传输,并进行差错检测和流量控制。 3、网络层:处理报文分组,完成分组的多路复用和分组交换,以及通信子网络间的数据据传输。 4、传输层:实现端点到端点的可靠数据传输。 5、会话层:用于建立、控制和终止终端用户的实用进程间的逻辑信道的连接,并提供支持同步和管理应用进程间的对话服务,验证会话双方的身份,恢复下位层不呆恢复的差错。 6、 表示层:为用户应用进程提供了一系列统一的数据表示方式的服务,解决不同系统不同终端所用的信息代码和控制字符等的差异。 7、应用层:直接为端点用户提供服务 TCP/IP五层模型: 1、应用层(application layer) (1)直接为用户的应用进程提供服务。 (2)在因特网中的应用层协议有很多,eg:支持万维网应用的http协议,支持电子邮件的smtp协议,支持文件传送的ftp协议。 2、运输层(transport layer) (1)负责向两个主机中进程之间的通信提供服务。 (2)由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能

802.11协议精读26:802.11e(TXOP,Block_ACK)

风流意气都作罢 提交于 2020-03-23 22:10:32
3 月,跳不动了?>>> 序言 802.11e是802.11协议中,一个阶段性的改良版本。我们目前绝大部分802.11协议用到的MAC层接入机制,都是基于802.11e时期开始定义的。在802.11初期,仅有的PCF和DCF两种机制,不能够满足网络不同业务的增长,所以才有了802.11e诞生。在此之后,关于QoS问题也俨然成为802.11中的一个典型问题被进一步讨论,在实现上有ATF,在协议上还有802.11aa和802.11ae等相关版本,都是针对QoS而言的。 本文针对802.11e的相关功能做一份阐述。之前我们有一篇关于《 802.11协议精读21:802.11e的优先级 》阐述了802.11协议中的QoS映射关系,本文着重讨论的就是802.11中的协议规则,也就是当给数据包标记后,如何为其在无线端口提供QoS保障的功能。 Remark: 以下几篇有关802.11e的文章,参考《802.11 QoS Overview》 by Philippe Klein,该资料笔者也备份如下, 802.11e slide (Philippe Klein) 。 802.11e和WMM 802.11e于2004年正式通过,是802.11协议中关于QoS的一份重要补充。802.11协议最初是为了数据的无线通信,而针对于语音等相关有QoS需求的业务没有考虑。所以随着802.11发展的越来越快

802.11协议精读26:802.11e(TXOP,Block_ACK)

廉价感情. 提交于 2020-03-20 23:47:52
3 月,跳不动了?>>> 序言 802.11e是802.11协议中,一个阶段性的改良版本。我们目前绝大部分802.11协议用到的MAC层接入机制,都是基于802.11e时期开始定义的。在802.11初期,仅有的PCF和DCF两种机制,不能够满足网络不同业务的增长,所以才有了802.11e诞生。在此之后,关于QoS问题也俨然成为802.11中的一个典型问题被进一步讨论,在实现上有ATF,在协议上还有802.11aa和802.11ae等相关版本,都是针对QoS而言的。 本文针对802.11e的相关功能做一份阐述。之前我们有一篇关于《 802.11协议精读21:802.11e的优先级 》阐述了802.11协议中的QoS映射关系,本文着重讨论的就是802.11中的协议规则,也就是当给数据包标记后,如何为其在无线端口提供QoS保障的功能。 Remark: 以下几篇有关802.11e的文章,参考《802.11 QoS Overview》 by Philippe Klein,该资料笔者也备份如下, 802.11e slide (Philippe Klein) 。 802.11e和WMM 802.11e于2004年正式通过,是802.11协议中关于QoS的一份重要补充。802.11协议最初是为了数据的无线通信,而针对于语音等相关有QoS需求的业务没有考虑。所以随着802.11发展的越来越快

15 款免费好用的 Mac App

倖福魔咒の 提交于 2020-03-04 11:03:00
原文链接: Top 15 Free and Useful Micro Apps for Mac 1. Skitch 来自 Evernote 的这款截屏应用能够帮助你截取屏幕上的任何东西,并且保存到 Evernote 账户上。 Skitch 是 Mac 独占应用。 2. Simplenote 这款应用能够让你快速建立和收藏笔记并且 同步到所有设备 ,它没有 Evernote 那么复杂的功能,简单正是它的特点。 3. Jumpcut Jumpcut 可能是 最轻量的剪切板管理器 ,它没有很多花哨的特性。它可以容纳几乎无限条剪贴板历史记录,并且提供简单的方式来快速使用它们。 4. Calq 如果你需要 快速地启动一个简单计算器 ,可以尝试一下 Calq 。使用快捷键快速唤出,输入数字就可以得到结果,并且可以复制粘贴结果到其他地方。 5. f.lux 如果你大部分时间的盯着电脑屏幕,你会发现你的眼睛在晚上会比在白天更容易感到疲惫。这款应用可以 在晚上自动调节你的屏幕颜色 来让你的眼睛感到舒服,并且在白天让显示器恢复成正常状态。 6. Bean 一款轻量级的文本编辑器。 7. CheatSheet 使用鼠标来操作电脑没有使用快捷键的方式快。但是记住这些快捷键十分困难,除非你使用 CheatSheet。长按 Command 键唤醒 CheatSheet 来显示当前使用的 App