SpringIoc代码示例与简述

SpringIoc示例代码 SpringIoc示例代码,SpringIoc示例代码,SpringIoc示例代码,SpringIoc示例代码 立即下载

一:简述

SpringIoc概念较为抽象,但其实不同之处就在于主动创建对象和被动创建对象的过程,拿饮品进行举例:要喝到果汁无疑就两种办法,自己做和买别人做的

1.主动创建对象

自己做果汁需要原料和工具,那么创建对象:JuiceMaker和Blender

package springioc.activemake;

/**
 * @Auther: 洺润Star
 * @Date: 2019/9/14 14:20
 * @Description: 搅拌机
 */
public class Blender {
    public String mix(String water,String fruit,String sugar){
        String juice = "这是一杯由液体:"+water+"\n水果:"+fruit+"\n糖量:"+sugar+"组成的果汁";
        return juice;
    }
}

package springioc.activemake;

/**
 * @Auther: 洺润Star
 * @Date: 2019/9/14 14:25
 * @Description: 果汁生成器
 */
public class JuiceMaker {
    private Blender blender = null;//搅拌机
    private String suger;
    private String water;
    private String fruit;

    public Blender getBlender() {
        return blender;
    }

    public void setBlender(Blender blender) {
        this.blender = blender;
    }

    public String getSuger() {
        return suger;
    }

    public void setSuger(String suger) {
        this.suger = suger;
    }

    public String getWater() {
        return water;
    }

    public void setWater(String water) {
        this.water = water;
    }

    public String getFruit() {
        return fruit;
    }

    public void setFruit(String fruit) {
        this.fruit = fruit;
    }

    /**
     * 果汁生成
     * @return
     */
    public String makeJuice(){
        blender = new Blender();
        return blender.mix(water,fruit,suger);
    }
}

其中果汁需要我们自己制作,可能会面对自己并不了解的情况,所以我们一般更喜欢去饮品店购买,换而言之就是被动创建我们的对象

2.被动创建对象

假设现已经有了果汁制造器(JuiceMaker2),而且我们还会得到一个描述(source)我们可以借此来得到需要的饮品,下面编写果汁制造器和果汁描述清单

package springioc.passivemake;

/**
 * @Auther: 洺润Star
 * @Date: 2019/9/14 14:49
 * @Description:
 */
public class Source {
    private String fruit ;
    private String sugar;
    private Integer size;

    public String getFruit() {
        return fruit;
    }

    public void setFruit(String fruit) {
        this.fruit = fruit;
    }

    public String getSugar() {
        return sugar;
    }

    public void setSugar(String sugar) {
        this.sugar = sugar;
    }

    public Integer getSize() {
        return size;
    }

    public void setSize(Integer size) {
        this.size = size;
    }
}

package springioc.passivemake;

/**
 * @Auther: 洺润Star
 * @Date: 2019/9/14 14:35
 * @Description:
 */
public class JuiceMaker2 {
    private String beverageShop = null;
    private Source source =null;

    /*
     * 果汁生成
     * @return
             */
    public String makeJuice(){
       return "这是一杯由"+beverageShop+"饮品店提供的"+source.getSize()+source.getFruit()+source.getSugar();
    }

    public String getBeverageShop() {
        return beverageShop;
    }

    public void setBeverageShop(String beverageShop) {
        this.beverageShop = beverageShop;
    }

    public Source getSource() {
        return source;
    }

    public void setSource(Source source) {
        this.source = source;
    }

    /*xml进行描述*/
    /*
    * <bean id ="source" class = "">
    *</bean>
    * */
}

我们无需关注果汁的制造过程,可以采用xml的方式进行配置即可

3.简单阐述

通过示例得到,控制反转是通过描述(例如XML或注解)并通过第三方去获取特定对象的方式,实现控制反转的方式是倚赖注入(DI)

二:springIoc容器

从上可知,SpringIoc容器的作用就是可以容纳我们开发的bean,我们也可以从中获取需要的Bean

1.springIoc容器的设计

基于的接口:BeanFactory和ApplicatiionContext两个接口
其中第二个接口是BeanFactory的子接口之一,而BeanFactory是SpringIoc所定义的最底层的接口,下面是springIoc容器接口的主要设计
在这里插入图片描述
其中BeanFactory的源码如下,本人加了些许注释

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.springframework.beans.factory;

import org.springframework.beans.BeansException;
import org.springframework.core.ResolvableType;
import org.springframework.lang.Nullable;

public interface BeanFactory {
    String FACTORY_BEAN_PREFIX = "&";

    Object getBean(String var1) throws BeansException;

    <T> T getBean(String var1, Class<T> var2) throws BeansException;

    Object getBean(String var1, Object... var2) throws BeansException;

    <T> T getBean(Class<T> var1) throws BeansException;

    <T> T getBean(Class<T> var1, Object... var2) throws BeansException;

    <T> ObjectProvider<T> getBeanProvider(Class<T> var1);

    <T> ObjectProvider<T> getBeanProvider(ResolvableType var1);
//以上的多个getbean方法用于获取配置给Spring Ioc的bean

    boolean containsBean(String var1);
    
	//判断是否为单例
    boolean isSingleton(String var1) throws NoSuchBeanDefinitionException;
    
    boolean isPrototype(String var1) throws NoSuchBeanDefinitionException;

    boolean isTypeMatch(String var1, ResolvableType var2) throws NoSuchBeanDefinitionException;

    boolean isTypeMatch(String var1, Class<?> var2) throws NoSuchBeanDefinitionException;

    @Nullable
    Class<?> getType(String var1) throws NoSuchBeanDefinitionException;
	
	//获取别名的方法
    String[] getAliases(String var1);
    
}

现通过ApplicationContext 的一个子类ClassPathXmlApplicationContext来举一个例子
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">
    <!--将对象的创建交给spring容器中,在配置文件里声明我要什么对象-->
    <bean class="springioc.passivemake.Source" id="source">
        <property name="fruit" value="橙汁"/>
        <property name="sugar" value="少糖"/>
        <property name="size" value="12"/>
    </bean>
    <bean class="springioc.passivemake.JuiceMaker2" id="juiceMaker2">
        <property name="beverageShop" value="贡茶"/>
        <property name="source" ref="source"/>
    </bean>
</beans>

进行测试

@Test
    public void m1(){
        ApplicationContext ctx  = new ClassPathXmlApplicationContext("applicationContext.xml");
        JuiceMaker2 juiceMaker2 = (JuiceMaker2) ctx.getBean("juiceMaker2");
        System.out.println(juiceMaker2.makeJuice());
        /*这是一杯由贡茶饮品店提供的12橙汁少糖*/
    }

以上代码首先定义了两个bean,然后使用 ClassPathXmlApplicationContext对其进行初始化,来获得资源对象

2.SpringIoc容器的初始化和倚赖注入

首先:Bean的初始化和倚赖注入在springIoc容器中的两大步骤,而在初始化之后,才会进行倚赖注入
bean的初始化分为以下三个步骤:

  • Resource定位
  • BeanDefinition(获取对应Pojo)
  • BeanDefinition注册

3.SpringBean的生命周期

Spring ioc容器的本质就是为了管理bean,而bean在容器中存在生命周期,在bean的销毁和创建的过程中我们可以自定义一些行为,这就需要了解Spring Bean的生命周期
在这里插入图片描述

springIOC实例 该资源包含了一个springIOC的简单实例代码,简单易懂。 立即下载

相关推荐

Spring之IOC示例

NULL 博文链接:https://huangminwen.iteye.com/blog/1041298

Spring框架--IOC详解+代码简单实例

如果自动装配的环境比较复杂,自动装配无法通过一个注解【@Autowired】完成的时候,可以使用Qualifier(value=“XX”)去配置@Autowired的使用。IoC(Inversion of Control),是一种设计思想,**DI(依赖注入)**是实现IoC得一种方法。在之前的业务中用户的需求可能会影响原来的代码,我们需要根据用户的需求修改原来的代码,比如在dao层中增加多个实现类。一般用于团队开发,它可以将多个配置文件,导入合并为一个,加入不同类需要不同的bean文件。......

A_Tu_daddy的博客 1636

Spring4 IOC 示例源码

Spring4 IOC 示例源码, 包含演示代码,以及所有涉及到的jar包。

Spring-IOC使用实例详解

实例12:引用外部属性文件 举例应用场景:对于数据库连接池,只需要创建一个连接池即可,从中获取连接对象。因此可以用IOC容器进行配置组件。 >数据库连接池的配置文件(dbconfig.properties) jdbc.username=root jdbc.password=root jdbc.jdbcUrl=jdbc:mysql://localhost:3306/custome...

Step By Step 1132

带隙基准源要点

要点: 负反馈>正反馈;电流镜匹配;双极型晶体管匹配;电阻匹配; 经过R0的电流????????????=????????????????−????????????????????????=∆????????????????????i_R0=(〖VBE〗_1-〖VBE〗_2)/R_0 =∆VBE/R_0 经过R1的电流????????????=i_R1= ????????????????????VBE/R_1 零温电流I = ∆????????????????????∆VBE/R_0 +

HI_WALLE的博客 2263

macOS 12.7.6部署Ollama+Dify避坑指南

本文介绍了在macOS 12.7.6系统下部署Ollama和Dify的详细步骤及避坑指南。主要内容包括:1)关闭系统完整性保护(SIP)以允许修改系统目录;2)安装特定版本的Docker(2.1.0.5)和docker-compose(v2.38.2)以避免兼容性问题;3)配置Ollama服务并下载nomic-embed-text和deepseek-r1:7b模型;4)针对macOS调整Dify的docker配置文件,包括延长超时时间、修改存储路径、增加资源限制等关键设置。文中提供了完整的命令操作步骤和配置

Hi20240217的博客 3100

Spring IOC实例

前言 IOC是利用 工厂模式 通过java反射机制实现自动注入,本文主要用普通java工程采用注解的方式进行演示 IOC其实就是创建一个ioc容器,把实例化对象的工作交给spring,利用反射机制自动注入,在执行程序执行之前首先实例化后期要被用到的对象(如service层),存放到ioc容器中,方便我们进行调用和管理。 目录: 一、dao层 GoodDao.java public interface GoodDao { public void sayHello(); } GoodDaoImpl.jav

Mr_Newbie的博客 865

STM32 ADC精准采集12V电池电压:从分压电路到软件校准全解析

本文详细解析了STM32 ADC精准采集12V电池电压的全过程,涵盖分压电路设计、电阻选型、ADC配置优化及软件校准方法。针对电池电压监测中的噪声、温漂等挑战,提供了硬件滤波与软件过采样等实战技巧,确保测量精度达到1%以内,满足嵌入式设备对电源管理的严苛要求。

tech5的博客 1012

Spring IOC 代码实例

1、IOC测试类 package com.ioc; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class IocTest { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigAp

春风化雨 644

VTK四视图联动避坑指南:解决vtkImagePlaneWidget窗宽窗位同步与切片序号更新的那些坑

本文详细解析了VTK四视图联动开发中的关键技术点与常见问题,包括切片位置同步、窗宽窗位同步的实现原理及回调机制设计。针对开发中遇到的回调事件不触发、渲染性能低下等问题,提供了实用的解决方案和优化技巧,帮助开发者高效构建医学影像和科学可视化应用。

weixin_42638178的博客 391

OpenCV-Python实战(3)——OpenCV中绘制图形与文本

OpenCV 是一个的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。本文介绍了 OpenCV 提供的与绘制图形和文本相关的函数。在图形方面,我们了解了如何绘制基本图形(直线、矩形和圆形等)以及高级图形(剪裁线、箭头、椭圆和多边形)。在文本方面,我们了解了如何绘制文本以及 OpenCV 库中的所有可用字体。

盼小辉丶的博客 2万+

Spring IoC详解

Spring 是一个开源的Java框架,它提供了丰富的功能和组件,用于简化企业级应用程序的开发。Spring 框架提供了依赖注入、面向切面编程、事务管理、数据访问等功能,是一个全面的企业应用开发解决方案。Spring MVC 是 Spring 框架中的一个模块,即Spring功能的一部分,用于构建 Web 应用程序的 MVC(Model-View-Controller)架构。Spring MVC 提供了基于注解的方式来定义控制器、处理请求和渲染视图,使得开发 Web 应用程序更加简单和灵活。

2303_78892316的博客 5008

【华为OD机试真题】458、堆内存申请 | 机试真题+思路参考+代码解析(CD卷)(C++、Java、Py)

题目描述 >有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为优先紧接着前一块已使用内存分配空间足够且最接近申请大小的空闲内存。

KJ.JK 1万+

SpringIOC注入的两种方式讲解以及代码示例

Ioc是Spring全家桶各个功能模块的基础,创建对象的容器。

weixin_52293201的博客 612

微信小程序中使用画布canvas实现动态心电图绘制

近期,接了个项目,三端(小程序、PC、公众号)同步开发,PC端没的问题,以前一直做的就是PC端,但是小程序和公众号之前没有做过,只能通过这个项目,边做边学了。人家都说小程序用原生的特别难,大部分都用uniapp开发,说是这个方便快捷,还能写app呢,因为我们的项目,需要用到蓝牙采集数据、画布画仪表盘以及心电图等,所以我们不太敢用uniapp开发,硬着头皮开始用原生开发。开发的过程中,也遇到过很多问题,但是好在经过我们团队的不懈努力,问题基本都解决了。下面我就来分享一下,在小程序中,如何通过canvas。

穆雄雄的博客 3651

多agv系统调度的MATLAB仿真

从起点出发,到货物点领取货物最后到卸货点,以完成任务总时间最短为目标进行单目标优化,约束条件为,任务不冲突,路径不冲突,要能实现路径规避 ,4-6台agv一起工作。左右货架间隔可通过1个agv,上下货架间隔可通过两个agv,通道为双向行驶通道。一台agv只能带一个货物,优化目标为完成任务总的时间最短,agv的速度是匀速,转弯也不会减速,取货物时间为固定值。上面的图里面货物看为正方形跟agv一样的长度大小,agv试做是跟货物一样大小的正方形agv的速度是每秒1个车身。多台agv一起完成...

FPGA/MATLAB学习教程/源码/项目合作开发 7563

手写SpringIOC 实现原理

什么是SpringIOC spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring来管理这些,实现解耦 SpringIOC原理 使用反射机制+XML技术 手写Spring专题 XML方式注入bean /** * 手写Spring专题 XML方式注入bean * * */ ...

qq_35524586的博客 467

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring学习笔记:Spring IoC容器简述

这片文章是对自己学习的总结,学习材料是Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC + Spring + Mybatis)和Redis实现。作者是杨开振,周吉文,梁华辉和谭茂华。 Spring IoC是一种容器,举个例子。以前没有奶茶点时,没有人卖果汁。如果我们想喝果汁,那么就应该做买水果,打开榨汁机,榨水果(上面三步看成是创建类的对象),得到一被果汁(得到类的对象)...

sinat_38393872的博客 895

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ruoyi 中Spring IOC、DI、Spring MVC 的使用代码示例

IoC(Inversion of Control):控制反转,即将控制权交给Spring容器,由Spring容器负责对象的创建和管理,将应用从对象的依赖关系中解耦。IoC的作用是使应用程序易于管理和维护。DI(Dependency Injection):依赖注入,是IoC的具体实现方式之一,通过注入对象依赖关系来实现对象的创建和管理。DI的作用是使对象之间的依赖关系更加松散,提高了代码的可维护性和可扩展性。

weixin_45009280的博客 430

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

SpringIOC(手写简单实现)

目录 概念 手写SpringIOC XML版本 手写SpringIOC 注解版本 概念 spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring来管理这些,实现解耦。 简单来说就是把每个bean与bean之间的关系交给了第三方容器进行管理,关于bean的初始化交给了Spring容器 传统应用程序 IOC容器 ...

5lovetutu的专栏 1025

利用反射手写有一个简单的SpringIOC框架

SpringIOC SpringIOC就是将创建对象的控制权交给Spring容器来进行管理。容器就是XML文件 实现思路: 1、使用dom4j来读取XML文件,获取document对象 2、通过id来获取到配置文件中class里面的值,使用反射技术进行实例化 3、property属性里面的name和value,我们可以使用反射给这些属性进行赋值 配置文件 &lt;?xml version="1.0...

qq_37630321的博客 271

SpringIOC代码测试

SpringIOC 代码测试 package com.tedu; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.tedu.pojo.User; import com.tedu.pojo.UserInfo; public class Springtest { //获取spring容器对象 ClassPathXmlApplicationCon

weixin_48334363的博客 332

SpringIoc原理分析(手把手教你自制springioc框架)

手写SpringIOC框架 什么是SpringIOC 什么是SpringIOC,就是把每一个bean(实体类)与bean(实体了)之间的关系交给第三方容器进行管理。 Xml配置: &amp;amp;amp;lt;beans&amp;amp;amp;gt; &amp;amp;amp;lt;bean id=&amp;amp;quot;user1&amp;amp;quot; class=&amp;amp;quot;com.itmayiedu.entity.Us

何小杰的博客 1108

模拟实现 Spring IOC(详解)

模拟实现 Spring IOC(详解)

SwaggerHB的博客 667

手写Spring Ioc 循环依赖底层源码剖析

循环依赖是指两个或多个 Bean 之间相互依赖,形成了一个环路。例如,Bean A 依赖于 Bean B,而 Bean B 又依赖于 Bean A,这就形成了一个循环依赖。然后,我们定义一个 AbstractBeanFactory 抽象类,实现 BeanFactory 接口的 getBean 方法,并提供一个 createBean 方法,用于创建 Bean。

dzend的专栏 972

java反射spring中应用_利用java反射原理手写SpringIOC 框架

前言Spring框架对于Java后端程序员来说再熟悉不过了,以前只知道它用的反射实现的,但了解之后才知道有很多巧妙的设计在里面。如果不看Spring的源码,你将会失去一次和大师学习的机会:它的代码规范,设计思想很值得学习。我们程序员大部分人都是野路子,不懂什么叫代码规范。写了一个月的代码,最后还得其他老司机花3天时间重构,相信大部分老司机都很头疼看新手的代码。使用Java反射,手写SpringIO...

weixin_34125314的博客 504
上一篇: JAVA设计模式示例代码
下一篇: Mybatis特点和核心组件简述
金心靖晨
博客等级 码龄9年 460粉丝 211原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值