169it科技资讯
169it -->


当前位置:  数据库>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......
      最新IT科技资讯推荐: -1

[1]Spring-MongoDB简单操作
    来源:    发布时间: 2013-10-18

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源码研究--字典
    来源:    发布时间: 2013-10-18

计划每天花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
    来源:    发布时间: 2013-10-18

计划每天花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)

 

 

 

 

本文链接:http://www.cnblogs.com/feiyunruyue/p/3143232.html,转载请注明。


    
最新技术文章:
▪30G 的redis 如何优化 - 沐訫    ▪[教程]MongoDB 从入门到进阶 (User系统) - magicD    ▪Redis使用总结之与Memcached异同 - ceecy
▪MongoDB学习 (六):查询 - 辞职回家卖烧饼    ▪在.net中使用aquiles访问Cassandra(一) - amwicfai    ▪在.net中使用aquiles访问Cassandra(二) - amwicfai
▪高性能队列Fqueue的设计和使用实践 - 蒋叶湖    ▪MongoDB开发学习 - 喵 喵    ▪MongoDB开发学习 - 喵 喵
▪Spring-MongoDB简单操作 - CN.programmer.Luxh    ▪MongoDB 聚合 - 蒋叶湖    ▪nosql数据库 - 蒋叶湖
▪Spring-MongoDB简单操作    ▪Redis源码研究--字典    ▪Redis源码研究--字典 - feiyunruyue
▪[译]Cassandra 架构简述    ▪[译]Cassandra 架构简述    ▪Spring-MongoDB简单操作
▪MongoDB 聚合    ▪NoSQL生态系统    ▪NoSQL生态系统
▪nosql数据库    ▪mongodb持久化    ▪MongoDB 聚合
▪CentOS 6上的redis搭建实战记录    ▪非关系型数据库的研究与实践    ▪高性能队列Fqueue的设计和使用实践
▪php中使用memcached的性能问题    ▪NoSQL架构实践(二)——以NoSQL为主    ▪NoSQL架构实践(三)——以NoSQL为缓存
▪在MongoDB中一起使用$or和sort()时,查询性能差    ▪[转]NoSQL生态系统    ▪NoSQL数据库探讨之一 - 为什么要用非关系数
▪初识Redis及Redis在Windows下的安装和使用    ▪MongoDB 开发学习    ▪Redis.conf
▪关于twemproxy和redis分布式    ▪NoSQL学习之路(四):创建、读取、更新、删除    ▪NoSQL学习之路 (五):查询操作符(Query Operators).1st
▪NoSQL学习之路(三):MongoDB Shell的使用    ▪NoSQL学习之路 (二):MongoDB 数据类型和基本    ▪NoSQL学习之路 (一):MongoDB 环境的搭建
▪NoSQL学习之路 (一):mongoDB 环境的搭建    ▪NoSQL学习之路 (一):mongoDB 环境的搭建和shel    ▪NoSQL学习之路 (二):mongoDB 数据类型和基本
▪那点所谓的分布式——redis    ▪mongodb查询嵌入式文档    ▪NoSQL历史简介
▪Mongo服务器集群配置学习三——分片    ▪MongoDB 导出和导入命令的使用    ▪HBase常用的数据库API操作
▪启动HBase后遇到的一个问题    ▪Mongo服务器集群配置学习一——主从复制    ▪Mongo服务器集群配置学习二——副本集
▪完全分布式安装HBase    ▪搞一些好玩的东西——redis    ▪Tair监控及统计技巧
▪MongoDB 之旅(四) 深入学习    ▪MongoDB 问题123    ▪MongoDB——安装部署以及简单的运用
▪MongoDB 之旅(一) 简介    ▪MongoDB 之旅(二) 基本操作(MongoDB Javascript Sh    ▪MongoDB 之旅(三) 基本管理(MongoDB Javascript Sh
▪mongoDB之windows下安装mongo数据库服务    ▪mongoDB之数据备份恢复工具    ▪CentOS通过yum安装CouchDB
▪MongoDB从入门到提高【第一集】---------MongdoDB配    ▪MongoDB从入门到提高【第二集】---------MongdoDB权    ▪[教程]MongoDB 从入门到进阶 (TextSearch)
▪mongodb数据文件格式    ▪在Window平台安装MongoDB    ▪mongodb journal文件格式
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2015,169IT.COM,站长邮箱:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号