在 Golang 中使用 C 代码

2014 年 10 月 21 日 by name5566 Categories: C/C++, Computer Science, Golang

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

cgo 使得在 Golang 中可以使用 C 代码。

Hello World

为了有一个较为直观的了解,我们来看一个简单的例子,创建文件 main.go:

package main

/*
#include <stdio.h>

void sayHi() {
    printf("Hi");
}
*/
import "C"

func main() {
    C.sayHi()
}

执行程序:

go run main.go

程序执行并输出 hi[......]

继续阅读

没有评论

在 Golang 中使用 Protobuf

2014 年 10 月 11 日 by name5566 Categories: Computer Science, Golang

https://code.google.com/p/goprotobuf/ 项目为 Golang 提供了 Protobuf 的支持。

安装 goprotobuf

  1. https://github.com/google/protobuf/releases 获取 Protobuf 编译器 protoc(可下载到 Windows 下的二进制版本)
  2. 获取 goprotobuf 提供的 Protobuf 编译器插件 protoc-gen-go(被放置于 $GOPATH/bin 下,$GOPATH/bin 应该被加入 PATH 环境变量,以便 protoc 能够找到 protoc-gen-g[......]

继续阅读

没有评论

Linux 下安装和配置 VPN(Virtual Private Network)

2014 年 08 月 29 日 by name5566 Categories: Computer Science

了解 VPN

VPN 是 Virtual Private Network(虚拟私有网络)的缩写。所谓私有网络指的是使用私有 IP 地址空间的网络,例如企业内部建立的局域网。有些时候,我们需要通过公有网络(public network,例如 Internet)来建立私有网络,这种私有网络也就是 VPN。我们常见的 PPTP(Point-to-Point Tunneling Protocol)就是实现 VPN 的一种协议。PPTP 使用 PPP(Point-to-Point Protocol)来对数据包加密和验证,而 PPTP 本身主要用于为 PPP 提供路由支持。PPTP 不够安全,但是相关安[......]

继续阅读

一条评论

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 使用内存时的限制[......]

继续阅读

没有评论