Golang 极简指南(3)— 并发支持

2014 年 07 月 29 日 by name5566 Categories: Computer Science, Golang

参考文献列表:
http://tour.golang.org/

Golang 运行时(runtime)管理了一种轻量级线程,被叫做 goroutine。范例:

package main

import (
    "fmt"
    "time"
)

func say(s string) {
    for i := 0; i < 5; i++ {
        time.Sleep(100 * time.Millisecond)
        fmt.Println(s)
    }
}

func main() {
    // 开启[......]

继续阅读

没有评论

Golang 极简指南(2)— 方法和接口

 by name5566 Categories: Computer Science, Golang

参考文献列表:
http://tour.golang.org/

方法

在 Golang 中没有类,不过我们可以为结构体定义方法。我们看一个例子:

package main

import (
    "fmt"
    "math"
)

type Vertex struct {
    X, Y float64
}

// 结构体 Vertex 的方法
// 这里的方法接收者(method receiver)v 的类型为 *Vertex
func (v *Vertex) Abs() float64 {
    return math.Sqrt(v.[......]

继续阅读

没有评论

Golang 极简指南(1)— 基本概念

2014 年 07 月 28 日 by name5566 Categories: Computer Science, Golang

参考文献列表:
http://tour.golang.org/

安装 Golang

http://golang.org/dl/ 可以下载到 Golang。安装文档:http://golang.org/doc/install

Hello Go

我们先创建一个文件 hello.go:

package main

import "fmt"

func main() {
    fmt.Printf("hello Golang\n");
}

执行此程序:

go run hello.go

Golang 程序由包(packages)组成[......]

继续阅读

没有评论

Node 极简指南(5)— 继承和 Events

2014 年 07 月 17 日 by name5566 Categories: Computer Science, JavaScript

参考文献列表:
http://nodejs.org/

JavaScript 实现继承有多种方式。

了解 util.inherits 方法

Node 提供了 util.inherits 方法:

util.inherits(constructor, superConstructor)

util.inherits 方法设置 constructor 的 prototype 属性为一个新对象,此对象的原型对象为 superConstructor.prototype。调用 util.inherits 完成继承之后,constructor 会被添加一个 super_ 属性,sup[......]

继续阅读

没有评论

Node 极简指南(4)— 内存

2014 年 07 月 09 日 by name5566 Categories: Computer Science, JavaScript, Reading Notes, 深入浅出 NodeJS

参考文献列表:
深入浅出 NodeJS
http://nodejs.org/

Node 使用 v8 来解析 JavaScript 脚本,v8 限制了对内存的使用,使用过多的内存会导致 Node 进程退出。按照 https://github.com/joyent/node/wiki/FAQ 的说法(2014/7/8),默认情况下 Node 在 32 位系统上存在 512MB 内存使用限制,在 64 位系统上则为 1G,此限制能够通过 –max-old-space-size 修改至上限为 1G(32 位)和大约 1.7G(64 位)。注意,这种限制指的是通过 v8 使用内存时的限制[......]

继续阅读

没有评论

Node 极简指南(3)— 进程

2014 年 07 月 01 日 by name5566 Categories: Computer Science, JavaScript, Reading Notes, 深入浅出 NodeJS

参考文献列表:
深入浅出 NodeJS
http://nodejs.org/

Node 虽然自身存在多个线程,但是运行在 v8 上的 JavaScript 是单线程的。Node 的 child_process 模块用于创建子进程,我们可以通过子进程充分利用 CPU。范例:

var fork = require('child_process').fork;
// 获取当前机器的 CPU 数量
var cpus = require('os').cpus();
for (var i = 0; i < cpus.length; i++) {
    // 生成新进程[......]

继续阅读

没有评论

Node 极简指南(2)— 定时器

2014 年 06 月 22 日 by name5566 Categories: Computer Science, JavaScript, Reading Notes, 深入浅出 NodeJS

参考文献列表:
深入浅出 NodeJS
http://nodejs.org/

setTimeout 和 clearTimeout

var obj = setTimeout(cb, ms);

setTimeout 用于设置一个回调函数 cb,其在最少 ms 毫秒后被执行(并非在 ms 毫秒后马上执行)。setTimeout 返回值可以作为 clearTimeout 的参数,clearTimeout 用于停止定时器,这样回调函数就不会被执行了。

setInterval 和 clearInterval

var obj = setInterval(cb, ms);[......]

继续阅读

没有评论

Node 极简指南(1)— 模块机制

参考文献列表:
深入浅出 NodeJS
http://nodejs.org/

JavaScript 规范(ECMAScript)没有定义一套完善的能适用于大多数程序的标准库。CommonJS 提供了一套 JavaScript 标准库规范。Node 实现了 CommonJS 规范。

模块基础

在 Node 中,模块和文件是一一对应的。我们定义一个模块:

// circle.js
var PI = Math.PI;

// 导出函数 area
exports.area = function(r) {
    return PI * r * r;
}

/[......]

继续阅读

2条评论

JavaScript 极简指南(3)— 数组

2014 年 06 月 17 日 by name5566 Categories: Computer Science, JavaScript

参考文献列表:
JavaScript: The Good Parts
JavaScript: The Definitive Guide, 6th Edition

阅读本文需要有其他语言的编程经验。

在 JavaScript 中数组是对象(而非线性分配的内存)。

通过数组 literal 来创建数组:

var empty = [];
var numbers = [
    'zero', 'one', 'two', 'three', 'four',
    'five', 'six', 'seven', 'eight', 'nine'
];
empt[......]

继续阅读

没有评论

JavaScript 极简指南(2)— 对象和函数

2014 年 06 月 15 日 by name5566 Categories: Computer Science, JavaScript

参考文献列表:
JavaScript: The Good Parts
JavaScript: The Definitive Guide, 6th Edition

阅读本文需要有其他语言的编程经验。

JavaScript 中的简单类型包括:

  1. 数字
  2. 字符串
  3. 布尔(true 和 false)
  4. null
  5. undefined

此外的其他类型均是对象(我们不要被 typeof 操作符的返回值所迷惑),例如:

  1. 函数
  2. 数组
  3. 正则表达式
  4. 对象(对象自然也是对象)

对象基础

在 JavaScript 中,对象是属性的集合(对象为关联数组),每个属[......]

继续阅读

没有评论