rabbitmq-生产者

1. go get安装amqp go get github.com/streadway/amqp 2. 创建连接RabbitMQ // 1. conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/") defer conn.Close() 3. 创建一个通道,队列和消息发布和接受都从这里操作 ch, err := conn.Channel() defer ch.Close() 4. 声明消息要发送到的队列 q, err := ch.QueueDeclare( "hello", // 队列名称 false, // 声明为持久队列 false, // 使用完毕自动删除队列 false, // exclusive false, // no-wait nil, // arguments ) 5. 发布消息到队列中 rand.Seed(time.Now().UnixNano()) // 4.将消息发布到声明的队列 for { count := rand.Intn(5) body := strconv.Itoa(count) err = ch.Publish( "", // exchange q.Name, // routing key false, // mandatory false, // immediate amqp....

一月 24, 2023 · 1 分钟 · Ken

go-初识chan

代码参考至 《Go语言精进之路》 例子1 package main import ( "fmt" "sync" "time" ) type signal struct{} func worker(i int) { fmt.Printf("worker %d :is working... \n", i) time.Sleep(time.Duration(i) * time.Second) fmt.Printf("worker %d :is done... \n", i) } func spawnGroup(f func(i int), num int, groupSignal <-chan signal) <-chan signal { c := make(chan signal) var wg sync.WaitGroup for i := 0; i < num; i++ { time.Sleep(1 * time.Second) wg.Add(1) go func(i int) { <-groupSignal fmt....

十二月 17, 2022 · 2 分钟 · Ken

go-素数筛

问题描述: 素数是一个自然数,它具有两个截然不同的自然数除数:1和它本身, package main func Generate(ch chan<- int) { for i := 2; ; i++ { ch <- i } } func Filter(in <-chan int, out chan<- int, prime int) { for { i := <-in if i%prime != 0 { out <- i } } } func main() { ch := make(chan int) go Generate(ch) for i := 0; i < 1; i++ { prime := <-ch print(prime, "\n") ch1 := make(chan int) go Filter(ch, ch1, prime) ch = ch1 } }

十二月 17, 2022 · 1 分钟 · Ken

go-希尔排序算法

package main import "fmt" func main() { var arr = []int{9, 7, 6, 8, 4, 1, 5, 2, 3} fmt.Printf("arr: %v\n", arr) var gap = 1 for { if gap >= (len(arr))/3 { break } gap = gap*3 + 1 } fmt.Printf("gap: %v\n", gap) for gap := gap; gap > 0; gap = (gap - 1) / 3 { for i := gap; i < len(arr); i++ { for j := i; j > gap-1 && arr[j] < arr[j-gap]; j -= gap { swap(arr, j, j-gap) } } fmt....

十二月 10, 2022 · 2 分钟 · Ken

go-插入排序算法

package main import "fmt" func main() { var arr = []int{9, 7, 6, 8, 4, 1, 5, 2, 3} for i := 1; i < len(arr); i++ { for j := i; j > 0; j-- { if arr[j] < arr[j-1] { swap(arr, j, j-1) } } fmt.Printf("arr: %v\n", arr) } } func swap(arr []int, a, b int) { var temp = arr[a] arr[a] = arr[b] arr[b] = temp } 输出...

十二月 10, 2022 · 1 分钟 · Ken

go-冒泡排序算法

package main import "fmt" func main() { var arr = []int{9, 7, 6, 8, 4, 1, 5, 2, 3} for i := len(arr) - 1; i > 0; i-- { for j := 0; j < len(arr)-1; j++ { if arr[j] > arr[j+1] { swap(arr, j, j+1) } } fmt.Printf("arr: %v\n", arr) } } func swap(arr []int, a, b int) { var temp = arr[a] arr[a] = arr[b] arr[b] = temp } 输出...

十二月 8, 2022 · 1 分钟 · Ken

Go-选择排序算法

正常版 每次寻找一个最小值并交换 package main import "fmt" func main() { var arr = []int{5, 3, 8, 6, 1, 8, 6, 1, 7} fmt.Printf("arr: %v\n", arr) for i := 0; i < len(arr)-1; i++ { var minPos = i for j := i + 1; j < len(arr); j++ { if arr[j] < arr[minPos] { minPos = j } } swap(arr, i, minPos) fmt.Printf("arr: %v\n", arr) } } func swap(arr []int, a, b int) { var temp = arr[a] arr[a] = arr[b] arr[b] = temp } 输出结果...

十二月 6, 2022 · 2 分钟 · Ken

go-平常使用中的一些小技巧

######打乱数组中的顺序 data := make([]uint, 10) rand.Seed(time.Now().Unix()) length := len(data) for i := 0; i < length; i++ { data[rand.Intn(length)] ,data[i] = data[i],data[rand.Intn(length)] }

九月 28, 2022 · 1 分钟 · Ken

go-Gin中间件

func LoginMiddleware(ctx *gin.Context) { var UserId uint UserId = 2 //example fmt.Printf("LoginMiddleware UserId: %v\n", UserId) ctx.Set("UserId", UserId) ctx.Next() } 在入口函数上添加中间件 group := r.Group("/api/group").Use(LoginMiddleware) { group.POST("/create", GroupController{}.Create) }

九月 14, 2022 · 1 分钟 · Ken

go-gin连接gorm

本次记录如何在gin中简单的使用和封装gorm 创建database.go,用于定义gorm连接数据库的配置和DB的统一引用 database.go package common import ( "fmt" "note.hello-api.cn/model" "gorm.io/driver/mysql" "gorm.io/gorm" ) var DB *gorm.DB func InitDB() *gorm.DB { host := "localhost" port := "3306" username := "gin" database := "gin" password := "gingin" charset := "utf8mb4" arg := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true", username, password, host, port, database, charset) db, err := gorm.Open(mysql.Open(arg)) if err != nil { panic(err.Error()) } db.AutoMigrate(&model.User{}) db.AutoMigrate(&model.Note{}) DB = db return db } func GetDB() *gorm.DB { return DB } 在gin的入口main....

九月 2, 2022 · 1 分钟 · Ken