一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

文件访问控制方法和系统与流程

2021-11-20 01:20:00 来源:中国专利 TAG:


1.本技术涉及计算机及互联网领域,尤其涉及一种用于文件共享访问的控制方法和系统。


背景技术:

2.随着网络技术的发展以及在线办公的流行,经常需要多方多地域通过网络来共享或操作同一个文件,就需要有相应的共享及操作机制,以免产生错误或混乱。
3.目前对于多方共享同一文件的方案主要有两种:
4.第一种是将文件存放在服务器,各用户远程访问相同的文件原件。但这种方案对网络条件的要求较高,对于网络条件较差(例如,上传下载的网速较慢)或者文件过大等情况,与访问本地文件相比,通过网络访问的性能较差。
5.第二种是将文件的副本分发至各用户本地的计算机,然后借助同步的方式,以保证各地文件副本的一致性。其中同步的方式可以是通过网络或软件的自动同步,例如通过程序自动检测文件的更改,上传或下载文件的最新版本。同步的方式也可以是手动同步,例如:使用u盘、移动硬盘拷贝,使用即时通信软件、邮件发送等。
6.对于第二种方案,当多个用户在多个终端编辑同一个文件时,将可能出现编辑冲突,例如:两人同时修改了同一文件的同一部分,那么在同步合并时,保留哪一方的更改将成为一个问题。为解决此类问题,一种方式是给文件加锁,即在用户打开文件时,将文件锁定,不允许其它端的用户更改此文件的其它副本,即由锁定者独占该文件;等到锁定者关闭文件时,再进行解锁,以允许下一位编辑者独占该文件。


技术实现要素:

7.发明人经过长期的观察和实验发现,现有的文件锁技术由于是将单个文件的打开与关闭事件作为加锁与解锁的触发条件,因而存在以下缺点:
8.(1)当用户打开文件时,并不能确保此时的文件版本是最新的。若用户基于非最新版本的文件进行编辑,那么此次编辑的结果可能与服务器保存的最新版本产生冲突。
9.(2)文件的关闭事件并不是解锁的充分条件。文件关闭时,虽然表明当前用户已结束了编辑,但并不意味着文件已经完成了同步,即无法确保本地更新的内容能够被其它端的用户及时获取,这将导致其它端的用户在编辑时,并不是基于该文件的最新版本,这种情况下将有可能产生冲突文件。
10.(3)没有“文件蔟”的概念。现有文件锁机制只能对单个文件进行操作,无法将多个文件绑定在一起,当作同一个文件进行统一的操作。某些软件提供的文件模型,是由一个“主文件”和一些“附属文件(夹)”构成的“文件蔟”,这些文件的内容是相关联的,当其中一个文件的内容发生改变时,其他文件的内容也可能会进行相应的改变。比如:autodesk revit软件提供的中心模型(central model),是由一个*.rvt文件和*_backup文件夹下的*.dat等文件构成。如果不对这些文件进行统一的锁定和同步,也将有产生冲突文件的可
能,例如:主文件未解锁,而附属文件已被更新并同步。
11.综上所述,现有的文件锁机制无法可靠地防止冲突文件的产生。
12.针对现有技术的上述缺点,发明人经过长期的研究和分析,创造性地提出以下思路来解决现有技术所存在的技术问题:
13.(1)在打开文件前,需要确保此文件是安全可靠、没有文件冲突风险的“可继续编辑”的文件。
14.采用驱动或自己实现的文件系统拦截用户对文件的访问操作,以便在文件不满足“可继续编辑”时,阻止此次访问请求。增加“独占条件”概念,在访问文件的操作被允许前,检查文件是否满足“独占条件”,若满足,则允许此次操作;若不满足,则阻止此次操作。
15.(2)补充文件的解锁条件,以确保文件被标记为解锁后,其它端的用户能够获取到文件的“可继续编辑”的版本。
16.在检测到文件关闭后,并不立即解锁,而是向服务器更新关于此文件的相关信息,例如:同步整个文件,更新下一位锁定者所需的“独占条件”等。
17.(3)需要能够将多个文件和/或文件夹绑定在一起,当作一个整体进行同步、锁定、解锁等操作,这对于autodesk revit等软件所提供的文件模型来说是有益的。可以将多个互相关联的文件归属于同一个结构或对象(文件蔟),对于同一个文件蔟中的文件,可以等到该文件蔟中所有文件都准备好了(例如:均处于unlock状态)时再一起同步,而不是其中单个文件更新就自己立刻同步,从而导致在其他文件没有准备好时产生冲突,能够有效地解决多个关联文件未能整体或一致地同步而产生冲突的问题。
18.引入“文件蔟”的概念,将文件蔟的关联关系储存在软件的数据结构中,在对其中某一文件进行操作的同时,对与之关联的其它文件也采取相应的操作。
19.有鉴于现有技术的上述缺陷,本技术提供一种文件访问控制方法和系统,通过在广域网环境下的接力锁机制以实现文件的独占访问,尤其是用于在多人多地域同时编辑同一文件时,确保文件的强一致性。
20.接力锁的“接力”二字来源于第n位用户必须在满足了第n-1位用户给出的独占条件之后,才可以独占该文件。其中“独占条件”可以是一个直接或间接的条件,其目的是为了确保在第n次编辑前,本地文件副本的内容已完全与第n-1次编辑的结果一致,凡是能达成这一目的的条件,都可称为“独占条件”。其中直接条件与间接条件可以是:
21.(1)直接条件:服务器所保存的文件特征值信息将直接用于本地文件的校验,如:文件版本号、文件hash值、文件最后一次修改时间等;
22.(2)间接条件:服务器不直接保存文件的校验条件,而是保存该条件的获取方式。例如:在p2p或局域网加速同步的场景下,独占条件可以是上一位锁定者的通讯方式(如:ip地址),下一位访问者将直接与上一位锁定者通信,以获取上一位锁定者的本地文件的特征值进行校验,同时在特征值不一致时,可以直接以p2p的方式从上一位锁定者处拉取文件的最新版本。
[0023]“文件蔟”是将多个文件和/或文件夹关联成一个整体,使之可以当作单个文件进行操作。
[0024]
当用户在本地操作文件时,先判断本地文件是否为“可继续编辑”的文件。“可继续编辑”的文件是指用户基于此版本的文件进行编辑,将不会在后续过程中产生冲突,一个文
件在满足两个条件时可以继续编辑:
[0025]
(1)文件处于非锁定(unlocked)状态;
[0026]
(2)文件满足“独占条件”,即第n次编辑前,文件内容与第n-1次编辑的结果一致。
[0027]
相对应的,如果文件处于锁定(locked)状态,或者文件不满足“独占条件”,则可以认为该文件不是“可继续编辑”的文件,即继续编辑该文件有可能会产生冲突。
[0028]
需要说明的是,多方对同一个文件进行共享、同步及编辑,各方本地的操作系统或存储器中均会保存有该文件的本地版本,在服务器(或称为在线平台、云端)上也会保存该文件的在线版本,通过共享及同步机制,该文件的各个本地版本和在线版本的内容会保存为一致。因此,在本技术中,默认将该文件的本地版本和在线版本统称为该文件,即可以包括该文件的本地版本和在线版本中的任意一个或多个,除非加以明确的指示或区分。此外,除非另有指示,本技术中本地操作文件,是指对保存在该客户端(或称为设备、用户设备)处的该文件的本地版本进行打开、查看、编辑、保存、传输、标记等各类操作;类似的,本技术中在线操作文件,是指对保存在服务器的该文件的在线版本进行打开、查看、编辑、保存、传输、标记等各类操作。
[0029]
一方面,本技术提供一种文件访问控制方法,包括:当监测到对目标文件的访问操作时,获取目标文件的锁定状态和独占条件;以及根据锁定状态和独占条件,判断是否允许访问目标文件;其中,如果锁定状态为非锁定并且满足独占条件,则允许访问目标文件。
[0030]
在一些实施例中,可选的,先判断锁定状态,再判断独占条件;其中,如果锁定状态为已锁定,则不允许访问目标文件;和/或如果锁定状态为非锁定但不满足独占条件,则不允许访问目标文件。
[0031]
在一些实施例中,可选的,目标文件,以及与目标文件相关联的其他文件,基于关联关系形成文件蔟,其中,目标文件和其他文件的形式包括文件或文件夹;以及文件蔟中的其他文件,与目标文件具有相同的锁定状态和独占条件;以及当对目标文件进行操作时,根据关联关系,对文件蔟中的其他文件进行相应的操作。
[0032]
在一些实施例中,可选的,根据独占条件中包括的信息,判断目标文件的当前内容与目标文件前一次保存的内容是否一致,从而确定是否满足独占条件。
[0033]
在一些实施例中,可选的,独占条件中包括直接条件,直接条件被配置为能够直接用于判断目标文件的当前内容与目标文件前一次保存的内容是否一致的信息;和/或独占条件中包括间接条件,间接条件被配置为能够用于获取直接条件。
[0034]
在一些实施例中,可选的,独占条件包括以下一种或多种信息:文件的版本号;文件的哈希值;文件的前一次修改时间;文件的特征值;文件的前一次访问者的通信方式;文件的前一次保存版本的获取方式。
[0035]
在一些实施例中,可选的,直接条件包括文件的版本号;比较目标文件的版本号与独占条件中的版本号;其中,如果目标文件的版本号与独占条件中的版本号相同,则判断目标文件的当前内容与目标文件前一次保存的内容一致;如果目标文件的版本号小于独占条件中的版本号,则判断目标文件需要更新;以及如果目标文件的版本号大于独占条件中的版本号,则判断发生错误。
[0036]
在一些实施例中,可选的,间接条件包括前一次访问者的通信方式,根据独占条件中的前一次访问者的通信方式与前一次访问者通信,以从前一次访问者处获取用于比较目
标文件的当前内容与目标文件前一次保存的内容是否一致的直接条件;和/或间接条件包括前一次保存版本的获取方式,根据独占条件中的前一次保存版本的获取方式获取前一次保存版本,以更新目标文件。
[0037]
在一些实施例中,可选的,在访问目标文件后,先完成解锁前操作,再更新独占条件,并将锁定状态修改为非锁定。
[0038]
在一些实施例中,可选的,解锁前操作包括以下一种或多种操作:关闭目标文件;保存目标文件;将本次保存的目标文件上传到服务器;将与目标文件相关联的文件夹上传到服务器;对目标文件所属的文件簇及其包括的其他文件进行相应的操作。
[0039]
另一方面,本技术还提供一种文件访问控制系统,包括客户端,客户端包括:接力锁逻辑模块,被配置为当监测到对目标文件的访问操作时,能够获取目标文件的锁定状态和独占条件,并根据锁定状态和独占条件,判断是否允许访问目标文件;以及访问拦截模块,被配置为能够根据接力锁逻辑模块的判断结果,拦截或放行对目标文件的访问操作;其中,接力锁逻辑模块进一步被配置为能够当锁定状态为非锁定并且满足独占条件时,允许访问目标文件。
[0040]
在一些实施例中,可选的,客户端还包括:接力锁服务检测模块,被配置为能够检测接力锁逻辑模块是否正常运行;和/或访问监测模块,被配置为能够监测对目标文件的访问操作。
[0041]
在一些实施例中,可选的,还包括:服务器,被配置为能够保存目标文件的锁定状态和独占条件;接力锁逻辑模块与服务器通信连接,并被配置为能够从服务器获取目标文件的锁定状态和独占条件。
[0042]
在一些实施例中,可选的,接力锁逻辑模块进一步被配置为能够先判断锁定状态,再判断独占条件;其中,如果锁定状态为已锁定,则不允许访问目标文件;和/或如果锁定状态为非锁定但不满足独占条件,则不允许访问目标文件。
[0043]
在一些实施例中,可选的,目标文件,以及与目标文件相关联的其他文件,基于关联关系形成文件蔟;其中,目标文件和其他文件的形式包括文件或文件夹;以及文件蔟中的其他文件,与目标文件具有相同的锁定状态和独占条件;以及客户端被配置为能够当对目标文件进行操作时,根据关联关系,对文件蔟中的其他文件进行相应的操作。
[0044]
在一些实施例中,可选的,接力锁逻辑模块进一步被配置为能够根据独占条件中包括的信息,判断目标文件的当前内容与目标文件前一次保存的内容是否一致,从而确定是否满足独占条件;其中,独占条件包括以下一种或多种信息:文件的版本号;文件的哈希值;文件的前一次修改时间;文件的特征值;文件的前一次访问者的通信方式;文件的前一次保存版本的获取方式。
[0045]
在一些实施例中,可选的,接力锁逻辑模块进一步被配置为能够比较目标文件的版本号与独占条件中的版本号,并判断目标文件的当前内容与目标文件前一次保存的内容是否一致;其中,如果目标文件的版本号与独占条件中的版本号相同,则判断目标文件的当前内容与目标文件前一次保存的内容一致;如果目标文件的版本号小于独占条件中的版本号,则判断目标文件需要更新;以及如果目标文件的版本号大于独占条件中的版本号,则判断发生错误。
[0046]
在一些实施例中,可选的,接力锁逻辑模块进一步被配置为能够根据独占条件中
的前一次访问者的通信方式与前一次访问者通信,以比较目标文件的当前内容与目标文件前一次保存的内容是否一致;和/或接力锁逻辑模块进一步被配置为能够根据独占条件中的前一次保存版本的获取方式获取前一次保存版本,以更新目标文件。
[0047]
在一些实施例中,可选的,客户端进一步被配置为能够在访问目标文件后,先完成解锁前操作,再更新独占条件,并将锁定状态修改为非锁定;其中,解锁前操作包括以下一种或多种操作:关闭目标文件;保存目标文件;将本次保存的目标文件上传到服务器;将与目标文件相关联的文件夹上传到服务器。
[0048]
另一方面,本技术还提供一种文件访问控制方法,包括:当监测到对目标文件的访问操作时,查询目标文件是否包含于文件蔟,其中,目标文件的形式包括文件或文件夹;以及如果目标文件包含于文件蔟,根据文件蔟的状态,确定是否允许对目标文件的访问操作。
[0049]
在一些实施例中,可选的,还包括:如果允许对目标文件的访问操作,相应地处理文件蔟和/或文件蔟中包含的其他文件,其中,其他文件的形式包括文件或文件夹。
[0050]
在一些实施例中,可选的,文件蔟包括文件列表,文件列表包括与文件蔟中每一个文件相对应的文件标识;以及通过检索文件列表来查询目标文件是否包含于文件蔟。
[0051]
在一些实施例中,可选的,如果目标文件的文件标识包含于文件列表,或者目标文件从属于文件列表中的文件夹,则目标文件包含于文件蔟。
[0052]
在一些实施例中,可选的,文件蔟的状态包括以下一种或多种状态:已锁定;未锁定;可读;可写;可删除;独占;可操作其子项。
[0053]
在一些实施例中,可选的,文件蔟的状态为文件蔟中所有文件的最小权限状态。
[0054]
在一些实施例中,可选的,访问操作包括以下一种或多种操作:读取;写入;删除;添加文件;添加子文件夹。
[0055]
在一些实施例中,可选的,如果文件蔟的状态为已锁定,则不允许对目标文件的访问操作。
[0056]
在一些实施例中,可选的,如果文件蔟的状态为未锁定,且访问操作为删除,则允许对目标文件的访问操作,并从文件蔟中移除目标文件。
[0057]
另一方面,本技术还提供一种文件访问控制系统,包括:文件蔟模块,文件蔟模块包括文件列表,文件列表包括与文件蔟中每一个文件相对应的文件标识,其中,文件蔟中每一个文件的形式包括文件或文件夹。
[0058]
在一些实施例中,可选的,还包括:访问监控模块,被配置为能够监测并控制对目标文件的访问操作;访问监控模块进一步被配置为能够当监测到对目标文件的访问操作时,向文件蔟模块查询目标文件是否包含于文件蔟,其中,目标文件的形式包括文件或文件夹;文件蔟模块进一步被配置为能够查询目标文件是否包含于文件蔟,其中,如果目标文件包含于文件蔟,则向访问监控模块反馈文件蔟的状态;访问监控模块进一步被配置为能够根据文件蔟的状态,确定是否允许对目标文件的访问操作。
[0059]
在一些实施例中,可选的,还包括:关联操作模块,被配置为能够当允许对目标文件的访问操作时,相应地处理文件蔟和/或文件蔟中包含的其他文件,其中,其他文件的形式包括文件或文件夹。
[0060]
在一些实施例中,可选的,访问监控模块进一步被配置为能够通过检索文件列表来查询目标文件是否包含于文件蔟。
[0061]
在一些实施例中,可选的,如果目标文件的文件标识包含于文件列表,或者目标文件从属于文件列表中的文件夹,则目标文件包含于文件蔟。
[0062]
在一些实施例中,可选的,文件蔟的状态包括以下一种或多种状态:已锁定;未锁定;可读;可写;可删除;独占;可操作其子项。
[0063]
在一些实施例中,可选的,文件蔟的状态为文件蔟中所有文件的最小权限状态。
[0064]
在一些实施例中,可选的,访问操作包括以下一种或多种操作:读取;写入;删除;添加文件;添加子文件夹。
[0065]
在一些实施例中,可选的,访问监控模块进一步被配置为能够当文件蔟的状态为已锁定时,不允许对目标文件的访问操作。
[0066]
在一些实施例中,可选的,当文件蔟的状态为未锁定且访问操作为删除时,访问监控模块进一步被配置为能够允许对目标文件的访问操作;以及关联操作模块进一步被配置为能够从文件蔟中移除目标文件。
[0067]
另一方面,本技术还提供一种文件访问控制装置,包括存储器、处理器以及存储在存储器中并能够在处理器上运行的计算机程序,处理器被配置为能够在执行计算机程序时实现根据上述的文件访问控制方法的步骤。
[0068]
另一方面,本技术还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时能够实现根据上述的文件访问控制方法的步骤。
[0069]
本技术提供的方法和系统与现有的文件锁机制相比,至少具有以下优点:
[0070]
(1)通过驱动或自己实现的文件系统拦截用户对文件的打开事件,以及在加锁时增加对“独占条件”的判定,有效地防止编辑者打开不满足“可继续编辑”条件的文件,防止造成冲突。
[0071]
(2)文件关闭后,在执行完解锁的先决条件后,才进行解锁,为第(1)点中,其它用户获取“可继续编辑”的文件提供了可能。
[0072]
(3)“文件蔟”的概念使文件锁的支持由单个文件,扩展到了多个文件和/或文件夹。
[0073]
本技术的文件访问控制方法和系统,相对于现有技术来说,在一些使用现有的文件锁方式无法检测或避免文件冲突的情况下,也能够保证文件的一致性,从而显著减少了文件冲突情况的发生,增强了共享文件的一致性。
[0074]
以下将结合附图对本技术的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本技术的目的、特征和效果。
附图说明
[0075]
当结合附图阅读以下详细说明时,本技术将变得更易于理解,在整个附图中,相同的附图标记代表相同的零件,其中:
[0076]
图1为本技术中文件访问控制系统的一个实施例的结构示意图。
[0077]
图2为本技术中客户端的一个实施例的模块示意图。
[0078]
图3为本技术中服务器的一个实施例的模块示意图。
[0079]
图4为本技术中文件访问控制系统的一个实施例的架构示意图。
[0080]
图5为本技术中文件访问控制方法的一个实施例的文件状态迁移示意图。
[0081]
图6为本技术中文件访问控制方法的一个实施例的流程示意图。
[0082]
图7为本技术中文件访问控制系统的一个实施例的架构示意图。
[0083]
图8是本技术中计算机装置、设备或终端的一个实施例的结构示意图。
具体实施方式
[0084]
下面将对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部实施例。本技术可以通过许多不同形式的实施例来得以体现,本技术的保护范围并非仅限于文中提到的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本技术保护的范围。
[0085]
下面将参考构成本说明书一部分的附图对本技术的各种具体实施方式进行描述。应该理解的是,虽然在本技术中使用表示方向的术语,诸如“前”、“后”、“上”、“下”、“左”、“右”、“内”、“外”、“顶”、“底”、“正”、“反”、“近”、“远”、“横向”、“纵向”、“宽度方向”、“长度方向”、“高度方向”、“轴向”、“径向”、“顺时针方向”、“逆时针方向”等描述本技术的各种示例结构部分和元件,但是在此使用这些术语只是为了方便说明的目的,这些术语是基于附图中显示的示例性方位而确定的。本技术所公开的实施例可以按照不同的方向设置,所以这些表示方向的术语只是作为说明而不应视作为限制。
[0086]
为了便于描述,附图中所表示的各个模块或部分之间的连接关系仅为示例性的描述,本领域技术人员完全可以采用其他等效的连接关系,只要在这样的连接关系下各个模块或部分也同样能够实现本技术的技术方案的功能即可。本技术所公开的实施例可以按照不同的等效的连接关系设置,所以附图及其说明书的相关内容中所表示的连接关系只是作为说明而不应视作为限制。
[0087]
附图中所示出的每一部件的尺寸是任意示出的,本技术并没有限定每个部件的具体尺寸,除非在说明书和附图中有明确的记载或描述。为了使图示更清晰,附图中有些地方适当夸大了部件的尺寸或调整了相应的比例关系。
[0088]
本技术中所使用的诸如“第一”和“第二”等序数词仅仅用于区分和标识,而不具有任何其他含义,如未特别指明则不表示特定的顺序,也不具有特定的关联性。例如,术语“第一部件”本身并不暗示“第二部件”的存在,术语“第二部件”本身也不暗示“第一部件”的存在。
[0089]
图1为本技术中文件访问控制系统的一个实施例的结构示意图。如图1所示,系统包括客户端(或终端、装置、设备、实体)100a、100b、100c(统称为客户端100),服务器(也可称为在线平台、云端、服务端)110和网络120。在此出于说明的目的示出了三个客户端,实际上系统可以包括任意数量的客户端。类似地,为适用于实施例的需要,在本技术中描述和示出的其他模块或组件也可以包括单个或多个实例,并且不会失去一般性。
[0090]
客户端100可以是用于本地存储、查看、编辑文件(或内容项),并将文件与服务器110及其他客户端100同步的任何合适的计算机客户端、手持式移动客户端、平板计算机或其他计算设备。
[0091]
每个客户端100通过网络120与服务器110通信。网络120可以是任何合适的网络,例如可以包括局域网、广域网、专用网、全球网络以及它们的任意组合。在一些实施例中,客
户端100经由有线或无线通信网络与本地网络服务提供商通信,并且通过互联网与服务器110通信。客户端100a、100b和100c可以通过服务器110的中转在彼此之间通信,也可以通过网络120或其他通信网络(如图1中虚线所示)彼此直接通信,诸如经由点对点(p2p)通信、蓝牙(bluetooth)连接或经由通用串行总线(usb)的有线连接进行通信。
[0092]
服务器110为客户端100的用户提供文件共享和同步服务,例如允许客户端100a的用户与其他客户端100b、100c的用户共享同一个文件。服务器110还可以响应于共享文件内容的变化而进行更新,并允许跨多个客户端100对共享文件进行同步更新。例如:根据客户端100a处对该文件的本地修改,将客户端100b、100c以及服务器110处的该文件更新为客户端100a处保存的该文件的最终(或最新、最近、最后)版本。类似的,也可以根据服务器110处对该文件的在线修改,将客户端100a、100b、100c处的该文件更新为服务器110处保存的该文件的最终版本。
[0093]
在一些实施例中,同一个用户可以在与该用户的账号相关联的多个客户端100之间同步文件,并且该用户也可以在与其他用户的账户相关联的客户端100之间共享和同步文件。
[0094]
客户端100和服务器110存储的内容可以包括任何类型或格式的以数字化形式保存的数据或内容,例如数字数据、文档、多媒体(例如:图像、照片、视频、音频、流媒体等内容)、数据文件、数据库、源代码、目标代码、记录以及任何其他类型的数据、文件或文件夹,以下若无特别指明,统称为文件或内容项,其保存或展现的形式及类型均可以为文件或文件夹。在一些操作系统中,文件(file)和文件夹(directory)统称为文件系统项(file system entries),在本技术中若无特别指明,也与上述内容一起统称为文件或内容项。服务器110存储的文件还可以用于组织其他文件或内容项,例如文件夹、表、集合、专辑、播放列表、或用于其他数据库结构(例如:面向对象、键、值等)。在实践中,各种客户端100可以基于账号的关联性及相应的权限等对不同组的文件进行同步。
[0095]
图2为本技术中客户端100的一个实施例的模块示意图。如图2所示,客户端100包括操作系统210、本地文件协同程序240以及一个或多个本地应用程序220。本地应用程序220可以包括用于创建、查看、使用和修改存储在客户端100上的文件的各种应用程序,例如文字处理程序、电子表格、数据库管理系统、代码编辑器、图像或视频编辑器、电子书阅读器、音频或视频播放器等。本地文件协同程序240可以独立地或者与操作系统210、本地应用程序220等相配合,用于客户端100本地文件的共享、同步、监控、协同等操作和处理,以执行和实现本技术提供的各种文件访问控制的方法。每个客户端100上的操作系统210提供本地文件管理系统,并可运行各种软件模块,例如本地应用程序220、本地文件协同程序240。
[0096]
客户端100还可以包括用于向用户提供信息的显示器,并且在某些客户端100中包括触摸屏。客户端100还可以包括用于经由网络120与服务器110通信的网络接口。客户端100还可以包括用户输入模块,用户输入模块可以从诸如键盘、鼠标、触控板或其他客户端的各种用户输入客户端接收用户输入。为了描述的简要,图中并未示出客户端100以上及更多的常规组件,例如一个或多个计算机处理器、本地固定存储器(例如ram和rom)以及可选的可移动存储器(例如sd卡和u盘)、电源、音视频输出客户端等。客户端100还可以包括诸如相机或定位模块之类的附加组件。相机可以用于捕获图像或视频。定位模块使用例如全球定位卫星信号、蜂窝数据、基站信号、网络数据或其他方法来确定客户端100的位置。本地应
用程序220或本地文件协同程序240可以使用位置模块获取位置数据,并将位置数据添加到相关文件的元数据中,例如由相机捕获的图像。
[0097]
客户端100能够以各种方式访问服务器110。本地文件协同程序240可以是专用应用程序或模块,提供对服务器110的服务的访问,既可以通过用户界面提供对共享文件的访问,也可以通过相应的接口或协议提供对其他应用程序的访问。作为替代,本地文件协同程序240可以将对服务器110的访问与操作系统210提供的本地文件管理系统集成在一起。当对服务器110的访问被集成在本地文件管理系统中时,由本地文件协同程序240结合操作系统210,可以将服务器110上存储和维护的文件组织方案表示为本地文件结构。本地文件协同程序240可以采用各种形式实现,例如独立的应用程序、应用程序插件或浏览器扩展等。
[0098]
操作系统210可以处理和识别各种事件。此类事件包括来自本地应用程序220的关闭、打开文件或内容项的请求等。如下所述,这些事件可由文件协同程序240监控和提取,并用来识别与文件有关的操作或变化。由操作系统210管理和控制的事件,可以称之为系统事件,这些事件以及能够从这些事件中提取的各种信息和数据,与操作系统210相关,并不依赖本地应用程序220或其他应用程序。
[0099]
本地文件协同程序240可以识别相对于文件发生的交互,例如当用户打开、关闭或编辑客户端100上的文件时。这些交互由本地文件协同程序240监控或标识,以生成描述与文件交互相关的交互信息。交互信息可以包括与文件协同程序240的交互以及与本地应用程序220的交互。交互信息的其他类型还可以包括与文件有关的状态信息、注释、消息、通知请求等,这些信息可以由文件协同程序240获取。消息可以包括与其他客户端100之间的通知消息,指示用户意图对文件进行交互(例如,打开、编辑、保存、更新)的消息以及指示用户意图开始协同编辑或会话的消息。
[0100]
通知请求可以包括当另一用户的交互信息改变时被通知的请求。交互信息还可以包括元数据修改,例如版本说明或对存储于服务器110上的相关文件的进一步信息的请求,例如查看版本信息或先前文件版本的请求。
[0101]
交互信息可以被发送到对文件进行共享或同步的其他客户端100,例如在另一客户端向其他用户发出与该文件相关的警告、其他用户想要编辑该文件或者发起编辑会话等。本地文件协同程序240可以识别用户何时使用本地应用程序220与文件进行交互,并且还可以接收来自用户的输入信息。在各种实施例中,可以通过与操作系统210的交互来识别用户在文件中的存在(例如,用户具有打开的文件或正在编辑的内容)。
[0102]
客户端100可以从本地文件协同程序240接收文件或文件的更新版本,并允许用户使用存储或运行在客户端100上的各种本地应用程序220查看、修改文件并与之交互。例如,客户端100可以包括操作图像内容的图像编辑应用程序、允许文本内容修改的文字处理应用程序、或者允许图形内容的修改计算机辅助设计(cad)应用程序等。交互信息由客户端100经由用户交互应用确定,并且交互信息可以被发送到其他客户端100。另外,当客户端100接收到与其他客户端100有关的交互信息时,客户端100可以显示该交互信息,例如以用户界面元素的形式显示交互信息。
[0103]
在一些实施例中,检测与文件有关的交互信息的应用程序不同于查看或操作文件的应用程序。例如,检测交互信息的应用程序不同于操作或显示图像内容的照片编辑应用程序。在各种实施例中,检测交互信息的应用还负责将文件与服务器110同步,可以针对各
种应用、文件或内容进行监控,或者将监控集成到每种类型的文件查看器中。例如,对于照片编辑应用程序、文字处理应用程序和播放列表编辑应用程序中的每一个,可以使用通用的监控插件或应用程序,也可以分别使用特定的监控插件或应用程序。
[0104]
在一些实施例中,对文件进行共享或同步的客户端100可以协同地编辑该文件。协同用户(或实体)可以在本地应用程序220中打开、查看或编辑文件。在一些实施例中,两个或更多个协同用户可以在协同期间同时编辑该文件。协同用户能够实时地对其他协同用户可见的内容进行更改,并查看其他协同用户对该文件及其内容所做的更改。在一些实施例中,用户协同由本地文件协同程序240管理。
[0105]
本地文件协同程序240可以包括接力锁服务检测模块241、接力锁逻辑模块242、访问拦截模块243、访问监测模块244。
[0106]
客户端100本地设置有共享文件夹或共享文件系统,访问监测模块244能够对其内部的文件或文件夹的访问操作进行监测。当监测到有应用程序(例如:本地应用程序220)对共享文件进行访问时,该访问可以被访问拦截模块243拦截,并根据具体情况,对该访问进行拒绝或允许。此外,共享文件夹或共享文件系统内部的文件或文件夹的系统事件(如:close file)也可以被监测到。
[0107]
接力锁服务检测模块241用于检测接力锁逻辑模块242是否正常运行,以确保共享文件夹内部的文件或文件夹无法在接力锁逻辑模块242未运行时被打开,或在被打开前能够成功唤起接力锁逻辑模块242。
[0108]
访问拦截模块243能够对共享文件夹或共享文件系统内的文件访问操作进行拦截,并在其与接力锁逻辑模块242交互后决定是否对此次访问操作进行放行或阻止。
[0109]
接力锁服务检测模块241、访问拦截模块243、访问监测模块244可以是由驱动程序或本身的应用程序实现的文件系统,也可以是以文件管理器软件的形式实现,其目的是为了满足对文件访问操作的拦截,以及对文件或文件夹系统事件的监测。
[0110]
在一些实施例中,文件系统是操作系统的一部分,文件系统事件是由操作系统监控并发出的,可以通过驱动程序或本身的应用程序去监听、拦截或处理操作系统发出的这些事件。
[0111]
在一些实施例中,也可以编写或设置一个文件管理器软件,具有与操作系统的资源管理器类似的功能,然后把操作系统中的本地文件夹及其文件隐藏,使得用户只能通过这个文件管理器软件来访问这些文件,相当于用文件管理器软件代替了操作系统本身的文件系统或资源管理器。由于用户是通过另行编写或设置的文件管理器软件界面操作这些文件的,文件管理器软件本身就能知道用户做了哪些操作,用户的每一个操作记录都会被这个文件管理器软件监控和拦截,那么就不需要去监听操作系统本身的事件了。
[0112]
接力锁逻辑模块242能够与服务器110通信,从服务器110获取共享文件的锁定状态和独占条件,并根据锁定状态和独占条件来判断是否允许对共享文件的访问。访问拦截模块243能够根据接力锁逻辑模块242的判断结果,拦截或放行对共享文件的访问操作。
[0113]
图3为本技术中服务器110的一个实施例的模块示意图。如图3所示,服务器110可以包括在线文件协同模块340、存储模块310。为了简要的目的,图中未示出服务器110可以包括的其他各种必要的或可选的软硬件模块、装置,例如:处理器、存储器、显示装置、输入装置、网络接口、操作系统、应用程序等。
[0114]
在线文件协同模块340可以管理和处理存储于服务器110的共享文件及相关信息,并且能够与客户端100的本地文件协同程序240交互,以在多个客户端100及服务器110之间对共享文件进行处理和同步。例如,客户端100a的第一实体(用户)对某个共享文件进行了修改,则客户端100a的本地文件协同程序240能够将该文件的修改信息及修改后的最终版本,通过在线文件协同模块340上传至服务器110,以将服务器110上存储的该文件更新为修改后的最终版本,并进行相应的记录或标记。稍后或同时地,还可以进一步通过文件协同模块340传送至其他存储有该文件的客户端100b和客户端100c,以将客户端100b和客户端100c上存储的该文件更新为修改后的最终版本。
[0115]
在一些实施例中,多个客户端100也可以通过服务器110的在线文件协同模块340进行交互。例如,在客户端100a处的第一实体正在操作或编辑某个共享文件情况下,另一个客户端100b处的第二实体打开该文件并试图对该文件进行修改时,可通过在线文件协同模块340分别向客户端100a和客户端100b发送相应的通知或提示信息,例如,向客户端100b处的第二实体发送消息,提示该文件正在被客户端100a处的第一实体编辑,以便于第二实体采取关闭文件、放弃操作、发出协同编辑请求等操作;向客户端100a处的第一实体发送消息,提示出现其他实体对该文件的操作或请求,以便于第一实体采取关闭文件、保存文件、接受协同编辑请求等操作。
[0116]
存储模块310能够保存共享文件以及与共享文件相关的信息,例如共享文件的锁定状态、独占条件、文件蔟以及关联关系等。服务器110将记录所有共享的文件或文件蔟的文件状态,文件状态主要由两部分构成:
[0117]
(1)锁定状态:有locked(已锁定)和unlocked(非锁定)两个取值,用于标识该文件当前是否被人占用。
[0118]
(2)独占条件:下一位访问者独占该文件所需要满足的条件。
[0119]
基于上述的客户端100和服务器110,本技术提供一种文件访问控制的方法和系统,以下以示例的方式进行更具体的描述。
[0120]
本技术提供的文件访问控制方法,可以包括以下步骤:
[0121]
步骤一,当监测到对目标文件的访问操作时,获取目标文件的锁定状态和独占条件。
[0122]
步骤二,根据锁定状态和独占条件,判断是否允许访问目标文件。如果锁定状态为非锁定并且满足独占条件,则允许访问目标文件。
[0123]
在一些实施例中,可以先判断锁定状态,再判断独占条件。如果锁定状态为已锁定,则不允许访问目标文件,不再对独占条件进行判断。如果锁定状态为非锁定,再判断独占条件。如果锁定状态为非锁定并且满足独占我们的,则允许访问目标文件;如果锁定状态为非锁定但不满足独占条件,则不允许访问目标文件。
[0124]
在一些实施例中,目标文件以及与目标文件相关联的其他文件和/或文件夹,可以基于关联关系形成文件蔟。文件蔟中的其他文件和/或文件夹,与目标文件具有相同的锁定状态和独占条件。当对目标文件进行操作时,根据关联关系,对文件蔟中的其他文件和/或文件夹进行相应的操作。例如,将目标文件的锁定状态修改为locked时,同时也将文件蔟中的其他文件和/或文件夹的锁定状态均修改为locked,使得在某个用户访问目标文件的过程中,文件蔟中的其他文件和/或文件夹均不允许其他用户访问,从而使得文件蔟中的所有
文件保持一致。
[0125]
在一些实施例中,在客户端上可以使用相关工具(如:subst等)将文件或文件蔟所在的文件夹映射为一个盘符,以确保其中的文件及文件夹在不同客户端上均具备相同的文件路径。这种方式,对于某些依赖文件路径或者文件的绝对路径的软件(例如:autodesk revit软件)来说是有益的。
[0126]
在一些实施例中,对于文件蔟的情况,可以先判断目标文件是否属于某一文件蔟的成员:若是,则以该文件蔟的锁定状态作为其锁定状态(“一人被锁,全家被锁”),并且独占条件也为文件蔟的独占条件;若否,则按单个文件处理。其实,在某种意义上,单个文件也可以看作仅有一个成员的文件蔟。
[0127]
在该步骤中,可以根据独占条件中包括的信息,判断本地的目标文件的当前内容与目标文件前一次(或最新一次、最终一次、最近一次、最后一次)保存的内容是否一致,从而确定是否满足独占条件。独占条件是用于判断本地文件是否与最近更新的公共版本一致,根据判定信息的获取途径,独占条件可以包括直接条件和/或间接条件。
[0128]
直接条件能够直接用于判断本地的目标文件的当前内容与目标文件前一次保存的内容是否一致,直接条件可以包括以下一种或多种信息:文件的版本号;文件的hash(哈希)值;文件的前一次修改时间;文件的特征值。
[0129]
间接条件用于获取直接条件和/或获取目标文件的最新版本,间接条件可以包括以下一种或多种信息:文件的前一次访问者的通信方式;文件的前一次保存版本的获取方式。相对于由服务器储存完整的判定信息(直接条件),服务器储存获取完整判定信息的“钥匙”(间接条件),客户端拿到“钥匙”后自行去获取完整的判定信息,这样能够有效地减少服务器的占用空间。
[0130]
在一些实施例中,可以先根据间接条件获取用于文件比较的相关信息,例如文件的hash码、hash树等hash值。当判断文件不一致时,再进一步获取更新该文件的数据,例如根据间接条件直接把整个文件下载过来。
[0131]
在一些实施例中,独占条件中包括前一次保存的文件的hash值,可以通过比较目标文件的hash值与独占条件中的hash值,来判断目标文件的当前内容与前一次保存的内容是否一致,从而确定是否满足独占条件。
[0132]
在一些实施例中,独占条件中包括文件的自增的版本号(文件修改后更新相应的版本号,更新的文件的版本号大于之前的文件的版本号),可以通过比较目标文件的版本号与独占条件中的版本号来进行判断,并且能够区分不同的情况以采取相应的措施。
[0133]
如果目标文件的版本号与独占条件中的版本号相同,则判断目标文件的当前内容与目标文件前一次保存的内容一致,满足独占条件。
[0134]
如果目标文件的版本号小于独占条件中的版本号,则说明目标文件的当前版本更旧,目标文件需要更新,此时可正常进行文件的同步更新操作,例如可以提示用户或自动地将目标文件更新为最新的版本(即前一个用户最终保存的版本)。
[0135]
如果目标文件的版本号大于独占条件中的版本号,则可以判断发生了非正常解锁等错误。例如,前一个用户在锁定后,出现异常关机、客户端崩溃等情况导致没有正常解锁,而后由于锁定超时或是由管理员强制解锁。此时,可以提醒用户是否将文件另行保存,以防止工作内容的丢失。
[0136]
在一些实施例中,服务器不直接保存用于校验文件内容的校验条件,而是保存该检验条件的获取方式。例如:独占条件包括前一个用户的通信方式(间接条件),以使得当前的访问者能够直接与前一个用户通信,以从前一个用户处获取用于比较校验文件内容的校验条件(直接条件),以进行文件内容的校验,从而判断是否满足独占条件。
[0137]
在一些实施例中,可以根据独占条件中的前一次访问者的通信方式与前一次访问者通信,以从前一次访问者处获取用于比较目标文件的当前内容与目标文件前一次保存的内容是否一致的直接条件,以比较目标文件的当前内容与目标文件前一次保存的内容是否一致;也可以根据独占条件中的前一次保存版本的获取方式获取前一次保存版本,以更新目标文件。在该实施例中,直接条件可以是保存在前一次访问者处,也可以是待通过间接条件与前一次访问者通信时再进行相应的运算而生成的。
[0138]
作为一个示例,在p2p或局域网加速同步的场景下,独占条件可以是前一个用户(即上一个锁定者)的通信方式(如:ip地址),当前的用户(即当前的访问者)将直接与前一个用户通信,以获取前一个用户的本地文件的特征值进行校验。文件的特征值可以是已经保存在前一个用户处,通过间接条件可直接获取;也可以是当通过间接条件与前一个用户通信时,进行相应的运算新生成的。当校验结果指示文件的特征值不一致时,可以直接以p2p的方式从前一个用户处拉取该文件的最新版本。
[0139]
由于直接条件需要存储或通过计算而得到,并且在下一个用户访问文件之前,也并不需要使用直接条件。因此,平时在服务器上保存用于获取直接条件的间接条件,当需要使用直接条件时再去通过某种方式获取或计算直接条件,能够有效地节省存储空间,优化执行时间。例如,最后用作判断的独占条件,还是版本号、hash值等直接条件,但是在下一个用户去编辑之前,这个版本号、hash值是没有被用到的,所以可以延迟到真正需要它的时候再去获取或计算,而无需提前消耗资源进行存储或计算,从而能够节省储存空间,优化初始的执行时间。
[0140]
步骤三,在访问目标文件后,先完成解锁前操作,再更新独占条件,然后将锁定状态修改为非锁定。解锁前操作可以包括以下一种或多种操作:关闭目标文件;保存目标文件;将本次保存的目标文件上传到服务器;将与目标文件相关联的文件夹上传到服务器;对目标文件所属的文件簇及其包括的其他文件进行相应的操作。这样能够向后一个用户提供没有文件冲突风险的“可继续编辑”的文件。
[0141]
图4为本技术中文件访问控制系统的一个实施例的架构示意图。如图4所示,当监测到对共享的目标文件(或文件夹)发生应用独占访问操作时,接力锁服务检测模块241向接力锁逻辑模块242询问其是否正在运行。接力锁逻辑模块242响应该询问,并向接力锁服务检测模块241返回自身运行状态。接力锁服务检测模块241根据询问返回的结果,来判断拦截或放行本次访问操作。如果接力锁逻辑模块242正常运行,并向接力锁服务检测模块241返回指示正常运行状态的信号,则接力锁服务检测模块241放行本次访问操作。如果接力锁逻辑模块242没有正常运行,向接力锁服务检测模块241返回指示非正常运行状态的信号,或者接力锁服务检测模块241没有收到来自接力锁逻辑模块242的返回信号,则接力锁服务检测模块241拦截本次访问操作。这样可以确保在接力锁逻辑模块242正常运行的情况下进行访问操作。
[0142]
访问拦截模块243接收到访问操作请求时,向接力锁逻辑模块242询问是否放行本
次访问操作。接力锁逻辑模块242响应该询问,并进一步向服务器110请求目标文件的文件状态。服务器110响应该请求,向接力锁逻辑模块242返回目标文件的锁定状态和独占条件。接力锁逻辑模块242根据获取的锁定状态和独占条件,判断是否允许本次访问操作,并返回判断结果至访问拦截模块243。访问拦截模块243根据接力锁逻辑模块242返回的判断结果,拦截或放行本次访问操作。如果接力锁逻辑模块242判断可以允许本次访问操作,则访问拦截模块243放行本次访问操作,目标文件可被访问。如果接力锁逻辑模块242判断不能允许本次访问操作,则访问拦截模块243拦截本次访问操作,目标文件不可被访问,从而避免因访问目标文件而发生文件冲突的情况。
[0143]
在本技术中,对文件进行的访问操作可以包括对文件进行打开、读取、修改、编辑、保存、更新等各类操作。在一些实施例中,当判断存在文件冲突的风险时,可以根据不同类型的访问操作而选择不同的处理方式,例如可以允许以只读地方式打开的操作,而不允许修改、编辑等操作。在一些实施例中,当判断存在文件冲突的风险而不允许进行访问操作或者对访问操作进行拦截时,还可以进一步向用户进行提示,以引导用户采取相应的更为安全的操作,例如以只读地方式打开目标文件,或者先将目标文件更新为最新一次修改的版本。在本技术中,为方便描述,对于具体的操作类型不再做区分,统一概括性地描述为访问操作。
[0144]
图5为本技术中文件访问控制方法的一个实施例的文件状态迁移示意图,示出了服务器文件状态迁移的过程。如图5所示,在初始状态,即对于一个新建立或新加入共享的文件来说,锁定状态为unlocked,独占条件为null(表示条件为空或没有条件),即没有任何限制,任何人均有资格独占。
[0145]
用户0开始访问该文件,将该文件的锁定状态修改为locked,从而在访问的过程中将该文件独占,不允许其他用户访问该文件。当用户0结束对该文件的访问时,给出相应的独占条件,并将锁定状态修改为unlocked,以供后续的其他用户访问。
[0146]
当用户n尝试访问该文件时,判断该文件的锁定状态为unlocked,并且满足前一个用户n-1给出的独占条件,则用户n被允许访问该文件。用户n开始访问该文件,将该文件的锁定状态修改为locked,从而在访问的过程中将该文件独占,不允许其他用户访问该文件。此时,用户n并未对该文件的独占条件进行更新,该文件的独占条件仍然保持为前一个用户n-1给出的独占条件。但由于此时该文件的锁定状态为locked,不允许其他用户访问,因此无需判断是否满足独占条件,在用户n访问的过程中独占条件并无意义。当用户n结束对该文件的访问时,给出并更新相应的独占条件,并将锁定状态修改为unlocked,以供后续的其他用户访问。
[0147]
当后一个用户n 1尝试访问该文件时,根据用户n结束访问后更新的锁定状态和独占条件进行判断,以判断是否允许用户n 1访问。如果锁定状态为unlocked,并且满足前一个用户n给出的独占条件,则用户n 1被允许访问。用户n 1开始访问该文件,将该文件的锁定状态修改为locked,从而在访问的过程中将该文件独占,不允许其他用户访问该文件。此时,用户n 1并未对该文件的独占条件进行更新,该文件的独占条件仍然保持为前一个用户n给出的独占条件。当用户n 1结束对该文件的访问时,给出并更新相应的独占条件,并将锁定状态重新修改为unlocked,以供后续的其他用户访问。此后更多用户的访问过程与上述用户n、用户n 1访问的过程类似。
[0148]
通过这种方式,每一个用户根据前一个用户给出的独占条件进行访问,并在结束访问后给出最新的独占条件,再传递给后一个用户,即文件锁在各个用户之间接力传递,严格确保了用户n基于前一个用户n-1的编辑版本进行编辑,从而保证了文件的一致性,有效地防止了文件冲突的产生。
[0149]
本技术还提供一种文件访问控制系统,可以包括客户端和服务器。服务器被配置为能够保存目标文件的锁定状态和独占条件。客户端可以包括:接力锁逻辑模块、访问拦截模块、接力锁服务检测模块、访问监测模块。
[0150]
接力锁逻辑模块与服务器通信连接,并被配置为当监测到对目标文件的访问操作时,能够从服务器获取目标文件的锁定状态和独占条件,并根据锁定状态和独占条件,判断是否允许访问目标文件。访问拦截模块被配置为能够根据接力锁逻辑模块的判断结果,拦截或放行对目标文件的访问操作。接力锁服务检测模块被配置为能够检测接力锁逻辑模块是否正常运行。访问监测模块,被配置为能够监测对目标文件的访问操作。
[0151]
在一些实施例中,接力锁逻辑模块进一步被配置为能够先判断锁定状态,再判断独占条件。如果锁定状态为已锁定,则不允许访问目标文件,不再对独占条件进行判断。如果锁定状态为非锁定,再判断独占条件。如果锁定状态为非锁定并且满足独占我们的,则允许访问目标文件;如果锁定状态为非锁定但不满足独占条件,则不允许访问目标文件。
[0152]
对于文件蔟的情况,接力锁逻辑模块进一步被配置为能够先判断目标文件是否属于某一文件蔟的成员:若是,则以该文件蔟的锁定状态作为其锁定状态(“一人被锁,全家被锁”),并且独占条件也为文件蔟的独占条件;若否,则按单个文件处理。其实,在某种意义上,单个文件也可以看作仅有一个成员的文件蔟。
[0153]
文件蔟模块可以用于记录、检索文件蔟列表信息,也就是回答某个文件是不是某个文件蔟的成员,以及具体是哪个文件蔟的成员。接力锁逻辑模块用于判断是否允许访问。在一些实施例中,文件蔟模块可以是接力锁逻辑模块内置的一部分。
[0154]
在一些实施例中,接力锁逻辑模块进一步被配置为能够根据独占条件中包括的信息,判断目标文件的当前内容与目标文件前一次保存的内容是否一致,从而确定是否满足独占条件。
[0155]
在一些实施例中,接力锁逻辑模块进一步被配置为能够比较目标文件的版本号与独占条件中的版本号,并判断目标文件的当前内容与目标文件前一次保存的内容是否一致。如果目标文件的版本号与独占条件中的版本号相同,则判断目标文件的当前内容与目标文件前一次保存的内容一致;如果目标文件的版本号小于独占条件中的版本号,则判断目标文件需要更新;以及如果目标文件的版本号大于独占条件中的版本号,则判断发生错误。
[0156]
在一些实施例中,接力锁逻辑模块进一步被配置为能够根据独占条件中的前一次访问者的通信方式与前一次访问者通信,以比较目标文件的当前内容与目标文件前一次保存的内容是否一致。
[0157]
在一些实施例中,接力锁逻辑模块进一步被配置为能够根据独占条件中的前一次保存版本的获取方式获取前一次保存版本,以更新目标文件。
[0158]
当目标文件从属于一个文件蔟时,客户端可以被配置为当对目标文件进行操作时,根据关联关系,对文件蔟中的其他文件和/或文件夹进行相应的操作。
[0159]
客户端进一步被配置为能够在访问目标文件后,先完成解锁前操作,再更新独占条件,然后将锁定状态修改为非锁定。
[0160]
图6为本技术中文件访问控制方法的一个实施例的流程示意图。如图6所示,当监测到应用独占访问操作时,先检测接力锁服务是否开启。如果接力锁服务没有开启,则拒绝本次访问,或者唤起接力锁服务。
[0161]
如果接力锁服务已经开启,可以从服务器获取文件当前的(或最新的、前一次保存后更新的)锁定状态和独占条件,以继续判断是否允许本次访问。如果锁定状态为已锁定,则拒绝本次访问。如果锁定状态为非锁定,则判断是否满足独占条件。
[0162]
如果不满足独占条件,则触发相关操作以使文件满足独占条件,并再次从服务器获取文件的锁定状态和独占条件,以与上述类似的方式继续判断是否允许本次访问。
[0163]
如果满足独占条件,则向服务器发送锁定请求,将文件的锁定状态修改为已锁定,以独占该文件并允许本次访问。
[0164]
当本次访问结束时,先与服务器或其他客户端同步文件,以将各个文件的副本同步更新至最终保存的版本,然后向服务器发送解锁请求。服务器解锁文件时,先更新独占条件,再将锁定状态修改为非锁定。
[0165]
在一些实施例中,文件访问控制方法可以包括以下步骤:
[0166]
步骤一:当有应用试图独占访问该同步文件夹下的某个文件副本时,该操作将首先被接力锁服务检测模块拦截,以检查接力锁服务进程是否启动:若未启动,则拒绝此次访问,退出流程;若已启动且运行正常,则继续执行步骤二。
[0167]
步骤二:该操作将被访问拦截模块拦截,并向接力锁逻辑模块询问是否允许该操作。
[0168]
步骤三:接力锁逻辑模块将向服务器请求该文件当前的状态(获取锁定状态和独占条件),并按以下情况执行:
[0169]
(1)若锁定状态为unlocked,且本地文件状态满足独占条件:先向服务器发出通知,以当前机器的身份锁定该文件(将服务器上该文件的锁定状态修改为locked);然后放行本次独占访问操作。
[0170]
(2)若锁定状态为unlocked,但本地文件状态不满足独占条件:先触发相关操作使条件满足(如:从服务器拉取文件的最新版本),在此期间保持对访问操作的阻止;然后返回执行步骤三。
[0171]
(3)若锁定状态为locked:忽略独占条件,直接阻止本次独占访问操作,退出流程。
[0172]
步骤四:当应用的独占访问完成后(如:检测到文件系统的close file事件),将:先等待解锁的先决条件完成,例如:等待相关文件或文件夹完全上传到服务器;然后向服务器更新文件状态,包括:
[0173]
(1)更新独占条件(由当前完成独占操作的用户所给出);
[0174]
(2)将锁定状态修改为unlocked。
[0175]
在一些实施例中,可以对异常情况进行以下处理:
[0176]
(1)网络异常:在服务器返回锁定状态前,访问拦截模块将对修改操作保持阻止,即无法访问文件。本技术的方案是在多文件副本的情况下模拟windows shared folder的使用场景,即远程访问同一个文件的场景。所以网络出现异常,无法访问文件是合理的。
[0177]
(2)客户端重启或异常崩溃、电脑关机等意外,导致已锁定的文件未能如期解锁:按“模拟远程访问同一个文件”的观点,这些现象都应该按照网络异常(“掉线”)处理,即“远程文件”会被立刻解锁,并且该用户的未保存内容也将立即丢失。但在本技术的方案中,仍将保持锁定状态,直到该用户工作状态恢复正常,从而尽可能避免用户的编辑丢失。当然,也可以允许管理员在服务端强制解锁,或是通过设置过期时间,到期自动解锁,这时候才会造成用户的编辑丢失。
[0178]
在本技术的实施例中,接力锁服务检测模块和访问拦截模块可以分别由接力锁服务检测驱动和访问拦截驱动实现,也可以由自己实现的文件系统代替,以满足对访问的拦截需求。接力锁逻辑模块则可以是一个独立运行的进程。
[0179]
在一些实施例中,独占条件为“文件版本号”,文件访问控制方法可以包括以下步骤:
[0180]
步骤一:当有应用试图独占访问该同步文件夹下的某个文件副本时,该操作将首先被接力锁服务检测驱动拦截,以检查接力锁逻辑进程是否启动:若未启动,则拒绝此次访问,退出流程;若已启动且运行正常,则继续执行步骤二。
[0181]
步骤二:该操作将被访问拦截驱动,并向接力锁逻辑进程询问是否允许该操作。
[0182]
步骤三:接力锁逻辑进程将向服务器请求该文件当前的锁定状态和文件版本号,并按以下情况执行:
[0183]
(1)若锁定状态为unlocked,且本地文件版本号等于服务器文件版本号:先向服务器发出通知,以当前机器的身份锁定该文件(将服务器上该文件的锁定状态修改为locked);然后驱动放行本次独占访问操作。
[0184]
(2)若锁定状态为unlocked,但本地文件版本号小于服务器文件版本号:先从服务器拉取文件/文件蔟的最新版本,更新本地文件和版本号,在此期间保持对访问操作的阻止;然后返回执行步骤三;
[0185]
(3)若锁定状态为unlocked,但本地文件版本号大于服务器文件版本号:说明本地文件出现了非正常解锁的情况,提示用户备份本地文件后,用服务器版本覆盖本地版本,返回执行步骤三。
[0186]
(4)若锁定状态为locked:直接阻止本次独占访问操作,退出流程。
[0187]
步骤四:当访问拦截驱动检测到该文件蔟中的某一文件的关闭事件,说明用户已编辑完成,将进行以下操作:先将本地文件/文件蔟上传至服务器,并等待该操作完成;然后向服务器更新文件状态,包括:
[0188]
(1)更新文件版本号,如:若编辑前版本号为n,则在编辑后将版本号修改为n 1;
[0189]
(2)将锁定状态修改为unlocked。
[0190]
在一些实施例中,独占条件为“文件hash”,并采用p2p同步文件,文件访问控制方法可以包括以下步骤:
[0191]
步骤一与步骤二与上述的实施例类似。
[0192]
步骤三:接力锁逻辑进程将向服务器请求该文件当前的锁定状态、文件hash和上一位编辑者(用户n-1)的ip地址,其中文件hash可根据不同情况有不同的选取:
[0193]
(1)当文件较小时(小于某个阈值,如小于4m):直接对整个文件进行hash计算;
[0194]
(2)当文件较大时(大于某个阈值,如大于4m):将文件进行分块计算hash,所以文
件hash将会是一个hash列表,此处操作与增量同步算法类似。
[0195]
(3)对于文件蔟中文件特别多的情况:可采用merkle tree,即hash树,这样服务器只需要保存一个顶部hash(top hash)或根hash(root hash)用作校验,不用维护特别多的信息。而hash树的信息则可以由p2p或其它任何地方接收,之后再与从受信任的服务器获取到的顶部hash进行校验即可。
[0196]
由于hash树(merkle tree)涵盖了hash列表和hash值(即hash列表等都是hash树的一个特列),故接下来的执行步骤以hash树的情况进行举例,其余情况类似。用户n在得到文件蔟的顶部hash与“用户n-1的ip地址”后:
[0197]
(i)若锁定状态为unlocked,则通过“用户n-1的ip地址”向用户n-1获取hash树,并将hash树与顶部hash进行校验,若校验不通过,说明hash来源不可信,则向用户发出警告,要求其从可靠来源获取,并退出流程;若校验通过,说明此hash树可信,则将此hash与本地文件蔟的hash树进行比对:若一致,则向服务器发出通知,将服务器上该文件的锁定状态修改为locked,并让驱动放行本次独占访问操作;若不一致,则通过“用户n-1的ip地址”向用户n-1获取相关文件的最新版本,以更新本地文件和hash树,在此期间应保持对访问操作的阻止,待更新完成返回执行步骤三;
[0198]
(ii)若锁定状态为locked:直接阻止本次独占访问操作,退出流程。
[0199]
步骤四:当访问拦截驱动检测到该文件蔟中的某一文件的关闭事件,说明用户已编辑完成,将进行以下操作:
[0200]
(1)重新计算本地文件的hash树并储存;
[0201]
(2)将最新hash树的顶部hash,以及本地ip地址提交到服务器;
[0202]
(3)将锁定状态修改为unlocked。
[0203]
hash是一个把任意长度的数据映射成一一对应的数据的函数,在理论上尽量满足“单射”,即一对一,而非一对多或多对一。通过特定的计算方式,可以将长度较大的数据或文件,映射成长度较小的数据。在进行数据或文件的比对时,如果数据或文件本身比较大,则比对的时间效率和空间效率都会比较低,如果涉及到数据的通信,则通信花费也会较大。而通过hash将较大的数据或文件映射成一一对应的较小的数据,再进行比对,能够有效地提升比对的时间效率和空间效率,通信花费也较小。
[0204]
在一些实施例中,对于数据完整性校验,可以在数据传输前对整个数据做hash运算得到固定长度的hash值,然后用户经由数据传输得到数据之后,对数据再次进行hash运算,将运算结果和之前的hash值进行比较,如果两个hash值相等,说明得到的数据没有损坏。可以这样做是因为输入数据的微小改变就会引起hash运算结果的面目全非,而且根据hash值反推原始输入数据的特征是困难的。
[0205]
如果数据量较小、数据传输通道较稳定,采用单一hash是可取的。但如果数据量较大,或者数据传输通道不太稳定,一旦数据损坏,就需要重新获取,这样效率较低。对于数量较大或者数据传输通道不太稳定的情况,为了校验数据的完整性和一致性,可以把大的文件分割成小的数据块(例如,分割成2k为单位的数据块)。这样的好处是,如果小块数据在传输过程中损坏了,那么只要重新获取损坏的这一快数据就行了,不用重新下载整个文件。
[0206]
这时需要为每个数据块做hash,从而得到一个hash列表(hash list)。为了验证这个hash列表本身的完整性和一致性,可以把每个小块数据的hash值拼到一起,然后对这个
长字符串再作一次hash运算,这样就得到hash列表的根hash(top hash或root hash)。获取数据的时候,首先从可信的数据源得到正确的根hash,用根hash来校验hash列表,然后通过校验后的hash列表来校验所获取的各个数据块。
[0207]
merkle tree(或称为默克尔树)可以视为hash list的泛化(hash list可以看作一种特殊的merkle tree,即树高为2的多叉merkle tree)。在最底层,和hash列表一样,可以把数据分成小的数据块,并与相应的哈希值相对应。随着树往上走(从下往上逐层计算),并不是直接去运算根哈希,而是把相邻的两个哈希值合并成一个字符串,然后运算这个字符串的哈希值,这样每两个哈希值就结合在一起,得到了一个“子哈希值”。如果最底层的哈希值总数是单数,那到最后必然出现一个“单身”哈希值,这种情况就直接对它进行哈希运算,所以也能得到它的子哈希值。继续按照树的层级往上推,使用同样的方式,可以得到数目更少的新一级哈希值,最终可以形成一棵倒挂的树。到了树根的位置,这一代就剩下一个根哈希值(或顶部哈希值)了,被称为root hash(或top hash)。
[0208]
在获取数据之前,可以先从可信的源获得文件的merkle tree树根(merkle root),即根哈希值,然后就可以从其他的可信或不可信的源获取merkle tree。通过可信的树根来检查接收到的merkle tree。如果merkle tree是损坏的或者虚假的,就再从其他的源获得另一个merkle tree,直到获得一个与可信树根匹配的merkle tree。
[0209]
merkle tree和hash list的主要区别是,可以直接获取并立即验证merkle tree的一个分支。因为可以将文件切分成小的数据块,这样如果有一块数据损坏,仅仅重新获取这个数据块就行了。如果文件非常大,那么merkle tree和hash list都很大或很多,但是merkle tree可以一次获取其中一个分支,然后立即验证这个分支,如果分支验证通过,就可以继续获取相应的数据了。而hash list只有获取到整个hash list才能进行验证。
[0210]
在本技术中,可以根据文件及网络的情况,选择不同的hash验证方式。在一些实施例中,服务器可以保存多种hash值,并视情况提供不同的验证方式,例如当某一种验证方式未能成功进行验证时,可以切换为另一种验证方式。类似的,除了hash值以外,独占条件中也可以包括文件的版本号、特征值、前一个用户的通信地址、前一次保存的文件的获取方式等多种信息,以根据不同的情况提供相应的验证或处理方式,从而增强系统的兼容性和鲁棒性。
[0211]
本技术提供的文件访问控制方法和系统,在文件的锁定状态的基础上,增加了对独占条件的验证,在访问文件的操作被允许前,先检查文件是否满足独占条件,若不满足则阻止此次操作,从而确保此时的文件是安全可靠、没有文件冲突风险的“可继续编辑”的文件版本,有效地避免了现有文件锁机制无法可靠地防止产生文件冲突的问题。
[0212]
本技术还提供一种文件访问控制方法,包括以下内容:
[0213]
当监测到对目标文件的访问操作时,查询目标文件是否包含于某一个文件蔟。目标文件的形式可以是文件或文件夹。
[0214]
如果目标文件包含于某一个文件蔟,则进一步根据文件蔟的状态,确定是否允许对目标文件的访问操作。
[0215]
如果允许对目标文件的访问操作,相应地处理该文件蔟和/或文件蔟中包含的其他文件。文件蔟中包含的其他文件的形式可以是文件或文件夹。
[0216]
文件蔟包括文件列表,文件列表包括与文件蔟中每一个文件相对应的文件标识,
可以通过检索文件列表来查询目标文件是否包含于某一个文件蔟。如果目标文件的文件标识包含于文件列表,或者目标文件从属于文件列表中的某一个文件夹,则目标文件包含于该文件蔟。
[0217]
文件蔟的状态可以包括以下一种或多种状态:已锁定;未锁定;可读;可写;可删除;独占;可操作其子项。文件蔟中包含的每一个文件也可以具有上述的一种或多种状态。在一些实施例中,文件蔟以及文件蔟中包含的所有文件的状态相同。在另一些实施例中,文件蔟以及文件蔟中包含的每一个文件的状态可以不同,但文件蔟的状态为文件蔟中所有文件的最小权限状态。
[0218]
访问操作可以包括以下一种或多种操作:读取;写入;删除;添加文件;添加子文件夹。如果文件蔟的状态为已锁定,则不允许对目标文件的访问操作。如果文件蔟的状态为未锁定,且访问操作为删除,则允许对目标文件的访问操作,并从文件蔟中移除目标文件。
[0219]
图7为本技术中文件访问控制系统的一个实施例的架构示意图。如图7所示,文件访问控制系统,包括文件蔟模块,文件蔟模块可保存多个文件蔟。每个文件蔟包括一个文件列表,文件列表中包括与该文件蔟中每一个文件相对应的文件标识。文件蔟中每一个文件的形式可以是文件或文件夹。文件蔟中的文件和文件夹本身保存在文件系统中。
[0220]
文件访问控制系统还可以包括访问监控模块,用于监测并控制对目标文件的访问操作。当监测到对目标文件的访问操作时,查询目标文件是否包含于文件蔟,其中,目标文件的形式包括文件或文件夹;以及如果目标文件包含于文件蔟,根据文件蔟的状态,确定是否允许对目标文件的访问操作。
[0221]
文件访问控制系统还可以包括,用于当允许对目标文件的访问操作时,相应地处理该文件蔟和/或该文件蔟中包含的其他文件。该文件蔟中其他文件的形式可以是文件或文件夹。
[0222]
访问监控模块能够通过检索文件列表来查询目标文件是否包含于某一个文件蔟。如果目标文件的文件标识包含于文件列表,或者目标文件从属于文件列表中的文件夹,则目标文件包含于文件蔟。
[0223]
在一些实施例中,当文件蔟的状态为已锁定时,访问监控模块不允许对目标文件的访问操作。当文件蔟的状态为未锁定且访问操作为删除时,访问监控模块允许对目标文件的访问操作,关联操作模块从文件蔟中移除目标文件。
[0224]
在一些实施例中,文件蔟机制的实现原理,是在文件的操作者与真实的文件系统之间插入一个中间层,使文件的操作者通过“文件蔟模块”去了解真实文件系统的文件状态,以决定是否允许本次操作,并在实际操作时,同步更新文件蔟的数据记录。
[0225]
一个文件蔟可以记录以下两方面信息:
[0226]
(1)文件蔟状态:用于对操作的合法性及副作用提供参考。在一些实施例中状态仅为locked和unlocked。在其他一些实施例中,状态可以包括但不限于:可读、可写、可删除、独占、可操作其子项等等。状态的表现形式可以是一个状态标记,施加于文件蔟所包含的所有文件或文件夹,其对应的含义可以由实际实现时决定。在一些实施例中,文件蔟的状态是其所包含的文件或文件夹的最小权限状态(状态的交集)。
[0227]
(2)包含文件标识的列表(例如代表文件标识的文件或文件夹id列表):文件id在文件系统内具有唯一性,并可通过id找到对应的文件。在一些实施例中,文件id可以为文件
的路径。在一些实施例中,同一个id不得被包含于多个文件蔟中,且不得为其它文件蔟中id的子项,即在同一个系统内,文件蔟的id列表之间不得有交集,这样可以避免产生操作冲突。
[0228]
在一些实施例中,初始时,可以创建一个空的文件蔟,并初始化其状态。然后,往其id列表中添加文件或文件夹id。当用户对一个文件或文件夹进行读取、写入、删除、添加文件或子文件夹等操作时,文件蔟模块会将该文件或文件夹的id放入文件蔟列表中进行检索,匹配的条件可以有两种:
[0229]
(1)完全匹配:即被操作的文件或文件夹是文件蔟id列表中的某一项。
[0230]
(2)包含:即被操作的文件或文件夹是文件蔟id列表中某文件夹的子项。
[0231]
若没有匹配的文件蔟,说明目标文件不属于任何一个文件蔟,则将该文件或文件夹按普通方式处理。若有匹配的文件蔟,则检查其文件蔟状态,以决定是否执行该操作及该操作所对应的副作用。
[0232]
例如:当用户读取或写入“文件夹a/文件a.docx”文件,通过文件蔟模块得知,其属于“文件蔟0001”,且该文件蔟处于locked状态,故阻止此次访问。
[0233]
例如:当用户删除“文件夹c/文件夹a”时,通过文件蔟模块得知,其属于“文件蔟0002”,且该文件蔟处于unlocked状态,故允许执行该操作,并在文件蔟id列表中移除“文件夹c/文件夹a”路径(即对应的副作用)。
[0234]
文件蔟机制能够增强接力锁的“多端强一致性”,以下以autodesk revit的central model(中央模型)做为示例来说明文件蔟机制的工作方式(autodesk revit是欧特克公司的一套系列软件,用于建筑信息模型bim领域,可帮助建筑设计师设计、建造和维护质量更好、能效更高的建筑,是我国建筑业bim体系中使用最广泛的软件之一)。
[0235]
autodesk revit的central model中,包含一个“文件名.rvt”文件和“文件名_backup”文件夹。当用户对“文件名.rvt”进行编辑并同步保存时,会在“文件名_backup”文件夹下新增一些*.dat文件,而原有的*.dat文件则保持不变。若此时将这些*.dat独立地同步到其它端,将会出现冲突。因此,可以通过文件蔟机制,将“文件名.rvt”文件和“文件名_backup”的文件夹关联在一起,通过对“文件名.rvt”文件的锁定状态的检测,来决定“文件名_backup”的文件夹内部的文件是否执行同步操作。
[0236]
该实施例的实际上可以看作:“文件名.rvt”和“文件名_backup”本就属于同一个“文件”。与之相对应的一个例子是微软办公软件的“*.docx”文件,该类型的文件其实是一个“*.zip”压缩包,解压后可以发现内含大量零散的数据文件,只不过被打包在一起,外观上形成了一个单独的“文件”,并可以作为单独的一个文件来处理。而autodesk revit的central model中则没有打包这一过程,但同样需要对多个文件进行相对应的操作。在类似的情况下,用户无法改变这一“散装”的文件结构,因此可以通过文件蔟机制来帮助它们形成强关联。
[0237]
在一些实施例中,本技术还提供一种计算机装置、设备或终端,其一个实施例的内部结构可以如图8所示。该计算机装置、设备或终端包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,处理器用于提供计算和控制能力,存储器包括非易失性存储介质、内存储器。非易失性存储介质存储有操作系统和计算机程序。内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。网络接口用于与外部的终端
通过网络连接通信。计算机程序被处理器执行时以实现本技术公开的各种方法、流程、步骤,或者处理器执行计算机程序时实现本技术公开的实施例中各个模块或单元的功能。显示屏可以是液晶显示屏或者电子墨水显示屏,输入装置可以是显示屏上覆盖的触摸层,也可以是外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0238]
示例性的,计算机程序可以被分割成一个或多个模块或单元,这些模块或单元被存储在存储器中,并可由处理器执行,以实现本技术的技术方案。这些模块或单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在装置、设备或终端中的执行过程。
[0239]
上述的装置、设备或终端可以是桌上型计算机、笔记本、移动电子设备、掌上电脑及云端服务器等计算设备。本领域技术人员应当理解,图中所示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的装置、设备或终端的限定,具体的装置、设备或终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0240]
处理器可以是中央处理单元(central processing unit,cpu),也可以是其他通用或专用的处理器、微处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器是上述的装置、设备或终端的控制中心,利用各种接口和线路连接装置、设备或终端的各个部分。
[0241]
存储器可用于存储计算机程序、模块和数据,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现装置、设备或终端的各种功能。存储器可主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;数据存储区可存储根据应用所创建的各类数据(比如多媒体数据、文档、操作历史记录等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)、磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0242]
本技术还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法的步骤。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0243]
上述的装置或终端设备集成的模块和单元,如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读存储介质中。基于这样的理解,本技术实现所公开的各种方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
[0244]
在一些实施例中,本技术公开的各种方法、流程、模块、装置、设备或系统可以在一个或多个处理装置(例如,数字处理器、模拟处理器、被设计成用于处理信息的数字电路、被设计成用于处理信息的模拟电路、状态机、计算设备、计算机和/或用于以电子方式处理信息的其他机构)中被实现或执行。该一个或多个处理装置可以包括响应于以电子方式存储在电子存储介质上的指令来执行方法的一些或所有操作的一个或多个装置。该一个或多个处理装置可以包括通过硬件、固件和/或软件被配置而专门设计成用于执行方法的一项或多项操作的一个或多个装置。以上所述,仅为本技术较佳的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,根据本技术的技术方案及其发明构思加以等同替换或改变,都应涵盖在本技术的保护范围之内。
[0245]
本技术的实施方式可以在硬件、固件、软件或其各种组合中进行,还可以作为存储在机器可读介质上的且可以使用一个或多个处理装置读取和执行的指令来实现。在一些实施方式中,机器可读介质可以包括用于存储和/或传输呈机器(例如,计算装置)可读形式的信息的各种机构。例如,机器可读存储介质可以包括只读存储器、随机存取存储器、磁盘存储介质、光存储介质、快闪存储器装置以及用于存储信息的其他介质,并且机器可读传输介质可以包括多种形式的传播信号(包括载波、红外信号、数字信号)以及用于传输信息的其他介质。虽然在执行某些动作的特定示例性方面和实施方式的角度可以在以上公开内容中描述固件、软件、例程或指令,但将明显的是,这类描述仅出于方便目的并且这类动作实际上由机器设备、计算装置、处理装置、处理器、控制器、或执行固件、软件、例程或指令的其他装置或机器产生。
[0246]
在本技术的权利要求书和说明书中,用来执行指定功能的模块或者使用功能性特征描述的模块,意在涵盖能够执行该功能的任何方式,例如:执行该功能的电路元件的组合,用来执行或实现该功能的软件,或者任何形式的软件、固件、代码及其与适当电路的组合。由各种模块提供的功能被以权利要求书所主张的方式组合在一起,由此应当认为,是可以提供这些功能的任何模块、部件、元件都等价或等效于权利要求书中限定的模块。
[0247]
本说明书使用示例来公开本技术,其中的一个或多个示例被描述或者图示于说明书及其附图之中。每个示例都是为了解释本技术而提供,而不是为了限制本技术。事实上,对于本领域技术人员而言显而易见的是,不脱离本技术的范围或精神的情况下可以对本技术进行各种修改和变型。例如,作为一个实施例的一部分的图示的或描述的特征可以与另一个实施例一起使用,以得到更进一步的实施例。因此,其意图是本技术涵盖在所附权利要
求书及其等同物的范围内进行的修改和变型。以上所述,仅为本技术的具体实施例,但本技术的保护范围并不局限于此,任何熟悉本领域技术的技术人员根据本技术的构思,在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,或者可容易想到的变化或替换,都应涵盖于本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献