部署两台Service,如何在WEB中随机访问任意一台Service

MinIO vs FastDFS:从8个维度对比选型与Docker部署实践 本文深入对比MinIO与FastDFS在架构设计、性能表现、生态兼容性等8个维度的差异,并提供详细的Docker部署实践指南。通过性能测试数据与真实案例,展示MinIO在云原生环境下的优势,包括极简部署、卓越吞吐量和完美S3兼容性,帮助开发者快速构建高效对象存储解决方案。 阅读详情

【部署两台Service,如何在WEB中随机访问任意一台Service】

大家好,我是IT修真技术分享,一枚正直纯洁善良的JAVA程序员。

今天给大家分享一下,修真院官网JAVA任务八——部署两台Service,如何在WEB中随机访问任意一台Service

1.背景介绍

RMI简介

RMI(Remote Method Invocation)是JAVA早期版本(JDK 1.1)提供的分布式应用解决方案,它作为重要的API被广泛的应用在EJB中。
随着互联网应用的发展,分布式处理任务也随之复杂起 来,WebService也得到普遍的推广和应用。

2.知识剖析

  RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。
   可以用此方法调用的任何对象必须实现该远程接口。

调用这样一个对象时,其参数为 “marshalled” 并将其从本地虚拟机发送到远程虚拟机(该远程虚拟机的参数为 “unmarshalled”)上。
该方法终止时,将编组来自远程机的结果并将结果发送到调用方的虚拟机。
如果方法调用导致抛出异常,则该异常将指示给调用方。

3.常见问题

为什么要使用RMI,有什么优点

4.解决方案

优点:

1、面向对象:

RMI可将完整的对象作为参数和返回值进行传递,而不仅仅是预定义的数据类型。
也就是说,可以将类似Java哈西表这样的复杂类型作为一个参数进行传递。

2、可移动属性:

RMI可将属性从客户机移动到服务器,或者从服务器移动到客户机。

3、设计方式:

对象传递功能使您可以在分布式计算中充分利用面向对象技术的强大功能,如二层和三层结构系统。
如果用户能够传递属性,那么就可以在自己的解决方案中使用面向对象的设计方式。
所有面向对象的设计方式无不依靠不同的属性来发挥功能,如果不能传递完整的对象——包括实现和类型
——就会失去设计方式上所提供的优点。

4、安全性:

RMI使用Java内置的安全机制保证下载执行程序时用户系统的安全。
RMI使用专门为保护系统免遭恶意小程序侵害而设计的安全管理程序。

5、便于编写和使用

RMI使得Java远程服务程序和访问这些服务程序的Java客户程序的编写工作变得轻松、简单。
远程接口实际上就是Java接口。

5.编码实战
如何实现(serer之间的切换)

import com.jnshu.czm.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.Random;
public class SwitchService {
private static Logger logger = LoggerFactory.getLogger(SwitchService.class);
private static ApplicationContext applicationContext =
new ClassPathXmlApplicationContext(“rmiClient.xml”);
public static UserService getUserService() {
UserService userService = null;
Random random = new Random();
int i = random.nextInt(2);
if (i == 1) {
try {
logger.error(“get data from server1”);
userService = (UserService) applicationContext.getBean(“RmiService1”);
} catch (Exception e) {
logger.error(“get a error,turn to server2”);
userService = (UserService) applicationContext.getBean(“RmiService2”);
}
} else {
try {
logger.error(“get data from server2”);
userService = (UserService) applicationContext.getBean(“RmiService2”);
} catch (Exception e) {
logger.error(“get a error,turn to server1”);
userService = (UserService) applicationContext.getBean(“RmiService1”);
}
}
return userService;
}
}

6.扩展思考
7.参考文献
百度、维基、优快云

8.更多讨论

Q1:

registryPort和servicePort?

A1:

注册端口:registryPort 注册端口是RMI注册远程服务的端口。

服务端口:servicePort RMI的通讯需要的传送数据的端口。如果没有设置servicePort,则使用随机端口。

Q2:

RMI 服务器重启,总是会出现客户端连接拒绝的问题。

A2:

服务器重启会影响到客户端,说明客户端有保存着重启之前的服务器连接相关记录。有可能是客户端有缓存,所以只要刷新缓存即可解决问题。

Q3:

Spring RMI会占用两个端口?

A3:

Spring RMI 有两个端口,一个是注册端口(默认为1099),还有一个是数据传输端口,如果不指定,数据传输端口是随机分配的。

鸣谢:

感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。


今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。

快来与我一起学习吧~http://www.jnshu.com/home

腾讯视频:https://v.qq.com/x/page/f0708rblz6a.html

Ubuntu 20.04部署ClickHouse的系统级调优指南 ClickHouse作为高性能列式OLAP数据库,其亚秒级响应与亿级聚合能力高度依赖底层Linux环境的精准配置。原理上,它通过内存映射(mmap)、稀疏索引和向量化执行实现极致性能,但该模型与通用操作系统默认策略存在根本冲突——如Ubuntu 20.04默认的vm.swappiness=60会触发灾难性swap,ulimit -n=1024则导致高并发下文件描述符耗尽。技术价值在于将通用OS改造为专用OLAP平台,关键包括systemd资源限制强化、内核参数调优(swappiness=1、max_map_ 阅读详情

相关推荐

HTTP协议与IIS底层原理:Web开发者的地基课

HTTP协议是Web通信的基石,其无状态设计、请求响应模型及头部机制深刻影响着性能、安全与兼容性;IIS作为Windows平台主流Web服务器,依托HTTP.SYS内核驱动、应用程序池隔离与集成管道模式,构建了高可靠托管运行环境。理解HTTP报文解析、TCP连接复用策略、Cookie生命周期、P3P隐私头演进,以及IIS中经典/集成模式差异、AppDomain隔离机制和ASP.NET请求管道19个执行步骤,不仅能精准定位503/500错误、静态资源授权失效、Session丢失等典型问题,更能为.NET Fr

dingguayi7025的博客 442

服务调用方式

服务调用方式

magic_818的博客 1674

PicoClaw+D213ECV极简AI部署:面向工业边缘的轻量服务框架

轻量级AI服务框架是边缘计算落地的关键基础设施,其核心在于以最小资源开销实现模型加载、HTTP响应与内存可控性。PicoClaw通过mmap按需分页、静态链接HTTP服务器、GGUF原生支持等机制,在资源受限设备上达成低延迟(<150ms)、低内存占用(<430MB)与高稳定性。它并非通用大模型API服务,而是专为国产ARM工控平台(如匠芯创D213ECV)深度优化的嵌入式推理载体,解决工业场景中‘部署成功但无法持续服务’的典型痛点——包括冷启动超时、OOM崩溃、动态库依赖失败及内核兼容性问题。本文聚焦其在

weixin_33853827的博客 309

利用Tomcat建立多个Web Server的方法

当你使用Tomcat作为Web Server的时候,是不是会想过这样的一个问题:如何利用Tomcat建立多个Web应用 呢?要实现这一点是很简单的,也有多种方法。(以下说明使用%tomcat_home%代表Tomcat安装目录)。一.首先介绍一下Tomcat及server.xml.Tomcat服务器是由一系列的可配置的组件构成,tomcat的组件可以在%tomcat_home%/conf/server.xml文件中进行配置,每个Tomcat组件和server.xml文件的一种配置元素对应.主要分为4类:1.

路人甲的专栏 836

libtiff 4.2.0深度解析:ABI变更、编译陷阱与生产级部署

TIFF是一种广泛用于遥感、医疗影像和地理信息系统的专业图像格式,其底层I/O依赖libtiff库实现跨平台读写。libtiff作为开源图像协议栈的核心组件,不仅提供基础API,更通过ABI(应用二进制接口)定义了与OpenCV、GDAL、ImageMagick等关键工具链的兼容契约。libtiff 4.2.0是该生态中一次标志性升级,它在移除旧JPEG依赖、默认启用ZSTD压缩、重构内存映射错误恢复机制的同时,也引入了隐性ABI断裂——如TIFF结构体字段类型变更与符号版本升级,导致运行时段错误频发。本文

weixin_30698527的博客 284

windows随机端口生成函数

get_free_port 通过系统bind函数随机生成未使用的端口,并返回。

如何随机选择网络端口发送数据

在搜索QUdpSocket使用的时候看到一个帖子,感觉很NB,顾粘贴过来,谨防以后用到 帖子原址: https://bbs.youkuaiyun.com/topics/390921296 发送端口不需要固定什么4000,随机由UdpClient 选择一个发送端口就行。发送之后,立刻读取数据。而服务器端从端口8000接收到请求,应该立刻向客户端(接收消息时就会获得RemoteIpEndPoint客户端对外端...

houge101的博客 1515

解决AutoDock与Python版本冲突导致的内存泄漏问题:从BHtree *错误到环境配置优化

本文深入解析了AutoDock分子对接中常见的‘BHtree *’内存泄漏错误,其根源在于SWIG接口模块与Python运行环境的版本不匹配。文章提供了根治方案:通过构建Python 2.5.4与MGLTools 1.5.6的黄金兼容组合,并详细指导环境清理、安装配置及实战测试,从而彻底解决该内存泄漏问题,确保AutoDock工作流的稳定运行。

g5h6i的博客 1113

Java微服务多主机搭建尝试

在各个服务器声明单个节点节点间进行信息交互,建立集群第一类(简单类):在启动阶段可由用户自主配置集群节点的IP与端口,自动建立集群关系,如:nacos, elasticsearch第二类(复杂类):在启动阶段没有提供配置集群节点的接口,集群关系建立需进入容器使用对应的命令,如:rabbitmq用于内部访问的所有端口是否都暴露,如果没有请暴露至外网,否则将无法建立跨域集群各个必须的端口间是否有默认规则,如果有请遵守。

weixin_43008154的博客 2005

STM32 HAL 硬件IIC驱动BNO085:从移植到姿态解算全流程解析(附源码)

本文详细解析了STM32 HAL库下硬件IIC驱动BNO085 IMU传感器的全流程,包括CubeMX配置、驱动移植、传感器初始化、Q格式数据处理及四元数转欧拉角解算。提供了完整的源码实现和常见问题解决方案,帮助开发者快速掌握高精度姿态测量技术。

palm99的专栏 1047

使用Python爬虫抓取公共交通网站的时刻表

Python爬虫是一种通过自动化方式从网页中抓取数据的程序。爬虫通过模拟用户请求,获取网站的HTML页面内容,并通过解析这些HTML内容,提取出我们需要的信息。requests:用于向网站发送HTTP请求并获取响应。:用于解析HTML文档,提取数据。Selenium:用于处理动态加载的网页,模拟浏览器操作。pandas:用于数据处理和分析,方便存储和操作抓取到的数据。本文介绍了如何使用Python爬虫抓取公共交通网站的时刻表,并提取其中的关键信息。我们使用了requestsSelenium和。

2201_76125261的博客 1119

java部署web service的方式

部署web service的方式一般有两种: 1. 编写java源文件,将文件的java后缀改为jws,然后部署到webapps/axis目录下,axia引擎可以直接执行源文件中定义的java方法为web service;另外,要让你的web应用服务器识别jws文件需要确定已在web.xml中配置servlet(如果你依照本文方法采用拷贝axis目录为工作起点的话,可以不考虑这步): &lt...

weixin_30886233的博客 70

27、目标识别的最新进展

本文综述了目标识别(OID)领域的最新进展,重点介绍了质量评估、预处理和搜索空间缩减等关键技术。文章分析了多种质量指标,如缩减率、对完整性、召回率和精确率等,并探讨了它们的适用场景。同时,详细介绍了预处理中自动学习转换规则的方法,以及传统阻塞、排序邻域索引等搜索空间缩减技术。此外,文章还讨论了动态选择缩减技术的方法,并展望了未来研究方向,如更智能的预处理、自适应的缩减技术和与人工智能的结合。希望这些技术和方法能够为目标识别领域的研究和实践提供参考和帮助。

q5r6s7的博客 91

动态调用Web Service的方法

下面这个例子可以供参考 /**//// &lt;summary&gt;/// 根据指定的信息,调用远程WebService方法/// &lt;/summary&gt;/// &lt;param name="url"&gt;WebService的http形式的地址&lt;/param&gt;/// &lt;param name="namespace"&gt;欲调用的WebService的命名

weixin_34309435的博客 83

MyBatis-Plus 实战:敏感字段自动加解密支持模糊查询

本文基于MyBatis-Plus框架提出了一种全链路敏感字段加密方案。通过自定义TypeHandler实现数据入库自动加密和查询自动解密,结合重写LambdaQueryWrapper处理查询条件加密,并适配多种查询方式。方案核心包括:1)AESUtil工具类提供加解密基础能力;2)EncryptTypeHandler实现字段类型转换;3)实体类通过注解配置加密字段。该方案在保证数据安全的同时,对业务代码侵入性小,支持姓名、手机号等敏感信息的全流程加密处理,满足系统开发的安全需求。

蔡定努 595

Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)

本文介绍了如何基于Spring Boot 3.2、Spring AI 1.0.0-M4、DeepSeek API和Redis构建具备上下文记忆功能的智能聊天应用。项目采用现代化技术栈,包括Java 17、Maven、Lombok等,实现了智能对话、会话管理、异常处理等核心功能。文章详细讲解了环境搭建、配置管理(含Redis和AI服务集成)、核心组件设计(如消息实体、控制器和服务层实现),以及完整的项目结构。该项目提供了美观的Web界面和REST API,支持对话上下文存储(通过Redis实现)和系统监控,可

博客 828

如何5分钟快速部署NzbDav:从零开始构建无限Plex/Jellyfin媒体库 [特殊字符]

你是否梦想拥有一个无限容量的媒体库,无需占用本地存储空间,还能享受高速流媒体体验?今天,我将为你揭秘NzbDav——这个革命性的Usenet流媒体工具,让你在短短5分钟内搭建起一个完整的媒体流媒体系统!NzbDav不仅仅是一个下载工具,它是一个WebDAV服务器和SABnzbd兼容API的完美结合,让你能够直接从Usenet提供商流媒体内容到Plex或Jellyfin,完全无需本地存储。 ##

gitblog_00788的博客 959

信贷模型域——清收阶段模型(贷后模型)

本文深入探讨了信贷模型域中的清收阶段模型(贷后模型),涵盖早期催收模型(C卡)、晚期催收模型、Best Time to Contact模型和回收模型。这些模型通过多维度数据输入,运用分类、回归和生存分析等建模方法,输出关键指标如还款概率、回收率等,广泛应用于银行、资产管理公司和催收外包公司,助力提升回款率、优化资源分配、降低催收成本,并融入贷后风控体系。

庄小焱 651

Julia Web应用开发:高计算密度场景下的实时交互实践

Web应用中的实时交互能力,本质依赖于后端计算响应的确定性与低延迟。当业务涉及数值模拟、参数敏感性分析或模型拟合等高计算密度任务时,传统Web框架常因I/O与计算耦合导致响应卡顿、资源浪费。Julia凭借JIT编译、原生多线程和零成本抽象,在此类场景中展现出独特优势——尤其在‘计算即服务’(Computation-as-a-Service)范式下,可将毫秒级数值运算无缝暴露为Web端点。结合PlutoSliderServer的函数即端点设计与HTMX的HTTP流式响应机制,开发者能绕过SPA复杂性,用声明式

weixin_30876945的博客 403

黑猫带你学eMMC协议第29篇:eMMC设备锁详解(CMD42)

通过cmd42命令,可以给emmc设置密码,并且锁定emmc。这时候就不能对emmc的user分区进行读写数据访问了。设备锁在V4.3版本后的emmc里面,就只能保护user area分区,因此,被锁定的emmc,依旧可以正常访问BOOT\RPMB\GPP分区。emmc内部有128 bit PWD寄存器,用来存放密码,以及有8bit PWD_LEN寄存器,用来密码长度。这两个寄存器非易失性,掉电也不会丢失。

黑猫奥利奥的博客 3236

STM32F407中文手册

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

大数据之hbase(一) --- HBase介绍,特性,安装部署,shell命令,client端与hbase的交互过程,编程API访问hbase实现百万写入

一、HBase介绍 ---------------------------------------------- 1.基于hadoop的数据库,具有分布式,可伸缩的大型数据储存 2.用于对数据的随机访问,实时读写 3.巨大的表,十亿行*百万列 4.版本化、非关系型数据库 二、HBase特性 --------------------------------...

xcvbxv01的博客 341

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ZeroClaw vs OpenClaw:揭秘LLM部署内存优化99%背后的技术原理与选型

在大型语言模型(LLM)应用部署领域,内存占用是影响硬件成本和服务性能的关键瓶颈。其核心原理在于模型权重、运行时激活值及框架开销对内存的消耗。通过量化、内存映射和运行时优化等技术,可以显著降低资源需求,提升部署效率。这为在资源受限的边缘设备或高并发生产环境中运行AI服务提供了可能。本文聚焦于**Rust**与**Node.js**两种技术栈在LLM服务部署中的实践,通过对比ZeroClaw和OpenClaw的设计哲学与内存管理机制,深入分析了“-99%内存”宣称背后的具体条件、技术实现及适用场景,为开发者根

482

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

Web无插件视频播放全解析:从HTML5 Video到HLS流媒体实战

在Web开发中,视频播放是构建多媒体应用的核心需求。其基本原理是利用浏览器原生支持的HTML5 `<video>`标签及相关JavaScript API,实现无需额外插件的音视频解码与渲染。这项技术的核心价值在于提供了跨平台、高安全性和高性能的标准化解决方案,有效替代了传统的Flash等插件。从技术实现层面看,它涉及对视频容器格式(如MP4)、编码格式(如H264)、传输协议(如HTTP)的深入理解,以及如何通过播放器库(如Video.js)进行功能封装与兼容性处理。在实际工程应用中,开发者需要根据具体场景

weixin_30352191的博客 600

java ee 7 配置_JAVA EE 7有哪些主要的实现

展开全部Java EE 7新功能1.3.1 新的规范新规范的主要功能描述如下。1.Java API for WebSocket通过声明e68a8462616964757a686964616f31333361313337方式注解一个POJO或者通过编程方式实现接口来定义一个WebSocket的客户端和服务器端点。提供服务器特定的配置,比如在容器的URI空间中、端点支持的子协议中,以及应用程序所需的...

weixin_31958413的博客 145

2080 Ti 22G本地部署Qwen3.6-35B-A3B实战指南

大语言模型本地部署的核心在于显存容量与访问延迟的精准匹配,而非单纯追求算力峰值。INT4量化、KV Cache优化和CUDA版本兼容性共同构成消费级GPU运行35B级模型的技术基础。RTX 2080 Ti通过显存扩容至22GB,结合Qwen3.6-35B-A3B特有的INT4权重压缩与Turing架构适配kernel,在低延迟交互场景下实现稳定43.7 tokens/s推理,支撑32K上下文无OOM运行。该方案规避了云API调用限制与token计费焦虑,适用于法务、产品、技术文档等需数据离线处理的轻量级专业

weixin_30905981的博客 538
上一篇: 什么是restful?rest方法有哪些?有什么区别?
下一篇: 拦截器、过滤器、监听器各有什么作用?
learning__java
博客等级 码龄8年 87粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值