摘要:
Viewport 是 HTML5 针对移动端开发新增的一个 meta 属性, 它的作用是为同一网页在不同设备的呈现,提供响应式解决方案。这篇文章尝试通过循序渐进的方式,逐层探索 Viewport 的设计原理,希望能给读者带来更加清晰、更加全面的技术认知。 阅读全文
摘要:
1、观察者模式 观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并自动更新。观察者模式属于行为型模式,行为型模式关注的是对象之间的通讯,观察者模式就是观察者和被观察者之间的通讯。 观察者模式有一个别名叫“发布-订阅模式”,或者说是“订阅-发布 阅读全文
摘要:
1、骨干网 几台计算机连接起来,互相可以看到其他人的文件,这叫局域网,整个城市的计算机都连接起来,就是城域网,把城市之间连接起来的网就叫骨干网。这些骨干网是国家批准的可以直接和国外连接的互联网。其他有接入功能的ISP(互联网服务提供商)想连到国外都得通过这些骨干网。 骨干网(Backbone Net 阅读全文
摘要:
网络制式就是网络的类型。 1、GSM/CDMA GSM 和 CDMA 是两种不同的 2G 网络制式。 中国移动和中国联通采用的2G网络制式为GSM,而中国电信的2G网络制式采用了CDMA。 GSM 全球移动通信系统(Global System of Mobile communication),是全球 阅读全文
摘要:
Linux 默认是开启 ping 操作的,通过以下两种方式可以开启和关闭 ping 操作 。 1、修改内核参数 通过内核参数设置也有两种方式,一种是临时修改,一种是永久修改。 1.1 临时设置 PING 操作 注意,icmp_echo_ignore_all 不是真实文件,因此不能通过 vim 来编辑 阅读全文
摘要:
内存泄露是每个开发者最终都不得不面对的问题。即便使用自动内存管理的语言,你还是会碰到一些内存泄漏的情况。内存泄露会导致一系列问题,比如:运行缓慢,崩溃,高延迟,甚至一些与其他应用相关的问题。 什么是内存泄漏 本质上来讲,内存泄露是当一块内存不再被应用程序使用的时候,由于某种原因,这块内存没有返还给操 阅读全文
摘要:
内部架构 CPU 的根本任务就是执行指令,对计算机来说最终都是一串由 0 和 1 组成的序列。CPU 从逻辑上可以划分成 3 个模块,分别是控制单元、运算单元和存储单元 。其内部架构如下: 【1】控制单元 控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register 阅读全文
摘要:
0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时 阅读全文
摘要:
TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层,每一层都呼叫它的下一层所提供的协议来完成自己的需求。由于我们大部分时间都工作在应用层,下层的事情 阅读全文
摘要:
在 JavaScript 规范中,共定义了七种数据类型,分为 “基本类型” 和 “引用类型” 两大类,如下所示: 基本类型:String、Number、Boolean、Symbol、Undefined、Null 引用类型:Object 下面将详细介绍这七种数据类型的一些特性。 1、String 类型 阅读全文
摘要:
MAC地址表 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的。在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上的。 交换机的工作原理 交换机在接收到数据帧以后,首先、会记录数据帧中的 阅读全文
摘要:
客户提供了 mysql 的环境,但是不支持中文,通过以下命令查看了 mysql 的字符集 显示如下: 为了让 mysql 支持中文,需要把字符集改变成 utf8 。 方法如下: 1. 打开 etc/my.cnf 2. 修改成如下内容,保存 3. 重启 mysql 服务 再次查看 mysql 编码,已 阅读全文
摘要:
在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了。 正则表达式零宽断言: 零宽断言是正则表达式中的难点,所以本章节重点从匹配原理方面进行一下分析。零宽断言还有其他的名称,例如"环视"或者"预搜索"等等,不过这些都不是我们关注的重点。 一 阅读全文
摘要:
node.js 中的非 IO 的异步 API 提供了四种方法,分别为 setTimeOut(), setInterval(), setImmediate() 以及 process.nextTick(),四种方法实现原理相似,但达到的效果略有区别: 1、事件循环 Event Loop 首先,我们需要了 阅读全文
摘要:
1、从 http 协议说起 1996年IETF HTTP工作组发布了HTTP协议的1.0版本 ,到现在普遍使用的版本1.1,HTTP协议经历了17 年的发展。这种分布式、无状态、基于TCP的请求/响应式、在互联网盛行的今天得到广泛应用的协议,相对于互联网的迅猛发展,它似乎进步地很慢。互联网从兴起到现 阅读全文
摘要:
说到跨域,就不得不提起浏览器的同源策略。 同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。 源 如果协议,端口(如果指定了一个)和主机对于两个页面是相同的,那么这两个页面就具有相同的源。 从这个定义可以看出,如果两个页面的协议,端口,主机三个只要有一个不一样,就是不同的源,想要 阅读全文
摘要:
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。 本文详细介绍CORS的内部机制。 一、简介 CORS需要浏览器和服务器同时支持。目 阅读全文
摘要:
受浏览器同源策略的限制,本域的js不能操作其他域的页面对象(比如DOM)。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。所以我们要通过一些方法使本域的js能够操作其他域的页面对象或者使其他域的js能操作本域的页面对象(iframe之间)。这里需要明确的一点是:所谓的域跟js 阅读全文
摘要:
本文翻译自微软官网的一篇文章,名称是 XDomainRequest – Restrictions, Limitations and Workarounds 本文原作者是EricLaw,前微软正式员工。2004到2012年在微软担任IE程序经理(Program Manager)。 译文如下: 更新:I 阅读全文
摘要:
在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。 目前在各种体系的计算机中通常采用的字节存储机 阅读全文
摘要:
V8 的垃圾回收策略主要基于分代式垃圾回收机制。所谓分代式,就是将内存空间分为新生代和老生代两种,然后采用不同的回收算法进行回收。 新生代空间 新生代空间中的对象为存活时间较短的对象,大多数的对象被分配在这里,这个区域很小但是垃圾回特别频繁 。 它将堆内存一分为二,每一部分空间称为 semispac 阅读全文
摘要:
TTL TTL是 Time To Live 的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4包头的一个8 bit字段。在IPv4包头中TTL是一个8 bit字段,它位于IPv4包的第9个字节。如下图所示,每一行表示 32 bit(4字节),位从0开始编号,即0~31。 阅读全文
摘要:
1、Unicode 的由来 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如 阅读全文
摘要:
Undefined 和 Null 是 Javascript 中两种特殊的原始数据类型(Primary Type),它们都只有一个值,分别对应 undefined 和 null ,这两种不同类型的值,既有着不同的语义和场景,又表现出较为相似的行为: undefined undefined 的字面意思就 阅读全文
摘要:
Node.js 采用事件驱动和异步 I/O 的方式,实现了一个单线程、高并发的 JavaScript 运行时环境,而单线程就意味着同一时间只能做一件事,那么 Node.js 如何通过单线程来实现高并发和异步 I/O?本文将围绕这个问题来探讨 Node.js 的单线程模型 。 高并发策略 一般来说,高 阅读全文
摘要:
在Web应用中,实现动画效果的方法比较多,JavaScript 中可以通过定时器 setTimeout 来实现,css3 可以使用 transition 和 animation 来实现,html5 中的 canvas 也可以实现。除此之外,html5 还提供一个专门用于请求动画的 API,即 req 阅读全文
摘要:
Web前端技术由 html、css 和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构。本文将对Web前端知识体系进行简单的梳理, 阅读全文
摘要:
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自动传递给 View,即所谓的数据双向绑定。 阅读全文
摘要:
使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块、文件系统、url解析模块、路径解析模块、以及301重定向技术等,下面我们就一起来学习如何搭建一个简单的Web服务器。 作为一个Web服务器应具备以下几个功能: 能显 阅读全文
摘要:
H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路。 实现原理 假设有5个页面,每个页面占屏幕100%宽,则创建一个DIV容器viewport,将其宽度(width) 阅读全文
摘要:
NaN NaN 即 Not a Number ,不是一个数字。 在 JavaScript 中,整数和浮点数都统称为 Number 类型 。除此之外,Number 类型还有一个很特殊的值,即 NaN 。它是 Number 对象上的一个静态属性,可以通过 Number.NaN 来访问 。 在 ECMAS 阅读全文
摘要:
React 起源于 Facebook 内部项目,是一个用来构建用户界面的 Javascript 库,相当于MVC架构中的V层框架,与市面上其他框架不同的是,React 把每一个组件当成了一个状态机,组件内部通过 state 来维护组件状态的变化,当组件的状态发生变化时,React 通过虚拟DOM技术来增量并且高效的更新真实DOM。本文将对React 的这些特点进行简单的介绍。 阅读全文
摘要:
ECMAScript 3 开始支持正则表达式,其语法和 Perl 语法很类似,一个完整的正则表达式结构如下: 其中,模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向引用。 每个正则表达式都可带有一或多个标志(flags),用以标明正则表达式的 阅读全文
摘要:
在Web App和Hybrid App横行的时代,为了拥有更好的用户体验,单页面应用顺势而生,单页面应用简称`SPA`,即Single Page Application,就是只有一个HTML页面的应用程序,应用中所有的视图都包含在这个HTML页面中,并通过JavaScript控制相关视图的显示和隐藏,这种模式可以让用户在Web App感受Native App的速度和流畅。本篇文章的目的就是教你如何来快速的构建一个单页面应用程序。 阅读全文
摘要:
在JavaScript中,call 和 apply 是Function对象自带的两个方法,这两个方法的主要作用是改变函数中的this指向,从而可以达到`接花移木`的效果。本文将对这两个方法进行详细的讲解,并列出几个关于call和apply的经典应用场景。 阅读全文
摘要:
在 JavaScript 中,对数值进行四舍五入操作的场景有以下几种: 向上取整:ceil 向下取整:floor 四舍五入:round 固定精度:toFixed 固定长度:toPrecision 取整:trunc、parseInt、位运算 本文将对这 6 个 API 进行简单的讲解和总结。 1、向上 阅读全文
摘要:
在 ECMAScript 规范中,共定义了 7 种数据类型,分为 基本类型 和 引用类型 两大类,如下所示: 基本类型:String、Number、Boolean、Symbol、Undefined、Null 引用类型:Object 基本类型也称为简单类型,由于其占据空间固定,是简单的数据段,为了便于 阅读全文
摘要:
在 JavaScript 中,对于数组的操作非常频繁,对应的 API 也很丰富 。ECMAScript 规范在每一版发布时,都会提供新的 API 来增强数组的操作能力,下面将详细介绍这些 API 的一些特性。 ES5 新增的 9 个API 1、forEach( callback[,thisArg] 阅读全文
摘要:
jQuery 对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的内部架构设计,以及 jQuery 是如何利用JavaScript 中的高级特性来构建如此伟大的 JavaScript 库。 阅读全文
摘要:
javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈、全局对象、执行环境、变量对象、活动对象、作用域和作用域链等,这些概念正是JS引擎工作的核心组件。这篇文章的目的不是孤立的为你讲解每一个概念,而是通过一个简单的demo来展开分析,全局讲解JS引擎从定义到执行的每一个细节,以及这些概念在其中所扮演的角色。 阅读全文