开发项目
- 复制 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的目录内容:
项目地址
参考博客
https://blog.csdn.net/qq_36303832/article/details/85009297