泛型

C++14学习笔记(1)——泛型Lambda

五迷三道 提交于 2019-12-08 07:59:17
经过4个月的努力,终于把《C++ Primer》的第5版看完了,第5版增加了C++11的内容。个人喜欢追随新东西,因此下一步学习目标新标准C++14。 我将发表一系列C++14的学习笔记,欢迎大家指出错误。 在看《C++ Primer》的过程中我就是用VC2015来运行代码的,经过我的亲自试验,VC2015对C++11的支持是很好的, 至少《C++ Primer》中提到的特性全部都支持 。因此我将继续用VC2015学习C++14,看看它对C++14支持到什么程度。 泛型Lambda C++11中引入了Lambda表达式,但是必须将形式参数声明为具体的类型。而在C++14中,我们可以使用auto作为形式参数的类型说明: //代码1.1 auto lam = [](auto x, auto y) { return x + y; }; 当我们使用Lambda表达式时,编译器会自动推导参数和返回值类型: //代码1.2 auto a = lam(3, 4); //a为int auto b = lam(4.8, 9.5); //b为double 有没有觉得这特别像函数模板吗?实际上,编译器就是用函数模板的推导规则来进行推导的,因此代码1.1大致相当于: //代码1.3 struct { template<typename T1, typename T2> auto operator()

《.Net 最佳实践》 - 学习笔记

ε祈祈猫儿з 提交于 2019-12-08 00:23:50
**《.Net 最佳实践》 ========== ========== ========== [作者] (美) Stephen Ritchie [译者] (中) 黄灯桥 黄浩宇 李永 [出版] 机械工业出版社 [版次] 2014年01月 第1版 [印次] 2018年01月 第1次 印刷 [定价] 69.00元 ========== ========== ========== (P001) 开发人员应该对任何称之为“最佳实践”的实践保持一种怀疑态度。 开发人员应该根据他所在的具体环境来选择采用何种“最佳实践”。 (P009) 微软的 Visual Studio IDE 就是一款得到广泛使用的集成开发环境。 (P016) 我仔细阅读了《.NET 设计规范》的每一章,从中我了解到了 .NET 框架是如何构建的。这本书同时还记录了设计构建 .NET 框架团队的思考结晶。通过这本书可以学习到许多非常重要的 .NET 实践,它是一项非常重要的资源。 FxCop 工具可以看成是对《.NET 设计规范》的补充。它会帮助你对 .NET 程序集按照事先指定的规则进行一一检查。 (P044) 在软件项目中,各项活动都不是目标。所有的活动都必须以获得成果为目标。 (P063) 头脑风暴就是促进“想法和经验”合作的方式。 (P065) 只有通过沟通,才能让你的想法成为别人的想法。 (P068) 要安排好工作

《.Net 最佳实践》 - 学习笔记

一世执手 提交于 2019-12-07 23:01:30
《.Net 最佳实践》 ========== ========== ========== [作者] (美) Stephen Ritchie [译者] (中) 黄灯桥 黄浩宇 李永 [出版] 机械工业出版社 [版次] 2014年01月 第1版 [印次] 2018年01月 第1次 印刷 [定价] 69.00元 ========== ========== ========== (P001) 开发人员应该对任何称之为“最佳实践”的实践保持一种怀疑态度。 开发人员应该根据他所在的具体环境来选择采用何种“最佳实践”。 (P009) 微软的 Visual Studio IDE 就是一款得到广泛使用的集成开发环境。 (P016) 我仔细阅读了《.NET 设计规范》的每一章,从中我了解到了 .NET 框架是如何构建的。这本书同时还记录了设计构建 .NET 框架团队的思考结晶。通过这本书可以学习到许多非常重要的 .NET 实践,它是一项非常重要的资源。 FxCop 工具可以看成是对《.NET 设计规范》的补充。它会帮助你对 .NET 程序集按照事先指定的规则进行一一检查。 (P044) 在软件项目中,各项活动都不是目标。所有的活动都必须以获得成果为目标。 (P063) 头脑风暴就是促进“想法和经验”合作的方式。 (P065) 只有通过沟通,才能让你的想法成为别人的想法。 (P068) 要安排好工作

Java 中 Snack3的使用

旧城冷巷雨未停 提交于 2019-12-07 16:20:28
网上看了一篇Java 中 Gson的使用,所以也跟着写篇Java 中 Snack3的使用 JSON 是一种文本形式的数据交换格式,从Ajax的时候开始流行,它比XML更轻量、比二进制容易阅读和编写;解析和生成的方式很多,Java中最常用的类库有:JSON-Java、Gson、Jackson、FastJson、Snack3等。 Snack3 基于jdk8,60kb大小,非常小巧。 <dependency> <groupId>org.noear</groupId> <artifactId>snack3</artifactId> <version>3.1.5.11</version> </dependency> Snack3 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以 ONode 表示, ONode 也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调文档树的操控和构建能力 做为中间媒体,方便不同格式互转 高性能 Json path 查询(兼容性和性能很赞) 支持 序列化、反序列化 一、Snack3的基本用法 Snack3 提供了几个快捷函数: load(strOrObj) , loadStr(str) , loadObj(obj) 用于解析和加载; stringify(obj) ,

java泛型

◇◆丶佛笑我妖孽 提交于 2019-12-07 05:11:19
泛型 1)在编译时,由编译器约束放入集合中的类型 2)在运行时,编译器会擦除原泛型类型 3)泛型二边要么都不使用约束,要么二边约束一致类型,同时二边必须使用引用类型 4)为了与JDK1.4兼容,泛型可以一边有约束,一边无约束 思考:不利用中间变量,将二个数交互 5)当一个类中出大量的泛型方式或属性/字段,此时可以将该类作成泛型类 6)如果使用泛型通配符,只能获取与泛型具体类型无关的信息,例如:长度。 7)有二个类,初学者一定要注意:Collections和Arrays `` public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("liwen"); list.add("jiayou"); show(list); } public static void show(List list) { for(Object obj:list) { String s = (String) obj; System.out.println(s + "\t"); } } ` public static void main(String[] args) { Boolean numA = false; Boolean numB = true; System.out

DataSet转换为泛型集合List(Of T)

守給你的承諾、 提交于 2019-12-07 05:10:59
在 上篇 博客“DataTable转换为实体(函数)”的介绍的最后提出了这样的问题: 思考问题: 函数返回值为实体,这意味着什么? 意味着该函数的返回记录只能有一条,对不对?因为一个实体只能“保存”一条记录。 像查看某学生基本信息、某用户基本信息——某个人的基本信息只能有一条记录(学生实体:卡号、学号、姓名、…)吧,好,可有定义返回实体函数 思考问题: 但是,如果“根据日期查看所有收取金额记录”——不止一条记录吧,给你U层返回一个实体,能实现此功能吗?当然不能。 如何解决? 面对此问题,如何解决,你想过吗?——你说,返回DataSet或DataTable不就得了吗。你看,Out了 吧…. 偷偷告诉大家,还是返回实体,但是这次不是返回一个实体啦,是返回”一群“实体(实体集合) (上篇博客链接: 《DataSet转换为实体(函数)》 ) 本篇 博客就介绍,如果由DataSet转换为泛型集合(集合中存放的是实体,即:实体集合) 涉及到“泛型”知识点,请参考: 《泛型》 例子: 机房收费系统——查看某段日期内收取金额记录 只写D层 1,查询某段日期内收取金额记录——CheckGetRechargeInfo(参数)——返回值:充值信息实体泛型集合 2,数据集转换为泛型集合—— DataSetToList( 参数 ) ——返回值:充值信息实体的泛型集合 ''' <summary> '''

02 集合框架之Collection、泛型

我是研究僧i 提交于 2019-12-07 05:10:38
一、集合和数组的区别? 1.数组长度固定,集合长度可变 2.集合存储的都是对象, ArrayList<Integer> Java Integer(-128~127)值的==和equals比较产生的思考 对于下图,如果Integer的值在(-128~127)则用==和equals比较的话,效果是一样的,但是不建议包装类型用==(地址值的比较) 二、集合框架 Collection接口中的方法(底下的接口/实现类都可以使用) 共性的方法 : public boolean add(E e) : 把给定的对象添加到当前集合中 。 public void clear() : 清空集合中所有的元素。 public boolean remove(E e): 把给定的对象在当前集合中删除。 public boolean contains(E e): 判断当前集合中是否包含给定的对象。 public boolean isEmpty(): 判断当前集合是否为空。 public int size(): 返回集合中元素的个数。 public Object[] toArray(): 把集合中的元素,存储到数组中。 三、迭代器(Iterator 接口)(主要是遍历没有索引的集合) 通过集合的iterator()方法来获取迭代器 Iterator<E> 接口也是有泛型的 , 迭代器的泛型跟着集合走 ,

泛型工具类GenericsUtils

折月煮酒 提交于 2019-12-07 05:08:02
package cn.com.tcgroup.yunlu.commons; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; /** * 泛型工具类 */ public class GenericsUtils { /** * 通过反射,获得指定类的父类的泛型参数的实际类型. 如DaoSupport<Buyer> * * @param clazz * clazz 需要反射的类,该类必须继承范型父类 * @param index * 泛型参数所在索引,从0开始. * @return 范型参数的实际类型, 如果没有实现ParameterizedType接口,即不支持泛型,所以直接返回 * <code>Object.class</code> */ @SuppressWarnings("unchecked") public static Class getSuperClassGenricType(Class clazz, int index) { Type

黑马程序员-泛型

主宰稳场 提交于 2019-12-07 05:07:49
泛型:安全机制。编译过后会被擦除。 思考题不会报错。因为参数化类型可以和原始类型是兼容的。 好处: 1,将运行时期出现的ClassCastException,转移到了编译时期。方便与程序员解决问题。 2,避免强制转换。 泛型的使用: 格式:通过<>来定义要操作的引用数据类型。读作typeof 使用java提供的对象时,什么时候使用泛型呢? 通常集合常见,见到<>就需要定义泛型。 泛型类:当类中操作的引用数据类型不确定的时候。早期用Object扩展,现在用泛型。 class Utils<Q>{ private Q q; public void setObject(Q q){ this.q=q; } public Q getObject(){ return q; } } 泛型方法:泛型类定义泛型,在整个类中有效。如果方法被使用,那么泛型类的对象明确要操作的具体类型后,所有的操作就已经固定了。为了让不同方法可以操作不同类型,而且类型还不确定。那么可以将泛型定义在方法上。(定义在返回值前) class Demo{ public <T>void show(T t){ } public <Q>void print(Q q){ } } 泛型在方法上定义只在方法中有效。不同方法的泛型互不干扰。 泛型类和泛型方法不冲突。 class Demo<T>{ public void show(T t){ }

泛型(一)

扶醉桌前 提交于 2019-12-07 05:07:29
前言 泛型可能是 JDK1.5 出现的新特性中,最为难以掌握和运用的。本文在掌握泛型的基本应用的基础上,对泛型进行一个探索和思考,会存在诸多不足的地方。 在学习泛型并深入了解泛型之前,我们一定要清楚的将编译时期和运行时期分开。这样才不至于弄混淆。由于时间原因泛型还没完全看完,给出一部分我个 人已经看懂。这其中参看很多资料。在最后会给出参考资料的出处。 1 ,泛型入门 Java 的集合有个缺点:当我们把一个对象(实际是对象的引用,在文章后面都会用对象代替对象的引用)“丢进”集合里,集合就会“忘记”这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成了 Object 类(但是其运行时类型是不会变的) 在没有泛型之前, java 对集合这样处理,是因为当初集合的设计者并不知道今天的使用者会把什么类型对象放入集合中,既然 Object 类是所有类的父类,根据多态的特性,让集合中的所有的对象都是 Object 类型,这样就可以使集合保持任意类型的对象,这样做的好处是具有很好的通用性。 但是,由此而来也有两个问题: (1) 集合对元素类型没有任何限制,当你创建一个只想保存Dog类型对象的集合时,程序员也可以把Cat对象轻易的放进集合对象 。(可能程序员不是故意的,但是这样做真的很不安全)。 (2) 由于要保证集合的通用性,放进集合中的对象都会丢掉类型信息,都成了 Object 类型