《企业应用架构模式》学习笔记(一)

HFSS同轴线仿真全流程:从建模到动态场分析 在电磁仿真与微波工程中,传输线理论是理解信号完整性和阻抗匹配的基础,而特性阻抗、S参数与场分布则是验证设计正确性的核心指标。对于初学者而言,从结构最简单的同轴线入手,通过仿真软件完整复现其电磁特性,能够快速建立从理论公式到工程实践的认知闭环。本文以同轴线为载体,系统讲解三维建模、材料参数设定、波端口激励、边界条件配置以及求解设置等关键环节,并结合S11、S21与特性阻抗曲线进行结果验证,进一步通过动态场图观察电磁波传播过程。该方法适用于射频馈线设计、连接器优化及天线馈电网络等工程场景,既能为后续微带线、滤波 阅读详情

写在前面

         程序员的迷茫分两种,一种是纯技术迷茫,一种是设计上的迷茫。只是个人这样区分,关于第一种就只能看各种纯技术的书籍,以解决技术问题为目的,比如《Effective Java》,d第二种就是碰到一个独立项目的时候如何来对项目进行架构,毕竟不管项目大小,都需要架构,而在这些不论大小的项目的架构中是能学会很多知识的,所以如果这时找不到方向,也就迷茫了。其实纯技术的迷茫还好解决,毕竟随着经手的项目越来越多,遇到的问题也会越来越多,然后问问“谷老师”、“度娘”之类的基本都能逐渐不迷茫,但第二种不一定,最好是能够借助于一些前辈的总结来收获自己的知识,这种方式会比较好,成长也会更快。废话多了,这个系列将会记录自己在学习《企业应用架构模式》一书中的体会,也作为自己的鞭策。

本次包括第一章和第二章内容。

1、  关于分层

关于分层的概念和优点就不多说了,分层的难点在于不明确要分哪些层,以及这些层各自的职责是什么?很多开发者即便在应用中使用了分层的设计,但几个层次之间还是有逻辑的交叉,这种分层反而加重的开发和维护的负担,所以一旦采用了分层的设计方法,就要明确每一层的职责。一个简单的方式就是替换思考,假设将某一层使用另外的方式替换掉,系统能不能和之前一样正常运行,比如系统持久层的实现,为了满足不同数据库之间的无缝切换,就需要对不同的数据库分别实现,但是持久层对于上层的领域层是封闭的,这也说明层与层之间的隔离性:上层对下层的具体实现不做过多了解,只需要知道如何调用下层公开的接口即可。

         分层应用有一个准则:下层尽量不要对上层产生依赖。一旦出现这种情况,系统架构将会显得很脆弱,比如修改上层代码有可能导致下层的变化,这种变化不应该是逆向的。

当讨论分层的时候,常常不易区分layer和tier的区别,在人们的理解中,tier通常意味着物理上的分离,比如客户/服务器通常被称为”two-tier system”,而作者讨论的是逻辑上的分层—layer。

2、  三个基本层次及各自的职责

三个基本层次包括:

         表现层:提供服务、显示信息等职责。处理用户和系统的交互。主要的职责就是向用户显示信息并将从用户那里获取的信息解释成为领域层或数据源层上的各种动作。

         数据源层:与数据库、消息系统或其他软件应用进行通信。主要关注与其他系统的交互,而这些系统则代表应用完成相应的任务。但现实中大部分都是进行数据持久化。

领域层:业务逻辑所在地,也是系统的真正核心。主要职责是根据用户输入的数据或已有的数据进行逻辑运算,对从表现层输入的数据进行验证,以及根据从表现层传来的命令来确定要调用哪些数据源逻辑。

一般来讲,领域层应该对表现层隐藏数据源层的所有服务,但在很多简单的系统中也存在表现层直接访问数据源层,然后返回数据到表现层,而领域层则只是对数据返回到表现层之前进行必要的处理,这种结构运行的也很良好,但不推荐这种方式。

作者对本书的层次讨论范围做了限定,仅仅只在经典的三个基本层次上进行讨论,而其他的分层基本上都是对经典三层的扩充或修改,比如在领域层添加一层很薄的服务层,一般我们称之为外观层。

         如何区分哪些是“领域逻辑”,哪些是“非领域逻辑”呢?确定一个逻辑(方法)是否放到领域层或表现层有一种简单的方法,那就是,再增加一个表现层,如果这个方法需要重复编写,那么这个逻辑就应该是领域层的逻辑。比如,如果判断经理和职员来显示某个功能的逻辑,对系统来说就应该传入用户的id,传出true或者false,界面显示只依赖于true和false。

3、  三种组织领域逻辑的方式

领域逻辑的组织分为三种:事务脚本、领域模型、表模块。

事务脚本:大多数企业的应用都可以被看作是一系列的事务,一个事务可能将某种信息看作是以特定方式组织的,然后另一事务会改变他。事务逻辑脚本将所有的事务逻辑组织成单个过程,在过程中直接调用数据库,或者用一个简单的数据封装器。每个事务都由自己的事务脚本,尽管事务间的公共子任务可以被重构为方法。许多事务脚本的设计中都有直接操作数据库的操作,有些把SQL语句直接放到数据库中。看了这段话,我才算认清楚我以前的代码好多都是这种低效的事务脚本。

         事务脚本也有如下优点:

                   大多数开发者都能理解的过程模型;

                   事务控制方便,脚本开始就是事务的开始,脚本结束就是事务的结束。

领域模型:当业务逻辑比较复杂的时候,就需要引入领域模型来解决问题了,在领域模型中,不再是由一个过程来控制用户某个动作的逻辑,而是由领域模型中的各个对象来承担相应职责部分的逻辑。而这就是OOD的方法。

         表模块:表模块是用一个类对应数据库中一个表来组织领域逻辑,而且使用单一的类来包含对数据进行的各种操作。它与领域逻辑的主要区别在于,如果有许多订单,领域模型使用多个类来处理订单而表模块使用单一的类来处理所有订单。此处的表模块并不是必须针对每一个数据库物理表创建一个表模块,其更多的是针对一个虚拟表结构(如物理视图或者一个查询语句)创建模块。

表模块的入口:表模块封装的是一个记录集,那么形成记录集的入口通常有两个,一个是在构造函数或者初始化入口中使用查询语句,另一种就是在入口中传递一个表数据(如recordset),这样的优点是封装了数据的生成,这个表模块可以面对多个数据源,并且你可以不用数据库就测试领域逻辑。缺点是多增加了一个用来生成数据的类。

4、  是否设立服务层

在使用领域模型和表模块的组织结构是最好是能在其上添加一层很薄的服务层,该服务层中没有业务逻辑,表现层逻辑和领域层交互完全通过该服务层进行,就像应用程序的API一样。

为了将事务控制和安全检查等非业务逻辑同领域层进行解耦,服务层也是最好的地方,在实际开发中,我们可以使用AOP的方式对这些事务控制和安全检查进行抽象,然后植入到相应的服务层API上达到解耦的目的。

业务逻辑的分类:服务层是一种组织业务逻辑的模式,通常将业务逻辑分为两类,应用逻辑和领域逻辑,领域逻辑解决领域问题,应用逻辑与应用的职责相关,通常解决工作流、应用集成的问题。如果应用逻辑与领域逻辑分离,则能使领域逻辑更好的复用。

有两种方式来应用服务层,其一是OOD中推荐的薄层服务层,也就是我们说的服务层贫血(相应的是充血型领域模型),这种服务层只负责将表现层的数据传输到相应的领域对象中;其二是将所有的业务逻辑全部放到服务层中,而下层的领域对象中只是简单的数据载体,这种被成为服务层充血模型,这是两种极端的应用场景。

作者建议:如果确实要设置服务层,建议使用最小化服务层。


         以上是看了书的前两章,写点笔记,也好做个记录。涉及到的理论比较多,但有开发经验的基本上都能看懂,我觉得是这样,呵呵。在看书的基础上也看了看别人的笔记,有些总结的蛮经典的,至少我觉得比我总结得好得多。欢迎批评指正。以下有两个链接可以参考:

后知后觉--企业应用架构模式:http://www.uml.org.cn/zjjs/201001064.asp

数据源架构模式之行数据入口:http://www.phppan.com/2010/09/enterprise-application-architecture-2-rowdatagateway/

表模块模式:http://www.blogjava.net/wfeng007/archive/2007/12/07/35021.html

基于STM32的工业设备状态监测系统 工业设备的预测性维护需求日益增长,本文设计了一款基于STM32的智能监测终端,可实时采集设备振动、温度、电流等关键参数,通过边缘计算分析设备健康状态,实现故障预警与能效优化。系统支持4G/LoRa远程通信,适用于工厂、发电站等工业场景。本系统实现了工业设备关键参数的实时监测,故障识别准确率达到92%。:STM32F429(带FPU,支持浮点运算)多参数联合判据(振动+温度+电流突变检测)ACS712电流检测模块(0-30A)FFT频谱分析(识别轴承故障特征频率)故障代码生成(支持16种预设故障类型) 阅读详情

相关推荐

MT6816角度传感器SPI通信避坑指南:从数据手册到稳定读取的3个关键步骤

本文详细解析了MT6816角度传感器SPI通信中的常见问题与解决方案,包括寄存器地址计算、SPI时序配置和数据校验等关键步骤。通过实测波形和代码示例,帮助工程师避开数据手册中的隐藏陷阱,实现稳定可靠的角度数据读取,特别适用于高精度电机控制场景。

weixin_42520573的博客 517

《企业应用架构模式》读书笔记

读后感 从《企业应用架构模式》中能学到企业应用的整体模式知识,例如:业务组织模式、并发控制、分布模式、数据源模式、分层模式、行为模式、结构模式等。可以从基础原理的模式了解整个企业应用基础,并为以后的架构设计提供思考的方向。 从本书中的分层思想结合以往的架构经验,把公司的商品中心系统分为3层设计:前台、中台、后台,并从中规划5个阶段执行。并从书中启迪,并设计出解决企业应用中很多问题...

weixin_30249203的博客 347

超详细 | 贝叶斯网络基础——有图有真相

Hello,大家好,我是starz。这是本系列的第二篇《概率基础Ⅱ》,虽说是概率基础,但作为过渡,它开始以图为载体 这节的主要内容有: 贝叶斯网络 三种结构 D-划分 贝叶斯球 马尔科夫毯 应用例子 总结 让我们开始吧 :3 贝叶斯网络 概率图模型可笼统分为两类,一是基于无向图的马尔科夫网络: 二是基于有向图的贝叶斯...

qq_41603411的博客 2万+

《企业应用架构模式》笔记

表模块和数据集一起工作->先查询出一个,再根据数据集生成,然后调用。这看起来很想service查询出一个对象,但调用的是对象的方法,这看起来像是充血模型,如果getter和setter也算,那贫血模型才算,不然我们是调用service的方法。当然,service是把充血模型拆出来了。说到底这个时候查询的方法反而不像是在整个领域模型中了那如果我们灵活些,把出了查询的mapper以外的部分当作,额,,是不是就是表模块这种组织形式了呢?表模块是事务脚本和领域模型的一个中间地带。

阿巴阿巴 1150

STM32 RTC_WaitForSynchro()死循环问题分析与LSI时钟优化实践

本文深入分析了STM32使用LSI时钟源时,调用RTC_WaitForSynchro()函数陷入死循环的根本原因。问题核心在于RTC时钟域未正确使能,导致硬件同步标志RSF无法置位。文章提供了通过显式调用RCC_RTCCLKCmd(ENABLE)函数启用RTC时钟总开关的解决方案,并分享了编写健壮RTC/BKP初始化代码、增加超时机制等最佳实践,确保系统稳定运行。

weixin_29185493的博客 511

【优化模型】求解混合整数线性规划 MILP 问题

混合整数线性规划(Mixed Integer Linear Programming,MILP)是一类优化问题,其中目标函数和约束条件均为线性,并且包含整数变量。MILP 在实际应用中具有广泛的应用,可以解决很多实际问题,如生产调度、网络设计、资源分配等。f — 系数向量。系数向量,指定为实数向量或实数数组。intcon — 整数约束组成的向量。整数约束组成的向量,指定为正整数向量。intcon 中的值指示决策变量 x 中应取整数值的分量。A — 线性不等式约束。线性不等式约束,指定为实矩阵。

Fanjufei的博客 2501

企业应用架构模式学习笔记

第一部分 表述 1分层1.1    三个基本层次三层架构: 表现层:表现逻辑处理用户与软件间的交互。主要职责是:ü         向用户显示信息ü         把从用户那里获得的信息解释成领域层或数据源层上的各种动作。数据源层:数据源逻辑主要关注与其他系统的交互,这些系统将代表应邀完成相关的任务。主要的数据源逻辑就是数据库,它的主要职责是存储持久数据。领域层:领域逻辑(业务逻辑),它就是应用

carpetknight的专栏 2001

【AUTOSAR-E2E】-2.2-配置E2E:基于E2EPW配置一个TX发送的Signal Group(使用E2E Profile 2)

《共13页精讲》:此法也适用于E2E Profile 4/5/6/7/11/22 目录 1 检查CAN Matrix Arxml/DBC是否满足E2E需求 2 在DaVinci Developer中为Port添加E2E保护 3 在DaVinci Configurator settings设置 4 如何使用应用层的E2E保护 5 结尾 <--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> &lt.

「汽车电子助手」的博客 4219

《企业应用架构模式中文版》学习笔记

 本书先介绍了一些企业应用开发的基础知识,比如分层架构、WEB表现、业务逻辑、数据库映射、并发、会话、分布策略等等。通过使用场景、解决方案、UML等手段详细介绍了设计模式(包括一些常用的设计模式GOF23和本书上新创的设计模式)。了解书中这些模式是干什么的、它们解决什么问题、它们是如何解决问题的。这样,如果你碰到类似的问题,就可以从书中找到相应的模式。可以为你节约成本、缩短项目周期时间、避免风

深之JohnChen的专栏 1万+

024、反激变换器的短路保护设计

本文详细探讨了反激变换器短路保护的设计要点与实践经验。作者通过实际案例分析了短路时反激拓扑的电流特性,指出初级峰值电流限制是最基础的保护手段,但需配合打嗝模式使用。文章重点剖析了打嗝模式设计的三个关键陷阱:频率设定、退出条件和软启动衔接。同时强调次级侧辅助保护、变压器参数优化、环路响应协调的重要性,并比较了自恢复与锁死方案的适用场景。最后提出实测验证的四个关键点和设计经验:不盲信芯片手册、保护电路独立设计、充分留有余量、进行破坏性测试。全文以工程实践为导向,为反激电源的可靠短路保护提供了系统性解决方案。

Jack010169的博客 244

QT实现警报应用程序

QT实现警报应用程序

希望我的博客,能帮上你解决学习中工作中所遇到的问题 2043

读-Martin Fowler-企业应用架构模式

分层 组织领域逻辑 映射到关系数据库 表现层 并发会话状态分布式 并发 会话状态 分布策略 领域逻辑模式 事务脚本 领域模型 表模块模型 服务层 数据源架构模式 表数据入口 行数据入口 活动记录 数据映射器 ormapping 基本模式 入口 映射器 层超类型 分离接口 注册表 值对象货币 特殊情况 插件 服务桩 记录集 现在 大师级人物Martin Fowler的书,04年出版,现在看来有点老

熊猫猫 4870

YOLOv10改进策略【Neck】| arXiv 2025 分层多头注意力HMHA 子空间拆分提多样 + 通道重排降冗余,强化目标检测精度

HMHA(Hierarchical Multi-Head Attention,分层多头注意力)旨在解决传统多头注意力(MHA)在图像恢复任务中的核心缺陷——特征冗余。传统MHA将通道均匀拆分给各个头,导致不同头学习的子空间信息相似,进而出现多头关注同一区域、忽略退化区域修复的问题,限制了模型的特征表达能力。HMHA通过“分层子空间拆分+通道重排序”策略,让每个头学习差异化、互补的上下文特征,从根源上缓解冗余,提升图像恢复任务中对复杂退化场景的特征捕捉能力。

Limiiiing的博客 105

企业应用架构学习笔记

最近因为要学习领域驱动设计,在看到《领域驱动设计:软件核心复杂性应对之道》时,里面很多地方都提到了《企业应用架构模式》,企业应用架构这本书是由非常著名的Martin Fowler 写的,Martin Fowler 除了总结过企业架构的设计模式之外,还写了非常多的其它软件工程相关的文章,比如曾总结过IOC,写过分析模式,写过代码重构模式,具体可参看他的个人网站http://www.martinfow

Eye_cng的专栏 952

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

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

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

【DDD】学习笔记-表达领域设计模型

领域模型分析的哲学依据

xqdd的专栏 2152

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

企业应用架构模式中文版 学习笔记

企业应用架构模式中文版 学习笔记

hggugfn的博客 652

蓝牙模块HM-10手册

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

《企业应用架构模式》学习笔记

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font

小徐的专栏 709

《企业应用架构模式中文版》学习笔记(转)

本书先介绍了一些企业应用开发的基础知识,比如分层架构、WEB表现、业务逻辑、数据库映射、并发、会话、分布策略等等。通过使用场景、解决方案、UML等手段详细介绍了设计模式(包括一些常用的设计模式GOF23和本书上新创的设计模式)。了解书中这些模式是干什么的、它们解决什么问题、它们是如何解决问题的。这样,如果你碰到类似的问题,就可以从书中找到相应的模式。可以...

weixin_34413357的博客 75

企业应用架构模式——笔记(1)

企业应用架构模式学习笔记 2008-1-27第一部分 表述 1       分层1.1    三个基本层次三层架构: 表现层:表现逻辑处理用户与软件间的交互。主要职责是:ü         向用户显示信息ü         把从用户那里获得的信息解释成领域层或数据源层上的各种动作。数据源层:数据源逻辑主要关注与其他系统的交互,这些系统将代表应邀完成相关的任务。主要的数据源逻辑就是数据库,它的主要职...

零雨其蒙 242

学习笔记

突然发现有好多东西的知识都不扎实,估计需要慢慢的补充,先把要学习的东西罗列下来,以后慢慢的在这里做学习笔记吧。 1.java编程思想 2.企业应用架构模式 3.分布式 4.hadoop 5.并发 6.spring 7.cache 8.Hibernate 9.ibatis 10.海量存储 11.设计模式 12.struts 13.linux 14.android 1...

iteye_10461的博客 112
上一篇: 困惑—接下来的java路如何走?
下一篇: xen虚拟机搭建的LVS集群失效了
Wilson_Peng
博客等级 码龄14年 3粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值