为什么 JavaScript 对服务端开发很重要?
开发人员用一种语言就能编写整个 Web 应用
可以减少开发客户端和服务端时所需的语言切换(Clojure, ClojureScript 一样的道理)
代码可以再客户端和服务端中共享(表单校验或游戏逻辑中使用同样的代码)
JSON 是目前非常流行的数据交换格式
JSON 还是 JavaScript 原生的
有些 NoSQL 数据库中用的就是 JavaScript 语言
MongoDB 的管理和查询语言都是 JavaScript
CouchDB 的 Map/reduce 也是 JavaScript
JavaScript 是一门编译目标语言
List of languages that compile to JS
Node 用的虚拟机(V8)会紧跟 ECMAScirpt 标准
在 Node 中如果想用新的 JavaScript 语言特性,不用等到所有浏览器都支持
散列表
什么是 散列表?
散列表(Hash Table,即哈希表)是根据键值(Key)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表
为什么要有 散列表?
可以提供快速的插入操作和查找操作
不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即 O(1)
的时间级
实际上,这只需要几条机器指令
哈希表运算得非常快,在计算机程序中,如果需要在一秒种内查找上千条记录通常使用哈希表(例如拼写检查器),而树的操作通常需要 O(N)
的时间级
编程实现相对容易
散列表工作机制
存储
使用一个数组实现的无序符号表
意味着,数组创建后,难于扩展(某些哈希表被基本填满时,性能下降得非常严重)
要么预设足够的空间,要么定期将数据迁移到更大的哈希表
重拾 Golang
什么是 Golang?
Go™ is an open source programming language that makes it easy to build simple, reliable, and efficient software.
特性
类别
- 静态语言
- 编译型语言
优点
- 语言层面支持并发
- 无依赖,直译机器码
- 内置
runtime
,支持 GC - 可跨平台编译
- 支持内嵌 C
- 丰富的标准库
- 学习曲线低
缺点
- 接口是枚举类型
import
包不支持版本goroutine
一旦启动,切换将不受程序控制
环境配置
安装
根据操作系统,在 Download 页面下载对应的安装包,进行安装
MacOS
1 | # 安装完成后,iTerm 中看到可以执行 go 命令了 |
Linux
1 | $ wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz |
配置
1 | # 环境变量 |