可配置流程的设计及开发

如何设计一个基于Lotus的可配置的工作流  要实现流程的“可配置”,即相当于由用户自己“组建”流程,那么,对于程序的开发者,要做的事自然就是一个相反的过程(“拆解”流程)。考虑如何拆解流程能使用户重新组建时省力省心,实际上就是设计一个好用的、可配置的工作流的过程。清楚了我们要做的事之后,在开始做事之前,我们还需要制定一些做事的原则(“拆解”的原则和方向),毕竟,我们的初衷,不仅仅是能把事做完,把事情做好才是最终目标。那么,什么才是 阅读详情

前提
随着互联网技术的发展,企业、政府等用人单位中提倡办公自动化理念,即使用计算机软件进行业务、工作的流程管理。但由于业务和工作的流程种类繁多,且经常会需要变化和改动,目前业务系统面临许多问题。如果人工进行业务代码修改,将会产生非常多的重复工作,维护的成本巨大。随着用户的迅猛发展,对业务的需求也相应的快速增长,对提供的服务要求也是越来越高。让用户能够感受到无时间限制、无所不能的服务成为解决目前应用需求的重要手段,随着业务不断推陈出新,现有系统业务承载将会面临严峻的考验。

架构演进
单体架构、分布式系统、RPC、SOA、微服务、集群

单体架构
单体架构也称为单体系统或者单体应用,就是把一种系统中的所有的功能、模块耦合在一个应用中的架构方式;

单体架构的特点:
基于单体架构的项目最终会打包成一个唯一的jar包或者war包;它会以一个进程的方式来运行;
优点:项目易于管理,部署简单。
缺点:测试成本高、可伸缩性差、可靠性差、系统的迭代困难、跨语言程度差、团队协作难。
在这里插入图片描述
分布式系统
分布式系统(distributed system)由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。
分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。
因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。
分布式系统可以应用在不同的平台上如:PC、工作站、局域网和广域网上等。

分布式系统的特点:
分布式系统是若干个独立计算机(软件)的集合,这些计算机协同工作,以组成一个完整系统。
优点:
(一)可靠性(容错)
分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器。
(二)可扩展性
在分布式计算系统可以根据需要增加更多的机器。
(三)资源共享
共享数据是必不可少的应用,如银行,预订系统。
(四)灵活性
由于该系统是非常灵活的,它很容易安装,实施和调试新的服务。
(五)更快的速度
分布式计算系统可以有多台计算机的计算能力,使得它比其他系统有更快的处理速度。
(六)开放系统
由于它是开放的系统,本地或者远程都可以访问到该服务。
(七)更高的性能
相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。
缺点:
(一)故障排除
故障排除和诊断问题。
(二)软件
更少的软件支持是分布式计算系统的主要缺点。
(三)网络
网络基础设施的问题,包括:传输问题,高负载,信息丢失等。
(四)安全性
开放系统的特性让分布式计算系统存在着数据的安全性和共享的风险等问题。
在这里插入图片描述
RPC(Remote Procedure Call) 远程过程调用
是一种进程间通信方式,是一个技术思想,允许一个程序远程调用另一个程序上的函数,而不需要显示编码远程调用细节
  主要实现:rmi,dubbo,restful api,thrift,grpc
在这里插入图片描述
SOA (Service Origented Architecture)
基于RPC再次净化,面向服务的结构。ESB(Enterprise Service Bus):企业服务总线,服务中介(商业应用),主要提供服务与服务之间的交互。ESB包含的功能:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等。
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构件在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
面向服务的架构,将服务程序的不同功能单元(子服务)通过定义良好的接口联系起来
可以简单理解为,在分布式系统的基础上,增加服务治理功能,统一管理服务的注册,发现

在这里插入图片描述

微服务

SOA的一种改变,相对更轻量级
集群
若干个独立计算机(应用程序),提供相同的能力集(分主工作人员,和备份人员等),主要是为了提供高可用,扩展性能

在这里插入图片描述
架构改变对程序员带来区别
在这里插入图片描述

配置实现
注解:是一种分散式的元数据,与源代码紧绑定
简单的使用注解例如:@Service和@Resource
简化配置
直观便于理解
类型安全(编译前进行校验)

注解简单概括:写起来比较简单、方便,看起来也简洁,但是修改麻烦

文件配置:是一种集中式的元数据,与源代码无绑定
复杂的使用文件例如:数据源配置,redis配置,缓存配置。
修改配置而无需变动现有程序
降低耦合,使容易扩展
对象之间的关系一目了然
软件更具扩展性,例如依赖配置在 xml 中,最大限度地提升应用的可扩展性
具有成熟的验证机制确保程序正确性,利用 Schema 或 DTD 可以对 xml 的正确性进行验证,避免了非法的配置导致应用程序出错

文件配置概括:写起来比较灵活、修改方便,但是写和维护麻烦

数据库:是一种集中式多数据结构,与源代码无绑定

规则引擎
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策

目前项目实现方式
文件配置
简单开关/开发人员操作建议文件配置
是否开启 单点登录
是否开启 多租户
是否开启 licnese
数据库
复杂业务/功能使用人员可变更流程建议数据库
特殊作业
定时任务

配置前提
相同功能,不同业务流程

毕业设计源码实战指南:从环境配置到二次开发全流程解析 1. 先搞清楚“毕业设计合集”到底能帮你解决什么问题 每年毕业季,计算机相关专业的学生最头疼的几件事:选题、找源码、搭环境、写论文。网上资源虽然多,但要么是零散的,要么是过时的,要么就是标题党,下载下来根本跑不通。这个所谓的“万套合集”,核心价值就在于它试图把“选题参考”和“可运行的源码”打包在一起,让你在一个地方解决从开题到编码的主要障碍。 它面向的是正在做毕业设计的本科生,尤其是那些对Java、Python、PHP、Node.js这些主流技术栈还不太熟悉,或者不知道如何将所学知识整合成一个完整项目的同学 阅读详情

相关推荐

蓝牙Mesh开发实战:消息机制、配置流程与低功耗设计

蓝牙Mesh作为物联网短距通信的关键技术,基于BLE广播信道构建无中心、自组网的消息分发网络,其发布订阅模型与泛洪转发机制决定了它无需复杂路由即可灵活扩展。实际工程中,节点配置(Provisioning)和低功耗设计往往决定产品落地成败。配置流程涉及未配置设备、配置者及PB-ADV/PB-GATT通道,通过公钥交换与密钥分发确保入网安全;而低功耗节点依赖Friend机制与消息缓存,在唤醒间隔和队列长度间需精细权衡。针对常见的消息丢失、偶发离线、网络风暴等问题,可从TTL、订阅地址、密钥绑定、扫描窗口等参数入

weixin_34198762的博客 433

可配置的业务流程组件的设计与实现

一个简单可配置化的流程组件

Zhaojp_hz的博客 1806

XIlinx FPGA开发基本流程(一)(总介绍)

目录 前言 介绍 设计输入 综合(SYnthesize) 综合流程 综合要点: 设计实现 翻译 映射 布局布线 生成配置文件 验证 器件配置 前言 这篇博文先总的说一下 Xilinx FPGA开发的基本流程(不包括实例介绍),实例介绍在另有博文介绍。 Xilinx FPGA的开发在ISE(Integrated Software Environment)(集成软件环境...

Reborn Lee 2万+

工作流学习1(activiti)--配置流程基本思路

前言: 本例仅为个人在特定项目中所学习的内容,可能和很多其他工作流配置不一致,仅供初学者学习参考。 流程开发思路: 1、创建流程 2、代码指定流程,启动流程 流程配置: 1、打开流程配置页面,创建流程分类,本例已“测试流程1”为例。 流程配置如果集成到项目中,可以通过特定连接打开,也可是通过第三方工具创建流程文件,本例为项目中特定连接 http://localhost:8080/xxxx/paas/bpm/bpmDefinition/manage 新增如下分类 创建后如下: 2

weisian的博客 2万+

PCIe设备BAR空间配置避坑指南:从硬件设计到Linux驱动开发的完整流程

本文详细解析了PCIe设备BAR空间配置的全流程,从硬件设计到Linux驱动开发的关键步骤。重点探讨了BAR寄存器的地址宽度、空间类型和预取属性等硬件设计考量,以及Linux内核中的BAR枚举过程和常见问题排查技巧,帮助开发者避免配置陷阱,提升设备兼容性和系统稳定性。

weixin_28675839的博客 344

AI 生成测试报告:从 2 小时到 10 分钟

本文分享了AI在汽车电子测试报告生成中的应用案例。作者以某车企ECU测试项目为例,对比传统报告方式(每天2小时)与AI辅助方式(每天20分钟),效率提升83%。文章详细介绍了测试报告的核心要素(测试概况、结果、问题分析、发布建议)和不同类型报告(日报、周报、总结报告)的特点,并提供了从CANoe导出测试数据的Python解析脚本示例。通过AI自动化处理,大幅减少了测试工程师在报告整理上的时间投入,为汽车电子测试工作提供了实用效率提升方案。

小明的博客 443

超详细-vue3项目初始化配置流程(全流程注释说明)

1. 安装Vue脚手架 npm install -g @vue/cli 或者 yarn global add @vue/cli 2. 查看vue版本 vue --version 3. 利用vue-cli创建项目 vue create 项目名

二三的博客 1万+

Unity游戏开发客户端C#基础

初级Unity客户端开发工程师 面经 之 C#篇

Sea3752的博客 2万+

【流程管理】企业流程框架设计思路(流程框架设计思路)

本文将详细介绍企业流程框架设计思路,包括明确设计目标与原则、分析企业现有流程、确定流程框架层次、设计流程模块与接口、优化关键业务流程、建立流程管理制度、流程框架实施与监控以及定期评估与持续改进等方面。企业流程框架设计思路是企业流程管理的重要基础,通过明确设计目标与原则、分析企业现有流程、确定流程框架层次、设计流程模块与接口、优化关键业务流程、建立流程管理制度、流程框架实施与监控以及定期评估与持续改进等步骤,可以构建出一个高效、灵活、可扩展的流程体系,为企业的持续发展提供有力支持。五、设计流程模块与接口。

weixin_44094929的博客 742

手把手教你用RTL8306MB搭建小型网络交换机:从原理到实战

本文详细介绍了如何使用RTL8306MB交换芯片从零搭建小型网络交换机的全过程。内容涵盖芯片原理分析、核心硬件电路设计(包括电源、时钟、RMII接口连接要点)、驱动开发与SMI通信实现,以及从物理链路到交换功能的系统调试实战。重点解析了将MAC5配置为RMII PHY模式与CPU对接的关键步骤和常见错误,帮助嵌入式开发者深入理解网络交换原理并完成实践。

weixin_29274969的博客 192

鲁棒优化入门(6)—Matlab+Yalmip两阶段鲁棒优化通用编程指南(上)

Matlab+Yalmip两阶段鲁棒优化通用编程指南(上篇),内容包括: ①.拿到一个复杂的两阶段鲁棒优化问题的分析步骤和方法。 ②.采用Yalmip工具箱中的uncertain函数和鲁棒优化模块求解两阶段鲁棒优化的子问题。 ③.Yalmip工具箱中的鲁棒优化模块和常规的求解思路有什么异同。 ④.使用KKT条件求解两阶段鲁棒优化的子问题,并使用C&CG算法进行迭代求解。

配电网和matlab的博客 1万+

完整指南:用 OpenCore Legacy Patcher 五步给老 Mac 装上新 macOS

OpenCore Legacy Patcher 是面向 Intel 老 Mac 的免费开源修补工具:不碰硬件,就能让 2007—2017 年机型安装 Big Sur、Monterey、Ventura、Sonoma、Sequoia 等新 macOS。适合手里有旧机器、想体验新系统的用户。 [![OpenCore Legacy Patcher 主菜单界面](https://raw.gitcode.c

gitblog_01032的博客 893

手把手教你使用HFSS仿真高速差分过孔—上

高速数字电路设计中,信号完整性是一个非常重要的问题。为了使信号保持良好的传输特性,PCB板上的互联线一般都采用均匀传输线,使互联线保持特性阻抗一致性,减少信号反射。然而PCB板上的互联线很多时候避免不了换层的问题,这时候就必须使用过孔。过孔会导致阻抗不连续,进而造成反射,出现信号完整性问题。         当信号传输速率越高,信号前沿越短的时候,过孔引入的信号完整性问题越严重,需要对过孔进行优

a2447944219的博客 2万+

Activiti的简单配置与开发(通过Idea设计流程图)

原文地址:https://blog.youkuaiyun.com/c1225992531/article/details/81181017 使用idea进行activiti工作流开发 emmm.......因为工作需要,所以要学习activiti工作流,初次学习,写个博客记录一下,下次再用就知道大概流程了。 1、安装插件 在idea里面,activiti的插件叫actiBPM,在插件库里面把它安装好,重...

专注基础架构领域 7233

解决LangChain4j报错HTTP/1.1 header parser received no bytes

当使用调用自己部署的大模型服务时报错: 报错信息如下:

weixin_44455388的博客 2334

实现端到端加密的WebRTC视频会议终端

需要注意的是,上述示例代码中没有涉及到具体的加密算法和密钥交换过程,而是通过WebRTC API自动处理了加密和密钥交换的细节。然后,我们通过信令服务器将本地SDP发送给对方,并接收对方的SDP。最后,我们将对方的SDP设置为远程描述,并将最终的连接建立起来。最后,我们将对方的SDP设置为远程描述,并建立最终的连接。在本文中,我们将探讨如何使用WebRTC构建一个加密的视频会议终端,并提供相应的源代码。在本文中,我们将探讨如何使用WebRTC构建一个加密的视频会议终端,并提供相应的源代码。

WaJulia的博客 432

“约定大于配置”(Convention over Configuration)是软件开发中的一种设计理念,旨在通过定义合理的默认约定来减少显式配置,从而简化开发流程

仓储:ABP的仓储模式遵循约定,仓储接口定义在领域层(`.Domain`),实现类放在基础设施层(`.Infrastructure`)。约定大于配置通过标准化的命名和结构(例如,实体类放在`Domain`层,仓储接口以`IRepository`结尾),确保团队成员遵循相同的语言和模式。- DTO:数据传输对象(DTO)通常放在`.Application.Contracts`中,约定以`Dto`结尾(如`ProductCreationDto`)。例如,领域事件可以通过约定自动发布和订阅。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 917

微信小程序 - 解决微信支付报错 requestPayment:fail no permission 原因分析及排查处理(支付失败出错,无法唤起支付弹框面板,微信支付API报错请求付款:失败无权限)

微信小程序,微信支付,支付报错,errMsg: "requestPayment:fail no permission",支付失败,支付权限没问题,微信小程序支付报错,检查了appid正确依旧不行,微信小程序支付异常,苹果ios手机,安卓手机,开发者工具模拟器,最新解决教程,小程序wx.requestPayment报错/无响应,小程序支付 requestPaym,微信小程序认证,真机运行,小程序微信支付提示错误,微信小程序里使用微信支付错误提示,微信小程序支付异常,微信支付弹框拉不起来,小程序支付api,都检

🏆 前端领域优质创作者 1万+

零配置Tkinter开发:GitHub Codespaces云端GUI设计全流程

你是否还在为本地环境配置Python、Tkinter依赖而烦恼?是否想在任何设备上随时开发美观的Python GUI界面?本文将带你通过GitHub Codespaces实现Tkinter-Designer的云端开发,无需复杂配置,5分钟即可开始拖拽式GUI设计。 读完本文你将学会: - 在浏览器中搭建完整Tkinter开发环境 - 使用Figma设计界面并自动转换为Python代码 - 掌握云...

gitblog_00152的博客 400

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

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

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

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

rpg_quadrotor_control开发指南:从ROS节点设计到参数配置的完整流程

rpg_quadrotor_control是由Robotics and Perception Group开发的四旋翼控制框架,提供了从底层硬件通信到高层轨迹规划的完整解决方案。本指南将带你快速掌握该框架的核心功能模块、ROS节点设计原理以及参数配置技巧,帮助你从零开始构建稳定的四旋翼控制系统。 ## 核心功能模块解析 🚀 ### 硬件通信层:SBUS桥接器 硬件接口模块位于`bridges/

gitblog_00006的博客 300

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

PyQt5 登录界面开发全流程:从环境配置到可视化设计

本文详细介绍了使用PyQt5开发Python桌面应用的完整流程。首先讲解了PyQt5环境搭建和PyCharm工具配置方法,包括QtDesigner和PyUIC的集成。然后通过登录窗口实例,演示了QtDesigner可视化界面设计、UI文件转Python代码的过程。最后展示了如何将UI与业务逻辑绑定,实现登录功能,并提供了常见问题解决方案和界面优化建议。整个教程从零开始,手把手指导新手完成PyQt5桌面应用开发的全流程,强调"UI与逻辑分离"的高效开发模式。

F_leshy_的博客 1292

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java开发实战:从环境配置到架构设计全流程指南

Java作为面向对象编程语言的代表,其核心机制包括JVM运行时环境、垃圾回收和跨平台特性。在工程实践中,开发者需要掌握JDK环境配置、Maven依赖管理和IDE工具链的使用。遵循SOLID设计原则和集合框架最佳实践能显著提升代码质量,而Spring Boot和微服务架构则成为现代企业级开发的主流选择。针对性能调优场景,合理配置JVM参数和使用MAT分析工具是解决内存泄漏的关键。对于希望深入Java技术栈的开发者,建议从并发编程和JVM原理入手,逐步扩展到云原生和分布式系统设计。

weixin_34146805的博客 459

SpringBoot+Vue宿舍报修系统毕业设计:从环境配置到二次开发部署全流程

在软件开发领域,前后端分离架构已成为构建现代Web应用的主流范式。其核心原理在于将用户界面(前端)与业务逻辑和数据(后端)解耦,通过API接口进行通信,从而实现关注点分离和团队并行开发。这种架构模式的技术价值在于提升了开发效率、增强了系统的可维护性和可扩展性。在众多应用场景中,信息管理系统是实践前后端分离技术的典型载体,例如学生宿舍报修系统。这类系统通常涉及用户管理、数据增删改查和流程跟踪等通用功能。本文聚焦于如何基于SpringBoot和Vue技术栈,将一个完整的毕业设计项目从源码成功运行起来,并完成定制

weixin_33849215的博客 296

拖拉拽流程设计引擎、简化企业应用开发!

MISBoot低代码开发平台支持流程按钮的定制和配置。用户可以根据自己的需求,在流程中添加相应的按钮,并设置按钮的功能和行为。这样的设计使得流程的执行更加灵活和符合实际需求。用户可以根据具体的业务需求,定制自己所需的流程按钮,提高工作效率。

小策一喋的博客 2481

FPGA 设计篇(06-02)FPGA 开发流程

芯片原厂必学课程 - 第六篇章 - FPGA 设计篇

新芯设计的博客 3609

JeecgBoot工作流引擎:Flowable业务流程自动化配置

你是否还在为复杂的业务流程开发而头疼?传统的BPM(Business Process Management,业务流程管理)工作流开发往往需要: - 编写大量XML配置文件 - 手动处理流程节点和流转逻辑 - 重复编写审批、会签、转办等通用功能 - 花费大量时间在流程引擎的集成和调试上 JeecgBoot通过集成Flowable流程引擎,实现了**可视化流程设计**和**自动化配置**,让工作流...

gitblog_01155的博客 1231
上一篇: SSO(单点登录)介绍设计与实现
下一篇: 大数据讲解简述
狂野弘仁
博客等级 码龄8年 34粉丝 81原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值