自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 最好的mysql安装教程

https://blog.youkuaiyun.com/weixin_39821604/article/details/113141979

2021-08-03 14:49:25 140

原创 go web 编程实战派 读书笔记

​ package main import ( "fmt" "io/ioutil" "net/http" "text/template" ) func Welcome() string { return "Welcome" } func Doing(name string) string { return name + ", Learing Go web template" } func SayHello(w http.ResponseWriter, r *http.Request) { .

2021-07-30 17:41:28 644

原创 并发聊天服务器

今天终于调通了一个并发版的聊天服务器,这个服务器主要是管理用户,通知用户上线或者下线,然后消息转发,广播到客户端,有点像聊天室那种,非常有趣。 我先用函数编程把程序调通了,然后又用面向对象的方法重写了一般,感觉业务逻辑更清晰一些。 // goserver.go package main import ( "fmt" "net" "strings" ) type client struct { C chan string addr string } var onlineMap ma

2021-07-19 15:37:22 156

原创 让go语言健壮地并发(三)

package main import ( "fmt" "runtime" ) func producer(ch chan int, quit chan bool) { i := 1 for { select { case <-quit: close(ch) fmt.Println("quit") return default: ch <- i i++ } } } func init() { runtime.GOMAXPROCS(4.

2021-07-13 11:27:38 260

原创 让go语言健壮并发(四)

package main import ( "fmt" ) type Chan struct { isquit bool isclosed bool ch chan int quit chan bool } func main() { ch := &Chan{isquit: false, isclosed: false, ch: make(chan int), quit: make(chan bool)} go func() { // i := 0 .

2021-07-11 22:29:01 115

原创 让go语言健壮并发(二)

上一章我们我们已经讲解了go语言的消费者,这一章我们讲解生产者,这一章的内容涉及到通过channel进行信号同步。信号同步会遇到时间迟滞,子协程存在竞争,会导致偶然的死锁,如何解决这个同步问题,让程序健壮地并发是我们这一章的重点内容。 直接上代码。 ...

2021-07-11 10:18:41 233 1

原创 让go语言健壮并发(一)

从一个简单的案例入手,不断发现问题,解决问题,由浅入深,循序渐进,轻松学习go语言。 我们先写一个简单的并发,子协程作为生产者生产数据,主线程作为消费者接收数据。 // gochan_1.go package main import ( "fmt" ) func producer(ch chan int) { for i := 0; i < 5; i++ { ch <- i } close(ch) } func main() { ch := make(chan int)

2021-07-10 20:07:42 132

原创 Println引起golang并发死锁,不知道什么原因?

最近在学习golang的时候,发现Println引起并发死锁,把这行代码注释掉就没问题了,不知道什么原因。 请看代码: package main import ( "fmt" ) func main() { ch := make(chan int) quit := make(chan bool) go func() { x, y := 1, 1 for { select { case <-quit: close(ch) fmt.Println("退

2021-07-05 21:46:34 263

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除