翔云

Just try, don't shy. 最新文章请点击
随笔 - 294, 文章 - 0, 评论 - 27, 阅读 - 49万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Golang

摘要:先给出结论: 同一个进程,使用一个端口,然后连接关闭,大约需要30s后才可再次使用这个端口。 测试 首先使用端口9001连接服务端,发送数据,然后关闭连接,接着再次使用端口9001连接服务端,如果连接失败,间隔15s后,再次尝试,最多尝试3次,。 client 经过3次重试,30s后,才可以重新使用 阅读全文

posted @ 2018-06-22 13:43 翔云123456 阅读(627) 评论(0) 推荐(0) 编辑

摘要:有时需要指定网络通信时本地使用的IP地址和端口号。 在Go语言中可通过定义 Dialer 中LocalAddr 成员实现。 Dialer结构定义如下: Addr是接口类型,其定义如下: 目前实现Addr接口的类型并且被net 库支持的类型 包括:TCPAddr、UDPAddr、IPAddr。 下面通 阅读全文

posted @ 2018-06-20 09:52 翔云123456 阅读(1583) 评论(0) 推荐(0) 编辑

摘要:我们已经知道 可以用于并发控制,但当遇到更复杂的场景时,例如主动取消goroutine或者使超时的goroutine自动退出等, 就无能为力。 这个时候,就是 大有用武之地。 包 定义了 类型,它跨API边界和进程之间携带截止日期,取消信号和其他请求范围的值。 对服务器的传入请求应创建一个Conte 阅读全文

posted @ 2018-06-19 11:22 翔云123456 阅读(609) 评论(0) 推荐(0) 编辑

摘要:开发过程中,经常遇到task之间的同步问题。例如,多个子task并发完成一部分任务,主task等待他们最后结束。 在Go语言,实现同步的一种方式就是WaitGroup。 Example output: n: 3 n: 1 n: 2 main exit... 注意 WaitGroup变量定义后,是不允 阅读全文

posted @ 2018-06-18 19:59 翔云123456 阅读(14533) 评论(2) 推荐(1) 编辑

摘要:问题 go thrift开发过程中,多个goroutine共用一个client时,报错: panic: runtime error: index out of range goroutine 24 [running]: happy apple/vendor/git.apache.org/thrift 阅读全文

posted @ 2018-06-17 11:09 翔云123456 阅读(247) 评论(0) 推荐(0) 编辑

摘要:下载websocket包 如果下载失败,可能是被墙了。 package golang.org/x/net/websocket: unrecognized import path "golang.org/x/net/websocket" (https fetch: Get https://golang 阅读全文

posted @ 2018-06-16 12:25 翔云123456 阅读(17217) 评论(3) 推荐(0) 编辑

摘要:thrift 最初是 facebook 开发使用的 rpc 通信框架,后来贡献给了 apache 基金会,出来得比较早,几乎支持所有的后端语言,使用非常广泛,是不可不知的一个网络框架。 和 grpc 一样,需要先定义通信协议,然后实现自己业务逻辑。 下面介绍其使用方法。 下载go thrift 库 阅读全文

posted @ 2018-05-19 11:54 翔云123456 阅读(2804) 评论(0) 推荐(0) 编辑

摘要:本文结合使用场景简单介绍sql中的insert、update的使用。 以下是代码: 如果记录已经存在,则更新,否则插入新记录。 output: 第一次执行,记录不存在,update不影响任何行,然后尝试insert操作。 2018/04/30 22:15:13 sql: update tbl_hos 阅读全文

posted @ 2018-05-01 10:55 翔云123456 阅读(964) 评论(0) 推荐(0) 编辑

摘要:Go 语言RPC定义格式如下: func (t T) MethodName(argType T1, replyType T2) error 第一个参数是接收的参数,第二个参数是返回给客户端的参数,第二个参数必 须是指针类型的 如果Server端RPC函数返回错误,即error不为nil,第二个参数不 阅读全文

posted @ 2018-04-30 21:41 翔云123456 阅读(871) 评论(0) 推荐(0) 编辑

摘要:使用Go进行Mysql开发时,会遇到引号问题(实际上,与语言无关,只要使用sql就会遇到这些类似问题)。 本文举例说明如何解决这些问题。 Example1 第一例子演示格式字符是否要加引号。 代码如下: output: 2018/04/05 17:40:00 sql: insert into tbl 阅读全文

posted @ 2018-04-06 10:42 翔云123456 阅读(867) 评论(0) 推荐(0) 编辑

摘要:下载MySQL驱动 或者下载源码放到GOPATH中,下载地址:https://github.com/go sql driver/mysql Example 建表 简单创建一个table tbl_log包含3各字段ip,name, detail_msg. 下面代码向表中插入一条记录。 output 2 阅读全文

posted @ 2018-04-06 10:30 翔云123456 阅读(188) 评论(0) 推荐(0) 编辑

摘要:如何输入一个字符串,得到一个唯一的hashcode? 例子如下: package main import ( "fmt" "hash/crc32" ) // String hashes a string to a unique hashcode. // // crc32 returns a uint 阅读全文

posted @ 2018-04-05 16:22 翔云123456 阅读(4357) 评论(0) 推荐(0) 编辑

摘要:两种类型的定时器:ticker和timer。两者有什么区别呢?请看如下代码: ticker package main import ( "fmt" "time" ) func main() { d := time.Duration(time.Second 2) t := time.NewTicker 阅读全文

posted @ 2018-04-02 19:59 翔云123456 阅读(502) 评论(0) 推荐(0) 编辑

摘要:AES加解密的简单实现,代码如下。 Output: plain: 172.10.99.88 cipher: 4456f9258c204906cbb2516e1fc78c3fbbf439e9e7d49189a391ee33 new plain: 172.10.99.88 阅读全文

posted @ 2018-04-01 11:17 翔云123456 阅读(601) 评论(0) 推荐(0) 编辑

摘要:go test 功能,提高了开发和测试的效率。 有时会遇到这样的场景: 进行测试之前需要初始化操作(例如打开连接),测试结束后,需要做清理工作(例如关闭连接)等等。这个时候就可以使用TestMain()。 下面例子的文件结构如下: hello/add.go hello/test_add.go add 阅读全文

posted @ 2018-04-01 11:10 翔云123456 阅读(6172) 评论(0) 推荐(0) 编辑

摘要:随机数使用比较广泛,例如,抽奖、均衡等等。 下面简单说明其使用方法。 Example1 output: \$ ./t 2018/02/24 11:40:58 2 \$ ./t 2018/02/24 11:40:59 2 \$ ./t 2018/02/24 11:41:00 2 \$ ./t 2018 阅读全文

posted @ 2018-02-24 12:14 翔云123456 阅读(10878) 评论(0) 推荐(0) 编辑

摘要:Go语言中的类型断言,语法上是这样的: x.(T) 其中,x是interface接口的表达式,T是类型,称为被断言类型。 补充一下,接口有接口值的概念,其包括动态类型和动态值两部分。 类型断言根据T的不同可以分为两种情况: 1. T是具体类型 类型断言首先检查x的动态类型是否是T. 如果是,类型断言 阅读全文

posted @ 2018-02-23 16:42 翔云123456 阅读(185) 评论(0) 推荐(0) 编辑

摘要:go get命令是go自带的包下载工具。 如果配置了GOPATH,下载的文件放置于GOPATH/src下面 例如 另外,经常遇到: 其中, … 表示下载所有的包 那么 ./… 表示下载当前目录下所有的包 阅读全文

posted @ 2018-02-21 18:07 翔云123456 阅读(220) 评论(0) 推荐(0) 编辑

摘要:今天将传说中的《Go语言圣经》,也就是《The Go Programming Language》的中文版读完了。 这本书鞭辟入里,读后醍醐灌顶。很大程度上提升了自己对Go代码编写的思维。 尤其是在写过一段时间Go代码后,很多疑问顿时消解,甚是畅快淋漓。 总之,Go语言轻松上手,简洁高效,值得一用。 阅读全文

posted @ 2018-02-20 23:19 翔云123456 阅读(530) 评论(0) 推荐(0) 编辑

摘要:本文以一个例子的方式介绍channel在同步中的使用。 下面的例子中,主task首先阻塞,直到两个task完成后,再继续执行。 package main import ( "log" "time" ) func main() { ch := make(chan int) go task1(ch) g 阅读全文

posted @ 2018-02-03 22:27 翔云123456 阅读(181) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示