某某茶叶有限公司欢迎您!
金沙棋牌在线 > Web前端 > go 的基本使用

go 的基本使用

时间:2019-12-29 06:38

indexedDB 基本使用

2017/12/14 · 基础技术 · 1 评论 · IndexedDB

原文出处: 党黎明   


indexedDB简介:

indexedDB 是一种使用浏览器存储大量数据的方法.它创造的数据可以被查询,并且可以离线使用.

 

indexedDB 有以下特点:

  1. indexedDBWebSQL 数据库的取代品
  2. indexedDB遵循同源协议(只能访问同域中存储的数据,而不能访问其他域的)
  3. API包含异步API同步API两种:多数情况下使用异步API; 同步API必须同 WebWorkers 一起使用, 目前没有浏览器支持同步API
  4. indexedDB 是事务模式的数据库, 使用 key-value 键值对储存数据
  5. indexedDB 不使用结构化查询语言(SQL). 它通过索引(index)所产生的指针(cursor)来完成查询操作

现在Android上的图片加载框架很成熟了,比较出名的就要属 Glide , Picasso 与 Volley 了。他们都是正在Github上开源的。因为第一次使用的图片框架就是Glide,所以对其有说不清道不明的情怀,哈哈(其实就是懒得去研究其它的框架啦,毕竟Glide还是很强大的),所以,决定对Glide的学习记录一下。

const 修饰,代表永远是只读的,不能被修改常量的定义 以及强制类型转换const filename = "abc.txt"const 数值可作为各种类型使用函数时编程如何把 4,5 转换成5,4main(){fist =100maix = 200fist,maix = maix,fist}变量的作用域1,在函数内部声明的变量叫做局部变量,生命周期仅限于函数内部2,在函数外部声明的变量叫做全局变量,生命周期作用于整个包,如果是大写的则作用于整个程序int 8 一个字节 int16 俩字节 int32 四个字节 int64 八个字节uint 无符号整形生成随机数matn/randrand.Int()字符类型: var a byte 8位一个字节字符串类型:var str string占位符%v 相应值的默认格式%#v 响应值的go语法表示%T 相应值的类型的Go语法表示%% 字符上的百分号,并非占位符%t 单词true或false整数%b 二进制表示%c 相应Unicode码点所表示的字符%d 十进制表示%o 八进制表示%q 单引号围绕的字符字面值,由go语法安全地转义%x 十六进制表示,字母形式为小写 a-f%X 十六进制表示,字母形式为大写A-F%U Unicode格式浮点数%b 无小数部分的%f 有小数点而无指数字符串与字节切片%s 字符串或切片%q 双引号围绕的字符串%x 十六进制,小写字母,每个字节俩个字符%X 十六进制,大写字母,每个字节俩个字符//字符串翻转func reverse(str string) string{var result stringstrLen :=lenfor i := 0; i<strLen; i++{result =result+fmt.Sprintf("%c",str[strLen-i-1])}return result}

图片 1

一、使用indexedDB的基本模式

  1. 打开数据库并且开始一个事务。
  2. 创建一个 objecStore
  3. 构建一个请求来执行一些数据库操作,像增加或提取数据等。
  4. 通过监听正确类型的 DOM 事件以等待操作完成。
  5. 在操作结果上进行一些操作(可以在 request 对象中找到)

本文是针对郭霖大神的原创作品--探究Glide,学习之后的笔记。

因为源码对我来说看起来还是比较吃力的,所以就只好站在巨人的肩膀上来学习。这样能为自己省点力,也能较快的理解Glide中涉及源码的知识。

Glide的GitHub地址为:https://github.com/bumptech/glide.

func main(){var str1 ="hello"result :=reversefmt.Println}fmt.Scanf("%d",&n)获取控制台输出//水仙花func isNumber bool{var i,j,k inti = n % 10j = %10k = %10sum := iii + jjj

图片 2

二、创建、打开数据库

indexedDB 存在于全局对象window上, 它最重要的一个方法就是open方法, 该方法接收两个参数:

  • dbName // 数据库名称 [string]
  • version // 数据库版本 [整型number]

var DB_NAME = 'indexedDB-test', VERSION = 1, db; var request = indexedDB.open(DB_NAME, VERSION); request.onsuccess = function(event) { db = event.target.result; // console.log(event.target === request); // true db.onsuccess = function(event) { console.log('数据库操作成功!'); }; db.onerror = function(event) { console.error('数据库操作发生错误!', event.target.errorCode); }; console.log('打开数据库成功!'); }; request.onerror = function(event) { console.error('创建数据库出错'); console.error('error code:', event.target.errorCode); }; request.onupgradeneeded = function(event) { // 更新对象存储空间和索引 .... };

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var DB_NAME = 'indexedDB-test', VERSION = 1, db;
var request = indexedDB.open(DB_NAME, VERSION);
request.onsuccess = function(event) {
    db = event.target.result;
    // console.log(event.target === request); // true
    db.onsuccess = function(event) {
        console.log('数据库操作成功!');
    };
    db.onerror = function(event) {
        console.error('数据库操作发生错误!', event.target.errorCode);
    };
    console.log('打开数据库成功!');
};
request.onerror = function(event) {
    console.error('创建数据库出错');
    console.error('error code:', event.target.errorCode);
};
request.onupgradeneeded = function(event) {
   // 更新对象存储空间和索引 ....
};

若是本域下不存在名为DB_NAME的数据库,则上述代码会创建一个名为DB_NAME、版本号为VERSION的数据库; 触发的事件依次为: upgradeneededsuccess.

若是已存在名为DB_NAME的数据库, 则上述代码会打开该数据库; 只触发success/error事件,不会触发upgradeneeded事件. db是对该数据库的引用.

Glide是一款由Bump Technilogies开发的图片加载框架,它的使用方式极其简便,简直令人发指。当然,我们要使用它,首先要添加依赖:

  • kkkreturn sum == n}

图片 3

三、创建对象存储空间和索引

在关系型数据库(如mysql)中,一个数据库中会有多张表,每张表有各自的主键、索引等;

key-value型数据库(如indexedDB)中, 一个数据库会有多个对象存储空间,每个存储空间有自己的主键、索引等;

创建对象存储空间的操作一般放在创建数据库成功回调里:

request.onupgradeneeded = function(event) { // 更新对象存储空间和索引 .... var database = event.target.result; var objectStore = database.createObjectStore("movies", { keyPath: "id" }); objectStore.createIndex('alt', 'alt', { unique: true }); objectStore.createIndex('title', 'title', { unique: false }); };

1
2
3
4
5
6
request.onupgradeneeded = function(event) { // 更新对象存储空间和索引 ....
    var database = event.target.result;
    var objectStore = database.createObjectStore("movies", { keyPath: "id" });
    objectStore.createIndex('alt', 'alt', { unique: true });
    objectStore.createIndex('title', 'title', { unique: false });
};

图片 4

onupgradeneeded 是我们唯一可以修改数据库结构的地方。在这里面,我们可以创建和删除对象存储空间以及构建和删除索引。

在数据库对象database上,有以下方法可供调用:

  1. createObjectStore(storeName, configObj) 创建一个对象存储空间
    • storeName // 对象存储空间的名称 [string]
    • configObj // 该对象存储空间的配置 [object] (其中的keyPath属性值,标志对象的该属性值唯一)
  2. createIndex(indexName, objAttr, configObj) 创建一个索引
    • indexName // 索引名称 [string]
    • objAttr // 对象的属性名 [string]
    • configObj // 该索引的配置对象 [object]

        compile'com.github.bumptech.glide:glide:4.0.0'

func main(){var n int = 100var m int =999

图片 5

四、增加和删除数据

对数据库的操作(增删查改等)都需要通过事务来完成,事务具有三种模式:

  • readonly 只读(可以并发进行,优先使用)
  • readwrite 读写
  • versionchange 版本变更

到目前位置,它的稳定版本已经到了 Glide:4.0.0 了。然后别忘了添加网络权限(这个很容易忘的,本人就吃过不少亏,呜呜~~)。

for i := n; i <m; i++{if isNumber == true{fmt.Println}

图片 6