Java面向对象—MVC分层

【JavaWeb】MVC分层开发 JavaWeb笔记 day04 2019/9/7 周六 学习内容:MVC分层开发 MVC分层开发 1.什么是MVC 一个网站的开发,不可能是一个或者仅几个人就能写出来的,网站一般采用分层开发的方式,不同的开发人员负责不同的层,可以同时写代码,程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上,使开发时间得到相当大的缩减。分离视图层和业务逻辑层... 阅读详情

MVC分层模式

MVC是软件开发的一种软件架构模式,把软件系统分为三部分:模型、视图、控制

1、MVC把一个应用的输入,处理,输出按照Model(模型),View(视图),Controller(控制)三层进行分离

(1)Model(模型):数据模型,提供要展示的数据,包含数据和行为,一般分离为数据对象和服务层

(2)View(视图):负责模型的展示,一般就是我们见到的用户界面

(3)Controller(控制):接收用户请求,传给模型处理,把模型处理后的数据给视图,起到控制调度的作用

2、MVC分层模式的优点:

  • (1)高内聚低耦合

  • (2)重用性高

  • (3)部署快

  • (4)可维护性高

  • (5)有利于软件工程化管理

3、MVC分层模式的文档结构:

(1)Model层:包含实体层、Dao层、Dao实现层、Service层、Service实现层、工具类层

分别位于不同的包中:

  • com.hrxy.entity

  • com.hrxy.dao

  • com.hrxy.dao.impl

  • com.hrxy.service

  • com.hrxy.service.impl

  • com.hrxy.util

  • com.hrxy.test

    entity:实体层,放置一个个实体,及其相应的set、get方法。如果想要对数据库进行一些操作(比如说读取)的话,就要先写entity层。

    dao:Dao是数据访问层,Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求。

    service:业务逻辑层。它处理逻辑上的业务,而不去考虑具体的实现。至于为什么service层要使用接口来定义有以下几点好处:在java中接口是多继承的,而类是单继承的,如果你需要一个类实现多个service,你用接口可以实现,用类定义service就没那么灵活。

    util:工具包

(2)View层:

(3)Controller层:

接下来我们以部门表为例进行讲解:

4、编写Entity层

package _15MVC.d01.cn.com.entity;
/**部门实体
 * @author LX
 * @create 2023-12-24 20:22
 */
public class Departement {
    private int dep_no;
    private String deo_name;
    private String dep_loc;
​
    public Departement() {
    }
​
    public Departement(int dep_no, String deo_name, String dep_loc) {
        this.dep_no = dep_no;
        this.deo_name = deo_name;
        this.dep_loc = dep_loc;
    }
​
    public int getDep_no() {
        return dep_no;
    }
​
    public void setDep_no(int dep_no) {
        this.dep_no = dep_no;
    }
​
    public String getDeo_name() {
        return deo_name;
    }
​
    public void setDeo_name(String deo_name) {
        this.deo_name = deo_name;
    }
​
    public String getDep_loc() {
        return dep_loc;
    }
​
    public void setDep_loc(String dep_loc) {
        this.dep_loc = dep_loc;
    }
}

5、编写Dao层接口和BaseDao

package _15MVC.d01.cn.com.dao;
import java.sql.*;
/**所有Dao层的父类:BaseDao
 * @author LX
 * @create 2023-12-24 20:26
 */
public class BaseDao {
    protected Connection con;
    protected PreparedStatement pst;
    protected ResultSet rs;
    //打开连接
    public void openCon() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con= DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/mysql-03",
                    "root","root");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
    //关闭资源
    public void closeAll(){
        try {
            if (rs!=null) {//防止空指针异常
                rs.close();
            }
            if (pst!=null) {
                pst.close();
            }
            if (con!=null) {
                con.close();
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}
package _15MVC.d01.cn.com.dao;
import _15MVC.d01.cn.com.entity.Departement;
import java.util.List;
/**部门表的Dao层接口,数据访问层
 * @author LX
 * @create 2023-12-24 20:42
 */
public interface DepartmentDao {
    public int insert(Departement dept) ;
    public int delete(Departement dept) ;
    public int update(Departement dept) ;
    public List<Departement> selectAll() ;
    public Departement selectById(Departement dept);
}

6、编写Daod实现层impl

package _15MVC.d01.cn.com.dao.impl;
import _15MVC.d01.cn.com.dao.BaseDao;
import _15MVC.d01.cn.com.dao.DepartmentDao;
import _15MVC.d01.cn.com.entity.Departement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
​
/**部门表Dao层接口的实现类:
 * 继承BaseDao,实现与数据库相连
 * 实现部门接口,实现方法,一个方法对应一个SQL语句
 * @author LX
 * @create 2023-12-24 20:44
 */
public class DepartmentDaoImpl extends BaseDao implements DepartmentDao {
    //增加的方法实现
    public int insert(Departement dept) {
        int i=-1;//代表出现异常
        openCon();
        String sql="insert into department values(?,?,?)";
        try {
            pst=con.prepareStatement(sql);
            pst.setInt(1,dept.getDep_no());
            pst.setString(2,dept.getDeo_name());
            pst.setString(3,dept.getDep_loc());
            i=pst.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {//无论如何都要关闭资源
            closeAll();
        }
        return i;
    }
    //删除的方法实现
    public int delete(Departement dept) {
        int i=-1;
        openCon();
        String sql="delete from department where dep_no=?";
        try {
            pst=con.prepareStatement(sql);
            pst.setInt(1,dept.getDep_no());
            i=pst.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            closeAll();
        }
        return i;
    }
    //修改的方法实现
    public int update(Departement dept) {
        int i=-1;
        openCon();
        String sql="update department set dep_name=? where dep_no=?";
        return 0;
    }
    //查询全部的方法实现
    public List<Departement> selectAll(){
        List<Departement> list=null;
        openCon();
        String sql="select * from department";
        try {
            pst=con.prepareStatement(sql);
            rs=pst.executeQuery();
            list=new ArrayList<Departement>();
            while (rs.next()){
                Departement dept=new Departement();
                dept.setDep_no(rs.getInt("dep_no"));
                dept.setDeo_name(rs.getString("dep_name"));
                dept.setDep_loc(rs.getString("dep_loc"));
                list.add(dept);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            closeAll();
        }
        return list;
    }
    //通过id查询的方法实现
    public Departement selectById(Departement dept) {
        Departement d=null;
        openCon();
        String sql="select * from department where dep_no=?";
        try {
            pst=con.prepareStatement(sql);
            pst.setInt(1,dept.getDep_no());
            rs=pst.executeQuery();
            while (rs.next()){//只返回一行数据也要接收在rs中进行判断
                d=new Departement();
                d.setDep_no(rs.getInt("dep_no"));
                d.setDeo_name(rs.getString("dep_name"));
                d.setDep_loc(rs.getString("dep_loc"));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            closeAll();
        }
        return d;
    }
}

7、编写service层接口

package _15MVC.d01.cn.com.service;
import _15MVC.d01.cn.com.entity.Departement;
import java.util.List;
/**部门业务层,逻辑业务层
 * @author LX
 * @create 2023-12-24 22:17
 */
public interface DepartmentService {
    public boolean add(Departement departement) ;//save
    public boolean remove(Departement departement);//drop
    public boolean modify(Departement departement);//alter
    public List<Departement> findAll();//
    public Departement findById(Departement departement);//
}

8、编写service接口的实现类impl层

package _15MVC.d01.cn.com.service.impl;
import _15MVC.d01.cn.com.dao.DepartmentDao;
import _15MVC.d01.cn.com.dao.impl.DepartmentDaoImpl;
import _15MVC.d01.cn.com.entity.Departement;
import _15MVC.d01.cn.com.service.DepartmentService;
import java.util.List;
/**service接口的实现类
 * @author LX
 * @create 2023-12-24 22:25
 */
public class DepartmentServiceImpl implements DepartmentService {
    //上调下,私有化
    private DepartmentDao departmentDao=new DepartmentDaoImpl();
    public boolean add(Departement departement)  {
        /*int i=departmentDao.insert(departement);
        if (i>0){
            return true;
        }else{
            return  false;
        }*/
        /*boolean f=departmentDao.insert(departement)>0?true:false;
        return f;*/
​
        return departmentDao.insert(departement)>0;
    }
​
    public boolean remove(Departement departement) {
        return departmentDao.delete(departement)>0;
    }
​
    public boolean modify(Departement departement) {
        return departmentDao.update(departement)>0;
    }
​
    public List<Departement> findAll() {
        return departmentDao.selectAll();
    }
​
    public Departement findById(Departement departement) {
        return departmentDao.selectById(departement);
    }
}

9、编写测试类

public class Test {
    public static void main(String[] args) {
        DepartmentService departmentService=new         DepartmentServiceImpl();
        Departement departement=null;
       /* System.out.println("-----------增加-----------");
        departement=new Departement(7,"开发部","222");
        if (departmentService.add(departement)) {
            System.out.println("添加成功!");
        }else {
            System.out.println("添加失败!");
        }*/
        /*System.out.println("-----------删除-----------");
        departement=new Departement(7,"开发部","222");
        if (departmentService.remove(departement)) {
            System.out.println("删除成功!");
        }else {
            System.out.println("删除失败!");
        }*/
        /*System.out.println("-----------修改-----------");
        departement=new Departement(6,"运维部","223");
        if (departmentService.modify(departement)) {
            System.out.println("添加成功!");
        }else {
            System.out.println("添加失败!");
        }*/
        System.out.println("-----------查询全部-----------");
        List<Departement> list=departmentService.findAll();
        for (Departement d:list) {                            System.out.println(d.getDep_no()+"\t"+d.getDeo_name()+"\t"+d.getDep_loc());
        }
        System.out.println("-----------通过id查询-----------");
        departement=new Departement(6,"运维部","223");
        departement=departmentService.findById(departement); System.out.println(departement.getDep_no()+"\t"+departement.getDeo_name()+"\t"+departement.getDep_loc());
    }
}
MVC与三层架构分层 本文主要讲解mvc架构和三层架构(表现层、业务逻辑层、数据访问层)之间的关系和使用; 阅读详情

相关推荐

面向对象课设 基于Java的小说搜索服务系统

面向对象的课程设计,是管理系统,小说相关的都可以看看,写的是最简单的,没多加东西,源码在网盘里

2403_89025999的博客 1195

MVC模型分层介绍

MVC是模型(model)-视图(view)-控制器(controller)的缩写,是软件设计的一个规范。 Model层属于数据层,用于做数据库的操作,主要是增删查改,在基础的mvc划分中,model层还需要处理数据验证。 View视图,视图提供模型的展示,管理模型如何显示给用户,它是应用程序的外观;(jsp/html) Controller控制器层是处理用户与服务器交互的,用户输入url,经过框架的启动,路由分配,最后先到的就是控制器层,控制器层负责了所有有关于用户交互的处理,以及数据逻辑的调用,在

qq_16657805的博客 5467

Java仿牛客网系统完整源码项目实战

简介:Java仿牛客系统源码是一个基于Java语言开发的在线编程训练与招聘平台实现,涵盖后端服务、前端界面和数据库设计,具备完整的Web应用架构。系统采用主流技术栈,包括MVC框架、ORM工具、RESTful API设计及权限控制机制,模拟真实企业级开发流程。通过本项目学习,开发者可深入掌握Java在实际项目中的应用,理解软件设计模式、前后端交互、安全认证与CI/CD集成等核心技术,全面提升全栈开发能力,为从事互联网开发岗位提供有力支撑。

weixin_42471823的博客 954

MVC层次划分简述

MVC层次划分简述 写在前面的一段话: 首先要知道MVC和三层架构之间有什么关系: MVC:【 Model(数据模型) - View(视图) - Controller(控制器) 】 三层架构:【 Presentation tier(展现层) - Application tier(应用层)+Date tier(数据访问层) 】 很多人都有一个误解,认为Spring MVC的M、V、C对...

呼卓宇的博客 7670

Rstudio安装org.Hs.eg.db

自己也是个小白,初次安装org.Hs.eg.db碰到好多问题,步骤总结如下: 第一,instal.packages()安装,不行则换 BiocManager::install() 第二,如BiocManager不成,说明不是最新版本,可按提示安装最新版 BiocManager::install(version = '3.13') #由于R版本较新,按照提示中的相关信息,安装最新版本的 第三,再次安装 BiocManager::install("org.Hs.eg.db") 第四,之后每个人.

ZH_DDong的博客 2万+

U盘文件变exe?3步教你用火绒+批处理脚本恢复隐藏文档(附注册表修复)

本文详细解析了U盘文件被病毒隐藏并伪装成exe文件的原理,并提供了三步解决方案:首先使用火绒安全软件进行全盘查杀清除病毒;其次通过批处理脚本批量恢复被隐藏的文件属性;最后修复被篡改的注册表设置,彻底解决文件无法显示的问题,帮助用户安全找回数据并加固系统防护。

weixin_28622215的博客 911

分层架构之MVC分层框架与三层架构

如果我们尝试把编程的复杂架构缩小到最容易理解的程度,那么编程开发其实只做3件事:”定义属性创建方法调用展示但因为同类所需的内容较多,如一系列的属性,一堆的方法实现,一组的接口封装,那么就需要合理的把这些内容分配到不同的层次中去实现,因此有了分层架构的设计。分层架构是将软件模块按照水平切分的方式分成多个层,一个系统由多层组成,每层由多个模块组成。同时,每层有自己独立的职责,多个层次协同提供完整的功能。比如,我们经常提到的MVC架构,就是一种非常典型非常基础的分层方式。

m0_74229735的博客 3241

从硅片到时钟:揭秘SiTime MEMS谐振子的精密制造之旅

本文深入解析了SiTime MEMS谐振子的精密制造工艺,从硅晶圆的提纯到DRIE深硅刻蚀,再到真空封装技术,揭示了其如何克服传统石英晶振的局限。通过对比测试数据,展示了MEMS谐振子在精度、可靠性和生产效率上的显著优势,特别是在5G基站和汽车电子等领域的应用潜力。

weixin_42522953的博客 401

java面向对象mvc分层

Entity层是数据模型的载体,通常与数据库表一一对应。每个Entity类代表一个数据实体,包含属性和对应的getter/setter方法。BaseDAO是数据访问的抽象基类。

switcheddff的博客 27

【分子指纹】化学分子指纹的概念和应用(非常重要)

分子指纹(Molecular fingerprints)可以低计算成本的方式表示大规模化学数据集中化合物的化学(结构、物理化学等)性质。它们在将化学数据集中的分子转换为适合于计算方法的一致输入格式(bit向量或数值)方面发挥着重要作用。在这篇综述中,

DJJ5210的博客 1万+

手把手解决GD32H759I-EVAL以太网通信三大坑:IP冲突、端口绑定失败、LWIP内存泄漏

本文针对GD32H759I-EVAL开发板在以太网通信调试中常见的三大难题——IP地址冲突、端口绑定失败和LWIP内存泄漏,提供了详细的实战排障指南。文章深入分析了问题根源,并给出了具体的网络配置、端口管理策略和内存泄漏检测方法,帮助开发者快速定位并解决嵌入式网络通信中的棘手问题,确保系统稳定运行。

weixin_29196315的博客 139

java计算器项目 wbs分解_实战!通过一个简单的java计算器说明分层思想!

分层思想概述代码若要达到:易维护、可复用、可扩展、够灵活、低耦合等特点;编程人员必须建立起分层思想。最简单的是将业务逻辑与人机交互界面分层。模型服务层与视图层。程序设计时,考虑需要哪几个接口、哪几个类,实现方法是什么,将常用代码封装成方法,需要时直接调用。java是面向对象语言,重点是对象,思考用java实现业务逻辑时,落脚点应该是对象,用对象来达成目的,而不是拘泥于一个个过程,这点区别C语言(面...

weixin_35959366的博客 375

ardupilot 方向余弦矩阵/旋转矩阵的理解

本节主要记录自己对ardupilot中用到的方向余弦矩阵/旋转矩阵的理解,欢迎批评指正,有些资料参考网上写的比较好的资料,免得查找资料麻烦。旋转矩阵的坐标理解:表示从旋转矩阵的下标的坐标系的坐标变换到上标表示的坐标系坐标下。旋转矩阵的坐标系理解:表示从旋转矩阵的上标的坐标系变换到下标表示的坐标系下。从旋转矩阵的投影更好理解,比如下面旋转矩阵的第一行是左边坐标系的第一维分量在右边坐标系的投影。

陌城烟雨 612

Java面试基础问题

**JAVA基础面试题** 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?   可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 2、Java有没有goto?   java中的保留字,现在没有在java中使用。 3、说说&和&&的区别。   &和&&都可以用作...

学而不思则罔 198

Cesium 实现动态加载气象数据:渲染成动态雨雪/云层效果(源码 + 原理)

本文介绍了在Cesium中实现动态天气效果的技术方案。核心思路是通过时间轴驱动多层数据动态切换,包括:1)时间维度处理,按序列加载不同气象图层;2)空间维度处理,将气象数据切分为瓦片;3)效果层实现,制作风场、降水等动态可视化效果。文章详细讲解了后端数据预处理(生成瓦片和风场JSON)、前端实现(双层雷达瓦片交替渐变、风场粒子系统)的具体方法,并提供了完整的代码示例。此外还探讨了雨雪粒子、云层效果等增强功能,以及工程化建议,为构建科学准确的动态天气可视化系统提供了实用解决方案。

专注AI大模型,软件混淆,授权 620

YOLOv5源码逐行超详细注释与解读(5)——配置文件yolov5s.yaml

全网最详细的YOLOv5源码解读之配置文件yaml。逐行注释,逐句讲解,一文带你了解yaml。小白必看!

路人贾的博客 1万+

国内开发者有关开源的激烈讨论(很有意义哟!)

  开个面馆,买房买车,不是梦.加盟电话;XXXXXXXXXXX 说:语言到是小是关键是一些思想积累和经验,比如程序结构/理念阿中(烈日当值,秋爽缺席) 说:的确是,我现在自己用vb写程序的时候就已经很自觉的使用分层和开发dao进行数据操作封装的方式了。完全是java做法  开个面馆,买房买车,不是梦.加盟电话;XXXXXXXXXXX 说:我觉得的语言是小事,关键是 体系架够/对象模型构件能力/程

caichunmao的专栏 1198

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java房屋租赁系统实战教程

本文详细讲解如何用Java实现一个房屋租赁管理系统,涵盖分层架构设计、工具类封装、房源信息增删改查功能,以及控制台交互实现。适合Java学习者、课程设计与项目实战参考,附完整代码与实现思路,帮助掌握面向对象编程与MVC模式应用。

1onetw的博客 283

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

面向对象程序设计(1)

2.类:类是现实世界中不存在的,把对象共有的属性和行为进行抽象得来的,是对对象的抽象,是一个模板。[访问权限修饰符]:public、private、protected、(default)2.数据类型:①基本数据类型(整形,浮点型,字符型,布尔型)②引用数据类型。1.对象:对象是现实世界中存在,有独有的属性(特征)和行为(动作)。江疏影 宋小宝。鱼香肉丝 盖 米饭 = 鱼香肉丝盖饭。抽象: 对象 ------> 类 过程。

2401_87769661的博客 604

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

MVC框架里的几种对象

VO BO PO DTO

鬓戈 553

java-房屋出租系统

按照韩顺平 零基础30天学会JAVA第361集的系统手敲的代码。

broshen的博客 276

MyBatis

MyBatis 是一款优秀的ORM框架,MVC分层开发中的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

weixin_70390396的博客 114

Java图书管理系统实战:从零搭建完整项目,巩固SE核心知识点

面向对象编程和数据库操作是Java开发的核心基础,其原理在于通过封装、继承和多态构建模块化代码,并结合JDBC实现数据持久化。掌握这些技术能有效提升代码的可维护性和可扩展性,是构建企业级应用的基石。在实践层面,图书管理系统作为经典练手项目,完美融合了集合框架、IO流和GUI/Swing等技术,帮助开发者将零散知识串联成完整应用。针对常见开发痛点,如环境变量配置和OutOfMemoryError内存溢出问题,项目提供了具体解决方案。通过分层架构(MVC/DAO模式)的设计与实现,开发者能深入理解业务逻辑与数据

weixin_34414650的博客 457

Java三大主流框架概述(转载)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34391854的博客 115

零基础学JAVA--Day21(房屋出租系统+韩顺平Utility类原码)

一个简单的房屋出租系统,实现的功能主要有以下几个方面。

Dxxyyyy的博客 813
上一篇: Java面向对象—JDBC查询
下一篇: Java面向对象—外键处理和日期处理
得闲饮茶呃
博客等级 码龄4年 303粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值