Http協議入門

[在此處輸入文章標題]

?

?

1 web

?web入門

?????????????????? 1)web服務軟件作用: 把本地資源共享給外部訪問

?????????????????? 2)tomcat服務器基本操作?????? :

???????????????????????????????????? 啟動: ?%tomcat%/bin/startup.bat

???????????????????????????????????? 關閉: %tomcat%/bin/shutdown.bat

?

???????????????????????????????????? 訪問tomcat主頁:

??????????????????????????????????????????????????????? http://localhost:8080

?????????????????? 3)web應用目錄結構

???????????????????????????????????? |- WebRoot?? 根目錄

?????????????????????????????????????????????? |-靜態資源(html css javascript images xml)? 可以直接被瀏覽器訪問到的

?????????????????????????????????????????????? |-WEB-INF????????????????????????????????? 不可以直接被瀏覽器訪問到

??????????????????????????????????????????????????????? |-classes???? 存放class字節碼文件

??????????????????????????????????????????????????????? |-lib???????? 存放jar包文件

??????????????????????????????????????????????????????? web.xml????? web應用的配置文件,配置servlet

????????????????????????????????????

?????????????????? 4)Servlet技術: 用java語言開發動態資源的技術

???????????????????????????????????? 開發一個Servlet程序的步驟:

??????????????????????????????????????????????????????? 1)創建一個java類,繼承HttpServlet類

??????????????????????????????????????????????????????? 2)重寫HttpServlet類的doGet方法

??????????????????????????????????????????????????????? 3)把寫好的servlet程序交給tomcat服務器運行!!!!

???????????????????????????????????????????????????????????????? 3.1 把編譯好的servlet的class文件拷貝到tomcat的一個web應用中。(web應用???????????????????????????????????????????????????????????????????????????????????????????? 的WEB-INF/classes目錄下)?????????????
???????????????????????????????????????????????????????????????? 3.2 在當前web應用的web.xml文件中配置servlet

??????????????????????????????????????????????????????????????????????????????????? <!-- servlet配置 -->

??????????????????????????????????????????????????????????????????????????????????? <servlet>

???????????????????????????????????????????????????????????????????????????????????????????? <servlet-name>HelloServlet</servlet-name>

???????????????????????????????????????????????????????????????????????????????????????????? <servlet-class>gz.itcast.HelloServlet</servlet-class>

??????????????????????????????????????????????????????????????????????????????????? </servlet>

??????????????????????????????????????????????????????????????????????????????????? <!--? servlet的映射配置 -->

??????????????????????????????????????????????????????????????????????????????????? <servlet-mapping>

???????????????????????????????????????????????????????????????????????????????????????????? <servlet-name> HelloServlet </servlet-name>

?????????????????????????????????????????????? ?????????????????????????????????????????????? <url-pattern>/hello</url-pattern>

??????????????????????????????????????????????????????????????????????????????????? </servlet-mapping>

??????????????????????????????????????????????????????? 4)訪問servlet

?????????????????????????????????????????????????????????????????????????? http://localhost:8080/myweb/hello

?

今天的目標: http協議

?

2 Http協議入門

???????????????????? 2.1 什么是http協議

???????????????????????????????????? http協議: 對瀏覽器客戶端 和? 服務器端 之間數據傳輸的格式規范

?

???????????????????? 2.2 查看http協議的工具

???????????????????????????????????? 1)使用火狐的firebug插件(右鍵->firebug->網絡)

???????????????????????????????????? 2)使用谷歌的“審查元素”

???????????????????????????????????? 3)使用系統自帶的telnet工具(遠程訪問工具)?????????????????????????????????

??????????????????????????????????????????????????????? a)telnet localhost 8080????? 訪問tomcat服務器

??????????????????????????????????????????????????????? b)ctrl ]???? 回車????????? 可以看到回顯

??????????????????????????????????????????????????????? c)輸入請求內容

????????????????????????????????????????????????????????????????

GET /day09/hello HTTP/1.1

Host: localhost:8080

??????????????????????????????????????????????????????? d)回車,即可查看到服務器響應信息。

?

???????????????????? 2.3 http協議內容

???????????????????????????

請求(瀏覽器-》服務器)

GET /day09/hello HTTP/1.1

Host: localhost:8080

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0

Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

?

????????

響應(服務器-》瀏覽器)

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Content-Length: 24

Date: Fri, 30 Jan 2015 01:54:57 GMT

?

this is hello servlet!!!

?

3 Http請求

GET /day09/hello HTTP/1.1 ??????????????-請求行

Host: localhost:8080??????????????????? --請求頭(多個key-value對象)

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0

Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

??????????????????????????????????? --一個空行

name=eric&password=123456???????????? --(可選)實體內容

?

????????????? 3.1 請求行

??????????????????????????? GET /day09/hello HTTP/1.1????

????????????? #http協議版本

?????????????????? http1.0:當前瀏覽器客戶端與服務器端建立連接之后,只能發送一次請求,一次請求之后連接關閉。

?????????????????? http1.1:當前瀏覽器客戶端與服務器端建立連接之后,可以在一次連接中發送多次請求。(基本都使用1.1)

?

????????????? #請求資源

???????????????????????????????????? URL:? 統一資源定位符。http://localhost:8080/day09/testImg.html。只能定位互聯網資源。是URI????????????????????????????????????????????????????????? 的子集。

???????????????????????????????????? URI: 統一資源標記符。/day09/hello。用于標記任何資源。可以是本地文件系統,局域網的資源(//192.168.14.10/myweb/index.html),??????????????????????????????????????????????????? 可以是互聯網。

????????????? #請求方式

??????????????????????????? 常見的請求方式: GET 、 POST、 HEAD、 TRACE、 PUT、 CONNECT 、DELETE????

?

??????????????????????????? 常用的請求方式: GET? 和 POST?

?

??????????????????????????? 表單提交:

???????????????????????????????????? <form action="提交地址" method="GET/POST">???

?

???????????????????????????????????? <form>

?

??????????????????????????? GET?? vs? POST 區別

?

??????????????????????????? 1)GET方式提交

?????????????????????????????????????????????? a)地址欄(URI)會跟上參數數據。以?開頭,多個參數之間以&分割。

GET /day09/testMethod.html?name=eric&password=123456 HTTP/1.1

Host: localhost:8080

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0

Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: http://localhost:8080/day09/testMethod.html

Connection: keep-alive

?

?????????????????????????????????????????????? b)GET提交參數數據有限制,不超過1KB。

?????????????????????????????????????????????? c)GET方式不適合提交敏感密碼。

?????????????????????????????????????????????? d)注意: 瀏覽器直接訪問的請求,默認提交方式是GET方式

?????????????????? ???????? 2)POST方式提交

???????????????????????????????????? a)參數不會跟著URI后面。參數而是跟在請求的實體內容中。沒有?開頭,多個參數之間以&分割。

POST /day09/testMethod.html HTTP/1.1

Host: localhost:8080

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0

Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: http://localhost:8080/day09/testMethod.html

Connection: keep-alive

?

name=eric&password=123456

?

?????????????????? ??????????????????????????? b)POST提交的參數數據沒有限制。

?????????????????????????????????????????????? c)POST方式提交敏感數據。

????????????? 3.2 請求頭

Accept: text/html,image/*????? -- 瀏覽器接受的數據類型

Accept-Charset: ISO-8859-1???? -- 瀏覽器接受的編碼格式

Accept-Encoding: gzip,compress? --瀏覽器接受的數據壓縮格式

Accept-Language: en-us,zh-?????? --瀏覽器接受的語言

Host: www.it315.org:80????????? --(必須的)當前請求訪問的目標地址(主機:端口)

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT? --瀏覽器最后的緩存時間

Referer: http://www.it315.org/index.jsp?? ???-- 當前請求來自于哪里

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)? --瀏覽器類型

Cookie:name=eric???????????????????? -- 瀏覽器保存的cookie信息

Connection: close/Keep-Alive??????????? -- 瀏覽器跟服務器連接狀態。close: 連接關閉? keep-alive:保存連接。

Date: Tue, 11 Jul 2000 18:23:51 GMT????? -- 請求發出的時間

?

????????????? 3.3 實體內容

???????????????????????????????????? 只有POST提交的參數會放到實體內容中

?

????????????? 3.4 HttpServletRequest對象

??????????????????????????? HttpServletRequest對象作用是用于獲取請求數據。

?

???????????????????????????????????? ?? 核心的API:

?????????????????????????????????????????????? 請求行:

??????????????????????????????????????????????????????? request.getMethod(); ??請求方式

??????????????????????????????????????????????????????? request.getRequetURI()?? / request.getRequetURL()?? 請求資源

??????????????????????????????????????????????????????? request.getProtocol()?? 請求http協議版本

??????????????????????????????????????????????

?????????????????????????????????????????????? 請求頭:

??????????????????????????????????????????????????????? request.getHeader("名稱")?? 根據請求頭獲取請求值

??????????????????????????????????????????????????????? request.getHeaderNames()??? 獲取所有的請求頭名稱

?

?????????????????????????????????????????????? 實體內容:

??????????????????????????????????????????????????????? request.getInputStream()?? 獲取實體內容數據

????????????? 3.5 service 和 doXX方法區別

?

???????????????????????????

HttpSevlet類的源碼:

protected void service(HttpServletRequest req, HttpServletResponse resp)

??????? throws ServletException, IOException {

?????? //得到請求方式

??????? String method = req.getMethod();

?

??????? if (method.equals(METHOD_GET)) {

??????????? long lastModified = getLastModified(req);

??????????? if (lastModified == -1) {

??????????????? // servlet doesn't support if-modified-since, no reason

??????????????? // to go through further expensive logic

?? ?????????????doGet(req, resp);

??????????? } else {

??????????????? long ifModifiedSince;

??????????????? try {

??????????????????? ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);

??????????????? } catch (IllegalArgumentException iae) {

?????????? ?????????// Invalid date header - proceed as if none was set

??????????????????? ifModifiedSince = -1;

??????????????? }

??????????????? if (ifModifiedSince < (lastModified / 1000 * 1000)) {

??????????????????? // If the servlet mod time is later, call doGet()

??????????????????? // Round down to the nearest second for a proper compare

??????????????????? // A ifModifiedSince of -1 will always be less

??????????????????? maybeSetLastModified(resp, lastModified);

?????????????????? ?doGet(req, resp);

?????? ?????????} else {

??????????????????? resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);

??????????????? }

??????????? }

?

??????? } else if (method.equals(METHOD_HEAD)) {

??????????? long lastModified = getLastModified(req);

??????????? maybeSetLastModified(resp, lastModified);

??????????? doHead(req, resp);

?

??????? } else if (method.equals(METHOD_POST)) {

??????????? doPost(req, resp);

???????????

??????? } else if (method.equals(METHOD_PUT)) {

??????????? doPut(req, resp);???????

???????????

?????? ?} else if (method.equals(METHOD_DELETE)) {

?????????? ?doDelete(req, resp);

???????????

??????? } else if (method.equals(METHOD_OPTIONS)) {

??????????? doOptions(req,resp);

???????????

??????? } else if (method.equals(METHOD_TRACE)) {

??????????? doTrace(req,resp);

???????????

??????? } else {

??????????? //

??????????? // Note that this means NO servlet supports whatever

??????????? // method was requested, anywhere on this server.

??????????? //

?

??????????? String errMsg = lStrings.getString("http.method_not_implemented");

??????????? Object[] errArgs = new Object[1];

??????????? errArgs[0] = method;

??????????? errMsg = MessageFormat.format(errMsg, errArgs);

???????????

??????????? resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);

??? ????}

??? }

?

????????????? 3.6 案例-獲取瀏覽器的類型(user-agent)

????????????? 3.7 案例- 防止非法鏈接(referer)

第1次????????????????????? CSDN/51CTO??? ->?? 頁面(點擊下載)?? -> 彈出廣告頁面(點擊此處下載) -> 開始下載?

第2次??????? ?直接點擊此處下載? ->? 轉回廣告頁面? ->? 開始下載

?

???????????????????????????????????? 非法鏈接:??????????????????????????????????????????????????????????

??????????????????????????????????????????????????????? 1)直接訪問下載的資源

??????????????????????????????????????????????????????? 2)不是從廣告頁面過來的鏈接

?

???????????????????????????????????? referer: 當前請求來自于哪里。

????????????? 3.8 傳遞的請求參數如何獲取??????????

??????????????????????????? ?GET方式: 參數放在URI后面

??????????????????????????? ?POST方式: 參數放在實體內容中

?

??????????????????????????? 獲取GET方式參數:

?????????????????????????????????????????????? request.getQueryString();

??????????????????????????? 獲取POST方式參數:

?????????????????????????????????????????????? request.getInputStream();

?

??????????????????????????? 問題:但是以上兩種不通用,而且獲取到的參數還需要進一步地解析。

??????????????????????????? 所以可以使用統一方便的獲取參數的方式:

????????????????????????????????????

??????????????????????????? ??????? 核心的API:

???????????????????????????????????? request.getParameter("參數名");? 根據參數名獲取參數值(注意,只能獲取一個值的參數)

???????????????????????????????????? request.getParameterValue("參數名“);根據參數名獲取參數值(可以獲取多個值的參數)

?

???????????????????????????????????? request.getParameterNames();?? 獲取所有參數名稱列表 ?

????????????? 3.9 請求參數編碼問題

???????????????????????????????????? 修改POST方式參數編碼:

??????????????????????????????????????????????????????? request.setCharacterEncoding("utf-8");

???????????????????????????????????? 修改GET方式參數編碼:

??????????????????????????????????????????????????????? 手動解碼:String name = new String(name.getBytes("iso-8859-1"),"utf-8");

4 Http響應

HTTP/1.1 200 OK??????????????? --響應行

Server: Apache-Coyote/1.1???????? --響應頭(key-vaule)

Content-Length: 24

Date: Fri, 30 Jan 2015 01:54:57 GMT

?????????????????????????????????? --一個空行

this is hello servlet!!!????????????????? --實體內容

?

???????????????????? 4.1 響應行

????????????? ???? #http協議版本

???????????????????? ?#狀態碼: 服務器處理請求的結果(狀態)

?????????????????????????????????????????????? 常見的狀態:

??????????????????????????????????????????????????????? 200 :? 表示請求處理完成并完美返回

??????????????????????????????????????????????????????? 302:?? 表示請求需要進一步細化。
??????????????????????????????????????????????????????? 404:?? 表示客戶訪問的資源找不到。

??????????????????????????????????????????????????????? 500:?? 表示服務器的資源發送錯誤。(服務器內部錯誤)

???????????????????? #狀態描述????????

????? 4.2 常見的響應頭

Location: http://www.it315.org/index.jsp?? -表示重定向的地址,該頭和302的狀態碼一起使用。

Server:apache tomcat???????????????? ---表示服務器的類型

Content-Encoding: gzip? ???????????????-- 表示服務器發送給瀏覽器的數據壓縮類型

Content-Length: 80??????????????????? --表示服務器發送給瀏覽器的數據長度

Content-Language: zh-cn?????????????? --表示服務器支持的語言

Content-Type: text/html; charset=GB2312 ??--表示服務器發送給瀏覽器的數據類型及內容編碼

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT? --表示服務器資源的最后修改時間

Refresh: 1;url=http://www.it315.org???? --表示定時刷新

Content-Disposition: attachment; filename=aaa.zip --表示告訴瀏覽器以下載方式打開資源(下載文件時用到)

Transfer-Encoding: chunked

Set-Cookie:SS=Q0=5Lb_nQ; path=/search?? --表示服務器發送給瀏覽器的cookie信息(會話管理用到)

Expires: -1?????????????????????????? --表示通知瀏覽器不進行緩存

Cache-Control: no-cache

Pragma: no-cache

Connection: close/Keep-Alive ??????????--表示服務器和瀏覽器的連接狀態。close:關閉連接 keep-alive:保存連接

?

???????????????????? 4.3 HttpServletResponse對象

??????????????????????????? HttpServletResponse對象修改響應信息:

?

?????????????????????????????????????????????? 響應行:

???????????????????????????????????????????????????????????????? response.setStatus()? 設置狀態碼

?????????????????????????????????????????????? 響應頭:

???????????????????????????????????????????????????????????????? response.setHeader("name","value")? 設置響應頭

?????????????????????????????????????????????? 實體內容:

???????????????????????????????????????????????????????????????? response.getWriter().writer();?? 發送字符實體內容

???????????????????????????????????????????????????????????????? response.getOutputStream().writer()? 發送字節實體內容

?

???????????????????? 4.4 案例- 請求重定向(Location)

???????????????????? 4.5 案例- 定時刷新(refresh)

???????????????????? 4.6 案例-content-Type作用

?

?????????????????? 總結:

???????????????????????????????????? http協議: 瀏覽器和服務器之間數據傳輸的格式規范

?

???????????????????????????????????? 1)http請求:

??????????????????????????????????????????????????????? 格式:

?????????????????????????????????????????????????????????????????????????? 請求行

?????????????????????????????????????????????????????????????????????????? 請求頭

?????????????????????????????????????????????????????????????????????????? 空行

?????????????????????????????????????????????????????????????????????????? 實體內容(POST提交的數據在實體內容中)

??????????????????????????????????????????????????????? 重點:

???????????????????????????????????????????????????????????????? 使用HttpServletRequest對象: 獲取請求數據

?

??????????????????????????? 2)http響應;

?????????????????????????????????????????????? 格式:

???????????????????????????????????????????????????????????????? 響應行

???????????????????????????????????????????????????????????????? 響應頭

???????????????????????????????????????????????????????????????? 空行

???????????????????????????????????????????????????????????????? 實體內容(瀏覽器看到的內容)

?????????????????????????????????????????????? 重點:

?????????????????????????????????????????????? ???????? 使用HttpServletResponse對象: 設置響應數據

?

???????????????????????????

本文轉載于:猿2048?https://www.mk2048.com/blog/blog.php?id=ii1jaab&title=Http協議入門

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

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

相關文章

計算機硬件系統都是看得見的,計算機組成硬件系統).doc

計算機組成硬件系統)各位計算機協會的成員大家好&#xff0c;很高興大家能陪我們走過這段難忘的時光。為了讓大家更好的學到東西&#xff0c;我們特地將計算機方面的東西整理成技術文檔&#xff0c;共大家使用&#xff0c;祝大家學得愉快&#xff01;湘信院計算機協會一&#x…

Google Guava –期貨

這篇文章是我在Google Guava上的系列文章的延續&#xff0c;這次涵蓋了Future。 Futures類是用于使用Future / ListenableFuture接口的靜態實用程序方法的集合。 Future是提交給ExecutorService的異步任務&#xff08;可運行或可調用&#xff09;的句柄。 Future界面提供以下方…

iptables 配置后連接不上數據庫_Linux服務器配置-VSFTP服務配置(三)

上文&#xff1a;Linux服務器配置-VSFTP服務配置(二)一、vsftpd服務防火墻配置1、主動(POST)模式 FTP 防火墻配置CentOS6 系統 iptables 的配置iptables -t filter --line-number -nL INPUT#顯示現有防火墻規則&#xff0c;查看是否開啟20、21號端口。iptables -t filter -I IN…

下標索引必須為正整數類型或邏輯類型_Python3 基本數據類型

Python中的變量不需要聲明。每個變量在使用前都必須賦值&#xff0c;變量賦值以后該變量才會被創建。在Python中&#xff0c;變量就是變量&#xff0c;它沒有類型&#xff0c;我們所說的"類型"是變量所指的內存中對象的類型。Python 3中有六個標準的數據類型&#xf…

noip模擬賽 寫代碼

分析&#xff1a;這其實就是括號匹配題&#xff0c;一眼貪心題&#xff0c;不過一開始貪錯了&#xff0c;以為([)]是合法的......其實括號之間不能嵌套. 一開始的想法是盡量往左邊填左括號&#xff0c;因為每種括號的數量都確定了&#xff0c;那么左括號和右括號的數量也就確定…

[CF797C] Minimal string(貪心,棧)

題目鏈接&#xff1a;http://codeforces.com/contest/797/problem/C 題意&#xff1a;給個字符串&#xff0c;求字典序最小的出棧順序。 一開始想用優先隊列記錄全局最小的字符&#xff0c;然后每次入棧的時候檢查當前字符是不是最小的&#xff0c;如果是那么同時pop。這樣做的…

讓我們緊縮大數據

作為開發人員&#xff0c;我們的重點是簡單&#xff0c;有效的解決方案&#xff0c;因此&#xff0c;最有價值的原則之一就是“保持簡單和愚蠢”。 但是使用Hadoop map-reduce很難堅持這一點。 如果我們要評估多個Map Reduce作業中的數據&#xff0c;那么最終將得到與業務無關但…

行內元素和塊元素以及行內塊元素的特點

一、背景 初學html&#xff0c;接觸很多標簽 <h1>、<p>、<span>、<ul>、<em>等&#xff0c;當寫出簡單的小頁面的時候&#xff0c;例如僅僅是一篇帶有標題的文章&#xff0c;標題 <h1>標簽單獨一行&#xff0c;不管后面有多大的空間&…

軟件測試的功能測試和性能測試,大型軟件的功能測試流程及性能測試流程

大型軟件具有涉及子模塊繁多、建設過程復雜、功能全面、性能具有較高要求的特點。依據ISO/IEC 9126軟件產品評估標準&#xff0c;需要對軟件的功能性、可靠性、可用性、效率、可維護性、可移植性等方面進行評估。因此&#xff0c;需要有一種方法能夠對大型軟件進行測試&#xf…

vue 分模塊打包 腳手架_Vue面試官最愛的底層源碼問題,你可以這樣回答!

最近看到身邊很多人都在投簡歷&#xff0c;有因為企業裁員的&#xff0c;有因為自己想跳槽的&#xff0c;原因不一&#xff0c;但是最終大家都會需要接觸到面試這個事情。但是很多人對待面試不夠認真&#xff0c;只會等待結果&#xff0c;不去努力。所以這邊想整理一些懶人面試…

re.containerbase.startinternal 子容器啟動失敗_Python項目容器化實踐(二) Docker Machine和Docker Swarm...

前言這篇文章介紹Docker生態中的常被提到的Engine、Machine和Swarm&#xff0c;大家以了解為主&#xff0c;工作需要再深入。EngineDocker Engine其實就是我們常說的「Docker」&#xff0c;它是一個C/S模型(Client/Server)的應用&#xff0c;包含如下組件:Daemon。守護進程&…

基于設備樹的TQ2440的中斷(2)

下面以按鍵中斷為例看看基于設備數的中斷的用法&#xff1a; 設備樹&#xff1a; tq2440_key {compatible "tq2440,key";interrupt-parent <&gpf>;interrupts <0 IRQ_TYPE_EDGE_FALLING>, <1 IRQ_TYPE_EDGE_FALLING>;key_3 <&gpf 2…

計算機里有個不能進入的磁盤分區,新電腦只有一個分區怎么辦? 教你們如何不進pe給硬盤創建新分區!...

很多朋友新電腦剛買回來打開發現明明自己機械硬盤1T或者1T機械加128G固態&#xff0c;但是卻只有一個或者兩個分區&#xff0c;但是又不會分區現在教大家如何不用老毛桃大白菜之類的進pe系統里面就能直接創建新分區1 WinR輸入diskmgmt.msc2進入磁盤管理可以查看本機的C盤與E盤的…

OSGi中的權限

在上一篇文章中 &#xff0c;我們介紹了為Java應用程序實現沙箱的方法&#xff0c;在其中我們可以安全地運行移動代碼 。 這篇文章探討了如何在OSGi環境中執行相同的操作。 OSGi OSGi規范 為Java定義了一個動態模塊系統 。 因此&#xff0c;它是實施那種可以使您的應用程序動…

HTTP簡單教程

目錄 HTTP簡介 HTTP工作原理 HTTP消息結構 客戶端請求消息服務器響應消息實例 HTTP請求方法HTTP響應頭信息HTTP狀態碼 HTTP狀態碼分類HTTP狀態碼列表 HTTP content-type對照表 HTTP簡介 HTTP協議是Hyper Text Transfer Protocol&#xff08;超文本傳輸協議&#xff09;的縮寫&…

Reversed-Z詳解

在3D渲染管線中&#xff0c;Z這個家伙幾乎無處不在&#xff0c;如Z-Buffer&#xff0c;Early-Z&#xff0c;Z-Cull&#xff0c;Z-Test&#xff0c;Z-Write等等&#xff0c;稍有接觸圖形學的人都會對這些術語有所耳聞。 那么Z到底是什么呢&#xff1f;首先Z當然可以是任意坐標系…

pyqt開發的程序模板_小程序定制開發和模板開發要多少錢?有什么區別?

到現在&#xff0c;小程序開發已經有了1年多的歷史&#xff0c;已經達到百萬數量級。無論是小程序商城還是小程序游戲&#xff0c;其開發方式不外乎兩種&#xff0c;一種是定制開發&#xff0c;另一種是模板開發。對于很多初次接觸小程序的客戶來說&#xff0c;還不知道小程序的…

實現字符串的編碼轉換,用以解決字符串亂碼問題

引起亂碼的情況很多~實質上 主要是字符串本身的編碼格式 與程序所需要的編碼格式不一致導致的。要解決亂碼其實很簡單&#xff0c; 分2步 &#xff1a; 1&#xff1a;獲取到字符串 本身的編碼 2&#xff1a;改變字符串編碼 &#xff08;本身編碼 -> 新編碼&#xff09; 話不…

python運行原理_Python線程池及其原理和使用(超級詳細)

系統啟動一個新線程的成本是比較高的&#xff0c;因為它涉及與操作系統的交互。在這種情形下&#xff0c;使用線程池可以很好地提升性能&#xff0c;尤其是當程序中需要創建大量生存期很短暫的線程時&#xff0c;更應該考慮使用線程池。 線程池在系統啟動時即創建大量空閑的線程…

Google Guava緩存

這篇文章是我在Google Guava上系列文章的續篇&#xff0c;這次涵蓋了Guava Cache。 與HashMap或ConcurrentHashMap相比&#xff0c;Guava Cache提供了更大的靈活性和功能&#xff0c;但不像使用EHCache或Memcached那樣繁重&#xff08;就此而言&#xff0c;它很健壯&#xff0c…