从浏览器地址栏输入网址,到网页彻底打开,中间都发生了什么

从输入域名到网页打开的简单过程如下,还附加我自己的理解:1.DNS域名解析  客户端输入域名后,由DNS服务器来将域名解析成对应服务器的IP地址2.建立TCP连接;  获得服务器IP之后,就需要三次握手的协议才能建立连接    1)客户端发送SYN包请求,等待服务器确认    2)服务器确认收到SYN包请求后,同时自己也返回一个包给客户端,即返回SYN+ACK    3)客户端收到SYN+ACK包之后,返回给服务器一个确认包ACK包表示收到,然后双方达成协议,建立连接3.发送HTTP请求;  与服务器建立连接之后,就可以向服务器发送请求了,请求需要遵循http协议4.服务器处理请求;  被请求的服务器解析用户请求的有哪些资源,通过服务器返回数据给客户端5.返回响应结果;  给客户端返回请求的状态码,通过状态码可以知道服务器端的处理是否正常  常见状态码:状态码    100Continue继续,客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝    200OK请求成功,表示正常状态    301MovedPermanently请求的网页已永...

zookeeper什么是分布式锁

分布式锁:为了防止系统中的多个进程之间相互干扰,我们需要一种分布式协调结束来对这些进程进行调度。而这个分布式协调技术的核心就是实现这个分布式锁。 分布式锁应该具备哪些条件:  1.分布式系统环境下,一个方法同一时间只能被一个机器的一个线程执行  2.高可用的获取锁与释放锁  3.高性能的获取锁与释放锁  4.具备可重入的特征  5.具备锁失效机制,防止死锁  6.具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失效 分布式锁的实现有哪些:  zookeeper:利用zookeeper的顺序临时借点,来实现分布式锁和等待队列。zookeeper的设计初衷就是为了实现分布式锁服务的。  memcached:原子性操作,只有在key不存在的情况下,才能set成功;  redis:原子性操作,只有在key不存在的情况下,才能set成功;    三大致命问题:  1.非原子性操作    1.1setnx()宕机    1.2expire  2.误删锁    2.1set(key,value,expire)    2.2数据没有操作完  ...
代码星球 代码星球·2020-04-01

什么是哈夫曼树

转自:https://blog.csdn.net/shuangde800/article/details/7341289   一、哈夫曼树的概念和定义 什么是哈夫曼树?让我们先举一个样例。判定树:       在非常多问题的处理过程中,须要进行大量的条件推断,这些推断结构的设计直接影响着程序的运行效率。比如,编制一个程序,将百分制转换成五个等级输出。大家可能觉得这个程序非常easy,而且非常快就能够用下列形式编写出来: if(score<60)cout<<"Bad"<<endl;elseif(score<70)cout<<"Pass"<<endlelseif(score<80)cout<<"General"<<endl;elseif(score<90)cout<<"Good"<<endl;elsecout<<"Verygood!"<...
代码星球 代码星球·2024-01-19

什么是CDN加速?(转载)

随着互联网的发展,用户在使用网络时对网站的浏览速度和效果愈加重视,但由于网民数量激增,网络访问路径过长,从而使用户的访问质量受到严重影响。特别是当用户与网站之间的链路被突发的大流量数据拥塞时,对于异地互联网用户急速增加的地区来说,访问质量不良更是一个急待解决的问题。如何才能让各地的用户都能够进行高质量的访问,并尽量减少由此而产生的费用和网站管理压力呢?内容发布网络(ContentDeliveryNetwork,CDN)诞生了。一、CDN是什么?    CDN的全称是ContentDeliveryNetwork,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网...
代码星球 代码星球·2020-04-01

每日Android一问等你来解答-什么是Activity的生命周期?

关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己。本篇文章同步微信公众号欢迎大家关注我的微信公众号:「醉翁猫咪」什么是Activity的生命周期?生命周期:对于生命周期我们知道,有7个生命周期方法onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy(),onRestart()。这7中方法来体现Activity的生命周期状态。对于生命周期状态,我们可以大概了解一下:启动状态,当一个Activity启动之后运行状态,Activity处于我们屏幕的最前面时,可与用户进行交互暂停状态,Activity仍可见停止状态,Activity不可见销毁状态,Activity将被销毁生命周期方法,其中有6个可以对立起来onCreate()和onDestroy(),onStart()和onStop(),onResume()和onPause()接下来让我来描述生命周期方法,首先我们先启动的是Activity,进入onCreate()方法,这个方法是在Activity创建时被调用的,进入onStart()方法,顾名思义,看这单...

什么是“QQ登录OAuth2.0”

OAuth:OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。QQ登录OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。QQ登录OAuth2.0采用OAuth2.0标准协议来进行用户身份验证和获取用户授权,相对于之前的OAuth1.0协议,其认证流程更简单和安全。QQ登录OAuth2.0支持网站接入和移动应用接入。网站可通过以下两种方式接入:(1)使用QQ互联提供的SDK包,用户体验统一,只需要修改少量代码,不需要理解验证授权流程,需要快速接入QQ登录的网站和移动应用可选用此方法。QQ互联提供JavaScript,PHP,Java等多个版本的SDK,详见:SDK下载QQ登录JSSDK详见:JSSDK使用说明(2)根据QQ登录OAuth2.0协议,自主开发,此方法自定义程度较高,需要与现有系统进行整合的网站和移动应用可选用此方法。详见:OAuth2...
代码星球 代码星球·2020-03-29

什么寄存器比内存快?

作者:阮一峰日期:2013年10月14日计算机的存储层次(memoryhierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。同样都是晶体管存储设备,为什么寄存器比内存快呢?MikeAsh写了一篇很好的解释,非常通俗地回答了这个问题,有助于加深对硬件的理解。下面就是我的简单翻译。原因一:距离不同距离不是主要因素,但是最好懂,所以放在最前面说。内存离CPU比较远,所以要耗费更长的时间读取。以3GHz的CPU为例,电流每秒钟可以振荡30亿次,每次耗时大约为0.33纳秒。光在1纳秒的时间内,可以前进30厘米。也就是说,在CPU的一个时钟周期内,光可以前进10厘米。因此,如果内存距离CPU超过5厘米,就不可能在一个时钟周期内完成数据的读取,这还没有考虑硬件的限制和电流实际上达不到光速。相比之下,寄存器在CPU内部,当然读起来会快一点。距离对于桌面电脑影响很大,对于手机影响就要小得多。手机CPU的时钟频率比较慢(iPhone5s为1.3GHz),而且手机的内存紧挨着CPU。原因二:硬件设计不同苹果公司新推出的iPhone5s,CPU是A7,寄存器有6000多位(31个6...
代码星球 代码星球·2020-03-29

C++ STL 里为什么不维护一个 size 成员变量?

回答:为什么GCC里要把list::size()的复杂度搞成O(N)?一通搜索后终于看到有这样的讨论:关于list::splice()函数。list是链表结构,它的优势就在于可以O(1)的时间复杂度任意插入删除甚至拼接list片段(删除时可能不是,因为要释放内存),list::splice()是一个很强大的功能,它可在任意位置拼接两个list,这正是list的优势。如果我们在类内部以一个变量储存list的长度,那么splice()之后新list的长度该如何确定?这是一个很严峻的问题,如果要在拼接操作时计算拼接部分的长度,那么将把O(1)的时间变成O(N),这么一来list相对vector的优势就消失殆尽。面对这个问题,GCC和VC的STL库作者们做了不同的选择。GCC选择舍弃在list内部保存元素数量,而在size()时直接从头数到尾,这便出现了开头看到的O(N)时间才算出size();相反,VC中有了变量_Mysize,无论在insert()erase()splice()或是push()pop()时都需要对其做相应修改。在上面的两个试验中已经看出同样是10000个push_back(...

(入门)什么是AOP?什么是代理模式?怎么设计日志拦截器?

 什么是AOP(Aspect Oriented Programming)?  面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。  主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。  主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改  变这些行为的时候不影响业务逻辑的代码。  AOP的底层实现技术是JDK动态代理。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式(GoF强调的是接口或抽象类在实际案例中的灵活应用和智慧)的延续,设计模式孜孜不倦追求的是调用者和被调用者之...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

HTML5中canvas与SVG有什么区别

SVGSVG是一种使用XML描述2D图形的语言,它基于XML也就是我们可以为某个元素附加JavaScript事件处理器,如果SVG对象的属性发生变化,那么浏览器能够自动重现图形。CanvasCanvas通过JavaScript来绘制2D图形。它是逐像素进行渲染的,一旦图形被绘制完成,如果它的位置发生了变化,那么整个场景都需要重新绘制,包括任何或者已经被覆盖的对象SVG与canvas的区别(1)SVG是用来描述XML中2D图形的语言,canvas借助JavaScript动态描绘2D图形(2)SVG可支持事件处理程序而canvas不支持(3)SVG中属性改变时,浏览器可以重新呈现它,适用于矢量图,而canvas不可以,更适合视频游戏等。(4)canvas可以很好的绘制像素,用于保存结果为png或者gif,可做为API容器。(5)canvas取决于分辨率。SVG与分辨率无关。(6)SVG具有更好的文本渲染,而Canvas不能很好的渲染,渲染中的SVG可能比Canvas慢,特别是应用了大量的DOM。(7)画布更适合渲染较小的区域。SVG渲染更好的更大区域。SVG与canvas之间的比较SVGc...

js操作对象属性用点和用中括号有什么不同

书读百遍其义自见学习《JavaScript设计模式》一书时,学习工厂模式这一章节,发现了对象后使用中括号的情况,如下:varFactory=function(type,content){if(thisinstanceofFactory){//对于一下this后使用中括号不是很明白vars=newthis[type](content);}else{returnnewFactory(type,content);}}不是很明白,百度了一些解释,如下:中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。中括号运算符可以用纯数字为属性名。点运算符不能。中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能。/***在JavaScript里面.可以理解成的*下面的例子中,a.b表示对象a的属性b,既可以设置也可以读取*object[key]=>key为常量时,object[key]等价于object.key,例如:a.b==a['b']*特殊的,object[key]=>key为变量时,只能用中括...

在一些开源框架中,dist文件夹是什么意思

全称是distribution。distribution英[dɪstrɪ'bjuːʃ(ə)n]美['dɪstrə'bjʊʃən]:发行版n.分布;分配在某些框架中,因为开发和发布是的内容或者代码形式是不一样的(比如利用Grunt压缩等等),这时候就需要一个存放最终发布版本的代码,这就是dist文件夹的用处。 是最终放到服务器上的发布版本。如果是放到开源去,一般放开发版,而不是发布版的,因为发布版通常是全部压缩优化过,不利于开源开发。...

2017——我们为什么选择JAVA?JAVA的发展方向和学习方法(必看)

2017——我们为什么选择JAVA?JAVA的发展方向和学习方法(必看)...

我们的代码为什么要压缩成7z?

代码为什么要压缩成7z?    a.代码的复制速度是非常慢的. 几M或几KB都是常事。    b.压缩成7z格式后,复制速度迅速提高上百倍或者几十倍   下面是html文件:  html文件总共占20.6M。压缩的只要是网页即可(html、shtml、mhtml…)即可。   压缩成7z后,存储容量迅速下至1.09M。  推荐用 “好压”    等待压缩完成后即可(压缩过程中较慢… 耐心等待)。 ...

函数的重载与 泛型(generic)有什么不同?

函数重载指  重载函数,形参(类型)不同,实现的功能一样。泛型算法指2个方面:这些算法可作用于各种不同的容器类型,而这些容器类型又可以容纳多种不同类型的元素。...
首页上一页...114115116117118...下一页尾页