欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      RTSP協(xié)議學(xué)習(xí)筆記(學(xué)習(xí)流媒體的時(shí)候自己總結(jié)的)

      時(shí)間:2019-05-15 09:49:27下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《RTSP協(xié)議學(xué)習(xí)筆記(學(xué)習(xí)流媒體的時(shí)候自己總結(jié)的)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《RTSP協(xié)議學(xué)習(xí)筆記(學(xué)習(xí)流媒體的時(shí)候自己總結(jié)的)》。

      第一篇:RTSP協(xié)議學(xué)習(xí)筆記(學(xué)習(xí)流媒體的時(shí)候自己總結(jié)的)

      RTSP協(xié)議學(xué)習(xí)筆記

      目錄

      RTSP協(xié)議學(xué)習(xí)筆記..........................................................................................................1 第一部分:RTSP協(xié)議..................................................................................................2

      一、RTSP協(xié)議概述.....................................................................................2二、三、1.2.3.4.RTSP協(xié)議與HTTP協(xié)議區(qū)別................................................................2 RTSP重要術(shù)語.....................................................................................3 集合控制(Aggregate control):............................................................3 實(shí)體(Entity):.......................................................................................3 容器文件(Container file):..............................................................3 RTSP會話(RTSP session):..................................................................3

      四、RTSP請求消息.....................................................................................3 1.消息格式:..............................................................................................3

      五、RTSP回應(yīng)消息.....................................................................................4 1.消息格式:..............................................................................................4

      六、RTSP 重要方法....................................................................................4 1.OPTIONS:...................................................................................................4 2.DESCRIBE:..............................................................................................5 3.SETUP:....................................................................................................6 4.PLAY:......................................................................................................7 5.PAUSE:....................................................................................................8 6.TEARDOWN:...........................................................................................8

      七、1.2.RTSP重要頭字段參數(shù)..........................................................................9 Accept:....................................................................................................9 Bandwidth:...............................................................................................9 3.CSeq:........................................................................................................9 4.Rang:........................................................................................................9 5.Session:...................................................................................................9 6.Transport:.................................................................................................9

      八、簡單的RTSP消息交互過程................................................................10 1.第一步:查詢服務(wù)器端可用方法............................................................10 2.3.4.5.6.一、二、三、一、第二步:得到媒體描述信息...................................................................10 第三步:建立RTSP會話........................................................................10 第四步:請求開始傳送數(shù)據(jù)...................................................................10 第五步: 數(shù)據(jù)傳送播放中.....................................................................10 第六步:關(guān)閉會話,退出.......................................................................10 SDP協(xié)議概述.....................................................................................11 SDP格式............................................................................................11 SDP示例...........................................................................................12 MMS協(xié)議概述...................................................................................13 第二部分:SDP協(xié)議..................................................................................................11 第三部分:MMS協(xié)議................................................................................................13

      第一部分:RTSP協(xié)議

      一、RTSP協(xié)議概述

      RTSP(Real-Time Stream Protocol)是一種基于文本的應(yīng)用層協(xié)議,在語法及一些消息參數(shù)等方面,RTSP協(xié)議與HTTP協(xié)議類似。

      RTSP被用于建立的控制媒體流的傳輸,它為多媒體服務(wù)扮演“網(wǎng)絡(luò)遠(yuǎn)程控制”的角色。盡管有時(shí)可以把RTSP控制信息和媒體數(shù)據(jù)流交織在一起傳送,但一般情況RTSP本身并不用于轉(zhuǎn)送媒體流數(shù)據(jù)。媒體數(shù)據(jù)的傳送可通過RTP/RTCP等協(xié)議來完成。

      一次基本的RTSP操作過程是:首先,客戶端連接到流服務(wù)器并發(fā)送一個(gè)RTSP描述命令(DESCRIBE)。流服務(wù)器通過一個(gè)SDP描述來進(jìn)行反饋,反饋信息包括流數(shù)量、媒體類型等信息。客戶端再分析該SDP描述,并為會話中的每一個(gè)流發(fā)送一個(gè)RTSP建立命令(SETUP),RTSP建立命令告訴服務(wù)器客戶端用于接收媒體數(shù)據(jù)的端口。流媒體連接建立完成后,客戶端發(fā)送一個(gè)播放命令(PLAY),服務(wù)器就開始在UDP上傳送媒體流(RTP包)到客戶端。在播放過程中客戶端還可以向服務(wù)器發(fā)送命令來控制快進(jìn)、快退和暫停等。最后,客戶端可發(fā)送一個(gè)終止命令(TERADOWN)來結(jié)束流媒體會話

      二、RTSP協(xié)議與HTTP協(xié)議區(qū)別

      1.RTSP引入了幾種新的方法,比如DESCRIBE、PLAY、SETUP 等,并且有不同的協(xié)議標(biāo)識符,RTSP為rtsp 1.0,HTTP為http 1.1;

      2.HTTP是無狀態(tài)的協(xié)議,而RTSP為每個(gè)會話保持狀態(tài);

      3.RTSP協(xié)議的客戶端和服務(wù)器端都可以發(fā)送Request請求,而在HTTPF 協(xié)議中,只有客戶端能發(fā)送Request請求。

      4.在RTSP協(xié)議中,載荷數(shù)據(jù)一般是通過帶外方式來傳送的(除了交織的情況),及通過RTP協(xié)議在不同的通道中來傳送載荷數(shù)據(jù)。而HTTP協(xié)議的載荷數(shù)據(jù)都是通過帶內(nèi)方式傳送的,比如請求的網(wǎng)頁數(shù)據(jù)是在回應(yīng)的消息體中攜帶的。

      5.使用ISO 10646(UTF-8)而不是ISO 8859-1,以配合當(dāng)前HTML的國際化; 6.RTSP使用URI請求時(shí)包含絕對URI。而由于歷史原因造成的向后兼容性問題,HTTP/1.1只在請求中包含絕對路徑,把主機(jī)名放入單獨(dú)的標(biāo)題域中;

      三、RTSP重要術(shù)語

      1.集合控制(Aggregate control):

      對多個(gè)流的同時(shí)控制。對音頻/視頻來講,客戶端僅需發(fā)送一條播放或者暫停消息就可同時(shí)控制音頻流和視頻流。

      2.實(shí)體(Entity):

      作為請求或者回應(yīng)的有效負(fù)荷傳輸?shù)男畔?。由以?shí)體標(biāo)題域(entity-header field)形式存在的元信息和以實(shí)體主體(entity body)形式存在的內(nèi)容組成

      3.容器文件(Container file):

      可以容納多個(gè)媒體流的文件。RTSP服務(wù)器可以為這些容器文件提供集合控制。

      4.RTSP會話(RTSP session):

      RTSP交互的全過程。對一個(gè)電影的觀看過程,會話(session)包括由客戶端建立媒體流傳輸機(jī)制(SETUP),使用播放(PLAY)或錄制(RECORD)開始傳送流,用停止(TEARDOWN)關(guān)閉流。

      四、RTSP請求消息

      1.消息格式:

      方法 URI RTSP版本 CR LF 消息頭 CR LF CR LF 消息體 CR LF

      其中方法包括OPIONS、DESCRIBE、SETUP、PLAY、TEARDOWN等,URI是接受方的地址,例如:rtsp://192.168.0.1/video1.3gp。

      RTSP版本一般都是 RTSP/1.0。每行后面的CR LF表示回車換行,需要接受端有相應(yīng)的解析,最后一個(gè)消息頭需要有兩個(gè)CR LF 消息體是可選的,有的Request消息并不帶消息體。

      五、RTSP回應(yīng)消息

      1.消息格式:

      RTSP版本 狀態(tài)碼 解釋 CR LF 消息頭 CR LF CR LF 消息體 CR LF 其中RTSP版本一般都是RTSP/1.0,狀態(tài)碼是一個(gè)數(shù)值,用于表示Request消息的執(zhí)行結(jié)果,比如200表示成功,解釋是與狀態(tài)碼對應(yīng)的文本解釋.六、RTSP 重要方法

      1.OPTIONS:

      用于得到服務(wù)器提供的可用方法; 如: OPTIONS rtsp://192.168.20.136:5000/xxx666 RTSP/1.0 CSeq: 1 服務(wù)器的回應(yīng)信息會在Public字段列出提供的方法。如: RTSP/1.0 200 OK CSeq: 1 //每個(gè)回應(yīng)消息的cseq數(shù)值和請求消息的cseq相對應(yīng) Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE 2.DESCRIBE:

      客戶端向服務(wù)器端發(fā)送DESCRIBE,用于得到URI所指定的媒體描述信息,一般是SDP信息??蛻舳送ㄟ^Accept頭指定客戶端可以接受的媒體述信息類型。

      如:

      C->S: DESCRIBE rtsp://server.example.com/fizzle/foo RTSP/1.0 CSeq: 312 Accept: application/sdp, application/rtsl, application/mheg)服務(wù)器回應(yīng)URI指定媒體的描述信息: 如: S->C: RTSP/1.0 200 OK CSeq: 312 Date: 23 Jan 1997 15:35:06 GMT Content-Type: application/sdp //表示回應(yīng)為SDP信息 Content-Length: 376 //這里為一個(gè)空行 //以下為具體的SDP信息 v=0 o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://004km.cn/foo/bar/baz.rm RTSP/1.0 CSeq: 302 Transport: RTP/AVP;unicast;client_port=4588-4589 服務(wù)器端對SETUP Request產(chǎn)生一個(gè)Session Identifiers。如: S->C: RTSP/1.0 200 OK CSeq: 302 Date: 23 Jan 1997 15:35:06 GMT Session: 47112344 //產(chǎn)生一個(gè)Session ID Transport: RTP/AVP;unicast;client_port=4588-4589;server_port=6256-6257

      4.PLAY:

      PLAY方法告知服務(wù)器通過SETUP中指定的機(jī)制開始發(fā)送數(shù)據(jù)。在尚未收到SETUP請求的成功應(yīng)答之前,客戶端不可以發(fā)出PLAY請求。

      PLAY請求將正常播放時(shí)間(normal play time)定位到指定范圍的起始處,并且傳輸數(shù)據(jù)流直到播放范圍結(jié)束。PLAY請求可能被管道化(pipelined),即放入隊(duì)列中(queued);服務(wù)器必須將PLAY請求放到隊(duì)列中有序執(zhí)行。也就是說,后一個(gè)PLAY請求需要等待前一個(gè)PLAY請求完成才能得到執(zhí)行。

      比如,在下例中,不管到達(dá)的兩個(gè)PLAY請求之間有多緊湊,服務(wù)器首先play第10到15秒,然后立即第20到25秒,最后是第30秒直到結(jié)束。

      C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0 CSeq: 835 Session: 12345678 Range: npt=10-15 C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0 CSeq: 836 Session: 12345678 Range: npt=20-25 C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0 CSeq: 837 Session: 12345678 Range: npt=30-

      Range頭可能包含一個(gè)時(shí)間參數(shù)。該參數(shù)以UTC格式指定了播放開始的時(shí)間。如果在這個(gè)指定時(shí)間后收到消息,那么播放立即開始。時(shí)間參數(shù)可能用來幫助同步從不同數(shù)據(jù)源獲取的數(shù)據(jù)流。

      不含Range頭的PLAY請求也是合法的。它從媒體流開頭開始播放,直到媒體流被暫停。如果媒體流通過PAUSE暫停,媒體流傳輸將在暫停點(diǎn)(the pause point)重新開始。

      如果媒體流正在播放,那么這樣一個(gè)PLAY請求將不起更多的作用,只是客戶端可以用此來測試服務(wù)器是否存活。

      5.PAUSE:

      PAUSE請求引起媒體流傳輸?shù)臅簳r(shí)中斷。如果請求URL中指定了具體的媒體流,那么只有該媒體流的播放和記錄被暫停(halt)。比如,指定暫停音頻,播放將會無聲。如果請求URL指定了一組流,那么在該組中的所有流的傳輸將被暫停。如:

      C->S: PAUSE rtsp://example.com/fizzle/foo RTSP/1.0 CSeq: 834 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 834 Date: 23 Jan 1997 15:35:06 GMT

      PAUSE請求中可能包含一個(gè)Range頭用來指定何時(shí)媒體流暫停,我們稱這個(gè)時(shí)刻為暫停點(diǎn)(pause point)。該頭必須包含一個(gè)精確的值,而不是一個(gè)時(shí)間范圍。媒體流的正常播放時(shí)間設(shè)置成暫停點(diǎn)。當(dāng)服務(wù)器遇到在任何當(dāng)前掛起(pending)的PLAY請求中指定的時(shí)間點(diǎn)后,暫停請求生效。如果Range頭指定了一個(gè)時(shí)間超出了任何一個(gè)當(dāng)前掛起的PLAY請求,將返回錯(cuò)誤“457 Invalid Range”。如果一個(gè)媒體單元(比如一個(gè)音頻或視頻禎)正好在一個(gè)暫停點(diǎn)開始,那么表示將不會被播放或記錄。如果Range頭缺失,那么在收到暫停消息后媒體流傳輸立即中斷,并且暫停點(diǎn)設(shè)置成當(dāng)前正常播放時(shí)間。

      6.TEARDOWN:

      TEARDOWN請求終止了給定URI的媒體流傳輸,并釋放了與該媒體流相關(guān)的資源。如:

      C->S: TEARDOWN rtsp://example.com/fizzle/foo RTSP/1.0 CSeq: 892

      Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 892

      七、RTSP重要頭字段參數(shù)

      1.Accept:

      用于指定客戶端可以接受的媒體描述信息類型。比如: Accept: application/rtsl, application/sdp;level=2 2.Bandwidth:

      用于描述客戶端可用的帶寬值。

      3.CSeq:

      指定了RTSP請求回應(yīng)對的序列號,在每個(gè)請求或回應(yīng)中都必須包括這個(gè)頭字段。對每個(gè)包含一個(gè)給定序列號的請求消息,都會有一個(gè)相同序列號的回應(yīng)消息。

      4.Rang:

      用于指定一個(gè)時(shí)間范圍,可以使用SMPTE、NTP或clock時(shí)間單元。

      5.Session:

      Session頭字段標(biāo)識了一個(gè)RTSP會話。Session ID 是由服務(wù)器在SETUP的回應(yīng)中選擇的,客戶端一當(dāng)?shù)玫絊ession ID后,在以后的對Session 的操作請求消息中都要包含Session ID.6.Transport:

      Transport頭字段包含客戶端可以接受的轉(zhuǎn)輸選項(xiàng)列表,包括傳輸協(xié)議,地址端口,TTL等。服務(wù)器端也通過這個(gè)頭字段返回實(shí)際選擇的具體選項(xiàng)。如: Transport: RTP/AVP;multicast;ttl=127;mode=“PLAY”, RTP/AVP;unicast;client_port=3456-3457;mode=“PLAY”

      八、簡單的RTSP消息交互過程

      C表示RTSP客戶端,S表示RTSP服務(wù)端

      1.第一步:查詢服務(wù)器端可用方法

      1.C->S:OPTION request //詢問S有哪些方法可用

      1.S->C:OPTION response //S回應(yīng)信息的public頭字段中包括提供的所有可用方法

      2.第二步:得到媒體描述信息

      2.C->S:DESCRIBE request //要求得到S提供的媒體描述信息 2.S->C:DESCRIBE response //S回應(yīng)媒體描述信息,一般是sdp信息

      3.第三步:建立RTSP會話

      3.C->S:SETUP request //通過Transport頭字段列出可接受的傳輸選項(xiàng),請求S建立會話

      3.S->C:SETUP response //S建立會話,通過Transport頭字段返回選擇的具體轉(zhuǎn)輸選項(xiàng),并返回建立的Session ID;4.第四步:請求開始傳送數(shù)據(jù)

      4.C->S:PLAY request //C請求S開始發(fā)送數(shù)據(jù) 4.S->C:PLAY response //S回應(yīng)該請求的信息

      5.第五步: 數(shù)據(jù)傳送播放中

      S->C:發(fā)送流媒體數(shù)據(jù) // 通過RTP協(xié)議傳送數(shù)據(jù)

      6.第六步:關(guān)閉會話,退出

      6.C->S:TEARDOWN request //C請求關(guān)閉會話

      6.S->C:TEARDOWN response //S回應(yīng)該請求

      上述的過程只是標(biāo)準(zhǔn)的、友好的rtsp流程,但實(shí)際的需求中并不一定按此過程。

      其中第三和第四步是必需的!第一步,只要服務(wù)器客戶端約定好,有哪些方法可用,則option請求可以不要。第二步,如果我們有其他途徑得到媒體初始化描述信息(比如http請求等等),則我們也不需要通過rtsp中的describe請求來完成。

      第二部分:SDP協(xié)議

      一、SDP協(xié)議概述

      SDP(Session Description Protocol)會話描述協(xié)議,用于描述多媒體會話,它為會話通知、會話初始和其它形式的多媒體會話初始等操作提供服務(wù)。

      SDP 的設(shè)計(jì)宗旨是通用性協(xié)議,所有它可以應(yīng)用于很大范圍的網(wǎng)絡(luò)環(huán)境和應(yīng)用程序,但 SDP 不支持會話內(nèi)容或媒體編碼的協(xié)商操作。

      SDP信息包括:

      ? ? ? ? 會話名稱和目標(biāo); 會話活動時(shí)間; 構(gòu)成會話的媒體;

      有關(guān)接收媒體的信息、地址等。

      二、SDP格式

      SDP 信息是文本信息,UTF-8 編碼采用 ISO 10646 字符設(shè)置。SDP 會話描述如下(標(biāo)注*符號的表示可選字段):

      v=(協(xié)議版本)

      ? o=(所有者/創(chuàng)建者和會話標(biāo)識符)? s=(會話名稱)? i=*(會話信息)?

      ? ? ? ? ? u=*(URI 描述)e=*(Email 地址)p=*(電話號碼)

      c=*(連接信息 ― 如果包含在所有媒體中,則不需要該字段)b=*(帶寬信息)

      一個(gè)或更多時(shí)間描述(如下所示): z=*(時(shí)間區(qū)域調(diào)整)? k=*(加密密鑰)

      ? a=*(0個(gè)或多個(gè)會話屬性線路)? 0個(gè)或多個(gè)媒體描述(如下所示)?

      時(shí)間描述

      t=(會話活動時(shí)間)

      ? r=*(0或多次重復(fù)次數(shù))?

      媒體描述

      ? ? ? ? ? ? m=(媒體名稱和傳輸?shù)刂罚﹊=*(媒體標(biāo)題)

      c=*(連接信息 — 如果包含在會話層則該字段可選)b=*(帶寬信息)k=*(加密密鑰)

      a=*(0個(gè)或多個(gè)會話屬性線路)

      三、SDP示例

      v=0 o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://004km.cnpatibility.Support for the protocol was finally dropped in Windows Media Services 2008[1].Note however that Microsoft still recommends[2] using “mms://” as a “protocol rollover[3] URL”.As part of protocol rollover a Windows Media Player 11 client opening an “mms://” URL will attempt to connect first with RTSP over UDP and if that fails it will attempt RTSP over TCP.Earlier Windows Media Player clients as well as version 11 after having failed RTSP will attempt MMS over UDP, then MMS over TCP.If MMS failed a modified version of a HTTP over TCP connection will be attempted, this modified version is also referred to as MMSH[4].

      第二篇:常見接口協(xié)議學(xué)習(xí)筆記總結(jié)

      SPI通信

      SPI簡介:(高速,全雙工,4線同步串行總線)

      SCK:主機(jī)輸出的用來同步數(shù)據(jù)傳輸?shù)拇袝r(shí)鐘;MOSI:主機(jī)輸出從機(jī)輸入;MISO主機(jī)輸入從機(jī)輸出;NSS:由主機(jī)輸出的片選使能低電平有效 SPI例程相關(guān)配置如下:

      注意事項(xiàng):(與配置UART 類似)1.配置SPI x時(shí)應(yīng)確保對應(yīng)相應(yīng)路的SPI 2.配置相關(guān)GPIO和使能其時(shí)鐘時(shí)要對應(yīng)正確的管腳類型 3.特別注意配置各路SPI時(shí),確定其對應(yīng)的替代函數(shù)映射形式

      硬件連接示意圖:

      SPI通信是由主設(shè)備時(shí)鐘信號來確定主/從設(shè)備間的通信。一旦檢測到主設(shè)備的時(shí)鐘信號,在SCK(只由主機(jī)控制)的控制下,兩個(gè)串行移位寄存器進(jìn)行數(shù)據(jù)交換。

      注意:當(dāng)一個(gè)系統(tǒng)下掛有多個(gè)SPI從機(jī)設(shè)備時(shí),可以有GPIO口對使能端NSS進(jìn)行控制,當(dāng)只有一個(gè)從機(jī)時(shí)可以將使能端NSS直接接地拉低。

      SPI寄存器數(shù)據(jù)傳輸圖示

      SPI各個(gè)設(shè)備傳輸數(shù)據(jù)的過程中總是先發(fā)送或接收高字節(jié)數(shù)據(jù),每個(gè)時(shí)鐘周期接收器或收發(fā)器左移1位數(shù)據(jù)。對于小于16位的數(shù)據(jù)在發(fā)送之前必須左對齊,如果接收的數(shù)據(jù)小于16位則采用軟件將無效的數(shù)據(jù)位屏蔽。特別注意:主機(jī)的時(shí)鐘極性和相位以從機(jī)為基準(zhǔn),要搞清楚數(shù)據(jù)傳輸是在上升沿輸出還是在下降沿接收數(shù)據(jù)等等,都要進(jìn)行一一對應(yīng)。

      I2C通信

      I2C簡介:一個(gè)雙向的兩線連續(xù)總線,一條數(shù)據(jù)線(SDA)和一條時(shí)鐘線(SCL)。I2C總線有三種數(shù)據(jù)傳輸速度:標(biāo)準(zhǔn)模式100Kbps,快速模式400Kbps和高速模式可達(dá)3.4Mbps。

      I2C總線結(jié)構(gòu)主要用于連接整體電路,一種雙向控制總線,即多個(gè)芯片(設(shè)備)可連接同一總線結(jié)構(gòu)下,每個(gè)設(shè)備都可以作為實(shí)時(shí)數(shù)據(jù)傳輸?shù)目刂圃?,簡化了總線結(jié)構(gòu)。外設(shè)連接示意圖:

      在不發(fā)送任何數(shù)據(jù)的時(shí)候數(shù)據(jù)線和時(shí)鐘線都為高電平。

      所以I2C通信在硬件設(shè)計(jì),需要在數(shù)據(jù)線和時(shí)鐘線上分別加上兩個(gè)上拉電阻。其次,I2C控制硬件進(jìn)行數(shù)據(jù)傳輸時(shí),硬件狀態(tài)的改變需要一定的時(shí)間。

      I2C例程配置如下:

      注意事項(xiàng):(與配置SPI,UART 類似)

      1.配置I2C x時(shí)應(yīng)確保對應(yīng)相應(yīng)路的I2C(例程為I2C3)2.配置相關(guān)GPIO和使能其時(shí)鐘時(shí)要對應(yīng)正確的管腳類型 3.特別注意在主函數(shù)中,開始時(shí)要對相關(guān)的時(shí)鐘進(jìn)行使能 數(shù)據(jù)通信時(shí)序簡介:

      1.主機(jī)發(fā)送開始信號,將SDA拉低,此時(shí)SCL處于高電平狀態(tài)。2.從機(jī)檢測到開始信號,準(zhǔn)備接收數(shù)據(jù)。

      3.主機(jī)先拉低SCL將數(shù)據(jù)一位一位放在SDA上,然后再將SCL拉高(釋放)。

      4.從機(jī)檢測到SCL的變化,會在SCL高電平期間(主機(jī)不會太長時(shí)間去等待從機(jī)接受)將下一個(gè)SDA數(shù)據(jù)放進(jìn)自己的寄存器中待處理。

      5.主機(jī)會在設(shè)定好的時(shí)間后將SCL拉低并放進(jìn)下一個(gè)SDA,然后再拉高SCL,從機(jī)會在SCL高電平期間讀取SDA數(shù)據(jù)。

      6.如此往復(fù),完成8位數(shù)據(jù)(1Byte)傳輸,此時(shí)SCL處于低電平,SDA處于高電平。

      總線死鎖現(xiàn)象分析與解決方法

      I2C總線寫操作過程中,主機(jī)在產(chǎn)生啟動信號后控制SCL產(chǎn)生8個(gè)時(shí)鐘脈沖,然后拉低SCL信號為低電平,在這個(gè)時(shí)候,從機(jī)輸出應(yīng)答信號,將SDA信號拉為低電平。如果這個(gè)時(shí)候主機(jī)異常復(fù)位,SCL就會被釋放為高電平。此時(shí),如果從機(jī)沒有復(fù)位,就會繼續(xù)I2C的應(yīng)答,將SDA一直拉為低電平,直到SCL變?yōu)榈碗娖?,才會結(jié)束應(yīng)答信號。而對于主機(jī)來說,復(fù)位后檢測SCL和SDA信號,如果發(fā)現(xiàn)SDA信號為低電平,則會認(rèn)為I2C總線被占用,會一直等待SCL和SDA信號變?yōu)楦唠娖?。這樣,主機(jī)等待從機(jī)釋放SDA信號,而同時(shí)從機(jī)又在等待主機(jī)將SCL信號拉低以釋放應(yīng)答信號,兩者相互等待,I2C總線進(jìn)人一種死鎖狀態(tài)。同樣,當(dāng)I2C進(jìn)行讀操作時(shí),從機(jī)應(yīng)答后輸出數(shù)據(jù),如果在這個(gè)時(shí)刻主機(jī)異常復(fù)位而此時(shí)從機(jī)輸出的數(shù)據(jù)位正好為0,也會導(dǎo)致I2C總線進(jìn)入死鎖狀態(tài)。解決方案通常有如下幾種:

      (1)將從機(jī)的電源設(shè)計(jì)為可控,當(dāng)發(fā)生總線死鎖時(shí)將從機(jī)復(fù)位

      (2)可以在從機(jī)的程序中加入監(jiān)測功能,如果總線長時(shí)間被拉低則釋放對總線的控制(3)在主機(jī)中增加I2C總線恢復(fù)程序。每次主機(jī)復(fù)位后,如果檢測到SDA被拉低,則控制SCL產(chǎn)生<=9個(gè)時(shí)鐘脈沖(針對8位數(shù)據(jù)的情況),每發(fā)送一個(gè)時(shí)鐘脈沖就檢測SDA是否被釋放,如果SDA已經(jīng)被釋放就再模擬產(chǎn)生一個(gè)停止信號,這樣從機(jī)就可以完成被掛起的讀寫操作,從死鎖狀態(tài)中恢復(fù)過來。這種方法有一定的局限性,因?yàn)榇蟛糠种鳈C(jī)的I2C模塊由內(nèi)置的硬件電路來實(shí)現(xiàn),軟件并不能夠直接控制SCL信號模擬產(chǎn)生需要時(shí)鐘脈沖。筆記:

      時(shí)鐘SCL只能由主機(jī)控制,數(shù)據(jù)SDA主機(jī)從機(jī)都可控制。I2C主機(jī)通過地址選擇要與自己通信的從機(jī); I2C起始信號:SCL = 1, SDA產(chǎn)生一個(gè)下降沿; I2C結(jié)束信號:SCL = 1,SDA產(chǎn)生一個(gè)上升沿;

      在數(shù)據(jù)傳輸階段:SCL = 1的時(shí)候SDA數(shù)據(jù)線不能變化,如果SDA發(fā)生變化那意味著結(jié)束;

      SCL = 1;SDA = 1;為空閑狀態(tài);

      總線上各器件的SCL、SDA為線與關(guān)系,某一個(gè)器件的引腳輸出低,則為低。通信過程中要注意應(yīng)答信號,在第9個(gè)時(shí)鐘時(shí),SDA=0(ack響應(yīng)),SDA=1(nak不響應(yīng))。

      第三篇:一個(gè)自己學(xué)習(xí)總結(jié)的php類學(xué)習(xí)筆記

      1,類:類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對象的集合,類是對象的抽象,他將一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作抽象封裝,類好比是一個(gè)對象模板,基于類就可以生成多個(gè)具有不同屬性值的對象。

      2,創(chuàng)建類:

      Class classname

      {

      }

      3,為該類添加屬性和方法:只需要在類中聲明變量即可。聲明了屬性之后可以獲取該屬性的值。

      ⑴創(chuàng)建屬性:Class classname

      {

      Var $myName;

      Var $myAge;

      }

      ⑵創(chuàng)建方法:class classname

      {

      Var $myName;

      Var $myAge;

      Function getName()

      {

      }

      Function getAget($arg1,$arg2)

      {

      }

      }

      注:以上創(chuàng)建了兩個(gè)類的方法,方法名稱分別為:getName,getAge

      4,構(gòu)造函數(shù):大多數(shù)的類都有構(gòu)造函數(shù),當(dāng)一個(gè)類實(shí)例被調(diào)用時(shí),將調(diào)用構(gòu)造函數(shù),通常在構(gòu)造函數(shù)中將執(zhí)行一些初始化的操作。

      ⑴在類中聲明構(gòu)造函數(shù):同聲明其他函數(shù)一樣,但是構(gòu)造函數(shù)的名稱是固定的。即函數(shù)名必須為:__construct()

      注:構(gòu)造函數(shù)可以由編程人員主動調(diào)用,但大部分時(shí)候,都是在創(chuàng)建類對象實(shí)例的時(shí)候自動調(diào)用。構(gòu)造函數(shù)也可以傳遞參數(shù),這些參數(shù)可以在調(diào)用類的時(shí)候傳遞。

      聲明構(gòu)造函數(shù)的方法:

      Class classname

      {

      Function __construct($param)

      {

      代碼

      }}

      ⑵析構(gòu)函數(shù):是一種當(dāng)對象被銷毀時(shí),無論使用了unset()或簡單的脫離范圍,都會被自動調(diào)用的函數(shù)。

      與構(gòu)造函數(shù)的名稱類似,一個(gè)類的析構(gòu)函數(shù)名稱必須是_destruct()

      5,類的實(shí)例化:聲明了一個(gè)類之后,如果要使用該類,必須創(chuàng)建該類的一個(gè)實(shí)例,實(shí)際上也可以將該類作為一個(gè)變量,在使用之前必須手動定義。用關(guān)鍵字“new”來創(chuàng)建

      一個(gè)類的實(shí)例。

      Class classname

      {

      Function __construct($myName)

      {echo(“我的名字是:$myName
      ”);}

      }

      $name1=new myName(“小豬”);

      $name2=new myName(“小狗”);//創(chuàng)建了2個(gè)該類的實(shí)例

      ?>

      注:new myName(“小豬”)中的參數(shù)“小豬”會被 自動傳遞到構(gòu)造函數(shù),然后構(gòu)造函數(shù)直接使用該參數(shù)。

      6,使用類的屬性:

      在一個(gè)類中訪問類成員變量有一個(gè)特殊的指針:$this通過該指針可能方便的訪問類屬性或是給類屬性賦值。

      Class classname

      {

      Var $myattrib;//定義屬性

      Function operate($myparam)//為類創(chuàng)建方法

      {

      $this->myattrib=$myparam;//設(shè)置屬性值為$myparam

      Echo $this->myattrib;//輸出屬性值

      }

      }

      ⑴如果要在類的外部訪問一個(gè)類的屬性,需要確定該屬性能否被外部訪問。因?yàn)樵陬愔卸x的屬性可以設(shè)置外界訪問的權(quán)限。

      以上對屬性$myarrtib進(jìn)行限制,外界可以直接訪問:

      $newclass =new classname();//創(chuàng)建一個(gè)類classname實(shí)例

      $newclass->myattrib=”小馬”;//給屬性賦值

      Echo $newclass->myattrib;//輸出屬性

      ⑵從類的外部直接訪問類的屬性不是一個(gè)好的方法,面向?qū)ο蠓椒ǖ囊粋€(gè)優(yōu)點(diǎn)就是使用類的封裝??梢酝ㄟ^使用__get()和__set()函數(shù)來實(shí)現(xiàn)對該類屬性的訪問。

      Class classname

      {

      Var $myattrib;//定義屬性

      Function __get($attribName)//獲取屬性值的函數(shù)

      {

      Return $this->attribName;//返回該屬性的值

      }

      Function __set($arrtibName,$value)//設(shè)置屬性值的函數(shù)

      {

      $this->$attribName=$value;//設(shè)置屬性值

      }

      }

      注:__get函數(shù)只有一個(gè)參數(shù),該參數(shù)用來傳遞屬性的名稱,__set函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)為屬性的名稱,第二個(gè)參數(shù)為要設(shè)置的屬性的值??梢酝ㄟ^這兩 個(gè)函數(shù)來檢查和設(shè)置任何屬性的值。

      7,類的訪問控制:

      Php5 支持的3 種控制符:

      ⑴public(默認(rèn)的)public表示該屬性和方法在類的內(nèi)部或外部都可以直接被訪問。

      ⑵private 表示該屬性和方法只能在類的內(nèi)部進(jìn)行訪問。如果沒有使用__get()和__set(),則可能對所有的屬性都使用這個(gè)關(guān)鍵字,也要選擇部分方法為私有,但私有的屬性和方法不能被繼承。

      ⑶Protected 表示被標(biāo)記的屬性或方法只能在類的內(nèi)部進(jìn)行訪問,他也存在于任何子類中。Class classname

      {

      Public $myattrib;

      Public function __get($attribName)//獲取屬性值的函數(shù)

      {

      Return $this->$attribName;//返回該屬性值

      }

      Public function __set($attribName,$value)//設(shè)置屬性值的函數(shù)

      {

      This->$attribName=$value;//設(shè)置屬性值

      }

      }

      8,類方法的調(diào)用:

      Class classname

      {

      Var $myAttrib;

      Function func_1($param)//函數(shù)func_1

      {

      代碼

      }

      Function func_2($param1$param2)

      {

      代碼

      }

      Function func_3($param1$param2)

      {

      代碼

      Return backvalue;

      }

      }

      調(diào)用以上類的3個(gè)函數(shù):

      $newclass->func_1(“123”);

      $newclass->func_2(“123”,”abc”);

      $myvalue=$newclass->func_3(“123”,”abc”);//調(diào)用func_3并獲取返回值。

      9,有關(guān)類的代碼:

      $this通過該指針可能方便的訪問類屬性或是給類屬性賦值。class Employee//創(chuàng)建一個(gè)類“Employee”

      {

      var $empno;// 員工人數(shù)//定義類的屬性

      var $empnm;// 員工姓名

      function add_employee($in_num, $in_name)//創(chuàng)建類的方法為“add_employee”

      {

      $this->empno = $in_num;//給類的屬性賦值

      $this->empnm = $in_name;

      }

      function show()//創(chuàng)建類的方法為“show”

      {

      echo “$this->empno, $this->empnm”;//輸出屬性值

      return;

      }

      function changenm($in_name)

      {

      $this->empnm = $in_name;}

      }

      $sbabu = new Employee;

      $sbabu->add_employee(10,“sbabu”);$sbabu->changenm(“babu”);$sbabu->show();

      第四篇:網(wǎng)絡(luò)學(xué)習(xí)筆記總結(jié)

      1需要掌握重點(diǎn):

      網(wǎng)絡(luò)的定義:網(wǎng)絡(luò)就是將兩臺或兩臺以上的計(jì)算機(jī)以一定方式連接起來,起到共享文件,程序數(shù)據(jù)的作用

      網(wǎng)絡(luò)分類

      1)按范圍分:lan,wan,man 2)按拓?fù)浣Y(jié)構(gòu)分:總線型,環(huán)形,星型,樹形

      3)按傳輸介質(zhì)分:雙絞線,同軸電纜,光纖,無線網(wǎng)絡(luò)

      局域網(wǎng)中常用設(shè)備:交換機(jī),路由器

      十進(jìn)制和二進(jìn)制的轉(zhuǎn)換

      十進(jìn)制(逢十進(jìn)一):范圍0-9 二進(jìn)制(逢二進(jìn)一):范圍0-1 轉(zhuǎn)換方式(二進(jìn)制轉(zhuǎn)十進(jìn)制:湊數(shù)法,在計(jì)算機(jī)中1為真,0為假,只取真值相加結(jié)果就為十進(jìn)制,十進(jìn)制轉(zhuǎn)二進(jìn)制也同樣如此,詳見案例)

      111011這個(gè)二進(jìn)制轉(zhuǎn)十進(jìn)制

      64 32 16 8 4 2 1 0

      0 1 1 0 1 1 結(jié)果:32+16+8+2+1=59

      13這個(gè)十進(jìn)制轉(zhuǎn)二進(jìn)制 16 8 4 2 1 0 1 1 0 1 結(jié)果:1101

      2需要掌握重點(diǎn): Osi七層模型

      物理層:bit流的傳輸

      數(shù)據(jù)鏈路層:提供介質(zhì)得到訪問的鏈路的管理 網(wǎng)絡(luò)層:尋址和路由選擇

      傳輸層:建立主機(jī)端到端的連接 會話層:建立維護(hù)和管理會話

      表示層:處理數(shù)據(jù)的加密和數(shù)據(jù)格式 應(yīng)用層:提供程序間的通信

      tcp/ip四層模型

      封裝協(xié)議

      網(wǎng)絡(luò)接口層: ppp,hdlc,fr 網(wǎng)絡(luò)層:

      ip 傳輸層:

      tcp/udp 應(yīng)用層

      http/telnet/ftp/dns等

      3需要掌握重點(diǎn) 數(shù)據(jù)通信基礎(chǔ):

      1數(shù)據(jù)組成:字母和數(shù)字,如:圖片,視頻,文字等 2數(shù)據(jù)通信:

      1)數(shù)據(jù)交換的過程

      2)傳輸介質(zhì)來進(jìn)行數(shù)據(jù)傳輸 3)傳輸介質(zhì):網(wǎng)線,無線,光釬

      網(wǎng)線做法:

      A 白綠,綠,白橙,藍(lán),白藍(lán),橙,白棕,棕

      B 白橙,橙,白綠,藍(lán),白藍(lán),綠,白棕,棕

      (兩端都一致,在現(xiàn)實(shí)生活中98%都用這種,用于連接不同層的設(shè)備)

      網(wǎng)線(最高傳輸距離為100m)分為: 全反線:配置路由器和交換機(jī) 直通線:不同層設(shè)備的連接 交叉線:相同層設(shè)備的連接

      光釬:單模和多模

      特點(diǎn):傳輸帶寬高,距離遠(yuǎn),抗干擾能力強(qiáng)

      3數(shù)據(jù)通信系統(tǒng)的組成 1)發(fā)送方 2)接收方 3)傳輸介質(zhì) 4)預(yù)定--協(xié)議 5)數(shù)據(jù)包-報(bào)文

      4數(shù)據(jù)流方向

      1)單工,只接收數(shù)據(jù),不發(fā)送(電視機(jī),顯示器)2)半雙工,在發(fā)送的時(shí)候不能接收數(shù)據(jù)(對講機(jī))3)全雙工,可以同時(shí)發(fā)送和接收數(shù)據(jù)

      (手機(jī))

      4需要掌握重點(diǎn)

      綜合布線系統(tǒng)(六大子系統(tǒng))水平子系統(tǒng) 工作區(qū)子系統(tǒng) 管理子系統(tǒng) 垂直子系統(tǒng) 建筑群子系統(tǒng) 設(shè)備間子系統(tǒng)

      5需要掌握重點(diǎn)

      沖突域:在以太網(wǎng)中,當(dāng)多個(gè)節(jié)點(diǎn)同時(shí)傳輸數(shù)據(jù)時(shí),從多個(gè)設(shè)備發(fā)出的幀將會碰撞,在物理介質(zhì)上相遇,彼此數(shù)據(jù)都將會被破壞,這樣的共享介質(zhì)網(wǎng)段就叫沖突域 交換機(jī)隔離沖突域(交換機(jī)每一個(gè)端口就代表一個(gè)沖突域)

      廣播域:廣播幀傳輸?shù)木W(wǎng)絡(luò)范圍,一般是由路由器來設(shè)定邊界的,(因?yàn)槁酚善鞑晦D(zhuǎn)發(fā)廣播)路由器隔離廣播域(路由器的每一個(gè)端口代表一個(gè)廣播域)

      交換機(jī)原理(工作在數(shù)據(jù)鏈路層):根據(jù)源mac地址學(xué)習(xí),目標(biāo)mac地址轉(zhuǎn)發(fā),基于硬件轉(zhuǎn)發(fā) 三種轉(zhuǎn)發(fā)方式

      1)對已知單播幀,只對應(yīng)端口轉(zhuǎn)發(fā) 2)對未知單播幀,進(jìn)行廣播 3)對廣播幀進(jìn)行廣播

      交換機(jī)分類:二層交換機(jī),三層交換機(jī),vlan型交換機(jī)

      思科設(shè)備的命令行管理模式 用戶模式> 特權(quán)模式#

      en

      全局配置模式(config)conf t 接口模式(config)# int 接口類型、模塊號

      如f0/1

      Exit返回上一級 End 返回特權(quán)模式 Ctrl+z 返回特權(quán)模式

      6需要掌握重點(diǎn)

      Ip地址:主機(jī)唯一標(biāo)識,是世界上唯一的,跟mac地址一樣,mac是物理地址,ip地址是邏輯地址,主要是保障主機(jī)間能正常通信,方便記憶

      Ip地址分為ipv4(現(xiàn)在主流用的,幾乎接觸的100%都是這類地址)和ipv6

      Ipv4地址分為兩部分來表示 網(wǎng)絡(luò)位--大廈名稱 主機(jī)位---門牌號

      Ipv4表示方法:點(diǎn)分十進(jìn)制,共4個(gè)字節(jié)(32個(gè)bit),每一個(gè)字節(jié)為一個(gè)單位,中間用“.”l來區(qū)分開

      如:192.168.1.24/24

      Ip地址分類:abc類最常用,d用于組播,e用于保留科研 類型

      范圍

      二進(jìn)制網(wǎng)絡(luò)位

      二進(jìn)制主機(jī)位

      可用主機(jī)數(shù) A

      0-127

      2的24次方-2 B

      128-191

      2的16次方-2 C

      192-223

      2的8次方-2 D

      224-239 E

      240-255

      子網(wǎng)掩碼:用來區(qū)分主機(jī)位和網(wǎng)絡(luò)位的7需要掌握重點(diǎn) 網(wǎng)絡(luò)層協(xié)議

      功能:1)處理來自傳輸層得的分組發(fā)送請求 2)輸出輸入數(shù)據(jù)報(bào)文 3)處理icmp報(bào)文

      Arp協(xié)議:(地址解析協(xié)議):負(fù)責(zé)將對應(yīng)的ip地址解析成mac地址 Arp功能就是通過目標(biāo)主機(jī)查詢其mac地址

      Icmp協(xié)議:錯(cuò)誤偵測與回饋機(jī)制,用來發(fā)送和控制消息 典型應(yīng)用ping Ping語法

      ping 空格

      [選項(xiàng)]

      如ping 192.168.1.21

      8需要掌握重點(diǎn)

      路由器工作原理:尋址和轉(zhuǎn)發(fā)

      路由協(xié)議:直連路由,靜態(tài)路由,動態(tài)路由

      靜態(tài)路由的優(yōu)缺點(diǎn) 優(yōu)點(diǎn):

      1)對硬件資源占用不高 2)不占用帶寬 3)增加網(wǎng)絡(luò)安全 缺點(diǎn):

      1)配置工作量大并且容易出錯(cuò) 2)適應(yīng)拓?fù)渥兓芰^差

      靜態(tài)路由配置語法: ip route 目的ip網(wǎng)絡(luò)號

      子網(wǎng)掩碼

      直連路由的出口地址 默認(rèn)路由配置語法: ip route 0.0.0.0 0.0.0.0 直連路由的出口地址

      演示案例: 實(shí)驗(yàn)拓?fù)鋱D:

      配置命令:

      實(shí)驗(yàn)步驟:首先必須要配置好預(yù)配置,也就是把環(huán)境搭建好的情況下才可能完成此實(shí)驗(yàn),搭建環(huán)境包括,配置每個(gè)接口的ip地址,確保每個(gè)直連路由是ok的 en conf t host R1 inter f0/0 ip add 13.1.1.1 255.255.255.0 no shut inter s1/1 ip add 12.1.1.1 255.255.255.0 no shut inter lo 0 ip add 1.1.1.1 255.255.255.0 end

      en conf t host R2 inter s1/0 ip add 12.1.1.2 255.255.255.0 no shut inter s1/1 ip add 23.1.1.2 255.255.255.0 no shut inter lo 0 ip add 2.2.2.2 255.255.255.0 end

      en conf t host R3 inter f0/0

      ip add 13.1.1.3 255.255.255.0 no shut inter s1/0 ip add 23.1.1.3 255.255.255.0 no shut inter lo 0 ip add 3.3.3.3 255.255.255.0 end

      //配置好預(yù)配置之后,靜態(tài)路由的配置

      R1的靜態(tài)路由配置

      ip route 2.2.2.0 255.255.255.0 12.1.1.2 ip route 3.3.3.0 255.255.255.0 13.1.1.3 ip route 23.1.1.0 255.255.255.0 13.1.1.3

      R2的靜態(tài)路由配置

      ip route 1.1.1.0 255.255.255.0 12.1.1.1 ip route 3.3.3.0 255.255.255.0 23.1.1.0 ip route 13.1.1.0 255.255.255.0 12.1.1.1

      R3的靜態(tài)路由配置

      ip route 1.1.1.0 255.255.255.0 13.1.1.1 ip route 2.2.2.0 255.255.255.0 23.1.1.2 ip route 12.1.1.0 255.255.255.0 13.1.1.1

      //刪除靜態(tài)路由 刪除R1的靜態(tài)路由

      no ip route 2.2.2.0 255.255.255.0 12.1.1.2 no ip route 3.3.3.0 255.255.255.0 13.1.1.3 no ip route 23.1.1.0 255.255.255.0 13.1.1.3

      刪除R2的靜態(tài)路由

      no ip route 1.1.1.0 255.255.255.0 12.1.1.1 no ip route 3.3.3.0 255.255.255.0 23.1.1.0 no ip route 13.1.1.0 255.255.255.0 12.1.1.1

      刪除R3的靜態(tài)路由

      no ip route 1.1.1.0 255.255.255.0 13.1.1.1 no ip route 2.2.2.0 255.255.255.0 23.1.1.2 no ip route 12.1.1.0 255.255.255.0 13.1.1.1

      //默認(rèn)路由的配置 默認(rèn)路由

      R1: ip route 0.0.0.0 0.0.0.0 12.1.1.2 R2: ip route 0.0.0.0 0.0.0.0 23.1.1.3 R3: ip route 0.0.0.0 0.0.0.0 13.1.1.1

      第五篇:java學(xué)習(xí)筆記總結(jié)

      java 學(xué)習(xí)筆記總結(jié)

      1.Java是什么呢?

      Java不僅是一門語言,而且是一個(gè)完整的平臺,有一個(gè)龐大的庫,其中包含了很多可重用的代碼和一個(gè)提供安全性、跨操作系統(tǒng)的可移植性以及自動垃圾收集等服務(wù)的執(zhí)行環(huán)境。

      2.JDK 和 JRE 是什么?

      JDK:全稱是 Java Development Kit,這是我們編寫java程序的開發(fā)人員需要的。我們首先要下載和安裝JDK,然后設(shè)置環(huán)境變量,具體操作可以加我扣:七零五叁零六久久久

      JRE:全稱是 Java Runtime Environment,它包含虛擬機(jī)但不包含編譯器,這是運(yùn)行java程序的用戶需要的環(huán)境

      3.來個(gè)Hello World看看吧?

      照例先創(chuàng)建一個(gè)類HelloWorld.java,源代碼如下: /** * @author 老孫

      */ public class HelloWorld {

      public static void main(String[] args){

      System.out.println(“Hello World”);

      } } Java類名一般是以大寫字母開頭的名詞,多個(gè)單詞的話每個(gè)單詞首字母都應(yīng)該大寫。Java源代碼以.java作為擴(kuò)展名,而且文件名必須和文件里的公共類同名。

      4.怎么用命令行運(yùn)行java程序?

      比如上面我們編寫了一個(gè)類叫做HelloWorld.java,首先打開一個(gè)終端;

      ? 然后進(jìn)入到HelloWorld.java類所在的目錄; ? 輸入命令 javac HelloWorld.java。javac是一個(gè)java編譯器,注意該命令需要的是文件名,也就是要帶著.java后綴。? 輸入命令 java HelloWorld。java啟動Java虛擬機(jī),該命令只需要類名,不需要帶著.java或者.class等后綴。?

      5.Java代碼怎么加注釋?

      // 單行注釋 和 /*{……}*/ 長篇注釋,這兩種方式很多語言都一樣,沒什么特別強(qiáng)調(diào)的。

      另外還有一種注釋可以方便的生成java doc文檔,以/** 開頭,以*/結(jié)束。

      6.Java的幾種基本數(shù)據(jù)類型是?

      4種整型:byte(1字節(jié)),short(2字節(jié)),int(4字節(jié)),long(4字節(jié))。(PS:Java沒有無符號整型)? 2種浮點(diǎn)型:float(4字節(jié)),double(8字節(jié))? 字符類型:char ? 布爾類型:boolean

      在Java種每個(gè)類型占用幾個(gè)字節(jié)是固定的,與運(yùn)行java的機(jī)器無關(guān),這點(diǎn)與C#不同,這也是Java具有可移植性的關(guān)鍵點(diǎn)。

      浮點(diǎn)類型一般double比float常用,而且浮點(diǎn)型存在四舍五入的情況,如果用在對精確度要求高的商業(yè)場景,就得使用java.math.BigDecimal類型了。我們寫個(gè)demo看看: ?

      /** * @author 老孫

      */ public class DemoDouble { public static void main(String[] args){

      double d1=0.05;

      double d2=0.01;

      double result=d1+d2;

      System.out.println(result);//結(jié)果:0.***005

      BigDecimal bd1=new BigDecimal(“0.05”);

      BigDecimal bd2=new BigDecimal(Double.valueOf(“0.01”));

      double result2=bd1.add(bd2).doubleValue();

      System.out.println(result2);//結(jié)果:0.06

      } }

      7.Java怎么定義常量?

      使用關(guān)鍵字final定義常量,之前C#用的是const關(guān)鍵字,這一點(diǎn)不同要注意一下。命名規(guī)則上,常量一般使用大寫字母,中間用下劃線分隔。例如: private static final Integer MAX_SIZE=100;

      8.String字符串怎么截取子串?

      Substring(beginIndex,endIndex):返回子字符串,從beginIndex到endIndex-1。String s=“你好,今天是2018年1月5日,圣誕快樂!” String date = s.substring(6,17);System.out.println(date);// 輸出:2018年1月5日

      注意:該方法的返回結(jié)果不包含最后一個(gè)位置的字符。如果有問題就問我:七零五叁零六久久久 9.Java字符串怎么拼接?

      ①最簡單的拼接方式就是使用+符號。

      ②String.join(char,str1,str2….strN):靜態(tài)方法拼接字符串,用字符char分隔,將字符串進(jìn)行拼接。//拼接

      String s2=String.join(“、”,“JAVA核心技術(shù)”,“JAVA編程思想”,“SpringBoot”);System.out.println(s2);//輸出:JAVA核心技術(shù)、JAVA編程思想、SpringBoot

      ③當(dāng)有大量字符串拼接操作的時(shí)候使用StringBuilder,這跟C#基本相同。

      10.怎么判斷兩個(gè)Java字符串是否相等?

      equals方法判斷兩個(gè)字符串內(nèi)容是否相等。而==判斷兩個(gè)字符串是否指向內(nèi)存中同一位置。//比較

      String s3=“abc”;String s4=“abc”;String s5=new String(“abc”);String s6=new String(“abc”);System.out.println(s3==s4);//true System.out.println(s3.equals(s4));//true System.out.println(s5==s6);//false System.out.println(s5.equals(s6));//true 這個(gè)demo中s3==s4返回true,因?yàn)樵贘ava中字符串是不可修改的,編譯器有一些優(yōu)化機(jī)制讓字符串共享,所以s3和s4實(shí)際上指向了內(nèi)存中同一位置 11.Java數(shù)組有哪些常用操作?

      ①foreach循環(huán)數(shù)組

      //foreach循環(huán)數(shù)組 int[] arr={1,3,5,7,9};for(int item:arr){ System.out.println(item);} ②打印數(shù)組元素

      Arrays.toString(a):返回字符串,數(shù)組元素包含在方括號中,以逗號分隔。Arrays.deepToString(arr):用來打印多維數(shù)組。//打印數(shù)組

      System.out.println(Arrays.toString(arr));//輸出 [1, 3, 5, 7, 9] int[][] arrM={{1,2,3},{11,12,13},{21,22,23}};System.out.println(Arrays.deepToString(arrM));//[[1, 2, 3], [11, 12, 13], [21, 22, 23]] ③拷貝數(shù)組元素

      靜態(tài)方法Arrays.copyOf(originalArray,length):第一個(gè)參數(shù)是要拷貝的源數(shù)組,第二個(gè)元素是新數(shù)組的長度,如果第二個(gè)大于原數(shù)組長度,則自動填充默認(rèn)值。//拷貝數(shù)組元素

      int[] arr2=Arrays.copyOf(arr,arr.length);System.out.println(Arrays.toString(arr2));//輸出 [1, 3, 5, 7, 9] int[] arr3=Arrays.copyOf(arr,arr.length/2);System.out.println(Arrays.toString(arr3));//輸出 [1, 3] int[] arr4=Arrays.copyOf(arr,arr.length*2);System.out.println(Arrays.toString(arr4));//輸出 [1, 3, 5, 7, 9, 0, 0, 0, 0, 0] ④排序

      靜態(tài)方法Arrays.sort()方法采用優(yōu)化后的快速排序算法對數(shù)組元素進(jìn)行排序。//排序

      int[] arr6={12,4,53,78,21,943,3};Arrays.sort(arr6);System.out.println(Arrays.toString(arr6));//輸出 [3, 4, 12, 21, 53, 78, 943]

      ⑤查找

      靜態(tài)方法Arrays.binarySearch(arr, valueToFind):二分查找,第一個(gè)參數(shù)是要查找的數(shù)組,第二個(gè)參數(shù)是要查找的目標(biāo)元素。該方法有個(gè)前提是數(shù)組必須是有序的。//查找

      int index=Arrays.binarySearch(arr6,12);//輸出 2 System.out.println(index);

      ⑥填充數(shù)組元素

      靜態(tài)方法Arrays.fill(arr,item):將數(shù)組arr每個(gè)元素都填充為item.//填充數(shù)組元素

      String[] arr7=new String[5];Arrays.fill(arr7,“*”);System.out.println(Arrays.toString(arr7));//[*, *, *, *, *]

      ⑦比較數(shù)組

      注意要使用Arrays.equals(arr1,arr2)比較數(shù)組,如果兩個(gè)數(shù)組元素全部相同,則返回true。//比較數(shù)組元素

      String[] arr8={“*”,“*”,“*”,“*”,“*”,};System.out.println(arr7.equals(arr8));//false System.out.println(Arrays.equals(arr7,arr8));//true

      12.日期對象LocalDate ①獲取當(dāng)前日期時(shí)間 //當(dāng)前日期

      LocalDate today=LocalDate.now();

      System.out.println(today);//2017-12-26

      //當(dāng)前時(shí)間

      LocalTime currentTime=LocalTime.now();

      System.out.println(currentTime);//12:23:09.054

      //當(dāng)前日期時(shí)間

      LocalDateTime dateTime=LocalDateTime.now();

      System.out.println(dateTime);//2017-12-26T12:23:09.054

      ②構(gòu)造某個(gè)指定日期

      //構(gòu)造指定日期

      LocalDate newYear=LocalDate.of(2018,1,1);System.out.println(newYear);//2018-01-01

      ③解析日期字符串,如果不合法會拋出異常。

      //解析日期字符串

      LocalDate date1=LocalDate.parse(“2018-12-31”);System.out.println(date1);//2018-12-31//LocalDate.parse(“2018-11-31”);//拋出異常

      ④獲取若干天后的某個(gè)日期 //15天后

      LocalDate date15=today.plusDays(15);System.out.println(date15);//2018-01-10

      ⑤獲取年份、月份、日期

      //獲取年、月、日

      System.out.println(date15.getYear());//2018 System.out.println(date15.getMonth());//JANUARY System.out.println(date15.getMonthValue());//1 System.out.println(date15.getDayOfMonth());//10 System.out.println(date15.getDayOfWeek());//WEDNESDAY System.out.println(date15.getDayOfYear());//10 注意:使用Date對象的getYear()方法,不能獲取當(dāng)前的年份

      System.out.println(new Date().getYear());//117,不是我們想要的結(jié)果2018 我們看一下該方法的源碼,計(jì)算的是當(dāng)前年份和1900年的差值

      public int getYear(){ return normalize().getYear()-1900;}

      大家在學(xué)習(xí)的過程中遇到任何的問題都可以咨詢我(QQ:705306999,奔跑de蝸牛)

      也可以加入到我們的免費(fèi)學(xué)習(xí)交流群: 579016988(職坐標(biāo)java編程交流群2)玩微信的朋友也可以加老孫的個(gè)人微信公眾號:微信右上角點(diǎn)擊加號--添加朋友--公眾號--搜索:我是老孫(如下圖),也會不定期發(fā)送技術(shù)文章,娛樂八卦,吃喝玩樂,房產(chǎn)頭條,心靈雞湯等信息!

      加圖片說明文字

      注意:添加時(shí)請注明微博

      移除點(diǎn)擊此處添如果大家想看老孫的直播學(xué)習(xí),可以加入咱們的免費(fèi)公開課進(jìn)行學(xué)習(xí)!騰訊課程地址:https://ke.qq.com/course/92963#tuin=2a0a2177

      有的人會這樣說:“我只是在業(yè)余時(shí)間打盹而已,業(yè)余時(shí)間干嗎把自己弄得那么緊張?”

      愛因斯坦就曾提出:“人的差異在于業(yè)余時(shí)間?!?/p>

      一位在哈佛任教的朋友說,只要知道一個(gè)青年怎樣度過他的業(yè)余時(shí)間,就能預(yù)言出這個(gè)青年的前程怎樣。記得點(diǎn)贊和轉(zhuǎn)發(fā)哦!

      片說明文字

      移除點(diǎn)擊此處添加圖

      下載RTSP協(xié)議學(xué)習(xí)筆記(學(xué)習(xí)流媒體的時(shí)候自己總結(jié)的)word格式文檔
      下載RTSP協(xié)議學(xué)習(xí)筆記(學(xué)習(xí)流媒體的時(shí)候自己總結(jié)的).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        學(xué)習(xí)筆記

        學(xué)習(xí)筆記 黨章是黨的最基本性的綱領(lǐng)文件,代表了全黨的跟本利益和意志,集中體現(xiàn)了黨員先進(jìn)性的基本要求,是黨員和黨的領(lǐng)干部必須遵守的基本準(zhǔn)則。 通過對新黨章的學(xué)習(xí),結(jié)合國家重......

        學(xué)習(xí)筆記

        學(xué)習(xí)筆記1、2011年3月11日集中學(xué)習(xí)培訓(xùn)《農(nóng)民負(fù)擔(dān)監(jiān)督管理》相關(guān)政策 2、2011年5月20日集中學(xué)習(xí)培訓(xùn)《農(nóng)村財(cái)務(wù)管理》相關(guān)政策 3、2011年7月15日 專業(yè)合作社法》 4、2011年9......

        學(xué)習(xí)筆記

        貫穿衛(wèi)生工作的總路線,推動衛(wèi)生事業(yè)的發(fā)展 隨著社會的進(jìn)步,科學(xué)的發(fā)展,人們對自己的健康的需求不斷增加,因此,衛(wèi)生工作的路線也在不斷的深入和發(fā)展,進(jìn)一步推動著衛(wèi)生事業(yè)的前進(jìn)的......

        學(xué)習(xí)筆記

        政 治 學(xué)習(xí)講 座 長嶺縣第二幼兒園 本學(xué)期,幼兒園進(jìn)行了教師業(yè)務(wù)學(xué)習(xí)改革,變自上而下的單向組織學(xué)習(xí),為自上而下和自下而上想結(jié)合的雙向交流、相互學(xué)習(xí)的形式,旨在提高教師的......

        學(xué)習(xí)筆記

        學(xué)習(xí)筆記(一) 唐理歡 學(xué)習(xí)內(nèi)容:《運(yùn)用微課實(shí)現(xiàn)翻轉(zhuǎn)課堂》 來自因特網(wǎng) 翻轉(zhuǎn)課堂的興起在一定程度上借助了慕課的理念和聲勢,而真正能夠?qū)崿F(xiàn)翻轉(zhuǎn)課堂則是微課,因此,對于學(xué)會制作與運(yùn)......

        學(xué)習(xí)筆記

        社會主義核心價(jià)值觀 1. 先說“富強(qiáng)、民主、文明、和諧”。國家的價(jià)值目標(biāo)在社會主義核心價(jià)值觀中居于主導(dǎo)地位,決定著社會的價(jià)值取向,影響著個(gè)人的價(jià)值標(biāo)準(zhǔn)。每個(gè)人的前途命運(yùn)......

        學(xué)習(xí)筆記

        堅(jiān)持全心全意為人民服務(wù)的宗旨,是堅(jiān)持黨的性質(zhì)的本質(zhì)要求。十六大黨章對黨的性質(zhì)作出了新表述,明確指出:“中國共產(chǎn)黨是中國工人階級的先鋒隊(duì),同時(shí)是中國人民和中華民族的先鋒隊(duì)......

        學(xué)習(xí)筆記

        黨章是我們黨"最根本的黨規(guī)黨法",是我們黨全部活動的總章程,是每一名黨員必須遵守的基本準(zhǔn)則。每一名黨員都要認(rèn)真學(xué)習(xí)貫徹黨章,要做學(xué)習(xí)貫徹黨章的模范。 一、學(xué)習(xí)貫徹黨章,做......