首页 新闻 会员 周边 捐助

问大家个事啊。

-2
[待解决问题]

DataTable,DataSet 本质上是不是缓存??不了解的千万别瞎说。我打赌了,我认为是。

someOneHan的主页 someOneHan | 初学一级 | 园豆:179
提问于:2014-05-08 09:05
< >
分享
所有回答(7)
0

内存里的是MemoryStream,硬盘上的是FileStream,网络上的是NetStream。

DataTable,DataSet 本质是哪种Stream?

缓存本质是什么?

Firen | 园豆:5385 (大侠五级) | 2014-05-08 09:21

我认为是内存,从数据中找到的数据放在DataTable里面。Datatable和DataSet都是继承System.ComponentModel.MarshalByValueComponent这类的,这个类里面有一个Container我感觉这这个Container和维护缓存使用的HashTable是一样的道理,所以我向Datatable应该是叫缓存把。

支持(0) 反对(0) someOneHan | 园豆:179 (初学一级) | 2014-05-08 09:29
0

0.0所有的内存对象都可以当成是缓存.

你对缓存概念的理解有偏颇

吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-08 09:51

是我理解的有问题。我是不是将两个不同的东西混为一谈了??

比如一个人叫小明,但是“小明”只是两个字,它指向的对象才是一个人。

DataTable的一个实例就是一个对象的引用,而它指向的数据可以当成缓存来使用??

我这么理解有问题么。。谢谢了

支持(0) 反对(0) someOneHan | 园豆:179 (初学一级) | 2014-05-08 10:19

@someOneHan: 这样是可以的,

Datatable可以用来实现缓存,但没有什么本质上是缓存的说法

缓存是一种应用场景,或者说功能.而datatable或其它内存对象,是一种工具,这2个是是不同层面的概念

你在很多场景使用同一个工具,在同一个场景你也能选择使用多种工具

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-08 10:32
0

缓存是水,DataTable,DataSet等等只是盛水的容器。

北落师门α | 园豆:17 (初学一级) | 2014-05-08 09:57
0

DataTable,DataSet 本质上是容器吧,里面的数据倒是可以认为是缓存

刘宏玺 | 园豆:14020 (专家六级) | 2014-05-08 10:56
0

不是,因为它不具备缓存(这是个名词)的几大主要特征:

1、无法设置容量;

2、无法设置过期策略;

3、没有并发控制机制;

Launcher | 园豆:45050 (高人七级) | 2014-05-08 11:20
0

你说的没错。 他们完全可以做缓存。

但是lz你反过来想一下, 是不是所有的Object都可以做缓存?

他们都在内存里啊!

所有的list, array, 甚至一个object本身, 只要你不从内存删掉, 他都叫缓存啊!

 

缓存英文叫什么? cache。

标准翻译是:缓冲贮存区,简称缓存。 

 

所以, 只要有缓冲能力, 有贮存能力, 都叫缓存。 

只不过, 他们只是简单的缓存,没有高级功能而已。

 

比如早期的时候, 我们服务器上所有的config, 用一个单例, 全存起来了。 

以后不用读数据库了, 直接拿。 

那他能不能叫缓存, 为什么能, 为什么不能?

这不重要。 我认为他起到了缓存的作用那他就是缓存。 

扯一大堆概念然后证明了他能叫或者不能叫, 

这毫无意义 

undefined | 园豆:898 (小虾三级) | 2014-05-08 14:16

谢谢了。看来我得好好的销习儿啊,

支持(0) 反对(0) someOneHan | 园豆:179 (初学一级) | 2014-05-08 14:27
0

缓存是个大的概念吧,放在文件里也可以叫缓存。比如浏览缓存,服务器对jsp编译后的缓存。

angelshelter | 园豆:9914 (大侠五级) | 2014-05-08 14:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册