⑴ 什么是轻量数据
具体解释一
⑵ jquery 本地存储大量数据,并支持后续操作的方法!
你的数据有多大?几千行的话 gzip 一下也不会花超过几秒(大概不需要),不需要甚么特别的处理。再大的话就视乎实际数量和所需的处理方式,简单的 localstorage 复杂的自己看看是用自己的方法处理(一般较快较省记忆)还是去用 js 实作的数据库(一般较方便)。这也是个编程阶段,自己多试试看不同的处理方法那才会有长进,别人给的意见再好都不是你自己的经验。
⑶ 谁能给我解释一下BIM轻量化是什么而且我现在看到好多公司都在做BIM轻量化,有谁给我解释一下吗
哈喽楼主,很荣幸可以有机会回答你这个问题。
介绍BIM轻量化之前,首先咱们必须先了解BIM是什么?简单来说,BIM的就是一个包含建筑工程信息的三维模型,数据主要包含两个方面:构件的几何信息、专业属性及状态信息;非构件(如空间、运动行为)的状态信息。
由此可见BIM模型涉及到数据、文件都是比较庞大的,传统的BIM应用程序都基于桌面客户端且对电脑配置要求高。伴随着互联网的发展,越来越多的用户希望使用手机或者登陆浏览器即可浏览三维模型,因此为了更好地利用BIM 模型,BIM轻量化需求也应运而生。
一个BIM模型的轻量化,其目的是为了尽可能缩小BIM模型的体量,使其可以更加适宜web、移动端。在这个过程中,BIM模型实际经历了两阶段处理过程:几何转换与渲染处理。
几何信息主要指日常生活中可见的二维、三维模型,通过参数化方式描述单个构件的几何信息可以对其轻量化。除此之外还可以通过三角面片、相似性算法减少图元等方式对模型进行几何优化转换。
渲染处理过程可使用八叉树快速剔除不可见图元,减少进入渲染区域的绘制对象,这部分技术在桌面端的三维显示引擎已非常成熟。此外还可以使用多重LOD(Levels of Detail),加速单图元渲染速度。
几何转换、渲染是BIM模型轻量化的核心技术,具有一定的技术门槛,要求开发者需要掌握一定的图形技术。因此,现在市场上不断涌现出各式各样的BIM轻量化引擎。诸如广联达BIMFACE、葛兰岱尔webglBIM轻量化引擎、autodesk forge、modelo等。
如上,希望对楼主有所帮助,感谢~~
⑷ Windows store app 数据存储的几种方法
在开发过程中,我们需要将某些数据保存下来,比如一些设置信息以及一些用户主动去保存的数据。待用户下次打开应用时候,再自动加载这些信息。下面将介绍windows8开发中如何存储数据。
一.本地数据存储
在wp中我们使用IsolatedStorageSettings进行本地数据存储,在win8中也提供类似的方法进行存储,我们使用ApplicationData.Current.LocalSettings。下面将通过实例进行描述:
在节目上添加姓名、年龄、性别三个控件,代码如下:
1 <Grid Background="{StaticResource }">
2 <StackPanel Margin="40,40,0,0">
3 <StackPanel Orientation="Horizontal" Height="80">
4 <TextBlock Text="姓名:" Style="{StaticResource BasicTextStyle}" FontSize="20" VerticalAlignment="Center"/>
5 <TextBox x:Name="txtName" Text="" FontSize="24" Width="200" Height="40"/>
6 </StackPanel>
7 <StackPanel Orientation="Horizontal" Height="80">
8 <TextBlock Text="年龄:" Style="{StaticResource BasicTextStyle}" FontSize="20" VerticalAlignment="Center"/>
9 <TextBox x:Name="txtAge" Text="" FontSize="24" Width="200" Height="40"/>
10 </StackPanel>
11 <StackPanel Orientation="Horizontal" Height="80">
12 <TextBlock Text="性别:" Style="{StaticResource BasicTextStyle}" FontSize="20" VerticalAlignment="Center"/>
13 <ComboBox x:Name="cbxSex" Height="40" Width="200" SelectedIndex="1">
14 <ComboBoxItem>男</ComboBoxItem>
15 <ComboBoxItem>女</ComboBoxItem>
16 </ComboBox>
17 </StackPanel>
18 <StackPanel Orientation="Horizontal">
19 <Button Content="保存" Width="100" Height="40" FontSize="16" Click="btnSave_Click"></Button>
20 <Button Margin="20,0,0,0" Content="读取" Width="100" Height="40" FontSize="16" Click="btnRead_Click"></Button>
21 <Button Margin="20,0,0,0" Content="清空" Width="100" Height="40" FontSize="16" Click="btnClear_Click"></Button>
22 </StackPanel>
23 </StackPanel>
24 </Grid>
新建类AppDataHelper.cs,引用命名空间using Windows.Storage。我们将读取和保存封装成共通,方便调用。
保存数据:
1 /// <summary>
2 /// 保存数据
3 /// </summary>
4 /// <typeparam name="T">数据类型</typeparam>
5 /// <param name="key">键</param>
6 /// <param name="value">值</param>
7 public static void Save<T>(string key, T value)
8 {
9 ApplicationData.Current.LocalSettings.Values[key] = value;
10 }
读取数据:
1 /// <summary>
2 /// 读取数据
3 /// </summary>
4 /// <typeparam name="T">数据类型</typeparam>
5 /// <param name="key">键</param>
6 /// <returns>值</returns>
7 public static T Read<T>(string key)
8 {
9 if (ApplicationData.Current.LocalSettings.Values.ContainsKey(key))
10 {
11 return (T)ApplicationData.Current.LocalSettings.Values[key];
12 }
13 else
14 {
15 return default(T);
16 }
17 }
删除数据:
1 /// <summary>
2 /// 移除数据
3 /// </summary>
4 /// <param name="key">键</param>
5 /// <returns>成功true/失败false</returns>
6 public static bool Remove(string key)
7 {
8 return ApplicationData.Current.LocalSettings.Values.Remove(key);
9 }
我们只要在需要存储或者读取数据的地方进行调用,就可以了。
1 private void btnSave_Click(object sender, RoutedEventArgs e)
2 {
3 AppDataHelper.Save<string>("name", txtName.Text.Trim());
4 AppDataHelper.Save<int>("age", int.Parse(txtAge.Text.Trim())); 5 AppDataHelper.Save<int>("sex", cbxSex.SelectedIndex);
6 }
7 private void btnRead_Click(object sender, RoutedEventArgs e)
8 {
9 txtName.Text = AppDataHelper.Read<string>("name");
10 txtAge.Text = AppDataHelper.Read<int>("age").ToString();
11 cbxSex.SelectedIndex = AppDataHelper.Read<int>("sex");
12 }
那么我们保存的数据保存到哪里去了呢?我们应该如何找到他们,别急,我们下面开始找保持的数据。
打开C:\Users\\AppData\Local\Packages\ \Settings\settings.dat, user_name对应当前登录的用户名,packpage对应此应用的唯一标识,在Package.appxmanifest中我们可以找到它:
此文件为.dat后缀,我们需要用注册表工具打开它,开始->运行(win+R键),输入Regedit,在打开的窗口里面选择 HKEY_LOCAL_MACHINE,
然后选择文件->加载配置单元,选择settings.dat文件,打开填入项名称,确定之后可以看到保存的数据会显示在其中。
双击name,打开,我们可以看到存储的数据值。
那么我们是否能像wp那样存储一个对象到本地存储呢,答案是否定的。win8中只能存储一些简单类型,如int、bool、string等
下面有一个Person对象:
1 [DataContract]
2 public class Person
3 {
4 [DataMember]
5 public string Name { get; set; }
6 [DataMember]
7 public int Age { get; set; }
8 [DataMember]
9 public int Sex { get; set; }
10 }
进行存储:
1 Person person = new Person()
2 {
3 Name = txtName.Text.Trim(),
4 Age = int.Parse(txtAge.Text.Trim()),
5 Sex = cbxSex.SelectedIndex
6 };
7 AppDataHelper.Save<Person>("person", person);
此时会报错,提示不支持此类型存储。
那么我们应该如何存储一个对象呢?下面我们将介绍文件存储。
二.文件存储
对于那些比较复杂的数据类型,我们需要将其存储为文件的形式存储在应用中。StorageFile的存储,以文件的形式进行存储存入数据。
新建一个类,LocalFileHelper.cs
存储文件:
1 /// <summary>
2 /// 存储数据/// </summary>
3 /// <typeparam name="T">数据类型</typeparam>
4 /// <param name="fileName">文件名称</param>
5 /// <param name="data">数据</param>
6 /// <returns>无</returns>
7 public async static Task Save<T>(string fileName, T data)
8 {
9 //取得当前程序存放数据的目录
10 StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;
11 //创建文件,如果文件存在就覆盖
12 StorageFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
13 using (Stream newFileStream = await file.OpenStreamForWriteAsync())
14 {
15 DataContractSerializer ser = new DataContractSerializer(typeof(T));
16 ser.WriteObject(newFileStream, data);
17 newFileStream.Dispose();
18 }
19 }
读取文件:
1 /// <summary>
2 /// 读取数据
3 /// </summary>
4 /// <typeparam name="T">数据类型</typeparam>
5 /// <param name="fileName">文件名称</param>
6 /// <returns>数据</returns>
7 public async static Task<T> Read<T>(string fileName)
8 {
9 T t = default(T);
10 try
11 {
12 StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;
13 StorageFile file = await folder.GetFileAsync(fileName);
14 if (file == null)
15 return t;
16 Stream newFileStream = await file.OpenStreamForReadAsync();
17 DataContractSerializer ser = new DataContractSerializer(typeof(T));
18 t = (T)ser.ReadObject(newFileStream);
19 newFileStream.Dispose();
20 return t;
21 }
22 catch (Exception)
23 {
24 return t;
25 }
26 }
删除文件:
1 /// <summary>
2 /// 删除文件
3 /// </summary>
4 /// <param name="fileName">文件名称</param>
5 /// <returns>成功true/失败false</returns>
6 public async static Task<bool> Delete(string fileName)
7 {
8 StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;
9 StorageFile file = await folder.GetFileAsync(fileName);
10 if (file != null)
11 {
12 try
13 {
14 await file.DeleteAsync();
15 }
16 catch (Exception)
17 {
18 return false;
19 }
20 }
21 return true;
22 }
使用方法:
1 Person person = new Person()
2 {
3 Name = txtName.Text.Trim(),
4 Age = int.Parse(txtAge.Text.Trim()),
5 Sex = cbxSex.SelectedIndex
6 };
7
8 await LocalFileHelper.Save<Person>("person.xml", person);
9
10 List<Person> list = new List<Person>();
11 list.Add(person);
12 list.Add(person);
13 await LocalFileHelper.Save<List<Person>>("personList.xml", list);
14
15
16 Person newPerson = await LocalFileHelper.Read<Person>("person.xml");
17 List<Person> personList = await LocalFileHelper.Read<List<Person>>("personList.xml");
文件在哪里?
同样我们打开C:\Users\user_name\AppData\Local\Packages\package\LocalState文件夹,下面就有我们保持的文件,打开文件,保存文件的内容格式为xml:
<Person xmlns="http://schemas.datacontract.org/2004/07/StorageSample" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Age>
27</Age><Name>BetterChaner</Name><Sex>0</Sex></Person>
三.使用sqlite进行数据存储
Sqlite现已提供对Windows RT和Windows 8 Metro应用的支持.
首先,在工具,选择扩展与更新中,选择联机,在搜索框内输入sqlite,找到SQLite for Window Runtime,下载安装。
安装完成之后重启VS,右击项目添加引用,选择Windows->扩展,找到Mircosoft visual c++ runtime package和sqlite for windows runtime,打勾,确定。
由于目前Sqlite不支持AnyCPU,所以我们将项目改成X64,右击解决方案,属性,修改之。
然后右击引用,选择管理Nuget程序包,联机搜索sqlite-net,下载安装。
我们发现项目工程中多了2个类文件,SQLite.cs和SQLiteAsync.cs
基本操作:
1 //创建数据库
2 string dbRootPath = Windows.Storage.ApplicationData.Current.LocalFolder.Path;
3 SQLiteConnection db = new SQLiteConnection(Path.Combine(dbRootPath, "myApp.sqlite"));
4
5 //创建表
6 db.CreateTable<Person>();
7
8 //插入一条数据
9 db.Insert(new Person() { Name = "BetterChaner", Age = 27, Sex = 1 });
10
11 //插入多条数据
12 List<Person> list = new List<Person>();
13 list.Add(new Person() { Name = "Zhangsan", Age = 27, Sex = 1 });
14 list.Add(new Person() { Name = "Lisi", Age = 32, Sex = 0 });
15 list.Add(new Person() { Name = "Wangwu", Age = 24, Sex = 1 });
16 db.InsertAll(list);
17
18 //查询数据
19 List<Person> list2 = db.Query<Person>("select * from Person");
20
21 //更新数据
22 SQLiteCommand cmd = db.CreateCommand("update Person set Age=21 where Name='Lisi'");
23 cmd.ExecuteNonQuery();
24
25 //删除一条数据
26 db.Delete(new Person() { Name = "Zhangsan", Age = 27, Sex = 1 });
27 //删除全部数据
28 db.DeleteAll<Person>();
数据存储的位置为:C:\Users\\AppData\Local\Packages\ \LocalState\文件夹下的myApp.sqlite
四.SqlCE
有了Sqilte,SqlCE不太经常会用到了,在这里就不写出实例了,与wp中类似。
小结
以上为windows store app开发中可以使用的几种存储数据的方式,可以根据数据大小、作用以及类型选择应该使用哪一种存储方式。
⑸ 非结构化数据大量存储本地,无法扩展,怎么办
XSKY星辰天合的XUDS在非结构化数据处理上非常专业,他是采用的软件定义的架构,支持多种协议,让存储摆脱硬件和平台的限制。
⑹ C# 本地存储数据方式选择
不清楚你所说的一定量是多少,如果只是很少的数据,比如几十条上百条,那没啥太大区别,但是xml的效率要比数据库低的多,如果你的数据到了一个数量级,比如上万条,那用xml就不太适合了,这个并没有严格规定,跟你的电脑配置也有关系。(比如说到了10万条,但是你又把电脑升级成固态硬盘阵列去提升磁盘效率)
至于说不想使用专门的数据库工具,我不太清楚你指什么,一般常用的桌面数据库比如access、sqllite这些,无论哪种在软件发布运行后,都不需要使用什么数据库工具。当然,在有些时候为了管理工具,可能是要用到管理工具,access本身是office就带的,sqllite的管理器一般也非常小。
⑺ 海量数据存储
存储技术经历了单个磁盘、磁带、RAID到网络存储系统的发展历程。网络存储技术就是将网络技术和I/O技术集成起来,利用网络的寻址能力、即插即用的连接性、灵活性,存储的高性能和高效率,提供基于网络的数据存储和共享服务。在超大数据量的存储管理、扩展性方面具有明显的优势。
典型的网络存储技术有网络附加存储NAS(Network Attached Storage)和存储区域网SAN(Storage Area Networks)两种。
1)NAS技术是网络技术在存储领域的延伸和发展。它直接将存储设备挂在网上,有良好的共享性、开放性。缺点是与LAN共同用物理网络,易形成拥塞,而影响性能。特别是在数据备份时,性能较低,影响在企业存储应用中的地位。
2)SAN技术是以数据存储为中心,使用光纤通道连接高速网络存储的体系结构。即将数据存储作为网络上的一个区域独立出来。在高度的设备和数据共享基础上,减轻网络和服务器的负担。因光纤通道的存储网和LAN分开,使性能得到很大的提高,而且还提供了很高的可靠性和强大的连续业务处理能力。在SAN中系统的扩展、数据迁移、数据本地备份、远程数据容灾数据备份和数据管理等都比较方便,整个SAN成为一个统一管理的存储池(Storage Pool)。SAN存储设备之间通过专用通道进行通信,不占用服务器的资源。因此非常适合超大量数据的存储,成为网络存储的主流。
3)存储虚拟化技术是将系统中各种异构的存储设备映射为一个单一的存储资源,对用户完全透明,达到互操作性的目的和利用已有的硬件资源,把SAN内部的各种异构的存储资源统一成一个单一视图的存储池,可根据用户的需要方便地切割、分配。从而保持已有的投资,减少总体成本,提高存储效率。
存储虚拟化包括3个层次结构:基于服务器的虚拟化存储、基于存储设备的虚拟化存储和基于网络的虚拟化存储。
1)基于服务器的虚拟化存储由逻辑管理软件在主机/服务器上完成。经过虚拟化的存储空间可跨越多个异构的磁盘阵列,具有高度的稳定性和开放性,实现容易、简便。但对异构环境和分散管理不太适应。
2)基于存储设备的虚拟化存储,因一些高端磁盘阵列本身具有智能化管理,可以实现同一阵列,供不同主机分享。其结构性能可达到最优。但实现起来价格昂贵,可操作性差。
3)基于网络的虚拟化存储,通过使用专用的存储管理服务器和相应的虚拟化软件,实现多个主机/服务器对多个异构存储设备之间进行访问,达到不同主机和存储之间真正的互连和共享,成为虚拟存储的主要形式。根据不同结构可分为基于专用服务器和基于存储路由器两种方式。①基于专用服务器的虚拟化,是用一台服务器专用于提供系统的虚拟化功能。根据网络拓扑结构和专用服务器的具体功能,其虚拟化结构有对称和非对称两种方式。在对称结构中数据的传输与元数据访问使用同一通路。实现简单,对服务器和存储设备的影响小,对异构环境的适应性强。缺点是专用服务器可能成为系统性能的瓶颈,影响SAN的扩展。在非对称结构中,数据的传输与元数据访问使用不同通路。应用服务器的I/O命令先通过命令通路传送到专用服务器,获取元数据和传输数据视图后,再通过数据通路得到所需的数据。与对称结构相比,提高了存储系统的性能,增加了扩展能力。②基于存储路由器的SAN虚拟化,存储路由器是一种智能化设备,既具有路由器的功能,又针对I/O进行专门优化。它部署在存储路由器上,多个存储路由器保存着整个存储系统中的元数据多个副本,并通过一定的更新策略保持一致性。这种结构中,因存储路由器具有强大的协议功能,所以具有更多的优势。能充分利用存储资源,保护投资。能实现软硬件隔离,并辅有大量的自动化工具,提高了虚拟服务器的安全性,降低对技术人员的需求和成本。
⑻ java 数组过大,想用一个轻量级的数据库用来存储这个数组
既然是java 不如试试Derby这个数据库,应该很符合你的要求而且网上资料很多哦在这里也不赘述了。
Derby是一个开源的、100% Java编写的、与平台无关的、易管理的关系数据库管理系统。Derby为用户提供了轻量的标准数据库引擎,它可以紧密的嵌入到任何基于Java的解决方案中。Derby确保数据完整性,并提供负责的事务处理操作。默认的配置中不包含任何独立的数据库服务器。同时,Derby 的安装过程非常简单,只需要将其 .jar 文件复制到系统中并为您的项目添加该 .jar 文件即可。
Derby拥有一个令人惊奇的特性列表。它可以支持关系数据库中的所有企业级的特性,包括崩溃恢复、事务回滚和提交、行/表级锁、视图、主键/外键约束、触发器、子查询表达式,等等。一部分的列表特性使Derby从其他的Java 关系数据库管理系统中分离出来。
Derby可以有两种部署方式:
嵌入式:Derby被单个用户的Java应用程序使用,在这种模式下,Derby和应用程序运行在同一个JVM中。Derby对于终端用户几乎是透明的,因为它的启动和终止都是由应用程序来控制,而不需要任何的管理。
服务器模式:Derby由应用程序启动,此时通过用户可以通过网络连接。在这种模式下,Derby运行在服务器主机的JVM中。其他JVM的应用程序通过连接服务器来访问数据库。
⑼ VS2012 C#如何储存本地数据
和其他人说的一样,方法很多,如果数据不多,这里推荐一个简单的方法。
以C# winform程序为例
使用其中自带的配置文件的setting.setting,如上图。
使用方法如下string test = Properties.Settings.Default.test;//读取设置值
//根据读取的设置值进行操作
Properties.Settings.Default.test = "test"; //修改设置属性
Properties.Settings.Default.Save();//保存读设置项做的更改,一般在软件关闭的时候使用
详细操作请自行网络
setting上面的Resources.resx是存储资源(图片,声音等)文件的,操作方法类似。
⑽ Android本地存储的几种方式
Android 提供了5种方式存储数据: --使用SharedPreferences存储数据; --文件存储数据; --SQLite数据库存储数据; --使用ContentProvider存储数据; --网络存储数据; 先说下,Preference,File, DataBase这三种方式分别对应的目录是/data/data/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database 。 在Android中通常使用File存储方式是用 Context.openFileOutput(String fileName, int mode)和Context.openFileInput(String fileName)。 Context.openFileOutput(String fileName, int mode)生成的文件自动存储在/data/data/Package Name/files目录下,其全路径是/data/data/Pac