java聚合,java聚合支付系统

本文目录一览:

什么是java聚合工程

聚合就是由很多节点合到一起的一个工程,但是每个节点不能独立存在。有一个相对的概念叫组合,组合也有很多节点组成,但是它的每个节点可以独立存在。

Java 聚集 组合

聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。

我们用浅显的例子来说明聚合和组合的区别。“国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组合关系。而相反的,计算机和它的外设之间就是聚合关系,因为它们之间的关系相对松散,计算机没了,外设还可以独立存在,还可以接在别的计算机上。在聚合关系中,部分可以独立于聚合而存在,部分的所有权也可以由几个聚合来共享,比如打印机就可以在办公室内被广大同事共用。

聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不多的。聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其生命期有很大的关联,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,例如一个文档的版本,必须依赖于文档的存在,也只能属于一个文档。聚合则不一样,被聚合的对象可以属于多个聚合对象,例如一个员工可能可以属于多个公司。

JAVA中的聚集和组合的区别和联系

组合实际上是聚集关系的一种特殊形式。聚集模拟了具有(has-a)关系,表示两个对象之间的归属关系。归属关系中的所有者对象称为聚集对象(aggregation object),而它的类称为聚集类(aggregating class)。归属关系中的从属对象称为被聚集类(aggregated object),而它的类被称为被聚集类(aggregated class)。

一个对象可以被几个其他聚集对象所拥有。如果一个对象只归属于一个聚集对象,那么它和聚集对象之间的关系就称为组合(composition)。例如:“一个学生有一个名字”就是组合关系,“一个学生有一个地址”就是聚集关系,因为一个地址可以被几个学生所共享。

mongondb在java里处理聚合函数?

MongoDB sum,avg等聚合函数很弱,可以用MapReduce来实现,我给你个例子

// ※※※※※※※※※※※※※※※※※※※ 数据加载 ※※※※※※※※※※※※※※※※※※※

db.proc.remove();

for(var i = 10; i 1020; i++){db.proc.insert({class:”01″, val:i, name: “name” + i})};

for(var i = 10; i 1030; i++){db.proc.insert({class:”02″, val:i, name: “name” + i})};

for(var i = 10; i 1040; i++){db.proc.insert({class:”03″, val:i, name: “name” + i})};

for(var i = 10; i 1050; i++){db.proc.insert({class:”04″, val:i, name: “name” + i})};

for(var i = 10; i 1060; i++){db.proc.insert({class:”05″, val:i, name: “name” + i})};

for(var i = 10; i 1070; i++){db.proc.insert({class:”06″, val:i, name: “name” + i})};

for(var i = 10; i 1080; i++){db.proc.insert({class:”07″, val:i, name: “name” + i})};

for(var i = 10; i 1090; i++){db.proc.insert({class:”08″, val:i, name: “name” + i})};

for(var i = 10; i 1100; i++){db.proc.insert({class:”09″, val:i, name: “name” + i})};

for(var i = 10; i 1110; i++){db.proc.insert({class:”10″, val:i, name: “name” + i})};

for(var i = 10; i 1120; i++){db.proc.insert({class:”11″, val:i, name: “name” + i})};

// ※※※※※※※※※※※※※※※※※※※ mapReduce ※※※※※※※※※※※※※※※※※※※

m = function(){emit(this.class, {count:1, max:this.val, sum:this.val})}

r = function(key, values){

var ct = 0, sm = 0, mx = 0;

for(var i = 0; i values.length; i++){

ct += values[i].count;

sm += values[i].max;

mx = Math.max(mx, values[i].max);

}

return {count:ct, max: mx, sum:sm};

}

// ※※※※※※※※※※※※※※※※※※※ 数据处理 ※※※※※※※※※※※※※※※※※※※

res = db.runCommand({mapreduce:”proc”, map:m, reduce:r, out:”proc_res”})

res = db.runCommand({mapreduce:”proc”, map:m, reduce:r, out:”proc_res3″, query:{“class”:{$gt:”03″}}})

res = db.runCommand({mapreduce:”proc”, map:m, reduce:r, out:”proc_res5″, query:{“class”:{$gt:”05″}}})

res = db.runCommand({mapreduce:”proc”, map:m, reduce:r, out:”proc_res6″, query:{“class”:{$gt:”06″}}})

res = db.runCommand({mapreduce:”proc”, map:m, reduce:r, out:”proc_res9″, query:{“class”:{$gt:”09″}}})

res = db.runCommand({mapreduce:”proc”, map:m, reduce:r, out:”proc_res10″,query:{“class”:{$gt:”10″}}})

// ※※※※※※※※※※※※※※※※※※※ 结果查看 ※※※※※※※※※※※※※※※※※※※

db.proc_res.find()

{ “_id” : 1, “value” : { “class” : 1, “count” : 10, “sum” : 145, “max” : 19 } }

{ “_id” : 2, “value” : { “class” : 2, “count” : 20, “sum” : 390, “max” : 29 } }

{ “_id” : 3, “value” : { “class” : 3, “count” : 30, “sum” : 735, “max” : 39 } }

{ “_id” : 4, “value” : { “class” : 4, “count” : 40, “sum” : 1180, “max” : 49 } }

{ “_id” : 5, “value” : { “class” : 5, “count” : 50, “sum” : 1725, “max” : 59 } }

{ “_id” : 6, “value” : { “class” : 6, “count” : 60, “sum” : NaN, “max” : NaN } }

{ “_id” : 7, “value” : { “class” : 7, “count” : 70, “sum” : 3115, “max” : 79 } }

{ “_id” : 8, “value” : { “class” : 8, “count” : 80, “sum” : NaN, “max” : NaN } }

{ “_id” : 9, “value” : { “class” : 9, “count” : 90, “sum” : NaN, “max” : NaN } }

{ “_id” : 10, “value” : { “class” : 10, “count” : 100, “sum” : NaN, “max” : NaN } }

{ “_id” : 11, “value” : { “class” : 11, “count” : 110, “sum” : NaN, “max” : NaN } }

db.proc_res3.find()

{ “_id” : 4, “value” : { “class” : 4, “count” : 40, “sum” : 1180, “max” : 49 } }

{ “_id” : 5, “value” : { “class” : 5, “count” : 50, “sum” : 1725, “max” : 59 } }

{ “_id” : 6, “value” : { “class” : 6, “count” : 60, “sum” : NaN, “max” : NaN } }

{ “_id” : 7, “value” : { “class” : 7, “count” : 70, “sum” : NaN, “max” : NaN } }

{ “_id” : 8, “value” : { “class” : 8, “count” : 80, “sum” : 3960, “max” : 89 } }

{ “_id” : 9, “value” : { “class” : 9, “count” : 90, “sum” : 4905, “max” : 99 } }

{ “_id” : 10, “value” : { “class” : 10, “count” : 100, “sum” : NaN, “max” : NaN } }

{ “_id” : 11, “value” : { “class” : 11, “count” : 110, “sum” : NaN, “max” : NaN } }

db.proc_res5.find()

{ “_id” : 6, “value” : { “class” : 6, “count” : 60, “sum” : 2370, “max” : 69 } }

{ “_id” : 7, “value” : { “class” : 7, “count” : 70, “sum” : NaN, “max” : NaN } }

{ “_id” : 8, “value” : { “class” : 8, “count” : 80, “sum” : NaN, “max” : NaN } }

{ “_id” : 9, “value” : { “class” : 9, “count” : 90, “sum” : 4905, “max” : 99 } }

{ “_id” : 10, “value” : { “class” : 10, “count” : 100, “sum” : 5950, “max” : 109 } }

{ “_id” : 11, “value” : { “class” : 11, “count” : 110, “sum” : NaN, “max” : NaN } }

db.proc_res6.find()

{ “_id” : 7, “value” : { “class” : 7, “count” : 70, “sum” : 3115, “max” : 79 } }

{ “_id” : 8, “value” : { “class” : 8, “count” : 80, “sum” : NaN, “max” : NaN } }

{ “_id” : 9, “value” : { “class” : 9, “count” : 90, “sum” : NaN, “max” : NaN } }

{ “_id” : 10, “value” : { “class” : 10, “count” : 100, “sum” : NaN, “max” : NaN } }

{ “_id” : 11, “value” : { “class” : 11, “count” : 110, “sum” : NaN, “max” : NaN } }

db.proc_res9.find()

{ “_id” : 10, “value” : { “class” : 10, “count” : 100, “sum” : 5950, “max” : 109 } }

{ “_id” : 11, “value” : { “class” : 11, “count” : 110, “sum” : NaN, “max” : NaN } }

db.proc_res10.find()

{ “_id” : 11, “value” : { “class” : 11, “count” : 110, “sum” : NaN, “max” : NaN } }

java中的组合与聚合,区别。。。详细点

聚合就是:表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体。如下:实例化Person,不一定要实例化Telephone。has a

public class Person{

private Telephone tel;

private Hand hand = new Hand();

…….

}

class Telephone{

……

}

组合:组合:表示两个对象之间是整体和部分的强关系,部分的生命周期不能超越整体,或者说不能脱离整体而存在。组合关系的“部分”,是不能在整体之间进行共享的。如人和手的关系:人是整体,手是部分。is a 的关系 。手不能脱离人。

public class hand{

……

}

java怎么理解组合/聚合关系给个例子最好能将细点

聚合(Aggregation) 关系是关联关系的一种,是强的关联关系。聚合是整体和个体之间的关系。例如,汽车类与引擎类、轮胎类,以及其它的零件类之间的关系便整体和个体的关系。与关联关系一样,聚合关系也是通过实例变量实现的。但是关联关系所涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。 

组合(Composition) 关系是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分对象的生命周期,组合关系是不能共享的。代表整体的对象需要负责保持部分对象和存活,在一些情况下将负责代表部分的对象湮灭掉。代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责此对象的生命周期。换言之,代表部分的对象在每一个时刻只能与一个对象发生组合关系,由后者排他地负责生命周期。部分和整体的生命周期一样。

class Driver {   

    //使用成员变量形式实现关联   

    Car mycar;   

    public void drive(){   

        mycar.run();   

    }   

    …   

    //使用方法参数形式实现关联   

    public void drive(Car car){   

        car.run();   

    }   

}

聚合关系是是一种比较强的关联关系,java中一般使用成员变量形式实现。对象之间存在着整体与部分的关系。例如上例中

class Driver {   

    //使用成员变量形式实现聚合关系   

    Car mycar;   

    public void drive(){   

        mycar.run();   

    }   

}

假如给上面代码赋予如下语义:车是一辆私家车,是司机财产的一部分。则相同的代码即表示聚合关系了。聚合关系一般使用setter方法给成员变量赋值。 

假如赋予如下语义:车是司机的必须有的财产,要想成为一个司机必须要先有辆车,车要是没了,司机也不想活了。而且司机要是不干司机了,这个车就砸了,别人谁也别想用。那就表示组合关系了。一般来说,为了表示组合关系,常常会使用构造方法来达到初始化的目的,例如上例中,加上一个以Car为参数的构造方法 

public Driver(Car car){   

    mycar = car;   

}

所以,关联、聚合、组合只能配合语义,结合上下文才能够判断出来,而只给出一段代码让我们判断是关联,聚合,还是组合关系,则是无法判断的。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/197683.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-03 20:05
下一篇 2024-12-03 20:05

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论