SSM框架之_Mybatis入门笔记,详解快速上手(八/完结):缓存篇

Springboot整合Cache缓存组件(Redis,Caffine,Jetcache,EhCache等) Springboot整合各种缓存组件,在日常开发中除了分布式缓存,更多的还是各种服务内部缓存的组件,这里把Springboot整合的各种缓存组件都列出来,作为一个总结 阅读详情

缓存


简介

存储在内存中的临时数据。

将用户经常查询的数据存入内存中,从而提高用户的查询速度,解决高并发系统的性能问题。

减少和数据库的交互次数,减少系统开销,提高系统效率。

适合使用缓存的数据:经常查询且长时间不修改的数据。


Mybatis缓存

默认定义的两个缓存:一级缓存和二级缓存

  • 默认开启一级缓存,SqSession级别的缓存,称为本地缓存。
  • 二级缓存需要手动开启,namespace级别的。
    • Mybatis提供了缓存接口Cache,可以通过实现Cache接口来自定义二级缓存。

一级缓存

与数据库同一会话期间的数据会被存放到本地缓存中。

在一次会话期间访问相同的数据,直接从缓存中拿,没必要去数据库中查询。

SqlSession级别的,一直开启,关闭不了。

SqlSession级别:在创建SqlSession与关闭SqlSession之间有效。每个SqlSession中的缓存相互独立。

缓存失效的四种情况:

  • 增删改操作
    • 增删改操作可能会对当前缓存的数据产生影响,确保数据的一致性。
  • 查询不同的数据
  • 查询不同的mapper.xml(一级缓存的级别是SqlSession级别)
  • 手动清理缓存
sqlSession.clearCache();

二级缓存

全局缓存。

基于namespace级别的,在一个mapper.xml中生效。

所有的数据都会先存到一级缓存中,当会话提交或关闭时(一级缓存失效),一级缓存的数据才会提交到二级缓存。

使用步骤:

  • 在mybatis核心配置文件中,开启二级缓存
<setting name="cacheEnabled" value="true"/>

默认就是开启的,显示的写出来,增加可读性。

  • mapper.xml中配置二级缓存
<cache
 eviction="FIFO"	缓存清除策略
 flushInterval="60000"	
 size="512"	
 readOnly="true"/>	
  • eviction(缓存的清除策略),默认使用LRU

    • LRU:移除最长时间不被使用的对象
    • FIFO:先进先出:按对象进入缓存的顺序移除
    • SOFT:软引用:基于垃圾回收器状态和软引用规则移除对象
    • WEAK:弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象
  • flushInterval(刷新间隔):每隔多久刷新,毫秒为单位的正整数,默认没有时间间隔,缓存仅仅在调用语句时刷新

  • size(缓存引用数目):最多缓存多少个引用,默认1024

  • readOnly(只读):可以被设置为 true 或 false。只读的缓存会给所有调用者返回缓存对象的相同实例。 因此这些对象不能被修改。这就提供了可观的性能提升。而可读写的缓存会(通过序列化)返回缓存对象的拷贝。 速度上会慢一些,但是更安全,因此默认值是 false。

    • 如果设置为false或者默认,要把实体类实现序列化接口,以便可以序列化。

缓存原理

image-20201103085648643


第三方缓存


Ehcache

Ehcache是一种广泛使用的java分布式缓存,用于通用缓存。

使用步骤:

  • 使用前需要导入jar包

    <!-- https://mvnrepository.com/artifact/org.mybatis.caches/mybatis-ehcache -->
    <dependency>
       <groupId>org.mybatis.caches</groupId>
       <artifactId>mybatis-ehcache</artifactId>
       <version>1.1.0</version>
    </dependency>
    
  • 在mapper.xml中使用对应缓存

    <mapper namespace = “org.acme.FooMapper” > 
       <cache type = “org.mybatis.caches.ehcache.EhcacheCache” /> 
    </mapper>
    
  • 编写配置文件,ehcache.xml,如果在加载时未找到/ehcache.xml资源或出现问题,则将使用默认配置。

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
        updateCheck="false">
   <!--
      diskStore:为缓存路径,ehcache分为内存和磁盘两级,此属性定义磁盘的缓存位置。参数解释如下:
      user.home – 用户主目录
      user.dir – 用户当前工作目录
      java.io.tmpdir – 默认临时文件路径
    -->
   <diskStore path="./tmpdir/Tmp_EhCache"/>
   
   <defaultCache
           eternal="false"
           maxElementsInMemory="10000"
           overflowToDisk="false"
           diskPersistent="false"
           timeToIdleSeconds="1800"
           timeToLiveSeconds="259200"
           memoryStoreEvictionPolicy="LRU"/>

   <cache
           name="cloud_user"
           eternal="false"
           maxElementsInMemory="5000"
           overflowToDisk="false"
           diskPersistent="false"
           timeToIdleSeconds="1800"
           timeToLiveSeconds="1800"
           memoryStoreEvictionPolicy="LRU"/>
   <!--
      defaultCache:默认缓存策略,当ehcache找不到定义的缓存时,则使用这个缓存策略。只能定义一个。
    -->
   <!--
     name:缓存名称。
     maxElementsInMemory:缓存最大数目
     maxElementsOnDisk:硬盘最大缓存个数。
     eternal:对象是否永久有效,一但设置了,timeout将不起作用。
     overflowToDisk:是否保存到磁盘,当系统宕机时
     timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
     timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。
     diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.
     diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
     diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。
     memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
     clearOnFlush:内存数量最大时是否清除。
     memoryStoreEvictionPolicy:可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数)。
     FIFO,first in first out,这个是大家最熟的,先进先出。
     LFU, Less Frequently Used,就是上面例子中使用的策略,直白一点就是讲一直以来最少被使用的。如上面所讲,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。
     LRU,Least Recently Used,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。
  -->
</ehcache>
67 thinkphp 缓存 <?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2018 http://thinkphp.cn All rig 阅读详情

相关推荐

日志监控系统 loki 配置文件详解

loki 配置文件详解

qq_42249813的博客 7412

巧用缓存加速Loki查询

缓存在当下已被广泛的应用到大型业务系统当中 合理的使用缓存可有效加快应用速度、提升应用的可扩展性和降低对后端数据的性能依赖。那么对于Loki来说,它支持哪些缓存以及缓存的作用范围呢?小白今天带大家简单过下Loki中关于缓存的应用 缓存类型 cache_config是Loki的缓存配置区块,当前Loki 1.6支持的缓存主要是in-memory、memcached和redis。这三种缓存类型各有自己的场景需求,如果你的Loki是AllinOne部署话,三选一都可以。如果你的Loki是分布式的架构,那么可以选.

2237

快速上手Mybatis

快速上手Mybatis一、Mybatis快速入门1.添加Mybatis坐标2.创建数据表3.编写实体类4.编写映射文件5.编写核心文件6.编写测试类二、Mybatis增删改查1.增2.删3.改三、Mybatis核心配置文件概述四、Mybatis相应API五、Mybatis的Dao层实现1.传统模式2.接口代理模式六、Mybatis映射文件深入1.动态sql-if2.动态sql-foreach3.sql代码抽取七、Mybatis核心配置文件深入1.typeHandlers2.plugins标签八、Mybati

热爱生活の李 1865

MyBatis缓存机制

Mybatis缓存 一级缓存(本地缓存) 与数据库统一次会话期间查询到的数据会放在本地缓存中。 以后如果需要获取相同的数据,直接从缓存中拿,没必要在去查询数据库。 执行两次查询操作,第一次发Sql,第二次查相同的数据将会直接从缓存中取数据,不会发sql,没必要再去查询数据库。 List<Course> list = findAllByName("哈哈"); List<Course> list1 = findAllByName("哈哈"); 一级缓存失效情况(没有使用到当前

Sharpen__的博客 453

3-SSM框架整合Redis做MyBatis二级缓存

什么是Redis? “Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。” 上面的这段对redis的描述来自百度词条。个人理解,redis就是一个键值对类型的数据库,暂时先理

敲代码的熙爷 2325

SSM框架学习-MyBatis篇 Cache缓存的使用

SSM框架学习-MyBatis篇 Cache缓存的使用 缓存: MyBatis 包含一个非常强大的查询缓存特性,比如用户登录后获取用户名,在登录的时候,已经查询过一次了,那么在后续 的相关操作的时候就不许要再次查询一次。这个时候就需要在缓存里面获取。 在MyBatis里面, 一级缓存是session会话级别,创建一个session就会开启一个会话; 二级缓存是会话工厂级别就是sqlse...

Xenoverse的博客 1108

SSM框架整合(2020基础版)

文章目录一、SSM框架简介1.1、基本概念1.2、环境准备1.3、SSM整合思路 一、SSM框架简介 1.1、基本概念 三层架构:   开发架构一般都是基于两种形式:一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器服务器。   在JavaEE开发中,几乎全都是基于B/S架构的开发。那么在B/S架构中,系统标准的三层架构包括:表现层、业务层、持久层。其中每一层都分工明确: ...

qq_25083447的博客 2万+

SSM框架系列之Mybatis 超详解

一、Mybatis 1.1 概念 MyBatis 是一个持久层框架,实现了对JDBC操作的封装,主要用于简化JDBC 操作中的一些相对繁琐的步骤,例如参数的映射,结果集的映射等。可以简单快速地连接和操作数据库,同时把操作数据库的结果集封装为Java对象返回 1.2 Mybatis优点 Mybatis的优点: (1)Mybatis对JDBC进行封装,在实际开发中不用花费时间和精力去处理对数据库连接等的处理; (2)Mybatis自身支持连接池,也可以配置其他的连接池,如c3p0、druid,提高了程序的效率;

JAVA此路漫漫的博客 1452

【SSM框架】Mybatis详解11(源码自取)之事务,缓存,ORM

带你复习事务,缓存,ORM

muzi_longren的博客 1588

SSM框架快速入门:MyBatis与JavaWeb整合教程

SSM框架是Spring、SpringMVC和MyBatis三大框架的组合简称,是目前主流的Java EE企业级应用开发框架。它以Spring为核心,整合了SpringMVC和MyBatis两个子框架,实现了表现层、业务层和持久层的解耦,使得系统各层的职责更加清晰,便于维护和扩展。ORM(Object-Relational Mapping)对象关系映射是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。

weixin_34640289的博客 1019

即梦 AI 全功能零基础详细教程(纯技术版)

即梦 AI 是一款多模态 AI 生成工具,主打文本生成视频、图片生成视频、角色一致性生成、音画同步等核心功能,依托自研 AI 视觉模型,实现从文本 / 图片 / 音频素材输入,到高清视频、图像内容输出的全流程 AI 创作,支持短视频、短剧、创意素材等多场景创作,具备操作门槛低、生成效率高、画面可控性强的技术特点。@为工具内置引用指令,作用是锁定指定素材 / 角色,强制 AI 按照该素材的核心特征生成内容,无额外付费、解锁要求,免费使用。剧本拆分:将短剧拆分为单镜头(15 秒内 / 个)

2501_92061023的博客 5865

SSM从入门到实战:2.1 MyBatis框架概述与环境搭建

本文介绍了MyBatis框架的基础知识,包括其概念、特点、核心组件以及与其他ORM框架的对比。文章详细讲解了MyBatis的工作流程、环境搭建方法,并提供了Maven依赖配置示例,帮助开发者快速入门MyBatis开发。通过本文,读者可以掌握MyBatis的基本使用,为后续深入学习打下基础。

2326

FANUC机器人KAREL编程实战:手把手教你用SOCKET指令连接外部设备(附完整.KL文件)

本文详细解析了FANUC机器人KAREL编程中SOCKET指令的应用,从开发环境配置到工业级通讯全流程,涵盖网络参数设置、模块化代码设计、错误处理及现场调试技巧。通过实战案例,帮助开发者掌握与外部设备稳定连接的关键技术,提升工业自动化系统的通讯可靠性。

weixin_30907935的博客 228

【SSM - MyBatis篇11】MyBatis缓存,spring整合MyBatis开启二级缓存,MyBatis开启二级缓存

文章目录MyBatis缓存机制Spring+MyBatis开启二级缓存1. 创建MyBatis核心配置文件,在settings中开启二级缓存2. 在spring的核心配置文件中,sqlSessionFactory的bean中,将mybatis的配置粘入3. 在mapper.xml映射文件中添加< cache >< /cache >开启二级缓存4. 在对应的javabean类实现序列化接口Serializable(仅仅是一个标识作用,不实现会报错) MyBatis缓存机制    一级缓

Java小皮孩 8839

整合Springboot+MybatisPlus+达梦数据库

整合Springboot+MybatisPlus+达梦数据库,以及一些坑

波波的博客 6679

Tushare使用教程

@Tushare简易教程 Python财经数据接口Tushare 最近在看量化分析有关的东西,然后第一步先了解的就是如何获取股票交易数据。发现大部分教程都是关于Tushare的,于是在这里简单的介绍一下Tushare的用法吧。目前tushare有免费版本和升级的需要付费的Pro版本。大多数教程写的都是免费版本,但是pro版本提供的数据更多,但是由于本人入坑还不深,暂时还是用的免费版本,但是每次使用都收到提示,“本接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/documen

kuangzhi9124的博客 2万+

[SSM框架]—Mybatis入门

Releases · mybatis/mybatis-3 (github.com)apache-maven:Maven – Download Apache MavenMySQL版本:MySQL 5.7MyBatis 版本: MyBatis 3.5.10设置好maven选项新建个maven项目,修改打包方式:jar ,pom.xml加上即可依赖 创建个数据库在resources中创建核心文件mysq

Sentiment的博客 3935

模型参考自适应控制(MRAC):让PID参数动态优化

本文深入解析模型参考自适应控制(MRAC)技术,它通过实时调整PID参数,使控制系统能自动适应系统特性变化和外部干扰。文章详细介绍了MRAC的工作原理、数学基础,并提供了用C语言实现的实战代码示例,帮助工程师解决传统PID控制在非线性、时变系统中参数整定繁琐的难题。

tequila的博客 903

SpringBoot整合Mybatis-Plus 实战之Mybatis-Plus的一级缓存、二级缓存详解

前言 现在的JAVA行业,貌似已经是SpringBoot + SpringCloud 的天下了,早期的SSH,SSM框架已经老去,与SpringBoot相结合的JPA框架虽然省去了很多的增删改查sql,但是比较笨拙,在面对一些复杂多变的逻辑时常常力不从心,而相对应的Mybatis由于其高度的灵活性受到广大码农的欢迎。之前整合过了springboot+mybatis,前几天看到一个面试的问一个问题,Mybatis的一级缓存,二级缓存。我想这个应该也是一个重点吧,所以今天决定来详细解读一下神秘的一二级缓存。

爱吃早餐的程序员 1万+

从CLIP到AnomalyCLIP:零样本异常检测的跨领域进化之路

本文探讨了从CLIP到AnomalyCLIP的技术演进,重点介绍了零样本异常检测在跨领域应用中的突破。AnomalyCLIP通过对象无关提示学习和多尺度特征提取,显著提升了工业质检、医疗影像等领域的检测精度,实现了高达96.4%的金属螺母划痕检测精度和85.7%的皮肤癌敏感度。这一技术为多模态模型在异常检测中的应用开辟了新路径。

r2s3t4的博客 111

CMake入门教程【基础篇】在Windows、Linux上安装CMake

CMake如何下载与安装

小鱼酱的博客 2727

SSM框架之MyBatis

文章目录MyBatis原生态jdbc程序中的问题mybatis框架原理mybatis架构案例log4j.properties的使用SqlMapConfig.xml的使用po类和映射文件的使用创建会话操作数据库mybatis开发dao的方法SqlSession使用范围原始dao开发方法mapper动态代理方法SqlMapConfig.xml的详解properties属性settings(全局参数配置...

MOKE_SPACE 1670

基于ESP32的室内空气质量检测系统开发

随着环境污染问题的日益严重,室内空气质量的监测变得越来越重要。室内空气质量的好坏直接影响到人们的健康,尤其是对于在封闭空间长时间待着的人群。为此,基于ESP32的室内空气质量检测系统应运而生。ESP32作为一款集成了Wi-Fi和蓝牙的高性能微控制器,为嵌入式开发提供了良好的平台,适用于构建各种智能硬件设备。本博客将详细介绍如何基于ESP32开发一个室内空气质量检测系统。系统可以实时监测空气中的温度、湿度、二氧化碳浓度、甲醛浓度等指标,并通过Wi-Fi将数据传输到云端或移动设备,方便用户随时查看空气质量情况。

2201_76125393的博客 832

SSM框架之Mybatis入门

SSM框架之Mybatis学习(一) 何为框架: ​ 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别 人搭好的舞台,你来做表演。而且,框架一般是成熟的...

毛钱儿的博客 397

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java 之 ssm框架入门

SSM框架作为Java Web开发的热门选择,其强大功能和易用性吸引了众多开发者。为了帮助你更深入地掌握SSM框架,我将从以下几个方面进行超详细解读,并提供一份循序渐进的学习规划。

weixin_64178283的博客 1607

深度学习工具包 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")

SSM框架之Mybatis

什么是框架?框架就是对技术的封装,将基础的技术进行封装,便于程序员使用,提高开发效率ssm框架是什么?ssm包括spring、springMvc、Mybatis,是后端企业级开发时会使用到的框架组合,在开发时经常会搭配在一起使用,共同构建企业级web应用程序ssm框架用在哪些方面?1.业务逻辑层:使用spring管理业务逻辑层的Bean,比如复杂的验证,逻辑代码。

@李青龙的博客 898

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 什么是集群?什么是分布式?集群与分布式的区别,集群和分布式的关系。
下一篇: 开闭原则,什么是开闭原则?
折纸之泪
博客等级 码龄7年 25粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值