其他基础相关

 2017-08-28 08:29:06 |  0 Comments

0.HTTP协议权威指南 开始

1.2 web客户端和服务器

web内容是存储在web服务器上的,web服务器使用的是HTTP协议,因此经常被成为HTTP服务器.

URI:Uniform Resource Idntifier,URI.
URI有两种形式,URL和URN.(现在绝大多数都是URL)

1.3-1 媒体类型

最初设计是为了解决在不同的电子邮件系统之间搬移报文时存在的问题.

1.3-2 URL

URL:统一资源标示符.它描述了一台特定服务器上某资源的特定位置.
URL标准格式:

Scheme+因特网地址+服务器上的某个资源

Ex:
http://www.codermagefox.com/index.html

http://:HTTP协议,Scheme
www.codermagefox.com:因特网地址.
index.html:指定资源地址.

1.3-3 URN

URN为统一资源名,作为特定内容的唯一名称使用者,与目前资源所在地无关.比如RFC2141,不管它处于何处,我们都可以用下列URN来命名它:

urn:ietf:rfc:2141

1.4 事务

一个HTTP事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)相应结果组成.这种通信是通过名为HTTP报文的格式化数据块进行的.

1.4.1 方法

HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP method).这个方法会告诉服务器要执行什么动作.
常见的五种:

  1. GET:从服务器向客户端发送命名资源
  2. PUT:将来自客户端的数据存储到一个命名的服务器资源当中去
  3. DELETE:从服务器中删除命名资源
  4. POST:将客户端数据发送到一个服务器网关应用程序
  5. HEAD:仅发送命名资源响应中的HTTP首部

(详细在第三章)

1.4.2状态码

每条HTTP响应返回时都会携带一个状态码.状态码是一个三位数字的代码,告知客户端是否请求成功,或者是否需要采取其他动作.

200:OK,文档正确返回
302:Redirect(重定向)
404:NotFound.

1.4.3web页面中的多对象

一个web页面通常不是单个资源,而是一组资源

 2017-08-10 21:30:00 |  0 Comments

排序算法理解与JS实现

###0.什么是算法? 输入:一个算法必须有零个或以上输入量。 输出:一个算法应有一个或以上输出量。 明确性:算法的描叙必须无歧义,实际运行结果是确定的 有限性:必须在有限个步骤内结束 有效性:又称可行性。能够被执行者实现。 ————高德纳《计算机程序设计艺术》 先定义好互换函数Swap,作用为交换数组中两个数的值: function swap
 2017-08-10 21:30:00 |  0 Comments

FP的一个重要知识点:柯里化

FP入门概念必须掌握的是“纯函数”,“柯里化”,“函数组合”。就算只是作为一个FP新手,理解柯里化也是基本的要求。但是我对柯里化的理解一直很模糊,那么今天写个总结,搞定它。

模糊在哪?

不知道什么是真正的柯里化,对柯里化的理解就是减少一个接收的参数,反柯里化就是添加一个接收的参数(我相信大多数人和我是一样一样的)。这种理解其实是非常粗浅的。

首先上Wiki:

柯里化

柯里化(英语:Currying),又译为卡瑞化加里化,是把接受多个参数函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

在直觉上,柯里化声称“如果你固定某些参数,你将得到接受余下参数的一个函数”。

这不还是等于什么都没说嘛! 还是用ScriptOJ的一道题目来理解理解。

curry函数

Q:

函数式编程当中有一个非常重要的概念就是 函数柯里化。一个接受 任意多个参数 的函数,如果执行的时候传入的参数不足,那么它会返回新的函数,新的函数会接受剩余的参数,直到所有参数都传入才执行操作。这种技术就叫柯里化。请你完成 curry 函数,它可以把任意的函数进行柯里化,效果如下:

  1. const f = (a, b, c d) => { ... }
  2. const curried = curry(f)
  3. curried(a, b, c, d)
  4. curried(a, b, c)(d)
  5. curried(a)(b, c, d)
  6. curried(a, b)(c, d)
  7. curried(a)(b, c)(d)
  8. curried(a)(b)(c, d)
  9. curried(a, b)(c)(d)
  10. // ...
  11. // 这些函数执行结果都一样
  12. // 经典加法例子
  13. const add = curry((a, b) => a + b)
  14. const add1 = add(1)
  15. add1(1) // => 2
  16. add1(2) // => 3
  17. add1(3) // => 4

注意,传给 curry 的函数可能会有任意多个参数。

这道题的意思其实就是,不管我传进去几个函数,得到的答案都是相同的。它产生了一系列函数方法,每个函数都只有一个参数,实现是通过每次在另一个新的Cu

Title - Artist
0:00