rabbitmq的中流砥柱

企业级OA系统现代化演进:从Web架构到核心模块实战解析 企业级办公自动化(OA)系统是现代企业数字化转型的核心基础设施,其核心在于通过流程引擎、信息门户和协同工具实现人、事、物、流程的数字化。从技术原理层面,这类系统通常采用前后端分离架构,前端聚焦于用户体验与权限控制,后端则需保障高并发、高可用与数据安全。其技术价值体现在提升运营效率、强化决策质量与实现复杂组织权限管理。在实际应用场景中,系统需处理工作流引擎集成、消息通知中心构建以及与企业微信、钉钉等第三方平台的深度对接。本文以典型项目为例,深入探讨了在实现OA门户与飞书等平台集成时,如何通过API-First 阅读详情

rabbit相信在很多公司的异步架构中出现的频率很高,因为其基于通用AMQP协议又有自身的多种独特优点。话不多说,直接看一下其基础部件,这些东西是构成整个rabbit实例,甚至是整个集群的中流砥柱。

一切操作基于channel信道

每一个应用程序(生产者或者消费者)与rabbit通信,都要建立一个tcp链接,信道channel就是在这条tcp链接上创建的虚拟连接。AMQP的命令都是从信道传出去的,每个channel都会有唯一ID。所有的操作,包括发布信息,订阅信息或者接受信息,都是通过信道完成。

可是为何要采用信道这一机制?直接采用tcp不可以吗?

一般我们程序都是多线程的,而操作系统建立tcp会话是非常耗资源的。如果为每一条线程都建立tcp连接的话,那么我们的程序建立的tcp连接数将会是很庞大,会造成程序的性能瓶颈。如果我们只为每一个程序建立一条tcp连接,所有线程都在这条连接内通信,那么性能将大大提高。而信道就是为了这一需求设计的,每一条线程会单独创建一个信道,彼此之间相互独立,保证私密,就像拥有独立连接一样。也就是一条tcp连接上可以创建成百上千条信道,他是没有限制的。

AMQP被称为加强版的传输层,既不影响程序的传输效率,又大大降低系统开销。

消息路由的中转站——queue队列

rabbit的队列通过basic.declare来声明,每个队列都会有自己的名字,名字用在:

  • 创建队列时候,如果没有指定,就会产生一个随机名称
  • 订阅队列时候
  • 绑定队列时候

消费者在同一信道上,不能同时订阅其他队列,又创建队列。如果要在同一信道上创建队列,需要先取消订阅其他队列,将信道置为传输模式。创建队列有两个有用参数

  • exclusive 队列是否私有,如果是代表只有消费者自己能使用
  • auto-delete 当最后一个订阅者取消订阅后,队列自动销毁

如果只有一个临时队列给一个消费者使用的话,就要配合以上两个参数。

声明的队列如果同名,参数相同的话,会返回已存在的队列,参数不同的话,就会失败报错。
如果仅仅是想测试队列存不存在,而不是真的想创建队列,设置参数passive为true,存在就成功返回,不存在就不会创建队列而是返回一个错误。

路由规则三分天下——exchange交换器

  • direct 根据路由键,投递到相应的队列。包含一个默认空白字符的交换器,其路由键就是要投递的队列名字。basic_public($msg,”“,”queue_name”),第一个是消息内容,第二个是代表默认空白交换器,第三个代表路由键,在这里就是队列的名字。
  • heads 路由键不适用队列名字而是AMQP消息的header,其他都一样,这种效率很低。(所以这个可忽略)
  • topic 将多种不同消息投递到一个或者多个相同的队列中,绑定队列中basic_bind(queue_name,exchage_name,routing_key),如果routing_key是一个具体的值,那么其实这是一个direct类型的,但是如果这个routing_key存在等通配符,那就意味着符合这些规则的消息都会投递到这个队列中。在routing_key中,“.”代表分模块,“”代表匹配任何字符,“#”代表匹配所有规则。
  • fanout 将一个消息投递到多个不同队列中,适用于一个消息多任务,比如用户注册,需要记录用户信息,分配初始金额等不同任务。

队列声明后绑定到交换器上,绑定不是说交换器就一定会将消息发送到绑定的队列上,而是根据交换器类型和规则,消息到达交换器后再投递到相应的队列中。队列要绑定到交换器的时候,要提供的参数包括队列名、交换器名和路由键,即queue_bind(‘queue_name,exchange_name,routing_key),这个路由键也就是绑定规则。

vhost分身术

rabbit中可以创建多个虚拟主机,每个虚拟主机都拥有独立的交换器、队列和绑定规则,多个虚拟主机共享同一台设备,而彼此间相互隔离,互不影响。这个在实际生产上很有用,因为队列服务器肯定会存在多个业务,而是之间是互不关联的,那么每个业务使用一个虚拟主机,将不会影响其他队列,安全性也得到保障。rabbit 的权限是细化到虚拟主机的,可以通过给虚拟主机配置账户来访问相应的虚拟主机。

软件工程毕业设计选题指南:50个实战项目与四维评估法 毕业设计是软件工程专业学生将理论知识转化为工程实践能力的关键环节。其核心在于通过一个完整的项目周期,系统性地应用软件工程方法,解决实际问题。从技术原理上看,一个成功的项目通常需要平衡创新性、可行性、实用性与技术深度,这构成了项目评估的基本框架。在技术价值层面,毕业设计不仅是学术成果,更是求职时展示技术栈掌握度、系统设计能力和解决问题思维的硬核凭证。当前,结合人工智能、物联网、微服务架构等前沿技术的项目,更能体现技术敏感性与工程实践的结合。应用场景广泛,从经典的电商平台、管理系统,到新兴的智能识别、数据推荐系 阅读详情

相关推荐

2025 居民消费结构数据集(21列,15000条记录)XLSX

详情介绍:该数据集为 2025 年 12 个月、1250 户家庭的平衡面板消费数据,15000 行 ×21 列零缺失,覆盖 31 省、城乡均衡,含八大类消费支出和恩格尔系数(均值 0.293,属富裕区间),家庭月收入均值 8473 元、月支出 6487 元,附完整字段说明 sheet,数据干净规整,非常适合做消费结构分析、面板回归、城乡 / 区域差异对比和收入等级分类预测,但为合成数据、仅 1 年时间跨度,不适合做真实政策研究或长期趋势分析。

laravel强大功能路由初探(二)

目标当然是先输出helloworld 配置hosts文件和apache下的httpd-vhosts.conf, hosts:127.0.0.1 www.blog.com httpd-vhosts.conf: <VirtualHost *:80> DocumentRoot "D:\www\htdocs\blog\laravel\public" ServerN...

weixin_30344131的博客 98

配合上述本地模型资源文件

配合上述本地模型资源文件

RabbitMQ 队列参数

如果溢出设置为reject-publish或reject-publish-dlx,则将丢弃最近发布的消息。reject-publish和reject-publish-dlx 之间的区别在于,reject-publish-dlx 也是拒绝消息的死信。(设置“x-dead-letter-routing-key”参数。(设置"x-max-length-bytes"参数)队列所支持的最大优先级数;一个队列在开始从头中丢弃消息之前可以包含多少(准备好的)消息。发布到队列的消息在被丢弃之前可以存在多长时间(毫秒)。

weixin_48909429的博客 483

三电平维也纳VIENNA双闭环控制整流器仿真(Simulink仿真实现)

内容概要:本文档系统性地介绍了以“三电平维也纳VIENNA双闭环控制整流器”为核心的电力电子系统Simulink仿真资源,聚焦于电压电流双闭环控制、中点电位平衡、空间矢量脉宽调制(SVPWM)等关键技术的建模与实现。资源包不仅提供完整的仿真模型,还配套Mathcad计算书、设计报告及参考文献,帮助用户从理论推导到参数设计再到仿真验证实现全流程贯通。同时,文档整合了大量相关拓扑(如DAB、LLC、PFC、CLLC等)与先进控制策略(如EPS调制、软开关、最小应力优化、模型预测控制等)的仿真案例,覆盖从基础整流器到复杂双向变换系统的多个典型应用场景,构成一个面向科研、教学与工程实践的综合性学习体系。; 适合人群:具备电力电子、自动控制或电气工程等相关专业背景,熟悉MATLAB/Simulink仿真环境,正在从事新能源变换、电能质量治理、电机驱动或电力系统方向研究的研究生、高校教师及企业研发工程师。; 使用场景及目标:①开展三电平VIENNA整流器、双有源桥DAB、LLC谐振变换器等先进拓扑的科研建模与论文复现;②完成课程设计、毕业设计或实际工程项目中的控制器开发与系统性能验证;③深入掌握双闭环控制架构、中点电位平衡机制、SVPWM调制策略及系统稳定性分析等核心知识点; 阅读建议:建议结合Mathcad计算书进行系统参数设计,理解控制算法的数学基础,并在Simulink中逐步搭建与调试模型,注重理论计算与仿真结果的对比分析,推荐按照资源目录顺序循序渐进学习,以建立完整的知识框架和技术实现能力。

三相充电桩维也纳PFC+三电平LLC谐振变换器三电平PSIM仿真设计(Simulink仿真实现)

内容概要:本文档聚焦于电力电子与电力系统领域的仿真设计,重点围绕三相充电桩中维也纳PFC(Vienna Power Factor Correction)整流器与三电平LLC谐振变换器的联合系统展开,提供基于PSIM和Simulink平台的完整仿真设计方案。内容涵盖9kW三相三开关维也纳PFC整流器的Mathcad计算书、双闭环控制策略、中点电压均衡控制、SVPWM调制技术及电流过零畸变消除方法等关键技术环节,并配套详细的仿真模型与设计报告。此外,文档整合了丰富的电力电子拓扑资源,包括图腾柱PFC、交错并联PFC、双有源桥DAB、CLLC谐振变换器、双向Buck-Boost等典型电路结构,覆盖Matlab/Simulink、Plecs、PSIM等多种仿真环境,形成从理论计算、建模、控制算法设计到性能优化的一体化技术体系。; 适合人群:面向具备电力电子、电气工程、自动化等相关专业背景,熟悉Matlab/Simulink/PSIM等仿真工具,从事新能源汽车充电技术、高效率AC-DC/DC-DC变换器设计、电力系统能量管理等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①支持三相高功率因数校正与高效DC-DC变换系统的科研仿真与教学实践;②用于PI控制、前馈控制、SVPWM、软开关技术、中点电位平衡、双闭环动态响应等核心控制算法的研究与验证;③服务于毕业设计、科研课题、学术论文复现及实际工程项目开发,提升系统级建模与优化能力。; 阅读建议:建议结合Mathcad计算书与仿真模型同步学习,优先掌握维也纳PFC与LLC的基本工作原理与参数设计流程,再深入理解双闭环控制系统架构与关键控制策略,推荐先运行Simulink模型观察动态波形响应,并参考附带文献深化理论认知与工程实现能力。

RabbitMQ—队列参数

queue队列参数,包括了死信队列的讲解

可达鸭的博客 2669

量子-经典混合架构与动态QUBO建模

量子-经典混合架构与动态QUBO建模的结合,是当前量子计算与经典计算融合领域的前沿方向。通过将量子计算的并行性与经典计算的灵活性结合,该技术为解决复杂动态优化问题(如实时调度、金融投资组合优化、电力系统控制等)提供了全新的方法论。:将发电机组调度分解为QUBO(启停决策)与非QUBO(功率分配)子问题,通过3块ADMM协调;c_i(t) $随外部环境(如电力需求、市场价格)动态调整。量子-经典混合架构与动态QUBO建模的结合,标志着优化计算从。:每分钟根据市场波动调整QUBO的收益率-风险系数;

百态·数智思维 | 聚焦大数据、量化与未来AI 1334

北京Dotnet分享会 || 精英论坛第三期

编者按:没有一成不变的定律,没有长久不衰的流行,更没有一劳永逸的侥幸,只有自己刻苦努力、脚踏实地、兢兢业业的学习和工作,才会成为这个社会永远不会被淘汰的中流砥柱。一、昨...

dotNET跨平台 439

f103vet6 SD卡SDIO+DMA配置避坑指南:从初始化卡死到稳定读写的全流程解析

本文详细解析STM32F103VET6芯片SD卡SDIO与DMA配置中的常见问题,从初始化卡死到读写不稳定的全流程解决方案。重点分析总线宽度配置、时钟分频调整及DMA通道管理技巧,帮助开发者避开常见陷阱,实现稳定高效的数据存储。

u0v1w2x3的博客 666

深入解析PCIe Retimer:工作原理与典型应用场景

本文深入解析了PCIe Retimer的工作原理与核心价值。作为高速信号的中继再生器,Retimer通过时钟数据恢复和信号再生技术,有效解决长距离或复杂通道中的信号衰减与完整性问题,从而极大地扩展了PCIe链路的有效传输距离。文章详细阐述了其内部架构、自动与手动两种工作模式,并重点介绍了在长距离板间互连、复杂背板设计等典型应用场景中的关键作用。

weixin_29195615的博客 506

常用的设计模式以及操作Redis、MySQL数据库、各种MQ、数据类型转换的方法

📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、优快云博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。🌎跑过十五公里、徒步爬过衡山、🔥有过三个月减肥20斤的经历、是个喜欢躺平的狠人。

我是Java程序员廖志伟,感谢朋友们的支持! 417

UDS(三)网络层时间参数

网络层定义了N_Ar、N_As、N_Br、N_Bs、N_Cr、N_Cs六个时间参数。 网络层在检测到错误的时间传递至上层使用者 1.当N_As 超时时,即发送方没有及时发送出N_PDU,系统将放弃信息的接收并传递<N_Result> = <N_TIMEOUT_A>的N_USData.comfirm指示 2.当N_Ar超时时,即接收方没有及时发送出N_PDU,系统将放弃信息的接收并传递<N_Result> = <N_TIMEOUT_A>的N_USData.co

weixin_44522306的博客 1万+

读构建可扩展分布式系统:方法与实践06异步消息传递

异步消息传递

lyingSeven的博客 1200

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.5 RTC设备编写与实现

4. Linux kernel RTC子系统goldfish_rtc driver分析。电脑,会需要时间,还比如 我们的手机、平板,都需要时间;驱动基本就是应用层需要什么数据你给什么数据就行,基本必须实现的就是。3.2 Linux kernel RTC 设备描述符讲解。中看到他的具体实现,也可以根据他的寄存器描述直接在。5. 将驱动添加进kernel和测试RTC驱动。系统来说,时间是一个非常重要的功能;之类的函数接口,接下来我们就开始讲解如何写。,所以我们直接移植设备树即可。,他的寄存器很简单,你可以从。

DSMGUOGUO的博客 568

AgentScope实战训练营- Java从零开始快速构建Agent完整教程

本文基于阿里巴巴开源的 AgentScope Java 框架,从零开始手把手带你构建 AI 智能体应用。内容涵盖环境搭建、基础对话、工具调用、结构化输出、多Agent流水线、Hook可观测性、会话持久化、MCP协议、RAG知识库集成、多模态工具、技能系统、Spring Boot Web部署等21个核心模块,附带完整可运行代码示例,帮助Java开发者快速掌握Agent开发全流程。

program哲学 863

2025年Java开发者终极学习路线图:从零基础到架构师

Java作为企业级应用开发的中流砥柱,其生态系统持续繁荣发展。本指南将为你提供一份系统化的Java开发者学习路线图,帮助你从零基础逐步成长为资深架构师,掌握2025年Java开发所需的核心技能与前沿技术。 ## 为什么选择Java开发? Java凭借其跨平台特性、强大的生态系统和企业级支持,始终保持着技术领域的重要地位。无论是大型企业应用、移动开发(Android)、云计算还是大数据处理,Ja

gitblog_01102的博客 968

【unity实战】随机地下城生成3——设置人物移动脚本、动画的切换和摄像机的跟随(含源码)

给房间添加触发器碰撞体,用来判断角色是否进入房间切割人物图片,注意人物每个图片高度可能不同,所有我们需要把轴心调整到人物的底部把人物跑步图片的高度,统一调成20,下面镂空,达到跳跃的效果快速创造人物动画,以人物idle为例,我们选中所有的idle人物图片,拖拽至窗口,unity就会自动生成,并提示保存动画位置别忘记设置人物排序图层,运行人物就动起来了新增run动画设置人物碰撞体设置刚体将重力设置为0,持续人物移动和动画切换的代码设置摄像机跟随单例代码在room中调用。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1052

SOFA Weekly | MOSN、SOFABoot、SOFATracer 发布新版本,QA 整理

SOFA WEEKLY | 每周精选,筛选每周精华问答同步开源进展,欢迎留言互动SOFAStack(ScalableOpenFinancialArchitecture Stack)是...

金融级分布式架构 367

C++大牛的博客

1. C++大牛的博客     Bjarne Stroustrup的博客: Bjarne Stroustrup’s Homepage Bjarne Stroustrup,不认识的可以去面壁了,没有他,就没有我们现在的饭碗。Bjarne Stroustrup是丹麦人,目前任教于TAMU。他的Homepage和他的书籍The C++ Programming Language一样

程序猿老樊的博客 6244

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

后端开发技术栈盘点:常用工具与框架实用指南

后端开发的安全不是只管登录和支付,而是从设计阶段就要前置考虑。常见的安全漏洞里,排行第一的永远是“数据越权”,而不是SQL注入。防止水平越权的唯一有效手段是统一鉴权中台,把你的用户角色、权限模型从业务代码里抽离出去,部署为独立服务。JWT令牌看似安全,但你得明白JWT的无状态性意味着无法主动作废已泄露的token,把JWT当成万能钥匙用,最后才发现你连换锁的能力都没有。HTTPS是基础,但真正的安全漏洞往往出在内部API的相互调用上:让内网服务之间的通讯裸奔,等同于给攻击者留后门。

2501_90410679的博客 12

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Pulsar 特性在 AI 场景中的使用

Pulsar 作为消息中间件的中流砥柱,以其更鲜明的存算分离、云原生特性,可发挥着更大的价值

羑悻的博客. 1万+

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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数字电路存储单元:锁存器与触发器的核心原理与应用

在数字电路设计中,时序逻辑单元是实现数据存储与同步操作的基础。锁存器和触发器作为核心存储元件,其工作原理直接影响系统的稳定性和性能。锁存器属于电平敏感器件,在使能信号有效期间输出随输入实时变化,适用于简单的数据保持场景;而触发器采用边沿触发机制,仅在时钟信号的上升沿或下降沿瞬间捕获输入数据,确保了状态更新的同步性。这种同步特性对于现代大规模集成电路至关重要,因为它能有效避免因信号延迟差异导致的竞争冒险现象,使时序分析更加清晰可控。从应用层面看,D触发器因其结构简单、时序行为确定,成为寄存器、计数器和状态机等

weixin_34315485的博客 374

PHP多进程消费队列

引言 最近开发一个小功能,用到了队列mcq,启动一个进程消费队列数据,后边发现一个进程处理不过来了,又加了一个进程,过了段时间又处理不过来了...... 这种方式每次都要修改crontab,如果进程挂掉了,不会及时的启动,要等到下次crontab执行的时候才会启动。关闭(重启)进程的时候用的是kill,这可能会丢失正在处理的数据,比如下面这个例子,我们假设sleep过程就是处理逻辑,这里为了明显看...

weixin_30611509的博客 273

嵌入式开发与互联网编程:技术栈、职业路径与选择指南

在计算机技术领域,嵌入式系统和应用软件开发代表了两种核心的技术路径。嵌入式开发聚焦于软硬件协同,涉及微控制器、实时操作系统和底层驱动,要求开发者具备硬件认知和资源受限环境下的编程能力,其技术价值在于实现对物理世界的精确控制与实时响应,广泛应用于工业自动化、汽车电子和物联网设备。应用软件开发则构建于抽象层之上,关注业务逻辑、分布式架构和高并发处理,依托丰富的框架与中间件生态快速迭代。从技术原理看,嵌入式开发更强调纵向深度与确定性,而应用开发侧重横向广度与扩展性。在职业发展上,嵌入式工程师经验累积效应明显,扎根

weixin_34293246的博客 380

从零构建开源项目:定位、架构与社区运营全指南

开源项目是现代软件开发中实现技术民主化、避免供应商锁定的重要手段。其核心原理在于通过开放协作、透明治理,让开发者能够共同构建、改进和掌控技术栈。这种模式的技术价值在于降低了创新门槛,促进了技术生态的多样化,并为企业提供了可定制、可审计的替代方案。在应用场景上,开源项目广泛应用于云原生基础设施、开发框架、数据存储及隐私优先工具等领域。本文以构建具有“继承人”潜力的高质量开源项目为主题,深入探讨了如何通过精准定位、模块化架构设计以及自动化流水线等工程实践,打造一个可持续发展的开源生态。文中特别强调了社区驱动和协

weixin_33719619的博客 427
上一篇: Thrift那点事
下一篇: “不懂异步的过来”
@云师兄
博客等级 码龄10年 10粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值