14_面向对象高级_泛型

C#中高级编程实战:面向对象、泛型、LINQ与异步编程核心解析 面向对象编程(OOP)是现代软件开发的基石,其封装、继承、多态三大特性为构建模块化、可复用的代码提供了核心框架。通过封装隐藏内部实现细节,继承实现代码复用,多态则赋予程序运行时动态行为的灵活性。这些原理共同支撑起C#等现代编程语言构建复杂、可维护系统的技术价值。在实际工程实践中,OOP思想广泛应用于上位机软件、Web API服务、桌面应用等场景,其中泛型技术通过类型参数化实现了类型安全的高复用代码,LINQ(语言集成查询)则统一了数据查询范式,极大提升了开发效率。结合异步编程模型(async/await), 阅读详情

泛型

1. 认识泛型

定义类、接口、方法时,同时声明了一个或多个类型变量(如:),称为泛型类、泛型接口、泛型方法、它们统称为泛型。

2. 泛型类
public class Test {
    public static void main(String[] args) {
        MyArrayList<String> list = new MyArrayList<>();
        System.out.println(list.add("Jack"));  // true
        System.out.println(list.get(0));  // Jack
    }
}

// 自定义一个泛型类,去模拟 ArrayList
class MyArrayList<E> {  // 如果不想规范地写,其实E也可以写成其他字母
    private Object[] arr = new Object[10];  // 容器,用来装东西
    private int size;  // 记录当前装了多少个

    public boolean add(E content) {
        arr[size++] = content;
        return true;
    }

    public E get(int index) {
        return (E) arr[index];
    }
}
public class Test {
    public static void main(String[] args) {
        MyClass<String, String> obj = new MyClass<>();
        obj.put("只能是String类型", "只能是String类型");
//      Others<String> obj1 = new Others<>();  // 报错
        Others<MyClass> obj2 = new Others<>();  // 正常
        System.out.println(obj2.age);  // 输出结果:0

    }
}

class MyClass<E, T> {
    public void put(E e, T t) {

    }
}

// 要求 E 的类型是继承 MyClass 或者 E 的类型是 MyClass
class Others<E extends MyClass> {
    public int age;
}
3. 泛型接口
  • 注意:类型变量建议用大写的英文字母,常用的有:E、T、K、V 等
import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {

    }
}

class Student {

}

class Teacher {

}

// 泛型接口
interface Data<E> {
    void add(E obj);

    ArrayList<E> getByName(String name);

}

// 实现类
class StudentData implements Data<Student> {

    @Override
    public void add(Student obj) {

    }

    @Override
    public ArrayList<Student> getByName(String name) {
        return null;
    }
}

// 实现类
class TeacherData implements Data<Teacher> {

    @Override
    public void add(Teacher obj) {

    }

    @Override
    public ArrayList<Teacher> getByName(String name) {
        return null;
    }
}
4. 泛型方法

案例一

public class Test {
    public static void main(String[] args) {
        System.out.println(get(10));  // 10
        System.out.println(get("Java"));  // Java
        System.out.println(get(new A()));  // 对象的内存地址: login.A@3b07d329
    }

    // 泛型方法
    public static <T> T get(T name) {
        return (T) name;
    }

    // 泛型方法
    public static <E> void run(E index) {

    }
}

class A {

}

案例二

通配符:就是" ? ",可以在"使用泛型"的时候代表一切类型;E T K V 是在定义泛型的时候使用

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        // 需求:实现所有的汽车都能一起参加比赛
        ArrayList<Car> cars = new ArrayList<>();
        cars.add(new BMW());
        cars.add(new BENZ());
        go(cars);

        ArrayList<BMW> bmws = new ArrayList<>();
        bmws.add(new BMW());
        bmws.add(new BMW());
        go(bmws);

        ArrayList<BENZ> benzs = new ArrayList<>();
        benzs.add(new BENZ());
        benzs.add(new BENZ());
        go(benzs);

        ArrayList<Dog> dogs = new ArrayList<>();
        dogs.add(new Dog());
        dogs.add(new Dog());
//      go(dogs);  // 报错

    }

    // <T>是没有限制数据类型的泛型,如果我们加一个限制条件,不要让狗类进来,可以这样写:<T extends Cars>,完整代码如下一行所示
    public static <T extends Car> void go(ArrayList<T> allCars) {

    }

    // 知识扩展:
    // ? 是通配符,在使用泛型的时候可以代表一切类型" ? extends Car "【上限】  " ? super Car "【下限】
//    public static void go1(ArrayList<? extends Car> allCars) {}
//    public static void go2(ArrayList<? super Car> allCars) {}
}

class Car {

}

class BMW extends Car {

}

class BENZ extends Car {

}

class Dog {

}
5. 注意事项
  • 泛型是工作在编译阶段的,一旦程序编译成 class 文件,class 文件中就不存在泛型了,这就是泛型擦除。
  • 泛型不支持基本数据类型,只能支持对象类型(引用数据类型)
import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
//      ArrayList<int> list1 = new ArrayList<>();  // 报错
        ArrayList<Integer> list2 = new ArrayList<>();  // 正常
    }
}
1.4:C++的标准化和发展!(课程共6100字,4段代码举例分析) 最后,良好的编程习惯和代码风格也是C++语言开发中需要注意的问题。需要注重代码的可读性、可维护性和可扩展性,避免使用过多的全局变量和宏定义等不利于代码维护的方式。同时,需要注重代码的注释和文档,以便他人更好地理解和使用代码。 阅读详情

相关推荐

30、探索C++编程:面向对象与泛型编程的深度解析

本文深入探讨了C++中的面向对象编程和泛型编程,结合实际案例解析了设计模式、智能指针、RAII等特性,并介绍了C++在现代软件开发中的应用。通过学习本文,读者可以更好地掌握C++的高级特性和编程范式,从而编写出高效、安全和可维护的代码。

sugar的博客 205

C++ 侯捷系列视频汇总

前言 既然说好了要好好学习C++,侯捷大神的视频岂能不看,此处继续挖坑,进行相关视频的汇总工作。 目录 C++面向对象高级开发 Startup揭秘(工程实践) C++内存管理(工程实践) STL与泛型编程 新标准C++11-14 后记 努力肝,才会有上流道长的荣耀。 ...

小小博客 7667

C++权威指南:深入学习C++ 2nd Edition

C++的复杂数据类型包括结构体(struct)、联合体(union)、枚举(enum)和类(class)。它们为数据的组织和抽象提供了更丰富的结构。// 定义结构体int x;int y;// 使用结构体Point p;p.x = 5;p.y = 10;函数是组织代码的重要方式之一,它允许我们将重复使用的代码块封装起来,便于管理和复用。// 函数声明// 函数定义// 函数调用在C++中,类是创建对象的蓝图。类定义包含数据成员(属性)和成员函数(方法)。

weixin_35916518的博客 629

【高级编程技术】第14周作业

For a python course 410

全面掌握C++核心概念和新特性

在C++中,类是一种用户自定义的数据类型,它允许程序员将数据和操作数据的函数封装在一个单独的实体中。对象是类的实例,每个对象都拥有类定义的属性和方法。public:// 构造函数,初始化矩形的宽度和高度// 设置矩形的宽度// 获取矩形的宽度// 设置矩形的高度// 获取矩形的高度// 计算矩形的面积private:int width_;// 矩形的宽度// 矩形的高度函数模板是一种用于生成函数的模板机制,允许程序员编写与数据类型无关的代码。

weixin_35390379的博客 607

《C++编程思想(第二版)》完整示例源码解析

封装是面向对象编程的核心特性之一,它通过将数据和操作数据的方法绑定在一起,使得对象的状态对外部隐藏,仅通过接口进行交互。在 C++ 中,类(class)是实现封装的基本机制。C++ 提供了三种访问控制修饰符:publicprotected和private,用于控制类成员的可见性。public:成员对外部可见,可被类的实例访问。protected:成员仅对类自身及其派生类可见。private:成员仅对类自身可见,派生类也不能访问。

weixin_42510201的博客 502

【无标题】

这篇C++学习指南提供了系统的学习路径,从基础语法到现代特性,涵盖内存管理、并发编程等核心主题。重点包括:标准库使用、智能指针、设计模式、模板编程等实践技巧,并推荐配套工具和经典书籍。适合循序渐进地掌握C++开发能力,强调理论结合实践,可扩展为完整的进阶教程。

woflvv的博客 700

Unity游戏Mono注入实战:从反编译到功能扩展

本文详细介绍了Unity游戏Mono注入的完整实战流程,从使用dnSpy反编译游戏核心逻辑,到编写自定义C#功能DLL,再到利用SharpMonoInjector进行动态注入。文章深入讲解了如何通过Harmony库拦截修改游戏方法,并介绍了使用MelonLoader框架和UnityExplorer进行高级模组开发与调试,最终通过一个游戏对象透视(ESP)案例演示了功能扩展的实现。

weixin_29018335的博客 458

C++阶梯学习指引

学习C++是一个循序渐进且需要持续实践的过程。每个阶段都要通过大量编码来巩固知识,并勇于挑战更复杂的项目。遇到困难时,善用文档(祝你在C++的学习之旅中取得成功!

qq_32576083的博客 360

STM32F103C8T6 Bootloader开发实战:串口IAP固件升级与Keil工程配置详解

本文详细介绍了STM32F103C8T6 Bootloader开发实战,重点讲解串口IAP固件升级的实现方法与Keil uVision5工程配置。通过Flash分区管理、USART1通信协议设计及应用程序跳转机制等核心技术,帮助开发者掌握嵌入式系统固件升级方案,提升设备维护效率。

weixin_29165725的博客 436

时间序列学习(4):平稳性检验(单位根检验、ADF检验)

时间序列学习(4):平稳性检验(单位根检验、ADF检验)1、单位根检验2、ADF检验3、指数走势的检验4、对数收益率序列检验 相关图可以大致判断序列是否平稳。但是,这毕竟不是严格的。 这篇笔记来就谈一谈平稳性的检验。 到目前为止,我们有了以下的时间序列模型: 白噪声; 随机游走; AR模型; MA模型; ARMA模型。 我们知道白噪声、MA模型一定是平稳的(这里的平稳都是弱平稳);随机游走一定是不平稳的;ARMA模型取决于其AR部分。 所以唯一需要做平稳性检验的就是AR模型。 1、单位根检验 先来看一阶

lucialucia的博客 7万+

重新抓起C++啃吧!

加油!

平凡的心 426

手把手教你用FPGA实现SGMII接口:从IP核配置到板级调试全流程

本文详细介绍了如何在Xilinx 7系列FPGA上实现SGMII(Serial Gigabit Media Independent Interface)接口的全流程,包括IP核配置、约束编写和硬件调试。通过具体的硬件选型建议、软件工具链配置和PCB设计规范,帮助开发者快速构建稳定可靠的千兆通信链路,并提供了常见故障排查和性能优化技巧。

weixin_29194693的博客 296

c++是什么!!!

最近,网上说c++是高级版的Pascal!!!我是真的蒙蔽了(服了当代人的想象力),c++是c的高级本!!! 下面介绍一下,来自于百度,本人改变!!! C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。[1] C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质..

lover_putter的博客 1955

【YOLO多模态检测顶刊】TGRS 2025范文解读,RGFNet 可见光-红外图像融合目标检测,2026年基于YOLO多模态融合属于发文热点,小论文和大论文通用,通读顶刊了解做实验和论文写作的全流程

🔥本文提出了一种反射率引导的渐进特征对齐网络(RGFNet)用于全天候无人机目标检测。该方法利用Retinex理论从可见光图像中提取光照不变的反射率特征,设计了反射率引导协同对齐模块(RCAM)实现跨模态双向特征对齐,并通过光照感知选择性融合模块(LSFM)在共享状态空间中进行高效特征交互。在DroneVehicle和DVTOD数据集上的实验表明,RGFNet分别达到81.4%和88.5%的mAP,显著优于现有方法。该方法有效解决了低光照条件下可见光-红外图像特征错位问题,为全天候无人机检测提供了新思路。

Ai缝合怪、助力小伙伴高效发论文 1077

【即插即用模块】Transformer篇 | AAAI 2026 | Circulant Attention:全新ViT自注意力范式,复杂度从O(N²) 降至O(NlogN)!

本文提出了一种基于频域优化的循环注意力模块(Circulant Attention),通过离散傅里叶变换(DFT)将传统自注意力中的矩阵乘法转化为频域元素乘法,显著降低了计算复杂度。该模块采用复数线性层适配频域特征,并引入门控调制机制增强表达能力,在保持全局依赖捕捉能力的同时,将复杂度从O(N²)降至O(NlogN)。实验表明,该模块在多种视觉任务中均能提升模型性能,且计算效率更高。适用于需要高效全局注意力的视觉Transformer架构,可作为传统自注意力的替代方案。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 151

面向对象高级之 泛型

1.泛型是什么定义类、接口、方法时,同时声明了一个或者多个类型变量如<E>,称为泛型类、泛型接口、泛型方法,统称为泛型比如ArrayList就是一个泛型类登录后复制 public class test { public static void main(String[] args) { ...

weixin_40782824的博客 66

YOLOv26与其他目标检测算法的对比分析

本文对YOLOv26与其他主流目标检测算法进行了全面对比分析。YOLOv26在COCO数据集上达到96.0% mAP@0.5和79.0% mAP@0.5:0.95,显著优于其他YOLO系列算法,同时保持85FPS的推理速度和35MB的轻量级模型。相比两阶段算法(如Faster R-CNN),YOLOv26在速度、模型大小和内存占用方面优势明显;相比Anchor-free算法(如CenterNet),YOLOv26在速度和模型压缩方面更优。其核心创新包括动态锚框分配、自注意力机制和轻量级设计,使其成为适用于复

一键难忘的博客 993

第23节课-泛型-笔记

本文介绍了Java中包装类和泛型的相关知识。首先讲解了包装类的概念及其与基础类型的关系,然后重点介绍了泛型的应用:包括方法中使用泛型简化代码(如printArray方法),泛型类的创建(如TempData类)及其应用场景。通过示例代码展示了如何定义和使用泛型方法与泛型类,包括类型参数的使用、泛型方法的调用以及泛型类的实例化。最后提供了一个抽奖箱Box类的实现练习,演示了泛型在实际开发中的应用价值。

2401_87769916的博客 1600

树冠体积计算之体元累加法

因为是自己之前研究的一个方向,就复现了一下论文中的这个方法,在此正好记录一下。 文章目录一、简介二、代码实现(MATLAB)三、小结 一、简介 简而言之,其实就是一句话,即以固定大小的体元模拟不规则的树冠形状。按照论文中的思路主要就是将树冠沿树高方向以 k 为步长进行等距离分段,把每一段树冠的点投影到垂直于树高方向的平面上,再对该平面划分成大小为 k × k 的像元,根据投影到各个像元内点的数量,判断该像元的有效性,统计有效像元的数量 T,则树冠体积为 T 个 k × k × k 的体元之和。如下图所示:

dayuhaitang1的博客 2606

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java中的泛型<T>类与方法

泛型就是变量类型的参数化。在使用泛型前,存入集合中的元素可以是任何类型的,当从集合中取出时,所有的元素都是Object类型,需要进行向下的强制类型转换,转换到特定的类型。而强制类型转换容易引起运行时错误。 泛型类型参数只能被类或接口类型赋值,不能被原生数据类型赋值,原生数据类型需要使用对应的包装类。 例子一:使用了泛型 1 2 3 4

雨日微风 7万+

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

泛型通配符实例

泛型的通配符: ? 作用: 作为方法的参数集合的泛型使用,可以接收任意的数据类型 不能创建对象使用 初级使用: 我把一些注释,都写在了详细的文档中。 1 package com.cyl.demo; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 6 ...

weixin_30522183的博客 221

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

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

# Unity C#进阶:掌握泛型编程,告别重复代码,编写优雅复用的通用组件!(Day26)

经过前几周对C#基础、面向对象、数据结构以及Unity核心机制的学习,我们已经打下了坚实的基础。今天,我们将迈向一个能显著提升代码抽象层次和复用性的高级主题——泛型编程(Generic Programming)。泛型是C#中一项强大的特性,它允许我们编写与具体数据类型无关的、通用的代码模板。在Unity开发中,熟练运用泛型不仅能减少冗余代码,还能提高代码的类型安全性和性能。

吴师兄大模型的博客 1529

泛型编程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.youkuaiyun.com/hxp1994/article/details/89944253 ———————————————— 简述:泛型程序设计其实就是编写的程序他不依赖具体的数据类型。 思想:主要是把具体的算法从特定的一些数据...

qq_40760291的博客 184

STL标准库与泛型编程(侯捷)笔记2

介绍分配器allocator,还有容器list的底层实现,讨论iterator traits的设计

阿正的梦工坊 1770

【Swift】Swift基础语法:面向对象、扩展、协议与泛型

Swift中的继承与多态支持单继承,子类通过override关键字重写父类方法和计算属性。构造器分为默认、逐一、指定、便利和必要五种类型,其中指定构造器需初始化所有属性并调用父类构造器,便利构造器则调用同类指定构造器。析构器用于资源释放,仅类支持。多态通过父类指针指向子类实例实现,final关键字可防止继承或重写。结构体自动生成默认和逐一构造器,类的构造器代理机制确保初始化顺序正确。

Antonio915的博客 1182
上一篇: 13_面向对象高级_枚举
下一篇: 01_使用API_Object类与包装类
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值