CN109697036A - 一种信息处理方法及装置 - Google Patents
一种信息处理方法及装置 Download PDFInfo
- Publication number
- CN109697036A CN109697036A CN201811646184.3A CN201811646184A CN109697036A CN 109697036 A CN109697036 A CN 109697036A CN 201811646184 A CN201811646184 A CN 201811646184A CN 109697036 A CN109697036 A CN 109697036A
- Authority
- CN
- China
- Prior art keywords
- object identity
- data
- storage
- identity
- cryptographic hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请实施例提供了一种信息处理方法及装置,用于解决在发送数据更新的消息时,针对同一个观察者会发送多次,以致造成了资源的浪费的问题。其中,该方法包括:接收对象标识,该对象标识为用于监听数据变化的对象的标识;判断存储的对象标识中是否存在与该对象标识相同的对象标识;在判断出存储的对象标识中不存在与该对象标识相同的对象标识的情况下,存储该对象标识。实施本申请实施例,可以节约资源。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种信息处理方法及装置。
背景技术
随着计算机技术的不断发展,电子设备上需要安装的应用越来越多,如各种安卓应用。在安卓应用开发过程中,通常通过观察者模式来监听数据源的变化。在观察者模式中,被观察者会存储观察者的地址,当被观察者中的数据发生变化时,被观察者可以通过观察者的地址将数据更新的消息发送给观察者。然而,由于被观察者会多次接收到同一个观察者发送的地址信息并存储,从而针对同一个观察者的地址会被存储多次,因此,在发送数据更新的消息时,针对同一个观察者会发送多次,以致造成了资源的浪费。
发明内容
本申请实施例提供一种信息处理方法,用于解决在发送数据更新的消息时,针对同一个观察者会发送多次,以致造成了资源的浪费的问题。
第一方面,提供了一种信息处理方法包括:
接收对象标识,所述对象标识为用于监听数据变化的对象的标识;
判断存储的对象标识中是否存在与所述对象标识相同的对象标识;
在判断出存储的对象标识中不存在与所述对象标识相同的对象标识的情况下,存储所述对象标识。
在一种可能的实施方式中,所述判断存储的对象标识中是否存在与所述对象标识相同的对象标识,包括:
根据所述对象标识确定哈希值;
判断存储的哈希值中是否存在与所述哈希值相同的哈希值;
在判断出存储的哈希值中不存在与所述哈希值相同的哈希值的情况下,确定存储的对象标识中不存在与所述对象标识相同的对象标识。
在一个可能的实施方式中,所述接收对象标识包括:
接收包括对象标识和数据标识的信息;
所述方法还包括:
监听所述数据标识所标识的数据是否发生变化;
当监听到所述数据标识所标识的数据发生变化时,向第一对象标识对应的对象发送数据变更消息,所述第一对象标识是存储的所述数据标识对应的所有对象标识中的任一对象标识。
在一个可能的实施方式中,当监听到所述数据标识所标识的数据发生变化时,所述方法还包括:
判断第一对象标识对应的对象是否存活;
在判断出所述第一对象标识对应的对象存活的情况下,执行所述向第一对象标识对应的对象发送数据变更消息的步骤。
在一个可能的实施方式中,所述方法还包括:
在判断出所述第一对象标识对应的对象不存活的情况下,删除存储的所述第一对象标识。
在一个可能的实施方式中,所述方法还包括:
当所述数据标识对应的数据被删除或移除时,删除存储的所述数据标识对应的所有对象标识。
第二方面,提供了一种信息处理装置,包括:
接收单元,用于接收对象标识,所述对象标识为用于监听数据变化的对象的标识;
第一判断单元,用于判断存储的对象标识中是否存在与所述对象标识相同的对象标识;
存储单元,用于在判断出存储的对象标识中不存在与所述对象标识相同的对象标识的情况下,存储所述对象标识。
在一种可能的实施方式中,所述第一判断单元具体用于:
根据所述对象标识确定哈希值;
判断存储的哈希值中是否存在与所述哈希值相同的哈希值;
在判断出存储的哈希值中不存在与所述哈希值相同的哈希值的情况下,确定存储的对象标识中不存在与所述对象标识相同的对象标识。
在一种可能的实施方式中,所述接收单元,具体用于接收包括对象标识和数据标识的信息;
所述装置还包括:
监听单元,用于监听所述数据标识所标识的数据是否发生变化;
发送单元,用于当监听到所述数据标识所标识的数据发生变化时,向第一对象标识对应的对象发送数据变更消息,所述第一对象标识是存储的所述数据标识对应的所有对象标识中的任一对象标识。
在一种可能的实施方式中,所述装置还包括:
第二判断单元,用于当监听到所述数据标识所标识的数据发生变化时,判断第一对象标识对应的对象是否存活,在判断出所述第一对象标识对应的对象存活的情况下,所述发送单元向第一对象标识对应的对象发送数据变更消息。
在一种可能的实施方式中,所述装置还包括:
删除单元,用于在判断出所述第一对象标识对应的对象不存活的情况下,删除存储的所述第一对象标识。
在一种可能的实施方式中,所述删除单元,还用于当所述数据标识对应的数据被删除或移除时,删除存储的所述数据标识对应的所有对象标识。
第三方面,提供了一种信息处理方法,包括:
监听数据标识所标识的数据是否发生变化;
当监听到所述数据标识所标识的数据发生变化时,向第一对象标识对应的对象发送数据变更消息,所述第一对象标识是存储的所述数据标识对应的所有对象标识中的任一对象标识。
第四方面,提供了一种信息处理装置,包括:
监听单元,用于监听数据标识所标识的数据是否发生变化;
发送单元,用于当监听到所述数据标识所标识的数据发生变化时,向第一对象标识对应的对象发送数据变更消息,所述第一对象标识是存储的所述数据标识对应的所有对象标识中的任一对象标识。
第五方面,提供了一种电子设备,包括处理器、存储器、输入设备和输出设备,所述处理器、所述存储器、所述输入设备和所述输出设备相互连接,其中,所述存储器用于存储支持所述电子设备执行该进程识别方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行第一方面或第一方面任一可能的实施方式提供的信息处理方法,或者执行第三方面提供的信息处理方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,其特征在于,所述介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行第一方面或第一方面任一可能的实施方式信息处理方法,或者执行第三方面提供的信息处理方法。
第七方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行该各方面所述的方法。
本申请实施例中,接收对象标识,判断存储的对象标识中是否存在与该对象标识相同的对象标识,在判断出存储的对象标识中不存在与该对象标识相同的对象标识的情况下,存储该对象标识。可见,在接收到一个对象标识之后,并不是立即存储该对象标识,而是在确定存储的对象标识中不存在与该对象标识相同的对象标识的情况下,才存储该对象标识,可以避免对同一个观察者的对象标识进行重复存储,以便在发送数据更新消息时,针对同一个观察者重复发送多次,从而可以节约资源。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种信息处理方法的流程示意图;
图2是本申请实施例提供的另一种信息处理方法的流程示意图;
图3是本申请实施例提供的一种信息处理装置的结构示意图;
图4是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
请参阅图1,图1是本申请实施例提供的一种信息处理方法的流程示意图。如图1所示,该信息处理方法可以包括:
101、接收对象标识。
观察者模式(有时又被称为模型(Model)视图(View)模式、源收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理***。观察者模式有很多实现方式,从根本上说,该模式必须包含两个角色:观察者和被观察者。
在一种可能的实施方式中,处于同一软件中的被观察者(Subject)可以是业务数据、图片等等,观察者(Observer)可以是用户界面等,观察者和被观察者之间存在“观察”的逻辑关联,当被观察者发生改变的时候,观察者就会观察到这样的变化,并且做出相应的响应。需要知道的是,观察者和被观察对象之间的互动关系不能体现成类之间的直接调用,否则就将使观察者和被观察对象之间紧密的耦合起来,从根本上违反面向对象的设计的原则。在观察者“观察”被观察者的变化之前,需调用被观察者的监听注册方法,将观察者的对象标识传递给被观察者,即被观察者接收观察者的对象标识,该步骤是在实现监听之前,完成注册的过程。具体地,该对象标识为观察者的引用,引用是在java中,对象的操作全部凭借引用来与之产生关联,通过操作相关联的引用,来达到操作所需对象的目的,即引用,是用来操作对象的,可以类比指针、地址。其中,上述引用中可以包括观察者的身份标识、接口、事件(event)的定义、事件操作(action)等等。
其中,本申请中的信息处理装置可以包括基于安卓***的手机、平板电脑、掌上电脑、笔记本电脑、移动互联网设备MID(mobile internet devices,MID)或穿戴式设备等可以安装应用软件的电子设备,上述信息处理装置仅是举例,而非穷举,包含但不限于上述信息处理装置。当然在实际应用中,上述信息处理装置也不限于上述变现形式,例如还可以包括:车载终端。
102、判断存储的对象标识中是否存在与该对象标识相同的对象标识,在判断出存储的对象标识中不存在与该对象标识相同的对象标识的情况下,执行步骤103。
在一种可能的实施方式中,基于被观察者接收观察者传递的对象标识后,被观察者将该对象标识存储在集合中。其中,集合为弱引用的集合,以键-值(key-value)的方式来存储对象标识。
具体地,安卓开发时,有四种引用可以使用以便于优化应用程序的性能,这四种引用为:强引用、(StrongRefernce)、软引用(SoftReference)、弱引用(WeakReference)、虚引用(PhantomReference)。其中,强引用可以直接访问目标对象,强引用所关联的对象,在任何时候都不会被内存回收,而弱引用不论内存是否充足,在发现某一对象的引用只具有弱引用当前弱引用就会被回收。为了规避内存泄露的问题,本申请实施例中被观察者并不将该观察者的标识存储在强引用的数组中,而是存储在弱引用的稀疏数组中(SparseWeakArray),这样不仅不会因为强引用而造成内存泄露,而且SparseWeakArray比起其他的链表散列更加节省内存空间。
当在上述集合中,即弱引用的稀疏数组(SparseWeakArray)中以键-值的方式存储一个或多个观察者的对象标识,其中在键(key)的位置存储观察者的哈希值,可以理解的是不同观察者的哈希值不同,在值(value)的位置存储观察者哈希值对应的标识信息,即引用。当某一个观察者传递了该对象标识时,被观察者首先取当前监测数据变化的对象的哈希值,该监测数据变化的对象即观察者。接收到对象标识之后,可以先判断存储的对象标识中是否存在与该对象标识相同的对象标识,可以是先根据该对象标识确定哈希值,之后判断存储的哈希值中是否存在与该哈希值相同的哈希值,在判断出存储的哈希值中不存在与该哈希值相同的哈希值的情况下,确定存储的对象标识中不存在与该对象标识相同的对象标识,将执行步骤103。在判断出存储的对象标识中存在与该对象标识相同的对象标识的情况下,可以丢弃该对象标识。在判断出存储的哈希值中存在与该哈希值相同的哈希值的情况下,可以使用该对象标识替换存储的该哈希值对应的对象标识。
需要说明的是,观察者向被观察者传递的信息中包括对象标识,在被观察者接收到观察者传递的对象标识后,将观察者的对象标识存储在所观察的数据对应的集合中。其中,一个观察者包含多个数据,每一个数据对应有一个弱引用的集合。
103、存储该对象标识。
基于步骤102中判断当前传递对象标识的观察者的哈希值是否与已经存储在集合中的哈希值进行查询,通过查询结果显示,若当前集合中没有与该传递对象标识的观察者的哈希值一样的哈希值,则存储该对象标识。其中,依然是按照键-值的结构进行存储,即哈希值作为键,该对象标识为该哈希值对应的值存储起来。
进一步地,可以比较新对象标识和旧对象标识中的地址是否相同,这里的地址即哈希值对应的对象标识中的地址,也可以不比较,可以直接将新的对象标识替换掉旧的对象标识,若在比较后发现新的对象标识和旧的对象标识一样,也可以不替换,直接删除新对象标识。
在图1所描述的信息处理方法中,在接收到一个对象标识之后,并不是立即存储该对象标识,而是在确定存储的对象标识中不存在与该对象标识相同的对象标识的情况下,才存储该对象标识,可以避免对同一个观察者的对象标识进行重复存储,以便在发送数据更新消息时,针对同一个观察者重复发送多次,从而可以节约资源。
请参阅图2,图2是本申请实施例提供的另一种信息处理方法的流程示意图。如图2所示,该信息处理方法包括:
201、接收包括对象标识和数据标识的信息。
在一种可能的实施方式中,观察者需要监听数据变化的情况下,可以向被观察者发送包括对象标识和数据标识的信息,之后被观察者可以接收到该信息。可以理解的是,一个数据标识可以对应多个对象标识,即一个数据可以被多个观察者监听。其中,对象标识指观察者的标识、要监控的事件操作以及监控器,监控器用于对事件发生后执行操作的接口定义,需要说明的是,在开发者开发实现中,需在观察者这一侧实现要监控的事件接口,完成时间发生后的操作内容,即可以由观察者定义一个事件接口来抽象所有事件类型,当被观察者中的数据发生变化后,能通过接口主动回调给被观察者。可以理解的是,不同的数据源变化通过不同的接口回调给观察者。对象标识可以是地址,也可以是名称,还可以是其它信息,本实施例不作限定。
需要说明的是,接收一个观察者的对象标识可以是一次接收的,也可以是多次接收的,存在一种情况,当观察者出现故障之后,同一个观察者可能会多次向被观察者传递对象标识。
在软件开发的实现中例如,现在有一个观察者A注册监听了数据源内两个数据x和y的变化,则观察者需在对象标识中不仅写上自身的“地址”,还要写上x和y的标识,以及要实现x和y变化的两个接口。
202、根据该对象标识确定哈希值。
其中,哈希值又称散列函数或散列算法,又称哈希函数,哈希值是一种从任何一种数据中创建小的数字“指纹”的方法。散列值通常用一个短的随机字母和数字组成的字符串来代表。事实上,对象类提供的默认实现确实保证每个对象的哈希值不同(在对象的内存地址基础上经过特定算法返回一个哈希值)。所以可以在键的位置存储起来,在接收新的观察者的标识时,能够在集合中比较表中的哈希值与当前观察者的哈希值是否相同。
在一种可能的实施方式中,可以通过对象类的hashCode()方法获得观察者的哈希值。其中,利用该方法返回的哈希值是该对象在内存中的地址值,哈希值也是对象存储到哈希表的重要依据。
接收到包括对象标识和数据标识的信息之后,可以根据该对象标识确定哈希值,即对该对象标识进行哈希运算得到哈希值。
203、判断存储的哈希值中是否存在与该哈希值相同的哈希值,在判断出存储的哈希值中存在与该哈希值相同的哈希值的情况下,执行步骤204,在判断出存储的哈希值中不存在与该哈希值相同的哈希值的情况下,执行步骤205。
其中,步骤203的具体实现过程可参见上述图1所对应实施例中对步骤102的描述,这里将不再继续进行赘述。
204、使用该对象标识替换存储的该哈希值对应的对象标识。
在一种可能的实施方式中,基于步骤202和步骤203,在上述集合中,可以是通过计算哈希值与表的长度(即集合的长度)进行求余运算得到一个整数值,该值就是新元素要存放的位置(即是索引值),如果索引值对应的位置上没有存储任何元素,可以直接将该哈希值的存储到该位置上,将哈希值对应的对象标识存储在哈希值对应的value的位置上。也可以在索引值对应的位置上已经存储了元素的情况下,在集合内查询当前对象哈希值,判断在表中的是否存在与该哈希值相同的哈希值的情况,也可以一开始就查询当前表中是否存在与该哈希值相同的哈希值的情况。
在判断出存储的哈希值中存在与该哈希值相同的哈希值的情况下,使用该对象标识直接替换掉存储的该哈希值对应的对象标识。进一步地,可以对在value上存储的对象标识进行比较,当该对象标识和存储的对象标识相同的情况下,可以直接丢弃该对象标识,而不需要替换。
具体地,在判断出存储的哈希值中不存在与该哈希值相同的哈希值后,可以确定存储的对象标识中不存在与该对象标识相同的对象标识,执行步骤205。
205、存储该对象标识。
其中,步骤205的具体实现过程可参见该图1所对应实施例中对步骤103的描述,这里将不再继续进行赘述。
206、监听数据标识所标识的数据是否发生变化。
接收到包括对象标识和数据标识的信息之后,可以实时地监听数据标识所标识的数据是否发生变化。步骤206与步骤202可以并行执行,也可以串行执行。
在软件开发的实现中,对于一个数据源中数据x,若数据x发生了变化,则数据x发送数据标识至数据源,即被观察者,被观察者接收到数据标识之后,遍历当前数据x对应的观察者的集合,集合中存储有观察者的确定存活的观察者,并向观察者发送数据变更消息。
207、当监听到数据标识所标识的数据发生变化时,判断第一对象标识对应的对象是否存活,在判断出第一对象标识对应的对象存活的情况下,执行步骤208,在判断出第一对象标识对应的对象不存活的情况下,执行步骤209。
在一个可能的实施方式中,当被观察者监听到数据标识所标识的数据发生变化时,可以先判断第一对象标识对应的对象是否存活,在判断出第一对象标识对应的对象存活的情况下,可以执行步骤208,在判断出第一对象标识对应的对象不存活的情况下,可以执行步骤209。第一对象标识是被观察者存储的数据标识对应的所有对象标识中的任一对象标识,即是遍历整个集合中数据标识对应的所有对象标识中的任一一个对象标识。当监听到数据标识所标识的数据未发生变化时,继续监听。判断第一对象标识对应的对象是否存活可以使用引用计数法(Reference Counting),也可以使用可达性分析算法(Reachability Analysis),在这里本申请不做限定。引用计数算法指给对象添加一个引用计数器,当有一个地方引用它时,计数器就加一;当引用失效时,就减一;当计数器不为0时,判断该对象存活;否则判断为死亡(计数器=0)。这种方法实现简单,判断高效,而缺点是无法解决对象间相互循环引用的问题。而可达性分析算法也被称为引用链法,通过一系列的GC Roots的对象作为起点,从这些节点开始向下搜索,搜索走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连(即从GC Roots到这个对象不可达)时,证明此对象不可用。该GC Roots可以是Java虚拟机栈(栈帧的本地变量表)中引用的对象,也可以是本地方法栈中JNI引用对象还可以是方法区的中常量、类静态属性引用的对象。
208、向第一对象标识对应的对象发送数据变更消息。
在一个可能的实施方式中,在判断出第一对象标识对应的对象存活的情况下,表明第一对象标识对应的观察者还存在,可以向第一对象标识对应的对象发送数据变更消息。其中,数据变更消息可以包括该数据标识,用于表明该数据变更消息是针对哪个数据的数据变更消息;,数据变更消息还可以包括数据信息,数据信息可以包括该数据标识对应的数据中发生变化的数据的信息,数据信息还可以包括该信息对应的数据发生变化前的内容和/或发生变化后的内容。可以理解的是,在存储观察者的对象标识的时候,一个观察者的对象标识实际上只在集合中存储了一次,所以,在发送的时候,仅向观察者发送数据变更消息时,只向同一个观察者发送一次数据变更消息。
209、删除存储的第一对象标识。
在一个可能的实施方式中,在判断出第一对象标识对应的对象不存活的情况下,表明第一对象标识对应的观察者已经不存在了,存储第一对象标识已没有意义,因此,可以在对应集合中删除或移除存储的第一对象标识,可以避免内存的浪费,从而可以节约内存。
进一步地,如果观察者撤销观察,即观察者告诉被观察者要撤销观察,被观察者也从该集合中移除或删除观察者的标识。
210、当该数据标识对应的数据被删除或移除时,删除存储的该数据标识对应的所有对象标识。
在一种可能的实施方式中,当该数据标识对应的数据被删除或移除时,即在一个数据源中的一个数据被回收,删除存储的该数据标识对应的所有对象标识,即遍历被观察者存储的对象标识,删除所有该数据标识对应的对象标识,也即当前被观察者中的被回收的数据对应的集合中存储的观察者的对象标识都会被删除,删除的方法可以是移除所有的哈希值和对应对象标识,与该移除不存活的对象的标识一致,也可以是直接将集合清空,本申请在这里不做限定。若是以强引用的数组存储的标识,则在当前数据源或者数据源其中一个数据被回收时,不会回收引用,容易发生内存泄露,而本申请实施例使用的是弱引用的集合存储,观察者能够被***回收,规避了内存泄露的问题。
在图2所描述的信息处理方法中,在接收到一个对象标识之后,并不是立即存储该对象标识,而是在确定存储的对象标识中不存在与该对象标识相同的对象标识的情况下,才存储该对象标识,可以避免对同一个观察者的对象标识进行重复存储,以便在发送数据更新消息时,针对同一个观察者重复发送多次,从而可以节约资源。
请参阅图3,图3是本发明实施例提供的一种信息处理装置的结构示意图。如图3所示,该信息处理装置可以包括:
接收单元301,用于接收对象标识,该对象标识为用于监听数据变化的对象的标识;
第一判断单元302,用于判断存储的对象标识中是否存在与该对象标识相同的对象标识;
存储单元303,用于在判断出存储的对象标识中不存在与该对象标识相同的对象标识的情况下,存储该对象标识。
作为一种可能的实施方式,该第一判断单元302具体用于:
根据该对象标识确定哈希值;
判断存储的哈希值中是否存在与该哈希值相同的哈希值;
在判断出存储的哈希值中不存在与该哈希值相同的哈希值的情况下,确定存储的对象标识中不存在与该对象标识相同的对象标识。
作为一种可能的实施方式,该接收单元301具体用于接收包括对象标识和数据标识的信息;
该信息处理装置还可以包括:
监听单元304,用于监听该数据标识所标识的数据是否发生变化;
发送单元305,用于当监听到该数据标识所标识的数据发生变化时,向第一对象标识对应的对象发送数据变更消息,第一对象标识是存储的该数据标识对应的所有对象标识中的任一对象标识。
作为一种可能的实施方式,该信息处理装置还可以包括:
第二判断单元306,用于当监听到该数据标识所标识的数据发生变化时,判断第一对象标识对应的对象是否存活,在判断出第一对象标识对应的对象存活的情况下,发送单元305向第一对象标识对应的对象发送数据变更消息。
作为一种可能的实施方式,该信息处理装置还可以包括:
删除单元307,用于在判断出第一对象标识对应的对象不存活的情况下,删除存储的第一对象标识。
作为一种可能的实施方式,删除单元307,还用于当该数据标识对应的数据被删除或移除时,删除存储的该数据标识对应的所有的对象标识。
在图3所描述的信息处理装置中,在接收到一个对象标识之后,并不是立即存储该对象标识,而是在确定存储的对象标识中不存在与该对象标识相同的对象标识的情况下,才存储该对象标识,可以避免对同一个观察者的对象标识进行重复存储,以便在发送数据更新消息时,针对同一个观察者重复发送多次,从而可以节约资源。
可以理解的是,本实施例的信息处理装置的接收单元301、第一判断单元302、存储单元303、监听单元304、发送单元305、第二判断单元306以及删除单元307的功能可以根据该方法实施例中的方法具体实现,其具体实现过程可以参照该方法实施例的相关描述,此处不再赘述。
请参阅图4,图4是本申请实施例提供的一种电子设备。如图4所示,该电子设备可以包括处理器401、输入设备402、输出设备403和存储器404。存储器404用于存储计算机程序,计算机程序包括程序指令,处理器401用于执行存储器404存储的程序指令。其中,处理器401被配置用于调用程序指令执行以下步骤:
接收对象标识,该对象标识为用于监听数据变化的对象的标识;
判断存储的对象标识中是否存在与该对象标识相同的对象标识;
在判断出存储的对象标识中不存在与该对象标识相同的对象标识的情况下,存储该对象标识。
作为一种可能的实施方式,处理器401判断存储的对象标识中是否存在与该对象标识相同的对象标识,包括:
根据该对象标识确定哈希值;
判断存储的哈希值中是否存在与该哈希值相同的哈希值;
在判断出存储的哈希值中不存在与该哈希值相同的哈希值的情况下,确定存储的对象标识中不存在与该对象标识相同的对象标识。
作为一种可能的实施方式,处理器401接收对象标识包括:
接收包括对象标识和数据标识的信息;
处理器401还被配置用于调用程序指令执行以下步骤:
监听该数据标识所标识的数据是否发生变化;
当监听到该数据标识所标识的数据发生变化时,向第一对象标识对应的对象发送数据变更消息,第一对象标识是存储的该数据标识对应的所有对象标识中的任一对象标识。
作为一种可能的实施方式,处理器401还被配置用于调用该程序指令执行以下步骤:
当监听到该数据标识所标识的数据发生变化时,判断第一对象标识对应的对象是否存活;
在判断出第一对象标识对应的对象存活的情况下,执行向第一对象标识对应的对象发送数据变更消息的步骤。
作为一种可能的实施方式,处理器401还被配置用于调用该程序指令执行以下步骤:
在判断出第一对象标识对应的对象不存活的情况下,删除存储的第一对象标识。
作为一种可能的实施方式,处理器401还被配置用于调用该程序指令执行以下步骤:
当该数据标识对应的数据被删除或移除时,删除存储的该数据标识对应的所有的对象标识。
在图4所描述的电子设备中,在接收到一个对象标识之后,并不是立即存储该对象标识,而是在确定存储的对象标识中不存在与该对象标识相同的对象标识的情况下,才存储该对象标识,可以避免对同一个观察者的对象标识进行重复存储,以便在发送数据更新消息时,针对同一个观察者重复发送多次,从而可以节约资源。
其中,步骤S101-S103可以由电子设备中的处理器401和存储器404来执行。
其中,接收单元301、第一判断单元302、存储单元303、发送单元304、第二判断单元305以及删除单元306可以由电子设备中的处理器401和存储器404来实现。
应当理解,在本申请实施例中,所称处理器401可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
输出设备402用于发送数据,输入设备403用于接收数据。
该存储器404可以包括只读存储器和随机存取存储器,并向处理器401提供指令和数据。存储器404的一部分还可以包括非易失性随机存取存储器。例如,存储器404还可以存储设备类型的信息。
具体实现中,本申请实施例中所描述的处理器401、输出设备402、输入设备403可执行图1或者图2提供的信息处理方法的实施例,在此不再赘述。
在一个实施例中提供了一种存储介质,该存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时使处理器执行图1或者图2的组件信息处理方法。
在一个实施例中提供了一种应用程序,该应用程序用于在运行时执行图1或者图2的信息处理方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。所显示或讨论的相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者通过该计算机可读存储介质进行传输。该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是只读存储器(read-onlymemory,ROM),或随机存储存储器(random access memory,RAM),或磁性介质,例如,软盘、硬盘、磁带、磁碟、或光介质,例如,数字通用光盘(digital versatile disc,DVD)、或者半导体介质,例如,固态硬盘(solid state disk,SSD)等。
Claims (10)
1.一种信息处理方法,其特征在于,包括:
接收对象标识,所述对象标识为用于监听数据变化的对象的标识;
判断存储的对象标识中是否存在与所述对象标识相同的对象标识;
在判断出存储的对象标识中不存在与所述对象标识相同的对象标识的情况下,存储所述对象标识。
2.根据权利要求1所述的方法,其特征在于,所述判断存储的对象标识中是否存在与所述对象标识相同的对象标识,包括:
根据所述对象标识确定哈希值;
判断存储的哈希值中是否存在与所述哈希值相同的哈希值;
在判断出存储的哈希值中不存在与所述哈希值相同的哈希值的情况下,确定存储的对象标识中不存在与所述对象标识相同的对象标识。
3.根据权利要求1所述的方法,其特征在于,所述接收对象标识包括:
接收包括对象标识和数据标识的信息;
所述方法还包括:
监听所述数据标识所标识的数据是否发生变化;
当监听到所述数据标识所标识的数据发生变化时,向第一对象标识对应的对象发送数据变更消息,所述第一对象标识是存储的所述数据标识对应的所有对象标识中的任一对象标识。
4.根据权利要求3所述的方法,其特征在于,当监听到所述数据标识所标识的数据发生变化时,所述方法还包括:
判断第一对象标识对应的对象是否存活;
在判断出所述第一对象标识对应的对象存活的情况下,执行所述向第一对象标识对应的对象发送数据变更消息的步骤。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在判断出所述第一对象标识对应的对象不存活的情况下,删除存储的所述第一对象标识。
6.一种信息处理方法,其特征在于,包括:
监听数据标识所标识的数据是否发生变化;
当监听到所述数据标识所标识的数据发生变化时,向第一对象标识对应的对象发送数据变更消息,所述第一对象标识是存储的所述数据标识对应的所有对象标识中的任一对象标识。
7.一种信息处理装置,其特征在于,包括:
接收单元,用于接收对象标识,所述对象标识为用于监听数据变化的对象的标识;
第一判断单元,用于判断存储的对象标识中是否存在与所述对象标识相同的对象标识;
存储单元,用于在判断出存储的对象标识中不存在与所述对象标识相同的对象标识的情况下,存储所述对象标识。
8.一种信息处理装置,其特征在于,包括:
监听单元,用于监听数据标识所标识的数据是否发生变化;
发送单元,用于当监听到所述数据标识所标识的数据发生变化时,向第一对象标识对应的对象发送数据变更消息,所述第一对象标识是存储的所述数据标识对应的所有对象标识中的任一对象标识。
9.一种电子设备,其特征在于,包括处理器、存储器、输入设备和输出设备,所述处理器、所述存储器、所述输入设备和所述输出设备相互连接,其中,所述存储器用于存储支持所述电子设备执行该进程识别方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-6任一项所述的信息处理方法。
10.一种存储介质,其特征在于,所述介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的信息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811646184.3A CN109697036A (zh) | 2018-12-29 | 2018-12-29 | 一种信息处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811646184.3A CN109697036A (zh) | 2018-12-29 | 2018-12-29 | 一种信息处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109697036A true CN109697036A (zh) | 2019-04-30 |
Family
ID=66233082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811646184.3A Pending CN109697036A (zh) | 2018-12-29 | 2018-12-29 | 一种信息处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109697036A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111552616A (zh) * | 2020-04-30 | 2020-08-18 | 汉海信息技术(上海)有限公司 | 一种内存监听方法及装置 |
CN112354189A (zh) * | 2020-11-23 | 2021-02-12 | 腾讯科技(深圳)有限公司 | 一种游戏数据对象匹配方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070282841A1 (en) * | 2006-06-01 | 2007-12-06 | Vugranam Chakravarthy Sreedhar | System and method for role based analysis and access control |
CN106227736A (zh) * | 2016-07-11 | 2016-12-14 | 乐视控股(北京)有限公司 | 一种基于链表结构的逻辑流程实现方法及装置 |
CN106844143A (zh) * | 2016-12-27 | 2017-06-13 | 微梦创科网络科技(中国)有限公司 | 一种日志去重处理方法及装置 |
CN107544846A (zh) * | 2017-08-08 | 2018-01-05 | 武汉斗鱼网络科技有限公司 | 一种内存管理方法、装置及电子设备 |
-
2018
- 2018-12-29 CN CN201811646184.3A patent/CN109697036A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070282841A1 (en) * | 2006-06-01 | 2007-12-06 | Vugranam Chakravarthy Sreedhar | System and method for role based analysis and access control |
CN106227736A (zh) * | 2016-07-11 | 2016-12-14 | 乐视控股(北京)有限公司 | 一种基于链表结构的逻辑流程实现方法及装置 |
CN106844143A (zh) * | 2016-12-27 | 2017-06-13 | 微梦创科网络科技(中国)有限公司 | 一种日志去重处理方法及装置 |
CN107544846A (zh) * | 2017-08-08 | 2018-01-05 | 武汉斗鱼网络科技有限公司 | 一种内存管理方法、装置及电子设备 |
Non-Patent Citations (2)
Title |
---|
CODERZHY: "《KVOController分析》", 《博客园》 * |
左潇龙: "《(六)观察者模式详解(包含观察者模式JDK的漏洞以及事件驱动模型)》", 《博客园》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111552616A (zh) * | 2020-04-30 | 2020-08-18 | 汉海信息技术(上海)有限公司 | 一种内存监听方法及装置 |
CN112354189A (zh) * | 2020-11-23 | 2021-02-12 | 腾讯科技(深圳)有限公司 | 一种游戏数据对象匹配方法、装置、设备及存储介质 |
CN112354189B (zh) * | 2020-11-23 | 2022-05-20 | 腾讯科技(深圳)有限公司 | 一种游戏数据对象匹配方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10833942B2 (en) | Behavioral based device clustering system and method | |
US8671313B2 (en) | Management apparatus and management method | |
EP3152869B1 (en) | Real-time model of states of monitored devices | |
US10860406B2 (en) | Information processing device and monitoring method | |
US8938489B2 (en) | Monitoring system performance changes based on configuration modification | |
WO2016095516A1 (zh) | 一种复杂事件处理方法、装置及*** | |
CN110717076B (zh) | 节点管理方法、装置、计算机设备及存储介质 | |
US10491453B2 (en) | Correlating computing network events | |
US10353762B2 (en) | Hierarchical fault determination in an application performance management system | |
WO2020015115A1 (zh) | 故障告警方法及终端设备 | |
CN108289034A (zh) | 一种故障发现方法和装置 | |
CN106470150B (zh) | 关系链存储方法及装置 | |
JP2017069895A (ja) | 障害切り分け方法および障害切り分けを行う管理サーバ | |
CN109697036A (zh) | 一种信息处理方法及装置 | |
CN115658348B (zh) | 微服务调用方法、相关装置及存储介质 | |
CN115794064B (zh) | 任务处理流程的配置方法、装置、电子设备及存储介质 | |
CN109656898A (zh) | 基于节点度的分布式大规模复杂社团探测方法及装置 | |
CN109462507A (zh) | 配置更新方法、装置、***及电子设备 | |
CA3065729A1 (en) | Business rules processing framework | |
CN107729421B (zh) | 存储过程的执行方法、装置及存储介质 | |
US10924365B2 (en) | Method and system for generating directed graphs | |
CN109391658A (zh) | 一种账号数据同步方法及其设备、存储介质、终端 | |
CN114756301B (zh) | 日志处理方法、装置和*** | |
US20160125330A1 (en) | Rolling upgrade of metric collection and aggregation system | |
CN114201314B (zh) | 一种基于契约的实现服务依赖发现和服务访问的路由方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190430 |
|
RJ01 | Rejection of invention patent application after publication |