进阶 · 那些你必须搞懂的网络基础
Posted 小生方勤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进阶 · 那些你必须搞懂的网络基础相关的知识,希望对你有一定的参考价值。
本文介绍一些前端开发者必须了解的网络基础知识和浏览器基础知识,这些基础知识虽然和日常的 coding 关联不大,但却是我们必须了解的通识。
这些知识在面试中也经常被提及。
接下来我会讲以下内容:
意味着两个使用 TCP 的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个 TCP 连接。在一个 TCP 连接中,仅有两方进行彼此通信;
2. 字节流服务: 意味着两个应用程序通过 TCP 链接交换 8bit 字节构成的字节流,TCP 不在字节流中插入记录标识符。
TCP 之所以可靠,大体上由于以下原因:
后会发生什么,大家在心中肯定是有一个大概的,这里我将 DNS 域名解析 这个步骤详细的讲一遍。在讲概念之前我先放上一张经典的图文供大家思考一分钟。
查找域名对应的 IP 地址的具体过程
和
两个字段进行控制的。
其中
是
中定义的,它指定了一个绝对的过期时期。而
是
时出现的缓存控制字段。
Expires 是 HTTP1.0 时代的产物,因此设计之初就存在着一些缺陷,如果本地时间和服务器时间相差太大,就会导致缓存错乱。
这两个字段同时使用的时候
的优先级给更高一点。
示例:
mustmax字段,值就是第一次获取请求资源时响应头中返回的
值。如果资源未过期,命中缓存,服务器就直接返回
状态码,客户端直接使用本地的资源。否则,服务器重新发送响应资源。从而保证资源的有效性。
Etag 和 If-None-Match
基于服务资源校验码的验证缓存过期机制
服务器返回的报文响应头的
字段标示服务器资源的校验码(例如文件的
值),发送到客户端浏览器,浏览器收到后把资源文件缓存起来并且缓存
值,当浏览器再次请求此资源文件时,会在请求头
字段带上缓存的
值。
服务器收到请求后,把请求头中字段值与服务器端资源文件的验证码进行对比,如果匹配成功直接返回
状态码,从浏览器本地缓存取资源文件。如果不匹配,服务器会把新的验证码放在请求头的
字段中,并且以
状态码返回资源。
垃圾回收机制304
一般垃圾数据回收分为手动回收和自动回收两种策略。javascript 的回收策略是自动回收。
由于 JavaScript 垃圾数据是自动回收的,所以有很多初中级的前端会认为不需要内存管理。这个是错误的,你不关心就会发生很多内存泄漏的问题。
垃圾回收器的工作流程
V8 中会把堆分为新生代和老生代两个区域,新生代中存放的是生存时间短的对象,老生代中存放的生存时间久的对象。
垃圾回收执行大体流程如下:
第一步是标记空间中活动对象和非活动对象。所谓活动对象就是还在使用的对象,非活动对象就是可以进行垃圾回收的对象。
第二步是回收非活动对象所占据的内存。其实就是在所有的标记完成之后,统一清理内存中所有被标记为可回收的对象。
第三步是做内存整理。
参考《图解 HTTP》
《计算机网络基础》
《浏览器工作原理与实践》
◆ ◆ ◆ ◆ ◆
长按关注小生
你的在看我当成喜欢 软帝学院零基础学Java,必须搞懂的10个问题!
零基础学Java,必须搞懂的10个问题!
Java是当前互联网行业内的热门语言,不仅可以应用于Android和网站开发而且也广泛应用于金融服务、高频金融空间等领域。也正是因为高居不下的热度,越来越多的人选择学习Java语言。那么零基础学习Java都需要搞懂那些问题呢?
1、Java语言的特点,Java与c++的区别
Java语言具有简单易学、安全性、可靠性、支持多线编程、编译和解释共存、与平台无关性等特点。Java与c++都是面向对象的语言。两者的区别是,C++的类支持多重继承,而Java的类是单继承的,但接口是多继承的。
2、Java应用程序和小程序的区别
一般来说,applet小程序并没有main方法,而是类似于flash小游戏,主要嵌在浏览器页面上运行,而应用程序则是利用main方法,即主线程启动。
3、Java面向对象编程的三大特性
Java面向对象编程的三大特性分别是:封装、继承和多态。
封装:即将一个对象的属性私有化,另外提供一些可以被外界访问属性的方法。属性不想被外界访问的情况下,可以不像外界提供访问的方法。
继承:即使用已存类的定义作为基础建立新类。新类的定义不仅增添了新的数据和功能而且可以使用父类的功能,但是不能选择性的继承父类。
多态:指程序中定义的引用变量指向的具体类型和依靠此引用变量发出的方法调用在编程中并不确定。而是在运行过程中才确定。
4、面向对象和面向过程的区分
第一,面向对象具有封装、继承、多态性等特点,因此可以设计出低耦合的系统,且易于维护、复用、和扩展。而面向对象的缺点是在性能方面比面向过程要低。
第二,面向过程的优点是性能相比于面向对象要低。但缺点是在维护、复用、扩展方面的作用低于面向对象。
5、重载和重写的区别
重载:重载发生在同一类中,方法名一定要相同,而参数类、个数、顺序可以不同。
重写:重写发生在父子类中,方法名以及参数列要保证相同,但返回值范围、所抛出的异常范围小于等于父类;而访问修饰符则大于等于父类。
6、成员变量与局部变量的区别
首先,从语法方面来看。成员变量属于类,而局部变量是方法的参数或者是在方法中定义的变量;而局部变量不同于成员变量,不可被static修饰,也不能被访问控制修饰符所修饰。
其次,从变量在内存中的生存时间方面来看。局部变量会随着方法的调用而自动消失,而成员变量是对的组成部分,会随着对象的创建而存在。
此外,如果成员变量没有被赋予初值,那么将会自动以类型的默认值而赋值,但局部变量则不会自动赋值。
7、构造方法的特性有哪些
构造方法的特性主要包括:不存在返回值,但不可用void声明构造函数;自动执行生成类的对象,不许调用;名字和类名相同。
8、什么是方法的返回值?返回值在类的方法里的作用是什么?
所谓方法的返回值是指获取到某个方法体中的代码执行后所产生的效果。其作用是,接受出结果以供其他操作使用。
9、线程有哪些基本状态?
Java线程的基本状态分为NEW(初始状态)、RUNNABLE(运行状态)、BLOCKED(阻塞状态)、WAITING(等待状态)、TIME_WAITING(超时等待状态)、TERMINATED(中止状态)。
10、Java序列化中如果有些字段不想进行序列,该如何处理?
使用transient关键字修饰是对于不想进行序列化的变量的处理方式。不过transient仅仅只能修饰变量,却不能修饰类和方法。被其修饰的变量值将不会被持久化更不会被恢复。
要想学好java,一套好的java基础资料是必不可少,大家可以私信我或者在文章下面评论,我给大家免费分享,视频文档都有,年份也很新!
以上是关于进阶 · 那些你必须搞懂的网络基础的主要内容,如果未能解决你的问题,请参考以下文章