版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1.判斷閏年import java.util.Scanner;public class DemoTest /* * param args 此處代碼無實(shí)際意義,可刪除 */ public static
2、 void main(Stringargs) Scanner scan = new Scanner(System.in);/創(chuàng)建輸入流掃描器; System.out.println("請輸入一個(gè)年份:"
3、;);/向控制臺輸出一個(gè)提示信息 long year; try &
4、#160; year = scan.nextLong(); if(year%4 = 0 && year%100!=0 | year%400 = 0)/是閏年
5、 System.out.print(year+"是閏年!");
6、160; else System.out.print(year+"不是閏年!")
7、; catch(Exception e)
8、; System.out.println("你輸入的不是有效的年份"); 2.Socket編
9、程 對于Java Socket編程而言,有兩個(gè)概念,一個(gè)是ServerSocket,一個(gè)是Socket。服務(wù)端和客戶端之間通過Socket建立連接,之后它們就可以進(jìn)行通信了。首先ServerSocket將在服務(wù)端監(jiān)聽某個(gè)端口,當(dāng)發(fā)現(xiàn)客戶端有Socket來試圖連接它時(shí),它會accept該Socket的連接請求,同時(shí)在服務(wù)端建立一個(gè)對應(yīng)的Socket與之進(jìn)行通信。這樣就有兩個(gè)Socket了,客戶端和服務(wù)端各一個(gè)。 對于Socket之間的通信其實(shí)很簡單,服務(wù)
10、端往Socket的輸出流里面寫東西,客戶端就可以通過Socket的輸入流讀取對應(yīng)的內(nèi)容。Socket與Socket之間是雙向連通的,所以客戶端也可以往對應(yīng)的Socket輸出流里面寫東西,然后服務(wù)端對應(yīng)的Socket的輸入流就可以讀出對應(yīng)的內(nèi)容。下面來看一些服務(wù)端與客戶端通信的例子: 1、客戶端寫服務(wù)端讀 服務(wù)端代碼 Java代碼 public class Server
11、; public static void main(String args) throws IOException /為了簡單起見,所有的異常信息都往外拋 int port = 8899; /定義一個(gè)Ser
12、verSocket監(jiān)聽在端口8899上 ServerSocket server = new ServerSocket(port); /server嘗試接收其他Socket的連接請求,server的accept方法是阻塞式的 Socket socket =
13、160;server.accept(); /跟客戶端建立好連接之后,我們就可以獲取socket的InputStream,并從中讀取客戶端發(fā)過來的信息了。 Reader reader = new InputStreamReader(socket.getInputStream();
14、;char chars = new char64; int len; StringBuilder sb = new StringBuilder(); while (len=reader.read(chars)
15、;!= -1) sb.append(new String(chars, 0, len); System.out.println("from client: " + sb
16、); reader.close(); socket.close(); server.close();
17、; 服務(wù)端從Socket的InputStream中讀取數(shù)據(jù)的操作也是阻塞式的,如果從輸入流中沒有讀取到數(shù)據(jù)程序會一直在那里不動,直到客戶端往Socket的輸出流中寫入了數(shù)據(jù),或關(guān)閉了Socket的輸出流。當(dāng)然,對于客戶端的Socket也是同樣如此。在操作完以后,整個(gè)程序結(jié)束前記得關(guān)閉對應(yīng)的資源,即關(guān)閉對應(yīng)的IO流和Socket。 客戶端代碼Java代碼 public class Client
18、60; public static void main(String args) throws Exception /為了簡單起見,所有的異常都直接往外拋 String host = "127.0.0.1" /要連接的服務(wù)端IP地址 &
19、#160; int port = 8899; /要連接的服務(wù)端對應(yīng)的監(jiān)聽端口 /與服務(wù)端建立連接 Socket client = new Socket(host, port);
20、160; /建立連接后就可以往服務(wù)端寫數(shù)據(jù)了 Writer writer = new OutputStreamWriter(client.getOutputStream(); writer.write("Hello Server.");
21、 writer.flush();/寫完后要記得flush writer.close(); client.close(); 對于客戶端往Soc
22、ket的輸出流里面寫數(shù)據(jù)傳遞給服務(wù)端要注意一點(diǎn),如果寫操作之后程序不是對應(yīng)著輸出流的關(guān)閉,而是進(jìn)行其他阻塞式的操作(比如從輸入流里面讀數(shù)據(jù)),記住要flush一下,只有這樣服務(wù)端才能收到客戶端發(fā)送的數(shù)據(jù),否則可能會引起兩邊無限的互相等待。在稍后講到客戶端和服務(wù)端同時(shí)讀和寫的時(shí)候會說到這個(gè)問題。 2、客戶端和服務(wù)端同時(shí)讀和寫 前面已經(jīng)說了Socket之間是雙向通信的,它既可以接收數(shù)據(jù),同時(shí)也可以發(fā)送數(shù)據(jù)。 &
23、#160; 服務(wù)端代碼 Java代碼 public class Server public static void main(String args) throws IOException /為了簡單起見,所有的異常信息都往外拋
24、; int port = 8899; /定義一個(gè)ServerSocket監(jiān)聽在端口8899上 ServerSocket server = new ServerSocket(port); /server嘗試接收其他S
25、ocket的連接請求,server的accept方法是阻塞式的 Socket socket = server.accept(); /跟客戶端建立好連接之后,我們就可以獲取socket的InputStream,并從中讀取客戶端發(fā)過來的信息了。 Reader reader
26、;= new InputStreamReader(socket.getInputStream(); char chars = new char64; int len; StringBuilder sb = new
27、60;StringBuilder(); while (len=reader.read(chars) != -1) sb.append(new String(chars, 0, len);
28、; System.out.println("from client: " + sb); /讀完后寫一句 Writer writer = new OutputStreamWriter(socket.getOutputStream();
29、; writer.write("Hello Client."); writer.flush(); writer.close(); reader.close();
30、; socket.close(); server.close(); 在上述代碼中首先我們從輸入流中讀取客戶端發(fā)送過來的數(shù)據(jù),接下來我們再往輸出流里面寫入數(shù)據(jù)給客戶端,接下來關(guān)閉對應(yīng)的資源文件。而實(shí)際上上述代碼可能并不會按照我們預(yù)
31、先設(shè)想的方式運(yùn)行,因?yàn)閺妮斎肓髦凶x取數(shù)據(jù)是一個(gè)阻塞式操作,在上述的while循環(huán)中當(dāng)讀到數(shù)據(jù)的時(shí)候就會執(zhí)行循環(huán)體,否則就會阻塞,這樣后面的寫操作就永遠(yuǎn)都執(zhí)行不了了。除非客戶端對應(yīng)的Socket關(guān)閉了阻塞才會停止,while循環(huán)也會跳出。針對這種可能永遠(yuǎn)無法執(zhí)行下去的情況的解決方法是while循環(huán)需要在里面有條件的跳出來,縱觀上述代碼,在不斷變化的也只有取到的長度len和讀到的數(shù)據(jù)了,len已經(jīng)是不能用的了,唯一能用的就是讀到的數(shù)據(jù)了。針對這種情況,通常我們都會約定一個(gè)結(jié)束標(biāo)記,當(dāng)客戶端發(fā)送過來的數(shù)據(jù)包含某個(gè)結(jié)束標(biāo)記時(shí)就說明當(dāng)前的數(shù)據(jù)已經(jīng)發(fā)送完畢了,這個(gè)時(shí)候我們就可以進(jìn)行循環(huán)的跳出了。那么改進(jìn)后
32、的代碼會是這個(gè)樣子:Java代碼 public class Server public static void main(String args) throws IOException /為了簡單起見,所有的異常信息都往外拋
33、 int port = 8899; /定義一個(gè)ServerSocket監(jiān)聽在端口8899上 ServerSocket server = new ServerSocket(port); /server嘗試接收其他Socket的連
34、接請求,server的accept方法是阻塞式的 Socket socket = server.accept(); /跟客戶端建立好連接之后,我們就可以獲取socket的InputStream,并從中讀取客戶端發(fā)過來的信息了。 Reader reader =
35、;new InputStreamReader(socket.getInputStream(); char chars = new char64; int len; StringBuilder sb = new Stri
36、ngBuilder(); String temp; int index; while (len=reader.read(chars) != -1) &
37、#160; temp = new String(chars, 0, len); if (index = temp.indexOf("eof") != -1) /遇到eof時(shí)就結(jié)束接收
38、160; sb.append(temp.substring(0, index); break; sb.append(temp);
39、 System.out.println("from client: " + sb); /讀完后寫一句 Writer writer = new Ou
40、tputStreamWriter(socket.getOutputStream(); writer.write("Hello Client."); writer.flush(); writer.close();
41、60; reader.close(); socket.close(); server.close(); 在上述代碼中,當(dāng)服務(wù)端讀取到客戶端發(fā)送的結(jié)束標(biāo)記
42、,即“eof”時(shí)就會結(jié)束數(shù)據(jù)的接收,終止循環(huán),這樣后續(xù)的代碼又可以繼續(xù)進(jìn)行了。 客戶端代碼Java代碼 public class Client public static void main(String args) throws Exception
43、0; /為了簡單起見,所有的異常都直接往外拋 String host = "127.0.0.1" /要連接的服務(wù)端IP地址 int port = 8899; /要連接的服務(wù)端對應(yīng)的監(jiān)聽端口
44、60;/與服務(wù)端建立連接 Socket client = new Socket(host, port); /建立連接后就可以往服務(wù)端寫數(shù)據(jù)了 Writer writer = new OutputStreamWriter(client.getOutput
45、Stream(); writer.write("Hello Server."); writer.flush(); /寫完以后進(jìn)行讀操作 Reader reader = new&
46、#160;InputStreamReader(client.getInputStream(); char chars = new char64; int len; StringBuffer sb = new StringBuff
47、er(); while (len=reader.read(chars) != -1) sb.append(new String(chars, 0, len); &
48、#160; System.out.println("from server: " + sb); writer.close(); reader.close(); client.close();
49、; 在上述代碼中我們先是給服務(wù)端發(fā)送了一段數(shù)據(jù),之后讀取服務(wù)端返回來的數(shù)據(jù),跟之前的服務(wù)端一樣在讀的過程中有可能導(dǎo)致程序一直掛在那里,永遠(yuǎn)跳不出while循環(huán)。這段代碼配合服務(wù)端的第一段代碼就正好讓我們分析服務(wù)端永遠(yuǎn)在那里接收數(shù)據(jù),永遠(yuǎn)跳不出while循環(huán),也就沒有之后的服務(wù)端返回?cái)?shù)據(jù)給客戶端,客戶端也就不可能接收到服務(wù)端返回的數(shù)據(jù)。解決方法如服務(wù)端第二段代碼所示,在客戶端發(fā)送數(shù)據(jù)完
50、畢后,往輸出流里面寫入結(jié)束標(biāo)記告訴服務(wù)端數(shù)據(jù)已經(jīng)發(fā)送完畢了,同樣服務(wù)端返回?cái)?shù)據(jù)完畢后也發(fā)一個(gè)標(biāo)記告訴客戶端。那么修改后的客戶端代碼就應(yīng)該是這個(gè)樣子:Java代碼 public class Client public static void main(String args) throws Exception
51、; /為了簡單起見,所有的異常都直接往外拋 String host = "127.0.0.1" /要連接的服務(wù)端IP地址 int port = 8899; /要連接的服務(wù)端對應(yīng)的監(jiān)聽端口 /與服務(wù)端建立連接&
52、#160; Socket client = new Socket(host, port); /建立連接后就可以往服務(wù)端寫數(shù)據(jù)了 Writer writer = new OutputStreamWriter(client.getOutputStream();
53、0; writer.write("Hello Server."); writer.write("eof"); writer.flush(); /寫完以后進(jìn)行讀操作
54、 Reader reader = new InputStreamReader(client.getInputStream(); char chars = new char64; int len;
55、; StringBuffer sb = new StringBuffer(); String temp; int index; while (len=reader.read(chars) != -1)
56、60; temp = new String(chars, 0, len); if (index = temp.indexOf("eof") != -1)
57、0; sb.append(temp.substring(0, index); break;
58、 sb.append(new String(chars, 0, len); System.out.println("from server: " + sb); writer.close();&
59、#160; reader.close(); client.close(); 我們?nèi)粘J褂玫谋容^多的都是這種客戶端發(fā)送數(shù)據(jù)給服務(wù)端,服務(wù)端接
60、收數(shù)據(jù)后再返回相應(yīng)的結(jié)果給客戶端這種形式。只是客戶端和服務(wù)端之間不再是這種一對一的關(guān)系,而是下面要講到的多個(gè)客戶端對應(yīng)同一個(gè)服務(wù)端的情況。 3、多個(gè)客戶端連接同一個(gè)服務(wù)端 像前面講的兩個(gè)例子都是服務(wù)端接收一個(gè)客戶端的請求之后就結(jié)束了,不能再接收其他客戶端的請求了,這往往是不能滿足我們的要求的。通常我們會這樣做:Java代碼 public class Server
61、 public static void main(String args) throws IOException /為了簡單起見,所有的異常信息都往外拋 int port = 8899; /定義
62、一個(gè)ServerSocket監(jiān)聽在端口8899上 ServerSocket server = new ServerSocket(port); while (true) /server嘗試接收其他Socket的連接請求,server的
63、accept方法是阻塞式的 Socket socket = server.accept(); /跟客戶端建立好連接之后,我們就可以獲取socket的InputStream,并從中讀取客戶端發(fā)過來的信息了。 Reader
64、;reader = new InputStreamReader(socket.getInputStream(); char chars = new char64; int len;
65、0; StringBuilder sb = new StringBuilder(); String temp; int index;
66、60; while (len=reader.read(chars) != -1) temp = new String(chars, 0, len); if
67、 (index = temp.indexOf("eof") != -1) /遇到eof時(shí)就結(jié)束接收 sb.append(temp.substring(0, index);
68、60; break; sb.append(temp);
69、; System.out.println("from client: " + sb); /讀完后寫一句 Writer writer = new&
70、#160;OutputStreamWriter(socket.getOutputStream(); writer.write("Hello Client."); writer.flush();
71、; writer.close(); reader.close(); socket.close();
72、160; 在上面代碼中我們用了一個(gè)死循環(huán),在循環(huán)體里面ServerSocket調(diào)用其accept方法試圖接收來自客戶端的連接請求。當(dāng)沒有接收到請求的時(shí)候,程序會在這里阻塞直到接收到來自客戶端的連接請求,之后會跟當(dāng)前建立好連接的客戶端進(jìn)行通信,完了后會接著執(zhí)行循環(huán)體再次嘗試接收新的連接請求。這樣我們的ServerSocket就能接收來自所有客戶端的連接請求了,并且與它們進(jìn)行通信了。這就實(shí)現(xiàn)了一個(gè)簡單的一個(gè)服務(wù)端與多個(gè)客戶端進(jìn)行通信的模式。
73、60; 上述例子中雖然實(shí)現(xiàn)了一個(gè)服務(wù)端跟多個(gè)客戶端進(jìn)行通信,但是還存在一個(gè)問題。在上述例子中,我們的服務(wù)端處理客戶端的連接請求是同步進(jìn)行的,每次接收到來自客戶端的連接請求后,都要先跟當(dāng)前的客戶端通信完之后才能再處理下一個(gè)連接請求。這在并發(fā)比較多的情況下會嚴(yán)重影響程序的性能,為此,我們可以把它改為如下這種異步處理與客戶端通信的方式:Java代碼 public class Server public static
74、160;void main(String args) throws IOException /為了簡單起見,所有的異常信息都往外拋 int port = 8899; /定義一個(gè)ServerSocket監(jiān)聽在端口8899上
75、160; ServerSocket server = new ServerSocket(port); while (true) /server嘗試接收其他Socket的連接請求,server的accept方法是阻塞式的 &
76、#160; Socket socket = server.accept(); /每接收到一個(gè)Socket就建立一個(gè)新的線程來處理它 new Thread(new Task(socket).start();
77、160; /* * 用來處理Socket請求的 */ static class Task implements Runnable
78、; private Socket socket; public Task(Socket socket)
79、60;this.socket = socket; public void run() try
80、160; handleSocket(); catch (Exception e)
81、e.printStackTrace(); /* * 跟客戶端Socket進(jìn)行通
82、信 * throws Exception */ private void handleSocket() throws Exception &
83、#160; Reader reader = new InputStreamReader(socket.getInputStream(); char chars = new char64; int len;
84、 StringBuilder sb = new StringBuilder(); String temp; int index;
85、; while (len=reader.read(chars) != -1) temp = new String(chars, 0, len);
86、0; if (index = temp.indexOf("eof") != -1) /遇到eof時(shí)就結(jié)束接收 sb.append(temp.substring(0, index);
87、; break; sb.append(temp); &
88、#160; System.out.println("from client: " + sb); /讀完后寫一句 Writer writer =
89、new OutputStreamWriter(socket.getOutputStream(); writer.write("Hello Client."); writer.flush(); &
90、#160; writer.close(); reader.close(); socket.close();
91、0; 在上面代碼中,每次ServerSocket接收到一個(gè)新的Socket連接請求后都會新起一個(gè)線程來跟當(dāng)前Socket進(jìn)行通信,這樣就達(dá)到了異步處理與客戶端Socket進(jìn)行通信的情況。 在從Socket的InputStream中接收數(shù)據(jù)時(shí),像上面那樣一點(diǎn)點(diǎn)的讀就太復(fù)雜了,有時(shí)候我們就會換成使用BufferedR
92、eader來一次讀一行,如:Java代碼 public class Server public static void main(String args) throws IOException /為了簡單起見,所有的異常信息都往外拋
93、160; int port = 8899; /定義一個(gè)ServerSocket監(jiān)聽在端口8899上 ServerSocket server = new ServerSocket(port); while (true)
94、 /server嘗試接收其他Socket的連接請求,server的accept方法是阻塞式的 Socket socket = server.accept(); /每接收到一個(gè)Socket就建立
95、一個(gè)新的線程來處理它 new Thread(new Task(socket).start(); /* * 用
96、來處理Socket請求的 */ static class Task implements Runnable private Socket socket;
97、; public Task(Socket socket) this.socket = socket;
98、0; public void run() try handleSocket(); catch (E
99、xception e) e.printStackTrace();
100、 /* * 跟客戶端Socket進(jìn)行通信 * throws Exception */ private void ha
101、ndleSocket() throws Exception BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(); StringBuilder
102、 sb = new StringBuilder(); String temp; int index; while (temp=br.read
103、Line() != null) System.out.println(temp); if (index = temp.indexOf("eof") != -1)
104、60;/遇到eof時(shí)就結(jié)束接收 sb.append(temp.substring(0, index); break;
105、; sb.append(temp); System.out.println("
106、from client: " + sb); /讀完后寫一句 Writer writer = new OutputStreamWriter(socket.getOutputStream(); &
107、#160; writer.write("Hello Client."); writer.write("eofn"); writer.flush();
108、 writer.close(); br.close(); socket.close(); &
109、#160; 這個(gè)時(shí)候需要注意的是,BufferedReader的readLine方法是一次讀一行的,這個(gè)方法是阻塞的,直到它讀到了一行數(shù)據(jù)為止程序才會繼續(xù)往下執(zhí)行,那么readLine什么時(shí)候才會讀到一行呢?直到程序遇到了換行符或者是對應(yīng)流的結(jié)束符readLine方法才會認(rèn)為讀到了一行,才會結(jié)束其阻塞,讓程序繼續(xù)往下執(zhí)行。所以我們在使用BufferedReader的readLine讀取數(shù)據(jù)的時(shí)候一定要記得在對應(yīng)的輸出流里面一定要寫入換行符(流結(jié)束之后會自動標(biāo)記為結(jié)束,readLine可以識別),寫入換行符之后一定記得如果輸出流不是馬上關(guān)閉的情況下記
110、得flush一下,這樣數(shù)據(jù)才會真正的從緩沖區(qū)里面寫入。對應(yīng)上面的代碼我們的客戶端程序應(yīng)該這樣寫:Java代碼 public class Client public static void main(String args) throws Exception /為了簡單起見,所有的異常都直接往外拋
111、 String host = "127.0.0.1" /要連接的服務(wù)端IP地址 int port = 8899; /要連接的服務(wù)端對應(yīng)的監(jiān)聽端口 /與服務(wù)端建立連接
112、60; Socket client = new Socket(host, port); /建立連接后就可以往服務(wù)端寫數(shù)據(jù)了 Writer writer = new OutputStreamWriter(client.getOutputStream();
113、 writer.write("Hello Server."); writer.write("eofn"); writer.flush(); /寫完以后進(jìn)行讀操作 B
114、ufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream(); StringBuffer sb = new StringBuffer(); String temp;
115、60; int index; while (temp=br.readLine() != null) if (index = temp.indexOf("eof") != -1)
116、0; sb.append(temp.substring(0, index); break;
117、 sb.append(temp); System.out.println("from server: " + sb); writer.close();
118、 br.close(); client.close(); 4、設(shè)置超時(shí)時(shí)間 假設(shè)有這樣一種需求,我們的客戶端需要通過Socket從服務(wù)端獲取到XX信息,然后給用戶展示在頁面上。我們知道Socket在讀數(shù)據(jù)的時(shí)候是阻塞式的
119、,如果沒有讀到數(shù)據(jù)程序會一直阻塞在那里。在同步請求的時(shí)候我們肯定是不能允許這樣的情況發(fā)生的,這就需要我們在請求達(dá)到一定的時(shí)間后控制阻塞的中斷,讓程序得以繼續(xù)運(yùn)行。Socket為我們提供了一個(gè)setSoTimeout()方法來設(shè)置接收數(shù)據(jù)的超時(shí)時(shí)間,單位是毫秒。當(dāng)設(shè)置的超時(shí)時(shí)間大于0,并且超過了這一時(shí)間Socket還沒有接收到返回的數(shù)據(jù)的話,Socket就會拋出一個(gè)SocketTimeoutException。 假設(shè)我們需要控制我們的客戶端在開始讀取數(shù)據(jù)10秒后還沒有讀到數(shù)據(jù)就中斷阻塞的話我們可以這樣做: Java
120、代碼 public class Client public static void main(String args) throws Exception /為了簡單起見,所有的異常都直接往外拋 String
121、0;host = "127.0.0.1" /要連接的服務(wù)端IP地址 int port = 8899; /要連接的服務(wù)端對應(yīng)的監(jiān)聽端口 /與服務(wù)端建立連接 Socket client = new
122、60;Socket(host, port); /建立連接后就可以往服務(wù)端寫數(shù)據(jù)了 Writer writer = new OutputStreamWriter(client.getOutputStream(); writer.write("Hello Serv
123、er."); writer.write("eofn"); writer.flush(); /寫完以后進(jìn)行讀操作 BufferedReader br = new Buf
124、feredReader(new InputStreamReader(client.getInputStream(); /設(shè)置超時(shí)間為10秒 client.setSoTimeout(10*1000); StringBuffer sb = new StringBuffer();
125、60; String temp; int index; try while (temp=br.readLine() != null)
126、60; if (index = temp.indexOf("eof") != -1) sb.append(temp.substring(0
127、, index); break; sb.a
128、ppend(temp); catch (SocketTimeoutException e) System.out.println("數(shù)據(jù)讀取超時(shí)。");
129、160; System.out.println("from server: " + sb); writer.close(); br.close(); &
130、#160; client.close(); 5、接收數(shù)據(jù)亂碼 對于這種服務(wù)端或客戶端接收中文亂碼的情況通常是因?yàn)閿?shù)據(jù)發(fā)送時(shí)使用的編碼跟接收時(shí)候使用的編碼不一致。比如有下面這樣一段服務(wù)端代碼:Java代碼 public class Server
131、60; public static void main(String args) throws IOException /為了簡單起見,所有的異常信息都往外拋 int port = 8899;
132、 /定義一個(gè)ServerSocket監(jiān)聽在端口8899上 ServerSocket server = new ServerSocket(port); while (true) /serv
133、er嘗試接收其他Socket的連接請求,server的accept方法是阻塞式的 Socket socket = server.accept(); /每接收到一個(gè)Socket就建立一個(gè)新的線程來處理它 &
134、#160; new Thread(new Task(socket).start(); /* * 用來處理Socket請求的 */
135、60; static class Task implements Runnable private Socket socket; public Task(Socket socke
136、t) this.socket = socket; public void run() try
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- NB/T 11523-2024煤礦用5G通信基站
- JJG 1095-2024環(huán)境噪聲自動監(jiān)測儀檢定規(guī)程
- 八年級地理歷年考題
- 考點(diǎn)09 二次函數(shù)應(yīng)用(解析版)
- 2024秋四年級語文上冊 第八單元 第25課 王戎不取道旁李教案 新人教版
- 2024秋七年級英語上冊 Unit 5 Family and Home Lesson 25 Jenny's Family教學(xué)設(shè)計(jì) (新版)冀教版
- 2024在訂立家居裝修合同時(shí)需要注意些問題
- 2024秋九年級化學(xué)上冊 第三單元 物質(zhì)構(gòu)成的奧秘 課題3 元素第1課時(shí) 元素教學(xué)設(shè)計(jì)(新版)新人教版
- 2024秋八年級物理上冊 第4章 物質(zhì)形態(tài)及其變化 4.4 升華和凝華教學(xué)設(shè)計(jì)(新版)粵教滬版
- 2024年學(xué)年八年級語文上冊 第一單元 愛在人間 第1課《笑》教案2 滬教版五四制
- 術(shù)前訪視課件
- 汕頭大學(xué)開題報(bào)告模板
- 德安舊城改造計(jì)劃書
- 管理的基本知識課件
- 部隊(duì)涉槍涉彈安全教育課件
- 一本書讀懂5G技術(shù)
- 計(jì)算機(jī)程序與程序設(shè)計(jì)語言教學(xué)課件
- 《護(hù)理應(yīng)急小組》課件
- 員工社團(tuán)組建方案
- 防坍塌事故安全培訓(xùn)內(nèi)容
- 充電樁運(yùn)維安全培訓(xùn)內(nèi)容
評論
0/150
提交評論