http-压缩&重定向 Posted on 2019-08-27 | In 前端 压缩 在网站开发过程了为了提高页面打开的速度往往对要传输的页面进行压缩,从而减少传数的数据量,为了实现该功能,同时需要http协议的配合。常用的压缩方式有两种gzip和deflat。 在浏览器向服务器发送请求时会在头部信息中设置Accept-Encodi ... Read more »
浏览器缓存 Posted on 2019-08-25 | In 前端 缓存能改显著的改善网站的性能,时网站开发中很重要的一环。网页的缓存可以通过http协议的头部协议进行控制。本文我们提到的缓存不涉及缓存服务器,只讨论客户端和服务器交互时的缓存。缓存分为两类强制缓存和协商缓存。在实际使用中两种方式可以同时使用。 强制缓存 ... Read more »
linux命令每日学-curl Posted on 2019-08-24 | In linux命令每日学 curl命令是一个功能强大的http命令行工具,在网站开发中能够帮助我们快速调试。下面总结下curl常用的功能。 1.发送请求 curl最基本的功能,输入要请求的url,会默认向该地址发送get请求并将返回值打印到终端上。如下所示: 1curl www. ... Read more »
手写Promise Posted on 2019-08-01 | In 前端 本文通过实现一个简单的符合promise/A+规范的Promise类,从而深入理解ES6中的Promise类。Promise/A+规范可以通过该链接获得https://promisesaplus.com/。代码如下: 1234567891011121 ... Read more »
this指针与箭头函数 Posted on 2019-07-31 | In 前端 this指针是javascript中一个让人比较头疼的问题,稍不注意就会晕头转向。参考了很多网上的blog大部分都是将this使用场景进行分类,然后归纳this的指向。但这些都是都没有深入到this指针的本质。实际上要弄清楚this指针的指向,我们只需要牢牢记住一句话 thi ... Read more »
发布订阅与观察者 Posted on 2019-07-30 | In 设计模式 发布订阅模式与观察者模式 发布订阅模式与观察者模式是两个及其容易弄混淆的设计模式,二者虽然在使用场景上有相似之处,但是在实现的调度方式上有不同之处。 发布订阅模式 我们首先介绍下发布订阅模式。根据维基百科上的定义,发布订阅模式是一种消息范式,消息的发送者( ... Read more »
自制编译器(三) Posted on 2019-06-30 | In 读书笔记 语法分析 在本篇文章中,我们将采用javacc来实现编译器的语法分析功能。语法中一定会有表示“需要解析的对象整体”的符号。在Cb中,编译的单位,即“单个的文件”是需要分析的对象,所以需要用相应的语法规则对其进行表示。 Cb中表示1个文件整体的非终端符号被 ... Read more »
自制编译器(二) Posted on 2019-06-30 | In 读书笔记 从本次开始我们正式进入到编译的开发工作,我们将要开发的Cb语言编译器并不支持宏定义,因此我们将跳过预处理器的开发工作,实际上预处理器仅仅是对导入外部文件的定义和替换程序中的宏定义,实现起来相对难度较低,因为我们跳过此部分直接进入到狭义的编译器开发阶段。首先我们要实现的就是词法 ... Read more »
自制编译器(一) Posted on 2019-06-30 | In 笔记 在进入主题之前我们首先要弄清楚到底什么时编译器,它在计算机世界中起着什么作用,以及它的工作原理及流程。需要注意的是在整个系列中我们将会实现一个简单的类C语言的编译器,它是C语言的一个子集,我们称为Cb语言。 编译器的定义 根据维基百科的定义,编译器是一种 ... Read more »
linux命令每日学-管道与重定向 Posted on 2019-06-29 | In linux命令每日学 linux命令每日学-管道与重定向 经常搞混管道与重定向这两种命令,今天特意对这两种命令进行一个梳理,从而加深对着两个命令的理解。 管道 在linux种管道的主要目的是实现两个不同进程间的通信,通俗的说也就是将A进程的输出传递给B进程的输入。通过‘ | ’ ... Read more »