当前位置: 数据库>nosql
本页文章导读:
▪Spring-MongoDB简单操作 1、简单的配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mongo="http://www.springframework.org/schema/data/mongo" x.........
▪Redis源码研究--字典 计划每天花1小时学习Redis 源码。在博客上做个记录。--------6月18日-----------redis的字典dict主要涉及几个数据结构,dictEntry:具体的k-v链表结点dictht:哈希表dict:字典具体关系为1 typedef struct dict.........
▪Redis源码研究--字典 - feiyunruyue 计划每天花1小时学习Redis 源码。在博客上做个记录。--------6月18日-----------redis的字典dict主要涉及几个数据结构,dictEntry:具体的k-v链表结点dictht:哈希表dict:字典具体关系为1 typedef struct dict.........
[1]Spring-MongoDB简单操作
1、简单的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.2.xsd">
<mongo:mongo host="127.0.0.1" port="27017"/>
<bean id="mongoTemplate" >
<constructor-arg ref="mongo"/>
<constructor-arg name="databaseName" value="app_DB"/>
</bean>
</beans>
2、通用DAO
1)接口
package cn.luxh.app.repository;
import java.util.List;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
public interface MongoDBDao {
void save(Object obj);
<T> T findOne(Class<T> clazz, Query query);
<T> List<T> findAll(Class<T> clazz);
<T> T findById(Class<T> clazz,Object id);
<T> List<T> find(Class<T> clazz, Query query);
<T> List<T> findList(Class<T> clazz,Query query,int currentPage,int pageSize);
<T> long findCount(Class<T> clazz,Query query);
<T> int update(Query query,Update update,Class<T> clazz);
}
2)接口实现
package cn.luxh.app.repository;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;
@Repository
public class MongoDBDaoImpl implements MongoDBDao{
@Autowired
private MongoTemplate mongoTemplate;
@Override
public <T> T findOne(Class<T> clazz, Query query) {
return mongoTemplate.findOne(query, clazz);
}
@Override
public void save(Object obj) {
mongoTemplate.save(obj);
}
@Override
public <T> List<T> findAll(Class<T> clazz) {
return mongoTemplate.findAll(clazz);
}
@Override
public <T> T findById(Class<T> clazz, Object id) {
return mongoTemplate.findById(id, clazz);
}
@Override
public <T> List<T> find(Class<T> clazz, Query query) {
return mongoTemplate.find(query, clazz);
}
@Override
public <T> List<T> findList(Class<T> clazz, Query query, int currentPage,
int pageSize) {
//计算起始位置
int startIndex = ((currentPage - 1)<0?0:(currentPage - 1))*pageSize;
query.skip(startIndex);
query.limit(pageSize);
return mongoTemplate.find(query,clazz);
}
@Override
public <T> long findCount(Class<T> clazz, Query query) {
return mongoTemplate.count(query, clazz);
}
@Override
public <T> int update(Query query, Update update, Class<T> clazz) {
return mongoTemplate.updateFirst(query, update, clazz).getN();
}
}
3、通用Service
1)接口
package cn.luxh.app.service;
import java.util.List;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import cn.luxh.app.util.Pagination;
public interface MongoDBService {
[2]Redis源码研究--字典
计划每天花1小时学习Redis 源码。在博客上做个记录。
--------6月18日-----------
redis的字典dict主要涉及几个数据结构,
dictEntry:具体的k-v链表结点
dictht:哈希表
dict:字典
具体关系为
1 typedef struct dict {
2 dictType *type;
3 void *privdata;
4 dictht ht[2];
5 int rehashidx; /* rehashing not in progress if rehashidx == -1 */
6 int iterators; /* number of iterators currently running */
7 } dict;
1 typedef struct dictht {
2 dictEntry **table;
3 unsigned long size;
4 unsigned long sizemask;
5 unsigned long used;
6 } dictht;
1 typedef struct dictEntry {
2 void *key;
3 union {
4 void *val;
5 uint64_t u64;
6 int64_t s64;
7 } v;
8 struct dictEntry *next;
9 } dictEntry;
一个字典有两个哈希表, 冲突后采用了链地址法,很好理解。
一些简单操作采用了宏
#define dictGetKey(he) ((he)->key)
#define dictGetVal(he) ((he)->v.val)
#define dictGetSignedIntegerVal(he) ((he)->v.s64)
#define dictGetUnsignedIntegerVal(he) ((he)->v.u64)
本文链接
[3]Redis源码研究--字典 - feiyunruyue
计划每天花1小时学习Redis 源码。在博客上做个记录。
--------6月18日-----------
redis的字典dict主要涉及几个数据结构,
dictEntry:具体的k-v链表结点
dictht:哈希表
dict:字典
具体关系为
1 typedef struct dict {
2 dictType *type;
3 void *privdata;
4 dictht ht[2];
5 int rehashidx; /* rehashing not in progress if rehashidx == -1 */
6 int iterators; /* number of iterators currently running */
7 } dict;
2 dictType *type;
3 void *privdata;
4 dictht ht[2];
5 int rehashidx; /* rehashing not in progress if rehashidx == -1 */
6 int iterators; /* number of iterators currently running */
7 } dict;
1 typedef struct dictht {
2 dictEntry **table;
3 unsigned long size;
4 unsigned long sizemask;
5 unsigned long used;
6 } dictht;
2 dictEntry **table;
3 unsigned long size;
4 unsigned long sizemask;
5 unsigned long used;
6 } dictht;
1 typedef struct dictEntry {
2 void *key;
3 union {
4 void *val;
5 uint64_t u64;
6 int64_t s64;
7 } v;
8 struct dictEntry *next;
9 } dictEntry;
2 void *key;
3 union {
4 void *val;
5 uint64_t u64;
6 int64_t s64;
7 } v;
8 struct dictEntry *next;
9 } dictEntry;
一个字典有两个哈希表, 冲突后采用了链地址法,很好理解。
一些简单操作采用了宏
#define dictGetKey(he) ((he)->key)
#define dictGetVal(he) ((he)->v.val)
#define dictGetSignedIntegerVal(he) ((he)->v.s64)
#define dictGetUnsignedIntegerVal(he) ((he)->v.u64)
#define dictGetVal(he) ((he)->v.val)
#define dictGetSignedIntegerVal(he) ((he)->v.s64)
#define dictGetUnsignedIntegerVal(he) ((he)->v.u64)
本文链接:http://www.cnblogs.com/feiyunruyue/p/3143232.html,转载请注明。
最新技术文章:
 
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!