草庐IT

database-concurrency

全部标签

database - go rest api 服务器设计良好实践

我是golang的新手,想制作一个小型的待办事项网络应用程序来提高我的go技能。我想知道组织代码的最佳做法是什么。现在,我为这个项目定义了两个包:ticket和server。ticket是关于数据库的,server是关于http处理程序的。我的数据有两种类型:Ticket和Todo。一张Ticket中可以有多个Todo。它们在ticket包中定义。typeTicketstruct{Idint64`db:"id"json:"id"`Labelstring`db:"label"json:"label"`Descriptionstring`db:"description"json:"desc

concurrency - 所有 go routines 都睡着了 - 死锁

我正在使用Go构建工作系统的框架,但我收到“fatalerror:所有goroutines都在sleep-死锁!”。我使用两个channel进行协调,一个用于创建工作,第二个用于发送结果。创建作业后,我关闭输入channel。我的问题是如何关闭输出channel以便程序可以正确退出。代码是:packagemainimport("bufio""flag""fmt""log""math/rand""os""time")typeWorkstruct{idinttstime.Duration}const(NumWorkers=5000NumJobs=100000)funcworker(inbe

concurrency - Func 不会运行;增量 channel

我正在编写一个函数,我试图在其中增加一个channel。在一个更大的程序中,这是行不通的,它实际上卡在一条看起来像这样的线上:current=gofuncs正在运行,但程序似乎在这一行停止了。我试图编写一个较小的SSCCE,但现在我遇到了不同的问题。在这里:packagemainimport("fmt")funcmain(){count:=make(chanint)gofunc(countchanint){current:=0for{current=然而,在上面的gofunc实际上似乎根本没有被调用。如果我放一个fmt.Printlnfor{之前的声明,它不会打印出来。如果我把fmt.

concurrency - 从不同的 goroutine 访问一个 channel

我目前有以下代码:packagemainimport("fmt""math/rand""time")varchannel=make(chan[]float32,1)funcmain(){aMap:=initMap()forkey:=rangeaMap{fmt.Print("theiterationnumberis:",key)theSlice:=aMap[key]channel我们有一个包含两个slice的映射,我想做的是获取slice1的最后一个元素并将其作为slice2的最后一个元素,反之亦然。我实际上正在从事一个更大的项目,涉及模拟细胞的split和分化。既然是模拟,所有的分化和

database - "no such table"内存中 sqlite 错误

我正在使用内存中的sqlite,如下所示。funcinit(){global.ConductorConfig=readConfig()log.Println(utils.GetCurrentDir()+global.ConductorConfig.DbFile)//db=sqlx.MustConnect("sqlite3",utils.GetCurrentDir()+global.ConductorConfig.DbFile)db=sqlx.MustConnect("sqlite3",":memory:")db.Exec(schema)task:=model.Task{}SaveTas

go - Go的database/sql的rows.Scan的使用方法

我使用数据库/sql并定义到数据库表列(标记字段)的结构映射://Users...typeUsersstruct{IDint64`field:"id"`Usernamestring`field:"username"`Passwordstring`field:"password"`Telstring`field:"tel"`}然后我查询:rows,err:=db.Query(sql)//select*fromusersiferr!=nil{fmt.Println(err)}deferrows.Close()forrows.Next(){user:=new(Users)//worksbut

database - RETURNING 必须包含至少一个值

我正在学习使用PostgreSQL和GORM。麻烦来得比较快,感觉好像只有我一个人遇到过这个问题。在这里,我正在创建一个结构,对其进行实例化,然后尝试将其写入数据库。但是,它返回一个错误:pq:RETURNINGmustcontainatleastonevalue尝试谷歌搜索,我唯一找到的是Postgres源代码,它可能是中文的。源代码:db,err:=gorm.Open("postgres","user=postgresdbname=testdbsslmode=disablepassword=qwerty")iferr!=nil{panic(err.Error())}deferdb.

concurrency - 比较 2 张 map 的元素 - 我这样做对吗?

周末刚开始使用Go,我不确定我是否正确使用了Go的特性,或者我是否根本没有做过这种“类似Go”的事情。代码应该遍历名为non_placed_alleles的map元素,并将每个元素与placed_alleles中的所有元素进行比较,这些元素也存储在map中。我正在尝试对non_placed_alleles中的每个元素使用一个go-routine,因为比较非常昂贵并且需要很长时间。这是主要功能的一部分:runtime.GOMAXPROCS(8)//For8consecutiveroutinesatonce?got10CPUsc:=make(chanstring)forname,allel

concurrency - 寻找 golang 并发模式

这是我要解决的问题:packagemainimport"fmt"funcworkerA(work_in_chanaccountgoroutine接收account_chan上的传入数据,对数据执行一些操作,完成后将数据发送到final_chan。account工作由workerA和workerB完成(顺序不重要),两者都必须在account将数据发送到final_data之前完成数据。有几个要求:workerA和workerB是单个goroutine任何时候都应该有恒定数量的goroutines(因此不会为每个新数据项添加新的goroutines)。我粘贴的实现是愚蠢的,因为现在wor

concurrency - 为什么 go.net/websocket'api 不使用 channel 来发送和接收消息?

go.net/websocket包中有Read()和Write()函数,用于通过网络套接字发送和接收消息。为什么它不返回一个用于发送和接收消息的channel?我觉得像websocket、net这样的包是使用gochannel的完美场所。这个设计决定背后的原因是什么? 最佳答案 我不知道WebSocket的确切语义,但总的来说,我认为网络套接字不能很好地映射到channel中。Therewasactuallyanetchanpackage试图通过一般channel做到这一点,但已停止。我认为尝试通过一个channel实现支持大量协议