Golang 极简指南(4)— 编码

2014 年 08 月 04 日 by name5566 Categories: Computer Science, Golang

参考文献列表:
http://golang.org/doc/code.html

workspace

Golang 的代码必须放置在一个 workspace 中。一个 workspace 是一个目录,此目录中包含几个子目录:

  1. src 目录。包含源文件,源文件被组织为包(一个目录一个包)
  2. pkg 目录。包含包对象(package objects)
  3. bin 目录。包含可执行的命令

包源文件(package source)被编译为包对象(package object),命令源文件(command source)被编译为可执行命令(command executable)。使[......]

继续阅读

没有评论

关于能力

2014 年 08 月 03 日 by name5566 Categories: Others

我认为人最关键的能力有两个:

  1. 解决问题的能力
  2. 与人合作的能力

生活中充满了各种各样的问题。解决问题才能够推进事物的发展。

一个人能够解决的问题是有限的,主要是由于个人的能力和精力是受限的,所以与人合作就显得至关重要。有效的合作可能是基于能力互补的,也可能是弥补精力不足的,或者两者兼有之。

一条评论

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

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

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

Golang 运行时(runtime)管理了一种轻量级线程,被叫做 goroutine。创建数十万级的 goroutine 是没有问题的。范例:

package main

import (
    "fmt"
    "time"
)

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

继续阅读

没有评论

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;
}

/[......]

继续阅读

4条评论