GO - HelloWorld

本节将通过Hello World带领大家进入Go的世界,并由此介绍Go代码的主要结构、部分关键字和包的一些特性。为阅读后面的打下基础。 1. Let's go 咱们以往学习任何程序都会以Hello World作为第一个实例,在此咱们不按常理出牌,针对Go语言,我们的第一个程序以Let's go开始。(其实是换汤不换药哈!!)。 代码如下: 控制台的输出结果为:Let's go! 第2行:定义此代码所属的包名,在一个项目中有且只有一个名为main的包。(最佳实践:包名由简短且小写的字母构成) 包名...阅读全文

CSDN博客 2013-01-28 23:33 aaron_ye

Windows平台下编译GO语言

Google官方还没有放出Windows平台下的Go语言编译环境,不过对于想体验下Go语言的朋友可以尝试下爱好者写的 移植版本 下载: go-1.zip 环境设置: set GOROOT=<the go folder> set GOOS=mingw set GOARCH=386 例如我安装在如下目录 F:/tool/go-1/go/ 则设置如下: C:/>set GOROOT=F:/tool/go-1/go/ C:/>set GOOS=mingw C:/>set GOARCH=386 C:/>s...阅读全文

bee源码分析

4月9号那天,出了一个线上bug,回家分析了半天,主观原因就不说了,客观原因就在于beego提供的编译打包工具bee不支持配置文件检查。。。研究了半天,关于配置文件的预编译检查,我也没啥想法,不过看了看bee的源码,还是懂了不少,记录一下。 围绕bee run命令说一下。 用这个命令,要进入当前包,检查目录./conf/app.conf文件,得到appname。 编译。go install controllers,编译生成静态链接库到pkg文件夹下面。此命令还可编译出执行文件到bin文件夹下面。...阅读全文

探测局域网里面的设备

之前用了一个牛逼的App,叫做Fing,它可以获取到本地局域网里面所有设备的IP、MAC地址和设备厂商。一直觉得很牛逼,今天好好想了想,发现也没那么多神秘。 穷举局域网里的IP 局域网IP一般有192和10两种形式。一般来说,10开始的局域网高端一些,能容纳的设备比较多。 穷举所有IP,有一个方式是通过trancert命令,记录访问某个网站经过的路径,那么第一条路径就是访问路由器,得到路由器IP之后,按最后一部分进行穷举。 但是这个方法有点麻烦,简化一点的,就是获取当前设备在局域网里面的IP,以...阅读全文

Cyeam 16 March 2015 Bryce

Golang:有趣的 channel 应用

严格意义上说,本文是我另外一片文章《Golang Funny: Play with Channel》的中文版本。不过,毕竟是用中文当母语的,所以就不翻译了,重新按照那个内容写过吧。 channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述: 信道...阅读全文

CSDN博客 2014-01-14 15:11 kjfcpua

GOROOT GOPATH GO GET

1. GOROOT GOPATH 及 PATH 設置 a.添加系統變量GOROOT:安裝完Go第一件事就是設置GOROOT。例如我的Go安裝在C:\Go目錄,則要設置 GOROOT = C:\Go b.修改環境變量PATH:將%GOROOT%\bin加到環境變量PATH裏面,這样就可以直接在dos命令模式下任意目錄運行%GOROOT%\bin目錄下的程序 如:go.exe godoc.exe c.添加系統變量GOPATH:GOPATH是用來設置包加載路徑的重要變量。可以設置多個路徑,用分號(;)...阅读全文

CSDN博客 2014-09-08 11:30 susubuhui

Golang后台开发初体验

补充反馈 slice 既然聊到slice,就不得不提它的近亲array,这里不太想提值类型和引用类型的概念(个人觉得其实都是值类型),golang的array其实可以假想为C的struct类型,只是struct通过变量名来访问成员(如xxx.yyy),而array通过下标来访问成员(如xxx[3]),具体内存布局如下图所示: 图 1 golang的array内存布局 显然golang的array灵活性比较差,长度固定,这才有了slice,概念上有点类似于STL的vector,但是具体实现上还是有...阅读全文

CSDN博客 2014-07-13 16:40 cszhouwei

DNS协议Golang实现

DNS客户端的实现还是用了Go语言,毕竟这个最熟悉。我的实现只是简单的实现了发送DNS请求,解析响应内容这些功能,对于多线程并发等机制都没有考虑。 我最先参考了《计算机网络》,上面提了一句,DNS请求就是发送一个UDP数据包,然后我就天真了,直接把域名的字符串用UDP发送了。结果就是没有响应。 后来就老老实实的分析协议,协议的分析请参考上一篇文章《DNS协议分析》。 域名服务器选用了阿里提供的233.5.5.5,53端口。详情可以查看阿里DNS官网。 先说一下Golang发送UDP数据报的方法。...阅读全文

DNS协议分析

一直有一个愿望,能把知道的东西的原理搞明白:计算机网络、操作系统等等等等。今天好好研究了研究DNS协议。 DNS协议是应用层协议,一般是基于UDP协议,不过我看了Golangnet 包里相关源码用的是TCP协议传输。端口是53,这次写代码实现了一边DNS客户端,估计短时间内忘不了这个端口号了。 了解DNS这个协议,从书本上我基本没看懂过,书里我基本就记着DNS是递归查询的,如果查询服务器上没有找到相应的记录,则递归得去查询上一级服务器。还有就是根域名服务器在美国这些,反正我就是从来没搞懂过。 昨...阅读全文

Java, Go web server

1. 使用java, go自带web server java语言版本参考http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/package-summary.html 的 A minimal Http server example package net; import java.io.IOException; import jav...阅读全文

CSDN博客 2010-07-25 18:04 yang_net

go的数组和切片

对于GO的数组和切片的初步了解, 切边是数组的一个指针,切片的初始化有三种:一种是通过make,即 slice := make([]int,5,10) 另一种是通过:=指向一个已经存在的数组。即 slice := []int {1,2,3,4,5,6} 切片的切片不可初始化超过原始切片的cap值,比如: sliceA := make([]int,5,10) sliceB := sliceA[:11] 这个是不行的,11超过了sliceA的cap值(10),会报运行时异常。 对切片的append,...阅读全文

开源中国博客 2014-10-10 16:33 canzyq

go语言访问mysql数据库

Go-MySQL-Driver:一个Go语言的轻量级极速的mysql驱动 原文来自:http://hao.jobbole.com/go-mysql-driver/ Go语言的 database/sql 包的一个 MySQL驱动。 特性 轻量级与快速原生Go语言,没有C绑定,只有纯Go没有不安全的操作(类型转换等)动态处理崩溃的连接动态连接池支持大于16MB的查询完全 sql.RawBytes支持 环境要求 Go 1以上MySQL (Version 4.1 or higher), MariaDB ...阅读全文

CSDN博客 2014-09-18 11:51 newsyoung1

安全URL的Base64编码

之前在《网址压缩的调研分析(续)》介绍过Base62算法,他是一种类似于Base64的哈希算法。今天发现了另一种优化的Base64算法,又参考了下Golang的源码,在encoding/base64/base64.go里面。 const encodeStd = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" 传统的Base64用的是A-Z、a-z、0-9,还有+和/,一个64个编码串。 然而,标准的Base64...阅读全文

字符串查找算法(二)

接前面的《字符串查找算法》继续写。上一篇文章说过,神奇的数字16777619,当时不知道这个是干嘛用的,现在差不多知道了。 字符串哈希,会经常用到FNV哈希算法。FNV哈希算法如下:将字符串看作是字符串长度的整数,这个数的进制是一个质数。计算出来结果之后,按照哈希的范围求余数,结果就是哈希结果。 #define TRUE_HASH_SIZE ((u_int32_t)50000) /* range top plus 1 */ #define FNV_32_PRIME ((u_int32_t)167...阅读全文

Go语言”奇怪用法“实践总结

2013-11-23 wcdj 0 摘要 本文通过对A Tour of Go的实践,总结Go语言的基础用法。 1 Go语言”奇怪用法“有哪些? 1,go的变量声明顺序是:”先写变量名,再写类型名“,此与C/C++的语法孰优孰劣,可见下文解释: http://blog.golang.org/gos-declaration-syntax 2,go是通过package来组织的(与python类似),只有package名为main的包可以包含main函数,一个可执行程序有且仅有一个main包,通过imp...阅读全文

CSDN博客 2013-11-23 17:48 delphiwcdj

Go Web编程

《Go Web编程》 基本信息 作者: 谢孟军 出版社:电子工业出版社 ISBN:9787121200915 上架时间:2013-5-13 出版日期:2013 年6月 开本:16开 页码:352 版次:1-1 所属分类:计算机 更多关于 》》》《Go Web编程》 内容简介 计算机书籍 《go web编程》介绍如何用go语言进行web应用的开发,将go语言的特性与web开发实战组合到一起,帮读者成功地构建跨平台的应用程序,节省go语言开发web的宝贵时间。有了这些针对真实问题的解决方案放在手边,...阅读全文

CSDN博客 2013-04-23 14:55 chinapub_2009

Go 语言项目

出处:https://code.google.com/p/go-wiki/wiki/Projects Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.orggowalkergosearchSourcegraph Contributing To edit this page you must be a contributor to the go-wiki...阅读全文

CSDN博客 2013-11-11 12:00 leonzhouwei

Golang通过邻接表实现有向图

本科学习数据结构的时候就听前辈说过,学好数据结构、计算机组成、操作系统和计算机网络后就会成为大神,我也使劲学过,但是一直没发现数据结构的用处。实际编程用过比较多的就是哈希表了,一般语言也都会通过一些扩展包支持。 《数学之美》第九章——《图论和网络爬虫》,就浅显易懂的介绍了图的实际用途。搜索引擎里面的网络爬虫抓取网络数据,就是把互联网抽象成有向图这种数据结构,通过遍历这张图实现的互联网抓取。 图一般分为有向图和无向图,一般用来开发网络爬虫和地图(我就知道这两个)。图可以认为是节点和连接边的集合,有...阅读全文

Golang通过pup实现HTML解析

上一周给我的网站加了一个搜索功能,能自动抓取我的博客和别人的CSDN博客。通过RSS抓取。这样数据格式规范,容易解析。问题是信息较少。后来发现在HTML源代码里面,会有为了方便搜索引擎索引的meta字段,能指出作者和详情。以我的博客《Golang实现HTTP发送gzip请求》为例。里面的meta信息如下: <meta charset="utf-8"> <meta name="description" content="beego的httplib不支持发送gzip请求,自己研究了一下。"> <me...阅读全文

Cyeam 01 December 2014 Bryce