深入分析JavaWeb Item7 -- HttpServletResponse詳解

Web服務器收到客戶端的http請求,會針對每一次請求,分別創建一個用于代表請求的request對象、和代表響應的response對象。request和response對象即然代表請求和響應,那我們要獲取客戶機提交過來的數據,只需要找request對象就行了。要向客戶機輸出數據,只需要找response對象就行了。

一、HttpServletResponse對象介紹

  

  HttpServletResponse對象代表服務器的響應。這個對象中封裝了向客戶端發送數據、發送響應頭,發送響應狀態碼的方法。查看HttpServletResponse的API,可以看到這些相關的方法。

1.1、負責向客戶端(瀏覽器)發送數據的相關方法

  

1.2、負責向客戶端(瀏覽器)發送響應頭的相關方法

  

  

1.3、負責向客戶端(瀏覽器)發送響應狀態碼的相關方法

  

1.4、響應狀態碼的常量

  HttpServletResponse定義了很多狀態碼的常量(具體可以查看Servlet的API),當需要向客戶端發送響應狀態碼時,可以使用這些常量,避免了直接寫數字,常見的狀態碼對應的常量:

  • 狀態碼404對應的常量

  

  • 狀態碼200對應的常量

  

  • 狀態碼500對應的常量

  

二、HttpServletResponse對象常見應用

2.1、使用OutputStream流向客戶端瀏覽器輸出中文數據

使用OutputStream流輸出中文注意問題:

  <font color="red">在服務器端,數據是以哪個碼表輸出的,那么就要控制客戶端瀏覽器以相應的碼表打開,比如:outputStream.write("中國".getBytes("UTF-8"));使用OutputStream流向客戶端瀏覽器輸出中文,以UTF-8的編碼進行輸出,此時就要控制客戶端瀏覽器以UTF-8的編碼打開,否則顯示的時候就會出現中文亂碼,那么在服務器端如何控制客戶端瀏覽器以以UTF-8的編碼顯示數據呢?可以通過設置響應頭控制瀏覽器的行為,例如:response.setHeader("content-type", "text/html;charset=UTF-8");通過設置響應頭控制瀏覽器以UTF-8的編碼顯示數據。</font>

范例:使用OutputStream流向客戶端瀏覽器輸出"中國"這兩個漢字

package gacl.response.study;import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseDemo01 extends HttpServlet { private static final long serialVersionUID = 4312868947607181532L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { outputChineseByOutputStream(response);//使用OutputStream流輸出中文 } /** * 使用OutputStream流輸出中文 * @param request * @param response * @throws IOException */ public void outputChineseByOutputStream(HttpServletResponse response) throws IOException{ /**使用OutputStream輸出中文注意問題: * 在服務器端,數據是以哪個碼表輸出的,那么就要控制客戶端瀏覽器以相應的碼表打開, * 比如:outputStream.write("中國".getBytes("UTF-8"));//使用OutputStream流向客戶端瀏覽器輸出中文,以UTF-8的編碼進行輸出 * 此時就要控制客戶端瀏覽器以UTF-8的編碼打開,否則顯示的時候就會出現中文亂碼,那么在服務器端如何控制客戶端瀏覽器以以UTF-8的編碼顯示數據呢? * 可以通過設置響應頭控制瀏覽器的行為,例如: * response.setHeader("content-type", "text/html;charset=UTF-8");//通過設置響應頭控制瀏覽器以UTF-8的編碼顯示數據 */ String data = "中國"; OutputStream outputStream = response.getOutputStream();//獲取OutputStream輸出流 response.setHeader("content-type", "text/html;charset=UTF-8");//通過設置響應頭控制瀏覽器以UTF-8的編碼顯示數據,如果不加這句話,那么瀏覽器顯示的將是亂碼 /** * data.getBytes()是一個將字符轉換成字節數組的過程,這個過程中一定會去查碼表, * 如果是中文的操作系統環境,默認就是查找查GB2312的碼表, * 將字符轉換成字節數組的過程就是將中文字符轉換成GB2312的碼表上對應的數字 * 比如: "中"在GB2312的碼表上對應的數字是98 * "國"在GB2312的碼表上對應的數字是99 */ /** * getBytes()方法如果不帶參數,那么就會根據操作系統的語言環境來選擇轉換碼表,如果是中文操作系統,那么就使用GB2312的碼表 */ byte[] dataByteArr = data.getBytes("UTF-8");//將字符轉換成字節數組,指定以UTF-8編碼進行轉換 outputStream.write(dataByteArr);//使用OutputStream流向客戶端輸出字節數組 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

運行結果如下:

  

  客戶端瀏覽器接收到數據后,就按照響應頭上設置的字符編碼來解析數據,如下所示:

  

2.2、使用PrintWriter流向客戶端瀏覽器輸出中文數據

使用PrintWriter流輸出中文注意問題:

  <font color="red"> 在獲取PrintWriter輸出流之前首先使用"response.setCharacterEncoding(charset)"設置字符以什么樣的編碼輸出到瀏覽器,如:response.setCharacterEncoding("UTF-8");設置將字符以"UTF-8"編碼輸出到客戶端瀏覽器,然后再使用response.getWriter();獲取PrintWriter輸出流</font>. 這兩個步驟不能顛倒,如下:

 response.setCharacterEncoding("UTF-8");//設置將字符以"UTF-8"編碼輸出到客戶端瀏覽器
/*** PrintWriter out = response.getWriter();這句代碼必須放在response.setCharacterEncoding("UTF-8");之后 * 否則response.setCharacterEncoding("UTF-8")這行代碼的設置將無效,瀏覽器顯示的時候還是亂碼 */ PrintWriter out = response.getWriter();//獲取PrintWriter輸出流

  然后再使用response.setHeader("content-type", "text/html;charset=字符編碼");設置響應頭,控制瀏覽器以指定的字符編碼編碼進行顯示,例如:

//通過設置響應頭控制瀏覽器以UTF-8的編碼顯示數據,如果不加這句話,那么瀏覽器顯示的將是亂碼response.setHeader("content-type", "text/html;charset=UTF-8");

上述兩步可以合成一步完成:

response.setContentType("text/html; charset=UTF-8");

  除了可以使用response.setHeader("content-type", "text/html;charset=字符編碼");設置響應頭來控制瀏覽器以指定的字符編碼編碼進行顯示這種方式之外,還可以用如下的方式來模擬響應頭的作用.

 /*** 多學一招:使用HTML語言里面的<meta>標簽來控制瀏覽器行為,模擬通過設置響應頭控制瀏覽器行為*response.getWriter().write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'/>"); * 等同于response.setHeader("content-type", "text/html;charset=UTF-8"); */ response.getWriter().write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'/>");

范例:使用PrintWriter流向客戶端瀏覽器輸出"中國"這兩個漢字

package gacl.response.study;import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseDemo01 extends HttpServlet { private static final long serialVersionUID = 4312868947607181532L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { outputChineseByPrintWriter(response);//使用PrintWriter流輸出中文 } /** * 使用PrintWriter流輸出中文 * @param request * @param response * @throws IOException */ public void outputChineseByPrintWriter(HttpServletResponse response) throws IOException{ String data = "中國"; //通過設置響應頭控制瀏覽器以UTF-8的編碼顯示數據,如果不加這句話,那么瀏覽器顯示的將是亂碼 //response.setHeader("content-type", "text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8");//設置將字符以"UTF-8"編碼輸出到客戶端瀏覽器 /** * PrintWriter out = response.getWriter();這句代碼必須放在response.setCharacterEncoding("UTF-8");之后 * 否則response.setCharacterEncoding("UTF-8")這行代碼的設置將無效,瀏覽器顯示的時候還是亂碼 */ PrintWriter out = response.getWriter();//獲取PrintWriter輸出流 /** * 多學一招:使用HTML語言里面的<meta>標簽來控制瀏覽器行為,模擬通過設置響應頭控制瀏覽器行為 * out.write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'/>"); * 等同于response.setHeader("content-type", "text/html;charset=UTF-8"); */ out.write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'/>"); out.write(data);//使用PrintWriter流向客戶端輸出字符 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

  當需要向瀏覽器輸出字符數據時,使用PrintWriter比較方便,省去了將字符轉換成字節數組那一步。

2.3、使用OutputStream或者PrintWriter向客戶端瀏覽器輸出數字

比如有如下的代碼:

package gacl.response.study;import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseDemo01 extends HttpServlet { private static final long serialVersionUID = 4312868947607181532L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { outputOneByOutputStream(response);//使用OutputStream輸出1到客戶端瀏覽器 } /** * 使用OutputStream流輸出數字1 * @param request * @param response * @throws IOException */ public void outputOneByOutputStream(HttpServletResponse response) throws IOException{ response.setHeader("content-type", "text/html;charset=UTF-8"); OutputStream outputStream = response.getOutputStream(); outputStream.write("使用OutputStream流輸出數字1:".getBytes("UTF-8")); outputStream.write(1); } }

  運行上面代碼顯示的結果如下:

  

  運行的結果和我們想象中的不一樣,數字1沒有輸出來,下面我們修改一下上面的outputOneByOutputStream方法的代碼,修改后的代碼如下:

/*** 使用OutputStream流輸出數字1* @param request* @param response* @throws IOException */public void outputOneByOutputStream(HttpServletResponse response) throws IOException{ response.setHeader("content-type", "text/html;charset=UTF-8"); OutputStream outputStream = response.getOutputStream(); outputStream.write("使用OutputStream流輸出數字1:".getBytes("UTF-8")); //outputStream.write(1); outputStream.write((1+"").getBytes()); }

  1+""這一步是將數字1和一個空字符串相加,這樣處理之后,數字1就變成了字符串1了,然后再將字符串1轉換成字節數組使用OutputStream進行輸出,此時看到的結果如下:

  

  這次可以看到輸出來的1了,這說明了一個問題:在開發過程中,如果希望服務器輸出什么瀏覽器就能看到什么,那么在服務器端都要以字符串的形式進行輸出。

  如果使用PrintWriter流輸出數字,那么也要先將數字轉換成字符串后再輸出,如下:

/*** 使用PrintWriter流輸出數字1* @param request* @param response* @throws IOException */public void outputOneByPrintWriter(HttpServletResponse response) throws IOException{ response.setHeader("content-type", "text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter();//獲取PrintWriter輸出流 out.write("使用PrintWriter流輸出數字1:"); out.write(1+""); }

2.4、文件下載

  文件下載功能是web開發中經常使用到的功能,使用HttpServletResponse對象就可以實現文件的下載

文件下載功能的實現思路:

  1.獲取要下載的文件的絕對路徑

  2.獲取要下載的文件名

  3.設置content-disposition響應頭控制瀏覽器以下載的形式打開文件

  4.獲取要下載的文件輸入流

  5.創建數據緩沖區

  6.通過response對象獲取OutputStream流

  7.將FileInputStream流寫入到buffer緩沖區

  8.使用OutputStream將緩沖區的數據輸出到客戶端瀏覽器

范例:使用Response實現文件下載

package gacl.response.study;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author gacl * 文件下載 */ public class ResponseDemo02 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { downloadFileByOutputStream(response);//下載文件,通過OutputStream流 } /** * 下載文件,通過OutputStream流 * @param response * @throws FileNotFoundException * @throws IOException */ private void downloadFileByOutputStream(HttpServletResponse response) throws FileNotFoundException, IOException { //1.獲取要下載的文件的絕對路徑 String realPath = this.getServletContext().getRealPath("/download/1.JPG"); //2.獲取要下載的文件名 String fileName = realPath.substring(realPath.lastIndexOf("\\")+1); //3.設置content-disposition響應頭控制瀏覽器以下載的形式打開文件 response.setHeader("content-disposition", "attachment;filename="+fileName); //4.獲取要下載的文件輸入流 InputStream in = new FileInputStream(realPath); int len = 0; //5.創建數據緩沖區 byte[] buffer = new byte[1024]; //6.通過response對象獲取OutputStream流 OutputStream out = response.getOutputStream(); //7.將FileInputStream流寫入到buffer緩沖區 while ((len = in.read(buffer)) > 0) { //8.使用OutputStream將緩沖區的數據輸出到客戶端瀏覽器 out.write(buffer,0,len); } in.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

運行結果如下所示:

  

范例:使用Response實現中文文件下載

  下載中文文件時,需要注意的地方就是中文文件名要使用URLEncoder.encode方法進行編碼(URLEncoder.encode(fileName, "字符編碼")),否則會出現文件名亂碼。

package gacl.response.study;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author gacl * 文件下載 */ public class ResponseDemo02 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { downloadChineseFileByOutputStream(response);//下載中文文件 } /** * 下載中文文件,中文文件下載時,文件名要經過URL編碼,否則會出現文件名亂碼 * @param response * @throws FileNotFoundException * @throws IOException */ private void downloadChineseFileByOutputStream(HttpServletResponse response) throws FileNotFoundException, IOException { String realPath = this.getServletContext().getRealPath("/download/張家界國家森林公園.JPG");//獲取要下載的文件的絕對路徑 String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);//獲取要下載的文件名 //設置content-disposition響應頭控制瀏覽器以下載的形式打開文件,中文文件名要使用URLEncoder.encode方法進行編碼,否則會出現文件名亂碼 response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8")); InputStream in = new FileInputStream(realPath);//獲取文件輸入流 int len = 0; byte[] buffer = new byte[1024]; OutputStream out = response.getOutputStream(); while ((len = in.read(buffer)) > 0) { out.write(buffer,0,len);//將緩沖區的數據輸出到客戶端瀏覽器 } in.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

運行結果如下所示:

  

  文件下載注意事項:編寫文件下載功能時推薦使用OutputStream流,避免使用PrintWriter流,因為OutputStream流是字節流,可以處理任意類型的數據,而PrintWriter流是字符流,只能處理字符數據,如果用字符流處理字節數據,會導致數據丟失。

范例:使用PrintWriter流下載文件

package gacl.response.study;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author gacl * 文件下載 */ public class ResponseDemo02 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { downloadFileByPrintWriter(response);//下載文件,通過PrintWriter流 } /** * 下載文件,通過PrintWriter流,雖然也能夠實現下載,但是會導致數據丟失,因此不推薦使用PrintWriter流下載文件 * @param response * @throws FileNotFoundException * @throws IOException */ private void downloadFileByPrintWriter(HttpServletResponse response) throws FileNotFoundException, IOException { String realPath = this.getServletContext().getRealPath("/download/張家界國家森林公園.JPG");//獲取要下載的文件的絕對路徑 String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);//獲取要下載的文件名 //設置content-disposition響應頭控制瀏覽器以下載的形式打開文件,中文文件名要使用URLEncoder.encode方法進行編碼 response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8")); FileReader in = new FileReader(realPath); int len = 0; char[] buffer = new char[1024]; PrintWriter out = response.getWriter(); while ((len = in.read(buffer)) > 0) { out.write(buffer,0,len);//將緩沖區的數據輸出到客戶端瀏覽器 } in.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

運行結果如下:

  

正常彈出下載框,此時我們點擊【保存】按鈕將文件下載下來,如下所示:

  

  可以看到,只下載了5.25MB,而這張圖片的原始大小卻是

  

  這說明在下載的時候數據丟失了,所以下載不完全,所以這張圖片雖然能夠正常下載下來,但是卻是無法打開的,因為丟失掉了部分數據,如下所示:

  

  所以使用PrintWriter流處理字節數據,會導致數據丟失,這一點千萬要注意,因此在編寫下載文件功能時,要使用OutputStream流,避免使用PrintWriter流,因為OutputStream流是字節流,可以處理任意類型的數據,而PrintWriter流是字符流,只能處理字符數據,如果用字符流處理字節數據,會導致數據丟失。

?

from:?https://segmentfault.com/a/1190000004113284

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281714.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281714.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281714.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring.net學習記錄

Spring.Net功能&#xff1a; 1、控制反轉&#xff08;IOC&#xff09;&#xff1a;就是創建對象的權利由開發人員自己控制New&#xff0c;轉到了有容器來控制 2、依賴注入&#xff08;DI&#xff09;&#xff1a;就是通過容器來創建對象的時候&#xff0c;在對象初始化時給一些…

uAdmin the Golang Web framework

2019獨角獸企業重金招聘Python工程師標準>>> A little over two years ago, I started looking for a web framework like Django for Golang but to my surprise, I couldn’t find anything that even does the basic. My requirements were simple: A standard w…

ABP Vnext 數據庫表字段存在IsDeleted如何物理刪除HardDeleteAsync

ABP Vnext在寫表實體會繼承 xxxEntity : FullAuditedAggregateRoot<Guid>此時這個聚合根會包含一個 IsDeleted字段屬性&#xff0c;一旦繼承了這個軟刪除字段&#xff0c;你在倉儲對象調用 await _xxxxRepository.DeleteAsync(x > x.Id > 0)時的時候&#xff0c;…

詳解當當網的分布式作業框架elastic-job

詳解當當網的分布式作業框架elastic-job

java條件觸發,條件事件觸發Anylogic

所以首先event.restart()函數僅在事件具有觸發類型時才適用&#xff1a;timeout和mode&#xff1a;user control&#xff0c;否則你的event.restart()函數什么也不做......其次&#xff0c;你需要在有條件的事件上調用你的函數&#xff0c;但是在停車的那一刻......你可以在car…

攻城不易守城更難,匯付天下該如何守住打下來的“江山”?

伴隨著相關監管政策的實施&#xff0c;第三方支付市場儼然已經迎來了“罰單潮”。根據不完全統計&#xff0c;截至2018年10月8日&#xff0c;央行已開出109張支付罰單&#xff0c;國付寶等多家支付機構罰金甚至高達千萬以上&#xff0c;今年累計處罰的金額已超過2億元。照此速度…

1024技術論壇 | C#與.NET技術新發展

主辦方簡介上海維宏電子科技股份有限公司&#xff08;維宏股份&#xff0c;股票代碼&#xff1a;300508&#xff09;&#xff0c;是一家專業提供運動控制系統解決方案的高科技企業&#xff0c;公司擁有雄厚的研發力量和高素質的服務隊伍&#xff0c;我們以快捷的速度&#xff0…

Oracle Code登錄北京 代碼盛宴邀你high起來|免費報名

盛夏北京&#xff0c;將迎來 Oracle Code 北京站活動。作為貫穿全年、橫跨全球的 20 場活動中的一場&#xff0c;北京站汲取各地 Oracle Code 精華&#xff0c;結合國內開發者社區現狀和需求&#xff0c;呈現一場代碼盛宴。 來自 Oracle Code、OTN 及 AppsLap 的大咖們將齊聚北…

簡單的四則運算

// 20163536 楊宇航 獎勵原創 上課未完成原因&#xff1a; 哎&#xff0c;在上那節課時候&#xff0c;我們正在準備程序設計大賽&#xff0c;因為我們團隊當中只有我的電腦有數據庫&#xff0c;所有我只好將我的電腦貢獻給團隊了&#xff0c;不然在10分鐘內完成應該不成問題&a…

導出導入數據庫

一、導出用 mysqldump 備份數據庫 1mysqldump -u用戶 -p密碼 數據庫名 > &#xff08;目錄&#xff09;導出文件名如&#xff1a;mysqldump -uroot -p123 dbname > /root/test.sql 回車就直接完成備份。如果只需要建表指令&#xff0c;則命令如下&#xff1a; shell> …

matlab randn 范圍,請問randn產生的數據在什么范圍內變化

產生均值為0&#xff0c;方差 σ^2 1&#xff0c;標準差σ 1的正態分布的隨機數或矩陣的函數。Example:產生一個隨機分布的指定均值和方差的矩陣&#xff1a;將randn產生的結果乘以標準差&#xff0c;然后加上期望均值即可。例如&#xff0c;產生均值為0.6&#xff0c;方差為…

C#開發串口通信實例及串口基礎

一、串口通信簡介串行接口&#xff08;串口&#xff09;是一種可以將接受來自CPU的并行數據字符轉換為連續的串行數據流發送出去&#xff0c;同時可將接受的串行數據流轉換為并行的數據字符供給CPU的器件。一般完成這種功能的電路&#xff0c;我們稱為串行接口電路。串口通信&a…

我在SharePoint行業的從業經歷(一)

&#xfeff;&#xfeff;&#xfeff;&#xfeff;大約10年前&#xff0c;我剛剛畢業的時候&#xff0c;找到了一個試用的機會。那個時候的我對軟件根本沒有概念。編程學的也非常少。僅僅是在系里學過一點VB和C&#xff0c;以為軟件就是像QQ或者游戲之類的。我從來沒想到會認識…

Linux的學習思路

自學嵌入式確實不大現實&#xff08;當然也不是說沒有這個可能&#xff09;&#xff0c;畢竟嵌入式難度也是比較大的。 嵌入式的應用主要是幾個方向&#xff0c; 一是系統開發&#xff1a;側重開發環境搭建、內核原理、交叉編譯等&#xff1b; 二是嵌入式Linux應用開發&#xf…

tinycore php,tinycore中文支持

這兩天在弄tinycore&#xff0c;想用它來搭個小系統出來。下載最新的CorePlus-current.iso 4.5.2&#xff0c;用開源的usb的安裝工具core2usb-1.6.exe將它安裝到u盤&#xff0c;然后接上臺式機上&#xff0c;開機從u盤啟動&#xff0c;一切順利。好&#xff0c;開始搞起&#…

javascript權威指南--學習筆記

-一、JavaScript基本數據類型 1、數字--Number類 2、字符串--String類 3、布爾--Boolean類 4、函數Function 5、對象Object 6、數組Array 7、null 8、undefined 備注&#xff1a; 當一個未定義的值用于布爾環境&#xff0c;他就會轉為false&#xff0c;用于數字環境就會轉為…

支持 dotnet 6 的 dnSpy 神器版本

官方的 dnSpy 在 2021 時&#xff0c;由于某些吃瓜的原因 wtfsck 將 dnSpy 給 Archived 掉&#xff0c;在大佬被哄好之前&#xff0c;預計是不再更新。最新官方版本對 dotnet 6 的支持較弱&#xff0c;對于很多 dotnet 6 應用都無法成功調試&#xff0c;附加調試上去將會讓應用…

cmd命令

mstsc 開啟遠程連接services.msc 開啟服務sc delete 服務名稱 刪除服務telnet 106.75.97.193 查看端口是否占用netstat -a 查看端口監聽狀態

Robot Framework 教程 (3) - Resource及關鍵字 的使用

From:http://www.cnblogs.com/buaawp/p/4754399.html Robot Framework 教程 (3) - Resource及關鍵字 的使用 在進行軟件自動化測試時&#xff0c;我們設計并編寫好一個測試腳本的業務邏輯之后&#xff0c;需要將其中的業務數據提取為變量&#xff0c;并對業務邏輯進行封裝。在后…

mysql中的操作指令,MySQL中常用指令操作的介紹(代碼示例)

本篇文章給大家帶來的內容是關于MySQL中常用指令操作的介紹(代碼示例)&#xff0c;有一定的參考價值&#xff0c;有需要的朋友可以參考一下&#xff0c;希望對你有所幫助。l 創建數據庫&#xff1a;CREATE DATABASE table_name;l 刪除數據庫&#xff1a;DROP DATABASE table_na…