chap8-泛型程序设计

Cisco(56)——PAP和CHAP 说明:R1,R3,R5,R7,R9的S1/1的地址为1.1.1.1/24,R2,R4,R6,R8,R10的S1/1的地址为1.1.1.2/24,实验步骤省略配置hostname和IP地址的过程! 一:PAP的单向认证,R1为认证方 R1(config)#username R2 password 0 123 R1(config)#interface serial 1/1 R1(confi... 阅读详情

chap8-泛型程序设计

泛型

泛型基础

  1. Java5中引入泛型;
  2. ArrayList<String>:<>表示类型参数
  3. 定义简单泛型类:
public class Pair<T>
{
    private T first;
    private T second;
    public Pair(){first = null; second = null;}
    ...
}
//多个泛型类型
public class Pair<T , U>
{
    ....
}
  1. 注意泛型方法定义,泛型方法可以在普通类中定义,也可以在泛型类中定义;
    //单一个方法既使用泛型的时候也使用可变参数,此时容易导致堆污染
    public static <T> T getMiddle(T... a)
    {
        return a[a.length / 2];
    }
String mid = ArrayAlg.<String>getMiddle("John" , "Q." , "Public");
  1. **当调用一个泛型方法时,可以把具体类型包围在尖括号中,放在方法名前面;**c++则是将具体类型放在方法名后面;
  2. 泛型类或方法可以对类型变量加以约束:<T extends Comparable>,<T extends bounding type>: T是其子类型,可以是接口或类;多个约束: <T extends Comparable & Serializable>;
  3. 在Java继承中,可以根据需要拥有多个接口超类型,但最多有一个限定可以是类,如果有一个类作为限定,它必须是限定列表中的第一个限定;
  4. 虚拟机没有泛型类型对象,所有对象都属于普通类,无论何时定义一个泛型类型,都会自动提供一个相应的原始类型,这个原始类型的名字就是去掉类型参数后的泛型名称,类型变量会被擦除类型擦除,并替换为其限定类型;无限定的变量替换为Object;
  5. 原始类型用第一个限定来替换类型变量,如果没有给定限定 ,就替换为Object;
  6. 编写一个泛型方法调用时,如果擦除了返回类型,编译器会插入强制类型转换,当访问一个泛型字段时,也要插入强制类型转换;
  7. Java虚拟机的类型擦除会与多态产生冲突,解决方案是使用桥方法,在Java虚拟机中,一个方法由返回类型和参数类型共同指定,编译器可以为2个仅返回类不同的方法生成字节码,虚拟机能够正确处理这种情况,但我们不允许编写仅返回类型不同的方法;
  8. Java泛型转换总结:
    • 虚拟机中没有泛型,只有普通类和方法(类型擦除);
    • 所有的类型参数都会替换为它们的限定类型;
    • 会合成桥方法来保持多态;
    • 为保证类型安全性,必要时会插入强制类型转换;

  1. Java泛型限制:

    • 不能用基本类型实例化类型参数(原因在于类型擦除,Object类型不能存储int, double,值)
    • 运行时类型查询只适用于原始类型,虚拟机中的对象总有一个特定的非泛型类型,所有的类型查询只产生原始类型;同理,getClass()方法总是返回原始类型;
    • 不能创建参数化类型的数组: Java不支持泛型类型的数组;
    var  table  =  new Pair<String>[10];		//ERROR!!!!
    //如果需要收集参数化类型对象,可以简单使用:   ArrayList<Pair<String>>
    
    • 不能实例化类型变量:
    public Pair(){ first  = new T() ;  second = new T();}		//ERROR!!
    
    • 不能构造泛型数组
    • 泛型类的静态上下文中类型变量无效,不能在静态字段或方法中引用类型变量,静止使用带有类型变量的静态字段和方法;
    • 不能抛出或捕获泛型类的实例,即不能抛出,也不能捕获泛型类的对象,泛型类扩展Throwable都是不合法的,catch字句中不能使用类型变量;
    • 可以利用泛型取消Java的检查型异常检查
    • 注意泛型类型擦除后产生的冲突:倘若两个接口类型是同一接口的不同参数化,一个类或类型变量就不能同时作为这两个接口类型的子类

泛型类型的继承规则

  1. 无论S 与T有什么关系,Pair<S> , Pair<T>都没有任何关系;
  2. 泛型类可以扩展或实现其他的泛型类;

通配符类型

  1. 在通配符中,子类型限定通配符允许类型参数发生变化:Pair< ? extends Employee>:限定泛型只能为T类型的子类或本身;
//可以将Pair<Manager> , Pair<Employee>传递给该方法参数  , 
//Pair<Manager>  是Pair<? extends Employee>的子类型
public  static  void  printBuddies(Pair<? extends Employee> p)
  1. 超类型限定:<? super T> : 限定泛型只能为T类型的父类或本身,可以为方法提供参数,但不能使用返回值;
  2. 带有超类型限定的通配符允许你写入一个泛型对象,而带有子类型限定的通配符允许你读取一个泛型对象;
  3. Java无限定通配符:类型不确定时使用:<?>
深入CHAP协议:验证机制与OpenSSL实现 CHAP(Challenge Handshake Authentication Protocol)是一种网络认证协议,用于验证远程用户或设备的身份。不同于传统的基于密码的认证方法,CHAP采用加密握手的方式确保通信双方的合法性,增加了安全性。其核心是通过挑战响应机制,周期性地验证会话的持续性和身份的合法性。OpenSSL是一个开源的软件库项目,广泛应用于互联网通信协议的安全领域,如SSL和TLS。它提供了一系列强大的加密功能,包括对称加密、非对称加密、哈希算法、数字签名以及证书创建和管理等。 阅读详情

相关推荐

DeepSeek安装教程

两分钟讲述deepseek正确安装教程

weixin_45906703的博客 1662

谷歌 chrome v8 引擎 初接触

chrome v8 引擎 1,从输入URL到生成DOM树 2,从DOM树到构建WebKit绘图上下文 3,绘图上下文内容并呈现图像内容 总结: 作为一个提高JavaScript渲染的高效引擎,学习V8引擎应该重点掌握以下几个概念: 1.类型。对于函数,JavaScript是一种动态类型语言,JavaScriptCore和V8都使用隐藏类和内嵌缓存来提高性能,为了保证缓存命中率,一个函数应该使用较...

weixin_44062766的博客 420

NRF24L01模块的5个常见问题及解决方案:从信号干扰到功耗优化

本文深入探讨NRF24L01无线模块在STM32开发中的5大常见问题及解决方案,包括通信距离优化、数据丢失排查、电源噪声抑制、SPI通信故障处理以及低功耗设计。通过代码示例和电路图分析,提供实用的优化策略,帮助开发者提升无线通信的稳定性和效率。

weixin_28256233的博客 226

v8,spidermonkey,chakra,spidermonkey四大主流JS引擎安装教程

四大主流JS引擎安装教程 参考网址: https://github.com/sslab-gatech/DIE/tree/master/engines 安装步骤: ./download-engine.sh ch 1.11.5 ./download-engine.sh jsc 2.23.3 ./build-ch.sh 1.11.5 ./build-jsc.sh 2.23.3 脚本含义: ./download-engine.sh:用于下载引擎源码,ch对应chakra引擎,1.11.5对应引擎版本。另:jsc

weixin_39132520的博客 1477

手把手教你调试RTL8201F:从芯片手册解读到LWIP驱动移植

本文详细解析了RTL8201F PHY芯片的开发流程,从寄存器配置到LWIP驱动移植,重点介绍了RMII模式下的特殊配置要点和调试技巧。通过实战案例和高级调试方法,帮助工程师解决网络性能问题,实现与FreeRTOS+LWIP协议栈的稳定集成。

ik678901234的博客 972

Win10 桌面回收站右键没有“清空回收站”选项怎么解决

Win10 桌面回收站右键没有“清空回收站” 选项怎么解决? 我之前不知道怎么捣鼓注册表(胡乱删了一些。。。) 导致想清空回收站的时候,右键却没有“清空回收站”这个选项了 以下是解决方法: 1、在桌面上新建一个txt文本文档,将以下代码拷贝进去: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\empty] "Com...

菜鸟的后花园 2万+

String.prototype.repeat在V8和Chakra中的实现

作者: @flowmemo源地址: http://flowmemo.github.io/2016/03/25/str... 最近一个left-pad事件搞得javascript圈沸沸扬扬的. 我们暂且把这个事情放一边, 来看看left-pad本身的实现. left-pad的源码如下: module.exports = leftpad; ...

weixin_34032779的博客 208

医疗领域BGE-M3模型微调全流程:从数据准备到效果评估

本文详细介绍了医疗领域BGE-M3模型的微调全流程,从数据准备到效果评估。通过医疗数据微调,BGE-M3模型在临床问答、病历检索等场景中表现显著提升,能够准确理解医学术语之间的细微差别。文章还提供了实战练习代码和效果评估指标,帮助开发者快速掌握医疗文本嵌入模型的应用技巧。

weixin_29098367的博客 281

PointNet++改进策略 :模块改进 | x-Conv | PointCNN, 结合局部结构与全局排列提升模型性能

这篇论文介绍了一种名为PointCNN的方法,旨在从点云(point cloud)数据中学习特征。传统卷积神经网络(CNN)在处理规则网格数据(如图像)时非常有效,但由于点云是无序且不规则的,直接在其上应用卷积操作会导致形状信息丢失,并对点的排列顺序敏感。为了解决这一问题,论文提出了一种X-Conv操作。该方法通过学习一种来重新排列点云中的点并加权输入特征。然后,将典型的卷积操作应用于转换后的特征。这种方法将传统的 CNN 扩展到点云特征学习,并命名为PointCNN。

u012901740的博客 2300

uniapp - 应用软件在运行时,未见向用户告知权限申请的目的,向用户索取(存储、相机、电话)等权限,不符合华为应用市场审核标准(uniApp开发安卓APP上架应用市场审核被拒绝驳回,详细解决方案)

uniApp应用软件在运行时,未见向用户告知权限申请的目的,向用户索取(存储、相机、电话)等权限,不符合华为应用市场审核标准。uniapp vue2 vue3解决软件在运行时,未见向用户告知权限申请的目的,华为等上架被拒问题,关于华为应用市场上架需要同步告知使用权限的解决方案,uniApp应用软件在运行时,不符合华为应用市场审核标准。解决方案合集!app上架-您的应用在运行时,未同步告知权限申请的使用目的,向用户索取(相机)等权限,不符合华为应用市场审核标准。华为应用市场审核新规(未同步告知权限申请的使用目

🏆 前端领域优质创作者 4163

CHAP 挑战握手认证协议 (CHAP:Challenge Handshake Authentication Protocol)

  挑战握手认证协议(CHAP)通过三次握手周期性的校验对端的身份,在初始链路建立时完成,可以在链路建立之后的任何时候重复进行。  1. 链路建立阶段结束之后,认证者向对端点发送“challenge”消息。  2. 对端点用经过单向哈希函数计算出来的值做应答。  3. 认证者根据它自己计算的哈希值来检查应答,如果值匹配,认证得到承认;否则,连接应该终止。  4. 经过一定的随机间隔,认

xiaolantian的专栏 7935

3.2 直流无刷电机(BLDC):状态空间模型与传递函数

状态空间模型和传递函数是分析BLDC电机动态特性的重要工具。状态空间模型通过微分方程描述系统内部状态与输入输出关系,适用于多变量系统分析;传递函数则在频域表征系统特性,便于控制器设计。本文详细推导了三相坐标系和dq坐标系下的BLDC电机状态空间模型,讨论了线性化方法,并介绍了从状态空间模型到传递函数的转换过程。这些模型为BLDC电机的控制系统设计提供了理论基础。

技术工作者 243

CHAP认证原理解析

CHAP认证协议(ChallengeHandshakeAuthenticationProtocol,质询握手认证协议) CHAP认证过程比较复杂,三次握手机制。 使用密文格式发送CHAP认证信息。 由认证方发起CHAP认证,有效避免暴力破解。 在链路建立成功后具有再次认证检测机制。 目前在企业网的远程接入环境中用的比较常见。 CHAP认证过程: CHAP认证第一步:主认证方发送挑战信息

yiluyangguang1234的专栏 4万+

温度PID控制PLC程序

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

华为PPP pap和chap双向认证配置与抓包与基本ACL配置

PPP认证 加ACL综合实验 文章目录PPP认证 加ACL综合实验实验背景实验需求1.配置 PAP和IPCP动态协商2.可以在R1上看到自动获取到的IP地址3.验证PAP和IPCP4.抓包PAP分析5.开始配置CHAP6.验证双向认证通过7.抓包CHAP验证8.配置ospf实现全网通9.查看R2的路由表10.ping 10.0.0.1 测试11.配置ACL12.再次进行ping测试13.总结 实验...

胡斯涛的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【谭浩强C程序设计 学习辅导第3章】最简单的C程序设计——顺序程序设计(含详细源码)

本文是对应谭浩强C程序设计第三章程序设计练习题的详细分析内容。详细总结了顺序程序设计的解题思路和流程设计,并提供详细参考源码。

自强不息怀壮志以长行,厚德载物携梦想而抚凌。 1246

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

pap认证过程_思科课件8、PAP认证、CHAP认证

《思科课件8、PAP认证、CHAP认证》由会员分享,可在线阅读,更多相关《思科课件8、PAP认证、CHAP认证(35页珍藏版)》请在人人文库网上搜索。1、课题八 PAP认证、CHAP认证,本课题主要内容,PPP的两种认证协议 PAP配置 PAP的诊断 CHAP配置 CHAP 的诊断,8.1 PPP支持两种认证协议,PPP提供了两种可选的身份认证方法: 口令验证协议PAP(Password Auth...

weixin_30824121的博客 826

PAP和CHAP协议介绍

1. 前言PAP和CHAP协议是目前的在PPP(MODEM或ADSL拨号)中普遍使用的认证协议,CHAP在RFC1994中定义,是一种挑战响应式协议,双方共享的口令信息不用在通信中传输;PAP在RFC1334中定义,是一种简单的明文用户名/口令认证方式。2. PAPPAP全称为:Password Authentication Protocol(口令认证协议),是PPP中的基本认证协议。PAP就是普

oicq2008的专栏 1万+

php和chap,PHP与CHAP协议介绍

PAP和CHAP协议介绍1. 前言PAP和CHAP协议是目前的在PPP(MODEM或ADSL拨号)中普遍使用的认证协议,CHAP在RFC1994中定义,是一种挑战响应式协议,双方共享的口令信息不用在通信中传输;PAP在RFC1334中定义,是一种简单的明文用户名/口令认证方式。2. PAPPAP全称为:Password Authentication Protocol(口令认证协议),是PPP中的基...

weixin_29016865的博客 624

密码破解之RADIUS-CHAP-MD5

1. 遇到CHAP 客户端在进行拨号时,用户名没有被加密,而密码被加密了。 在用wireshark抓到的包中,过滤RADIUS的数据包,就会看到数据包中radius协议部分的数据: 其中的authenticator为服务器发给客户端的验证码; user-name为客户端提交的明文的没有经过加密的用户名; CHAP-Password为客户段使用验证码和密码经过运

stonesharp的专栏 3468

Java语言程序设计:Chap2——基本程序设计

关键字(keyword)被Java赋予了特殊含义,用作专门用途的字符串全部都是Java中变量、方法、类等要素命名时使用的字符序列,称为标识符。凡是自己可以起名字的地方都叫标识符。是由字母大小写、数字(0-9)、下划线和$组成的字符序列理论上可以用中文当标识符,但不推荐,容易乱码。因为Java采用Unicode字符集。必须是字母大小写,下划线__或$开头,不能是数字开头不可以直接使用保留字、关键字和特殊值作为标识符,但可以包含它们Java中严格区分大小写,长度无限制(但最好不要太长)不能包含空格注意,在起名字

V_Akoasm的博客 929

PAP认证、CHAP认证

由被验证方主动发出验证请求,包含了验证的用户名和密码。在使用PAP认证的PPP协议中,通信的双方都既是认证端,又是被认证端,需要进行双向认证。同时在被认证端配置其中的一个账号密码对,使得被认证端可以通过该账号密码取得认证端的认证。通过本次实验,了解了pap的认证方式是需要认证方发送账号密码的,而chap认证方式是直接通过用户名认证的,但是密码必须一样,并不用使用pap那条发送命令来认证的。PPP 的认证功能是指在建立 PPP 链路的过程中进行密码的验证,验证通过建立连接,验证不通过拆除链路。

sinat_53304184的博客 2198

PPP 认证 配置CHAP单向认证示例(本地认证方式)实验

PPP 认证 配置CHAP单向认证示例(本地认证方式)实验

zszfs的博客 2745

ppp chap 加密摘要_广域网PPP两板斧PAP和CHAP配置

一、拓扑二、 广域网PPP配置1、PPP两板斧之一--CHAP(发密文安全三次握手)R8模拟作为服务器端,R7作为认证端R8配置:R8(config)#username huayi password huayiinterface Serial1/0ip address 10.1.12.2 255.255.255.0encapsulation pppppp authentication chapR7...

weixin_39889642的博客 297

Proxmox VE存储网络安全终极指南:iSCSI CHAP认证配置教程

Proxmox VE Helper-Scripts是专为Proxmox虚拟化环境设计的社区脚本集合,提供了强大的存储网络安全管理功能。本文将详细介绍如何在Proxmox VE中配置iSCSI CHAP认证,确保您的存储网络安全可靠。iSCSI CHAP认证是保护存储网络的关键技术,通过双向认证机制防止未授权访问。 ## 🛡️ iSCSI CHAP认证的重要性 iSCSI(Internet S

gitblog_00894的博客 704
上一篇: java 8 Hashmap深入解析 —— put get 方法源码(转载)
下一篇: 排序小结
hellohake
博客等级 码龄10年 4543粉丝 108原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值