实现类的序列化--例子将Vector对象压入标准流

栈的压入、弹出(针对vector数组和队列不同 的使用方法) 针对vector和队列分别使用了2个代码,当然思想是一样的,但是操作起来有一点不太一样,其中vector不能使用pop_back,因为数组并没有delete,所以只能用遍历,但是队列可以只用用pop,所以这是二者之间最大的区别,如果题目没有要求,我建议用队列的方法,这样用起来比较方便,下面分别列举二者的代码: vector数组版: class Solution { public: b... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 实现Vector对象的序列化 将Vector对象压入标准流 作者:jackliu 出处:中文Java技术网 Vector对象是一个很灵活的java数据结构,在实际编程中,有时需要我们将一个Vector对象传递给另一个Java程序并保持Vector的数据结构状态,这时,我们可以将需要传递的对象实现java.io.Serializable接口,序列化这个类,由于序列化本身就是允许一个对象在虚拟机之间传送(或者经过一段空间,如在RMI中;或者经过一段时间,比如数据流被保存到一个文件中)。 关于类的序列化请查阅相关资料,本篇不在叙述,下面使用一个简单的程序说明如何把一个Vector对象序列化并放到一个流中(为了测试方便,这里放到一个文件流中,如果换成一个套接字就可以把对象发送给远程请求者) 程序1:把一个Vector对象存储到一个testvector.obj文件里(模拟server socket处理)



import java.io.*;

import java.util.*;



class TestVector implements java.io.Serializable{

        private Vector vect=new Vector();

        

        public void add(Object obj){

                this.vect.add(obj);

        }

        public void print(){

                System.out.println(this.vect);

        }

        public static void main(String[] args){

                try {

                        /* 将对象写到一个文件里 */

                        FileOutputStream objfile = new FileOutputStream("testvector.obj");

                        /* 创建一个输出流 */

                        ObjectOutputStream p = new ObjectOutputStream(objfile);

                        /* 创建一个TestVector对象 */

                        TestVector tv =new TestVector();

                        /*给Vector写入几String个对象*/

                        tv.add("One");

                        tv.add("Two");

                        tv.add("Three");

                        p.writeObject(tv); // 把tv写入流

                        p.flush();

                        objfile.close();    // 关闭文件对象

                } catch (Exception e) {

                        e.printStackTrace();

                }

        }

}

编译程序1,运行后,在当前目录生成一个testvector.obj文件,这个文件里存放了TestVector类的数据 程序2:从testvector.obj文件里获取TestVector对象(模拟socke客户端)



import java.io.*;

import java.util.*;



class ReadVectorObj{

        public static void  main (String[] args){

                try {

                        /* 打开文件,读取Vector 存放的对象数据 */

                        FileInputStream objfile = new FileInputStream("testvector.obj");

                        ObjectInputStream q = new ObjectInputStream(objfile);

                        /* 获取对象原始数据 */

                        TestVector myvector = (TestVector)q.readObject();

                        myvector.print(); 

                } catch (Exception e) {

                        e.printStackTrace();   

                }

        }

}



编译程序2,运行后,读取testvector.obj文件,根据内容构建出原始的TestVector类。 参考1:对象序列化知识 参考2:列表: 下面列出了被标记为serializable的类:(这些类的子类也都是可序列化的) java.lang.Character java.lang.Boolean java.lang.String java.lang.StringBuffer java.lang.Throwable-(包括所有Exception的子类) java.lang.Number-(包括Integer、Long等) java.util.Hashtable java.util.Random java.util.Vector-(包括Stack) java.util.Date java.util.BitSet java.io.File java.net.InetAddress java.rmi.server.RemoteObject AWT类 基本数据类型数组 对象数组是可序列化的(尽管对象有可能不是可序列化的)
C++ IO流深度解析:从基础概念到文件与字符串流实战应用 在C++编程中,输入输出(IO)是程序与外部世界交互的核心机制。其原理基于流(Stream)这一抽象概念,它将数据视为连续的字节序列,通过统一的接口处理不同来源和目的地的数据,如控制台、文件和内存。这一设计提供了强大的技术价值,使得代码能够以一致的方式处理多样化的IO任务,从而提升开发效率和程序的可维护性。在实际应用场景中,开发者需要掌握流的状态管理、格式化控制以及缓冲区机制,以构建高效可靠的数据处理管道,例如实现日志系统、配置文件解析或进行数据持久化。本文聚焦于C++ IO流体系,深入探讨文件流(fstr 阅读详情

相关推荐

C++文件操作与重定向:从流抽象到工程实践

在C++编程中,输入输出流(Stream)是处理数据流动的核心抽象概念,它将数据源与目的地统一为一条连续的“数据管道”。其基本原理是通过封装底层设备操作,为控制台、文件乃至内存字符串提供一致的读写接口。这一设计极大地提升了代码的复用性和可维护性,其技术价值在于实现了程序与外部数据源的解耦,使得数据处理逻辑独立于具体的IO设备。在实际应用场景中,无论是需要持久化存储用户配置、记录程序运行日志,还是进行自动化批量测试与数据处理,都离不开对文件流的精细控制或对标准输入输出的重定向。本文聚焦于C++的**文件操作*

weixin_30292843的博客 380

C++ 序列式容器之vector

什么是容器   容器,顾名思义,是用来容放东西的场所。C++容器容放某种数据结构,以利于对数据的搜寻或排序或其他特殊目的。众所周知,常用的数据结构不外乎:数组array, 链表list, 树tree, 栈stack, 队列queue, 散列表hash table, 集合set、映射表map 等等。容器便是容纳这些数据结构的。这些数据结构分为序列式与关联式两种,故容器也分为序列式容器和关联式容器。                    (图来自《STL源码剖析》) vector容器 1. vec.

C语言实战大全 2954

Unity WebGL移动端触控异常解决方案:从事件机制到Input System实战

在跨平台游戏开发中,输入事件处理是连接用户交互与程序逻辑的核心桥梁。其原理在于将物理输入(如触摸、点击)转换为程序可识别的数据流,这一过程直接影响用户体验的流畅度与精准度。对于Unity WebGL项目而言,其技术价值在于能够在浏览器环境中实现接近原生的高性能交互,尤其适用于教育仿真、轻量级游戏、产品展示等需要跨平台便捷访问的应用场景。然而,移动端浏览器基于触摸事件(TouchEvent)的交互机制与桌面端的鼠标事件存在本质差异,这导致了坐标映射偏差、多点触控失效等典型问题。本文聚焦于Unity WebGL

weixin_34293246的博客 425

C++ 序列容器Vector各种方法实现原理(带你从本质理解Vector容器)

vector容器与动态数组相同,在插入或者删除元素的时候能够自动调整容器大小,即vector容器能够自动处理存储数据所需要的空间。vector容器中的元素放在连续的内存空间中,可以使用迭代器对其进行访问和遍历。

WdIg-2023的博客 2293

C++输入输出流深度解析:从cin/cout到文件与字符串流实战

输入输出(I/O)是计算机程序与外部世界交互的基础机制,涉及数据在内存、存储设备和网络之间的流动。其核心原理在于通过抽象层(如流)统一不同设备的访问方式,以提升代码的可移植性和可维护性。在C++中,I/O的技术价值体现在其强大的类型安全、格式化控制及可扩展性上,是构建健壮、高效应用的关键。常见的应用场景包括控制台交互、文件持久化、数据解析及日志记录等。本文聚焦C++标准库中的流(Stream)体系,深入探讨缓冲区管理、格式控制及错误处理等实战技巧,并解析如何通过文件流与字符串流处理复杂数据,帮助开发者规避常

注重长远 天天积累 cqujsjcyj 384

C++20 std::osyncstream:多线程安全输出的高效解决方案

在多线程编程中,线程安全是核心挑战之一,尤其是在涉及共享资源如标准输出流时。传统方案通常依赖互斥锁来保护对流的访问,但这会引入性能开销和代码复杂性。C++20标准引入的std::basic_osyncstream(常用特化版本为std::osyncstream)提供了一种更优雅的解决方案。其原理是为每个线程提供一个独立的输出缓冲区,线程在本地无锁地构建完整的消息,仅在提交时通过原子操作一次性写入底层流,从而保证了消息的完整性和输出顺序。这项技术的价值在于显著降低了锁竞争,提升了高并发场景下的输出性能,同时简

weixin_30482181的博客 398

C++学习 优雅的实现对象到文件的序列化/反序列化 关键字serialize

需要使用到序列化场景的需求 在写代码的过程中,经常会需要把代码层面的对象数据保存到文件,而这些数据会以各种格式存储.例如:json,xml,二进制等等.二进制,相比json,xml格式,直接把字节copy到硬盘,所以这实现起来相对容易. 例子 下面是一个简单的三维向量结构体,如何把它序列化到文件呢? struct Vec3 { float x; float y; float z; } Vec3 v; v.x = 1.0f; v.y = 2.0f; v.z =

CHYabc123456hh的博客 1033

基于对象输入输出流和数据结构的图书管理系统

基于对象输入输出流和数据结构的图书管理系统JAVA应用程序,DOS版,实现了图书清单打印、添加图书、删除图书、修改图书、查询图书等功能。

string、vector和map的序列化和反序列化

最近在做序列化和反序列化的学习,在此记录一下,以后写了新的数据类型再加进来。 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<fstream> #include<vector> #include<map> #include<li...

chenbiyun940419的博客 3675

LCD驱动芯片——BL55072A驱动程序

初始化子程序: START 0x7C; I2C子地址 0xEA;ICSET,软件复位芯片 0xC0;MODSET,关显示 0xF0;BLKCTL,关闪烁 0xA3;DISCTL,80Hz Line inversion,High Power mode 0xE8;ICSET,清复位bit1 STOP 显示刷新子程序: START 0x7C;I2C子地址 0xF0;BLKCTL,关闪烁 0xA3;DISCTL,80Hz Line inversion,High Power mode 0xE8或0xEC;ICSE

love421的博客 3176

数分实战(01):Global_Superstore数据集解析与商业洞察

本文以Global_Superstore零售数据集为例,手把手指导数据分析实战全流程。从数据清洗、探索性分析到深度商业洞察,详细解析了如何通过Python处理缺失值与异常值,进行销售利润分析、客户细分与地理分析,并探讨了折扣与利润的微妙关系。文章旨在帮助读者建立数据分析思维框架,从数据中挖掘可指导实际业务决策的核心洞察。

weixin_28487433的博客 343

实现Vector对象的序列化的例子

实现Vector对象的序列化 将Vector对象压入标准流 作者:jackliu 出处:中文Java技术网 Vector对象是一个很灵活的java数据结构,在实际编程中,有时需要我们将一个Vector对象传递给另一个Java程序并保持Vector的数据结构状态,这时,我们可以将需要传递的对象实现java.io.Serializable接口,序列化这个类,由于序列化本身就是允许一个对象...

weixin_33974433的博客 583

告别手动配置!用Vector vLinkGen 2.1.0自动生成AUTOSAR链接脚本(附bss段配置详解)

本文详细介绍了如何使用Vector vLinkGen 2.1.0工具自动生成AUTOSAR链接脚本,告别繁琐的手动配置。通过解析vLinkGen的核心架构和bss段配置实践,帮助开发者提升嵌入式软件开发效率,支持多种主流编译器,实现精确的内存分配和初始化策略。

weixin_28716181的博客 379

深入解析C++流I/O:从基础概念到高级应用与性能优化

流(Stream)是计算机科学中处理数据输入输出的核心抽象概念,它将数据视为连续的字节序列,在源与目的地之间流动。其设计原理基于面向对象思想,通过封装底层设备差异,提供统一的读写接口。这项技术的核心价值在于实现了数据处理的设备无关性和格式控制,极大地提升了代码的可移植性和可维护性。在实际应用场景中,流I/O广泛用于文件操作、控制台交互、数据解析和日志记录等。本文聚焦C++标准库中的流I/O体系,深入探讨其缓冲区管理机制、格式化控制方法以及如何通过重载运算符实现自定义类型的I/O操作,并针对文件流操作和字符串

357

NGSIM数据集字段解析:从车辆轨迹到交通行为分析

本文深度解析NGSIM数据集的核心字段及其在交通行为分析中的应用。详细解读了车辆时空定位、状态属性及交互关系等关键字段,并通过高速路“幽灵堵车”和城市路口左转行为两个实战案例,展示了如何利用该数据集进行微观交通行为建模与驾驶特征提取,为交通流研究和自动驾驶算法测试提供数据基础。

weixin_29172963的博客 148

Android投屏开发实战:手把手教你用Miracast实现Sink端功能(附完整代码)

本文是一份Android投屏Sink端开发的实战指南,详细讲解了如何利用Miracast协议和Wi-Fi P2P技术,从零构建一个功能完整的屏幕接收器。内容涵盖环境搭建、通过反射启用WFD Sink模式、RTSP协议协商、RTP流接收与解析,以及最终使用IjkPlayer进行音视频解码播放的全过程,并附有核心代码示例。

cherry的博客 881

C++ IO流核心概念与实战应用详解

IO流是C++中处理输入输出的核心机制,通过面向对象方式抽象数据流动过程。其核心原理是将数据视为字节序列,利用流缓冲区实现高效传输。相比C语言的printf/scanf,C++流提供了类型安全、可扩展的接口设计,支持操作符重载实现链式调用。关键技术价值包括自动类型转换、缓冲区管理以及多态扩展能力,广泛应用于文件操作、字符串处理、日志系统等场景。本文深入解析标准流对象(cin/cout)、文件流(fstream)和字符串流(sstream)的使用技巧,并探讨线程安全、性能优化等工程实践问题,帮助开发者掌握C+

weixin_33984032的博客 507

FRM(Financial Risk Manager,金融风险管理师)知识点总结归纳

FRM知识点总结(150字) FRM考试分为两级:一级侧重基础理论和工具,包含风险管理基础、定量分析、金融市场产品、估值与风险建模四大模块,涵盖风险管理框架、统计学方法、衍生品定价及VaR计算等核心内容。二级聚焦实际应用,分为市场风险、信用风险、操作风险、流动性风险、投资管理和市场前沿六大模块,深入探讨高级风险度量技术(如极值理论)、信用风险模型、巴塞尔协议及新兴风险议题。考试体系贯穿"风险识别→度量→管理→监管"逻辑主线,强调定量分析与实务案例的结合,覆盖传统金融风险和区块链、ESG等

极客神殿 1443

C++流类继承体系与I/O操作深度解析

C++标准库中的流类体系是I/O操作的核心框架,采用面向对象设计思想构建了完整的继承层次。从基类ios_base到模板化的basic_istream/basic_ostream,这套体系通过多重继承和虚函数机制实现了类型安全的输入输出功能。流缓冲区机制(basic_streambuf)作为底层支撑,负责缓冲管理和字符操作,而文件流(ifstream/ofstream)和字符串流(stringstream)等具体实现则扩展了不同场景的应用能力。在工程实践中,理解流类继承关系有助于优化I/O性能,例如通过调整缓

csxc65837的博客 353

文石NoteX3国行版安装 Google Play经验分享

文石NoteX3国行版安装 Google Play经验分享。

2301_80693261的博客 7609

把 ABAP 选择屏幕 Selection Screen 打造成可维护的交互面板:常用屏幕元素与动态控制全解析

本文详细介绍了ABAP报表中Selection Screen的设计技巧,包括空行(SKIP)、横线(ULINE)、注释(COMMENT)等基础元素的使用方法,以及如何通过MODIF ID实现动态界面调整。重点讲解了行内布局(BEGIN OF LINE)、按钮(PUSHBUTTON)和区块(BLOCK)等高级功能,帮助开发者将选择屏幕从"能用"提升到"好用、易扩展、可维护"的水平。文章还分享了项目实践中的命名规范和分组策略,特别适合需要优化ABAP报表用户体验的开发人员

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 332

暨南大学计算机考研机试备考指南与高频考点解析

计算机考研机试是复试中的重要环节,主要考察数据结构与算法的实际应用能力。机试通常采用OJ系统,要求考生在限定时间内完成编程题目,涉及字符串处理、二叉树遍历、动态规划等核心算法。这些算法不仅是计算机科学的基础,也是解决实际工程问题的关键工具。例如,字符串处理中的Manacher算法可以高效求解最长回文子序列问题,而动态规划则广泛应用于优化问题。在备考过程中,掌握高频考点如字符串处理、二叉树遍历等,并通过四步解题法(问题转化、算法选择、边界处理、优化验证)提升解题效率。暨南大学机试题目难度梯度分布明显,基础题占

weixin_30596735的博客 410

计算机控制技术及应用

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

C++异常处理与文件操作实战:构建健壮I/O程序的RAII与错误处理

在C++编程中,异常处理是程序应对运行时错误的防御机制,它通过try-catch块和栈展开实现从错误中恢复,而非直接崩溃。文件操作则是程序与外部存储交互、实现数据持久化的核心手段,涉及文本与二进制文件的读写、定位及状态管理。两者的结合对于构建健壮、可靠的应用程序至关重要,尤其是在处理磁盘I/O、网络流等易出错场景时。通过RAII(资源获取即初始化)技术,可以确保在异常发生时资源(如内存、文件句柄)被自动释放,避免泄漏。本文以C++标准库的fstream和异常体系为基础,深入探讨了如何将异常安全机制与文件操作

weixin_34228387的博客 512

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Go / C / Python / Java 四语言对照学习总览

按统一维度横向对比四门语言的核心知识点,便于交叉记忆与迁移学习。

2401_83227843的博客 956

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

Unity AI副驾驶实战:基于MCP协议重塑游戏开发流程

在AI驱动的软件开发浪潮中,大型语言模型(LLM)与专业开发工具的深度集成正成为提升生产力的关键。其核心原理在于通过标准化的协议,让AI模型能够安全、结构化地感知和操作开发环境,从而将AI从被动的代码助手转变为主动的“开发副驾驶”。这一技术价值在于,它能将开发者从繁琐、重复且需要大量上下文切换的“脏活累活”中解放出来,使其更专注于核心创意与设计。在游戏开发领域,这一结合尤其具有变革潜力。以Unity引擎为例,通过实现MCP(Model Context Protocol)协议服务器,可以为AI副驾驶暴露项目资

weixin_30629653的博客 414
上一篇: Java实例技术手册 中国电力出版社
下一篇: 《程序员 2001增值合订本》
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值