Week12-服务构建与前后端分离的开发

开发项目

  • 复制 https://swapi.co/ 网站
  • 你需要想办法获取该网站所有资源与数据
  • 给出 UI 帮助客户根据明星查看相关内容

项目小结

在这次作业中,我主要负责客户端的工作,其中也涉及到了数据库。

boltdb数据库的学习

由于之前用过的数据库只有Mysql和MogoDB,所以对boltdb很陌生,但是这次作业要求必须要用它,所以简单地学习了一下。
【安装数据库】
运用以下命令:
go get github.com/boltdb/bolt
【创建数据库】
建立一个“Test.db”数据库,Open的参数,与 c++ 的参数设置比较像,第一个为数据库的路径,如果不存在则创建新的数据库,第二个参数为文件操作,第三个参数为可选参数。
db, err := bolt.Open("Test.db", 0600, nil)
【读写操作】
err的返回值报告导致事务不能完成的所有磁盘故障。

err := db.Update(func(tx *bolt.Tx) error {
    ...
    return nil
})

【批量读写事物】
每一次新的事物都需要等待上一次事物的结束,这种开销我们可以通过DB.Batch()批处理来完成。在批处理过程中如果某个事务失败了,批处理会多次调用这个函数函数返回成功则成功。如果中途失败了,则整个事务会回滚。

err := db.Batch(func(tx *bolt.Tx) error {
    ...
    return nil
})

【启动事务】
DB.Begin()启动函数包含在db.update和db.batch中,该函数启动事务开始执行事务并返回结果关闭事务.。

// Start a writable transaction.
tx, err := db.Begin(true)
if err != nil {
    return err
}
defer tx.Rollback()

// Use the transaction...
_, err := tx.CreateBucket([]byte("MyBucket"))
if err != nil {
    return err
}

// Commit the transaction and check for error.
if err := tx.Commit(); err != nil {
    return err
}

【使用数据结构桶】
桶是数据库中键/值对的集合。桶中的所有键必须是唯一的。可以使用DB.CreateBucket()创建一个桶:

db.Update(func(tx *bolt.Tx) error {
    b, err := tx.CreateBucket([]byte("MyBucket"))
    if err != nil {
        return fmt.Errorf("create bucket: %s", err)
    }
    return nil
})

也可以使用Tx.CreateBucketIfNotExists()来创建桶,该函数会先判断是否已经存在该桶不存在即创建, 删除桶可以使用Tx.DeleteBucket()来完成。
【使用k-v对】
存储键值对到桶里可以使用Bucket.Put()来完成:

db.Update(func(tx *bolt.Tx) error {
    b := tx.Bucket([]byte("MyFriendsBucket"))
    err := b.Put([]byte("one"), []byte("zhangsan"))
    return err
})

获取键值Bucket.Get():

db.View(func(tx *bolt.Tx) error {
    b := tx.Bucket([]byte("MyFriendsBucket"))
    v := b.Get([]byte("one"))
    fmt.Printf("The answer is: %s\n", v)
    return nil
})

【循环遍历桶】
如果你知道所在桶中拥有键,你也可以使用ForEach()来迭代:

如果你知道所在桶中拥有键,你也可以使用ForEach()来迭代:

db.View(func(tx *bolt.Tx) error {
    // Assume bucket exists and has keys
    b := tx.Bucket([]byte("MyBucket"))

    b.ForEach(func(k, v []byte) error {
        fmt.Printf("key=%s, value=%s\n", k, v)
        return nil
    })
    return nil
})
Vue.js的文件目录

简单介绍一下前端用到的Vue.js的目录内容:
在这里插入图片描述

项目地址

Github

参考博客

https://blog.csdn.net/qq_36303832/article/details/85009297

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值