object

java集合之Map接口

时光怂恿深爱的人放手 提交于 2020-04-02 05:12:51
一、Map的实现类大概结构: ---Map:双列数据,存储key-value对的数据(类似于高中的函数)   ---HashMap:作为Map的主要实现类;线程不安全,效率高。可以存储null的key和value     ---LinkedHashMap:作为HashMap的子类,保证在遍历map元素时,可以按照添加的顺序实现遍历。因为它在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个。对于频繁的遍历操作,此类执行效率高于HashMap。   ---TreeMap:保证按照添加的key-value对进行排序,实现排序遍历。此时考虑key的自然排序或定制排序。底层使用红黑树。   ---Hashtable:作为古老的实现类,比Map还早,1.0就有。线程安全的,效率低。不可以存储null的key和value。     ---Properties:常用来处理配置文件。key和value都是String类型 HashMap的底层:数组+链表(JDK7.0及之前)          数组+链表+红黑树(JDK8.0) 二、Map结构的理解: Map中的key:无序的、不可重复的,使用set存储所有的key。——>key所在类要重写equals()和hashCode()。 Map中的value:无序的、可重复的,使用Collection存储所有的value。——

深入探索C++对象模型(三)

断了今生、忘了曾经 提交于 2020-04-01 07:50:34
Data 语义学 一个class的data members,一般而言,可以表现这个class在程序执行时的某种状态。Nonstatic data members放置的是“个别的class object”感兴趣的数据,static data members则放置的是“整个class”感兴趣的数据。 C++对象模型尽量以空间优化和存取速度优化的考虑来表现nonstatic data members,并且保持和C语言struct数据配置的兼容性。它们把数据直接存放在每一个class object之中。对于继承而来的nonstatic data members(不管是virtual还是nonvirtual base class)也是如此。不过没有强制定义其间的排列顺序。 至于static data members,则被放置在程序的一个global data segment中,不会影响个别class object的大小。在程序之中,不管该class被产生出多少个objects(经由直接产生或间接派生),static data members永远只存在一份实例(甚至即使该class没有任何object实例,其static data members也已存在)。但是一个template class的static data members的行为稍有不同。 Data Member的绑定(The

设计模式之迭代器模式(Iterator)详解及代码示例

扶醉桌前 提交于 2020-04-01 06:03:03
一、模式的定义与特点   迭代器(Iterator)模式的定义:迭代器模式是一种对象行为型模式,提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 二、迭代器模式优缺点   其主要优点如下: 访问一个聚合对象的内容而无须暴露它的内部表示。 遍历任务交由迭代器完成,这简化了聚合类。 它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。 增加新的聚合类和迭代器类都很方便,无须修改原有代码。 封装性良好,为遍历不同的聚合结构提供一个统一的接口。   其主要缺点是: 增加了类的个数,这在一定程度上增加了系统的复杂性。 三、迭代器模式的实现   迭代器模式是通过将聚合对象的遍历行为分离出来,抽象成迭代器类来实现的,其目的是在不暴露聚合对象的内部结构的情况下,让外部代码透明地访问聚合的内部数据。现在我们来分析其基本结构与实现方法。   迭代器模式主要包含以下角色。 抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象的接口。 具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代器的实例。 抽象迭代器(Iterator)角色:定义访问和遍历聚合元素的接口,通常包含 hasNext()、first()、next() 等方法。 具体迭代器(Concretelterator)角色

Java 之JavaBean 、EJB 和POJO

只谈情不闲聊 提交于 2020-04-01 01:22:32
  由于是创业公司,开发人员较少,所以公司临时决定让几个C的程序猿临时客串Java。所以避免不了有很多基础问题,今天就有两个人都问我,JavaBean和POJO的区别,我可按照自己的理解给他们大致说了下,可是仔细一推敲发现自己好像没有那么透彻的讲解很清楚,就查了下资料,记下了一些笔记和理解。 1.JavaBean   JavaBean( 官方解释 )是可复用的Java组件,严格遵循Sun定义的规范要求,JavaBean是一个标准,开发者可以直接复用别人写好软件组件而不必理解它内部的工作机制。简单来说一个JavaBean应该有下面几个特点,   >类应该是public的   >属性应该private的,对于属性值的访问应该是要通过getXX,setXX,isXXX方法,isXXX是用于检查元素的值是否是Boolean的。   >该类应该有一个无参的构造函数,元素值的初始化要通过setXXX方法。   >这个类应该是实现了Serializable 接口( java.io.Externalizable ),这个是为了持久化存储的需要。  例如: package com.example; import java.io.Serializable; public class Bar implements Serializable { private String name = null;

[SAP ABAP开发技术总结]OLE

南楼画角 提交于 2020-03-31 15:13:28
20.7. OLE CREATE OBJECT obj_name 'app' . " 创建 APP 应用类的一个对象 obj_name 实例 SET PROPERTY OF obj_name 'XXX' = f . " 设置对象 OBJ_NAME 属性 xxx 为值 f GET PROPERTY OF obj_name 'xxx' = f . " 将 obj_name 的属性 xxx 的值获取赋给 f CALL METHOD OF obj_name 'xxx' = f " 由 f 来接收返回值 EXPORTING #1 = f1 . " 调用 Obj_name 的方法 xxx 传入参数 f1…fn FREE OBJECT obj_name . " 释放 obj_name. * 定义 OLE 变量 DATA : EXCEL TYPE OLE2_OBJECT , WORKBOOK TYPE OLE2_OBJECT , SHEET TYPE OLE2_OBJECT , CELL TYPE OLE2_OBJECT . 创建 excel 对象: CREATE OBJECT EXCEL 'EXCEL.APPLICATION' . SET PROPERTY OF EXCEL 'VISIBLE' = 1 . " 使 excel 可见 SET PROPERTY OF EXCEL

项目结构介绍

霸气de小男生 提交于 2020-03-31 06:52:25
通常的项目结构 各个目录详细介绍: 然后接下来 /src/main/resources 目录,里面主要存放静态配置文件和页面静态资源等东西: 当然,这地方估计有一个 很多人都会纠结的 关于 DTO/VO/DO 等 数据模型定义 的区分。 这在《阿里巴巴Java开发手册》中倒是做了一个所谓的严格区分,那本书上是这样去定义的: DO(Data Object) : 与数据库表结构一一对应,通过DAO层向上传输数据源对象。 DTO(Data Transfer Object) :数据传输对象,Service或Manager向外传输的对象。 BO(Business Object) : 业务对象。由Service层输出的封装业务逻辑的对象。 AO(Application Object) :应用对象。在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。 VO(View Object) : 显示层对象,通常是Web向模板渲染引擎层传输的对象。 Query : 数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装, 禁止使用Map类来传输。 老实讲,看到这么多对象的定义,我也是很蒙的。实际项目开发时,我觉得没有必要刻意照搬去定义这么多层对象,这样后续做对象转换工作都能烦skr人。 出于简单起见,我个人觉得,只要保证业务逻辑层 Service 和数据库 DAO

js中检测数据类型的几种方式

那年仲夏 提交于 2020-03-31 06:50:22
1、typeof 一元运算符,用来检测数据类型。只可以检测number,string,boolean,object,function,undefined。 对于基本数据类型是没有问题的,但是遇到引用数据类型是不起作用的(无法细分对象)   let str = '{}'; let fn = function(){}; let obj = {}; let ary = []; let rg = /\d/; console.log(typeof str);//string console.log(typeof fn);//function console.log(typeof obj);//object console.log(typeof ary);//object console.log(typeof rg);//object    2、instanceof(二元运算符,需要两个操作数) 检测某个对象是不是另外一个对象的实例 instanceof只能用来判断对象和函数,不能用来判断字符串和数字 let arr = [1,2,3]; console.log(arr instanceof Array);//true 检测arr是不是内置类Array的实例 3、constructor js中所有对象都继承于Object,constructor是其中的一个属性。默认指向实例的构造函数(可以修改

LINQ入门笔记----LINQ To Object<SelectMany()>

拈花ヽ惹草 提交于 2020-03-30 19:29:46
LINQ To Object 概述 LINQ To Object是用于操作内存对象的LINQ编程接口,包含了大量的查询操作符,针对内存中的集合对象进行操作. LINQ To Object的实现基于IEnumerable泛型接口、序列(sequences)以及标准查询操作符(Standard Query Operators)等基本概念.其中,IEnumerable泛型接口是使用C#2.0泛型技术实现的一个接口,该接口与IEnumerable类似,允许对接口内部的元素进行列举操作;序列是一个专门术语,表示一个实现了IEnumerable接口的集合对象. LINQ To Object的大部分操作是针对序列的.标准查询操作符本质上是一些拓展方法,这些拓展方法定义在静态类 System.Linq.Enumerable 中,其原型的第一个参数(带this修饰符的参数)是IEnumerable类型.由于这些方法都是扩展方法,它们可以在IEnumerable实例对象上直接调用,无需为调用传递一个类型为IEnumerable的对象作为第一个参数. 要在代码中使用LINQ To Object标准查询操作符,需要在代码中添加 using System.Linq 指令,以引入必要的命名空间. SelectMany() <SelectMany 的参数信息> SelectMany 将序列的每个元素投影到

简单模拟Spring整合Mybatis

余生长醉 提交于 2020-03-30 18:54:20
整体包结构 首选我们需要一个接口类,相当于是Mapper package com.fh.mybatis.dao; import com.fh.mybatis.config.Select; public interface CardDao { @Select("select * from demo") void list(String mess); } 然后是接口类中用到的注解类 package com.fh.mybatis.config; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Select { String value() default ""; } 之后需要一个类,提供代理对象和执行具体的方法 因为实现类FactoryBean接口的类,实例化的时候,会返回getObject方法所返回的对象 package com.fh.mybatis

JSOIN.parse()报错:Uncaught SyntaxError: Unexpected token o in JSON at position 1 at JSON.parse (<anonymous>)

对着背影说爱祢 提交于 2020-03-30 15:08:14
记录下引起这个报错的原因: JSON.parse()参数应该是string类型 由于传递的参数是object 类型 那么JSON.parse() 就会把object类型默认转成string 结果为“[object object]” "["字符就当是数组去解析,然后遇到第二个字符“o” 他就蒙圈了 然后报错 o in JSON at position 1 ; 与JSON.parse() 相对应的 就是 JSON.stringify() 把object 转为 string; 来源: https://www.cnblogs.com/zhinian-/p/12598173.html