宇宙湾

厚积薄发

开发人员用一种语言就能编写整个 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?

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
2
3
# 安装完成后,iTerm 中看到可以执行 go 命令了
$ which go
/usr/local/go/bin/go

Linux

1
2
$ wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
$ sudo tar -C /usr/local/ -xzvf go1.14.4.linux-amd64.tar.gz

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 环境变量
$ vim ~/.bashrc
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

# 工作目录
# bin: 存放可执行文件
# pkg: 存放编译好的库文件
# src: 存放 go 的源文件
$ mkdir -p ~/code/gopath
$ vim ~/.bashrc
export GOROOT=/usr/local/go
export GOPATH=~/code/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

$ source ~/.bashrc
阅读全文 »

Session 是什么?

 代表服务器与浏览器之间的一次会话过程,这个过程可以是连续的,也可以是时断时续的。而在 Web 开发语境下,则指一类用来在客户端与服务器之间保持状态的解决方案

多样的存在形式

1
javax.servlet.http.HttpSession
1
s = requests.session()
  • PHP
1
$_session
  • Hibernate
1
org.hibernate interface Session
  • WebLogic
1
Weblogic Server session
  • JSP
1
HttpSession
阅读全文 »

SSO 是什么?

 SSO(Single Sign-on),即单点登录,指在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中重新登录,也就是说用户的一次登录能得到其他所有系统的信任

为什么要有 SSO?

 尤其,大型网站背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作
 如果每次子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证的逻辑搞疯掉

阅读全文 »