系分设计——技术人的必修课

浅谈系统架构设计-从架构设计原理、架构设计原则、架构设计方法展开 到底什么是架构设计和系分?该怎么做架构设计和系分?本文尝试对架构设计进行全面的介绍和分享,希望统一相关认识和术语,推动我们自己架构设计和系分工作的专业发展。 阅读详情
AI摘要

本文系统阐述互联网公司系分设计文档的构成与编写规范,涵盖需求背景、设计思路、方案设计(含用例图、类图、ER图、状态图、时序图、组件图、流程图、部署图)、非功能性说明、变更部署说明及排期安排。强调以Visual Paradigm等工具绘制UML图表达技术方案,确保文档可指导开发落地,提升代码可维护性与团队协作效率。

前言:笔者以技术方案设计规范的角度,和大家分享互联网公司内如何要求技术同学撰写系分设计文档。系分设计非常锻炼开发者的技术思维,有意地训练可以提高技术素养。

什么是系分设计文档

系分设计(系统分析设计)是阿里巴巴公司内部开发线在PRD转开发方案时撰写的技术文档。几乎每个团队在技术迭代前都会使用系分设计文档在团队内部开展方案评审,是开发工程师的基本功之一。系分文档依赖VP(visual paradigm)等UML工具进行创作,通过各种UML图和少量的文字说明来呈现技术方案在实现上的每一个细节。

系分设计的要求较高,需要撰写者提前在脑海中完成代码的落地,并且需要撰写到一个懵懂的开发者对着文档也能完成开发的程度。有些工作要分给新同事甚至外包去做,那么写到这种程度是必须的。本文就笔者书写系分设计文档的经验,与大家分享如何写成一篇系分设计文档。

系分设计的文章构成

一般系分设计文档分成5个部分,包括需求背景、设计思路、方案设计、非功能性说明、变更部署说明、排期计划。

1 需求背景

设计背景是系分设计的第一个部分。要求撰写者简要描述一下功能需求的目标和价值,并附上相关的所有文档,比如需求文档、PRD设计文档等。

这部分的作用主要是描述工作开展的价值,并收集之前的所有文档,后续相关人员只需要在这里查询文档就可以了。如果系分评审时有不了解需求背景的技术同学在场时,可能需要解释一下需求实现的价值。

2 设计思路

设计思路没有固定的格式要求,主要是要把技术方案实现的想法讲清楚。这部分内容可长可短,简单的需求可能一笔带过,复杂的需求可能比方案设计还要长。

设计思路的撰写要表达两个内容:
一是给各位评审同学简要讲解一下PRD的内容,同在场的需求方和产品经理明确一下,文档对PRD的理解没有偏差;
二是给评审的技术同学讲一下实现思路,如果后面的方案设计比较复杂或者比较抽象,需要提前讲解一下选择这个方案目的、优势和预期的结果,那么就可能需要详细展开描述,甚至使用一些活动图、时序图、流程图等,把用户的交互逻辑给大家说明一下。如果没有特别的实现思路,那么也可以一笔带过。

设计思路里可能也涉及技术方案,但和下面的方案设计不太一样。设计思路里的技术方案更强调从用户使用的视角来描述方案,而下面的方案设计则更强调代码层面的实现。

3 方案设计

这里是方案设计的核心,需要撰写者将脑海中的代码整理成UML图的形式,也是对照文档完成开发的部分。这部分以图为主,文字说明较少,这里会使用用例图、类图、ER图、状态图、时序图、流程图等各种UML,从各个角度对关键实现完成描述。撰写时不用全部绘制,可依据需要,选择涉及到的UML即可。

用例图

用例图是第一个UML图,是最简单的图,也是必须要绘制的图,后面的UML图都是可选的。用例图描述了从用户、用户页面或外部系统来看,完成此需求,必须要实现的功能,以及页面展示功能入口的先后顺序。它对应了代码对外暴露的接口。

用例图是一个分水岭,这里的用例还是纯中文的描述,产品经理还是可以听懂的,后面的内容产品经理一般就不用听了。

用例图
(用例图示例)

用例图示例

类图

类图用来描述本次需求设计时的领域概念和概念间的关系。笔者很少选用类图,因为笔者是贫血模型坚定的支持者,如果描述数据结构,笔者更愿意使用ER图,如果描述方法关系,笔者更愿意使用组件图。

类图
(类图示例 [来自网络,侵删])
类图示例

ER图

ER图是用来描述本次需求新增的数据模型、数据属性,以及和已有数据模型间的关系。对应表模型设计和数据持久化层的SQL实现。如果涉及到字段的枚举,那么还要将枚举定义描述出来。

ER图
(ER图示例)
ER图示例

状态图

状态图承继ER图或类图的设计,主要对运行过程中数据的有限状态机的描述。包括起始是什么状态,终了是什么状态,一共有多少种状态,哪些指令会导致状态转换到下一个状态。这里状态对应ER图的状态枚举字段,指令对应代码中需要实现的底层接口。

状态图
(状态图示例)
状态图示例

时序图

时序图是从应用运行的角度,描述用户、本应用的重要模块和外部应用之间的交互细节和顺序,以及初始化或预处理时的步骤。一般时序图会对应用例图中重要的用例。时序图的目的是要描述,核心功能是如何完成运转的,每一个接口要完成什么样的调用顺序、要给外部应用什么样的接口逻辑。

时序图
(时序图示例)
时序图示例

组件图

组件图是从代码工程角度,从数据库和外部系统向上到暴露到API,自下而上地描述代码工程中有哪些类,每个类需要提供什么样的接口,依赖哪些接口,各个组件接口的相互间依赖关系是什么。开发者仅需要对照类名和接口名,完成代码开发即可。组件图和时许图分别从不同角度描述技术细节,两者都是非常常用的UML图。

组件图
(组件图示例)
组件图示例

流程图

流程图是对组件图实现细节的进一步细化。流程图会选取组件图中的较为核心的几个接口,描述接口的实现细节。开发者对照流程图来完成核心代码的编写。

一般设计到流程图这一步,基本上所有的技术细节都可以表达清楚了。

流程图

(流程图示例)
流程图示例

部署图

系统图在绘制上非常类似组件图的绘制,但系统图强调对各个应用系统整体架构部署和对接上的的描述,而不是针对代码工程内部的描述。系统图往往用来描述应用与其他周边应用的影响关系,对于系统重大调整中涉及稳定性的部分,可能需要依靠此图来考虑。该部分更常出现在第三步的“非功能性说明”中。
部署图

(部署图示例)
部署图示例

3 非功能性说明

如果需求涉及到高可用、高并发、高安全等非功能性要求,或者设计的内容是系统重构或迁移,那么可能需要单开这一章节来论证之前的开发方案如何满足非功能性设计。这一部分不易过长,主要是相评审的各位技术同学描述对非功能性要求的考虑。

这里可能会设计到部署或系统架构图的绘制,着重强调非功能性问题的来源和影响。

4 变更部署说明

这里是对上线后代码如何发布,发布后如何应急响应的操作说明,包括著名的变更三板斧(可灰度、可监控、可应急)。这里也可以先留空,在开发过程中补充完善。

发布流程

这里主要描述发布过程中的动作,并提前准备好发布需要的配置和脚本。这里应描述到,发布时可以对照文档完成发布的程度。

灰度计划

这里描述发布上线后如何选择灰度的用户,相关配置的操作方法,以及灰度逐步放开的计划安排。

监控配置

这里描述发布上线后如何配置上线功能部分的监控,以及监测的指标。这里需要技术同学评审监控配置的有效性。

应急策略

这里描述已知的故障风险和应对措施。包括监控指标成什么样的状态时,表示什么样的故障已经发生,需要进行什么样的操作,例如回滚、切流、限流、重启等。这里需要技术同学评审监控配置的可操作性。

5 排期安排

这里是系分设计文档最后的部分,主要前端以及后端各个功能模块的实现排期安排和责任人。开发小组可以在日会上对照排期计划同步各自进展。

结束语

一般系分设计文档写到这种程度就差不多了。系分设计非常锻炼一个开发人员的技术素养,缺点是需要开发人员投入一定的精力专心写文档,可能会给敏捷开发的项目经理一种“怎么还不去开发”的错觉,由于前期思考的较为充分,所以虽然开发的起步较晚,但后续都是一马平川,即使有调整,交流起来也会很快。

FPGA开发必修课一:IP核的使用 IP核在FPGA开发中被视为必修课,主要是因为它以下几个方面的优势:加速设计流程:IP核是经过预先设计和验证的模块,可以直接集成到FPGA设计中。这大大减少了从零开始设计和验证所需的时间,加快了产品上市的速度。1,提高设计质量:IP核通常由专业的团队开发和测试,因此在质量和可靠性方面有较高的保障。使用IP核可以减少设计中可能出现的错误,提高最终产品的稳定性。2,降低开发风险:由于IP核已经过广泛测试,使用它们可以降低设计失败的风险。这对于复杂和高要求的项目尤为重要。 阅读详情

相关推荐

系分设计文档模板

XXXX模型 系分设计文档 XX域 2021/11/30 序号 更新人 更新时间 描述 1 XX 2021-11-30 初始化 2 3 ..

小小代码狩猎者 1420

系分 - 数据库系统

数据库模式(★★★)数据库设计阶段(★)概念结构设计 - ER模型(★)逻辑结构设计 - 关系模式(★★)关系代数(★★★)规范化理论(★★★★★)并发控制(★)数据库的安全性(★)数据库备份与恢复技术(★)分布式数据库(★)

初八 1878

专业必修课和专业选修课在上课时的区别?——chatgpt搜索文件资料和视频很多bug,找不到真实的资料和视频链接,都是错误的,如何解决?????????????????????????????????

有推荐的压缩机本科教材和视频课程推荐吗,给出链接。

qq_15963745的博客 112

【系分范文】系分论文模板

【系分范文】系分论文模板

学习笔记 1420

深入解读:229页华为·数字化转型必修课

二是优先实现设计与制造的数字化融合,在设计环节构建制造要素数字化,预演产品开发、检测、制造和安装过程;13. 立白日化智云:入选“2024湾商数字化转型优秀案例”,作为大日化研产供销一站式服务产业互联网平台,以新品创新开发为入口,连接用户需求和整个供应链体系与智能制造体系,推动用户全流程参与产品设计研发等环节,构建“一横四纵”产品服务体系,支持用户平台化设计及个性化定制,提供全流程一站式服务,连接全国多家美妆日化工厂,整合大日化产业链供需资源优化配置,推动网络化协同制造,提高产能利用效率与产业链协同效率。

cdfunlove的博客 1776

大模型蒸馏实战:让小模型获得大模型的知识

本文为初学者提供了一份大模型蒸馏实战指南,通过情感分析任务演示如何将 BERT 的知识迁移到轻量级 TextCNN。文章结合原理图解与 PyTorch 代码,详解软标签生成、温度调节和双损失设计等核心概念,并对比蒸馏前后的性能差异(准确率提升 4.6%,推理速度达 1200 句 / 秒)。内含可直接运行的代码片段、训练技巧及常见问题解答,助力开发者快速掌握模型压缩核心技术,实现工业级部署效率。适合 NLP 入门者学习实践。

1368

系分模板--demo

接口类型xxx接口名称方法名称xxx。

lgq2016的博客 599

泛微 OA - 根据流程 requestid 获取流程中的附件

在泛微 OA 流程中,附件是通过加密上传的,如果在第三方系统想要调用 OA 系统获取 OA 附件,暂时没有很好的方法实现。但是可以在本地进行调用,得到附件信息,拿到这些信息后,可以用过 url 地址在本地下载。

小松鼠的博客 5825

系分:系统设计、业务分析

提需求 -> 需求评审 -> 研发做系分 -> 系分评审 -> 编码 -> MR -> 代码效能检测 -> CR -> …. 系分的全称是“系统设计、业务分析 1,工作任务拆解更细化,工时评估更精准; 2,更容易发现未知问题,并提前确定解决方案; 3,减少开发过程中不必要的沟通成本; 4,便于后期项目的迭代和维护; 通过系统分析设计文档可以降低编码的不确定性,系分做的越详细,编码时不确定性就越小,因为所有问题、边界、流程、数据处理你都提前想清楚了,文档就是一种

xyc1211的博客 2146

RS485两线制接线实战:从差分信号原理到Modbus避坑指南

本文深入解析RS485两线制接线的核心原理与实战步骤。从差分信号的抗干扰机制出发,详细拆解总线规划、屏蔽层接地、终端电阻安装等关键实操细节,并针对Modbus应用中常见的信号反射、极性接反、共模干扰等问题提供系统化的排查指南与解决方案,助力工程师构建稳定可靠的工业通讯网络。

7up55的博客 734

VN1630A硬件配置指南:手把手教你用CanApe搭建XCP标定工程(附ELF文件配置技巧)

本文详细介绍了如何使用VN1630A硬件和CanApe软件搭建XCP标定工程,包括硬件配置、CanApe工程创建、ELF文件处理及XCP协议层配置等关键步骤。特别针对实际项目中常见的错误和细节问题提供解决方案,帮助工程师高效完成ECU参数标定工作。

git9versioner的博客 1154

【软考——系统架构师】架构、系分、软设的区别和联系

架构、系分、软设的区别和联系

10万+

复现基于PYNQ-Z2的手写数字识别卷积加速器设计

来源雪天鱼。

eachanm的博客 968

乘风破浪程序员:技术人的成长之路

1、技术人成长之路是什么样的 理想中的样子 大多数技术人理想中的进阶路线都会像上图一样,从毕业之后的初级码农、中级码农、高级码农 再到 技术经理 甚至CIO/CTO。不过,正如这个圆圈一样,越往上进阶圈子越小,里面的人也就越少。我们大部分人还是在外层的三个圈子(初级、中级、高级码农)里边奋斗。 现实中的样子 现实中呢,可能随着年龄的增大,生活的压力也随之增大,时间管理的效率也随之降低,伴随而来的就是学习提高的欲望逐渐消灭。所以,可能身边的人大部分都有35岁的危机焦虑,因此可能会选择去送外卖.

weixin_45820912的博客 757

STM32驱动MG996R舵机的PWM控制与闭环原理

舵机是一种典型的模拟闭环伺服系统,其核心是通过电位器反馈实现角度位置的自动校正。工作原理基于负反馈控制:目标PWM脉宽决定期望角度,电位器输出实时反馈实际角度,控制电路计算偏差并驱动电机消除误差。该机制赋予舵机强带载能力与抗干扰性,是机器人、云台、智能执行器等场景的关键执行单元。在嵌入式开发中,STM32通过定时器生成标准20ms周期、0.5–2.5ms脉宽的PWM信号,需严格遵循电气规范,并解决PA15引脚SWJ复用冲突、定时器重映射及CCR精度计算等关键问题。本文深入解析MG996R舵机控制全流程,涵盖

weixin_42600407的博客 559

【项目实战】AES实施应符合NIST密码算法验证程序

AES由美国国家标准与技术研究院(NIST)制定。NIST是负责开发和维护美国政府使用的技术标准的机构,包括加密标准。

奶爸的编程之路,也就一周冷个三天 765

计算机专业有哪些必修课程推荐?

这些课程为计算机专业的学生提供了坚实的理论基础和实践技能,为他们未来的学术研究或职业发展奠定了基础。不同院校可能会根据具体的教学计划和专业方向有所调整。计算机专业的必修课程通常涵盖了从基础理论到专业实践的广泛领域。

2401_83911225的博客 1235

(代码可运行)半导体器件和工艺模拟 使用Silvaco设计构建NMOS并提取各项工艺及器件参数

win10。

qq_20388971的博客 108

为什么技术人员往往难以沟通?

从学会“翻译”技术语言,到关注业务逻辑,再到用对方能理解的方式表达技术价值,这些技巧都能让你更受欢迎、更有影响力。别把自己局限在“技术圈”,多了解业务逻辑、市场需求,成为一个懂业务的技术专家,才是真正的高手。如果你不能清楚地向老板传达技术的重要性,比如“为什么需要这台高配服务器”,你就很可能得不到资源支持,甚至被认为“技术没啥用”。同学们,技术人之所以容易被说“难沟通”,不是因为技术和沟通有冲突,而是因为我们有时习惯把自己关在技术的象牙塔里。老韩的回答是:沟通,是技术成长路上的必修课,绕不开,逃不掉。

m0_61562916的博客 1261

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

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

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

《B端产品必修课2.0》阅读笔记

该文章仅为知识点提取,详细内容可购买并观看李宽老师的书籍《B端产品必修课2.0》。

T1111TT的博客 1775

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

技术人的持续学习成长之路 | 文字稿

【个人成长】|作者/ Edison Zhou这是恰童鞋骚年的第248篇原创内容近期有几位童鞋在公众号后台留言,希望我指点一下如何从码农进阶为大佬。我想说的是,我不是大佬,因此无法给你...

qq_30236895的博客 503

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

编程语言那么多,为什么偏偏是C语言成了大学的必修课?

谁叫你不幸生在中国了?——何祚庥(中国科学院院士)这是一本给非计算机专业的大学生的C语言的书。“我不是学计算机的,为啥要学C语言?”这个问题每年在中华大地都会被问上几百万次。被问的对象可能是老师,也可能是师哥师姐。师哥师姐往往也就是故作明了的表情,复述一遍隐约记得的老师的话。而这些话多半都是比较高瞻远瞩的,例如“将来可能会用到”,“锻炼编程思维有好处”,“C语言是学编程的基础”等等。这些话没有错,所谓“技不压身”,多学点儿东西肯定比不学要有好处。

caihuayuan4的博客 1447

飞思卡尔MC9S12X开发必修课教程:掌握嵌入式设计的必修宝典

飞思卡尔MC9S12X开发必修课教程:掌握嵌入式设计的必修宝典 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在嵌入式系统开发领域,飞思卡尔MC9S12(X)系列微控制器因其高性能和易用性而受到工程师和爱好者的青睐。《飞思卡尔MC9S12(X)开发必修课.pdf》教程为初学者和专业开发者提供了一个全面的学习资源,从基础知识到高级应用,全方位助力开发者掌握MC9S12(...

gitblog_06723的博客 799

大类分专业界面设计

学生专业分专业申请。

m0_74392245的博客 388

AI能10分钟完成你一个月工作?技术人转型“模型构建者“的必修课

AI时代的技术人转型:从信息搬运工到模型构建者 AI技术正在重构技术分析的工作范式,将信息收集时间从4周缩短到10分钟,但真正的洞察能力依然稀缺。文章通过高盛数字化架构案例分析指出,AI替代的是显性知识处理(L1信息检索),而模型构建(L3)和价值判断(L4)等核心能力仍需要人类完成。技术人必须转型为"AI导演",专注于框架设计、假设验证和模型迭代。建议分三阶段升级:掌握AI工具→培养建模能力→专注隐性知识挖掘。在显性知识贬值的时代,结构化思维和复杂决策能力正成为技术人的新护城河。

Trb701012的博客 610

2035-2040:中国智慧如何成为全球大学必修课

跨文化教育正从边缘议题转向全球高教体系的核心议程。受课程更新周期约十年至十五年的制度惯性影响,未来十年将迎来知识体系重构的关键窗口。当还原论思维在应对复杂系统挑战时遭遇天花板,源自中国传统的整体论与辩证决策模型,便展现出独特的补充价值。从《孙子兵法》的战略博弈、中医的平衡健康观,到大运河工程背后的超大规模协作经验,这些可定义、可操作、可评估的知识体系,正逐步从东方学猎奇对象转型为方法论资源。在商学院、工程学院与公共卫生学院的应用场景中,中国智慧并非替代西方知识框架,而是提供跨文化的问题解决路径。2035-2

weixin_29243063的博客 250
上一篇: 高质量代码的设计之路
下一篇: RAG知识库技术全景与演进思路
coderlius
博客等级 码龄9年 141粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值