自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(304)
  • 收藏
  • 关注

原创 Java值传递和引用传递

值传递和引用穿点参数类型:形参:方法被调用时需要传递进来的参数,如func(int m) 它猪油在func1调用期间m才有意义,也就是会被分配内存空间,在方法func1执行完成后,a就会被销毁释放空间,也就是不存在了实参:方法被调用时是传入的实际值,它在被调用前就已经是初始化并且在方法被调用时传入值传递与引用传递值传递:在方法被调用时,实参通过形参把它的内容副本传入方法内部,此时形参接收到的内容是实参值的一个拷贝,因此在方法内对形参的任何操作,都仅仅是对这个副本的操作,不影响原始值的内容,值

2022-01-05 22:00:56 335

原创 冒泡排序和优化

冒泡排序算法原理:(从小到大排序)1.比较相邻的元素。如果第一个比第二个大,就交换他们两个2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,交换一趟后,最后的元素会是最大的数3.针对所有的元素重复以上的步骤,除了最后一个4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较源码 public static void search2(int[] nums) { int[] list = {2,1,3,6,5}; in

2022-01-03 10:26:05 765

原创 09. 软件测试工程师的核心竞争力是什么

文章目录例子:传统测试工程师师应该具备的核心竞争力第一项核心竞争力,测试策略设计能力第二项核心竞争力,测试用例设计能力第三项核心竞争力,快速学习能力第四项核心竞争力,探索性测试思维第五项核心竞争力,缺陷分析能力第六项核心竞争力,自动化测试技术第七项核心竞争力,良好的沟通能力测试开发工程师的核心竞争力第一项核心竞争力,测试系统需求分析能力第二项核心竞争力,更宽广的知识体系总结例子:案例一来自我们的资深功能测试工程师招聘。当时,有一位拥有近 9 年测试经验的资深测试候选人,我对他的简历还是比较满意的,所

2021-12-19 17:17:28 564

原创 08.如何才能做好测试计划

软件项目,通常都会有详细的项目计划。软件测试作为整个项目中的重要一环,也要执行详细的测试计划。正所谓运筹帷幄之中,决胜千里之外,强调的就是预先计划的重要性和必要性。在早期的软件工程实践中,软件测试计划的制定通常是在需求分析以及测试需求分析完成后开始,并且是整个软件研发生命周期中的重要环节。但是,在敏捷开发模式下,你可能会有这样的疑问,软件测试计划还有那么重要吗?我所在的软件项目压根儿就没有正式的测试计划,不也没出什么大问题吗?的确,对于很多非产品型的互联网公司,由于采用了敏捷开发模式,的确很少去制定传

2021-12-19 17:10:10 484

原创 07.如何高效填写软件缺陷报告

文章目录缺陷标题缺陷概述缺陷影响环境配置前置条件缺陷重现步骤期望结果和实际结果优先级(Priority)和严重程度(Severity)变通方案(Workaround)根原因分析(Root Cause Analysis)附件(Attachment)总结测试工程师需要利用对需求的理解、高效的执行力以及严密的逻辑推理能力,迅速找出软件中的潜在缺陷,并以缺陷报告的形式递交给开发团队,这看起来是不是有点像侦探柯南呢。缺陷报告是测试工程师与开发工程师交流沟通的重要桥梁,也是测试工程师日常工作的重要输出。 作为优秀的

2021-12-19 17:04:51 199

原创 06.测试覆盖率

文章目录需求覆盖率代码覆盖率代码覆盖率的价值代码覆盖率的局限性代码覆盖率工具代码覆盖率工具的实现原理第一,On-The-Fly 注入模式第二,Offline 注入模式总结测试覆盖率通常被用来衡量测试的充分性和完整性,从广义的角度来讲,测试覆盖率主要分为两大类,一类是面向项目的需求覆盖率,另一类是更偏向技术的代码覆盖率。需求覆盖率需求覆盖率是指测试对需求的覆盖程度,通常的做法是将每一条分解后的软件需求和对应的测试建立一对多的映射关系,最终目标是保证测试可以覆盖每个需求,以保证软件产品的质量。我们通常采

2021-12-19 17:01:05 494

原创 05.软件开发各阶段都有哪些自动化测试技术吗?

说到自动化测试,你可能最为熟悉的就是 GUI 自动化测试了。比如,早年的 C/S 架构,通常就是用自动化测试脚本打开被测应用,然后在界面上以自动化的方式执行一系列的操作;再比如,现今的 Web 站点测试,也是用自动化测试脚本打开浏览器,然后输入要访问的网址,之后用自动化脚本识别定位页面元素,并进行相应的操作。因此,说到自动化测试时,你的第一反应很可能就是 GUI 自动化测试。然而,在软件研发生命周期的各个阶段都有自动化测试技术的存在,并且对提升测试效率有着至关重要的作用。今天这篇文章,我将会以不同的软件

2021-12-19 16:53:58 163

原创 04.为什么要做自动化测试?什么样的项目适合做自动化测试?

文章目录什么是自动化测试?为什么需要自动化测试?什么样的项目适合自动化测试?第一,需求稳定,不会频繁变更。第二,研发和维护周期长,需要频繁执行回归测试。第三,需要在多种平台上重复运行相同测试的场景。第四,某些测试项目通过手工测试无法实现,或者手工成本太高。第五,被测软件的开发较为规范,能够保证系统的可测试性。第六,测试人员已经具备一定的编程能力。总结什么是自动化测试?不管你是刚入行的小白,还是已经在做软件测试的工作,相信你一定听说过或者接触过自动化测试。那么,自动化测试到底是什么意思呢?顾名思义,自动

2021-12-19 16:44:37 754

原创 03.什么是单元测试?如何做好单元测试?

文章目录什么是单元测试?如何做好单元测试?第一,代码的基本特征与产生错误的原因第二,单元测试用例详解第三,驱动代码,桩代码和 Mock 代码实际项目中如何开展单元测试?总结什么是单元测试?分享一个工厂生产电视机的例子。工厂首先会将各种电子元器件按照图纸组装在一起构成各个功能电路板,比如供电板、音视频解码板、射频接收板等,然后再将这些电路板组装起来构成一个完整的电视机。如果一切顺利,接通电源后,你就可以开始观看电视节目了。但是很不幸,大多数情况下组装完成的电视机根本无法开机,这时你就需要把电视机拆开,

2021-12-19 16:30:52 578

原创 02.如何设计一个“好的”测试用例?

文章目录什么才算是“好的”测试用例?“好的”测试用例必须具备哪些特征?三种最常用的测试用例设计方法第一,等价类划分方法第二,边界值分析方法第三,错误推测方法如何才能设计出“好的”测试用例?用例设计的其他经验总结什么才算是“好的”测试用例?通常,你的第一反应很可能会是“发现了软件缺陷的测试用例就是好的用例”,我可能会反问你“如果说测试用例发现了缺陷就是好用例,那么在该缺陷被修复后,同样的用例难道就不是好用例了吗?”。你可能还会说“发现软件缺陷可能性大的测试用例就是好用例”,这话看起来还是蛮有道理的,但是

2021-12-19 16:16:39 326

原创 01.测试用户登录”测试谈起

作为测试工程师,你的目标是要保证系统在各种应用场景下的功能是符合设计要求的,所以你需要考虑的测试用例就需要更多、更全面,于是你可能会根据“用户登录”功能的需求描述,结合等价类划分和边界值分析方法来设计一系列的测试用例常见的黑盒测试方法等价类划分方法,是将所有可能的输入数据划分成若干个子集,在每个子集中,如果任意一个输入数据对于揭露程序中潜在错误都具有同等效果,那么这样的子集就构成了一个等价类。后续只要从每个等价类中任意选取一个值进行测试,就可以用少量具有代表性的测试输入取得较好的测试覆盖结果。边界值

2021-12-19 15:51:35 370

原创 HTTP/2特性概览

文章目录为什么不是 HTTP/2.0兼容 HTTP/1头部压缩二进制格式虚拟的“流”强化安全协议栈总结在第 14 讲里,我们看到 HTTP 有两个主要的缺点:安全不足和性能不高。刚结束的“安全篇”里的 HTTPS,通过引入 SSL/TLS 在安全上达到了“极致”,但在性能提升方面却是乏善可陈,只优化了握手加密的环节,对于整体的数据传输没有提出更好的改进方案,还只能依赖于“长连接”这种“落后”的技术(参见第 17 讲)。所以,在 HTTPS 逐渐成熟之后,HTTP 就向着性能方面开始“发力”,走出了另一

2021-11-29 18:36:02 114

原创 我应该迁移到HTTPS吗?

文章目录迁移的必要性迁移的顾虑申请证书配置 HTTPS服务器名称指示重定向跳转总结“HTTPS 这么复杂,我是否应该迁移到 HTTPS 呢?它能带来哪些好处呢?具体又应该怎么实施迁移呢?”这些问题不单是你,也是其他很多人,还有当初的我的真实想法,所以今天我就来跟你聊聊这方面的事情。迁移的必要性如果你做移动应用开发的话,那么就一定知道,Apple、Android、某信等开发平台在 2017 年就相继发出通知,要求所有的应用必须使用 HTTPS 连接,禁止不安全的 HTTP。在台式机上,主流的浏览器

2021-11-29 18:35:42 111

原创 连接太慢该怎么办:HTTPS的优化

文章目录硬件优化软件优化协议优化证书优化会话复用会话票证预共享密钥总结你可能或多或少听别人说过,“HTTPS 的连接很慢”。那么“慢”的原因是什么呢?通过前两讲的学习,你可以看到,HTTPS 连接大致上可以划分为两个部分,第一个是建立连接时的非对称加密握手,第二个是握手后的对称加密报文传输。由于目前流行的 AES、ChaCha20 性能都很好,还有硬件优化,报文传输的性能损耗可以说是非常地小,小到几乎可以忽略不计了。所以,通常所说的“HTTPS 连接慢”指的就是刚开始建立连接的那段时间。在 TCP

2021-11-29 18:35:21 1608

原创 TLS1.3特性解析

文章目录最大化兼容性强化安全提升性能握手分析总结TLS1.2 已经是 10 年前(2008 年)的“老”协议了,虽然历经考验,但毕竟“岁月不饶人”,在安全、性能等方面已经跟不上如今的互联网了。于是经过四年、近 30 个草案的反复打磨,TLS1.3 终于在去年(2018 年)“粉墨登场”,再次确立了信息安全领域的新标准。在抓包分析握手之前,我们先来快速浏览一下 TLS1.3 的三个主要改进目标:兼容、安全与性能。最大化兼容性由于 1.1、1.2 等协议已经出现了很多年,很多应用软件、中间代理(官方称

2021-11-29 18:35:00 355

原创 TLS1.2连接过程解析

文章目录HTTPS 建立连接TLS 协议的组成抓包的准备工作ECDHE 握手过程RSA 握手过程双向认证总结HTTPS 建立连接当你在浏览器地址栏里键入“https”开头的 URI,再按下回车,会发生什么呢?回忆一下第 8 讲的内容,你应该知道,浏览器首先要从 URI 里提取出协议名和域名。因为协议名是“https”,所以浏览器就知道了端口号是默认的 443,它再用 DNS 解析域名,得到目标的 IP 地址,然后就可以使用三次握手与网站建立 TCP 连接了。在 HTTP 协议里,建立连接后,浏览器会

2021-11-29 18:34:33 467

原创 数字签名与证书

文章目录摘要算法完整性数字签名数字证书和 CA证书体系的弱点总结我们讲到了对称加密和非对称加密,以及两者结合起来的混合加密,实现了机密性。但仅有机密性,离安全还差的很远。黑客虽然拿不到会话密钥,无法破解密文,但可以通过窃听收集到足够多的密文,再尝试着修改、重组后发给网站。因为没有完整性保证,服务器只能“照单全收”,然后他就可以通过服务器的响应获取进一步的线索,最终就会破解出明文。另外,黑客也可以伪造身份发布公钥。如果你拿到了假的公钥,混合加密就完全失效了。你以为自己是在和“某宝”通信,实际上网线的另

2021-11-29 15:30:39 97

原创 对称加密与非对称加密1_安全

文章目录对称加密加密分组模式非对称加密混合加密总结我们初步了解了 HTTPS,知道 HTTPS 的安全性是由 TLS 来保证的。你一定很好奇,它是怎么为 HTTP 增加了机密性、完整性,身份认证和不可否认等特性的呢?先说说机密性。它是信息安全的基础,缺乏机密性 TLS 就会成为“无水之源”“无根之木”。实现机密性最常用的手段是“加密”(encrypt),就是把消息用某种方式转换成谁也看不懂的乱码,只有掌握特殊“钥匙”的人才能再转换出原始文本。这里的“钥匙”就叫做“密钥”(key),加密前的消息叫“

2021-11-29 15:29:32 122

原创 SSL/TLS又是什么_安全

文章目录为什么要有 HTTPS?什么是安全?什么是 HTTPS?SSL/TLSOpenSSL总结为什么要有 HTTPS?简单的回答是“因为 HTTP 不安全”。由于 HTTP 天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求 / 响应报文,数据不具有可信性。比如,前几讲中说过的“代理服务”。它作为 HTTP 通信的中间人,在数据上下行的时候可以添加或删除部分头字段,也可以使用黑白名单过滤 body 里的关键字,甚至直接发送虚假的请求、响应,而浏览器和源服务器都没有

2021-11-28 18:29:23 91

原创 HTTP的缓存代理_进阶

文章目录缓存代理服务源服务器的缓存控制客户端的缓存控制实验环境其他问题总结我介绍了 HTTP 的缓存控制,第 21 讲我介绍了 HTTP 的代理服务。那么,把这两者结合起来就是这节课所要说的“缓存代理”,也就是支持缓存控制的代理服务。之前谈到缓存时,主要讲了客户端(浏览器)上的缓存控制,它能够减少响应时间、节约带宽,提升客户端的用户体验。但 HTTP 传输链路上,不只是客户端有缓存,服务器上的缓存也是非常有价值的,可以让请求不必走完整个后续处理流程,“就近”获得响应结果。特别是对于那些“读多写少”的

2021-11-28 18:25:18 773

原创 HTTP的代理服务_进阶

文章目录代理服务代理的作用代理相关头字段代理协议总结在前面讲 HTTP 协议的时候,我们严格遵循了 HTTP 的“请求 - 应答”模型,协议中只有两个互相通信的角色,分别是“请求方”浏览器(客户端)和“应答方”服务器。今天,我们要在这个模型里引入一个新的角色,那就是HTTP 代理。引入 HTTP 代理后,原来简单的双方通信就变复杂了一些,加入了一个或者多个中间人,但整体上来看,还是一个有顺序关系的链条,而且链条里相邻的两个角色仍然是简单的一对一通信,不会出现越级的情况。链条的起点还是客户端(也就是浏

2021-11-28 16:10:40 118

原创 HTTP的缓存控制_进阶

缓存(Cache)是计算机领域里的一个重要概念,是优化系统性能的利器。由于链路漫长,网络时延不可控,浏览器使用 HTTP 获取资源的成本较高。所以,非常有必要把“来之不易”的数据缓存起来,下次再请求的时候尽可能地复用。这样,就可以避免多次请求 - 应答的通信成本,节约网络带宽,也可以加快响应速度。试想一下,如果有几十 K 甚至几十 M 的数据,不是从网络而是从本地磁盘获取,那将是多么大的一笔节省,免去多少等待的时间。实际上,HTTP 传输的每一个环节基本上都会有缓存,非常复杂。基于“请求 - 应答”

2021-11-28 15:53:08 79

原创 HTTP的Cookie机制_进阶

文章目录什么是 Cookie?Cookie 的工作过程Cookie 的属性Cookie 的应用总结曾经说过,HTTP 是“无状态”的,这既是优点也是缺点。优点是服务器没有状态差异,可以很容易地组成集群,而缺点就是无法支持需要记录状态的事务操作。好在 HTTP 协议是可扩展的,后来发明的 Cookie 技术,给 HTTP 增加了“记忆能力”。什么是 Cookie?不知道你有没有看过克里斯托弗·诺兰导演的一部经典电影《记忆碎片》(Memento),里面的主角患有短期失忆症,记不住最近发生的事情。比如,

2021-11-28 15:47:54 1037

原创 四通八达:HTTP的重定向和跳转_进阶

为了实现在互联网上构建超链接文档系统的设想,蒂姆·伯纳斯 - 李发明了万维网,使用 HTTP 协议传输“超文本”,让全世界的人都能够自由地共享信息。“超文本”里含有“超链接”,可以从一个“超文本”跳跃到另一个“超文本”,对线性结构的传统文档是一个根本性的变革。能够使用“超链接”在网络上任意地跳转也是万维网的一个关键特性。它把分散在世界各地的文档连接在一起,形成了复杂的网状结构,用户可以在查看时随意点击链接、转换页面。再加上浏览器又提供了“前进”“后退”“书签”等辅助功能,让用户在文档间跳转时更加方便,有

2021-11-28 15:34:49 1322

原创 排队也要讲效率:HTTP的连接管理_进阶

文章目录短连接长连接连接相关的头字段队头阻塞性能优化总结我曾经提到过 HTTP 的性能问题,用了六个字来概括:“不算差,不够好”。同时,我也谈到了“队头阻塞”,但由于时间的限制没有展开来细讲,这次就来好好地看看 HTTP 在连接这方面的表现。HTTP 的连接管理也算得上是个“老生常谈”的话题了,你一定曾经听说过“短连接”“长连接”之类的名词,今天让我们一起来把它们弄清楚。短连接HTTP 协议最初(0.9/1.0)是个非常简单的协议,通信过程也采用了简单的“请求 - 应答”方式。它底层的数据传输基于

2021-11-28 15:13:23 897

原创 HTTP有哪些优点?又有哪些缺点?

文章目录优点简单、灵活、易于扩展应用广泛、环境成熟缺点无状态明文不安全性能总结额外知识今天的讨论范围仅限于 HTTP/1.1,所说的优点和缺点也仅针对 HTTP/1.1。实际上,后续要讲的 HTTPS 和 HTTP/2 都是对 HTTP/1.1 优点的发挥和缺点的完善。优点简单、灵活、易于扩展首先,HTTP 最重要也是最突出的优点是“简单、灵活、易于扩展”。初次接触 HTTP 的人都会认为,HTTP 协议是很“简单”的,基本的报文格式就是“header+body”,头部信息也是简单的文本格式,用的

2021-11-28 13:29:55 180

原创 HTTP的实体数据_进阶

文章目录数据类型与编码数据类型使用的头字段语言类型与编码语言类型使用的头字段内容协商的质量值内容协商的结果动手实验总结在前面里我们了解了 HTTP 报文的结构,知道一个 HTTP 报文是由“header+body”组成的。但那时我们主要研究的是 header,没有涉及到 body。所以,这次就从 HTTP 的 body 谈起。数据类型与编码在 TCP/IP 协议栈里,传输数据基本上都是“header+body”的格式。但 TCP、UDP 因为是传输层的协议,它们不会关心 body 数据是什么,只要把数

2021-11-28 13:29:42 63

原创 把大象装进冰箱:HTTP传输大文件的方法_进阶_2

文章目录数据压缩分块传输范围请求多段数据总结额外知识上次我们谈到了 HTTP 报文里的 body,知道了 HTTP 可以传输很多种类的数据,不仅是文本,也能传输图片、音频和视频。早期互联网上传输的基本上都是只有几 K 大小的文本和小图片,现在的情况则大有不同。网页里包含的信息实在是太多了,随随便便一个主页 HTML 就有可能上百 K,高质量的图片都以 M 论,更不要说那些电影、电视剧了,几 G、几十 G 都有可能。相比之下,100M 的光纤固网或者 4G 移动网络在这些大文件的压力下都变成了“小水管”

2021-11-28 13:29:20 97

原创 HTTP有哪些特点

文章目录灵活可扩展可靠传输应用层协议请求 - 应答无状态其他特点总结额外知识灵活可扩展首先, HTTP 协议是一个“灵活可扩展”的传输协议。HTTP 协议最初诞生的时候就比较简单,本着开放的精神只规定了报文的基本格式,比如用空格分隔单词,用换行分隔字段,“header+body”等,报文里的各个组成部分都没有做严格的语法语义限制,可以由开发者任意定制。所以,HTTP 协议就随着互联网的发展一同成长起来了。在这个过程中,HTTP 协议逐渐增加了请求方法、版本号、状态码、头字段等特性。而 body 也

2021-11-27 20:26:26 77

原创 响应状态码该怎么用

文章目录状态码1××2××3××4××5××总结额外知识前面讲了HTTP 报文里请求行的组成部分,包括请求方法和 URI。有了请求行,加上后面的头字段就形成了请求头,可以通过 TCP/IP 协议发送给服务器。服务器收到请求报文,解析后需要进行处理,具体的业务逻辑多种多样,但最后必定是拼出一个响应报文发回客户端。响应报文由响应头加响应体数据组成,响应头又由状态行和头字段构成。我们先来复习一下状态行的结构,有三部分:开头的 Version 部分是 HTTP 协议的版本号,通常是 HTTP/1.1,用处

2021-11-27 20:22:13 59

原创 如何写出正确的网址呢

文章目录URI 的格式URI 的基本组成URI 的查询参数URI 的完整格式URI 的编码总结额外知识刚刚讲到 HTTP 协议里的请求方法,其中最常用的一个是 GET,它用来从服务器上某个资源获取数据,另一个是 POST,向某个资源提交数据。那么,应该用什么来标记服务器上的资源呢?怎么区分“这个”资源和“那个”资源呢?是的。用的是 URI,也就是统一资源标识符(Uniform Resource Identifier)。因为它经常出现在浏览器的地址栏里,所以俗称为“网络地址”,简称“网址”。严格地说,

2021-11-27 20:13:24 850

原创 应该如何理解请求方法

文章目录标准请求方法GET/HEADPOST/PUT其他方法扩展方法安全与幂等总结额外知识标准请求方法HTTP 协议里为什么要有“请求方法”这个东西呢?这就要从 HTTP 协议设计时的定位说起了。还记得吗?蒂姆·伯纳斯 - 李最初设想的是要用 HTTP 协议构建一个超链接文档系统,使用 URI 来定位这些文档,也就是资源。那么,该怎么在协议里操作这些资源呢?很显然,需要有某种“动作的指示”,告诉操作这些资源的方式。所以,就这么出现了“请求方法”。它的实际含义就是客户端发出了一个“动作指令”,要求服务

2021-11-27 20:01:27 66

原创 HTTP报文是什么样子的?

HTTP 协议的核心部分是什么呢?答案就是它传输的报文内容。HTTP 协议在规范文档里详细定义了报文的格式,规定了组成部分,解析规则,还有处理策略,所以可以在 TCP/IP 层之上实现更灵活丰富的功能,例如连接控制,缓存管理、数据编码、内容协商等等。报文结构你也许对 TCP/UDP 的报文格式有所了解,拿 TCP 报文来举例,它在实际要传输的数据之前附加了一个 20 字节的头部数据,存储 TCP 协议必须的额外信息,例如发送方的端口号、接收方的端口号、包序号、标志位等等。有了这个附加的 TCP 头

2021-11-27 19:55:47 89

原创 这次聊聊域名的那些事

文章目录域名的形式域名的解析域名的“新玩法总结额外知识IP 协议的职责是“网际互连”,它在 MAC 层之上,使用 IP 地址把 MAC 编号转换成了四位数字,这就对物理网卡的 MAC 地址做了一层抽象,发展出了许多的“新玩法”。例如,分为 A、B、C、D、E 五种类型,公有地址和私有地址,掩码分割子网等。只要每个小网络在 IP 地址这个概念上达成一致,不管它在 MAC 层有多大的差异,都可以接入 TCP/IP 协议栈,最终汇合进整个互联网。但接入互联网的计算机越来越多,IP 地址的缺点也就暴露出来了,

2021-11-27 19:36:22 74

原创 常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?

文章目录TCP/IP 网络分层模型第一层叫“链接层”(link layer)第二层叫“网际层”或者“网络互连层”(internet layer)第三层叫“传输层”(transport layer)协议栈的第四层叫“应用层”(application layer)OSI 网络分层模型两个分层模型的映射关系TCP/IP 协议栈的工作方式总结额外知识TCP/IP 网络分层模型还是先从 TCP/IP 协议开始讲起,一是因为它非常经典,二是因为它是目前事实上的网络通信标准,研究它的实用价值最大。TCP/IP 当初

2021-11-27 19:24:56 192

原创 与HTTP相关的各种协议2

TCP/IPTCP/IP 协议是目前网络世界“事实上”的标准通信协议,即使你没有用过也一定听说过,因为它太著名了。TCP/IP 协议实际上是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP,其他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂但有层次的协议栈。这个协议栈有四层,最上层是“应用层”,最下层是“链接层”,TCP 和 IP 则在中间:TCP 属于“传输层”,IP 属于“网际层”。协议的层级关系模型非常重要,我会在下一讲中再专门讲解,这里先暂时放一放。IP 协议是“I.

2021-11-27 19:09:47 131

原创 与HTTP相关的各种概念

网络世界你一定已经习惯了现在的网络生活,甚至可能会下意识地认为网络世界就应该是这个样子的:“一张平坦而且一望无际的巨大网络,每一台电脑就是网络上的一个节点,均匀地点缀在这张网上”。这样的理解既对,又不对。从抽象的、虚拟的层面来看,网络世界确实是这样的,我们可以从一个节点毫无障碍地访问到另一个节点。但现实世界的网络却远比这个抽象的模型要复杂得多。实际的互联网是由许许多多个规模略小的网络连接而成的,这些“小网络”可能是只有几百台电脑的局域网,可能是有几万、几十万台电脑的广域网,可能是用电缆、光纤构成的固.

2021-11-27 18:51:04 58

原创 HTTP是什么?HTTP又不是什么

文章目录HTTP是什么协议第一点,协议必须要有两个或多个参与者,也就是“协”。第二点,协议是对参与者的一种行为约定和规范,也就是“议”。传输第一点,HTTP 协议是一个“双向协议”。第二点,数据虽然是在 A 和 B 之间传输,但并没有限制只有 A 和 B 这两个角色,允许中间有“中转”或者“接力”。超文本HTTP 不是什么HTTP 不是互联网。HTTP 不是编程语言。HTTP 不是 HTML,这个可能要特别强调一下,千万不要把 HTTP 与 HTML 混为一谈,虽然这两者经常是同时出现。HTTP 不是一个孤

2021-11-27 18:33:26 77

原创 Java 并发类库提供的线程池有哪几种? 分别有什么特点?

如果面试问道Java 并发类库提供的线程池有哪几种? 分别有什么特点?你会如何回答呢?我的回答通常开发者都是利用 Executors 提供的通用线程池创建方法,去创建不同配置的线程池,主要区别在于不同的 ExecutorService 类型或者不同的初始参数。Executors 目前提供了 5 种不同的线程池创建配置:newCachedThreadPool(),它是一种用来处理大量短时间工作任务的线程池,具有几个鲜明特点:它会试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程;

2021-11-22 12:22:52 71

原创 AtomicInteger 底层实现原理是什么?如何在自己的产品代码中应用 CAS 操作?

如果面试问道AtomicInteger 底层实现原理是什么?如何在自己的产品代码中应用 CAS 操作?你会如何回答呢?我的回答AtomicIntger 是对 int 类型的一个封装,提供原子性的访问和更新操作,其原子性操作的实现是基于 CAS(compare-and-swap)技术。所谓 CAS,表征的是一些列操作的集合,获取当前数值,进行一些运算,利用 CAS 指令试图进行更新。如果当前数值未变,代表没有其他线程进行并发修改,则成功更新。否则,可能出现不同的选择,要么进行重试,要么就返回一个

2021-11-22 12:22:36 92

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除