泛型

java学习与应用(3.5)--网络、流、方法引用

Deadly 提交于 2020-02-10 18:28:30
网络编程 C/S结构,B/S结构。TCP/IP传输控制协议/网络协议(面向连接,三次握手,无差错传输)。UDP用户数据报协议(无连接,发送端不确认接收端是否存在,64kb限制)。 IPv4地址(42亿个,每个4字节),IPv6地址(每个16字节)。网络软件打开后,由操作系统分配端口号(两个字节0-65535,1024之前的端口号已被分配)。 端口号使得数据能够正确发送到指定位置,80网络端口,3306mysql端口,oracle1521端口,tomcat端口8080. 客户端请求服务器端,建立连接IO对象,使用IO对象(网络字节流对象)进行通信。对应的类为Socket类(客户端),ServerSocket类(服务器端)。 服务器端(没有IO流)的accept方法,获取请求的客户端对象Socket。使用获取的对应客户端的Socket与该客户端交互。 Socket类,套接字(IP和端口号)。其构造方法Socket传入套接字,使用getOutputStream方法返回输出流,使用getInputStream方法返回输入流,close关闭。 客户端:getOutputStream的write方法给服务器发送数据,getInputStream的read方法读取服务器返回数据。 服务端:ServerSocket类,构造方法传入端口号建立对象,accept方法获取客户端的Socket

《深入理解C#(第3版)》

风格不统一 提交于 2020-02-10 10:06:14
《深入理解C#(第3版)》 基本信息 原书名:C# in depth 作者: (英)Jon Skeet 译者: 姚琪琳 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115346421 上架时间:2014-3-11 出版日期:2014 年4月 开本:16开 页码:1 版次:1-1 所属分类:计算机 > 软件与程序设计 > C/Turbo C > 综合 更多关于》》》 《深入理解C#(第3版)》 编辑推荐 资深C# MVP扛鼎之作   深入理解语言特性,探究本源    .NET开发人员必读经典 内容简介 书籍 计算机书籍   《深入理解c#(第3版)》是c# 领域不可多得的经典著作。作者在详尽地展示c# 各个知识点的同时,更注重从现象中挖掘本质。本书深入探索了c# 的核心概念和经典特性,并将这些特性融入到代码中,让读者能够真正领会到c# 之“深入”与“精妙”。在第2 版的基础上,本书新增了c# 5 的新特性——异步,并更新了随着技术的发展,已经不再适用的内容,确保整本书能达到读者期望的高标准。   如果你略微了解一点c#,就可无障碍地阅读本书。 媒体评论   “学习C#语言特性的最佳资源。”   ——Andy Kirsch,Venga   “本书使我的C#水平更上一层楼。”   ——Dustin Laine,Code Harvest   “每一位

[Visual Studio] 开启Visual Studio 2012通过右键菜单创建单元测试(Unit Test)

别说谁变了你拦得住时间么 提交于 2020-02-09 08:31:37
关于单元测试,如果不会用可以参照我的上篇博文———— 在Visual Studio 2012使用单元测试 首先分享一篇博文, [Visual Studio] 开启Visual Studio 2012通过右键菜单创建单元测试(Unit Test) 。 泛型有两种,一般泛型与类型约束泛型,在对包含泛型的方法进行单元测试中也可以这么分,详情可参阅http://msdn.microsoft.com/en-us/library/vstudio/ms243401.aspx 。从该页面可以知道,关于泛型的单元测试,微软类库(Microsoft.VisualStudio.TestTools.UnitTesting)提供了类“GenericParameterHelper”帮助我们编写Unit Test代码。 首先看下非类型约束的一个demo,我就直接上代码了 public static bool IsCollectionEmpty<T>(ICollection<T> collection) { return collection == null || collection.Count < 1; } 测试代码 /// <summary> ///IsCollectionEmpty 的测试 ///</summary> public void IsCollectionEmptyTestHelper<T>()

泛型定容栈抽象数据模型

耗尽温柔 提交于 2020-02-08 16:58:29
一 API public class FixedCapcityStack<Item> public FixedCapcityStack( int cap ) 创建一个容量为cap的空栈 public void push(Item item) 创建一个字符串 public Item pop() 删除最近添加的字符串 public boolean isEmpty() 栈是否为空 public int size() 栈中字符串数量 二 代码 package FixedCapcityStack; import common.StdIn; import common.StdOut; /** * Copyright (C), 2020-2020, XXX有限公司 * FileName: FixedCapcityStack * Author: cakin * Date: 2020/2/8 * Description: 泛型定容栈 */ public class FixedCapcityStack<Item> { private Item[] a; private int N; public FixedCapcityStack( int cap ) { a = (Item[])(new Object[cap]); } public boolean isEmpty(){ return N == 0;

自定义泛型

社会主义新天地 提交于 2020-02-07 21:58:32
语法:class/interface 类名/接口名{} 注意:T只是泛型的一个标准,使用什么字符都可以,但是都要大写(不要使用特殊字符,建议用T) 可以定义多个泛型,类名后面添加<T,E,F…>,就可以了 定义一个泛型 public class GenericTest < T > { private T t ; public T getT ( ) { return t ; } public void setT ( T t ) { this . t = t ; } } 定义两个泛型 public class GenericTest2 < T , E > { private T t ; private E e ; public GenericTest2 ( T t , E e ) { this . t = t ; this . e = e ; } public T getT ( ) { return t ; } public void setT ( T t ) { this . t = t ; } public E getE ( ) { return e ; } public void setE ( E e ) { this . e = e ; } @Override public String toString ( ) { return "GenericTest2{" + "t="

五、泛型使用

蹲街弑〆低调 提交于 2020-02-07 10:04:10
官网文档地址 https://www.typescriptlang.org/docs/handbook/generics.html 泛型 软件工程的一个主要部分是构建组件,这些组件不仅具有定义良好和一致的API,而且还具有可重用性。能够处理今天的数据和明天的数据的组件将为您提供构建大型软件系统的最灵活的能力。 在C#和Java等语言中,工具箱中用于创建可重用组件的主要工具之一是 泛型 也就是说,能够创建一个可以工作于多种类型而不是单个类型的组件。这允许用户使用这些组件并使用自己的类型。 通俗理解:泛型就是解决类、接口、方法的复用性、以及对不特定数据类型的支持 使用any类型可以实现复用,但是这样就放弃了类型检查的功能。 泛型函数 泛型类型在<>中指定,一般为类型变量T function identity<T>(arg: T): T { return arg; } 添加了一个类型变量T身份函数,这T允许我们捕获用户提供的类型(例如:number),以便以后可以使用该信息。在这里,我们用T再次作为返回类型。在检查时,我们现在可以看到参数和返回类型使用相同的类型。这允许我们在函数的一边输入信息,然后将信息输出到函数的另一端。 ===== function identity<T>(arg: T): T { return arg; } let myIdentity: <T>(arg: T)

JAVA中的集合框架(上)List

╄→гoц情女王★ 提交于 2020-02-07 06:56:58
第一节 JAVA中的集合框架概述 集合的概念,现实生活中:很多事物凑在一起就是一个集合;数学中的集合:具有相同属性事物的总体;JAVA中的集合:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象。集合的作用:在类的内部,对数据进行组织(如果有些属性类型相同,但意义与作用不同,咱们就不能把它们放到集合,如学生的姓名和性别属性),简单而快速的搜索大数量的条目。 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素; 有的集合接口,提供了映射关系,可以通过关键字key去快速查找到对应的唯一对象,而这个关键字可以是任意类型。 集合其实就是用来承装其它对象的容器。 与数组相比,为何选择集合而不是数组?数组的长度固定,还得复制,集合的长度可变。数组只能通过数组下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象,数组还要遍历元素比较麻烦。 集合的框架体系结构: 将collection想象成单身宿舍,三个子接口。 1.List(序列):排列有序,可重复 2.Queue(队列):排列有序,可重复 3.set(集):无序,不可重复 将map当成成对出现,Collection 是存储的一个一个的对象,而Map提供映射的关系,内部以的Key,Value两个对象为一个映射来存储数据,Entry类(键值对)是Map的内部类,Key

clr via c# 泛型

我的未来我决定 提交于 2020-02-06 16:06:11
1,类型对象,对于应用程序的各种类型创建的对象叫做类型对象:Type object;对于泛型类型参数的类型,CLR同样也会创建内部类型对象,适用于 引用类型 值类型 接口类型 委托类型 具有泛型类型参数的类型称为:开放类型。 指定了泛型实参的类型称为:封闭类型。比如 Dictionary<TKey,TVale>称为开放类型,Dictionary<string,int>称为封闭类型 2,委托和接口泛型的逆变和协变。 Func<object, ArgumentException> fn1 = (x) => { Console.WriteLine(x); return null; }; Func<string, Exception> fn2 = fn1; Exception e = fn2("x"); Console.ReadKey(); 当一个委托或者一个接口类型,其泛型参数前面带in时,则允许接受该参数为其派生类的委托的实列。 当一个委托或者一个接口类型,其泛型参数前面带out时,则允许接受该参数为其基类的委托的实列。比如上面。 string 是 object 的派生类,Exception 是 ArgumentException 的基类。所以可以赋值。 3,泛型的约束 public static T Min<T>(T o1,T o2 ) where T : IComparable<T

《Java核心技术》 (《Core Jave》) 阅读笔记

旧时模样 提交于 2020-02-06 03:07:22
不得不说Sun公司核心技术丛书《Java 核心技术》 卷I 和卷II 是两本非常好的理解Java的丛书,在深入学习Java并领悟《Thingking In Java》着本书之前,《Java 核心技术》是个不错的学习选择。下面把自己的阅读笔记总结下。其中只写了最近用到的章节,其余章节如果用到之后再阅读。 《Java 核心技术 I》 1. 第3章:Java基本的程序设计结构 Java是一种强类型语言,一共有8种基本类型,4种整型、2种浮点型、1个char和1个boolean 数值类型之间的转换,当两个操作数进行二元操作时,比如加减乘除余操作,先将两个操作数转换为同一种类型,然后再进行计算     如果两个操作数中有double类型,则将另外一个非double类型转为double类型     否则,如果两个操作数中有float类型,则将另外一个非float类型转为float类型     否则,如果两个操作数中有long类型,则将另外一个非long类型转为long类型     否则,都转换为int类型 介绍了Scanner输入、printf格式化输出java.util.Arrays类对于数组的操作 2. 第4章:Java基本的程序设计结构 在类之间的常用三种关系     依赖(uses-a)、聚合(has-a)和继承(is-a) 4.2

Java基础

倾然丶 夕夏残阳落幕 提交于 2020-02-06 02:35:54
面向对象及三大特性 答:面向对象是一种思想,将复杂问题简单化,把相关数据和方法当作一个整体来看。三大特性为封装继承和多态。 封装:将事物封装为一个类,减少耦合,隐藏细节。保留接口与外界联系,当接口内部改变时,不会影响外部的调用。 继承:从一个已知的类中派生一个新的类,新类拥有已知类的属性和方法,并能重写或覆盖来增加已知类的能力。 多态:一个程序中存在多个同名的不同方法。实现方式:子类对父类的覆盖、类对方法的重载、子类作为父类对象使用。 关于封装 对类进行内部处理,在get/set方法中进行内部逻辑封装,外部直接调用。 关于继承 覆盖@Override 覆盖=重写,即父类有方法A,子类拓展了方法A并加了新功能,则称之为子类覆盖或重写了方法A。 关于多态 重载Overload 一个类中存在多个同名的不同方法,这些方法参数个数、顺序和类型不同构成方法的重载。 构造器不能被重写,但能被重载 **只有返回值不同,不构成重载!**因为有时我们调用方法并不关心其返回值。 子类对象作为父类对象使用 涉及向上转型和向下转型。向上可以直接转,子类通父类。向下需要强制类型转换,父类不懂子类。 JDK、JRE和JVM 答:基本概念如下: JDK(Java Development Kit)开发工具包,java开发环境的核心组件,提供编译调试和运行java程序所有的工具和文件。 JRE(Java