学习Spring笔记五

【零基础入门哈希签名架构,从Lamport到SPHINCS+】第二集 哈希签名树 Merkle Tree Authentication 在第一集中,我们一直忽略了一个问题。设想一下,假如有一个Hacker(黑客),在截获到Sender发送给Receiver的公钥之后,把这个公钥改成Hacker自己的公钥,然后再发给Receiver,那么Receiver就会误认为这是Sender的公钥。所以我们之前所说放方案,其安全性都需要建立在一个前提下:Receiver需要确认公钥确实是Sender发出的。 阅读详情


一

AOP基本概念

连接点 joinpoint,相对应一个线程上的一个方法(AOP的核心功能就是植入代码,在点和点之间加入代码)

切入点 pointcut  ,它是一个描述,描述连接点是怎样的连接,在连接点的前还是后切入,等等。切入点有个表达式,这样写:

切入点表达式:public String com.bjsxt.dao.*.add() 此表达式是用来描述一堆方法,是所有包下的add方法 

     public String com.bjsxt.dao.*.*();        此表达式是说描述所有包下的所有方法

通     知Advice    ,是在某个特定的连接点上执行的动作。包括before前置通知,after后置通知 和 around环绕通知

切     面Aspect    ,连接点、切入点、通知三者合一切为一个切面。

目标对象Target Object,是你“切”哪个对象,相当于委托类

植入Weaving,制作代理的过程



小总结

JoinPoint连接点:业务流程当中的方法调用(普通的方法调用)

PointCut 切入点:利用一个表达式,描述多个连接点,将来会把代码植入到一些连接点上面(在配置文件中配置要切哪些方法)

Advice 通知:增强功能代码(代理类)

Aspect 切面

Target Object目标对象:委托类

Weaving 植入:制作代理的过程(Spring AOP制作代理类有两种方式:proxy,cglib,当你的类有接口用proxy,没有接口用cglib)



AOP实例代码——————————————

1.导入jar包

commons-loggin.jar

spring.jar

aspectjrt.jar(是面向切面编程的实现包,非spring原生,第三方,spring在它的基础上进行了封装,让用户使用更加便利)

aspectjweaver.jar

cglib-nodep-2.1.3.jar

spring-sources.jar


2.配置用xml方式,把所有的bean放到xml中做切面

applicationcontext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
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-2.5.xsd
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context   

http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<!-- AOP功能是基于IOC容器的。AOP只能给IOC容器内部的对象做代理。AOP这把刀只能切IOC容器中的对象 -->

<!-- 这里是把容器中的对象配置到容器当中,如下-->

<bean id="userDao"  class="com.bjsxt.dao.UserDao"></bean>

<bean id="userAction" class="com.bjsxt.action.UserAction" >

<property name="userDao"  ref="userDao" ></property>

</bean>

<bean id="logAdvice"  class="com.bjsxt.advice.LogAdvice" ></bean>

<bean id="teacherDao"  class="com.bjsxt.dao.TeacherDao" ></bean> <!--假如我是从项目中途加入的,另的aop不知道,可以直接写我自己的teacherDao。在Test.java中也要相应做修改-->

<bean id="myClassDao"  class="com.bjsxt.dao.MyClassDaoImpl" ></bean>  <!--这个程序员依然不知道前面人员写了什么,就这样加bean,这样是可以的,此bean对应下面的MyClassDaoImpl.java-->

<!--这里aop的配置如果注释掉,那么增强的功能将不会显示,太强了!相当于一个开关!spring果然强大-->

<!--这里定义切入点,连接点和通知的,有了这三样,就开始定义切面-->

<aop:config>

<aop:pointcut  expression="execution(public * com.bjsxt.dao.*.*())"   id="logCut" /> <!--这里是切入点,连接点就是已有的方法-->

<aop:aspect  ref="logAdvice" >  <!--通知,我们要增强的行为,这对应的是一个类LogAdvice.java,上面的bean有定义,相当于代理类-->

<aop:before  method="aaa"  pointcut-ref="logCut" />

<aop:after  method="ccc"  pointcut-ref="logCut" />

</aop:aspect>

</aop:config>

<!--AOP增强功能到这-->

</beans>



3.LogAdvice.java

public class LogAdvice{

public void aaa(){

System.out.println("委托类方法执行之前执行!!!");

}

public void ccc(){

System.out.println("委托类方法执行之后!!!");

}

}



4.Test.java

   执行这个方法测试,这个test测试类就是客户类

   public class Test{

public static void main(String[ ]  args){

ApplicationContext ac = new ClassPathXmlApplicationContext(

new String[ ] {"applicationContext.xml"}

);

//测试代码一,测试一的时候把二、三注释掉

UserDao userDao = (UserDao) ac.getBean("userDao");

userDao.add();


//测试代码二,假定下面是你加入团队后新加的代码(练习时可注释掉)

TeacherDao teacherDao = (TeacherDao)  ac.getBean("teacherDao");

System.out.println(teacherDao.getClass().getName);

teacherDao.add();

//end


//测试代码三

MyClassDao myClassDao = (MyClassDao)  ac.getBean("myClassDao");

System.out.println(myClassDao.getClass().getName());

myClassDao.add();

myClassDao.del(); //如果执行结果只增强了add,而没有增强del方法,看看配置文件中aop的地方,com.bjsxt.dao.*.*()还是只*.add()

}

   }




5.dao包下面建立接口MyClassDao.java

public interface MyClassDao{

void add();

void del();

}



6.dao包下面写实现类MyClassDaoImpl.java

public class MyClassDaoImpl  implements MyClassDao{

public void add(){

System.out.println("MyClassDaoImpl.add()");

}

public void del(){

System.out.println("MyClassDaoImpl.del()");

}

}


———————示例end———————————————





二

通知的类型

1.前置通知  在某连接点之前执行的通知,但这个通知不能阻止连接点前的执行(除非它招聘一个异常)

2.返回后通知  在某连接点正常完成后执行的通知

3.抛出异常后通知  在方法抛出异常退出时执行的通知

4.后通知  当某连接点退出的时候执行的通知

5.环绕通知  包围一个连接点的通知,如方法调用。这是最强大的一种通知类型。环绕通知可以在方法调用前后完成自定义的行为。环绕通知相当于filter,前后都可以拦截,环      绕通知相当于前置通知+返回后通知,不同的需求,使用的通知不一样。


代码

LogAdvice.java

public class LogAdvice{

public void aaa(){

System.out.println("委托方法执行之前!!!");

}

public void ccc(){

System.out.println("委托方法执行之后!!!");

}

public Object around(ProceedingJoinPoint pjp){ //正在执行的JoinPoint连接点,意味着这个环绕通知环绕在正在执行的连接点(方法)外。pjp就是在拦截,或者是代理过程中,为通知,提供必要数据的抽象对象。有了数据后,就可以进行你想的操作了。pjp很重要。

System.out.println("委托类方法执行之前 !!!");

try{

//pjp.getArgs();  //获取客户类调用方法时,传递的参数

//pjp.getSignature().getName(); //获取客户类调用的方法的名字

//pjp.getTarget();    //获取委托类

System.out.println("委托类方法执行之前!!!");

Object result = pjp.proceed(); //和chain.doFilter()是一样的。

System.out.println("委托类方法执行之后!!!");

return result;

} catch(Throwable e) {

e.printStackTrace();

return null;

}

}

}


applicationContext.xml和上一个示例的一样,需要注意的重点如下

<aop:config>

<aop:pointcut  expression = "execution ( public * com.bjsxt.dao.*.*() )"  id="logCut" />

<aop:aspect  ref="logAdvice" >

<aop:around  method="around"  pointcut-ref="logCut" />

</aop:aspect>

</aop:config>


————————示例代码end——————————————



数据+算法=程序

代理模式,责任链模式,装饰器模式它们很相似,但是各自有侧重点

代理模式重在访问控制

责任链模式重在信息过滤

装饰器模式重在功能增强   在IO流中有体现,buffer


使用STM32制作简易数字时钟 连接LED数码管的电源和地线到STM32单片机的对应引脚,将数码管的A、B、C、D引脚连接到STM32单片机的I/O口引脚。通过编写和调试这个项目,可以熟悉STM32单片机的GPIO口和定时器的使用,以及数字显示的控制。步骤六:测试和调试 通过观察数码管的显示,可以验证时钟功能是否正常工作。步骤四:编写代码 在主程序中,我们将使用定时器中断来控制时钟的运行,并使用GPIO口控制LED数码管的显示。步骤五:编译和下载 编译代码并下载到STM32单片机中,通过调试器和串口监视器进行调试和查看输出结果。 阅读详情

相关推荐

SIMPLIS实战:从零构建理想BUCK电路,精准计算与POP稳态分析

本文详细介绍了如何使用SIMPLIS软件从零开始构建并仿真一个理想的BUCK降压电路。通过设定关键参数、计算理想器件值,并搭建仿真模型,文章重点演示了暂态仿真以观察电路上电过程,并深入讲解了高效的POP(周期性工作点)稳态分析技术,帮助工程师快速验证设计、评估稳态性能,从而加速电源设计迭代。

weixin_29165465的博客 391

Spring学习笔记五

Spring学习笔记五AOP是什么需求解决办法1:使用静态代理解决办法2:使用JDK动态代理AOP关键术语AOP的通知类型使用Spring AOP 解决上面的需求 AOP是什么 AOP(Aspect Oriented Programming),通常称为面向切面编程。它利用一种称为“横切” 的技术,破开了对象的内部,并将哪些影响了多个类的公共行为封装到了一个可重用模块,并将其命名为“Aspect”。...

人在囧途的博客 166

别再羡慕专业版!用这个批处理脚本,一键给Win11家庭版装上官方沙盒

本文详细介绍了如何通过批处理脚本在Windows 11家庭版上安装官方Windows沙盒(Windows Sandbox),无需复杂操作即可享受专业版功能。脚本自动激活系统内置组件,提供安全隔离的虚拟化环境,适用于软件测试、安全浏览等场景。

weixin_26757925的博客 490

spring学习笔记五

5.1、构造器注入 其实就是前面我们使用的创建bean对象的时候,我们不使用property标签进行初始化值,而是使用constructor-arg来进行初始化。 5.2、Set方式注入(重点) 依赖注入:set注入 依赖:bean对象的创建依赖于容器 注入:bean对象中的所有属性,由容器注入 【环境搭建】 复杂类型 package com.yu.pojo; public class Address { private String address;

yuyuyu_623的博客 238

Maxwell参数化建模

MAXWELL 2019 R3 参数化建模 参数化建模的优势 所谓参数化,就是在电机本体设计中涉及到的各类参数变量化,而每个变量之间又存在一定的制约关系,这样只需修改其中某个或者某些变量就可以做到对整个电机模型合理地改动。 参数化举例 以表贴式电机为例,先画电机定子,如上所示,依次进行后会弹出下面的选项框 上图就是描述电机尺寸的各类参数,接下来进行参数化。 回车ENTER,并给变量ds赋值。 赋值好后,回车ENTER 左下角properties里面就有我们新建立的变量ds了。 继续将剩余的参数

qq_41387280的博客 1万+

西门子博途系列学习笔记SCL(三)______自由口通讯(RS485轮询程序)

西门子博途V16系列学习笔记SCL(三)___自由口通讯轮询程序(RS485) 西门子博途系列学习笔记SCL(三)______自由口通讯(RS485轮询程序) 文章目录西门子博途V16系列学习笔记SCL(三)___自由口通讯轮询程序(RS485)前言一、FreePort自由口通讯是什么?二、使用步骤1.模块参数定义2.定义FB功能块参数:3.程序代码如下(每天写代码100行,学不会你来找我):总结 前言 很长时间都没有更新了,主要是最近在学习罗克韦尔的STUDIO5000PLC编程软件,怎么说,和博

weixin_42940283的博客 1万+

Spring 学习总结笔记【五、配置数据源】

使用Spring配置数据源,基于xml配置以及使用注解配置

qq_51938362的博客 474

离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制

在进行深度学习算法的环境部署时,由于生产服务器被彻底隔离外网,只能把conda中env文件夹中的虚拟环境文件夹从开发机直接拷到Windows 服务器,但在运行labelimg等工具时可能报错,因此用conda-pack来解决。

weixin_44115575的博客 1423

Spring学习笔记(五)

Spring的复习笔记

分享学习编程中的遇到的问题,总结平时的笔记 1824

地图可视化类型大全

地图可视化类型大全: 散点地图 网格地图 聚合地图 气泡地图 热力图 Choropleth地图/分级设色地图/分级区域地图/着色地图/分级统计地图(百度百科这样翻译)/等值域地图/分段设色地图 Cartogram地图/变形地图/示意地图 规则形状地图 /RecMap/Demers Cartogram/瓷砖网格地图/DorlingMap 流型图(Flow Map)\流线图\流向图\轨迹地图 复合地图

codeuniverse的博客 3532

1.5 RAG技术栈全景图:LangChain vs LlamaIndex深度对比,选错框架后悔3年,一文帮你选对

摘要:LangChain与LlamaIndex框架深度对比 本文全面对比了RAG领域两大主流框架LangChain和LlamaIndex。LangChain是通用AI应用框架,具有模块化设计和丰富生态;LlamaIndex专为RAG优化,提供开箱即用解决方案。功能对比显示,LangChain在文档加载和Agent支持方面更强,而LlamaIndex在检索策略、向量存储和多模态处理上表现更优。代码示例展示了二者实现RAG的不同方式:LangChain需要更多配置但灵活性高,LlamaIndex则提供更简洁的A

yonggeit的博客 3238

Spring学习笔记(五)

Spring学习笔记(五) 11、AOP 11.1、什么是AOP AOP(Aspect Oriented Progaramming) 意为:面向切面编程,通过预编译的方式和运行动态代理实现程序功能统一维护的一种技术。AOP是OOP(面向对象)的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 11.2、AOP在Spring中的作用 提

qq_53181343的博客 149

反爬虫:POST 请求参数中 Sign 的加密机制详解,并设计带 Sign 校验的网站

本文介绍了API请求中sign签名的生成原理及实现方法。sign是通过对请求参数加密生成的一串字符串,用于验证请求合法性,防止参数篡改、重放攻击和伪造请求。其生成步骤包括参数排序、拼接字符串、加盐和哈希加密。文章还演示了如何在FastAPI后端实现带sign验证的新闻网站,包括参数校验、时间戳验证和签名比对等安全措施,有效提升API安全性,增加爬虫逆向难度。

数据知道的博客 4073

Spring学习笔记(五)--Spring概述

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan 为什么使用Spring? Spring是一个开源的框架,是为了解决企业级应用开发复杂性而创建的。在没有使用Spring时,在一个对象调用另一个对象时,需要程序员自己编写代码new出被调用对象实例,调用方和被调用方有很强的耦合,被调用方的生命周期需要由调用方控制。对于该问题的初步解决...

至尊宝 2万+

ssm框架搭建

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

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【spring学习笔记 五】finishBeanFactoryInitialization()

文章目录preInstantiateSingletons()初始化所有单例对象FactoryBean的实例化普通Bean的实例化 (doGetBean)createBean()唤醒SmartInitializingSingleton实例的方法总结 前几篇我们聊完了Bean初始化的前置步骤,也就是后面各个节点的处理器已经准备完毕了,下面就等着人去触发它们了。 这一篇我们就一起来看看,各个节点都分别在...

唐芬奇的博客 561

STM32F407中文手册

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

spring mvc源码学习笔记之五

web.xml 内容如下 src/main/webapp/WEB-INF/app1-servlet.xml 内容如下 src/main/webapp/WEB-INF/app2-servlet.xml 内容如下 com.qs.demo.s1.PeopleV1Controller 内容如下 com.qs.demo.s2.PeopleV2Controller 内容如下 以上就是全部代码 写这个例子主要是想说一个知识点。也就是说我们平时用 spring mvc 的时候,都会配置一个 Di

杂货铺的小掌柜 1343

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

Spring Boot 学习笔记(五)

Spring Boot 学习笔记(五) Spring Boot与日志 1.日志框架 小张:开发一个大型的系统; 1.System.out.println("");将关键的额数据打印在控制台上;去掉?写在一个文件? 2.框架记录系统的一些运行时信息;日志框架;zhanglogging.jar; 3.高大上的几个工嗯呢该?异步模式?自动归档?xxx?zhanglogging-good.jar? 4.将...

DramaLifes的博客 288

spring学习笔记(五)

AOP概念 1.aop:面向切面(方面)编程,扩展功能不修改源代码实现 2.Aop采取横向抽取机制,取代了传统纵向继承体系重复性代码 3.aop底层使用动态代理实现 (1)第一种情况,有接口情况,使用动态代理创建接口实现类代理对象 (2)第二种情况,没有接口情况,使用动态代理创建类的子类代理对象 AOP原理     横向机制         AOP操作术

qq_30694789的博客 292

Spring 学习笔记(五)

Spring 事务操作

csdn_muxin的博客 322

Spring学习笔记(五)——Spring整合Mybatis

化繁为简,将mybatis整合到spring中,节省开发步骤

Czh的博客 327

spring 学习笔记五

singleton(默认值)  单例  在每个Spring IoC容器中一个bean定义只有一个对象实例(共享)。   默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如:   如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-

retacn_yue的专栏 380

【Spring学习笔记五】单例模式

1.单例模式(Spring默认机制) <bean id="user" class="com.pojo.User" scope="singleton"/> 2.原型模式:每次从容器中get的时候,都会产生一个新对象 <bean id="user" class="com.pojo.User scope="prototype"/> 3.其余的request、session、application 这些只能在web开发中使用到 ...

weixin_45378289的博客 120

【Spring学习笔记】—— (五)Spring中的事务控制

> - JavaEE 体系进行分层开发,事务处理位于业务层,Spring 提供了分层设计业务层的事务处理解决方 案。 > - spring 框架为我们提供了一组事务控制的接口。这组接口是在 `spring-tx-5.0.2.RELEASE.jar` 中。 > - spring 的事务控制都是基于 AOP 的,它既可以使用编程的方式实现,也可以使用配置的方式实现。学习的重点是使用配置的方式实现

小牛肉的博客 711

Spring学习笔记(五)基于注解的IOC

# Spring学习笔记(五)基于注解的IOC ## 五、基于注解的IOC实例 基于xml实例,代码重复太多,就不贴出来了,主要是对于注解的应用,建议也手动敲一遍代码,对记忆和理解的加深有帮助。 1. Spring 中的新注解: - @Configuration - 作用:指定当前类是一个配置类 - 细节:当配置类作为 AnnotationConfig...

weixin_43564549的博客 186
上一篇: 学习SpringMVC笔记(全)
下一篇: 学习Spring笔记六
CodingAlarm
博客等级 码龄12年 28粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值