没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记109(2004)111-124www.elsevier.com/locate/entcs基于图转换系统1的COMMUNITY操作语义安德烈·科拉迪尼·丹·赫希Dipartim medInformatica,Uiversita`diPisa,ViaF.Buonarroti 2,I-56127,Pisa,Italia2摘要我们提出了一个操作语义,基于图变换,通用性,一个简单的程序设计语言。单个共同体设计的每个动作都由同步的超边缘替换规则来建模。多个互连设计的同步动作,由于规则同步机制,配置结果自动来自各个规则。保留字:图转换系统,操作语义,软件架构。1介绍软件设计的体系结构方法将系统体系结构视为通过连接器粘合在一起的组件(实际计算发生的地方),连接器规定了组件如何交互。COMMUNITY[4]是一种简单的并行程序设计语言,开发用于支持分析以及体系结构语义原语的形式化。被称为设计的基本通用性组件指定在适当通道上的某些动作的效果。有些通道可能是由操作(本地通道)控制的,其他通道可能只被读取(输入通道),因为它们的值是由环境提供的1 研究部分由欧盟FET-2 电子邮件:andrea@di.unipi.it,dhirsch@di.unipi.it1571-0661 © 2004 Elsevier B. V.根据CC BY-NC-ND许可证开放访问。doi:10.1016/j.entcs.2004.02.060112A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111∪∈如果动作的效果是完全指定的,正如我们将在论文中假设的设计是锚定的),当动作的保护保持为真时,动作的触发是可能的,并且其结果是局部通道上的多个分配。然而,这只能发生在为输入通道提供值的环境在配置中,设计通过电缆互连,这决定了设计动作同步和通道共享。施加了一些约束:例如,不能共享两个本地信道,因为它们可能包含不一致的值。这种约束保证了配置的极限设计的存在,对于单个设计的每个可能动作同步具有一个动作配置的操作行为被简单地描述为colimit设计的合法动作序列我们建议在这里使用图形转换系统,以提供一个直观的,归纳的和完整的帐户的操作行为的共同体配置。配置被表示为超图,包括每个设计的一个(超)边和用于编码锚定和设计之间的互连的辅助边单一互补性设计的每一个动作都由一个条件的、属性化的、同步的超边替换规则来建模。同步机制保证,为了触发,一些这样的规则必须同步,从而导致一个步骤忠实地对应于colimit设计的同步动作的触发所提出的语义没有充分利用配置的图形表示,因为本文中的规则只改变节点属性。然而,当对一般的配置进行建模时,将使用图变换的完全表达能力,这是正在进行的研究的目标:这将是可能的,因为配置状态的图形编码明确地将设计之间的态射表示为合适的互连。2COMM UNITY设计和配置我们在这里简要介绍共同体的设计和配置。定义不那么普遍,相对于那些简单化,例如,[4,9],读者可以找到原始配方和更详细的解释。一个通用设计的语法如图1所示。 设计D有一组通道V,分为输入(in(V))、输出(out(V))和专用通道(prv(V))。D的局部通道定义为loc(V)=out(V)prv(V)。设计D还具有一组动作r,其被划分为共享动作(sh(r))和私有动作(prv(r))。 对于每个动作ar,G(a)是它的保护(通道上的布尔条件,当它为真时省略),D(a)是它的域,即,它可以改变本地频道的集合,并且对于每个本地频道L,A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111113D→设计Din(V)输出(V)prvprv(V)do[]a:G(a)→ nl:=E(a,l)a∈sh(Γ)l∈D(a)[][] prva:G(a)→ nl:=E(a,l)a∈prv(Γ)l∈D(a)Fig. 1. 一个共同体的设计。D(a),l:= E(a,l)是赋值,其中E(a,l)是通道上的表达式(跳过表示不存在赋值)。锚定设计是一种配备了评估的设计,将每个本地通道与固定数据代数的一个元素相关联,其中代数是标准的代数签名。图2的左半部分显示了两个示例设计(乘客和飞机):它们是借用的(几乎没有修改)。tions),其中乘客的登记和登机以及在机场的飞机的起飞是使用COMMUNITY建模的。组件类型设计乘客是协调合同类型Coord-合同离港(乘客,飞机)是公司简介2],seat:SeatId,passfl:Flight设计电缆是在i设计电缆是在i在plfl:飞行执行签入:[passfl=plfl ^s=0[]boards:[s=1 s:=2]s:=1]doa:[true skip]doa:[true skip]设计平面为prvs:[0..2],ID:PlIda我乘客设计部门是prvs:[0..二、起飞我PLFL平面outplfl:Flight在fldoload_lug:[s=0[]起飞:[s=1s:=1]s:=2]执行ac1:[s=0 s:=1][]ac2:[s=1 s:=2]图二. 两个共同体设计(左)和一个配置(右)。设计之间的相互作用建立通过动作同步和内存共享,这是通过引入退化的设计称为电缆,和明确的态射从电缆设计。由于电缆本身不添加任何计算,因此它们只有输入通道和共享操作,而没有分配。 A(叠加)态射σ:C D从电缆C到设计D,将C的每个(输入)通道v映射到非私有(i.e.、D的(输入或输出)通道σV(v),以及C的每个(共享)动作atoa non-emptysetoofnon-pri vat e(即,,共享的)a ∈sσr(a)={aJ1, . 。,aJn}3通常,V中的通道是类型化的,并且对它们的操作施加了标准的类型化规则在这种情况下,sort是一个多排序的签名,具有相关的类型作为排序。为简明起见,所有这些细节在此不再详述。AC1FLAC2FL板PLFL114A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111氏盐[4]直观地说,这种态射标识了通道v和σV(v)(它们变成共享的:与其中一个相关联的任何值在另一个上都是可用的),并将动作a与σΓ(a)中的任何动作相关联(a可以触发,当且仅当σΓ(a)中的一个动作同时触发)。配置是由设计、电缆和从电缆到设计的态射组成的有限图此约束可保证,如果配置设计已锚定,则每个通道仅与一个值关联。图2的右边部分显示了一个示例配置,其中连接了乘客和飞机通过第三个设计部门和两条电缆。态射导致输入改变-乘客的通道PLFL与飞机的输出通道PLFL共享。此外,乘客的动作板(与dep的ac1同步)在动作起飞(与ac2同步)之前被强制击发设计111飞机是prvspl,sdep,spass:[0.. 2],id:PlId座位:SeatId,passfl:航班outplfl:Flight做签入:[passfl=plfl ^spass=0 spass:=1][]load_lug:[spl=0 spl:=1][]checkinLoad_lug:[passfl=plfl ^ spass=0 ^spl=0[]boardsAc1Load_lug:[spass=1 ^ sdep=0 ^spl=0spass:=1|| spl:=1] spass:=2|| sdep:=1||s p l :=1][]checkinAc2起飞:[passfl=plfl ^ spass=0 ^ sdep=1^spl=1spass:=1|| sdep:=2||s p l :=2][]boardsAc1:[spass=1^sdep=0spass:=2||s d e p :=1][]ac2起飞:[sdep=1^spl=1sdep:=2||s p l :=2]图三. 图2的配置的极限每个(锚定)配置都有一个共限(在(锚定)设计和叠加态射的范畴中),这是一个设计,它的通道是配置的通道的不相交并集(模共享通道),动作是动作的卡丁车积(模同步的)。一个配置的操作行为是根据它的colimit来描述的:在每一步,一个其保护值为true的colimit的动作被非确定性地选择,并且相应的多重赋值被执行。例如,在图2的配置的共同限制中(如图3所示),乘客的动作检入和飞机的负载吊耳是独立(它们可以单独或同时发射),而boardsAc1模型乘客和副驾驶员动作板ac 1的同步执行;动作板Ac 1负载吊耳和检查板Ac 2起飞将永远不会从图6的锚定配置中触发,因为它们的防护总是假的。4σr也可以定义为从D的作用到C的作用的满射部分函数。A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)1111153图变换系统我们在这里介绍的概念图转换,我们将使用模型的共同体配置的演变。我们使用的形式主义可以定义为属性,条件,同步超边缘替换与值传递霍尔同步。事实上,我们从文献中借用了其他地方提出的各种成分,以原创的方式组合它们,以满足我们的特定需求。我们开始引入(并行)hypergraph重写根据双推出方法[2,3]。接下来,我们首先用属性[7]丰富形式主义,然后用同步[6]并附申请条件。3.1超图重写超图是由节点和带标签的边组成的。每个边可以连接到由连接函数指定的多个节点每个边和节点之间的每个连接由“名称”(而不是文献中通常的数字)标记一条边的连接数和这些连接的名称由边标签唯一确定:此信息由固定的边签名提供,其中CN是连接名称的集合,Λ是边标签的集合,并且rnk:Λ→ Pfin(CN)是将连接名称的有限集合与每个边标签相关联的函数一个超图H是一个元组H,EH,labH,cH,其中VH是一个节点集,EH是一个(超)边集,labH:EH→Λ是标号函数,cH:EH→[CN→CN]是一个连接函数,与ch边的关联是一个从连接名到节点的部分函数.对于每个e∈EH,要求dom(cH(e))=rnk(labH(e)).如果cH(e)(x)=v,我们称v为e的x节点.超图态射以期望的方式定义L r规则是内射图态射q=(L<$$> K <$→R)的跨度,其中L,K,R是有限图,L没有孤立节点,左侧态射l在节点上是满射的(即,没有节点被规则删除),并且图K是离散的(它不包含边)。在一个图G中,这样一个规则的一个匹配是一个态射g:L→G,它在边上是单射的.5在这种情况下,如果下图中的两个正方形都是推出的,我们写GqHL,RL rKz,zR,G,z,G,rrD zH,5这确保了DPO方法的胶合条件得到满足。116A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111⊕⊆⊆| ←→|由 规 则 名 P 和 函 数 π 组 成 的 一 个 图 变 换 系 统 R=<$P , π<$R ( p ) =(Lp<$$>Kp<$→Rp). 我们记G<$RH,如果G<$pH,对某个p∈P。 GTSR= P,π,设R=P,π为GTS,其中P为(的载波)由P(不包括单位)生成的自由交换幺半群,π是π的自由扩张,将p<$pJ映射到规则π<$(p)和π<$(pJ)的不交并6然后我们说在Ri <$G<$R<$H中存在从G到H的平行重写。3.2属性超图重写设k是一个标准的代数一排序签名,它在本节的其余部分是固定的。图7一个可归属的超图(或可归属的超图,可归属的可归属的超图)是一个三元组G=|G|,AG,att G,其中|G|是一个图(G的基本图),AG是一个图,并且在tG:V|G|→◦|的G|是一种归属,即, 一个函数映射的节点|G|代数A G的载体元素。G→GJ是一个双图态射|F|,f A,其中|F|:|G| → |GJ|f A:AG→ AGj是一个全<$-同态,f Aatt G= att Gj |F |V.这个属性图的定义是非常一般的,因为每个图都有自己的图-代数。我们在这里坚持这样的情况,即出现在规则中的属性图与T(X)相关联,T(X)是由可数变量集X生成的在X上的自由代数,而重写的图都具有作为代数的固定数据代数D。属性化规则L r是一个内射图,图同构sr=(L<$$> K<$→R),使得:• 图的基本跨度态 射 (|L|› |K | ‹|R|r|R|)是一个规则;• 与L,K,R相关联的n-代数是T_n(X),l_A,r_A是恒等式;• 图L是线性的,即,所有的属性节点都用基项或变量来标记,并且没有变量标记多于一个节点;• Var(R) Var(L),其中Var(H)X是H的属性中出现的变量的集合。在D∈ R上的一个n,n-图G中,一个属性规则r=(LK→R)的匹配是一个n,n-图态射g:L→G,它在边上是单射的.这样一个映射确定了一个求值θg:V ar(L)→ D,定义为θg(x)=attG(gV(n))iattL(n)=x(由于L的线性,这是很好定义的)。通过T(X)的自由性,θg唯一地扩张到同态θg:T(X)→D:通过将其应用于属性规则中出现的所有属性,我们得到[6]这个定义只适用于同构。[7]所有的概念都很容易推广到多排序的情况,在例子中也确实用到A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111117||⇒||E⟨⟩⊕→E∪ ⊆∪对应的跨距rθg=(LθgKθg→Rθg),其中图是Dθ g上的.在这种情况下,我们写GrH,如果H = |H|,D,att H,there isa重写步骤G|rθg| H,且attH由提升本文将双推出图推广到图的范畴,并假设所有的图同态分支都是D上的恒等式。并行重写的定义与非属性化的情况相同,前提是形成并行属性化规则的组件规则被分开重命名,以避免变量名冲突。3.3条件同步超图重写我们现在介绍一种用于属性规则的强大同步机制,在[6]的术语中称为具有值传递的。直观地说,规则可能在左侧的一些节点上标注了事件,这些事件是在一组事件名称上构建的原子谓词,而术语则是在XML上构建的。这些事件可能会阻止规则在给定比赛中的应用,除非同步应用一个或多个其他规则,这些规则在相同节点上注释有相应的匹配事件。为了忠实地模拟共同体设计的行为,我们还将为规则配备布尔条件,这些布尔条件将对守卫进行编码设Ev=n∈NEvn是一个固定的事件名称的排序集合,而(X)是X上的良构事件的集合,包含以下形式的所有项:e(t1,.,tn),其中e∈Ev n且ti∈T∈(X),对于所有i∈ {1,.,n}。 一个(连续)同步(属性化)规则是一个三重规则r,synch,cond,即一个属性化规则r=(L<$$> K <$→R),配备了一个部分函数synch:V|L|并在逻辑上给出了一个公式cond, 用来对 COMM U NITYguards进行编码。以V(同步)表示同步事件中出现的变量(V|L|),则以下条件必须成立:V ar(R)V ar(cond)V ar(L)V ar(synch)。这个条件将保证-确保cond和规则右侧的所有变量都将被规则左侧的任何合法匹配实例化。一个同步(属性条件图,超)图变换系统(SGTS)S= πP,πP由一组规则名P和一个函数π构成,该函数π将每个p∈P映射到一个同步规则π(p)= πrp,synch p,cond p. 然后,平行SGTSS_∞ =πP_∞,πP_ ∞具有由P(不包括单位)生成的自由交换幺半群P_∞作为规则名.此外,如果p = p1,... <$p k∈ P <$,其中p i∈P且π(pi)=<$r i,synch i,cond i <$,对所有i = 1,.,k,则par-为了避免规则间的名称冲突,首先对变量进行适当的重命名,然后将所有ri的不交并作为r,将所有synch i的显偏函数作为synch,将所有cond i的合取作为cond,从而得到了n-同步规则π(p)=r,synch,cond118A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111plflr i1I i2vr plflwvwVloc平面plflr i1I乘客SWdef∈∈→ D∀ ∈⊆设s= kr =(L<$$> K <$→R),synch,condr是一个(典型的平行)同步规则,g:L→G是一个与k,n-图G匹配的图.进一步,设θg:Var(L)→D为g诱导的赋值,synch(g)=g(dom(synch))|G|是G的同步节点,即,的那些用事件标注的L的节点的图像。 则规则s可以应用于g,如果• G的每一条与synch(g)中的节点相连的边都在g的像中;•n synch(g),g-1(n)dom(synch),即,由g映射到同步节点的每个节点用事件注释;• 存在一个基替换θ:Var(synchθg),使得对于每个节点n synch(g)和所有节点m,mJg−1(n),synch(m)θg θ=synch(mJ)θg θ;此外,θ必须是最小的,在这个意义上,它必须是所涉及的划分事件集的最一般的unier• 公式condθ g θ的计算结果为真。在这些条件下,如果GrJH使用匹配g,则记G s H,其中rJ是属性规则rJ=(L<$$> K <$→Rθ)。4作为属性超图的COMM UNITY我们现在描述如何将共同体配置表示为超图。下一节中介绍的同步规则,当应用于这样的图时,将模拟配置的colimit的操作行为。表示配置的图包括每个设计的一个边,以及用于编码锚定和态射的辅助边图4示出了编码两个锚定设计的图,而图5示出了简单的完全态射的图形表示。VRvval0VRvvalSrSWIDR吊耳取下装置vvalATR 500LH1832010AVRvvalVRvvalVRvvalSr西特尔西亚特passflr签入板I2LH1832见图4。 两个锚定设计的图表。如从图中可以理解的,边缘签名包括作为边缘标签的所有设计名称,以及用于辅助设计的标签Vloc、I、Vin和Cn。passflwVWVlocVWVlocVWVlocVWIDWVWVlocVlocA. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111119a1a2DSA A0V1rCND'一I1我i2vsVT森V2rI1我I2VIN→ ǁ莎莎沙山Dv1 v2D'图五. 一个完全态射(左)和它的图形编码(右)。边缘.对于每个设计名称,连接名称包括每个输入通道x的xr(该名称将标记本地盒子,即,标记为Vloc的边用于处理进入当地渠道。由vval标记的tenant指向属性化的节点存储通道值,而标记有VR和VW的节点提供用于读取和改变值的访问。由I标记的接口盒用于提供对非私有(即,输入或输出)通道。如图5所示,态射σ:D→DJ使用输入框(标记为Vin)和OR框(标记为Cn)表示。输入框连接由态射标识的通道的接口框,而OR框将由动作sa标记的源设计的触角连接到由σΓ(sa)中的动作标记的非空触角集合。图6显示了完整的锚定配置及其图形表示。5通过同步规则配置的行为由一组同步的超边替换规则指定,即,规则,其中左侧包含单个超边。每个设计动作都由一个规则来建模,并且为辅助边提供了额外的规则。几乎所有的规则(除了改变值的Vloc边的规则)具有与左侧和右侧相同的图,因此所有的计算都通过同步机制来执行。使用了三个事件名称:go用于同步操作,get和设置为读取和更改通道值。图7和图8显示了运行示例的设计的所有操作的规则。一般来说,规则编码动作a:G(a)l∈D(a)l:=E(a,l)将具有G(a)作为条件,如果动作不是私有的,则事件go注释a-节点,如果通道x的值用于保护或分配中,则事件get(x)注释xr -节点,以及事件集(E(a,l))。120A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111图六、锚定配置(左)及其图形表示(右)。对于每个通道l∈D(a),标注lw-节点。图9显示了辅助边的规则。OR框的规则强制同时执行连接到a0节点的动作和连接到其他节点的动作之一。本地盒的规则允许读取和/或修改(使用事件get和set)通道值,由属性vval-node表示。输入框和接口框的规则转发通道值,使其在共享输入通道上可用。图10显示了将并行同步规则应用于图6的配置。左侧部分示出了开始图,其中同步节点(绘制为灰色六边形)用结果事件注释(参与重写的边标记为双框)。 所施加的SRSWIDRIDWvrvwvrVWvvalvval电缆电缆a我板PLFL ac1flAC2FLa我起飞飞机平面的idPLFL乘客DEPS0ATR500010A座0passfl LH1832LH1832电缆电缆IR a在irVlocI1我I1我PLFLWI2i1 plflr我起飞vsi2i2vsPLFLRI1i2 vt.vsVTVTvsVT我VINVINVINVINI2我I1板A0A1A0A1A1A0A0A1C1C1C1C1平面乘客负载凸耳签入AC1AC2DEPVloc Vloc Vloc弗洛克Vloc0LH1832ATR 500 010A0A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111121AC1depac2 flr产品负载凸耳s=0get(s)设置(1)SRSWIDRIDW负载凸耳起飞plflrplflwSRSWIDRIDW吊耳取下装置plflrplflw产品_起飞s=1get(s)(2)SRSWIDRIDW负载吊耳起飞plflrplflwSRSWIDRIDW吊耳取下装置plflrplflw产品签入(_P)get(s)设置(1)get(passfl)passfl=plfl ^s=0去获取(plfl)产品板get(s)(2)s=1SRswseatrseatw登机牌去SRswseatrseatw签到板passflrpassflwPLFLRpassflrpassflwPLFLR图7.第一次会议。乘客和飞机的行动规则。_ac1s=0get(s)srset(1)sw_ac2s=1get(s)sr设置(2)开关ac1goAC2flr去SrSWSrSWAC1AC2flr产品_a真去见图8。 设计部和电缆规程。规则是用于动作板和AC 1的规则,以及用于辅助边缘的四个规则即使我们没有详细阐述一个形式证明,仔细检查我们提出的结构使我们确信下面的结果成立。权利要求5.1(编码的正确性和完整性)对于一个已同步的通用配置C,设G(C)是其如第4节中的图形表示,设R是同步的GTS,包括C中设计的所有规则和辅助边的所有规则。 然后G(C)使用包含对动作{a1,. ,k},其中k> 0,DEPAC1depac2 flr一电缆IR一电缆IRDEP乘客乘客平面平面平面平面Sr乘客签入SW板西特尔PLFLR西亚特passflrpassflwSr乘客签入SW板西特尔PLFLR西亚特passflrpassflw122A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111CNA1A2一CN一个A1A2CN一个A1A2一CN一个A1A2一CNCNVRVlocVWvvalVlocX⟨⟩A1去A1变量的值被设置为新值wVRWVRA0A2A0A2vval去VWX设置(w)vvalXVW读取变量的值xA0A0去去vvalvrget(x)VWvvalXXVRVW读取值x,并将其并行设置为新值wA0A0去去vrget(x)VW设置(w)WvvalXget(x)vsVTget(x)i1i2get(x)i1i2i1 i2我get(x)VT我get(x)i1 i2我VINVlocVlocVINVlocVloc见图9。 辅助箱的规则。当且仅当在C的共限设计中,同步动作a1,.,k被激活。此外,如果D是同步动作触发后产生的锚定设计,则D是锚定配置CJ的上极限,使得G(CJ)同构于H。6结论和今后的工作我们提出了一个非常直接和直观的图形表示,来吧MUNITY配置及其使用同步超边重写的操作语义。所提出的编码的一个优点是叠加态射使用辅助边显式表示。一些初步研究表明,这使得将一般重构建模为属性图变换规则成为可能,可能具有负应用条件[5]。我们打算进一步发展这一点,并研究与[9]的关系,其中重构被指定为配置图上的条件双推出规则。确认我 们 感 谢 Jos'eFiadeiro 、 AntoniaLopes 和 MichelWermelinge r 提 供 有 关COMMUNITY的反馈。引用[1] AGILE项目IST-2001-32747。机场案例研究2003年第4.1期A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111123图10个。Colimit动作板Ac1的重写步骤[2] A. 你好,你好。 我不知道,弗。 罗斯我,H。 埃里格河 Heck el和M. Léowe. 图变换的基本概念和双推出方法在[8],第3章。世界科学,1997年。[3] F. Drewes,H. J. Kreowski和A.哈贝尔超边替换图文法。在[8],第2章。世界科学,1997年。[4] J. Fiadeiro和T.麦鲍姆。并行程序设计的范畴语义学。计算机程序设计科学,28:111[5] A.哈贝尔河Heckel和G.坦策具有否定应用条件的图文法。Fundamenta Informaticae,26(3[6] D.赫希软件架构风格的图形转换模型。PhD Thesis,Dept. 计算机科学,布宜诺斯艾利斯大学,2003年5[7] M. L?we,M. Kororabo,andA. Wagner.一种用于属性图的聚类的分组框架。RonanSleep,Rinus Plasmeijer和Marko van Eekelen,编辑,术语图重写:理论与实践,第185-199页。约翰·威利,纽约,1993。124A. Corradini,D.Hirsch/Electronic Notes in Theoretical Computer Science 109(2004)111[8] G. 罗森伯格, editor.图文法和计算的图形转换手册:基础,第1卷。世界科学,1997年。[9] M. Wermelinger和J. Fiadeiro。软件体系结构重构的图变换方法。计算机程序设计科学,44:133
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 利用迪杰斯特拉算法的全国交通咨询系统设计与实现
- 全国交通咨询系统C++实现源码解析
- DFT与FFT应用:信号频谱分析实验
- MATLAB图论算法实现:最小费用最大流
- MATLAB常用命令完全指南
- 共创智慧灯杆数据运营公司——抢占5G市场
- 中山农情统计分析系统项目实施与管理策略
- XX省中小学智慧校园建设实施方案
- 中山农情统计分析系统项目实施方案
- MATLAB函数详解:从Text到Size的实用指南
- 考虑速度与加速度限制的工业机器人轨迹规划与实时补偿算法
- Matlab进行统计回归分析:从单因素到双因素方差分析
- 智慧灯杆数据运营公司策划书:抢占5G市场,打造智慧城市新载体
- Photoshop基础与色彩知识:信息时代的PS认证考试全攻略
- Photoshop技能测试:核心概念与操作
- Photoshop试题与答案详解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功