我正在创建一个Web应用程序,其中列出了申请人及其在候补名单上的位置。

我们需要能够将新申请人添加到此列表中,并从列表中删除申请人。列表中的申请人数不到1万。

详细信息:

  • 我打算用Golang编写应用程序。
  • 该列表需要安全,我关闭了程序,应该可以恢复。
  • 应用程序应为每个申请人包含以下数据:姓名,学生证,职位。

  • 问题:
  • 如何保护列表(锁定?),以便如果同时进行两次更新,则可以同时正确更新两者?
  • 我应该将数据保存在数据库中还是使用文件?

  • 我需要你的帮助!

    更新:

    样机代码:
    package main
    
    import (
        "log"
        "sync"
        "time"
    
        "github.com/boltdb/bolt"
    )
    
    type applicant struct {
        FirstName string
        LastName  string
        StudentID string
        Position  int
    }
    
    type priorityList struct {
        sync.Mutex
        applicants []applicant
    }
    
    func (l *priorityList) newApplicant(fn string, ln string, sid string) error {
    
        // add applicant to priorityList
        return nil
    }
    
    func (l *priorityList) removeApplicant(sid string) error {
        // remove applicant from priorityList
        return nil
    }
    
    func (l *priorityList) editApplicant(sid string) error {
        // edit applicant in priorityList
        return nil
    }
    
    func main() {
        // Database
        db, err := bolt.Open("priorityList.db", 0600, &bolt.Options{Timeout: 1 * time.Second})
        if err != nil {
            log.Fatal(err)
        }
        defer db.Close()
    }
    

    最佳答案

    如果使用文件,则可以使用 Mutex 阻止并发写入。

    否则,数据库就可以了。例如BoltDB可能是合适的。可以随程序一起运行。

    关于web-services - 简单的申请人名单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35409157/

    10-09 05:48