版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 下載leach協(xié)議包。包含 mit.tar.gz就夠了。2 解壓mit.tar.gz到leach文件夾(這名字自擬)3 解壓出來(lái)的文件夾有個(gè)mit,復(fù)制到/ns2.35/目錄下先說(shuō)一下,關(guān)于#def MIT_uAMPS 是添加在Makefile中定義的,如果去掉重新編譯ns,leach這些修改的部分就不會(huì)生效了。4 一下都是一個(gè)一個(gè)文件打開(kāi),看看有“#ifdef MIT_uAMPS #endif“這樣的部分,就貼到ns2.35下的同名文件同樣位置中去。(1) app.cApplication:Application() : enableRecv_(0), enableResume_(0)#
2、ifdef MIT_uAMPS enableRecv_ = 1;#endif#ifdef MIT_uAMPSvoid Application:recv(int link_dst, int data_size, char* meta_data, int sender) if (! enableRecv_) return; Tcl& tcl = Tcl:instance(); tcl.evalf("%s recv %d %d %d %s", name_, link_dst, sender, data_size, meta_data);void Application:r
3、ecv(char* ch_index) if (! enableRecv_) return; Tcl& tcl = Tcl:instance(); tcl.evalf("%s recv %s", name_, ch_index);#endif(2)app.h#ifdef MIT_uAMPS virtual void recv(int sendto, int data_size, char* meta_data, int sender); virtual void recv(char* ch_index);#endif(3)mobilenode.cc#ifdef MI
4、T_uAMPS#if 0 sprintf(log_target->buffer(), "M %.5f %d (%.2f, %.2f, %.2f), (%.2f, %.2f), %.2f", s.clock(), index_, X, Y, Z, destX, destY, speed); log_target->dump();#endif#endif(4)packet.cc#ifdef MIT_uAMPSint hdr_rca:offset_; / static offset of rca header#endif#ifdef MIT_uAMPSclass RC
5、AHeaderClass : public PacketHeaderClass public: RCAHeaderClass() : PacketHeaderClass("PacketHeader/RCA", sizeof(hdr_rca) bind_offset(&hdr_rca:offset_); class_rcahdr;#endif(5)packet.h#ifdef MIT_uAMPS#define HDR_RCA(p) (struct hdr_rca*)(p)->access(hdr_rca:offset_)#define HDR_MACSensor
6、(p) (struct hdr_macSensor*)(p)->access(hdr_mac:offset_)#endif#ifdef MIT_uAMPS PT_RCA,#endif這一段,在2.35中已不是如此定義,改成:#ifdef MIT_uAMPSstatic const packet_t PT_RCA = 74#endif貼過(guò)去。74是我的情況,原來(lái)PT_NTYPE = 74,加入這個(gè)之后,RCA = 74 ,NTYPE改成75。因?yàn)镹TYPE必須是最后一個(gè)。#ifdef MIT_uAMPS name_PT_RCA = "rca"#endif#ifdef M
7、IT_uAMPS static void PrintRcHeader(Packet *p, char *layer);#endif#ifdef MIT_uAMPSstruct hdr_rca int msg_type_; char meta_1000; int meta_size_; float dist_to_dest_; int dist_est_; int rca_src_; int rca_mac_dst_; int rca_link_dst_; int code_; static int offset_; / offset for this header inline static
8、int& offset() return offset_; inline static hdr_rca* access(Packet* p) return (hdr_rca*) p->access(offset_); /* per-field member functions */ inline int& msg_type() return (msg_type_); inline int& meta_size() return (meta_size_); inline float& get_dist() return (dist_to_dest_); in
9、line int& dist_est() return (dist_est_); inline void set_meta(const char* data) meta_size_ = strlen(data); if (meta_size_ > maxmetasize() printf("Error: Meta size %d too large (max = %d).n", meta_size_, maxmetasize(); exit(1); memcpy(meta_, data, meta_size_+1); inline char* const me
10、ta() return (meta_); inline int maxmetasize() return (sizeof(meta_); inline int& rca_src() return (rca_src_); inline int& rca_mac_dst() return (rca_mac_dst_); inline int& rca_link_dst() return (rca_link_dst_); inline int& get_code() return (code_); ;#endif#ifdef MIT_uAMPS hdr_rca* rc
11、a_hdr = HDR_RCA(p); rca_hdr->meta_size_ = 0;#endif#ifdef MIT_uAMPSinline void Packet:PrintRcHeader(Packet *p, char *layer) hdr_cmn *hdr = HDR_CMN(p); hdr_rca *rca_hdr = HDR_RCA(p); printf("%s Layer received: Type=%d data_size=%dntMeta = %sntSource = %xntTarget = %xntLink_target = %xn",l
12、ayer,rca_hdr->msg_type(), hdr->size(), rca_hdr->meta(),rca_hdr->rca_src(), rca_hdr->rca_mac_dst(), rca_hdr->rca_link_dst();#endif#ifdef MIT_uAMPS hdr_rca* ch = HDR_RCA(this); hdr_rca* new_ch = HDR_RCA(p); if (ch->meta_size_) new_ch->meta_size_ = ch->meta_size_; memcpy(new_
13、ch->meta_, ch->meta_, ch->meta_size_+1); #endif(6)channel.cc#ifdef MIT_uAMPS /* * When nodes are dead (e.g., they have run out of energy), * they must be removed from the network. */ else if(strcmp(argv1, "removeif") = 0) (Phy*) obj)->deletechnl(&ifhead_); return TCL_OK; #e
14、ndif(7)ll.h#ifdef MIT_uAMPS public:#endif#ifdef MIT_uAMPS double mindelay_;#endif(8)mac.cc#ifdef MIT_uAMPS bind("bandwidth_", &bandwidth_);#endif(9)mac-sensor.cc, mac-sensor.h, mac-sensor-timers.cc, mac-sensor-timers.h直接復(fù)制過(guò)去。(10)phy.cc#ifdef MIT_uAMPS /* Keep track of when transmission
15、 ends for carrier sense. */ /* Since CDMA can be used with CSMA, need to keep track of when transmissions from each CDMA code will end. */ cs_end_ = new double1000; for (int i=0; i<1000; i+) cs_end_i = 0;#endif(11)phy.h#ifdef MIT_uAMPS inline void deletechnl(struct if_head *head) LIST_REMOVE(this
16、, chnl_link_); /delete channel_; #endif#ifdef MIT_uAMPS double *cs_end_; / time when carrier sence will end per codepublic: inline double csEnd(int code) return cs_end_code; #endif(12)wireless-phy.cc#ifdef MIT_uAMPS alive_ = 1; / 0 = dead, 1 = alive bandwidth_ = 1000000; / 100 Mbps Efriss_amp_ = 100
17、 * 1e-12; / Friss amp energy (J/bit/m2) Etwo_ray_amp_ = 0.013 * 1e-12; / Two-ray amp energy (J/bit/m4) EXcvr_ = 50 * 1e-9; / Xcvr energy (J/bit) / Use this base threshold to get a "hearing radius" of 1 m Pfriss_amp_ = Efriss_amp_ * bandwidth_; / Friss power (W/m2) Ptwo_ray_amp_ = Etwo_ray_
18、amp_ * bandwidth_; / Two-ray power (W/m4) PXcvr_ = EXcvr_ * bandwidth_; / Xcvr power (W) sleep_ = 0; / 0 = awake, 1 = asleep ss_ = 1; / amount of spreading time_finish_rcv_ = 0; dist_ = 0; / approx. distance to transmitter energy_ = 0; #else bandwidth_ = 2*1e6; / 2 Mb Pt_ = pow(10, 2.45) * 1e-3; / 2
19、4.5 dbm, 281.8mw#endif #ifdef MIT_uAMPS /* * Set CSThresh_ for receiver sensitivity and RXThresh_ for required SNR. */ CSThresh_ = 1e-10; RXThresh_ = 6e-9;#else CSThresh_ = 1.559e-11; RXThresh_ = 3.652e-10;#endif#ifdef MIT_uAMPS bind("alive_",&alive_); bind("bandwidth_",&
20、bandwidth_); bind("Efriss_amp_", &Efriss_amp_); bind("Etwo_ray_amp_", &Etwo_ray_amp_); bind("EXcvr_", &EXcvr_); bind("sleep_",&sleep_); bind("ss_",&ss_); bind("dist_",&dist_);#endif#ifdef MIT_uAMPS else if (strcasecm
21、p(argv1, "attach-energy") = 0) energy_ = (EnergyResource*) obj; return TCL_OK; #endif#ifdef MIT_uAMPS /* * The power for transmission depends on the distance between * the transmitter and the receiver. If this distance is * less than the crossover distance: * (c_d)2 = 16 * PI2 * L * hr2 *
22、ht2 * - * lambda2 * the power falls off using the Friss equation. Otherwise, the * power falls off using the two-ray ground reflection model. * Therefore, the power for transmission of a bit is: * Pt = Pfriss_amp_*d2 if d < c_d * Pt = Ptwo_ray_amp_*d4 if d >= c_d. * The total power dissipated
23、per bit is PXcvr_ + Pt. */ hdr_cmn *ch = HDR_CMN(p); hdr_rca *rca_hdr = HDR_RCA(p); double d = rca_hdr->get_dist(); double hr, ht; / height of recv and xmit antennas double tX, tY, tZ; / transmitter location node_->getLoc(&tX, &tY, &tZ); ht = tZ + ant_->getZ(); hr = ht; / assume
24、 receiving node and antenna at same height double crossover_dist = sqrt(16 * PI * PI * L_ * ht * ht * hr * hr) / (lambda_ * lambda_); if (d < crossover_dist) if (d > 1) Pt_ = Efriss_amp_ * bandwidth_ * d * d; else / Pfriss_amp_ is the minimum transmit amplifier power. Pt_ = Efriss_amp_ * bandw
25、idth_; else Pt_ = Etwo_ray_amp_ * bandwidth_ * d * d * d * d; PXcvr_ = EXcvr_ * bandwidth_; if (energy_) if (energy_->remove(pktEnergy(Pt_, PXcvr_, ch->size() != 0) alive_ = 0; #endif#ifdef MIT_uAMPS hdr_cmn *ch = HDR_CMN(p); hdr_rca *rca_hdr = HDR_RCA(p); /* * Record when this packet ends and
26、 its code. */ int code = rca_hdr->get_code(); cs_end_code = Scheduler:instance().clock() + txtime(p); /* * If the node is asleep, drop the packet. */ if (sleep_) /printf("Sleeping node. carrier sense ends at %fn", cs_end_); /fflush(stdout); pkt_recvd = 0; goto DONE; #endif #ifdef MIT_uA
27、MPS /* * Only remove energy from nodes that are awake and not currently * transmitting a packet. */ if (Scheduler:instance().clock() >= time_finish_rcv_) PXcvr_ = EXcvr_ * bandwidth_; if (energy_) if (energy_->remove(pktEnergy(double)0, PXcvr_,ch->size() != 0) alive_ = 0; time_finish_rcv_ =
28、 Scheduler:instance().clock() + txtime(p); /* * Determine approximate distance of node transmitting node * from received power. */ double hr, ht; / height of recv and xmit antennas double rX, rY, rZ; / receiver location double d1, d2; double crossover_dist, Pt, M; node_->getLoc(&rX, &rY,
29、&rZ); hr = rZ + ant_->getZ(); ht = hr; / assume transmitting node antenna at same height crossover_dist = sqrt(16 * PI * PI * L_ * ht * ht * hr * hr) / (lambda_ * lambda_); Pt = p->txinfo_.getTxPr(); M = lambda_ / (4 * PI); d1 = sqrt( (Pt * M * M) / (L_ * Pr) ); d2 = sqrt(sqrt( (Pt * hr *
30、hr * ht * ht) / Pr) ); if (d1 < crossover_dist) dist_ = d1; else dist_ = d2; rca_hdr->dist_est() = (int) ceil(dist_);#endif#ifdef MIT_uAMPSdoubleWirelessPhy:pktEnergy(double pt, double pxcvr, int nbytes) /* * Energy (in Joules) is power (in Watts=Joules/sec) divided by * bandwidth (in bits/sec
31、) multiplied by the number of bytes, times 8 bits. */ / If data has been spread, power per DATA bit should be the same / as if there was no spreading => divide transmit power / by spreading factor. double bits = (double) nbytes * 8; pt /= ss_; double j = bits * (pt + pxcvr) / bandwidth_; return(j
32、);#endif在712原來(lái)的/ns-2.35中有雙/,而leach中沒(méi)有,不能刪除/idle_timer_reshched(10.0);(13)wireless-phy.h#ifdef MIT_uAMPS#include <mit/rca/energy.h>#endif#ifdef MIT_uAMPS EnergyResource *energy_; / Energy resource int alive_; / 0 = dead, 1 = alive/endif/ifdef MIT_uAMPS_temp double Efriss_amp_; / Xmit amp energy
33、 (J/bit/m2) double Etwo_ray_amp_; / Xmit amp energy (J/bit/m4) double EXcvr_; / Xcvr energy (J/bit) double Pfriss_amp_; / Friss base transmission power (W/m2) double Ptwo_ray_amp_; / Two-ray base transmission power (W/m4) double PXcvr_; / Xcvr Power (W) int sleep_; / 0 = awake, 1 = asleep int ss_; /
34、 amount of spreading double time_finish_rcv_; double dist_; / approx. distance to transmitterprivate: double pktEnergy(double pt, double pxcvr, int nbytes);#endif把上面這個(gè)的private注釋掉。即為:/ private:還有下面,把第二句前面的/去掉/ Why phy has a node_ and this guy has it all over again?/ MobileNode* node_; / Mobile Node t
35、o which interface is attached .即為MobileNode* node_; / Mobile Node to which interface is attached .(14)<3> mac/wireless-phy.cc(大約235行,238行),wireless-phyExt.cc (大約132行,134行),將代碼中的node_ = (Node *)obj;改為#ifdef MIT_uAMPSnode_ = (MobileNode *)obj;#elsenode_ = (Node *)obj;#endif(15)將ns-allinone-2.34/
36、ns-2.34/tcl/ex目錄下的wireless.tcl重命名為wireless_1.tcl,再將leach/tcl/ex目錄下的wireless.tcl復(fù)制到ns-allinone-2.34/ns-2.34/tcl/ex中(16)將leach/tcl/mobility目錄下的四個(gè)文件復(fù)制到ns-allinone-2.34/ns-2.34/tcl/mobility中(17)cmu-trace.cc#ifdef MIT_uAMPS#include <mit/rca/rcagent.h>#endif#ifdef MIT_uAMPS case PT_RCA: format_rca(p
37、,offset); break;#endif#ifdef MIT_uAMPS case PT_RCA: break;#endif#ifdef MIT_uAMPSvoidCMUTrace:format_rca(Packet *p, int offset) struct hdr_rca *rca_hdr = HDR_RCA(p); char op = (char) type_; switch (rca_hdr->msg_type() case ADV: op = ADV_CHAR; break; case REQ: op = REQ_CHAR; break; case DATA: op =
38、DATA_CHAR; break; default: /printf("format_rca: Warning, unknown meta-data type %dn",rca_hdr->msg_type(); op = (char) type_; break; sprintf(pt_->buffer() + offset, "- %c %d %d %d ", op, rca_hdr->rca_src(), rca_hdr->rca_link_dst(), rca_hdr->rca_mac_dst() ); return;#
39、endif(18) cmu-trace.h#ifdef MIT_uAMPS#define ADV_CHAR 'A'#define REQ_CHAR 'R'#define DATA_CHAR 'D'#endif#ifdef MIT_uAMPS void format_rca(Packet *p, int offset);#endif(19)將leach目錄下的test,leach_test,package_up三個(gè)文件復(fù)制到ns-allinone-2.34/ ns-2.34中(20)修改Makefile 在DEFINE行的最后添加-DMIT_uAM
40、PS 在INCLUDE行的中間添加-I./mit/rca -I./mit/uAMPS 在OBJ_CC 下面代碼中g(shù)af/gaf.o 之前添加mit/rca/energy.o mit/rca/rcagent.o mit/rca/rca-ll.o mit/rca/resource.o mac/mac-sensor-timers.o mac/mac-sensor.o mit/uAMPS/bsagent.o (21)test1.打開(kāi)test文件,將里面的代碼改為(注意紅色部分位置):#!/bin/bashcd tcl/exns wireless-demo-csci694.tclsleep
41、2cd ././ ./leach_test2.修改leach_test在ns tcl/ex/wireless1.t
42、cl 前增加以下語(yǔ)句(第37行)RCA_LIBRARY=mit/rcaexport RCA_LIBRARYuAMPS_LIBRARY=mit/uAMPSexport uAMPS_LIBRARY 3.修改 .bashrcvi bashrc(sudo gedit .bashrc)在最后一行加入export RCA_LIBRARY=$home/doriswang/ns-allinone-2.34/ns-2.34/mit/rcaexport uAMPS_LIBRARY=$home/doriswang/ns-allinone-2.34/ns-2.34/mit/uAMPS 4. mak
43、e clean ; make5 ./test在./test之前,需要先修改下mit/uAMPS/sims下uamps.tcl文件#source $env(RCA_LIBRARY)/ns-ranode.tcl#source $env(uAMPS_LIBRARY)/ns-bsapp.tcl#source $env(uAMPS_LIBRARY)/extras.tcl#source $env(uAMPS_LIBRARY)/stats.tcl#Uncomment these lines to use gdb to debug the c codesource mit/rca/ns-ranode.tcls
44、ource mit/uAMPS/ns-bsapp.tclsource mit/uAMPS/extras.tclsource mit/uAMPS/stats.tcl#source $env(RCA_LIBRARY)/resources/ns-resource-manager.tcl#source $env(RCA_LIBRARY)/resources/ns-energy-resource.tcl#source $env(RCA_LIBRARY)/resources/ns-neighbor-resource.tclsource mit/rca/resources/ns-resource-manag
45、er.tclsource mit/rca/resources/ns-energy-resource.tclsource mit/rca/resources/ns-neighbor-resource.tcl6./test出現(xiàn)warning如下:解決辦法: homeAdministratorns-allinone-2.27ns-2.27tcllibns_default.tcl文件第692行加入7個(gè)初始值如下:Phy/WirelessPhy set alive_ 1Phy/WirelessPhy set Efriss_amp_ 100 * 1e-12Phy/WirelessPhy set Etwo_
46、ray_amp_ 0.013 * 1e-12Phy/WirelessPhy set EXcvr_ 50 * 1e-9Phy/WirelessPhy set sleep_ 0Phy/WirelessPhy set ss_ 1Phy/WirelessPhy set dist_ 0具體的初始值應(yīng)該對(duì)照homeAdministratorns-allinone-2.27ns-2.27macwireless-phy.cc輸入(第95行,第97-99行,第104-105行,第107行)(這里要注意:會(huì)提示code omitted because of length 錯(cuò)誤, 錯(cuò)誤在set Efriss_amp
47、_ 100*1e-12;原因是:不能設(shè)置表達(dá)式,要改成 Efriss_amp_ 1e-10, 同理Etwo_ray_amp_ 0.013 * 1e-12改成Etwo_ray_amp_ 0.013e-12,EXcvr_ 50 * 1e-9改為EXcvr_ 50e-9)這樣修改之后,要重新編譯。即先執(zhí)行make clean,再執(zhí)行make。make成功后,再次運(yùn)行./test,得到第一次的結(jié)果。(22)驗(yàn)證仿真結(jié)束后在mit/leach_sims文件夾下并沒(méi)有我們之前熟悉的tr文件和nam 文件,如何驗(yàn)證是否仿真正確?其實(shí)leach協(xié)議的仿真運(yùn)行過(guò)程在leach.err和leach.out文件都有
48、詳細(xì)的記錄。leach.err文件記錄的是仿真過(guò)程的錯(cuò)誤信息和提示;leach.out文件記錄了數(shù)據(jù)的收發(fā)、簇的變化以及節(jié)點(diǎn)能量消耗等信息。所以只要在leach.err文件里看到如下信息:INITIALIZE THE LIST xListHeadchannel.cc:sendUp - Calc highestAntennaZ_ and distCST_highestAntennaZ_ = 1.5, distCST_ = 222.8SORTING LISTS .DONE!而leach.out文件里如下記錄的話(只貼出文件開(kāi)頭部分),則說(shuō)明leach協(xié)議運(yùn)行正確。num_nodes is set
49、101Creating sensor nodes.0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
50、95 96 97 98 99 (100 = BS)* NOTE: no connection pattern specified.Loading scenario file.Node 0: (65.745973803916002,92.581722416254564)Node 1: (21.008649990432268,92.380389195112684)Node 2: (37.201202259027028,40.606367467253641)Node 3: (71.218022131928251,61.297971318148988)Node 4: (35.0039441301505
51、79,11.288995440718249)Node 5: (34.146372151629237,98.076752432657756)Node 6: (75.978135678906995,64.526355389750734)Node 7: (94.45503554048716,5.7823289678349754)Node 8: (83.602962402441989,14.98909784247591)Node 9: (21.767438492629417,45.338745622587737)Node 10: (8.2976788321033492,59.0881311609820
52、16)Node 11: (94.220422624713009,62.643053551503947)Node 12: (41.80104012684945,50.081411958710021)Node 13: (18.290790039250062,13.30818967582108)Node 14: (70.743881524886874,92.416788773805266)Node 15: (48.968921345178465,20.661048414493468)Node 16: (50.240702391714187,95.485097540302704)Node 17: (18.034359867700545,3.486296443029445)Node 18: (94.184317995879951,55.832556754272687)Node 19: (77.781369061107455,71.469810032970187)Node 20: (93.097224129874832,85.045950806255433)Node 21: (67.295200735002382,30.438753185066748)Node 22: (84.124781416787201,85.201271942444734)Node 23: (7
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度呈現(xiàn)合集【人力資源管理篇】
- 2024年廠年度勞動(dòng)競(jìng)賽的工作總結(jié)
- 《廣告的社會(huì)功能》課件
- 第1單元 中華人民共和國(guó)的成立與鞏固 (B卷·能力提升練)(解析版)
- 《孟子生平簡(jiǎn)介》課件
- 《杜絕校園欺凌》課件
- 超市客服話務(wù)員工作總結(jié)
- 探索生態(tài)之謎
- 2023年項(xiàng)目安全培訓(xùn)考試題(能力提升)
- 2023年項(xiàng)目部治理人員安全培訓(xùn)考試題附完整答案(必刷)
- 檢修工(題庫(kù))附答案
- 2025屆高考語(yǔ)文一輪復(fù)習(xí):小說(shuō)情節(jié)結(jié)構(gòu)之伏筆 練習(xí)題(含答案)
- 《化學(xué)實(shí)驗(yàn)室安全》課程教學(xué)大綱
- 2024年人教版初二地理上冊(cè)期末考試卷(附答案)
- 《一元一次方程》復(fù)習(xí)學(xué)案
- 三甲醫(yī)院面試自我介紹課件
- 單招鐵路基礎(chǔ)知識(shí)題庫(kù)單選題100道及答案解析
- 高低壓供配電設(shè)備檢查和檢修保養(yǎng)合同3篇
- 投資可行性分析財(cái)務(wù)數(shù)據(jù)全套表格
- 2023-2024學(xué)年福建省廈門市八年級(jí)(上)期末物理試卷
- 易查云全球智能貿(mào)易信息查詢平臺(tái)商業(yè)計(jì)劃書(shū)
評(píng)論
0/150
提交評(píng)論