-
HTML5的几种存储方式
2020-12-24 21:56:16HTML5的几种存储方式 html5在引入webStorage之前,主要用cookies. web storage html5的webstorage 分两种:LocalStorage 和SessionStorage,两者的差别主要在生命周期不同。 LocalStorage LocalStorage用于持久化的...HTML5的几种存储方式
html5在引入webStorage之前,主要用cookies.
web storage
html5的webstorage 分两种:LocalStorage 和SessionStorage,两者的差别主要在生命周期不同。LocalStorage
LocalStorage用于持久化的本地存储,存储资料在客户端(client)的浏览器上,除非主动删除数据,否则数 据是永远不会过期的。LocalStorage使用键值对的方式进行存储,存储的方式只能是字符串。存储内容可以有图片、json、样式、脚本等只要可以序列化为字符串的。localstorage API基本使用方法:
使用localStorage.setItem(key,value)设置数据,如下:
for(var i=0; i<10; i++){
localStorage.setItem(i,i);
} 使用localStorage.getItem(key) 获取数据,使用localStorage.valueOf()获取全部数据, 如下:
for(var i=0; i<10; i++){
localStorage.getItem(i);
}
使用localStorage.removeItem(key)删除数据,如下:
for(var i=0; i<5; i++){
localStorage.removeItem(i);
}
使用localStorage.clear()清空全部数据,使用localStorage.length 获取本地存储数据数量,
使用localStorage.key(N)获取第 N 个数据的 key 键值。
2 . SessionStorageSessionStorage用于本地存储一个会话中 的数据,这些数据只有在同一个会话中的页面才能访问并且会话结束,例如关闭窗口后,,数据也会随之被销毁。它是一种会话级别的存储。
SessionStorage的使用方法与localstorage的使用方法相似。
webstorage 与cookie的区别
cookie数据始终在同源的http请求中携带,cookie在浏览器和服务器端来回传递,而localstorage和sessionstorage不会自动把数据传送给服务器端,仅在本地保存。
存储大小限制不同,cookie的存储数据大小要求不能超过4k,每次的http请求都会携带cookie,所以保存的数据需要比较小。sessionstorage和localstorage存储数据大小限制比cookie要大,可以达到5m或者更大,不同浏览器设置可能不同。
数据生命周期有所不同。cookie的生命周期一般在其设置的过期时间之前有效。而sessionstorage仅在关闭窗口前有效,localstorage持久有效,直到手动删除。
作用域不同,sessionstorage不在不同浏览器中共享,即使是同一页面也不支持。而localstorage在所有同源窗口中都是共享的,同样,cookie在所有同源窗口中也是可以共享的。
cookie的数据还有路径的概念,可以通过设置限制cookie只属于某一个路径。
web storage支持事件通知机制,可以将数据更新的通知发送给监听者。
使用webstorage的好处:
减少网络流量:使用webstorage将数据保存在本地中,不用像cookie那样,每次传送信息都需要发送cookie,减少了不必要的数据请求,同时减少数据在浏览器端和服务器端来回传递。
快速显示数据:从本地获取数据比通过网络从服务器获取数据效率要高,因此网页显示也要比较快。
临时存储:很多时候数据只需要在用户浏览一组页面期间使用,关闭窗口后数据就可以丢弃了,这种情况使用sessionStorage非常方便。
不影响网站效能:因为web storag只作用在客户端的浏览器,不会占用频宽,不想网站效能,所以可以把size大,安全性低的资料存储在web storage中,提ga高网站效能。
离线缓存(application cache)
HTML5引入了应用程序缓存器,可对web进行缓存,在没有网络形况下使用,通过创建cache manifest文件,创建应用缓存。参考链接:http://blog.csdn.net/molly_xu/article/details/51147236(转载)
http://blog.csdn.net/molly_xu/article/details/51147236(转载)
如何使用
参考链接:http://www.jianshu.com/p/aaf287f7c3ad(转载)
例如有一个web有三个文件,index.html, a.js,b.css,现在需要把js文件和css文件缓存起来。
在index.html上加上
test.manifest的清单格式如下: CACHE MANIFEST#上面一句必须#v1.0.0#需要缓存的文件CACHE:a.jsb.css#不需要缓存的文件NETWORK:*#无法访问页面FALLBACK:404.html
manifest文件的mime-type必须是 text/cache-manifest
类型 manifest文件,基本格式为三段: CACHE, NETWORK,与 FALLBACK,其中NETWORK和FALLBACK为可选项。
而第一行CACHE MANIFEST为固定格式,必须写在前面。
以#号开头的是注释,一般会在第二行写个版本号,用来在缓存的文件更新时,更改manifest的作用,可以是版本号,时间戳或者md5码等等。CACHE(必须)
标识出哪些文件需要缓存,可以是相对路径也可以是绝对路径。CACHE:a.csshttp://yanhaijing.com/a.css
NETWORK(可选)
这一部分是要绕过缓存直接读取的文件,可以使用通配符*。
下面的代码 “login.asp” 永远不会被缓存,且离线时是不可用的:
NETWORK:login.aspFALLBACK(可选)
指定了一个后备页面,当资源无法访问时,浏览器会使用该页面。该段落的每条记录都列出两个URI—第一个表示资源,第二个表示后备页面。两个 URI 都必须使用相对路径并且与清单文件同源。可以使用通配符。下面的例子中,如果无法建立因特网连接,则用 “404.html” 替代 /html5/ 目录中的所有文件。
FALLBACK:/html5/ /404.html下面的例子中,则用 “404.html” 替代所有文件。
FALLBACK:*.html /404.html
离线缓存的优缺点
优点
减少服务器的负载,提高资源加载速度
离线浏览,用户可以在应用离线时使用
缺点更新版本后,必须刷新一次才会启动新版本。
进入离线存储的页面,如果不更新版本,是会将其当成静态页面不请求。
无法进行灰度发布等策略
离线缓存与传统浏览器缓存区别:
离线缓存是针对整个应用,浏览器缓存是单个文件
离线缓存断网了还是可以打开页面,浏览器缓存不行
离线缓存可以主动通知浏览器更新资源
-
C语言中定义字符串的几种方式
2020-03-11 08:45:27由于字符串本质上其实就是以'\0作为'结尾的特殊字符数组,所以定义字符串时,必须保证字符串存储的最后一个元素为'\0'。 当我们没有给定字符串具体长度时,我们通过这种方式:char 字符串名称[] = {字符串所含...1,什么是字符串?
所谓字符串本质上就是以'\0作为'结尾的特殊字符数组;
2,定义字符串的过程中有哪些注意点
由于字符串本质上其实就是以'\0作为'结尾的特殊字符数组,所以定义字符串时,必须保证字符串存储的最后一个元素为'\0'。
当我们没有给定字符串具体长度时,我们通过这种方式:char 字符串名称[] = {字符串所含元素}; 来定义字符串时,就需要手
动的在字符串末尾加上'\0',不然的话,它就仅仅是一个字符数组,而不是我们所需要的字符串。当我们给定字符串具体长度时,
也就是通过这种方式:char 字符串名称[字符串长度] = {字符串所含元素}; 来定义字符串时,就需要使字符串长度等于字符串实际
长度+1,不然的话,它也仅仅是一个字符数组,而不是我们所需要的字符串。具体实例见定义字符串的具体格式。
3,定义字符串的具体格式
3.1,char 字符串名称[字符串长度] = {字符串所含元素};
注意点:如果字符串所含元素中我们没有加上'\0',那么字符串长度应该就为字符串实际长度+1;
例如 :char name[6] = {'T', 'o', 'm', 'H', 'e'};
3.2,char 字符串名称[] = {字符串所含元素};
注意点:通过这种方式来定义字符串,则需要在{}中写上'\0';
例如:char name[] = {'T', 'o', 'm', 'H', 'e', '\0'};
3.3,char 字符串名称[] = "字符串所包含元素"
注意点:通过这种方式来定义字符串的底层原理其实就是将"TomHe",转换为了{'T', 'o', 'm', 'H', 'e', '\0'};
例如:char name[] = "TomHe"; <==> char name[] ={'T', 'o', 'm', 'H', 'e', '\0'};
具体代码如下:
想要成为一个优秀的、有能力程序员,做软件开发的话,就来学习C/C++吧,而且学习编程的话有一个学习的氛围跟交流圈子特别重要!这里我推荐一个C语言C++交流扣裙,--先八七零九;后63251,不管你是大牛还是小白,大家都一起成长进步。
#include int main()
{
charstr1[6] = {'T','o','m','H','e'};
charstr2[] = {'7','8','8','\0'};
charstr3[] ="Tomhe789";
printf("str1 = %s\n",str1);
printf("str2 = %s\n",str2);
printf("str3 = %s\n",str3);
return0;}
运行结果:
-
单片机中串口通信数据的存储方式浅谈
2018-08-04 09:42:47尊重原创,转载请说明出处…… ...个人总结有如下几种: 1、开辟一个较大的数组对数据进行保存。有时会结合定时器进行数据的“分帧”/“分包” 2、使用链表的方式进行数据存储。每个字节做成一个节...尊重原创,转载请说明出处……
在工作中用单片机很久了,对通信数据的处理有一些小小的心得体会。分享出来供讨论和指正。
以下讨论基于C语言。
在单片机中串口是一个很重要和基本的外设。对串口数据的存储很多大拿都有自己的方式方法。个人总结有如下几种:
1、开辟一个较大的数组对数据进行保存。有时会结合定时器进行数据的“分帧”/“分包”
2、使用链表的方式进行数据存储。每个字节做成一个节点,逐节增加节点予以记录。
3、使用内存管理的方式。有经验的工程师会自己写内存管理的程序,把串口读到的数据通过内存管理进行处理。
4、使用OS的数据队列。
几种方式的对比分析:
编号 优点 缺点 1 写法简单,容易理解 数组长度有限,有数据溢出的风险。 2 理论实现容易,数组长度灵活 占用的内存过大 3 灵活易用,数组长度灵活,不依赖操作系统 理解起来可能会有难度 4 灵活易用,数组长度灵活,依赖操作系统 必须依赖OS 下面对上述的几种方式做详细的介绍。
-
c# 拼接字符串数组_C# 拼接字符串的几种方式和性能
2020-12-19 13:34:20开发过程中常用到的拼接字符串的方法有三种:1 简单 “+=” 拼接法string str="a";str+="c"+"d";string str_1="a"+"b";首先需要明白的是string类型,string是引用类型,保留在堆上,而不是栈上,用的时候传的是内存...开发过程中常用到的拼接字符串的方法有三种:
1 简单 “+=” 拼接法
string str="a";
str+="c"+"d";
string str_1="a"+"b";
首先需要明白的是string类型,string是引用类型,保留在堆上,而不是栈上,用的时候传的是内存中的地址,每次修改就会重新创建一个新的string对象来存储字符串,原有的会被自动回收。
第一种方式的实现原理,第一步先在内存中分配空间,存储str变量的对象,值为"a", “+=”时,又会重新创建一个对象来存储新的字符串(“abc"),把str指向这个新的地址。所以只有简单几步的拼写时,一般不会有太大问题,如果有时候需要循环拼接时,就会不断创建新的对象,很浪费性能和内存。
2 String.Format()
string str= String.Format("{0}{1}{2}","a","b","c");
这就需要先看看他的源代码了,
public static String Format(IFormatProvider provider, String format, params Object[] args)
{
if (format == null || args == null)
throw new ArgumentNullException((format==null)?"format":"args");
StringBuilder sb = new StringBuilder(format.Length + args.Length * 8);
sb.AppendFormat(provider,format,args);
return sb.ToString();
}
可以看到是先创建一个StringBuilder类型的变量,长度为第一个参数的长度+参数长度的8倍。.Net自动分配一个比较大的容量来存储。StringBuilder的介绍请看第3种方法.
这种方式的代码看起来比较整洁,易于月度,效率也比+=高效很多。
3 StringBuilder.Append
StringBuilder str=new StringBuilder();
str.Append("a");
StringBuilder 是预先创建一个比较大的内存,以后每次操作时判断容量上限是否不够用,如果不够用就自动把容量扩大一倍,修改的还是第一次创建的对象的值。
如果是简单的拼写时,可以用 "+=", string.format
循环内拼写很长的字符串时,就需要用到StringBuilder来节省性能和内存了。 - -
-
Java中字符串的存储方式
2020-08-24 17:07:24Java中字符串的存储方式 ...有以下几种情形。 情形一 String s = "123"; 虚拟机在处理字面量"123"时,首先在本地栈中创建字符串"123",随后对其调用本地方法intern()。intern方法的作用是检查StringTabl -
Java字符串的存储方式
2018-12-28 05:24:51Java中的字符串只能位于内存中的两个区域:常量池和Java堆。常量池维护了一个StringTable,它... 有以下几种情形。 情形一 String s="123"; 复制代码 虚拟机在处理字面量"123"时,首先在本地栈中创建字符串"1... -
C# 拼接字符串的几种方式和性能
2015-04-02 10:04:00开发过程中常用到的拼接字符串的方法有三种: 1 简单 “+=” 拼接法 string str="a"; str+="c"+"d"; string str_1="a"+"b"; 首先需要明白的是string类型,string是引用类型,保留在堆... -
c#调用存储过程的几种方式
2019-03-01 16:01:18它有4种类型的连接方式: SQLConnection,ADOConnection,OracleConnection,ODBCConnection 这里只介绍连接SqlServer数据库的步骤: (1)引用命名空间System.Data.SqlClient (2)将连接方法声明至字符串中 windo.... -
jedis取存 数据库查到的对象_redis中几种数据存储方式的比较
2021-01-13 20:08:29第一,通过jedis 储存对象有大概三种one:本课程的序列化成byte字节 ,最终存byte字节,two:对象转hashmap,也就是你想表达的hash的形式,最终存map,three:对象转json,最终存json,其实也就是字符串第... -
st 串口烧写工具 芯片_STM32芯片的几种烧写方式简介
2020-12-24 22:27:19一般来讲,将我们准备好的机器代码HEX或BIN文件等写进片上FLASH可以有三种常用的烧写方式。【温馨提示:下面提到的烧写方式的术语或称谓不是绝对的,对于不同的器件可能有不同的表述甚至内涵,这里仅针对STM32,知道... -
C#字符串为空的几种情况
2021-01-20 03:37:57我们知道,在C#中,string是引用类型的。为空情况有以下三种: 1、String str1=:会... 知道了string的几种空类型的区别,那么我们怎么来判断一个字符类型的变量是否为空呢? 对于一个string类型的变量a,你会 -
引用和指针-内存的分配方式有几种
2017-10-10 11:08:00引用和指针-内存的分配方式有几种 1: (1)从静态存储区域分 posted @ 2017-10-10 11:08 一串字符串 阅读(...) 评论(...) 编辑 收藏 -
Android——几种数据存储应用浅谈
2016-02-25 18:02:00(1)android中的数据存储主要有五种方式: 第一种、sharedPreferences存储数据, 适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、... -
字符串赋值的几种办法分类及常见错误总结
2020-09-15 16:46:35字符串的输入与赋值是非常容易搞混淆的一块,这里总结一下顺序存储的字符串输入方式: 一、栈内静态存储 1.定义时用字符串赋值 char s[15] = "helloworld"; 不能先定义,然后赋值,如: char s[10]; s = “hello... -
redis中存储数据集的几种形式
2021-03-02 12:36:05我们在开发的过程中常常遇到需要把对象或者数组进行序列号存储,反序列化输出的情况。特别是当需要把数组存储到mysql数据库中时...常见的php系列化和反系列化方式主要有:serialize,unserialize;json_encode,json_de -
分布式 id 的几种实现方式
2020-10-19 00:39:11uuid 这个会生成数字 + 字母的字符串, 太长字符串, 不利于 MySQL 索引, 不过实用成本较低 redis 自增, 使用某个固定的 key, 利用 redis 自增特性, 实现全局自增 id 雪花 snowflake, 如果时钟倒流, 可能出现重复的 ... -
浅谈C++的几种从键盘输入方式
2021-01-01 06:33:47我们都知道,C++可以从键盘来读取输入,读取输入的方式也有好多种,下面我们来介绍常见的几种方式 和他们的不同之处 1、cin 使用cin输入时,程序将输入视为一系列字节。每个字节都被解释为字符编码。不管数据类型是... -
Get请求中文乱码的几种解决方式
2019-09-30 18:03:28这种转码方式有很大的弊端,因为它是使用指定的字符集将此String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中,然后通过使用指定的字符编码将生成的byte 数组解码,构造一个新的String字符串。这种... -
03-Redis存储方式
2020-03-25 17:47:37关于Redis数据存储的细节,涉及到内存分配器(如jemalloc)、简单动态字符串(SDS)、5种对象类型及内部编码、redisObject 这里将说明这几个概念之间的关系。 下图是执行set hello world时,所涉及到的数据模型: ... -
redis持久化的几种方式
2019-07-15 19:32:56redis是一种高级的key-value数据库,它跟memcached类似,但是redis可以持久化,而且支持的数据类型很多,有字符串(String),哈希(hash),列表(list),集合(set),有序集合(sorted set)。支持在服务器端集合的... -
Java基础之字符串创建于存储的机制
2016-12-24 14:07:04在java中字符串的声明与初始化有如下几种方式: 1. String a = new String("abc"); 2. String b = "abc" 这两种方式结果都是一样的,但是实现机制却不相同,接着往下看:String a = "hello"; String b = "hello";... -
C语言中字符串与字符数组在存储上的不同
2020-06-07 16:24:42在c语言中,通过以下几种方式定义的字符串与字符数组,它们在内存上的存储差别有哪些? #include<stdio.h> const char str1[] = "Hello, world!"; const char *str2 = "Hello, world!"; const char *str3 = ... -
Android中数据储存方式的几种工具类
2017-04-15 12:55:32在Android开发中数据的存储方式有五种: 1.使用SharedPreferences进行存储: 适用范围存储小量的数据,储存的格式有字符串类型及基本数据类型。一般用于存储应用程序的配置信息,如用户设置的App中的设置信息... -
语法基础(四. 引用数据类型,对象的几种创建方式,匿名对象)
2020-05-15 23:17:17引用数据类型,对象的几种创建方式,匿名对象) (如有错误,欢迎指正,感谢!) 引用数据类型 引用数据类型大致包括 类 接口类型 数组类型 字符串类型 枚举类型 注解类型 在创建一个对象时,...