1、将数据库数据存储在第一个map集合中;
2、将第一个map集合中的数据拷贝到第二个map集合中;
3、将第一个map集合中的数据清空;
4、将第二个map集合中的数据拷贝到第一个map集合中;
5、将第二个map集合中的数据清空;
6、重复以上步骤,实现数据库数据的回切换存储。
理论上说,不停地建立数据库连接、查询、断开数据库连接这种 *** 作是很慢的,所以把要查的东西放到Map中会快很多。但实际上我们多数情况下不会把数据查出来放到Map中,因为查询的数据往往很多,全都放到内存中去根本就不现实,就算你服务器100G的内存也不够用。所以我们通常的做法就是用数据连接池,具体做法我就不说了,用兴趣的话可以查查数据连接池。
类HASHSET所有已实现的接口:Serializable,Cloneable,Iterable,Collection,Set此类实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set的迭代顺序;特别是它不保证该顺序搜索恒久不变。此类允许使用null元素。此类为基本 *** 作提供了稳定性能,这些基本 *** 作包括add、remove、contains和size,假定哈希函数将这些元素正确地分布在桶中。对此set进行迭代所需的时间与HashSet实例的大小(元素的数量)和底层HashMap实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。注意,此实现不是同步的。如果多个线程同时访问一个哈希set,而其中至少一个线程修改了该set,那么它必须保持外部同步。这通常是通过对自然封装该set的对象执行同步 *** 作来完成的。如果不存在这样的对象,则应该使用CollectionssynchronizedSet方法来“包装”set。最好在创建时完成这一 *** 作,以防止对该set进行意外的不同步访问:Sets=CollectionssynchronizedSet(newHashSet());类HASHMAP所有已实现的接口:Serializable,Cloneable,Map基于哈希表的Map接口的实现。此实现提供所有可选的映射 *** 作,并允许使用null值和null键。(除了非同步和允许使用null之外,HashMap类与Hashtable大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。类CONCURRENTHASHMAP所有已实现的接口:Serializable,ConcurrentMap,Map支持获取的完全并发和更新的所期望可调整并发的哈希表。此类遵守与Hashtable相同的功能规范,并且包括对应于Hashtable的每个方法的方法版本。不过,尽管所有 *** 作都是线程安全的,但获取 *** 作不必锁定,并且不支持以某种防止所有访问的方式锁定整个表。此类可以通过程序完全与Hashtable进行互 *** 作,这取决于其线程安全,而与其同步细节无关。
以上就是关于使用两个map集合来回切换存储数据库数据的原理全部的内容,包括:使用两个map集合来回切换存储数据库数据的原理、java中是把数据库的数据都查出来遍历到map里面在查找快,还是一遍一遍的根据响应的字段查找快、concurrenthashmap怎样解决缓存等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)