golang tcp io dt的一些问题

1. io是阻塞的 导致类似 公频聊天一对多的时候 write 到所有用户的时候 等等待所有写入完成 函数才执行完毕 要么就模拟一个异步 但是目前为止没有找到好的解决方案 2.io是阻塞的 导致conn.Read([]byte) 让我以为是 buf := make([]byte, 2) conn.Read(buf) 要么返回一个错误,要么阻塞直到读到2个byte数据为止 其实有可能会返回 1,nil阅读全文

开源中国博客 2013-06-06 17:57 itian277

偷看你在干嘛!golang实现, 基于dnsmasq的dns请求获取

源码地址 什么是dnsmasq(摘自网络) Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以为局域网电脑提供内网ip地址和路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个 PXE 服务器。 更多详细 https://wiki.archlinux.org...阅读全文

开源中国博客 2013-12-20 17:25 Able

golang cookie、json、base64的小例子

今天项目中要将map存入cookie,于是大象哥研究了下json和base64,写了个小例子 一、将map存入cookie //要存入cookie的map your := map[string]string{} your["isuser"] = isuser your["username"] = username your["password"] = d.Strtomd5(password) //将map转成json 转换后的是[]byte,需要string(your_byte...阅读全文

开源中国博客 2014-05-17 17:05 别人说我名字很长

golang学习的点点滴滴:异常机制

func main() { // defer 必须在异常抛出之前 // 下面如果有异常抛出(或人为panic) // 则停止往下执行,跳转到defer后的代码块进行收尾工作 // 即便不会抛出异常,最后也会执行defer后的代码进行收尾 // 用recover处理异常信息,当err为空时,则证明没有任何异常抛出 // 如果不为空,则进行异常处理 defer func() { if err := recover();nil!=err { fmt.Println(err) ...阅读全文

开源中国博客 2014-09-29 22:03 亓斌哥哥

golang学习的点点滴滴:range使用总结

1、当range作用于string时, 第一个返回值为index,第二次是char         str := "hello world" for index, ch := range str { fmt.Printf("%d --- %c\n", index, ch) } 2、当range作用于array时, 第一个返回值为index,第二次是value func PrintArray(array [5]int) { for index, res := range ...阅读全文

开源中国博客 2014-09-29 22:06 亓斌哥哥

golang学习的点点滴滴:struct匿名字段

package main  import "fmt" type Base struct { Name string Age int } type Child struct { Base // 匿名字段, 默认把Base的所有字段都继承过来了。 这样看起来才像真正的继承 Age int } func main() { c := new(Child) c.Name = "hello" // 可以直接使用Base中的字段 c.Age = 20  // 如果有重复的, 则最外的优先 ...阅读全文

开源中国博客 2014-09-29 22:10 亓斌哥哥

golang学习的点点滴滴:channel缓冲区

创建带有缓冲区的channel: ch := make(chan int, 10) 则该缓冲区最多可以不断接收10次写入,然后10次读出 package main  import "fmt" import "strconv" func main() { ch := make(chan int, 10)  // 创建一个具有10个缓存区的channel for { select { case ch <- 1 : fmt.Println("read data") ...阅读全文

开源中国博客 2014-10-01 10:26 亓斌哥哥

golang “is an unexported field of struct type c...

今天调试程序的时候发现程序报is an unexported field of struct type controllers,但是用fmt.Println打印结构能正常 ,只是放到模板引擎中就不能访问了。     查找错误过程:         在控制台能够通过FMT包打印结构体,那么证明语法上应该没有什么问题。而且发生错误只是在模板调用的时候发生,于是从调用的数据入手。原先的定义的结构是   type Good struct{     item   string ...阅读全文

开源中国博客 2013-06-03 23:06 念念之间

初识golang,变量,常量,iota的学习

变量的定义: go总使用var来声明变量,在函数外面声明变量的方式有 var 变量1, 变量2, 变量3 [int] = 1, 2, 3,其中int这个类型声明可以省略。如果在函数内部声明可以使用以下这种更加简便的方法 变量1, 变量2, 变量3 := 1, 2, 3,这种方式只能在函数内使用。   常量的使用: go中常量可以定义为数组、布尔值、字符串等类型。使用const 常量名 [常量类型] = 常量值。   ...阅读全文

开源中国博客 2013-08-22 22:51 vcity

初识golang之流程控制

if: 使用的语法如: if x > 10 {     fmt.Println("x大于10") } else {     fmt.Println("x小于10") } 条件判断语句中不需要括号。与其他语言不同的就是条件判断语句里允许声明一个变量,这个变量的作用域在该条件逻辑块内有效,其他地方不起作用,如: if x := randVal(); x > 10 {     fmt.Pri...阅读全文

开源中国博客 2013-08-26 23:30 vcity

golang http测试 no-cache 对性能的影响

做了下go和java的http性能的简单比较服务端直接输出字符串使用JMeterwindows下 2000的并发,测试结果很出乎意料,go不会这么差吧研究了半小时,原因如下servlet添加里加了         response.setHeader("Pragma", "no-cache"); go的测试代码里没有设置该参数设置后重新跑测试ok阅读全文

开源中国博客 2013-12-29 12:01 咖啡伴侣