SSH框架的整合之路

SSH框架整合实战 本文还有配套的精品资源,点击获取 简介:SSH整合将Struts2、Spring和Hibernate三大框架集成,构建MVC架构的Java Web应用。本课程设计项目提供完整的整合流程实战,涵盖环境配置、Struts2、Spring、Hibernate的配置和整合,以及MVC模式的代码编写。通过本项目,学生将掌握SSH框架的应用,提升Web开发技能,为企业级应用开发奠定基础... 阅读详情

SSH,也是现在常用的开发模式,SSH,就是Spring,Struts2,Hibernate

在整合的过程是这个样的:

应为我没有用maven创建,所以第一步就是将所需要的jar包导入

导入的jar包类别有:

1,导入Spring的jar包
2,数据库的jar包
3,alibaba的druid包
4,导入Struts2的jar包
5,导入Spring和Struts2整合的jar包
6,导入Hibernate包
7, 导入事物的包
现在开始我们的整合之路:

第一步:当然就是我们的web.xml文件的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <!--配置Spring-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <!--配置Struts2-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>
    </welcome-file-list>

</web-app>
其实在web.xml的配置文件其实就两类Spring和Struts2的配置

第二步:配置完web.xml之后,我们要创建一个Struts.xml的文件;

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
  
</struts>

第三步:配置完struts.xml之后,就是我们的Spring配置文件applicationContext.xml

为了以后管理的方便我们创建了三个application的文件

1)创建连接数据文件db.properties

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/jap
db.username=root
db.password=root

2 )创建我们的主文件applicationContext.xml

<?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:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--导入数据源-->
    <import resource="classpath:applicationHibernate.xml"/>
    <!--配置扫描包的位置-->
    <context:component-scan base-package="org.peter"/>
    <!--事务配置-->
    <bean class="org.springframework.orm.hibernate5.HibernateTransactionManager" id="transactionManager">
        <property name="dataSource" ref="dataSource"/>
        <!--通过SessionFactory开启事务-->
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*"/>
            <tx:method name="insert*"/>
            <tx:method name="delete*"/>
            <tx:method name="update*"/>
        </tx:attributes>
    </tx:advice>
    <aop:config>
        <aop:pointcut id="p1" expression="execution(* org.peter.service.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="p1"/>
    </aop:config>
    <!--由于Action是在每次请求时都创建一个新的,所以这里需要手动设置scope属性-->
    <bean class="org.peter.action.HelloAction" id="helloAction" scope="prototype"/>
</beans>

3 )创建一个管理数据源的applicationDataSource.xm

<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!--配置数据库-->
    <context:property-placeholder location="classpath:db.properties"/>

    <bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
        <property name="driverClassName" value="${db.driver}"/>
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
    </bean>
</beans>

4)创建一个管理hibernate的文件applicationHibernate.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--导入数据源-->
    <import resource="classpath:applicationDataSource.xml"/>
    <!--Hibernate核心配置文件
    1,数据库配置
    2,hibernate信息
    3,映射文件
    -->
    <bean class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" id="sessionFactory">
        <!--配置属数据库-->
        <property name="dataSource" ref="dataSource"/>
        <!--配置hibernate的信息-->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL57Dialect</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
        <!--配置映射文件-->
        <property name="mappingResources">
            <list>
                <value>org/peter/model/User.hbm.xml</value>
            </list>
        </property>
    </bean>
</beans>

完成以上操作,我们就完成了SSH的整合,稍后我会把代码连接写在博客底部。

在完成之后,为了测试我们的环境,做一个注册的额操作

1)首先创建一个action的包,我在包里创建了一个HelloController的类

package org.peter.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import org.peter.model.User;
import org.peter.service.UserService;

import javax.annotation.Resource;

/**
 * Created by Lenovo on 2017/8/2.
 */
public class HelloAction extends ActionSupport implements ModelDriven<User>{
    @Resource
    UserService userService;
    public String index(){
        return "index";
    }

    public String reg(){
        return "reg";
    }

    public void doReg(){
        userService.insert(user);
    }

    private User user =new User();
    @Override
    public User getModel() {
        return user;
    }
}

2)我们创建了一个Mode的包,里面创建user类和User.bhm.xml的映射文件

创建model

package org.peter.model;

/**
 * Created by sang on 2017/5/25.
 */
public class User {
    private String username;
    private String password;
    private String address;
    private Long id;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}
创建映射文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="org.peter.model.User" table="t_user">
        <id name="id" column="id">
            <generator class="native"/>
        </id>
        <property name="username"/>
        <property name="address"/>
        <property name="password"/>
    </class>
</hibernate-mapping>

3)在创建一个dao包,为了展现java的面向接口

创建接口

package org.peter.dao;

import org.peter.model.User;

/**
 * Created by Lenovo on 2017/8/2.
 */
public interface UserDao {
    void insert(User user);
}
创建实现类:

package org.peter.dao;

import org.hibernate.SessionFactory;
import org.peter.model.User;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;

/**
 * Created by Lenovo on 2017/8/2.
 */
@Repository
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

    /*初始化sessionFactory*/
    @Resource
    public void setMySessionFactory(SessionFactory sessionFactory){
        super.setSessionFactory(sessionFactory);
    }

    public void insert(User user) {
        getHibernateTemplate().save(user);
    }
}
4)创建sevice包里面也有两个文件

创建userService接口

package org.peter.service;

import org.peter.model.User;

/**
 * Created by Lenovo on 2017/8/2.
 */
public interface UserService {
    void insert(User user);
}
创建UserService的实现类

package org.peter.service;

import org.peter.dao.UserDao;
import org.peter.model.User;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * Created by Lenovo on 2017/8/2.
 */
@Service
public class UserServiceImpl implements UserService {
    @Resource
    UserDao userDao;
    @Override
    public void insert(User user) {
        userDao.insert(user);
    }
}
5)配置Struts2的配置文件

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="helloDemo" namespace="/" extends="struts-default">
        <action name="index" class="helloAction" method="index">
            <result name="index">index.jsp</result>
        </action>
        <action name="user_*" class="helloAction" method="{1}">
            <result name="reg">reg.jsp</result>
            <result name="doReg"></result>
        </action>
    </package>
</struts>

6)创建一个reg.jsp的注册页面,就完成一个小的测试

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
</head>
<body>
<form action="/user_doReg" method="post">
    <table border="1">
        <tr>
            <td>用户名:</td>
            <td><input type="text" name="username" id="username"></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><input type="password" name="password" id="password"></td>
        </tr>
        <tr>
            <td>住址:</td>
            <td><input type="text" name="address" id="address"></td>
        </tr>
        <tr>
            <td colspan="3"><input type="submit" value="注册"></td>
        </tr>
    </table>
</form>
</body>
</html>


SSH空白框架的代码:http://download.youkuaiyun.com/detail/strive_peter/9919062
SSH框架整合所需的jar包:http://download.youkuaiyun.com/detail/strive_peter/9919062



深入掌握SSH框架整合的完整教程 本文还有配套的精品资源,点击获取 简介:本文详细介绍了Java开发中三大流行框架——Struts、Spring和Hibernate的整合,称为"SSH"集成,通过"Model-View-Controller"设计模式,依赖注入和面向切面编程,以及对象关系映射技术,构建功能强大的企业级Web应用。教程包括框架概念、整合步骤以及在真实项目中如何应用,最终达到提升开发效率和应用质... 阅读详情

相关推荐

DPM|03Injection设置

摘要:本文介绍了CFD软件Fluent中粒子注入的设置方法。粒子注入是将离散颗粒引入连续相的过程,可用于模拟灰尘、燃料液滴等。设置流程包括:选择粒子类型(质量less、惰性等)、定义注入点属性(坐标、时间、粒径等)、处理多组分粒子、使用文本文件批量定义复杂注入。文中还详细说明了要考虑的湍流影响,包括随机追踪法模拟湍流扩散,以及粒子旋转建模等注意事项。最后介绍了多种注入类型和粒子类型,并强调在湍流系统中需设置足够的尝试次数以确保结果准确性。

qq_28258217的博客 2229

SSH框架整合

文章目录SSH框架整合思路配置文件pom.xmllog4j2.xmlspring-context.xmlstruts-base.xmlstruts-sy.xmlstruts.xmldb.propertiesweb.xmlcom.xy.baseBaseDaoBaseActioncom.xy.bookBookBook.hbm.xmlBaseDaoBookBizBookBizImplBookAction...

阳某的博客 744

yolov7模型部署流程

yolov7部署流程

算法的猫 1396

MyEclipse整合SSH框架

文章目录一. 以Spring为核心的整合思路二. 整合步骤1. 添加Spring核心容器2. 添加hibernate并持久化user表3. 加载、配置struts2框架 一. 以Spring为核心的整合思路 二. 整合步骤 注意:步骤在myeclipse最好不要颠倒,这样会方便开发,如果你能力很强,那随便你 1. 添加Spring核心容器 2. 添加hibernate并持久化user表 3. 加载、配置struts2框架 ...

巧克力布丁的博客 920

RT-Thread网络编程:基于STM32F407的TCP客户端实现(含完整代码解析)

本文详细介绍了在STM32F407平台上,基于RT-Thread操作系统和LWIP协议栈实现工业级可靠TCP客户端的完整过程。内容涵盖底层ETH驱动配置、Socket编程、连接保活与断线重连机制、数据收发协议设计以及资源管理,提供了可应用于实际项目的健壮代码框架与调试技巧。

weixin_29184371的博客 492

从源码编译CesiumForUnreal

从源码编译CesiumForUnreal插件

专注GIS开发 5644

SSH框架整合总结

SSH框架整合总结 第一步 导入jar包 第二步 搭建struts2环境 (1) 创建action ,创建struts.xml配置文件,配置action (2) 配置struts2的过滤器 第三步 搭建hibernate环境 (1) 创建实体类 (2...

zhupengqq的博客 221

1.4 你绝对不能错过的天气查询工具:MCP 标准化接入实战

本文介绍了如何构建一个符合MCP标准的天气查询服务。通过FastMCP框架集成OpenWeatherMap API,实现实时天气、天气预报和历史天气查询功能。文章详细展示了从环境准备、插件设计到控制器实现的完整流程,包括如何定义工具函数、配置路由和中间件。同时讲解了如何将MCP服务封装为LangChain工具并与DeepSeek等大模型集成,还涵盖了缓存、限流等高级特性。该示例演示了如何将任意API标准化为MCP服务,为Agent应用提供统一接口。

yonggeit的博客 3047

SSh框架的整合流程

一、SSH整合方式一:无障碍整合 ##1、SSH框架回顾 2、SSH整合 (1)、第一步:创建web项目,引入jar包 Struts2的jar包 struts-2.3.24\apps\struts2-blank\WEB-INF\lib*.jar Struts2中有一些包需要了解的: struts2-convention-plugin-2.3.24.jar----Struts2的注解开发包...

sun_shine_szc的博客 432

【麒麟系统】Rsync文件复制与同步工具

本文摘要: Rsync是一款Linux/Unix系统标配的高效文件同步工具,支持增量传输、SSH加密、断点续传等核心功能,相比SCP具有显著优势。文章详细解析了Rsync的五种标准语法格式和常用参数组合,重点介绍了本地同步、远程SSH同步(推送/拉取)的实操方法,并提供了密钥免密登录配置方案。针对企业运维场景,还讲解了文件过滤、镜像同步(--delete)、迁移同步(--remove-source-files)、空运行预校验(--dry-run)等高级功能,以及带宽限速等优化技巧,帮助用户安全高效地完成各类

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 998

一篇文章带你搞定数学建模里的主成分分析(05年水质问题示例应用讲解含代码)

文章目录一、题目分析二、原理公式三、MATLAB实现某一地区的主成分分析四、MATLAB 实现所有地区28个月的综合分析五、注意 一、题目分析 对长江近两年多的水质情况做出定量的综合评价,并分析各地区水质的污染状况 考虑到各指标之间可能存在一定的相关性,选用主成分分析法对长江流域主要城市水质检测报告进行分析,选取主成分,并把主成分得分按照方差贡献率加权求和,得到每个地区的污染综合评价指数,进而可以计算每个月长江流域的污染综合评价指数,对平均综合评价指数进行排序 二、原理公式 根据主成分分析的方法,分析长江沿

南淮北安的博客 2624

【SSH框架整合】

SSH框架整合1. SSH简介2.整合思路3.项目层级4.整合流程4.1 web.xml4.2 pom.xml4.3 db.properties(数据库连接)4.4 ehcache.xml4.5 log4j2.xml4.6 struts.xml4.7 struts-base.xml4.8 struts-book.xml4.9 spring-context.xml4.10 spring-hibernate.xml4.11 spring-book.xml4.12 base包4.12.1 biz4.12.2 da

Smootht的博客 397

Android 13 wificond讲解

Android 13 wificond讲解

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 2932

ssh框架的整合

SSH框架整合 Struts2、Spring、Hibernate框架整合的框架简称:SSH   三大框架的分工: Struts2 负责表示层(也叫View层或Web层)。 Spring 负责业务逻辑层(Service层)。 Hibernate 负责数据访问层(也叫持久层或Dao层)。   SSH框架最主要的本质是:“高内聚、低耦合”。   在SSH中使用Struts2是作为系统的...

qq_40676088的博客 333

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

蓝牙模块HM-10手册

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

SSH全注解框架整合

**SSH全注解框架整合** – 2019/5/12 上午 9:54:57 #第一步: 导入jar包 创建start2和spring配置文件 配置web.xml里的spring核心监听器,与start2的核心拦截器 <!-- struts2的配置 --> <filter> <filter-name&g...

qq_41268245的博客 246

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

ssh框架整合心得

对于ssh框架,最主要的是spring的掌握,是现在流行框架的核心,管理者我们这个系统。 对于ssh框架可以分为两个部分:1、spring和struts的整合,spring创建说trust需要的类,spring避免了struts每次调用action都要创建相应对象的弊端,每个web项目只会创建一次ServletContext,通过添加监听器,系统读取classpath路径的文件,加载spring...

malloc_Dev的博客 426

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

三大框架SSH整合原理

- SSH整合过程 注意:在整合框架,每一大步都要测试,这样容易排查问题,否则出了问题要从头开始 1.导包: 1)先将hibernate中的包全部导入进来 一共是11个 如下: jpa 注意 10 个包 + 1个驱动包 2).导入Struts2所有包 一共14个 导包过程中,如果发现是同一个包,版本不同一定要将其中之一删除,原则是删除版本低的, 因为...

super_weilin的博客 272

SSH框架的基本结构整合

SSH的整合时 第一:先Struts和Spring整合 第二:在Hibernate和Spring整合 第一步:先导入架包 pom.xml中(架包要统一,不然运行时会提示架包冲突。架包冲突不会影响功能) ...

qq_44424498的博客 711

ssh框架整合

一、SSH三大框架的概述   ssh为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。    集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层),以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。   struts2:       1、什么是struts2

m0_38096725的博客 640
上一篇: Shiro授权
下一篇: SpringMVC的文件上传
@夫子慧
博客等级 码龄9年 9粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值