Spring整合- mongodb

MongoDB实战:应用场景以及Spring和mongodb的整合 mongodb是非关系型数据库,他的存储数据可以超过上亿条(老版本的mongodb有丢数据的情况,新版本不会有,网上说的),mongodb适合存储 一些量大表关系较简单的数据,例如用户信息,用户注册信息,公司注册信息,留言,评论,操作日志,mongodb还能用分布式文件存储信息,我们主要用mongodb来存储我们项目里面的操作日志(银行的付款转账记录,角色权限的变动日志),我们主要是结合aop来使用的,首先我们来配置一个aop的切面类,再给aop的使用规则,哪个类里面的哪个方法使用当前切面类,利用后置通知类 阅读详情

1.环境

     Jdk:1.6.0_10-rc2

     Spring3.1.2  下载

     依赖jar文件:

  

2.相关配置

①.Spring配置文件

<?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:context="http://www.springframework.org/schema/context"
	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.0.xsd
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/data/mongo
		http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">
	
	<mongo:mongo id="mongo"  host="127.0.0.1" port="27017"	/>
	
	<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
		<constructor-arg name="username"  value="userName"/>
		<constructor-arg name="password"  value="password"/>
	</bean>
	
	<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
		<constructor-arg ref="mongo" />
		<constructor-arg value="test-mongo" />
		<constructor-arg ref="userCredentials" />
	</bean>
	
	<bean id="userDao" class="com.x.mongodb.dao.impl.UserDao" />
</beans>

②.MongoTemplate  Api

package com.x.mongodb.dao.support;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.data.mongodb.core.MongoTemplate;

/**
 * @author <a href="http://blog.youkuaiyun.com/java2000_wl">java2000_wl</a>
 * @version <b>1.0</b>
 */
public abstract class AbstractBaseMongoTemplete implements ApplicationContextAware {
	
	protected MongoTemplate mongoTemplate;

	/**
	 * 设置mongoTemplate
	 * @param mongoTemplate the mongoTemplate to set
	 */
	public void setMongoTemplate(MongoTemplate mongoTemplate) {
		this.mongoTemplate = mongoTemplate;
	}
	
	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		MongoTemplate mongoTemplate = applicationContext.getBean("mongoTemplate", MongoTemplate.class);
		setMongoTemplate(mongoTemplate);
	}
}

package com.x.mongodb.dao.impl;

import java.util.List;

import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

import com.x.mongodb.dao.IUserDao;
import com.x.mongodb.dao.support.AbstractBaseMongoTemplete;
import com.x.mongodb.entity.User;

/**
 * @author <a href="http://blog.youkuaiyun.com/java2000_wl">java2000_wl</a>
 * @version <b>1.0</b>
 */
public class UserDao extends AbstractBaseMongoTemplete implements IUserDao {

	/**
	 * 新增
	 * <br>------------------------------<br>
	 * @param user
	 */
	public void insert(User user) {
		mongoTemplate.insert(user);
	}
	
	/**
	 * 批量新增
	 * <br>------------------------------<br>
	 * @param users
	 */
	public void insertAll(List<User> users) {
		mongoTemplate.insertAll(users);
	}
	
	/**
	 * 删除,按主键id, 如果主键的值为null,删除会失败
	 * <br>------------------------------<br>
	 * @param id
	 */
	public void deleteById(String id) {
		User user = new User(id, null, 0);
		mongoTemplate.remove(user);
	}
	
	/**
	 * 按条件删除
	 * <br>------------------------------<br>
	 * @param criteriaUser
	 */
	public void delete(User criteriaUser) {
		Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());;
		Query query = new Query(criteria);
		mongoTemplate.remove(query, User.class);
	}
	
	/**
	 * 删除全部
	 * <br>------------------------------<br>
	 */
	public void deleteAll() {
		mongoTemplate.dropCollection(User.class);
	}
	
	/**
	 * 按主键修改,
	 * 如果文档中没有相关key 会新增 使用$set修改器
	 * <br>------------------------------<br>
	 * @param user
	 */
	public void updateById(User user) {
		Criteria criteria = Criteria.where("id").is(user.getId());
		Query query = new Query(criteria);
		Update update = Update.update("age", user.getAge()).set("name", user.getName());
		mongoTemplate.updateFirst(query, update, User.class);
	}
	
	/**
	 * 修改多条
	 * <br>------------------------------<br>
	 * @param criteriaUser
	 * @param user
	 */
	public void update(User criteriaUser, User user) {
		Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());;
		Query query = new Query(criteria);
		Update update = Update.update("name", user.getName()).set("age", user.getAge());
		mongoTemplate.updateMulti(query, update, User.class);
	}
	
	/**
	 * 根据主键查询
	 * <br>------------------------------<br>
	 * @param id
	 * @return
	 */
	public User findById(String id) {
		return mongoTemplate.findById(id, User.class);
	}
	
	/**
	 * 查询全部
	 * <br>------------------------------<br>
	 * @return
	 */
	public List<User> findAll() {
		return mongoTemplate.findAll(User.class);
	}
	
	/**
	 * 按条件查询, 分页
	 * <br>------------------------------<br>
	 * @param criteriaUser
	 * @param skip
	 * @param limit
	 * @return
	 */
	public List<User> find(User criteriaUser, int skip, int limit) {
		Query query = getQuery(criteriaUser);
		query.skip(skip);
		query.limit(limit);
		return mongoTemplate.find(query, User.class);
	}
	
	/**
	 * 根据条件查询出来后 再去修改
	 * <br>------------------------------<br>
	 * @param criteriaUser  查询条件
	 * @param updateUser    修改的值对象
	 * @return
	 */
	public User findAndModify(User criteriaUser, User updateUser) {
		Query query = getQuery(criteriaUser);
		Update update = Update.update("age", updateUser.getAge()).set("name", updateUser.getName());
		return mongoTemplate.findAndModify(query, update, User.class);
	}
	
	/**
	 * 查询出来后 删除
	 * <br>------------------------------<br>
	 * @param criteriaUser
	 * @return
	 */
	public User findAndRemove(User criteriaUser) {
		Query query = getQuery(criteriaUser);
		return mongoTemplate.findAndRemove(query, User.class);
	}
	
	/**
	 * count
	 * <br>------------------------------<br>
	 * @param criteriaUser
	 * @return
	 */
	public long count(User criteriaUser) {
		Query query = getQuery(criteriaUser);
		return mongoTemplate.count(query, User.class);
	}

	/**
	 *
	 * <br>------------------------------<br>
	 * @param criteriaUser
	 * @return
	 */
	private Query getQuery(User criteriaUser) {
		if (criteriaUser == null) {
			criteriaUser = new User();
		}
		Query query = new Query();
		if (criteriaUser.getId() != null) {
			Criteria criteria = Criteria.where("id").is(criteriaUser.getId());
			query.addCriteria(criteria);
		}
		if (criteriaUser.getAge() > 0) {
			Criteria criteria = Criteria.where("age").gt(criteriaUser.getAge());
			query.addCriteria(criteria);
		}
		if (criteriaUser.getName() != null) {
			Criteria criteria = Criteria.where("name").regex("^" + criteriaUser.getName());
			query.addCriteria(criteria);
		}
		return query;
	}
}

package com.x.mongodb.dao;

import java.util.List;

import com.x.mongodb.entity.User;

/**
 * @author <a href="http://blog.youkuaiyun.com/java2000_wl">java2000_wl</a>
 * @version <b>1.0</b>
 */
public interface IUserDao {
	
	/**
	 * 新增
	 * <br>------------------------------<br>
	 * @param user
	 */
	void insert(User user);
	
	/**
	 * 新增
	 * <br>------------------------------<br>
	 * @param users
	 */
	void insertAll(List<User> users);
	
	/**
	 * 删除,主键id, 如果主键的值为null,删除会失败
	 * <br>------------------------------<br>
	 * @param id
	 */
	void deleteById(String id);
	
	/**
	 * 按条件删除
	 * <br>------------------------------<br>
	 * @param criteriaUser
	 */
	void delete(User criteriaUser);
	
	/**
	 * 删除全部
	 * <br>------------------------------<br>
	 */
	void deleteAll();
	
	/**
	 * 修改
	 * <br>------------------------------<br>
	 * @param user
	 */
	void updateById(User user);
	
	/**
	 * 更新多条
	 * <br>------------------------------<br>
	 * @param criteriaUser
	 * @param user
	 */
	void update(User criteriaUser, User user);
	
	/**
	 * 根据主键查询
	 * <br>------------------------------<br>
	 * @param id
	 * @return
	 */
	User findById(String id);
	
	/**
	 * 查询全部
	 * <br>------------------------------<br>
	 * @return
	 */
	List<User> findAll();
	
	/**
	 * 按条件查询
	 * <br>------------------------------<br>
	 * @param criteriaUser
	 * @param skip
	 * @param limit
	 * @return
	 */
	List<User> find(User criteriaUser, int skip, int limit);
	
	/**
	 * 根据条件查询出来后 在去修改
	 * <br>------------------------------<br>
	 * @param criteriaUser  查询条件
	 * @param updateUser    修改的值对象
	 * @return
	 */
	User findAndModify(User criteriaUser, User updateUser);
	
	/**
	 * 查询出来后 删除
	 * <br>------------------------------<br>
	 * @param criteriaUser
	 * @return
	 */
	User findAndRemove(User criteriaUser);
	
	/**
	 * count
	 * <br>------------------------------<br>
	 * @param criteriaUser
	 * @return
	 */
	long count(User criteriaUser);
}

package com.x.mongodb.entity;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * @author <a href="http://blog.youkuaiyun.com/java2000_wl">java2000_wl</a>
 * @version <b>1.0</b>
 */
public class User implements Serializable {

	private static final long serialVersionUID = -5785857960597910259L;
	
	private String id;
	
	private String name;
	
	private int age;
	
	/**
	 * <br>------------------------------<br>
	 */
	public User() {
	}

	/**
	 * 
	 * <br>------------------------------<br>
	 * @param id
	 * @param name
	 * @param age
	 */
	public User(String id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}

	/**
	 * 获得id
	 * @return the id
	 */
	public String getId() {
		return id;
	}

	/**
	 * 设置id
	 * @param id the id to set
	 */
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * 获得name
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * 设置name
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * 获得age
	 * @return the age
	 */
	public int getAge() {
		return age;
	}

	/**
	 * 设置age
	 * @param age the age to set
	 */
	public void setAge(int age) {
		this.age = age;
	}
	
	/**
	 * toString
	 */
	public String toString() {
		Map<String, String> map = new HashMap<String, String>();
		map.put("id", id);
		map.put("name", name);
		map.put("age", String.valueOf(age));
		return map.toString();
	}
}

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.x.mongodb.dao.IUserDao;
import com.x.mongodb.entity.User;

/**
 * @author <a href="http://blog.youkuaiyun.com/java2000_wl">java2000_wl</a>
 * @version <b>1.0</b>
 */
public class UserDaoTest {
	
	/**
	 * 新增 
	 * <br>------------------------------<br>
	 */
	@Test
	public void testInsert() {
		getUserDao().insert(new User(null, "testUser", 21));
	}
	
	/**
	 * 批量新增 
	 * <br>------------------------------<br>
	 */
	@Test
	public void testInsertAll() {
		List<User> list = new ArrayList<User>();
		for (int i = 0; i < 10; i++) {
			list.add(new User(null, "testUser" + i, 21 + i));
		}
		getUserDao().insertAll(list);
	}
	
	/**
	 * 根据主键删除 
	 * <br>------------------------------<br>
	 */
	@Test
	public void testDeleteById() {
		String id = "5058184ec85607e42c4bfad8";
		getUserDao().deleteById(id);
	}
	
	/**
	 * 条件删除 
	 * <br>------------------------------<br>
	 */
	@Test
	public void testDelete() {
		//删除年龄大于25的
		getUserDao().delete(new User(null, null, 25));
	}
	
	/**
	 * 删除全部
	 * <br>------------------------------<br>
	 */
	@Test
	public void testDeleteAll() {
		getUserDao().deleteAll();
	}
	
	/**
	 * 修改  根据id修改
	 * <br>------------------------------<br>
	 */
	@Test
	public void testUpdateById() {
		getUserDao().updateById(new User("50581c08c856346f02e9842c", "张三", 100));
	}
	
	/**
	 * 修改多个
	 * <br>------------------------------<br>
	 */
	@Test
	public void update() {
		//修改年龄大于29岁的 姓名为“王五“
		User criteriaUser = new User(null, null, 29);
		User user = new User(null, "王五", 39);
		getUserDao().update(criteriaUser, user);
	}
	
	/**
	 * 按主键查询, 如果不存在 返回null
	 * <br>------------------------------<br>
	 */
	@Test
	public void testFindById() {
		User user = getUserDao().findById("50581c08c856346f02e98425");
		print(user);
	}
	
	/**
	 * 查询全部
	 * <br>------------------------------<br>
	 */
	@Test
	public void testFindAll() {
		List<User> list = getUserDao().findAll();
		print(list);
	}
	
	/**
	 * 按条件查询
	 * <br>------------------------------<br>
	 */
	@Test
	public void testFind() {
		//查询25岁以上的, 分页
		User criteriaUser = new User(null, null, 20);
		List<User> list = getUserDao().find(criteriaUser, 1, 10);
		print(list);
	}
	
	/**
	 * 查询出来后  修改
	 * <br>------------------------------<br>
	 */
	@Test
	public void testFindAndModify() {
		User criteriaUser = new User("50581c08c856346f02e9842d", null, 0);
		User updateUser = new User(null, "张三", 100);
		updateUser = getUserDao().findAndModify(criteriaUser, updateUser);
		print(updateUser);
	}
	
	/**
	 * 查询出来后 删除
	 * <br>------------------------------<br>
	 */
	@Test
	public void testFindAndRemove() {
		User criteriaUser = new User("50581c08c856346f02e9842d", null, 0);
		criteriaUser = getUserDao().findAndRemove(criteriaUser);
		print(criteriaUser);
	}
	
	/**
	 * count
	 * <br>------------------------------<br>
	 */
	@Test
	public void testCount() {
		User criteriaUser = new User(null, "test", 0);
		long count = getUserDao().count(criteriaUser);
		print(count);
	}
	
	public void print(Object object) {
		if (object == null || !(object instanceof Collection)) {
			System.out.println(object);
			return;
		}
		List<?> list = (List<?>) object;
		for (Object obj : list) {
			System.out.println(obj);
		}
	}
	
	public IUserDao getUserDao() {
		String configLocations = "applicationContext.xml";
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(configLocations);
		IUserDao userDao = applicationContext.getBean("userDao", IUserDao.class);
		return userDao;
	}
}

Spring整合MongoDB Spring整合MongoDB 1)spring4.0整合mongodb3.4的jar依赖 Pom.xml依赖: <!-- MongoDB依赖begin --> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver&l... 阅读详情

相关推荐

2025 高效抓取雪球社区数据:自动化导出Excel与PDF全攻略

本文详细介绍了2025年高效自动化抓取雪球社区数据的完整方案。通过Python脚本,用户可自动抓取帖子列表数据并导出为结构化的Excel表格,同时批量将帖子内容保存为PDF文档,并支持合并与添加书签,极大提升投资研究和信息整理的效率。

weixin_29034963的博客 692

Cannot invoke ***.MongoTemplate.findOne(xxx.Query,class)“ because “this.mongoTemplate“ is null

环境:Spring security oauth2+MmongoDB 描述:refresh token 时报错请求uri为: POST http://localhost:8090/api/sso/oauth/token?client_id=clientId&client_secret=clientSecret&grant_type=refresh_token&refresh_token=cdf6ea33-4b5c-472c-b27b-3edfe2192421, 错误信息为:

weixin_40109343的博客 1717

高能物理相关软件

国内高能物理实验背景     研究物质最深层次结构及相互作用的前沿基础科学。 现代高能物理实验的要素    实例源 、 探测器、   电子学、  触发 DAQ、  原始数据、 刻度、重建 、物理分析、  成果  。 离线软件的地位和作用。    是硬件设备和物理学家的桥梁,是从数据到物理成果转化中的关键和重要的环节。 高能物理实验及其特点 独一无二性,实验规模越来越大,努力省钱(使用

Alan Zhuang的博客 3299

spring整合- mongodb

1.环境 Jdk:1.6.0_10-rc2 Spring3.1.2 下载 依赖jar文件: 2.相关配置 ①.Spring配置文件 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema...

爱.NET 227

ASReview:基于主动学习的AI文献筛选工具,提升科研效率

主动学习是机器学习的一个重要分支,其核心原理是让算法能够主动选择最有价值的数据进行标注,从而以更低的成本获得更好的模型性能。这一技术通过人机协作的闭环流程,显著提升了数据标注和模型训练的效率和精度。在工程实践中,主动学习尤其适用于数据标注成本高昂或数据类别不平衡的场景,例如医学影像分析、自然语言处理中的文本分类以及推荐系统的冷启动问题。通过优先标注模型最不确定的样本,它能够有效解决传统机器学习面临的冷启动和数据稀疏性挑战。本文聚焦的ASReview项目,正是将主动学习原理应用于系统文献综述这一具体场景,通过

weixin_28725959的博客 431

Android 14.0 开机广播接收慢广播延迟问题分析

在14.0的系统rom定制化开发中,在某些时候在接收开机广播的时候发现,过了一分钟才收到开机广播,接下来就需要分析下 开机广播的相关分发机制,来处理下相关问题

安卓兼职framework和app工程师的博客 631

springboot配置swagger报错:Cannot invoke “org.springframework...“和swagger网页报404问题

springboot配置swagger时报错,spring boot使用版本为2.7.16或3.1.5,JDK17,项目启动报错,项目使用swagger 3.0.

m0_74055560的博客 1293

Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/E_INVALIDARG

摘要:安装WSL2时遇到E_INVALIDARG错误(多核CPU问题),可通过创建.wslconfig配置文件解决。配置内容包括:渐进式内存回收、自动代理、模拟虚拟系统调用、限制内存为4GB和处理器核心数为4。需确保已启用虚拟机平台和Linux子系统功能。 (98字)

猿小白的博客 1047

Spring Data MongoTemplate insert 操作的大坑:Spring data mongo E11000 duplicate key error collection: inde...

现象 现在有这么个类需要插入到 MongoDB 中: @Data @Document(collection = "biz_order") public class BizOrder { @Field private String id; @Field // 其他属性 } 有个操作是根据 BizOrder 的某个字段不同,会往 ...

weixin_30840573的博客 2368

大数据学习指南从入门到精通

利用框架的力量,看懂游戏规则,才是入行的前提大多数人不懂,不会,不做,才是你的机会,你得行动,不能畏首畏尾选择才是拉差距关键,风向,比你流的汗水重要一万倍,逆风划船要累死人的为什么选择学习大数据开发,不选择Java开发?借棋弈做比喻,智商高的不要选择五子琪,要选择围棋,它能长久地吸引你。不都是在棋盘上一颗黑子一颗白子地下吗?因为围棋更复杂,能够掌握如此复杂的技艺、产生稳定输出的棋手、让我们更佩服。选择学习大数据开发也如此,能让你的职业生涯走得更远,少走弯路。

Lansonli(蓝深李)的博客 2万+

备战2025数学建模国赛(算法65):Fisher判别分析

在数学建模竞赛中,我们常常会遇到需要对研究对象进行分类或判断的问题。例如,根据西瓜的各类指标判断其好坏,根据经济数据判断一个国家的发展程度,或根据病人的医学影像特征判断其是否患病。这类“分类判别”问题,是建模竞赛中最常见的题型之一。Fisher判别分析(或称线性判别分析,LDA)作为一种经典的、有监督的降维与分类方法,因其模型简洁、可解释性强、计算高效而备受青睐。

YOLO 422

MongoDB学习(三)springboot整合mongodb

MongoDB学习

weixin_44185213的博客 1588

【MATLAB代码】UKF组合导航例程,15维状态量、3维观测量。附完整的代码,有中文注释、误差输出图像

摘要 本文提出了一种基于15维误差状态模型的UKF组合导航算法,实现了三维位置、速度和姿态的高精度估计。算法采用严格的误差状态模型,包含位置(3)、速度(3)、姿态(3)、陀螺偏差(3)和加速度计偏差(3)共15个状态量,通过3维GNSS位置观测进行校正。仿真结果表明,相比纯IMU积分,UKF算法能有效抑制误差积累,显著提高导航精度。文中提供了完整的MATLAB源代码,可直接运行并复现三维轨迹对比、位置/速度曲线及误差分析结果。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 311

spring boot 整合mongodb

Spring Boot其设计目的是用来简化新Spring应用的初始搭建以及开发过程,简化配置

xphsc的专栏 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

MongoDB进阶(八)Spring整合MongoDB(Spring Data MongoDB)

最近比较忙,忙的都没空理csdn了,今天我继续迈着魔鬼般的步伐,摩擦摩擦……总结下最近学到的MongoDB的知识。 1.认识Spring Data MongoDB         之前还的确不知道Spring连集成Nosql的东西都实现了,还以为自己又要手动封装一个操作MongoDB的API呢,结果就发现了Spring Data MongoDB。不愧是Spring,真是给了我们

代码与酒 3万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

spring MVC 整合mongodb

Spring Mongodb目录1 SPRING整合MONGODB 11.1 环境准备 11.2 包依赖 11.3 配置 22 案列 52.1 SPRING MVC整合MONGODB代码案例 51 Spring整合Mongodb1.1 环境准备1. mongodb官网 http://www.mongodb.org/,下载mongodb安装包和mongodb的java驱...

203

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

spring整合mongodb

Spring Mongodb 目录 1 SPRING整合MONGODB 1 1.1 环境准备 1 1.2 包依赖 1 1.3 配置 2 2 案列 5 2.1 SPRING MVC整合MONGODB代码案例 5 1 Spring整合Mongodb 1.1 环境准备 1. mongodb官网 http://www.mongodb.org/,下载mongo...

Java 209

3、Spring 整合 MongoDB

该栏目讲叙 MongoDB 相关的知识,包括简介、各模块的操作和与 Spring 的整合 文章目录MongoTemplate 相关API1、常用方法2、常用类整合 MongoDB MongoTemplate 相关API 1、常用方法 描述 方法 添加文档 insert()、save() 更新文档 update() 删除文档 remove() 查询文档 findOne()、findAll()、find() 聚合 aggregate() 2、常用类 Query类

HadesLin的博客 3739

Mongodb整合Maven,Spring项目参考

最近后台需要写mongodb与spring项目的整合接口,参阅了网上资料后自己写出了几个方法来分享参考 一:maven引用 org.mongodb mongo-java-driver 3.2.2 3.2版本以上的都可以,按照个人喜好就行 二:连接mongo配置package com.suncar.core.util; import com.mongodb

YrI/OG 4500

spring 整合spring data mongodb

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 为什么需要MongoDB MongoDB与MySQL的区别 关于MongoDB与MySQL的区别可以参考网上关于NoSQL与MySQL的区别,以下是找...

qq_29231037的博客 5947

spring data 整合mongoDB基础篇

最近几天一直再看这个mongoDB,按照Master的说法是先看看,后期会用这个做数据库。所以这几天完成从未接触到会用springdata 来操作mongodb数据库。后面如果在项目完成后或许会有更深的理解,到时会再更新总结。 实际网上的入门的百度一下很多了,但是很多资料已经过时了,在按照原来的做法就行不通,而剩下的大都缺少类,不是很系统全面。这里才感觉有必要来总结出自己的一套学习流程来,供大

万米高空的博客 9454

mongoDB整合spring

mongoDB整合spring mongoDB java

CartoonMiao的博客 690

MongoDB 整合 Spring 简单demo

MongoDB + java 简单demo 添加配置文件:spring-mongodb.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLS...

weixin_44100455的博客 247

mongodb java spring_[Java教程]Spring 与 mongoDB 整合

[Java教程]Spring 与 mongoDB 整合02017-02-07 00:00:39首先需要引入jar包1 2 org.mongodb 3 mongodb-driver 4 3.3.0 5 6 7 org.springframework.data 8 spring-data-mongodb 9 1.9.4.RELEASE10 View Codespring中...

weixin_33242139的博客 216

Spring 整合MongoDB

目录 1、在pom.xml文件中添加mongoDB的依赖: 2、通过xml配置MongoTemplate 3、AbstractMongodbDao类,实现MongoDb的CRUD操作 4、测试 4.1 MongoUser 实体类,对应db中的集合user 4.2 UserMongoDao 4.3MongoUserManageService 4.4 MongoUserManage(controller) 5、启动MongoDB Server,为数据库testdb,添加一个用户 6、启动项.

Cloud-Future的博客 1194

Spring Boot 整合MongoDB

本文介绍了SpringBoot3.x集成MongoDB的实现方法。首先通过引入spring-boot-starter-data-mongodb依赖并配置数据源连接信息。文章详细说明了MongoDB文档实体的定义方式,包括@Document和@MongoId等注解的使用。重点讲解了MongoTemplate和MongoRepository两个核心类的功能:MongoTemplate提供CRUD、聚合等丰富的数据库操作;MongoRepository则简化基础操作,支持方法名查询和@Query注解。文章还提供了

yzzdid的博客 1373
上一篇: mongodb- Java API 查询操作
下一篇: MYSQL数据库自动本地/异地双备份/MYSQL增量备份
胸口碎大石_
博客等级 码龄17年 1154粉丝 82原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值