浮名浮利,虚苦劳神。叹隙中驹,石中火,梦中身。——苏轼《行香子·述怀》

go语言socket编程笔记

原文地址 本文是我的一些总结和记录。 Socket介绍 Socket起源于Unix,而Unix基本哲学之一就是 “一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现,网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用:Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。 常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的S...

阅读更多

golang 字符串操作

Go 字符串处理的常用函数 Go标准库中的strings和strconv两个包里面有一些最常用的字符串操作函数 strings 包中的常用函数 strings官方文档 func Contains(s,substr string) bool 字符串s中是否包含 substr 返回bool值 1 2 3 4 5 6 7 8 9 fmt.Println(strings.Contains("seafood", "foo")) fmt.Println(strings.Contains("seafood", "bar")) fmt.Println(strings.Contains("seafood", "")) fmt.Println(strings.Contains("", ""))...

阅读更多

Learn Go Interface

Go的Interface 是一组method(方法)集,只要一个非interface类型数据实现了集合内的方法就能使用该interface 直接看例子,struct继承的例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 package main import "fmt" type Huma...

阅读更多

Learn Go channel

学习Go channels 的记录 最近在YouTube上看一个GO 的学习视频。记录下学习过程的知识点。 链接在这里: Learn Go Programming - Golang Tutorial for Beginners 因为太长了,YouTube不能自动生成字幕。啃的生肉,有理解不恰当地方的欢迎指正 废话不多说直接上代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 package main import ( "fmt" "time" ) con...

阅读更多

使用beego-orm 操作mysql数据库

原文章地址在这里 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 package main // 接下来我们的例子采用前面(test1/main.go)的数据库表User,现在我们建立相应的struct import ( "time" "github.com/astaxie/beego/orm" // 采用了Go style方式对数据库进行操作,实现了struct到数据表记录的映射. ...

阅读更多

linux grep awk 使用记录

grep 命令 grep ^vivek /etc/passwd grep -E ‘word1|word2’ 文件名 ping -qc1 google.com 2>&1 | awk -F’/’ ‘END{ print (/^rtt/? “OK “$5” ms”:”FAIL”) }’ ping -qc1 : 不输出ping 的过程; 2>&1 : 将标准警告(2)重定向到标准输出(1); awk -F’/’ 定位最后一行(END)如果是以rtt开头 输出OK 并打印$5,如果是其他的信息,输出FAIL。 ping -qc4 47.240.25.22 2>&1 |grep rtt |awk -F ‘[/= ]’ ‘{print “...

阅读更多

Go switch VS select

switch is used to make a decision based on a variable value of any type. switch用于根据任何类型的变量值做出决定。 Read this for more details: Go’s switch is more general than C’s. The expressions need not be constants or even integers, the cases are evaluated top to bottom until a match is found, and if the switch has no expression it switches on true. It...

阅读更多

goroutine学习记录

学习下goroutine的使用方法 goroutine是Go并行设计的核心。 goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存 (大概是4~5KB) ,当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。 goroutine通过go关键字实现了,其实就是一个普通的函数。 通过关键字go就启动了一个goroutine 1 go hello(a, b, c) goroutine 的设计要遵循:不通过共享来通信,而是通过通信来共享。 gorouti...

阅读更多