自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串转义问题

我一直以为,console 能保证所见即所得,所以我一向喜欢用console完成简单的调试,然而本周我被坑了,其原因就是字符串转义。先说为什么需要字符串转义,简单的说就是在某些特殊情况下(比如说字符串里套字符串,比如说正则表达式中用一些有着特定含义的字符),然而转义的时候,你打印出来的结果和你输入进去那个,多半不是同一个,我们可以看一个例子可以很清楚的看到,我输入的时候有两个反斜杠,而...

2018-11-03 10:31:22 1060 1

原创 当我们谈论Virtual DOM时,我们在说什么——etch源码解读

# etch简介首先我们有必要介绍一下etch。  etch是atom团队下的开源项目,是一套非常简洁然而功能十分完善的virtualDOM机制。我在偶然的情况下接触到了这个开源项目,在读README时为它简洁的设计而惊叹,而在阅读源码的过程中也为它巧妙的实现而赞叹。    个人觉得etch针对是一个非常好的学习内容,实际代码才七百来行,逻辑极度清晰,很适合作为想了解vdom的人的入门项目。  [...

2018-04-11 14:12:00 364

原创 计算机网络——“自顶向下方法之链路层

概述在链路层中,由两种信道,第一种是广播信道,用于连接有线局域网,卫星网和混合光纤同轴电缆。第二种类型的链路层信道是点对点通信链路,着在注入长距离链路连接的两台路由器之间。差错纠正类似于差错检测,区别在于接收方不仅能监测珍重出现的比特差错,而且能够准确地确定帧中的差错出现的位置(并因此纠正这些差错)。在典型的计算机结构,链路层的主体部分位于网络适配器。网络适配器有时也成为网络接口卡,位于网络适配器...

2018-02-16 14:23:19 558

原创 计算机网络——自顶向下方法之网络层

概述在网络中的每一台主机和路由器中都有一个网络层部分。构造网络分组由两种方法——数据报模式和虚电路模式。转发涉及分组在单一的路由器中从一条入链路到一条出链路的传送。路由选择涉及一个网络的所有路由器,它们经路由选择协议共同交互,以决定分组从源到目的地节点所采用的路径。路由器的主要作用就是将数据报从入链路转发到出链路。每台路由器具有一张转发表。路由器通过检查到达分组首部字段的值来转发分组,然后使用该值...

2018-02-14 16:27:31 760

原创 计算机网络——自顶向下方法之运输层

概述运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信功能。应用进程使用运输层提供的逻辑通信功能彼此发送报文,而无需考虑承载这些报文的物理基础设施细节。运输层协议实在端系统而不是路由器中实现的。网络路由器仅作用在该数据包的网络层字段,即它们不检查封装在该数据举报的运输层报文段的字段。网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信。在端系统中,运输层协议将来...

2018-02-13 22:02:42 392

原创 计算机网络——自顶向下方法之应用层

概述网络应用程序由成对的进程组成,进程通过一个成为套接字和软件接口向网络发送报文和从网络接收报文。应用程序开发者可以控制套接字在应用层端的一切,但是对该套接字的运输层端几乎没有控制器。应用程序开发者对于运输层的控制器仅限于——选择运输层协议;设定几个运输层参数为表示接收进程,需要定义两种信息:主机的地址和目的主机接受进程标识符。在因特网中就是IP地址和端口号。具有吞吐量要求的应用程序被成为带宽敏感...

2018-02-12 23:13:14 338

原创 计算机网络——自顶向下方法之计算机网络与因特网

概述端系统通过通信链路和分组交换机联系到一起。当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节。由此形成的信息包用计算机网络的术语成为分组。分组交换机从他的一条入通信链路接受到达的分组,并从它的一条出通信链路转发分组。因特网中最著名的两种分组交换机是路由器和链路层交换机。链路层交换机通常用于接入网中,而路由器通常用于网络核心中。一个分组所经历的一系列通信链路和分组...

2018-02-12 19:30:01 521

原创 Redux源码解读(二)

上篇文章我们分析了createStore和combineReducers文件,这一篇我们分析剩下的文件。首先是bindActionCreators文件,这个文件十分简单function bindActionCreator(actionCreator, dispatch) { return function() { return dispatch(action

2018-02-01 18:53:01 251

原创 Redux源码解读(一)

今日阅读了redux源码,并自己实现了一个简易版本的redux,在这里写一下收获。redux源码目录可以很清楚的看到,redux源码由3个util文件和剩下六个文件构成,util文件较为简单且不涉及核心,不做解读,重点解读剩下的六个文件。首先我们从index文件开始import createStore from './createStore'impor

2018-02-01 18:51:07 298

原创 现代操作系统之安全(下)

认证大多数用户认证基于以下三个方面考虑:用户已知的消息用户已有的消息用户是谁使用口令认证计算基启动顺序可以被改变,通过USB接口启动的检测优先于从硬盘启动的检测。计算机持有者此时插入安装有完整操作系统USB设备,计算机便会从USB中的操作系统启动,而不是本机硬盘上的操作系统启动。计算机一旦启动起来,其原有的硬盘责备挂起(UNIX)或被映射为D盘驱动器(Windows

2017-12-13 10:51:45 394

原创 现代操作系统之安全(上)

环境安全术语“安全”来表示所有的基本问题,用术语“防护机制”来表示特定的操作系统机制来确保计算机信息安全。威胁第一目标是数据保密,这种执行的力度应该精确到文件。第二个目标是数据的完整性,是指未经授权的用户没有得到许可就擅自改动数据。第三个目标系统可用性,是指没有人可以扰乱系统是指瘫痪安全和防护上所做的努力应该取决于针对哪一类型入侵者。密码

2017-12-12 20:26:37 318

原创 现代操作系统之多处理机系统(下)

虚拟化虚拟化技术唯一一个运行在内核态上的软件上管理程序,它的代码比一个完整的操作系统代码量少两个数量级,也就意味着软件的漏洞数少两个数量级,虚拟机的另一个好粗好在于检查点和虚拟机的前一(例如多服务器间迁移以达到负载平衡)比在一个普通的操作系统中国年进行进程迁移更加容易。虚拟机的另一个用途是运行那些不再被支持或不能在当前硬件上的工作的操作系统中遗留的应用程序。

2017-12-10 15:24:57 378

原创 现代操作系统之多处理机系统(中)

多计算机多计算机是紧耦合CPU,不共享存储器,每台计算机都有自己的存储器。多计算机硬件互联技术在多计算机中可采用两种减缓机制。在第一种机制中,每个消息首先被分解(由用户软件或网络接口进行)称为有最大长度限制的快,称为报。该交换机制称为存储转换包交换,由愿节点的网络接口卡注入到第一个交换机的报组成。当整个包到达一个一个输入缓冲区时,它被复制到沿着其露肩通向下一

2017-12-10 10:51:25 456

原创 现代操作系统之多处理机系统(上)

多处理机共享存储器多处理机是有两个或更多的CPU全部共享访问的一个公用的RAM,运行在任何一个COu上的程序都看到一个普通的(通常是分页)的虚拟地址空间。这个系统唯一特别的性质是,CPU可对存储器字写入某个值,然后读会这个字,得到一个不同的值(因为另一个CPU改写了它)。最重要的部分,多处理机操作系统至少普通的操作系统。不过在某些领域它们有一些特殊的性质多处理机

2017-12-09 21:48:48 1406 1

原创 现代操作系统之多媒体系统(下)

多媒体文件系统范型服务器分为拉取型服务器和推送型服务器。VCR控制功能为了获得可接受的性能,服务器应该未每个流出的数据流保留注入磁盘宽带和内存缓冲区等资源。在暂停的时候可以很容易地将资源释放,但这引入了风险,当用户试图恢复播放的时候,有可能无法重新获得这些资源。压缩让快进和快倒复杂起来。DV每一帧都是独立于其他帧压缩的。因此,对一个DV文件进

2017-12-08 22:41:27 340

原创 现代操作系统之多媒体操作系统(上)

多媒体简介两种可能对视频点播基础设施,每种都包含三个基本的组件:一个或多个视频服务器,一个分布式网络以及一个在每个放假中用来对信号进行解码对机顶盒。系统对最后一部分是机顶盒,这是ADSL或电视电缆中介对地方,机顶盒实际上就是普通的计算机,只不过其中包含特殊的芯片和用户视频解码和解压缩。机顶盒最少要包含CPU,RAM,ROM与ADSl或电视电缆的接口,以及用户跟电视机连接的端子。

2017-12-08 12:35:07 1784

原创 现代操作系统在之死锁

资源我们把具有排他性使用的对线称为资源。资源是随着时间推移,必然能获得使用以及释放了东西。资源分为两类:可抢占和不和抢占。当一个进程请求资源失败时,它通常会处于一个循环中:请求资源,休眠,在请求。虽然这个进程没有被阻塞,但是也没有做任何有价值的工作。死锁概述如果一个进程集合中的每个进程躲在等待只能由该进程集合中的其他进程才能引发的事件,那么,该进

2017-12-06 19:53:35 307

原创 现代操作系统之输入输出(二)

IO软件层次中断处理程序

2017-12-02 12:47:54 361

原创 现代操作系统之输入输出(四)

瘦客户机中心化系统的一个长处是资源共享容易。瘦客户机(哑终端)的基本思想是从客户机玻璃一切智能和软件,只是将其用作一台显示器,使所有计算(包括建立待显示的位图)都在服务端完成。客户机和服务器直接的协议只是通知显示器如何更新视频RAM电源管理存在两种减少能力小号的办法:当计算机的某些部件(主要是IO设备)不用的时候由操作系统关闭它们,使应用程序使用较少的嗯

2017-12-02 11:12:46 290

原创 现代操作系统之输入输出(三)

时钟时钟硬件时钟又称为定时器,时钟负责维护实际,并且防止一个进程垄断CPU,此外还有其它的功能。计算机中有两种类型的时钟,一种是连接到110V或220V的电源线上,这样每个电压周期产生一个中断,频率是50GHZ或60HZ。另一种类型的时钟由三部分组成:晶体振荡器,计数器和存储寄存器。可编程时钟通常具有几种操作模式——一次完成模式;方波模式(不停地循环),周期性产

2017-12-02 10:53:01 363

原创 现代操作系统之输入输出(一)

IO硬件原理IO设备IO设备大致可以分为两类:k

2017-12-01 15:35:44 658

原创 现代操作系统之文件系统(下)

文件系统的管理和优化磁盘空间管理几乎所有的文件系统都把文件分割成固定大小的块来存储,各块之间不一定相邻。性能和空间利用率是矛盾的。跟踪空闲块有两种常用的方法——第一种方法是采用磁盘块链表,那个块中包含尽可能多的空闲磁盘号。通常情况下,次啊用空闲块存放空闲表,这样存储器基本上是空的。另一种方法是采取位图,n个块的磁盘需要n位位图。如果空闲块倾向

2017-11-29 09:35:40 346

原创 现代操作系统之文件系统(中)

文件系统的实现文件系统布局文件系统存放在磁盘上,多数磁盘划分为一个或多个分区,每个分区中有一个独立的文件系统。磁盘的0号山区成为主引导记录(MBR),用来引导计算机。在MBR的结尾是分区表,该表给出了每个分区的起始和结束地址。表中的一个问去被标记为活动分区。在计算机被引导式,BIOS读入并指向MBr,MBR做的第一件事就是确定活动分区,读入它的第一个块,成为引导块,并执行之。引导块中的程序

2017-11-28 22:32:50 384

原创 现代操作系统之文件系统(上)

进程运行时,可以在他自己的地址空间内存储一定量的信息,但存储容量受虚拟地址空间大小的限制。进程上保存空间的第二个问题是——当进程终止时,他保存的信息也随之消失。第三个问题是:经常需要多个进程同事都去同一个信息(或部分信息)文件锁进程创建的信息逻辑单元。一个磁盘一般含有几千甚至几百万个文件,每个文件是独立于其他文件的。进程可以读取已经存在的文件,并在需要时建立新的文件。存储在

2017-11-28 15:13:20 352

原创 现代操作系统之内存管理(下)

分页设计中的设计问题局部分配策略和全剧分配策略全局算法在通常情况下工作得比局部算法号,当工作集的大小随进程允许时间发生变化时这种现象更加明显。但是使用全局算法时,系统必须不停地取得应该给每个进程分配多少页框,一种方法是检测工作集的大小,工作集大小由老化位指出,但该方法不能防止颠簸另一种图解是使用一个位进程分配页框但算法,为每个进程规定一个最小但页框数。如

2017-11-27 13:34:56 997

原创 现代操作系统之存储管理(中)

虚拟内存虚拟内存的基本思想是每个程序拥有自己的地址空间,这个空间被分割成多个块,每一块称为一页或页面。每一页有一个连续的地址范围。这些页被映射到物理内存,但不是所有的页都需要在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,由硬件立刻执行必要的映射。当程序引用到部分不在内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的命令。从某个角度

2017-11-27 10:58:35 364

原创 现代操作系统之存储管理(上)

操作系统中管理分成存储器的部分成为存储管理器。他的任务是有效地管理内存,即记录哪些内存是正在使用的,哪些内存是空闲的;在进程需要时为其分配内存,在进程使用完后释放内存。无存储器抽象 最简单的模型,及存储器模型就是物理内存,不过有三种变体:操作系统位于RAM的地步操作系统位于内存顶端的ROM设备驱动程序位于内存顶端的ROM,而操作系统中其它部分位于下面的RAN的底部

2017-11-26 22:57:40 304

原创 现代操作系统之进程与线程(下)

进程间通信竞争条件当两个或多个进程读写某些共享数据,而最好当结果取决于进程允许当精确时许,称为竞争条件。临界区实际上凡涉及共享内存、共享文件以及共享任何资源的情况都会引发与前面类似的错误,我们把对共享内存进行访问对程序片段称作临界区。而一个好的解决方案满足一下四点:任何两个进程不能同时处于临界区不应对CPU对速度和数量做任何假设临界区外允许对进程不得

2017-11-25 19:42:05 216

原创 现代操作系统之进程与线程(上)

进程基本概念一个进程就是一个正在执行程序的实例,包括程序计数器、寄存器和变量当前的值。从概念上说,每个进程拥有它自己的虚拟cpu。实际上,每个瞬间CPU只能运行一个进程。在对进程编程时不能对时序做任何确定对假设。创建进程常见情况:系统初始化执行政治运行对进程所调用的进程创建系统调用用户请求创建一个新进程一个批处理作业的初始化在任务

2017-11-25 18:09:20 597

原创 npm包发布以及解决报错

今天发布了自己第一个npm包,忘了写readme.md,不过还是很高兴,简单记一下流程首先,通过npm init 创建一个带有package.json的项目然后,通过npm login进行登陆npm login可能会报错,不过着多半是因为国内的小伙伴们和我一样进行的换源,发布包要将源换回去npm config set registry=http://

2017-11-22 15:01:16 1735

原创 JavaScript之类型判断

好久没有写博客了,现在重新开始。今天写的是一个关于JavaScript类型判断的问题JavaScript判断类型常见的是有四种方法——typeof,toString,instanceof和constructor本次主要说typeof和toStringtype基本类型function test(o){ console.log(typeof o)}test(un

2017-11-22 11:02:23 245

原创 ES6手记(一)

因为在循环中只有一个var,所以会导致闭包中的值是同一个,例如var a = [];for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 10而如果使用let,声明的变量仅在块级作用域内有效,结果为6var a = [];for (let i = 0

2017-06-05 17:06:46 281

原创 CSS手记(三)

背景为border-color设置的值总会覆盖color值元素的背景区包括前景之下知道边框外边界的所有空间;因此,内容看和内边距都是背景元素的一部分,且边框画在背景之上。背景颜色默认值是transparent,且不能被继承background-position将相对于元素的内边距边界放置原图像。换句话说,放置图像的上下文是内边框边界,尽管背景区会延伸到外边框

2017-06-03 22:20:38 217

原创 CSS手记(二)

通常情况下,直接指定的样式总是优先于继承的样式,但是通过使用inherit可以把情况反过来。font-size继承的值是数值而不是百分数font-variant 的small-caps,文本源中出现大写字母,就显示一个更大的大写字母,如果出现小写字母,就出现一个小一些的大写字母。text-indent 文本缩进 该属性可以继承text-align只能

2017-06-03 16:15:50 422

原创 CSS手记(一)

基础部分link标记是一个完全合法但很少用的标记,css使用这个标记来连接样式表和文档为了成功的加载一个外部样式表,link必须放在head元素中,但不能放在其他元素内部(如title)除非文件名以.css结尾,有些Web服务器甚至不会将文件作为text/css传递,不过这个问题通常可以通过改变服务器的配置文件来修正。可以在多个媒体中使用一个样式表,为此要提供应用此样式

2017-06-03 10:27:12 358

原创 JavaScript之正则表达式

正则表达式的定义正则表达式直接量定义为包含在一对斜杠(/)之间的字符ES5对同一段代码所表示的正则表达式直接量的每次运算都返回新对象在使用 *,?时要注意,由于这些字符可能匹配0给字符,因此它们允许声明都不匹配。/a*/实际上与字符串"bbbb"匹配由于正则表达式的模式匹配棕色寻找字符串中第一个可能匹配的位置。由于该匹配是从字符串的第一个字符开始,因此在这里不考虑他

2017-05-10 19:24:25 348

原创 JavaScript之函数

概述JavaScript函数是参数化的:函数的定义会包括一个称为形參的标识符列表,这些参数在函数题中像局部变量一样工作。除了实参,每次调用还会拥有另一个值——本次调用的上下文——这就是this关键字的值如果函数挂载载一个对象上,作为对象的一个属性,那就称它为对象的方法。当通过这个对象来调用函数时,该对象就是此次调用的上下文,也就是该函数的this值。用于初始化一个新创建的对象的

2017-05-08 20:33:41 496

原创 JavaScript之数组

概述JavaScript数组的索引是基于零的32位数值,第一个元素的索引为0,最多可能的索引为(2^32-2),针对稀疏矩阵,length比所有元素的索引都大创建数组数组直接量的语法允许有可选的结尾逗号,故[,,]只有两个元素new Array(10) //长度为10的空数组数组元素的读和写数组是对象的特殊形式所有的索引都是属性吗,但只有0~2^

2017-05-07 18:43:59 378

原创 JavaScript之对象

概述除了字符串、数字、undefined、null、布尔值外,JavaScript中的值全是对象。每个属性都有属性特性:可写 ,表明是否可以设置该属性的值可枚举,表明是否可以通过for/in循环返回该属性可配置,表明是否可以删除或修改该属性每个对象除了属性之外,还有三个相关的对象特性:对象的原型(prototype)指向另一个对象,本对象的属

2017-05-07 16:01:14 318

原创 JavaScript之语句

摘要JavaScript程序无非就是一系列可执行语句的集合。复合语句和空语句语句块的结尾不需要分号。块中的原始语句必须以分号结束,但语句块不需要。JavaScript中没有块级作用域,在语句块中声明的变量不是语句块私有的。在创建一个具有空循环体的循环时,空语句有时是很有用的。for(var i=0;i如果是有特殊摩的的需要而使用空语句,最好在代码中添加住

2017-05-06 17:40:10 503

空空如也

空空如也

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

TA关注的人

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