搜档网
当前位置:搜档网 › OpenDayLight 代码学习研究

OpenDayLight 代码学习研究

OpenDayLight 代码学习研究
OpenDayLight 代码学习研究

ODL学习

修改记录

1.1ODL概述

Opendaylight是一个以模块化、可插拔、灵活的、基于Java的控制器为核心的开源平台。从北往南,它首先包括供上层应用和业务逻辑使用的北向开放API,有OSGi和REST两类。上层应用程序利用这些北向API获得网络智能信息、运行算法处理分析以及组合新的网络策略;其次,它包括控制器平台本身,它是一组可动态组合的模块用于汇集网络信息,比如网络中有哪些元素、其统计信息

如何等;最南边是能够支持多种协议的南向接口,如Openflow 1.0 1.3 BGP-LS等,这些南向接口可以调用设备上服务抽象层SAL。

1.2ODL架构原则

Open Daylight Controller在设计的时候遵循了六个基本的架构原则:

(1) 运行时模块化和扩展化(Runtime Modularity and Extensibility):支持在控制器运行时进行安装、删除和服务的更新。

(2) 多协议的南向支持(Multiprotocol Southbound):南向支持多种协议。

(3) 服务抽象层(Service Abstraction Layer):南向多种协议对上提供统一的北向服务接口。

(4) 开放的可扩展北向API(Open Extensible Northbound API):提供可扩展的应API,通过REST 或者函数调用方式。两者提供的功能要一致。

(5) 支持多租户、切片(Support for Multitenancy/Slicing):允许网络在逻辑上(或物理上)划分成不同的切片或租户。控制器的部分功能和模块可以管理指定切片。控制器根据所管理的分片来呈现不同的控制观测面。

(6) 一致性聚合(Consistent Clustering):提供细粒度复制的聚合和确保网络一致性的横向扩展(scale-out)。

1.3框架概述

上图所示,南向通过plugin的方式来支持多种协议,包括OpenFlow1.0、1.3,BGP-LS 等。这些模块被动态挂载到服务抽象层(SAL),SAL 为上层提供服务,将来自上层的调用封装为适合底层网络设备的协议格式。控制器需要获取底层设备功能、可达性等方面的信息,这些信息被存放在拓扑管理器(Topology Manager)中。其他的组件,包括ARP handler、HostTracker、Device Manager 和Switch Manager,则为Topology Manager生成拓扑数据。

控制器为应用(App)提供开放的北向API。支持OSGi 框架和双向的REST 接口。OSGi框架提供给与控制器运行在同一地址空间的应用,而REST API 则提供给运行在不同地址空间的应用。

所有的逻辑和算法都运行在应用中。

控制自带了GUI,这个GUI 使用了跟应用同样的北向API,这些北向API 也可以被其他的应用调用。

1.4功能概述

1.4.1服务抽象层

服务抽象层(SAL)是整个控制器模块化设计的核心,向下支持多种南向协议,向上为模块和应用支持一致性的服务。使用SAL 提供的接口,用户无需关心南向协议的具体实现细节,可以更多的关注到模块实现逻辑本身。

1.4.2 SAL 的演进

SAL已经演进成为了一种基于模型的方法。框架被用于对网络(属性和设备)建模,并动态地在服务应用之间通过北向API和协议插件提供的南向API 进行映射。下图展示了南向插件如何提供网络模型树的部分。

1.4.3 MD-SAL

SAL 的设计已经从原先的AD-SAL(API-Driven),逐渐演变到了MD-SAL(Model-Driven),这一决定是在2013.10的第14次TSC会议上讨论的。

采用MD-SAL 的好处是让北向和南向的API 和数据结构可以不管服务和组件的不同,保持独立。

数据和接口基于YANG标记语言进行描述,它描述XML数据结构、组件功能、定义语义元素和关系,作为一个独立系统来为所有组件建模。

新创建的模块可以采用YANG来进行定义,为希望实现的功能创建静态的API,而无需关心跟SAL进行的具体交互和数据结构实现。

2 源码部分

2.1服务抽象层

2.1.1sal-common组件

该组件定义了数据的基本读操作(没有写操作)接口以及全局变量的枚举类型接口。主要分为三个类:DataStoreIdentifer、GolobalDataStore、packegeinfo三个接口。

(1)DataStoreIdentifer接口

该类的定义了getIdentifier()和getName()两个方法接口。

作用:该类的主要作用就是定义一个获取数据存储的获取接口,要注意的是其中并没有定义set方法。(2)GolobalDataStore类

该类继承了DataStoreIdentifer接口并且是一个枚举的类型:

可以看出GolobalDataStore中存放的信息为RuntimeInfo和Configuration,即存储在运行时的基本信息和相关的组件配置信息。

作用:存放运行时的基本信息和相关的组件配置信息。

(3)Packegeinfo

其实一个预留类,暂时没有定义任何的方法。

2.1.2sal-core-api组件

org.opendaylight.controller.md.sal.dom.api包

该包中定义了一系列DOM(Document Object Model)即文件对象模型操作如只读操作、只写操作以及读写操作。只要包含以下几个类:

(1)DOMDataBroker接口

DOMDataBroker即文件对象模型数据代理,其继承了AsyncDataBroker()即异步数据代理和DOMDataChangeListener等。其中重载了文件对象模型数据代理对于DOMDataTransaction(文件对象模型数据事务)只读操作、只写操作以及读写操作的操作。createTransactionChain()暂时还没搞清楚其作用。

作用:定义了一个对DOMDataTransaction的统一接口,其返回的是操作方法而不是具体操作。(2)DOMDataChangeListener

该类继承了AsyncDataChangeListener,提供DOM数据变更监听。

作用:DOM数据变更监听器。

(3)DOMDataReadOnlyTransaction

作用:文件对象模型数据事务只读操作。

(4)DOMDataReadTransaction

作用:文件对象模型数据事务读操作。

(5)DOMDataReadWriteTransaction

作用:文件对象模型数据事务读写操作。

(6)DOMDataWriteTransaction

作用:文件对象模型数据事务写操作。

(7)DOMTransactionChain

作用:重载了DOM事务链对于DOMData的操作类型,返回的是操作类型而不是具体操作结果。

org.opendaylight.controller.md.sal.dom.api包

该包的结构如下:

可以看出该包中有Broker、Consumer以及Provider三个关键类,所以对于这个包要引用下MD-SAL 的架构图

其中,Providers意味着提供NB API来让其他组件使用服务。

Consumer意味着组件使用了某个或某些Provider提供的服务。

Broker在不同的Provider和Consumer之间路由RCP、通知和数据更新。

Binding 意味着通过YANG 模式描述的功能所生成(Generate)的Java 接口、类或者约定。所以Binding-Aware意味着某组件/功能使用了YANG生成的数据或者API,而Binding-independent意味着某组件/功能的数据和API是中立的DOM格式,即没有使用生成绑定。

由MD-SAL框架图可以看出该包中Broker承接Provider和Consumer的数据交互。下面我们具体分析下这几个类。

(1)Provider接口

当创建一个具体的Provider时,通过调用其中onSessionInitiated(ProviderSession session);这个相当于注册其中的ProviderSession,而其来源就是Broker中的ProviderSession接口。

(2)Consumer接口

其接口的内容和Provider接口基本一致。只是职责不同。当SAL中的组件需要远程调用另外了一个组件时,其就会申请一个相应的Broker。其通过Broker找到相应的Provider,并与其建立会话。

(3)Broker接口

Broker通过管理这两个会话来建立Provider和Consumer连接。而其通信方式是采用模仿RPC的方式(具体的暂时没有研究)。

(4)AbstractConsumer类

其是一个抽象类,它继承了Consumer这个接口,它控制Consumer会话的开始和结束,以及会话的暂停和唤醒。具体部分实例如下:

(5)AbstractProvider类

内容和作用和AbstractConsumer差不多,只是其对象换成Provider。

org.opendaylight.controller.sal.core.api

(1)DataStore接口

●IterablegetStoredConfigurationPaths();

该方法主要用于获取数据存储的位置。

●Iterable getStoredOperationalPaths();

该方法主要用于主要用于获取操作数据的路径。

●boolean containsConfigurationPath(InstanceIdentifier path);

该方法主要用于?

●boolean containsOperationalPath(InstanceIdentifier path);

看完了其内部定义的方法,DataStore到底有什么作用,在什么地方没到它呢?可以观察下图:

作用:DataStore实现SALCoreAPI或者SALCore SPI,组件可以通过DOM Data Broker 对DataStore进行操作。而具体DOM Data Broker怎么找到对应的DataStore请看

下面的DataBrokerService。

(2)DataBrokerService

该接口是个数据代理服务,其和一般的Broker设计原理相似,唯一的区别就是没有定义具体的Consumer。

●public CompositeNode readConfigurationData(InstanceIdentifier path);

该方法是获取DataStore接口中的数据路径在Map>>中的节点。

●public CompositeNode readOperationalData(InstanceIdentifier path);

该方法是获取DataStore接口中的操作数路径在Map>>中的节点。

●DataModificationTransaction beginTransaction();

启动传输链?

(3)DataChangeListener

●onDataChanged(DataChangeEvent

change);

该接口主要用于监听数据的变化。

(4)DataModificationTransaction

该接口主要用于数据修改事务

(5)DataProviderService

数据提供者服务。

(6)DataValidator

该接口用于数据验证。

org.opendaylight.controller.sal.core.api.model包

(1)SchemaService

该类是最为基础的核心类,它定义了框架中YANG模块注册和会话的建立以及全局Context。

●void addModule(Module module)

增加一个YANG模块。

●void removeModule(Module module)

移除一个YANG模块。

●SchemaContext getSessionContext()

获取会话内容。

●SchemaContext getGlobalContext()

获取全局Context。

2.1.3sal.core.spi组件

org.opendaylight.controller.sal.core.spi包

(1)BrokerModule

●Set> getProvidedServices();

获取Provider提供的服务。

●Set>getSupportedConsumerFunctional

ity();

获取支持的消费者功能。

T getServiceForSession(Class service,

ConsumerSession session);

获取消费者服务的会话。

org.opendaylight.controller.*.AsyncDataBroker.DataChangeScope包

(1)DOMStore

DOM Data Store为YANG模型提供事务性的树形存储。

●registerChangeListener

寄存器数据变更监听。提供的子路径的变化会触发寄存器的的数据更改回调。什么构成的变化依赖于@ scope参数。

●DOMStoreTransactionChain createTransactionChain();

创建事务链。

(2)DOMStoreReadTransaction

●ListenableFuture>>read(InstanceIdentifier

path);

DOM Data Store的数据读操作。

(3)DOMStoreReadWriteTransaction

DOM Data Store的数据读写操作。目前该接口未定义任何方法。

(4)DOMStoreThreePhaseCommitCohort

该接口为DOM Data Store 的三阶段提交队列接口。定义了数据提交的三个阶段。

●ListenableFuture canCommit();

启动关联交易对数据存储的预提交阶段

●ListenableFuture preCommit();

启动关联交易对数据存储区中的中止阶段。

●ListenableFuture commit();

数据提交。

●ListenableFuture abort();

启动对关联交易的有关数据存储提交阶段。

(5)DOMStoreTransaction

该接口为DOMStore事务接口。

●public Object getIdentifier();

唯一标示一个事务。

(6)DOMStoreTransactionChain

该接口为DOM数据存储事务链。事务链中的事务需要被被提交到队列中,并且每一个事务必须要考虑其在事务链前面的事务的影响。

●public DOMStoreReadTransaction newReadOnlyTransaction();

在事务链中创建一个只读的事务,该事务的写操作必须被准备或者取消。

●public DOMStoreReadWriteTransaction newReadWriteTransaction();

在事务链中创建一个读写事务

●public DOMStoreWriteTransaction newWriteOnlyTransaction();

●在事务链中创建一个只读事务

(7)DOMStoreTransactionFactory

工厂提供的方法来构造只读,可读写,只写记录,其可以被用于在检索和修改所存储的信息。

●DOMStoreReadTransaction newReadOnlyTransaction();

创建一个只读事务。

●DOMStoreWriteTransaction newWriteOnlyTransaction();

创建一个只写事务。

●DOMStoreReadWriteTransaction newReadWriteTransaction();

创建一个读写事务。

(8)DOMStoreWriteTransaction

该接口主要用于DOMStore事务的相关写操作。

2.1.4sal. connection组件

org.opendaylight.controller.sal.connection包

(1)ConnectionConstants

这是一个枚举类型,主要是连接的基本信息,如:address,port,protocol,username,password。

(2)ConnectionLocality

这也是一个枚举信息,主要定义的信息有:LOCAL,NOT_LOCAL,NOT_CONNECTED。

其中具体如下:

(3)IConnectionListener

该接口为一个空接口,其用于连接监听。

(4)IConnectionService

接口定义了可用于该操作的功能模块的方法以上SAL用于断开或连接到特定的节点。

●public Node connect (String type, String connectionIdentifier,

Map params);

连接到一个节点与指定的节点类型。

●public Node connect (String connectionIdentifier,

Map params);

发现节点类型,能够与指定的参数节点连接。

●public Status disconnect(Node node);

取消连接。

●publicvoid notifyNodeDisconnectFromMaster(Node node);

唤醒连接

(5)IPluginInConnectionService

该接口描述由协议插件来实现的方法

●public Status disconnect(Node node);

断开连接到该控制器节点。

●public Node connect (***);

连接到一个节点。

(6)IPluginOutConnectionService

该接口描述由SAL连接服务实现的方法

●publicboolean isLocal(Node node);

测试节点是否本地的一个控制器。

●public ConnectionLocality getLocalityStatus(Node node);

获取本地节点的状态。

HTML属性详解大全

HTML属性详解 入门 HTML 标签 HTML 元素 HTML 属性 HTML 标题 HTML 段落 HTML 格式化 HTML 样式 HTML 链接 HTML 表格 HTML 列表 HTML 表单 HTML 图像 HTML 背景 HTML颜色 HTML 是用来描述网页的一种语言 HTML 不是一种编程语言,而是一种标记语言 标记语言是一套标记标签, HTML 使用标记标签来描述网页 HETML标签: HTML 标记标签通常被称为HTML 标签 HTML 标签是由尖括号包围的关键词,比如。成对出现的,比如 标题 HTML 标题(Heading)是通过

-

等标签进行定义的。

This is a heading

This is a heading

This is a heading

定义最大的标题。

定义最小的标题。 段落 段落是通过 标签进行定义的 This is a paragraph. This is another paragraph. 链接 链接是通过 标签进行定义的 SEO研究中心

图像 图像是通过 标签进行定义的。 图像标签()和源属性(Src) 在HTML 中,图像由 标签定义。 是空标签,意思是说,它只包含属性,并且没有闭合标签。 要在页面上显示图像,你需要使用源属性(src)。src 指"source"。源属性的值是图像的URL 地址。例子: URL 指存储图像的位置。如果名为"boat.gif" 的图像位于https://www.sodocs.net/doc/f510746234.html, 的images 目录中,那么其URL 为https://www.sodocs.net/doc/f510746234.html,/images/boat.gif。 浏览器将图像显示在文档中图像标签出现的地方。如果你将图像标签置于两个段落之间,那么浏览器会首先显示第一个段落,然后显示图片,最后显示第二段。 替换文本属性(Alt) Big Boat 元素 元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码 HTML 元素以开始标签起始 HTML 元素以结束标签终止 元素的内容是开始标签与结束标签之间的内容 空元素 没有内容的称为空元素
标签定义换行 标签使用小写 文本格式化 文字的各种属性加粗斜体文字方向缩写首字母等 HTML 属性 HTML 标签可以拥有属性。属性提供了有关HTML 元素的更多的信息。 属性总是以名称/值对的形式出现,比如:name="value"。 属性总是在HTML 元素的开始标签中规定。 属性实例 居中排列标题 例子:

定义标题的开始。

拥有关于对齐方式的附加信息。 背景颜色 拥有两个配置背景的标签。背景可以是颜色或者图像

计算机图形学真实图形

#include #include /* Initialize material property, light source, lighting model, * and depth buffer. */ void init(void) { GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; GLfloat lightPos[]={0.0f,0.0f,75.0f,1.0f}; GLfloat ambientLight[]={0.0f,0.0f,75.0f,1.0f}; GLfloat specular[]={0.0f,0.0f,75.0f,1.0f}; GLfloat specref[]={0.0f,0.0f,75.0f,1.0f}; GLfloat spotDir[]={0.0f,0.0f,75.0f,1.0f}; glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_SMOOTH);//设置阴影模型 glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);//镜面光分量强度glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);//镜面光反射指数glLightfv(GL_LIGHT0, GL_POSITION, light_position);//设置光源的位置 glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambientLight); glLightfv(GL_LIGHT1,GL_DIFFUSE,ambientLight); glLightfv(GL_LIGHT1,GL_SPECULAR,specular); glLightfv(GL_LIGHT1,GL_POSITION,lightPos); glLightf(GL_LIGHT1,GL_SPOT_CUTOFF,50.0f); glEnable(GL_LIGHT1); glEnable(GL_COLOR_MATERIAL); glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE); glMaterialfv(GL_FRONT,GL_SPECULAR,specref); glMateriali(GL_FRONT,GL_SHININESS,128); glEnable(GL_LIGHTING);//启动光照 glEnable(GL_LIGHT0);//激活光源 glEnable(GL_LIGHT1);//激活光源 glEnable(GL_DEPTH_TEST); } /* 调用glut函数绘制一个球*/ void display(void) { glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

HTML各种命令的代码

HTML各种命令的代码 跑马灯 ...普通卷动 ...滑动 ...预设卷动 ...来回卷动...向下卷动 ...向上卷动 向右卷动 向左卷动 ...卷动次数 ...设定宽度 ...设定高度 ...设定背景颜色...设定卷动距离...设定卷动时间 字体效果

...

标题字(最大)

...
标题字(最小) ...粗体字 ...粗体字(强调) ...斜体字 ...斜体字(强调) ...斜体字(表示定义) ...底线 ...底线(表示插入文字) ...横线 ...删除线 ...删除线(表示删除) ...键盘文字 ... 打字体 ...固定宽度字体(在文件中空白、换行、定位功能有效) ...</plaintext>固定宽度字体(不执行标记符号) <listing>...</listing> 固定宽度小字体 <font color=00ff00>...</font>字体颜色 <font size=1>...</font>最小字体 <font style =font-size:100 px>...</font>无限增大 <!>区断标记</p><h2>Asterisk常用调试命令</h2><p>Asterisk基本配置 Asterisk译为星号(*)在很多应用中被用做通配符,Astrisk做为PBX系统的完美名称,原因之一是Asterisk可以连接数目庞大的接口类型,包括: 1模拟接接口,如你的电话线或模拟电话. 2数字线路,如T-1和E-1线路 3Voip协议,如SIP和IAX 目前正式版本是IAX2,但是IAX1的所有格式都已经停掉.所以当说到IAX都是特拽IAX2 使用接口配置文件 1.Zaptel.conf:硬件接口基层配置,我们将建立一个FX0和一个FXS通道. 2.zapata.conf:硬件配置Asterisk的接口. 3.extension.conf:拨号方案文件. 4.sip.conf:配置SIP协议的文件 5.iax.conf:配置呼入和呼出IAX通道的文件 ******编辑完zaptel.conf文件,需要使用/sbin/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.conf和iax.conf文档后,分别需要装载chan_iax2.so和 chan_sip.so Asterisk译为星号(*)在很多应用中被用做通配符,Astrisk做为PBX系统的完美名称,原因之一是Asterisk可以连接数目庞大的接口类型,包括: 1模拟接接口,如你的电话线或模拟电话. 2数字线路,如T-1和E-1线路 3Voip协议,如SIP和IAX 目前正式版本是IAX2,但是IAX1的所有格式都已经停掉.所以当说到IAX都是特拽IAX2 使用接口配置文件 1.Zaptel.conf:硬件接口基层配置,我们将建立一个FX0和一个FXS通道. 2.zapata.conf:硬件配置Asterisk的接口. 3.extension.conf:拨号方案文件. 4.sip.conf:配置SIP协议的文件 5.iax.conf:配置呼入和呼出IAX通道的文件 ******编辑完zaptel.conf文件,需要使用/sbin/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.conf和iax.conf文档后,分别需要装载chan_iax2.so和 chan_sip.so******</p><h2>HTML代码中IMG标签的全部属性</h2><p>HTML代码中IMG标签的全部属性 例:写一段图片HTML代码 <img src="http://localhost/phpwind6/zx/6.jpg" id="imgs" lang="en-us" alt="测试"> 该标签为img的代码中已可以看出已含有了四个属性,包括src id lang alt,加上本身的img标签有5个属性. 那么该img标签在正常的情况下倒底还含有多个属性?(包含对象),我现在为大家一一列出来(以上面那句代码为例,并附上它的所有值),所有在IE环境下有效可用的对象属性都在下面.学习HTML的朋友可以借鉴学习,也可以拿去吓人, 以下通过测试的IMG的全属性为156个,不包括子属性,而且还只是这一个img 标签的....虽然有些看起来用在IMG标签上不太合理,但确实是有效使用,IE中无错且有返回值.关键在于看你怎么用了,除了有些不常用的属性不太清楚以外,以下全是手工输的,花了4个小时,对你有用没用就看你怎么想了.不过如果你了解了以下的说明后网页的美化和代码的理解就可以扫盲和DIY了 以下的img可用的属性如果你只用过10个不到,那就只能说明你菜....... language = //语言类型,如<script language="vbs">这句代码中的language 属性的值就为vbs scrollHeight = 30 //自身元素的宽度(即显示的宽度) isTextEdit = false //是否可以获取可使用该对象创建一个TextRange的对象 currentStyle = 该属性含有114个对象 //返回当前属性的值,不可更改它的值 document = 该属性含有209个对象 //这个就不用说了吧,是文档属性, onmouseup = null //鼠标按下后松开鼠标时触发此事件 oncontextmenu = null //鼠标点右键后触发的事件 isMultiLine = true //是否允许含有多行文本,多用于文本框,用在img标签上无错,但效果不大 clientHeight = 30 //当前可见的该标签的高度为30, onrowexit = null //数据源控件更改这个标签内的当前的行时触发某事件,多用在form表中 onbeforepaste = null //当在这个标签中粘贴内容时触发某事件,多用在文本框中 onactivate = null //当这个控件被触发时(被点击或者焦点移到了该标签上)发生某事件, scrollLeft = 0 //被卷入的离左边界的宽度 lang = en-us //语言属性,和language不同,这个等同于网页语言 onmousemove = null //当鼠标在该标签上移动时发生某事件 onmove = null //浏览器的窗口被移动时触发此事件 onselectstart = null //当这个标签中的文本被选择时发生某事件 parentTextEdit = 该属性含有352个对象 //又一个华丽的属性....用在框架中,作用详见第3条 oncontrolselect = null //当用户将要对该对象制作一个控件选中区时触发</p><h2>图形学实验一 三维分形(附源代码)</h2><p>实验报告 实验名称:三维分形算法 姓名:陈怡东 学号:09008406 程序使用说明: 程序打开后会呈现出3次分形后的四面体,因为考虑到观察效果的清晰所以就用了3次分形作为演示。 与用户的交互: 1键盘交互:分别按下键盘上的数字键1,2,3,4可以分别改变四面体的4个面的颜色。 按下字母c(不区别大小写)可以改变视图函数,这里循环切换3种视图 函数:glOrtho,glFrustum,gluPerspective,但是改变视图函数后要窗口形状变化后才能显现出来 按下字母键q(不区别大小写)可以退出程序 2鼠标交互:打开后在绘图的区域按下鼠标左键不放便可以拖动图形的视角,这里为了展现图形的3D效果因此固定了其中一点不放,这样就可以看到3D的效果。 鼠标右击则有弹出菜单显示,其中改变颜色则是同时改变4个面的颜色,本程序中运用了8组配色方案。 改变视图函数也是上述的3种函数,这里的效果立刻显现,但是还有很多问题达不到所要的效果,希望老师能帮忙解决一下。 设计思路: 分形算法:把四面体细分成更小的四面体,先找出其6个棱的中点并连接起来,这样就在4个顶点处各有一个小的四面体,原来四面体中剩下的部分应当去掉。仿效二维的生成方法,我们对保留的四个小四面体进行迭代细分。这样细分结束后通过绘制4个三角形来绘制每一个剩下的四面体。 交互的实现:键盘交互,即通过对按键的响应写上响应函数实现对视图和颜色的改变。 鼠标交互:通过对鼠标左右按键的 实现: 该部分只做了必要的介绍,具体实现见代码(附注释) 分形算法:void tetra(GLfloat *a,GLfloat *b,GLfloat *c,GLfloat *d)函数实现的是绘制四面体并且给四个面绘上不同的颜色。以区别开来,函数的实现细节见代码,有注释介绍。 void triangle3(GLfloat *a,GLfloat *b,GLfloat *c)函数用来绘制每个平面细分后的三角形。其中顶点设置为3维坐标glVertex3fv(a); void divide_tetra(GLfloat *a,GLfloat *b,GLfloat *c,GLfloat *d,int m)细分四面体的函数实现。前四个参数为传入点的坐标,最后参数m则是细分次数。先计算六个中点的坐标mid[1][j]=(a[j]+c[j])/2;3次循环则是对x,y,z三个坐标的一次计算,然后再递归调用绘制4个小四面体。 然后是显示回调函数void mydisplay3FX();这跟程序模板差不多不做过多介绍。 分形算法中必要重要的一点是隐藏面的消除。即书上2.10.3介绍的内容。对对象进行排</p><h2>Asterisk安装指南</h2><p>Asterisk安装指南 2010-03-20 10:49 1、选择操作系统 据说Asterisk对大多Linux支持的都比较好,内核版本2.6.9-55.EL安装起来很顺利,2.4的麻烦一些。注意安装系统的时候选择上开发环境的包。2、在/usr/src目录中下载Asterisk相关安装包并解压 #cd /usr/src https://www.sodocs.net/doc/f510746234.html,/pub/libpri/releases/libpri-1.4.10.tar.gz https://www.sodocs.net/doc/f510746234.html,/pub/zaptel/releases/zaptel-1.4.12.1.tar.gz(dahdi asterisk1.6以后就不用这个,用https://www.sodocs.net/doc/f510746234.html,/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.6.1+2.6.1.tar.gz) https://www.sodocs.net/doc/f510746234.html,/pub/asterisk/releases/asterisk-1.6.2.tar.gz https://www.sodocs.net/doc/f510746234.html,/pub/asterisk/releases/asterisk-addons-1.6.2.0.tar.gz https://www.sodocs.net/doc/f510746234.html,/pub/asterisk/releases/asterisk-sounds-1.2.1.tar.gz # tar -xvzf *.tar.gz 3.安装libpri # cd libpri-1.4.9 # make # make install 4.安装zaptel # cd .. # cd zaptel-1.4.12.1 # make # make install # make config 5.安装asterisk # cd .. # cd asterisk-1.4.24.1 # ./configure # make # make install</p><h2>网页html代码大全</h2><p>常用HTML代码解释 一、文字 1.标题文字<h#>..........</h#> #=1~6;h1为最大字,h6为最小字 2.字体变化<font>..........</font> 【1】字体大小<font size=#>..........</font> #=1~7;数字愈大字也愈大 【2】指定字型<font face="字体名称">..........</font> 【3】文字颜色<font color=#rrggbb>..........</font> rr:表红色(red)色码 gg:表绿色(green)色码 bb:表蓝色(blue)色码 rrggbb也可用6位颜色代码数字 3.显示小字体<small>..........</small> 4.显示大字体<big>..........</big> 5.粗体字<b>..........</b> 6.斜体字<i>..........</i> 7.打字机字体<tt>..........</tt> 8.底线<u>..........</u> 9.删除线<strike>..........</strike> 10.下标字<sub>..........</sub> 11.上标字<sup>..........</sup> 12.文字闪烁效果<blink>..........</blink> 13.换行(也称回车)<br> 14.分段 15.文字的对齐方向<p align="#"> #号可为left:表向左对齐(预设值)center:表向中对齐right:表向右对齐P.S.<p align="#">之后的文字都会以所设的对齐方式显示,直到出现另一个<p align="#">改变其对齐方向,遇到<hr>或<h#>标签时会自动设回预设的向左对齐。</p><h2>计算机图形学 实验一:生成彩色立方体(含源代码)</h2><p>实验一 实验目的:生成彩色立方体 实验代码://ColorCube1.java import java.applet.Applet; //可以插入html import java.awt.BorderLayout; //窗口采用BorderLayout方式布局import com.sun.j3d.utils.applet.MainFrame; //application import com.sun.j3d.utils.geometry.ColorCube;//调用生成ColorCube的Utility import com.sun.j3d.utils.geometry.Primitive; import com.sun.j3d.utils.universe.*; //观测位置的设置 import javax.media.j3d.*; //核心类 import javax.vecmath.*; //矢量计算 import com.sun.j3d.utils.behaviors.mouse.*; public class ColorCube1 extends Applet { public BranchGroup createSceneGraph() { BranchGroup objRoot=new BranchGroup(); //BranchGroup的一个对象objRoot(放置背景、灯光)BoundingSphere bounds=new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);//有效范围 TransformGroup objTrans=new TransformGroup(); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); objRoot.addChild(objTrans); MouseRotate behavior = new MouseRotate(); behavior.setTransformGroup(objTrans); objRoot.addChild(behavior); behavior.setSchedulingBounds(bounds); MouseZoom behavior2 = new MouseZoom(); behavior2.setTransformGroup(objTrans); objRoot.addChild(behavior2); behavior2.setSchedulingBounds(bounds); MouseTranslate behavior3 = new MouseTranslate(); behavior3.setTransformGroup(objTrans); objRoot.addChild(behavior3); behavior3.setSchedulingBounds(bounds);</p><h2>HTML标签代码大全(DIVCSS前端开发者的福音)</h2><p>HTML代码大全免费下载 (在…里加入你要的文字即可) <!>忽视右键 <body oncontextmenu="return false"> 或 <body style="overflow-y:hidden"> <!>文字特效 移动模板:<MARQUEE scrollAmount=3 direction=up>..........</MARQUEE> 例子a.<marquee hspace=20 vspace=20 width=150 bgcolor=ffaaaa align=middle>啦啦啦,我会移动耶!</marquee> b.<marquee direction=left>啦啦啦,我从右向左移!</marquee> 啦啦啦,我从右向左移! c.<marquee behavior=scroll>啦啦啦,我一圈一圈绕着走!</marquee> 啦啦啦,我一圈一圈绕着走! d.<marquee behavior=alternate>啦啦啦,我来回走耶!</marquee> 啦啦啦,我来回走耶!</p><p>e.<marquee scrolldelay=500 scrollamount=100>啦啦啦,我走一步,停一停!</marquee> 啦啦啦,我走一步,停一停! <marquee>…</marquee>普通卷动 <marquee behavior=slide>…</marquee>滑 <marquee behavior=scroll>…</marquee>预设卷动 <marquee behavior=alternate>…</marquee>来回卷动 <marquee direction=down>…</marquee>向下卷动 <marquee direction=up>…</marquee>向上卷 <marquee direction=right></marquee>向右卷动 <marquee direction=left></marquee>向左卷动 <marquee loop=2>…</marquee>卷动次数 <marquee width=180>…</marquee>设定宽 <marquee height=30>…</marquee>设定高度 <marquee bgcolor=FF0000>…</marquee>设定背景颜色 <marquee scrollamount=30>…</marquee>设定卷动距离 <marquee scrolldelay=300>…</marquee>设定卷动时间 <!>区断标记 <hr>水平线 <hr size=9>水平线(设定大小)</p><h2>HTML代码属性对照表(非常全)</h2><p>html代码的所有代码属性 <!> 跑马灯 <marquee>...</marquee>普通卷动 <marquee behavior=slide>...</marquee>滑动 <marquee behavior=scroll>...</marquee>预设卷动 <marquee behavior=alternate>...</marquee>来回卷动 <marquee direction=down>...</marquee>向下卷动 <marquee direction=up>...</marquee>向上卷动 <marquee direction=right></marquee>向右卷动 <marquee direction=left></marquee>向左卷动 <marquee loop=2>...</marquee>卷动次数 <marquee width=180>...</marquee>设定宽度 <marquee height=30>...</marquee>设定高度 <marquee bgcolor=FF0000>...</marquee>设定背景颜色 <marquee scrollamount=30>...</marquee>设定滚动速度 <marquee scrolldelay=300>...</marquee>设定卷动时间 <marquee onmouseover="this.stop()">...</marquee>鼠标经过上面时停止滚动<marquee onmouseover="this.start()">...</marquee>鼠标离开时开始滚动 <!>字体效果 <h1>...</h1>标题字(最大) <h6>...</h6>标题字(最小) <b>...</b>粗体字 <strong>...</strong>粗体字(强调) (同上效果略同) <i>...</i>斜体字 <em>...</em>斜体字(强调) <dfn>...</dfn>斜体字(表示定义) <u>...</u>底线 <ins>...</ins>底线(表示插入文字) <strike>...</strike>横线 <s>...</s>删除线 <del>...</del>删除线(表示删除) <kbd>...</kbd>键盘文字 <tt>...</tt> 打字体 <xmp>...</xmp>固定宽度字体(在文件中空白、换行、定位功能有效) <plaintext>...</plaintext>固定宽度字体(不执行标记符号) <listing>...</listing> 固定宽度小字体 <font color=00ff00>...</font>字体颜色 <font size=1>...</font>最小字体 <font style =font-size:100 px>...</font>无限增大</p><h2>计算机图形学实验_透视茶壶源代码</h2><p>#include<windows.h> #include<gl/glut.h> #include<gl/gl.h> using namespace std; float fTranslate; float fRotate; float fScale=1.0f;//set inital scale value to 1.0f bool bPersp=false; bool bAnim=false; bool bWire=false; int wHeight=0; int wWidth=0; //todo //hint:some additional parameters may needed here when you operate the teapot void Draw_Leg() { glScalef(1,1,3); glutSolidCube(1.0f); //glutWireCone(1.0f); } //定义操作茶壶的操作参数 int tx=1; int ty=0; int tz=0; int tangle=90; //定义设置scale的参数 float sx=0.3f; float sy=0.3f; float sz=0.3f; void Draw_Scene() { glPushMatrix(); glTranslatef(0,0,5); glRotatef(tangle,tx,ty,tz); // glutSolidTeapot(1); glutSolidSphere(1.0f,10,10);</p><p>glPopMatrix(); glPushMatrix(); glTranslatef(0,0,3.5); glScalef(5,4,1); glutSolidCube(1.0); glPopMatrix(); //leg1 glPushMatrix(); glTranslatef(1.5,1,1.5); Draw_Leg(); glPopMatrix(); //leg2 glPushMatrix(); glTranslatef(-1.5,1,1.5); Draw_Leg(); glPopMatrix(); //leg3 glPushMatrix(); glTranslatef(1.5,-1,1.5); Draw_Leg(); glPopMatrix(); //leg4 glPushMatrix(); glTranslatef(-1.5,-1,1.5); Draw_Leg(); glPopMatrix(); } void updateView(int width,int height) { glViewport(0,0,width,height);//reset the current viewport glMatrixMode(GL_PROJECTION);//select the projection matrix glLoadIdentity();//reset the projection matrix float whRatio=(GLfloat)width/(GLfloat)height; if(bPersp) { //todo when 'p'operation ,hint:use function glupersPective } else glOrtho(-3,3,-3,3,-100,100); glMatrixMode(GL_MODELVIEW);//select the modelview matrix</p><h2>html特效代码大全精美免费下载</h2><p>html特效代码大全精美免费下载.txt每天早上起床都要看一遍“福布斯”富翁排行榜,如果上面没有我的名字,我就去上班。谈钱不伤感情,谈感情最他妈伤钱。我诅咒你一辈子买方便面没有调料包。 HTML代码大全免费下载 HTML特效代码1。忽视右键 <body oncontextmenu="return false"> 或 <body style="overflow-y:hidden"> 2。加入背景音乐 IE:<bgsound src="*.mid" loop=infinite> NS:<embed src="*.mid" autostart=true hidden=true loop=true> </embed> *.mid你的背景音乐的midi格式文件 3。简单的window.open方法 <a href="#" onclick="javascript :window.open(文件路径/文件名,newwindow, toolbar=no,scrollbars=yes,resizable=no,top=0,left=0, width=400,height=300);">文字或图片</a> 参数解释: <SCRIPT LANGUAGE="javascript"> js脚本开始; window.open 弹出新窗口的命令; 文件路径/文件名弹出窗口的文件名; newwindow 弹出窗口的名字(不是文件名),非必须,可用空代替; width=400 窗口宽度; height=300 窗口高度; top=0 窗口距离屏幕上方的象素值; left=0 窗口距离屏幕左侧的象素值; toolbar=no 是否显示工具栏,yes为显示; menubar,scrollbars 表示菜单栏和滚动栏。 resizable=no 是否允许改变窗口大小,yes为允许; location=no 是否显示地址栏,yes为允许; status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许; </SCRIPT> js脚本结束 4。简单的页面加密 <script LANGUAGE="javascript"> <!-- function loopy(){ var sWord ="";</p><h2>html标签属性大全_免费</h2><p><!> 跑马灯 <marquee>...</marquee>普通卷动 <marquee behavior=slide>...</marquee>滑动 <marquee behavior=scroll>...</marquee>预设卷动 <marquee behavior=alternate>...</marquee>来回卷动 <marquee direction=down>...</marquee>向下卷动 <marquee direction=up>...</marquee>向上卷动 <marquee direction=right></marquee>向右卷动 <marquee direction=’left’></marquee>向左卷动 <marquee loop=2>...</marquee>卷动次数 <marquee width=180>...</marquee>设定宽度 <marquee height=30>...</marquee>设定高度 <marquee bgcolor=FF0000>...</marquee>设定背景颜色 <marquee scrollamount=30>...</marquee>设定滚动速度 <marquee scrolldelay=300>...</marquee>设定卷动时间 <marquee onmouseover="this.stop()">...</marquee>鼠标经过上面时停止滚动<marquee onmouseover="this.start()">...</marquee>鼠标离开时开始滚动 <!>字体效果 <h1>...</h1>标题字(最大) <h6>...</h6>标题字(最小) <b>...</b>粗体字 <strong>...</strong>粗体字(强调) (同上效果略同) <i>...</i>斜体字 <em>...</em>斜体字(强调) <dfn>...</dfn>斜体字(表示定义) <u>...</u>底线 <ins>...</ins>底线(表示插入文字) <strike>...</strike>横线 <s>...</s>删除线 <del>...</del>删除线(表示删除) <kbd>...</kbd>键盘文字 <tt>...</tt> 打字体 <xmp>...</xmp>固定宽度字体(在文件中空白、换行、定位功能有效) <plaintext>...</plaintext>固定宽度字体(不执行标记符号) <listing>...</listing> 固定宽度小字体 <font color=00ff00>...</font>字体颜色 <font size=1>...</font>最小字体 <font style =’font-size:100 px’>...</font>无限增大 区断标记 <hr>水平线 <hr size=’9’>水平线(设定大小) <hr width=’80%’>水平线(设定宽度) <hr color=’ff0000’>水平线(设定颜色) <br>(换行)</p><h2>计算机图形学实验--完整版-带结果--vc++实现</h2><p>计算机图形学实验报告信息学院计算机专业20081060183 周建明 综括: 利用计算机编程语言绘制图形,主要实现以下内容: (1)、中点算法生成任意斜率直线,并设置线型线宽。 (2)、中点算法生成圆 (3)、中点算法生成椭圆 (4)、扫描算法实现任意多边形填充 (5)、Cohen_Sutherland裁剪 (6)、自由曲线与曲面的绘制 (7)、二维图形变换 (8)、三视图变换 实验一、直线的生成 一、实验内容 根据提供的程序框架,修改部分代码,完成画一条直线的功能(中点画线法或者Bresenham画线法任选一),只要求实现在第一象限内的直线。 二、算法原理介绍 双击直线生成.dsw打开给定的程序,或者先启动VC++,文件(file)→打开工作空间(open workspace)。打开直线生成view.cpp,按注释改写下列函数: 1.void CMyView::OnDdaline() (此为DDA生成直线) 2.void CMyView::OnBresenhamline()(此为Bresenham画直线) 3.void CMYView::OnMidPointLine()(此为中点画线法) 三、程序源代码 1.DDA生成直线画法程序: float x,y,dx,dy,k; dx=(float)(xb-xa); dy=(float)(yb-ya); k=dy/dx; x=xa; y=ya;</p><p>if(abs(k)<1) { for (x=xa;x<=xb;x++) { pdc->SetPixel(x, int(y+0.5),COLOR); y=y+k; } } if(abs(k)>=1) { for(y=ya;y<=yb;y++) { pdc->SetPixel(int(x+0.5),y,COLOR); x=x+1/k; } } //DDA画直线结束 } 2.Bresenham画直线源程序: float b,d,xi,yi; int i; float k; k=(yb-ya)/(xb-xa); b=(ya*xb-yb*xa)/(xb-xa); if(k>0&&k<=1) for(i=0;i<abs(xb-xa);i++) { d=ya+0.5-k*(xa+1)-b; if(d>=0) { xi=xa+1; yi=ya; xa++; ya=ya+0.5; } if(d<0) { xi=xa+1; yi=ya+1; xa++; ya=ya+1.5; } pdc->SetPixel(xi,yi,COLOR); }</p><h2>Sub Station Alpha v4.00+ (ASS、SSA特效代码全解全指令指令大全,包含了所有的指令)</h2><p>Sub Station Alpha v4.00+脚本格式 圣诞重校译本 翻译 Magics Translated from english by Magics 重要订正:绘图命令中04-04译本将b样条(b-spline)曲线与贝兹(Bezier)曲线混淆。现已更正,向各位读者致歉(12-24-04) 0翻译词汇表 1概要 2Sub Station Alpha脚本中的各节 3Sub Station Alpha 脚本中的各种类型的行 4标题行,[Script Info]节 5样式行,[v4+ Styles]节 6对话事件行,[Events]节 7注释事件行,[Events]节 8图像事件行,[Events]节 9音频事件行,[Events]节 10Movie event line, [Events] section 11Command event lines, [Events] section 附录A:样式替换代码 附录B:嵌入式字体/图像编码 (译者注:以下内容中ssa(小写)指Sub Station Alpha 脚本,SSA(大写)指Sub Station Alpha 软件。ass/ASS无论大小写均指Advanced Sub Station Alpha 脚本) 本文档原为SSA的脚本格式说明(能在https://www.sodocs.net/doc/f510746234.html, 找到)。更新 或改动了的部分被标记成红色。</p><p>0. 翻译词汇表 英文常用中文翻译(加粗为本文中所用翻译)抱歉,其中可能错误较多,修订完成前不再提供,取有需要请查阅04-04版译本。</p><p>1. 概要 本文是假定你对SSA使用的术语和概念已经熟悉的情况下提供相关信息的。这些内容同时储存在SSA的帮助文档,随SSA一起分发的或者从https://www.sodocs.net/doc/f510746234.html, 单独下载的ssa.hlp 文档中。 1ssa v4.00与先前的版本格式不同。 SSA v4.00 是向下兼容的。 一些ssa格式的改动就是为了让v4.00及其后续版本能读取现在甚至将来新的ssa。尤其是,新增加的“Format”行使得SSA能只读取它支持的信息,而忽略新版的脚本中增加的信息。(译者注:这就是下文将介绍的“Format”行的用途,详细的内容请见下文。) 2脚本是普通的DOS格式文本文件。 (译者注:文本文件常见的有DOS、MAC、UNIX。另外ass/ssa支持以Unicode字符集的文本文件储存,因此强烈建议你以此字符集储存,尤其是在你的字幕文件同时包含了多种语言的字幕时,此字符集能提供最好的兼容性。) 这也就意谓着,脚本能“手工”使用任何的本文编器编辑,但是当这样做的时候小心请仔细检查语法,当脚本被载入SSA的时候,任何的错误都可能导致不可预期的结果。 3脚本是按.ini文件的样式分成节(sections)书写的。 如果你对 .ini比较熟悉的话你会发现上手是一件很容易的事。当然,ass脚本并不是真正的ini文件,它不能象ini文件一样工作。 4脚本中大多数行都以行描述符(line descriptor)开始。 行描述符表示了这行包含的信息的类别。冒号表示行描述符结束。 5各个字段(information fields)间用“,”隔开。 因此,在角色名称(译者注:即下文中的Dialogue: 行中Name 字段、Actor 字段)和样式名称(译者注:即下文中的Style: 行的Name 字段;Dialogue: 行中Style 字段)中不允许使用逗号。 (在SSA中,软件会阻止你在其中键入逗号。)这同时使得你能很方便的把大块的ssa导入到电子表格软件中,再分栏将信息输出以便用于其他字幕软件。 6SSA不关心记录事件的各行的顺序。 你甚至可以用完全相反的顺序来录入,SSA仍能按正确的顺序来执行这些事件,因此,脚本中的各个事件并不一定都是以时间为序记录的。 7格式错误的行将会被忽略。 SSA会删除所有它不能理解的行,然后在载入脚本后给出一个警告,告诉你总共有多少行被删除了。 8一行的内容不能折行书写。 每一行必须是完整的一行,不能分行书写。 9字幕中没有定义的样式将用默认样式(*Default)代替。</p> <div> <div>相关主题</div> <div class="relatedtopic"> <div id="tabs-section" class="tabs"> <ul class="tab-head"> <li id="23514726"><a href="/topic/23514726/" target="_blank">前端代码规范</a></li> <li id="19083601"><a href="/topic/19083601/" target="_blank">html特效代码大全</a></li> <li id="21645914"><a href="/topic/21645914/" target="_blank">asterisk常用命令</a></li> <li id="22338867"><a href="/topic/22338867/" target="_blank">叶瑞财记忆学代码</a></li> <li id="18474391"><a href="/topic/18474391/" target="_blank">计算机图形学源代码</a></li> <li id="8197957"><a href="/topic/8197957/" target="_blank">html所有代码属性</a></li> </ul> </div> </div> </div> </div> <div class="category"> <h2 class="navname">相关文档</h2> <ul class="lista"> <li><a href="/doc/f319231378.html" target="_blank">前端开发中的代码规范与团队协作技巧</a></li> <li><a href="/doc/5219316434.html" target="_blank">前端开发中的代码规范化指南</a></li> <li><a href="/doc/8d19154589.html" target="_blank">前端开发中的代码规范与代码质量管理方法</a></li> <li><a href="/doc/3019217581.html" target="_blank">前端代码规范考核标准</a></li> <li><a href="/doc/6f18993979.html" target="_blank">前端开发中的代码规范与团队协作指南</a></li> <li><a href="/doc/c519056779.html" target="_blank">前端开发中的代码风格规范</a></li> <li><a href="/doc/f419231379.html" target="_blank">前端开发中的代码规范约定</a></li> <li><a href="/doc/2e19355146.html" target="_blank">前端开发规范与代码质量管理</a></li> <li><a href="/doc/964318148.html" target="_blank">(完整word版)WEB前端开发代码使用要求规范.docx</a></li> <li><a href="/doc/d6974120.html" target="_blank">Web前端考核标准</a></li> <li><a href="/doc/0e14372981.html" target="_blank">Web前端开发规范手册</a></li> <li><a href="/doc/e16144033.html" target="_blank">前端代码规范文档</a></li> <li><a href="/doc/3c8791853.html" target="_blank">前端代码编写规范</a></li> <li><a href="/doc/f612009505.html" target="_blank">前端代码评审规范V1.0</a></li> <li><a href="/doc/755929960.html" target="_blank">前端开发规范</a></li> <li><a href="/doc/a78575084.html" target="_blank">前端开发设计规范 </a></li> <li><a href="/doc/d14850117.html" target="_blank">前端开发设计规范文档</a></li> <li><a href="/doc/232312788.html" target="_blank">web前端开发规范</a></li> <li><a href="/doc/cb15771385.html" target="_blank">前端规范-CSS规范</a></li> <li><a href="/doc/071747484.html" target="_blank">前端规范-HTML规范</a></li> </ul> <h2 class="navname">最新文档</h2> <ul class="lista"> <li><a href="/doc/0919509601.html" target="_blank">幼儿园小班科学《小动物过冬》PPT课件教案</a></li> <li><a href="/doc/0d19509602.html" target="_blank">2021年春新青岛版(五四制)科学四年级下册 20.《露和霜》教学课件</a></li> <li><a href="/doc/9419184372.html" target="_blank">自然教育课件</a></li> <li><a href="/doc/3c19258759.html" target="_blank">小学语文优质课火烧云教材分析及课件</a></li> <li><a href="/doc/d619211938.html" target="_blank">(超详)高中语文知识点归纳汇总</a></li> <li><a href="/doc/a219240639.html" target="_blank">高中语文基础知识点总结(5篇)</a></li> <li><a href="/doc/9e19184371.html" target="_blank">高中语文基础知识点总结(最新)</a></li> <li><a href="/doc/8f19195909.html" target="_blank">高中语文知识点整理总结</a></li> <li><a href="/doc/8619195910.html" target="_blank">高中语文知识点归纳</a></li> <li><a href="/doc/7819336998.html" target="_blank">高中语文基础知识点总结大全</a></li> <li><a href="/doc/7b19336999.html" target="_blank">超详细的高中语文知识点归纳</a></li> <li><a href="/doc/6a19035160.html" target="_blank">高考语文知识点总结高中</a></li> <li><a href="/doc/6719035161.html" target="_blank">高中语文知识点总结归纳</a></li> <li><a href="/doc/4b19232289.html" target="_blank">高中语文知识点整理总结</a></li> <li><a href="/doc/3d19258758.html" target="_blank">高中语文知识点归纳</a></li> <li><a href="/doc/2919396978.html" target="_blank">高中语文知识点归纳(大全)</a></li> <li><a href="/doc/2819396979.html" target="_blank">高中语文知识点总结归纳(汇总8篇)</a></li> <li><a href="/doc/1219338136.html" target="_blank">高中语文基础知识点整理</a></li> <li><a href="/doc/e819066069.html" target="_blank">化工厂应急预案</a></li> <li><a href="/doc/b819159069.html" target="_blank">化工消防应急预案(精选8篇)</a></li> </ul> </div> </div> <script> var sdocid = "f8f3efa5376baf1ffc4fadd9"; </script> <div class="footer"> <p>&copy; 2013-2022 www.sodocs.net &nbsp;<a href="/sitemap.html">站点地图</a>&nbsp;|&nbsp;<a href="/tousu.html" target="_blank">侵权投诉</a></p> <p><a href="https://beian.miit.gov.cn/">闽ICP备11023808号-8</a>&nbsp; 本站资源均为网友上传分享,本站仅负责收集和整理,有任何问题请在对应网页下方投诉通道反馈<script type="text/javascript">tj();</script></p> </div> </div> </body> </html>