1. 程式人生 > >藍芽核心技術概述(四):藍芽協議規範(HCI、L2CAP、SDP、RFOCMM)

藍芽核心技術概述(四):藍芽協議規範(HCI、L2CAP、SDP、RFOCMM)

關鍵詞:藍芽核心技術協議  HCI  L2CAP SDP RFCOMM

作者:xubin341719(歡迎轉載,請註明作者,請尊重版權,謝謝!)歡迎指正錯誤,共同學習、共同進步!!

一、主機控制介面協議  HCI
藍芽主機-主機控模型

藍芽軟體協議棧堆的資料傳輸過程:


1、藍芽控制器介面資料分組:指令分組、事件分組、資料分組
(1)、指令分組


如:Accpet Connection Request
Opcode為:0x0409
引數長度為: 07
引數中藍芽地址為:00:0d:fd:5f:16:9f
角色為:從裝置  0x01
大端資料模式
指令為:09 04 07 9f 16 5f fd 0d 00 01
(2)、事件分組


如上圖:
Opcode :0x0409
狀態: 0x00
總長度: 4位元組
命令狀態:0x0f
(3)、資料分組

ACL 資料分組

連線控制代碼(12bit)

PB(2bit)

BC(2bit)

資料長度(16bit)

資料…………

注:PB  Packet_Boundary  BC Broadcast Flag
SCO 資料分組

連線控制代碼(12bit)

保留(4bit)

資料長度(16bit)

資料…………

(4)、RS232分組指示器:

HCI 分組型別

RS232分組指示器

HCI指令分組

0x01

HCI ACL資料分組

0x02

HCI SCO資料分組

0x03

HCI事件分組

0x04

HCI錯誤訊息分組

0x05

HCI協商分組

0x06

2、HCI控制命令

(1)、鏈路控制指令

命令

OCF

概述

Inquiry

0x0001

藍芽裝置進入查詢模式,搜尋臨近裝置

Inquiry Cancel

0x0002

退出查詢模式

Periodic Inquiry Mode

0x0003

藍芽裝置在指定週期內自動查詢

Exit Periodic Inquiry Mode

0x0004

退出自動查詢模式

Create Connection

0x0005

按指定藍芽裝置的BD_ADDR建立ACL鏈路

Disconnect

0x0006

終止現有連線

Add SCO Connection

0x0007

利用連線控制代碼引數指定的ACL連線建立SCO

Cancel Create Connection

0x0008

Accept Connection Request

0x0009

接收新的呼入連線請求

Reject Connection Request

0x000A

拒絕新的呼入連線請求

Link Key Request Reply

0x000B

應答從主機控制器發出的鏈路金鑰請求事件,並指定儲存在主機上的鏈路金鑰做為與BD_ADDR指定的藍芽裝置進行連線使用的鏈路金鑰請求事件

Link Key Request Negative Reply

0x000C

如果主機上沒有儲存鏈路金鑰,作為與BD_ADDR指定的藍芽裝置進行連線使用的鏈路金鑰,就應答從主機控制器發出的鏈路金鑰請求事件

PIN Code Request Reply

0x000D

應答從主機控制器發出的PIN請求事件,並指定用於連線的PIN

PIN Code Request Negative Reply

0x000E

當主機不能指定連線的PIN時,應回答從機控制器發出的PIN請求事件

Change Connection Packet Type

0x000F

改變正在建立連線的分組型別

Authentication Request

0x0011

指定連線控制代碼關聯的兩個藍芽裝置之間建立身份鑑權

Set Connection Encryption

0x0013

建立取消連線加密

Change Connection Link Key

0x0015

強制關聯了連線控制代碼的兩個裝置建立連線,並生成一個新的鏈路金鑰

Master Link Key

0x0017

強制關聯了連線控制代碼的兩個裝置利用主裝置時鏈路金鑰或常規金鑰

Remote Name Request

0x0019

獲取遠端裝置的名稱

Cancel Remote Name Request

Read Remote Supported Features

0x001B

請求遠端裝置所支援的特性列表

Read Remote Extended Features

Read Remote Version Information

0x001D

從遠端裝置讀取版本資訊

Read Clock Offset

0x001F

讀取遠端的時鐘資訊

(2)、鏈路策略指令

命令

OCF

簡介

Hold Mode

0x0001

改變LM狀態和本地及遠端裝置為主模式的LM位置

Sniff Mode

0x0003

改變LM狀態和本地及遠端裝置為呼吸模式的LM位置

Exit Sniff Mode

0x0004

結束連線控制代碼在當前呼吸模式裡的呼吸模式

Park State

0x0005

改變LM狀態和本地及遠端裝置為休眠模式的LM位置

Exit Park State

0x0006

切換從休眠模式返回到啟用模式的藍芽裝置

QoS Setup

0x0007

指出連線控制代碼的服務質量引數

Role Discovery

0x0009

藍芽裝置連線後確定自己的主從角色

Switch Role

0x000B

角色互換

Read Link Policy Settings

0x000C

為指定連線控制代碼讀鏈路策略設定。鏈路策略設定允許主機控制器指定用於連線控制代碼的LM連線模式

Write Link Policy Settings

0x000D

為指定連線控制代碼寫鏈路策略設定。鏈路策略設定允許主機控制器指定用於連線控制代碼的LM連線模式

Read Default Link Policy Settings

0x000E

Write Default Link Policy Settings

0x000F

Flow Specification

0X0010

(3)、主機控制器與基帶指令

Set Event Mark

0x0001

使能主機過濾HCI產生的事件

Reset

0x0003

復位藍芽控制器、鏈路管理器、基帶鏈路管理器

Set Event Filter

0x0005

使能主機指定不同事件過濾

Flush

0x0008

針對指定的藍芽控制代碼,放棄所有作為當前待傳輸資料,甚至當前是屬於多個在主機控制器裡的L2CAP指令的資料塊

Read PIN Type

0x0009

主機讀取指定主機的PIN型別是可變的還是固定的

Write PIN Type

0x000A

主機寫入指定主機的PIN型別是可變的還是固定的

Create New Unit Key

0x000B

建立新的單一金鑰

Read Stored Link Key

0x000D

讀取存放在藍芽控制器中的單個或者多個金鑰

Write Stored Link Key

0x0011

寫入存放在藍芽控制器中的單個或者多個金鑰

Delete Stored Link Key

0x0012

刪除存放在藍芽控制器中的單個或者多個金鑰

Write Local Name

0x0013

修改藍芽裝置名稱

Read Local Name

0x0014

讀取藍芽裝置名稱

Read Connection Accept Timeout

0x0015

讀連線識別超時引數值,定時器終止後藍芽硬體自動拒絕連線

Write Connection Accept Timeout

0x0016

寫連線識別超時引數值,定時器終止後藍芽硬體自動拒絕連線

Read Page Timeout

0x0017

讀尋呼超時引數值,本地裝置返回連線失敗前,該值是允許藍芽硬體定義等待遠端裝置連線申請時間

Write Page Timeout

0x0018

寫尋呼超時引數值,本地裝置返回連線失敗前,該值是允許藍芽硬體定義等待遠端裝置連線申請時間

Read Scan Enable

0x0019

寫出掃描允許引數值---用來控制藍芽裝置週期性查詢

Write Scan Enable

0x001A

讀出掃描允許引數值---用來控制藍芽裝置週期性查詢

Read Page Scan Activity

0x001B

讀尋呼掃描間隔、尋呼掃描區間引數

Write Page Scan Activity

0x001C

寫尋呼掃描間隔、尋呼掃描區間引數

Read Inquiry Scan Activity

0x001D

讀查詢掃描間隔、查詢掃描區間引數

Write Inquiry Scan Activity

0x001E

寫查詢掃描間隔、查詢掃描區間引數

Read Authentication Enable

0x001F

讀取鑑權允許引數---控制藍芽裝置是否對每個連線進行鑑權

Write Authentication Enable

0x0020

寫取鑑權允許引數---控制藍芽裝置是否對每個連線進行鑑權

Read Encryption Mode

0x0021

讀加密模式數值---控制藍芽裝置是否對每個連線進行加密

Write Encryption Mode

0x0022

寫加密模式數值---控制藍芽裝置是否對每個連線進行加密

Read Class Of Device

0x0023

讀取裝置型別引數值,用於區別裝置能力

Write Class Of Device

0x0024

寫裝置型別引數值,用於區別裝置能力

Read Voice Setting

0x0025

讀取語音設定引數值,控制語音連線的各種設定

Write Voice Setting

0x0026

寫語音設定引數值,控制語音連線的各種設定

Read Automatic Flush Timeout

0x0027

對指定控制代碼,讀取重新整理超時值

Write Automatic Flush Timeout

0x0028

對指定控制代碼,寫入重新整理超時值

Read Num Broadcast Retransmissions

0x0029

讀取裝置的廣播重複傳送次數,重複傳送提高廣播訊息的可靠性

Write Num Broadcast Retransmissions

0x002A

寫入裝置的廣播重複傳送次數,重複傳送提高廣播訊息的可靠性

Read Hold Mode Activity

0x002B

讀取Hold Mode Activity的引數值,用來確定Hold掛起的時間

Write Hold Mode Activity

0x002C

寫入Hold Mode Activity的引數值,用來確定Hold掛起的時間

Read Transmit Power Level

0x002D

對指定控制代碼,讀取傳輸功率的引數值

Read Synchronous Flow Control Enable

0x002E

讀取SCO流量控制設定。通過使用該設定,主機控制器決定是否主機控制器傳送與SCO連線控制代碼相關的完成分組事件的數量

Write Synchronous Flow Control Enable

0x002F

讀寫入SCO流量控制設定。通過使用該設定,主機控制器決定是否主機控制器傳送與SCO連線控制代碼相關的完成分組事件的數量

Set Host Controller To Host Flow Control

0x0031

主機控制器的開啟、關閉,主機控制器到主機的流量控制

Host Buffer Size

0x0033

主機通知主機控制器自己的ACL、SCO資料緩衝區大小。主機控制器分段傳輸資料,而資料不會超出這個範圍

Host Number Of Completed Packets

0x0035

當主機對於任何連線的控制代碼準備接受較多的HCI指令時,該指令用於通過主機指出主機控制器

Read Link Supervision Timeout

0x0036

讀取連線管理超時引數。主從藍芽裝置用該引數監視鏈路丟失情況

Write Link Supervision Timeout

0x0037

寫入連線管理超時引數。主從藍芽裝置用該引數監視鏈路丟失情況

Read Number of Supported IAC

0x0038

讀取查詢掃描期間本地藍芽掃描的查詢識別碼(ICA)的數值

Read Current IAC LAP

0x0039

讀取建立在查詢掃描期間本地藍芽裝置正同時掃描的藍芽識別碼的LAP

Write Current IAC LAP

0x003A

寫入建立在查詢掃描期間本地藍芽裝置正同時掃描的藍芽識別碼的LAP

Read Page Scan Period Mode

0x003B

讀取本地藍芽裝置的強制尋呼掃描區間模式

Write Page Scan Period Mode

0x003C

寫入本地藍芽裝置的強制尋呼掃描區間模式

Read Page Scan Mode

0x003D

讀取本地藍芽裝置的預設尋呼掃描區間模式

Write Page Scan Mode

0x003E

寫入本地藍芽裝置的預設尋呼掃描區間模式

(4)、資訊指令引數

Read Local Version Information

0x0001

讀取本地藍芽版本資訊

Read Local Supported Features

0x0003

讀取本地藍芽裝置特徵表

Read Local Extended Features

0x0004

Read Buffer Size

0x0005

返回HCI緩衝容量。緩衝容量用於傳輸緩衝資料

Read Country Code [Deprecated]

0x0007

讀取國家程式碼狀態引數值

Read BD ADDR

0x0009

讀取BD_ADDR的引數值

(5)、狀態指令引數

Read Failed Contact Count

0x0001

讀取對於其他裝置特殊連線的Failed Contact Count引數值。Failed Contact Count記錄在重新整理時終止及當前正在傳輸的L2CAP資料指令被自動重新整理後,主單元或從單元不能連續響應事件次數

Reset Failed Contact Count

0x0002

復位時對於其他裝置的連線的Failed Contact Count的引數值。Failed Contact Count記錄在重新整理時終止及當前正在傳輸的L2CAP資料指令被自動重新整理後,主單元或從單元不能連續響應事件次數

Get Link Quality

0x0003

讀取指定連線控制代碼的Link Quality的值

Read RSSI

0x0005

讀取對於其他藍芽裝置連線控制代碼的接收訊號強度指示

Read AFH Channel Map

0x0007

Read BD Clock

0x0009

(6)、測試指令

Read Loopback Mode

0x0001

讀取主機端控制器會送模式的設定值。回送模式設定可以確定資訊傳送路徑

Write Loopback Mode

0x0002

寫入主機控制器會送模式的設定值。回送模式設定可以確定資訊傳送路徑

Enable Device Under Test Mode

0x0003

允許本地藍芽裝置模組通過LMP測試指令接入測試模式。當主機要求本地裝置作為待測試裝置,實現藍芽測試模式檔案中規定測試場景,則傳送該指令

(7)、錯誤程式碼

錯誤程式碼

錯誤含義

錯誤程式碼

錯誤含義

0x01

位置HCI指令

0x14

由於另一端引起連線中斷:資源限制

0x02

不能連線

0x15

由於另一端引起連線中斷:關機

0x03

硬體故障

0x16

本機中斷連線

0x04

尋呼超時

0x17

重複嘗試

0x05

身份驗證失敗

0x18

不允許匹配

0x06

鍵丟失

0x19

未知LMP PDU

0x07

儲存器已滿

0x1A

不支援遠端特性

0x08

連線超時

0x1B

拒絕SCO補償

0x09

最大連線數

0x1C

拒絕SCO間歇模式

0x0A

連線到裝置A的最大SCO連線數

0x1D

拒絕SCO無線模式

0x0B

ACL連線已存在

0x1E

非法鏈路管理引數

0x0C

指令非法

0x1F

未特別指明錯誤

0x0D

由於資源有限,主機被拒絕

0x20

不支援鏈路管理器協議引數

0x0E

由於安全原因,主機被拒絕

0x21

不允許角色改變

0x0F

由於遠端裝置單連線裝置,主機拒絕

0x22

鏈路管理響應超時

0x10

主機超時

0x23

鏈路管理錯誤處理事務衝突

0x11

不支援特性或引數值

0x24

不允許LMP PDU

0x12

非法主機控制介面指令

0x25~0xFF

保留

0x13

由於另一端引起連線中斷:使用者中斷連線

二、邏輯鏈路控制與適配協議  L2CAP
L2CAP位於基帶之上,將基帶的資料分組轉換為便於高層應用的資料分組格式,並提供協議複用和服務質量交換等功能。L2CAP只支援ACL資料傳輸,不支援SCO資料。
L2CAP本身不提供加強通道可靠性和保證資料完整性的機制,其通道的可靠性依靠基帶提供。

1、協議複用:底層傳輸協議沒有提供對高層協議的複用機制,因而L2CAP支援高層協議複用,L2CAP層可以區分其上的SDP、RFCOMM、TCS等。

2、分段重組:L2CAP層幫助實現基帶的短PDU和高層的長PDU相互傳輸,L2CAP本身不完成任何PDU的分段重組,具體的分段重組有低層和高層來完成。

3、服務質量 Qualityof Serivce 資訊的交換:藍芽建立連線的過程中,L2CAP允許互動藍芽所期望的服務質量,建立完成後,通過監視資源的使用情況,來保證服務質量。

4、組抽象:L2CAP忽略地址組概念,他只關心資料。

L2CAP通道有三種類型:

A、面向連線通道:Connection-OrientedCO,用於兩個裝置之間的資料通訊。

B、無連線通道:Connection-LessCL,用來向一組裝置廣播方式傳輸資料。CID為固定值:0x0002。

C、信令通道:Signaling,用於建立CO通道,可以通過協商改變CO通道的特性。

CL通道的L2CAP_PDU

長度(2bytes)

通道ID(0x0002)

PSM(最小為2bytes)

有效載荷

PSM為 協議/服務複用器Protocol/Service Multiplexer,一般為SDP、RFCOMM、TCS等中介協議複用。小於0x1000的值,0x0001對應SDP,0x0003對應RFCOMM、0x0005對應TCS。
(1)、藍芽邏輯鏈路控制與適配協議信令:
L2CAP的信令通道的CID為0x0001

信令指令分組:

長度(2byte)

CID(0x0001)

指令1

指令2

……………

指令n

L2CAP 分組頭部分

信令指令格式:

程式碼(1byte)

識別符號(1byte)

長度(2byte)

資料

信令指令頭

如上圖所示,一條L2CAP信令,1為L2CAP分組頭,2為信令指令頭,3為資料部分。

L2CAP:

         Role:Master

         Address:11

         PDULength: 6  //指令的長度,值為06 00

         ChannelID: 0x0001  (Signaling)//L2CAP的信令通道,值為01 00

         Code:Information request//資訊請求,值為0a

         Identifier:1//識別符號,值為01

         CommandLength: 2//命令長度,值為02 00

         InfoType:Extended features supported//02 00

所以這條指令完整的為:

06 00 01 00 0a 01 02 00 02 00

信令的其他操作如下:


L2CAP信令指令碼:

Code

Description

0x00

RESERVED

保留

0x01

Command reject

拒絕命令

0x02

Connection request

連線請求

0x03

Connection response

連線響應

0x04

Configure request

配置請求

0x05

Configure response

配置響應

0x06

Disconnection request

斷開請求

0x07

Disconnection response

斷開響應

0x08

Echo request

0x09

Echo response

0x0A

Information request

資訊請求

0x0B

Information response

資訊響應

1)、連線請求Connection_Request Code=0x02

程式碼(0x02

識別符號(1位元組)

長度(2位元組)

PSM(2位元組)

源CID(2位元組)

例如:SDP 連線請求

如上紅框所示:

程式碼(0x02)

識別符號(1位元組)

長度(2位元組)

PSM(2位元組)

源CID(2位元組)

0x02

3

4

SDP

0x0040

2)、連線相應Connection_Response Code=0x03

程式碼(0x03)

識別符號

長度

目標CID

源CID

結果

狀態

例如:SDP請求響應

如上面紅框所示:

程式碼(0x03)

識別符號

長度

目標CID

源CID

結果

狀態

0x03

3

8

0x0040

0x0040

0x0000

(2)、MTU MAXIMUMTRANSMISSION UNIT最大傳輸單元

MTU最大傳輸單元,L2CAP應用必須支援最小為48位元組的MTU,預設值為672

(3)、QoS 服務質量

三、服務發現協議   SDP

SDP兩種服務發現模式:
1)、服務搜尋:查詢具有特定服務屬性的服務;
2)、服務瀏覽:簡單的瀏覽全部可用服務。
(1)、PDU 格式:(協議資料單元)

PDU ID(1byte)

Transaction ID(2byte)

引數長度(2byte)

引數1

……

引數N

Header

不同PDU ID實現SDP的不同功能,概述如下表格:

Value

Parameter Descirption

0x00

Reserved 

保留

0x01

SDP_ErrorResponse

錯誤響應

0x02

SDP_ServiceSearchRequest

服務搜尋請求

0x03

SDP_ServiceSearchResponse

服務搜尋響應

0x04

SDP_ServiceAttributeRequest

服務屬性請求

0x05

SDP_ServiceAttributeResponse

服務屬性響應

0x06

SDP_ServiceSearchAttributeRequest

服務搜尋屬性請求

0x07

SDP_ServiceSearchAttributeResponse

服務搜尋屬性響應

0x08-0xff

Reserved

保留

(2)、服務記錄表
SDP的服務記錄表對每一個服務進行描述,每條記錄包含服務控制代碼、一組服務屬性:


Service Record Attributes:服務記錄;
Service Record Handle 服務控制代碼;
Attribute 服務屬性;


四、串列埠模擬協議   RFCOMM

為建立在串列埠之上的傳統應用提供環境介面,使他們可以做比較少協議改動就可以在藍芽無線通訊無線鏈路上工作。多路串列埠模擬是RFCOMM的重要功能,通過多路複用器(multiplexer),一條L2CAP鏈路可以同時 多個序列應用。
兩臺裝置間的串列埠模擬:

RFCOMM 兩個藍芽裝置之間可以支援多達60多路模擬串列埠。

RFCOMM幀型別如下:

SABM

非同步平衡模式設定指令

UA

未加編號的確認響應

DM

斷開連線模式響應

DISC

斷開連線指令

UIH

帶頭校驗的未編號資訊命令和響應


相關推薦

核心技術概述協議規範HCIL2CAPSDPRFOCMM

關鍵詞:藍芽核心技術協議  HCI  L2CAP SDP RFCOMM作者:xubin341719(歡迎轉載,請註明作者,請尊重版權,謝謝!)歡迎指正錯誤,共同學習、共同進步!!一、主機控制介面協議  HCI藍芽主機-主機控模型藍芽軟體協議棧堆的資料傳輸過程:1、藍芽控制器介

核心技術概述:使用場景

關鍵詞:藍芽核心技術協議  A2DP AVDTP  HF HCP BIP BPP…………作者:xubin341719(歡迎轉載,請註明作者,請尊重版權,謝謝!)歡迎指正錯誤,共同學習、共同進步!!藍芽應用的過程中,不同的場合、功能及相關協議。這篇將做詳細的介紹說明。1、ADV

核心技術概述:使用場景轉載

轉載:xubin341719 網址:http://blog.csdn.net/xubin341719/article/details/38228705 藍芽應用的過程中,不同的場合、功能及相關協議。這篇將做詳細的介紹說明。 1、ADVANCED AUDIO DISTRIBUTION PROFILE高階音訊分

核心技術概述:概述

關鍵詞:藍芽 核心技術 協議 版本 歷史作者:xubin341719(歡迎轉載,請註明作者,請尊重版權,謝謝)歡迎指正錯誤,共同學習、共同進步!!下載連線:Bluetooth PROFILE SPECIFICATIONS (基本涵蓋所有藍芽協議)、buletooth core

核心技術概述

cap tail 協議 技術 cmm bsp ron 核心 detail 藍牙核心技術概述(一):藍牙概述藍牙核心技術概述(二):藍牙使用場景藍牙核心技術概述(三): 藍牙協議規範(射頻、基帶鏈路控制、鏈路管理)藍牙核心技術概述(四):藍牙協議規範(HCI、L2CAP、SD

1核心技術瞭解協議架構硬體和軟體筆記

原文地址:http://www.cnblogs.com/zjutlitao/p/4742428.html 宣告:這篇文章是樓主beautifulzzzz學習網上關於藍芽的相關知識的筆記,其中比較多的受益於xubin341719的藍芽系列文章,同時還有其他網上作者的資料。由於有些文章只做參

核心技術瞭解協議架構硬體和軟體筆記

下面是摘抄筆記內容:     藍芽,是一種支援裝置短距離通訊(一般10m內)的無線電技術。能在包括行動電話、PDA、無線耳機、膝上型電腦、相關外設等眾多裝置之間進行無線資訊交換。利用“藍芽”技術,能夠有效地簡化行動通訊終端裝置之間的通訊,也能夠成功地

協議學習整理協議規範irOBEXBNEPAVDTPAVCTP

第四章 藍芽協議規範(irOBEX、BNEP、AVDTP、AVCTP) 一、IrDA互操作協議 IrOBEX 紅外物件互動協議,簡稱OBEX,使高層協議同時運作在藍芽和紅外的無線鏈路之上。 主要操作指令有:連線操作、斷開操作、Put操作、Get操作

Redis核心技術進階Java開發

Jedis Jedis使用java語言開發的程式,用來連線redis服務java API。呼叫jedis 介面就可以操作redis服務。 建立java工程 建立java工程,匯入jar檔案。

核心技術瞭解

宣告:本文在網路蒐羅整理,僅用於知識儲備 下面是摘抄筆記內容:     藍芽,是一種支援裝置短距離通訊(一般10m內)的無線電技術。能在包括行動電話、PDA、無線耳機、膝上型電腦、相關外設等眾多裝置之間進行無線資訊交換。利用“藍芽”技術,能夠有效

協議學習整理協議規範射頻基帶鏈路控制鏈路管理

第二章 藍芽協議規範(射頻、基帶鏈路控制、鏈路管理) 藍芽協議是藍芽裝置間交換資訊所應該遵守的規則。與開放系統互聯(OSI)模型一樣,藍芽技術的協議體系也採用了分層結構,從底層到高層形成了藍芽協議棧,各層協議定義了所完成的功能和使用資料分組格式,以保證藍芽

演算法導論 第遞迴式 筆記代換法遞迴樹方法主方法主定理的證明

三種解遞迴式的方法:代換法、遞迴樹方法、主方法。 代換法: 用代換法解遞迴式需要兩個步驟: 猜測解的形式; 用數學歸納法找出使解真正有效的常數。 如: T(n) = 2T(n/2) + n,這個是合併排序的執行時間的遞迴表示式。歸併排序法的執行時間是O(nlgn),那麼我

程序程序間通訊 —— Queue佇列和Pipe管道

目錄 程序間通訊 佇列  概念介紹 方法介紹 程式碼例項 生產者消費者模型 JoinableQueue([maxsize])  管道(瞭解) 程序間通訊 IPC(Inter-Process Communication) 佇列&nbs

感知機+SVM+LR

主要內容 2. 支援向量機(下)     2.3 軟間隔最大化         2.3.1 線性支援向量機       &nbs

區塊鏈技術基礎語言三十一Go語言網路程式設計

原文連結:區塊鏈技術基礎語言(三十一):Go語言網路程式設計(上)   一、網路概述   1.1 網路協議 網路協議就是為網路資料交換而制定的規則、約定與標準。   1.2 分層模型 為了降低網路設計的複雜性,絕大多數網路都組織成一堆相互

兩種監聽器方法基於AndroidStudio3.2

一、佈局 在主程式介面上新增新按鈕,如以前一樣。 建立一個 Activity,名字為MeventActivity 新增一個三個Button控制元件。 新增呼叫該視窗程式給按鈕“多事件” Button btn2 = (Button) findViewByI

【鏈塊技術50期】區塊鏈技術基礎語言三十二Go語言網路程式設計

原文連結:區塊鏈技術基礎語言(三十二):Go語言網路程式設計(下)   本文緊接上文所述,講解socket程式設計和HTTP程式設計。 一、socket程式設計 在上一節我們介紹了網路體系的五層模型,介紹了每層模型所遵守的協議。TCP/IP是一個協議族,它由網路層的IP協議

SpringBootSpringBoot與資料訪問未完待續

1、簡介 對於資料訪問層,無論是SQL還是NOSQL,SpringBoot預設採用整合SpringData(SpringData是Spring 的一個子專案。用於簡化資料庫訪問,支援NoSQL 和 關係資料儲存。其主要目標是使資料庫的訪問變得方便快捷)的方式進行

EventBus原始碼分析執行緒模型分析2.4版本

EventBus有四種執行緒模型 PostThread模式不需執行緒切換,直接在釋出者執行緒進行事件處理。 MainThread模式分類討論:釋出者執行緒是主執行緒則直接呼叫事件處理方法,否則通過Handler進行執行緒切換,切換到主執行緒處理事件,該模

【Java多執行緒程式設計核心技術】第章 Lock的使用

使用ReentrantLock類 Lock lock = new ReentrantLock(); lock.lock(); //同步的程式碼段 ... lock.unlock(); Condition用法:await(), signal()方法呼叫之前需要呼叫lock.loc