<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Jack Jiang

    我的最新工程MobileIMSDK:http://git.oschina.net/jackjiang/MobileIMSDK
    posts - 494, comments - 13, trackbacks - 0, articles - 1

    本文引用了ELab團(tuán)隊(duì)、騰訊大講堂兩個(gè)公眾號(hào)分享的文章內(nèi)容,引用內(nèi)容見文末參考資料,感謝原作者的無(wú)私分享。

    1、引言

    對(duì)于市面上主流的IM來(lái)說(shuō),跟二維碼有關(guān)的功能,比如掃碼加好友、掃碼登陸、掃碼加群等,都是很常見的。

    這是微信的掃碼登錄功能:

    這是微信的掃碼加好友功能:

     二維碼技術(shù)使用起來(lái)很簡(jiǎn)單,本系列的前三篇文章也專門針對(duì)IM掃碼登錄這個(gè)功能做了詳細(xì)的分享,但本著學(xué)習(xí)技術(shù)不留死角的習(xí)慣,我認(rèn)為有必要單獨(dú)學(xué)習(xí)一下到底什么是二維碼(說(shuō)不定哪天被個(gè)剛?cè)胄械某绦騿T輕輕一句“哥,啥是2維碼”,給問(wèn)的懵逼了,那時(shí)就不僅“頭涼”,還會(huì)“心梗”...),這也是專門整理本文的目的所在。

    說(shuō)明:準(zhǔn)確地說(shuō),我們平時(shí)見的最多的二維碼其實(shí)是QR碼,也就是目前我國(guó)應(yīng)用最為廣泛的一種二維碼。為了表述簡(jiǎn)單,如無(wú)特指,本文中所述二維碼皆指QR碼。

    學(xué)習(xí)交流:

    - 即時(shí)通訊/推送技術(shù)開發(fā)交流5群:215477170 [推薦]

    - 移動(dòng)端IM開發(fā)入門文章:《新手入門一篇就夠:從零開發(fā)移動(dòng)端IM

    - 開源IM框架源碼:https://github.com/JackJiang2011/MobileIMSDK 

    本文同步發(fā)布于:http://www.52im.net/thread-3735-1-1.html

    2、專題目錄

    本文是系列文章的第4篇,總目錄如下:

    1. IM掃碼登錄技術(shù)專題(一):微信的掃碼登錄功能技術(shù)原理調(diào)試分析
    2. IM掃碼登錄技術(shù)專題(二):市面主流的掃碼登錄技術(shù)原理調(diào)試分析
    3. IM掃碼登錄技術(shù)專題(三):通俗易懂,IM掃碼登錄功能詳細(xì)原理一篇就夠
    4. IM掃碼登錄技術(shù)專題(四):你真的了解二維碼嗎?刨根問(wèn)底、一文掌握!》(* 本文

    推薦:另一篇《難得干貨,揭秘支付寶的2維碼掃碼技術(shù)優(yōu)化實(shí)踐之路》可一并閱讀。

    3、二維碼的源起

    準(zhǔn)確地說(shuō),我們平時(shí)見的最多的二維碼其實(shí)是QR碼,也就是目前我國(guó)應(yīng)用最為廣泛的一種二維碼。為了表述簡(jiǎn)單,如無(wú)特指,本文中所述二維碼皆指QR碼。

    3.1 時(shí)代背景

    上個(gè)世紀(jì)60年代之后,日本經(jīng)濟(jì)迎來(lái)的高速增長(zhǎng)期,種類繁多的商品的超市開始在城市中出現(xiàn)。

    當(dāng)時(shí)超市使用的現(xiàn)金出納機(jī)要靠手動(dòng)輸入商品價(jià)格,因此負(fù)責(zé)現(xiàn)金出納的人常常會(huì)因手腕的麻木和“腱鞘炎”而苦惱。

    “能否減輕超市收款員的負(fù)擔(dān)呢?”

    條形碼的出現(xiàn)解決了這一苦惱。由于POS系統(tǒng)的成功開發(fā),僅通過(guò)光感讀取條形碼,價(jià)格就會(huì)自動(dòng)顯示在出納機(jī)上,同時(shí)讀取的商品信息還能傳送到計(jì)算機(jī)上。

    如此一來(lái),條形碼得以普及,但新的課題又隨之而來(lái)。問(wèn)題在于條形碼的容量有限,英文數(shù)字最多只能容納20個(gè)字。

    “編碼本身要是能夠含有更多的信息就好了”、“希望具有漢字和假名的處理功能”。

    當(dāng)時(shí)正在從事條形碼讀取機(jī)研發(fā)的Denso Wave公司(這家公司是日本電裝株式會(huì)社(Denso Corporation)旗下的子公司)了解到了這類需求。在這一背景下,研發(fā)小組懷著“一定要滿足客戶需求”的心愿,投入到了新的二維碼的研發(fā)之中。

    3.2 研發(fā)2人組

    “當(dāng)時(shí)其他公司研發(fā)的二維碼把重點(diǎn)放在了信息量的納入上”,當(dāng)時(shí)負(fù)責(zé)二維碼研發(fā)的騰弘原(Masahiro Hara)回首當(dāng)年如是說(shuō)。

    ▲ 上圖中的“怪大叔”就是騰弘原(Masahiro Hara)

    條形碼只能橫向(一維)存儲(chǔ)信息,相比之下,二維碼則能縱橫二維存儲(chǔ)信息。騰弘原的考慮是,除了能夠容納大量的信息外,“研發(fā)的編碼還要便于讀取”,據(jù)此投入了新的二維碼的研發(fā)之中。研發(fā)小組僅僅只有兩人。

    3.3 技術(shù)難題

    騰弘原(Masahiro Hara)的研發(fā)小組面臨的最大技術(shù)難題,是如何實(shí)現(xiàn)高速讀取。

    有一天,騰弘原的腦海里浮現(xiàn)出這樣一個(gè)思路:“附上‘此處有編碼’這樣的位置信息會(huì)怎樣?”

    于是想到的是回字形的“定位圖案”。將這一圖形放入二維碼中,便可實(shí)現(xiàn)其他公司無(wú)法模仿的高速讀取。

    ▲ 上圖中三個(gè)角的回字型圖案就是“定位圖案”

    ▲ “定位圖案”黑白色塊比例是1:1:3:1:1

    3.4 “定位圖案”為何是回字型?

    定位圖案為何要使用那種回字型的呢?

    騰弘原解釋說(shuō):“因?yàn)檫@種圖形在票據(jù)等當(dāng)中出現(xiàn)頻率最小”。

    也就是說(shuō):如果附近有同樣的圖形,讀取機(jī)就會(huì)將其誤認(rèn)為是編碼,為了防止這種誤讀,定位圖案必須是唯一的圖形。

    經(jīng)過(guò)全面考慮:騰弘原等人決定將印刷在廣告單、雜志、紙板等處的繪圖和文字全部變成黑白兩色,對(duì)其面積比率進(jìn)行徹底的調(diào)查。

    研發(fā)小組日以繼夜地對(duì)無(wú)數(shù)的印刷品進(jìn)行調(diào)查的結(jié)果,終于查明了印刷品中“最不常用的比率”,即1︰1︰3︰1︰1。

    這樣:便確定了定位圖案黑白部分的寬幅比率。所形成的結(jié)構(gòu)是,掃描線可以從360度方向掃描,無(wú)論從哪個(gè)方向掃描,一旦掃到其獨(dú)特的比率,便可計(jì)算出編碼的位置。

    ▲回字型 “定位圖案”使得無(wú)論從哪個(gè)方向掃描都能正常識(shí)別

    研發(fā)項(xiàng)目啟動(dòng)后經(jīng)過(guò)一年半的時(shí)間,在經(jīng)歷了幾多曲折之后,可容納約7000個(gè)數(shù)字的二維碼(準(zhǔn)確地說(shuō)是QR碼)終于誕生了。其特點(diǎn)是能進(jìn)行漢字處理,大容量,而且讀取速度比其他編碼快10倍以上。

    3.5 二維碼的專利費(fèi)

    既然二維碼(準(zhǔn)確地說(shuō)是QR碼)這東西是由公司和個(gè)人研究完成,那為時(shí)至今日它的專利費(fèi)到底該怎么收取呢?

    坊間傳聞,騰弘原說(shuō)了這么一句話:“這種技術(shù)其實(shí)隨便找個(gè)網(wǎng)絡(luò)工具就能實(shí)現(xiàn),所以這么簡(jiǎn)單的東西,我就不收專利費(fèi)啦。”。

    當(dāng)然以上只是傳聞,應(yīng)該不是真的。

    實(shí)際上Denso Wave公司擁有QR碼的專利權(quán),完全可以向使用QR碼的公司或個(gè)人收費(fèi)專利費(fèi),但Denso Wave公司明確表示不會(huì)行使這項(xiàng)權(quán)利。這是開始研發(fā)當(dāng)初就定下來(lái)的方針,也反映了研發(fā)者的想法:“希望能有更多的人使用QR碼”。

    于是無(wú)需成本、可放心使用的QR碼現(xiàn)已作為“公共的編碼”,在全世界得到了廣泛的應(yīng)用。

    4、二維碼的優(yōu)點(diǎn)

    回到技術(shù)本身,用現(xiàn)代的視角先來(lái)總結(jié)一下二維碼到底有什么有點(diǎn)。

    二維碼出現(xiàn)之前,在需要使用類似編碼的場(chǎng)景時(shí),采用的都是一維碼(條形碼)。

    但是條形碼承載的信息太少,只能用于一些很簡(jiǎn)單的場(chǎng)景,因此條形碼除了用于商品等信息,并沒(méi)有廣泛流行。

     

    總結(jié)一下,二維碼具有以下優(yōu)點(diǎn):

    • 1)信息容量大:可容納多達(dá) 1850 個(gè)大寫字母或 2710 個(gè)數(shù)字或 1108 個(gè)字節(jié),或 500 多個(gè)漢字,比普通條碼信息容量約高幾十倍;
    • 2)編碼范圍廣:該條碼可以把圖片、聲音、文字、簽字、指紋等可以數(shù)字化的信息進(jìn)行編碼,用條碼表示出來(lái);
    • 3)容錯(cuò)能力強(qiáng):具有糾錯(cuò)功能,這使得二維條碼因穿孔、污損等引起局部損壞時(shí),照樣可以正確得到識(shí)讀,損毀面積達(dá) 50% 仍可恢復(fù)信息;
    • 4)譯碼可靠性:它比普通條碼譯碼錯(cuò)誤率百萬(wàn)分之二要低得多,誤碼率不超過(guò)千萬(wàn)分之一;
    • 5)可引入加密:保密性、防偽性好;
    • 6)使用成本低:易制作,持久耐用。

    5、初識(shí)二維碼

    我們可以先試著生成一個(gè)二維碼,演示地址是:https://kazuhikoarase.github.io/qrcode-generator/js/demo/。

     如上圖所示:可以發(fā)現(xiàn),二維碼有 4 個(gè)可變項(xiàng),其中主要的 2 個(gè)為版本和容錯(cuò)率。

    1)版本(TypeNumber):

    一共有 40 個(gè)尺寸,對(duì)應(yīng) 40 個(gè)版本;Version1是 21*21 的矩形,之后每增加一個(gè)版本,就增加4的尺寸,即(v-1)4+21,最高是Version40,177177 的正方形。

    2)容錯(cuò)率(ErrorCorrectionLevel):

    二維碼容錯(cuò)率即是指二維碼圖標(biāo)被遮擋多少后,仍可以被掃描出來(lái)的能力。容錯(cuò)率越高,則二維碼圖片能被遮擋的部分越多。

    二維碼有 4 個(gè)容錯(cuò)等級(jí):

     根據(jù)以上配置不同,相同的內(nèi)容,在不同的配置下產(chǎn)生的二維碼不一樣,但掃出的內(nèi)容是一樣的。

    6、二難碼的設(shè)計(jì)原理

    日常我們看到的二維碼就是一張由黑白色塊混合在一起的一張圖片,我們肯定也知道這些黑白色塊就是內(nèi)容的某種編碼,但其實(shí)除了內(nèi)容外,二維碼還有許多其他輔助掃碼識(shí)別的信息。

     如上圖所示,按右側(cè)標(biāo)識(shí)的從上到下的順序,分別是功能區(qū)和數(shù)據(jù)區(qū)。

    6.1 功能區(qū)

    功能區(qū)的主要內(nèi)容是:

    • 1)位置探測(cè)圖形:位于左上、左下、右上的三個(gè)矩形,可以說(shuō)是二維碼最重要的組成部分;
    • 2)位置探測(cè)圖形分隔符:位置探測(cè)圖形周圍的白邊,用于分割位置探測(cè)圖形和數(shù)據(jù)。
    • 3)定位圖形:三個(gè)位置探測(cè)圖形之間的兩根“線”,用于確定二維碼符號(hào)中模塊的坐標(biāo)(相當(dāng)于坐標(biāo)軸);
    • 4)校正圖形:用于校正定位(只有版本2以上有),版本越高個(gè)數(shù)越多,以校正可能發(fā)生的定位偏移。

    位置探測(cè)圖形的作用主要是:

    • 1)確定二維碼的放置方向:不管順著掃倒著掃,都可以準(zhǔn)確找到第一個(gè)編碼字符的位置(左上矩形的右邊);如果任一矩形被遮擋,掃描設(shè)備將無(wú)法定位;
    • 2)確定編碼字符的邊界:確定編碼字符的上下左右邊界,不被周圍其他信息干擾。

    從網(wǎng)上搜二維碼圖片,可以觀察下,這些二維碼都具有位置探測(cè)圖形、位置探測(cè)圖形分隔符及定位圖形。

    其中第三幅,定位圖形不太對(duì),也確實(shí)就掃不出來(lái):

    6.2 數(shù)據(jù)區(qū)

    數(shù)據(jù)區(qū)的主要內(nèi)容是:

    • 1)格式信息:存放包括糾錯(cuò)碼類型、掩碼類型等信息;
    • 2)數(shù)據(jù)和糾錯(cuò)碼字:最主要的部分,用于存放數(shù)據(jù)和糾錯(cuò)信息。

    除掉定位區(qū)以及格式信息,數(shù)據(jù)和糾錯(cuò)碼字的排布如下:

    7、二維碼的生成流程

     在所有數(shù)據(jù)都完成放置之后,還有一步操作:添加掩碼。

    掩碼主要是為了避免,如果出現(xiàn)大面積的空白或黑塊,導(dǎo)致我們掃描識(shí)別的困難。

    常用的掩碼如下:

     數(shù)據(jù)經(jīng)過(guò)掩碼后,基本不會(huì)再出現(xiàn)大面積的黑塊和白塊,利于掃描。

     

    注:掩碼只會(huì)與數(shù)據(jù)區(qū)進(jìn)行 XOR,不會(huì)影響功能區(qū)。

    8、Show me the code

    只要遵循以上二維碼的規(guī)范,生成對(duì)應(yīng)的二維碼圖形即可,具體實(shí)現(xiàn)邏輯不影響。

    這里我們參考jquery-qrcode,簡(jiǎn)單看下實(shí)現(xiàn)。

    主要流程如下:

    makeImpl : function(test, maskPattern) {

        this.moduleCount = this.typeNumber * 4 + 17;

        this.modules = newArray(this.moduleCount);

        for(varrow = 0; row < this.moduleCount; row++) {

          this.modules[row] = newArray(this.moduleCount);

          for(varcol = 0; col < this.moduleCount; col++) {

            this.modules[row][col] = null;//(col + row) % 3;

          }

        }

     

        this.setupPositionProbePattern(0, 0);// 位置探測(cè)圖形

        this.setupPositionProbePattern(this.moduleCount - 7, 0);// 位置探測(cè)圖形

        this.setupPositionProbePattern(0, this.moduleCount - 7);// 位置探測(cè)圖形

        this.setupPositionAdjustPattern(); // 校正圖形

        this.setupTimingPattern(); // 定位圖形(坐標(biāo)軸)

        this.setupTypeInfo(test, maskPattern); // 版本信息

     

        if(this.typeNumber >= 7) {

          this.setupTypeNumber(test);

        }

     

        if(this.dataCache == null) {

          this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList); // 生成數(shù)據(jù)

        }

     

        this.mapData(this.dataCache, maskPattern); // 加入掩碼

      },

    生成二維數(shù)據(jù)后,再把點(diǎn)一一繪制出來(lái)即可:

    var createCanvas  = function(){

          // create the qrcode itself

          var qrcode  = new QRCode(options.typeNumber, options.correctLevel);

          qrcode.addData(options.text);

          qrcode.make();

     

          // create canvas element

          var canvas  = document.createElement('canvas');

          canvas.width  = options.width;

          canvas.height = options.height;

          var ctx   = canvas.getContext('2d');

     

          // compute tileW/tileH based on options.width/options.height

          var tileW = options.width  / qrcode.getModuleCount();

          var tileH = options.height / qrcode.getModuleCount();

     

          // draw in the canvas

          for( varrow = 0; row < qrcode.getModuleCount(); row++ ){

            for( varcol = 0; col < qrcode.getModuleCount(); col++ ){

              ctx.fillStyle = qrcode.isDark(row, col) ? options.foreground : options.background;

              var w = (Math.ceil((col+1)*tileW) - Math.floor(col*tileW));

              var h = (Math.ceil((row+1)*tileH) - Math.floor(row*tileH));

              ctx.fillRect(Math.round(col*tileW),Math.round(row*tileH), w, h); 

            }

          }

     

          // return just built canvas

          return canvas;

        }

    9、藝術(shù)二維碼

    日常我們見到的二維碼都是黑白的,但其實(shí)二維碼可以多姿多彩。

     這里有很多樣式,可以試一試:https://qrbtf.com/。

    二維碼之所以可以五顏六色,是因?yàn)槎S碼的有用信息只是 0 和 1,至于 0 和 1 用什么信息表達(dá),只要掃碼軟件可以識(shí)別就行。目前的掃碼軟件一般都是對(duì)圖片進(jìn)行灰度處理,所以二維碼上的點(diǎn)無(wú)論如何表達(dá),只要經(jīng)過(guò)灰度處理后 0 和 1 沒(méi)有顛倒,則信息不會(huì)出錯(cuò),不會(huì)影響掃碼結(jié)果。

    藝術(shù)二維碼實(shí)現(xiàn)起來(lái)也不難,只要區(qū)分特定的數(shù)據(jù)區(qū),并用特定的圖片渲染即可,有興趣可以參考:https://github.com/252860883/ArtQRCode

    更簡(jiǎn)單一點(diǎn)的,也可以直接降低黑白透明度,背景渲染特定的圖片:

     如果只是網(wǎng)頁(yè)上顯示,還可以做成 gif 動(dòng)圖形式(這里就不貼樣本了)。

    不過(guò),藝術(shù)二維碼由于顏色更豐富干擾信息更多,因此相比黑白二維碼,藝術(shù)二維碼對(duì)掃描軟件的要求也更高。

    10、微信小程序碼

    小程序碼和二維碼雖然看起來(lái)完全不一樣,但是它們的設(shè)計(jì)思想及生成流程是基本一樣的。

    如上圖所示,微信小程序碼的特征有:

    • 1)具有位置探測(cè)圖形;
    • 2)支持3種容量:36 射線、54 射線和 72 射線;
    • 3)具有 L、M、Q、H 4種容錯(cuò)級(jí)別;
    • 4)掩碼操作均勻0、1碼點(diǎn)。

    題外話:了解二維碼的原理后,其實(shí)我們自己也可以手畫二維碼。

    11、一個(gè)有趣的問(wèn)題:“二維碼會(huì)被用完嗎?”

    這個(gè)問(wèn)題很簡(jiǎn)單,答案是:會(huì)。

    因?yàn)槎S碼的尺寸是有限的,那二維碼的數(shù)量就是有限的。

    但是用完所有的二維碼,需要很長(zhǎng)很長(zhǎng)的時(shí)間。。。

    現(xiàn)在的二維碼有40個(gè)官方版本,從Version1-40,最小為21*21、最大為177*177矩陣。

    其中,以微信名片為例,就是37×37 的矩陣規(guī)格,微信的付款碼是 25×25 的矩陣規(guī)格。為了方便理解,我們用方塊作為矩陣單位。

     ▲ 上圖就是微信名片(即37×37矩陣的二維碼)

    如何計(jì)算,各矩陣中生成的二維碼個(gè)數(shù)?

    我們來(lái)舉個(gè)例子:

     如上圖所示的四宮格,每個(gè)格子有兩種顏色變化,請(qǐng)問(wèn)一個(gè)四宮格可以組合出多少個(gè)圖形?

     答案是:一個(gè)格子兩種顏色,那就是兩種可能,兩個(gè)格子就是四種可能,三個(gè)格子就是8種可能,四個(gè)格子就是16種可能。所以,四宮格能夠組成2^4,共16個(gè)圖形。

    以此類推,以微信的 25X25 付款碼為例:

     每一排有 25 個(gè)方塊,共 25 列,除去定位用的方塊和冗余糾錯(cuò)的方塊等,還剩下478 個(gè)方塊。按照二進(jìn)制,每個(gè)方塊只有黑或白兩種選擇,所以 478 個(gè)小方塊理論上一共可以組合 2^478 個(gè)二維碼。

    也就是一個(gè)25X25規(guī)格尺寸的二維碼可以生成:

    780437137578998057845399307448291576437149535666242787714789239906342934704941405030076525765872992789956732780351655723861993919822071326572544個(gè)二維碼。

    大家可以嘗試念出來(lái)大概多少個(gè)?

    根據(jù)疫情期間1400億個(gè)二維碼的數(shù)量來(lái)計(jì)算,假設(shè)微信一年會(huì)用掉6000億個(gè)二維碼。那微信用掉25X25這一個(gè)尺寸產(chǎn)生的二維碼需要多少年呢?

    我們來(lái)算一下:2^478/6000億=1.301×10^132 年(超多億億億億年)。

    所以:雖然理論上二維碼確實(shí)有用完的那一天,但實(shí)際上這個(gè)時(shí)間幫長(zhǎng)了,以至于我們現(xiàn)在完全可以不用考慮!

    12、參考資料

    [1] 難得干貨,揭秘支付寶的2維碼掃碼技術(shù)優(yōu)化實(shí)踐之路

    [2] 你每天都掃的二維碼,知道它是怎么來(lái)的么?

    [3] 二維碼,你真的了解嗎?

    [4] 二維碼會(huì)被人類掃完嗎?

    [5] QR碼的成功之路

    [6] 有趣的二維碼

    附錄:更多IM相關(guān)入門級(jí)文章

    新手入門一篇就夠:從零開發(fā)移動(dòng)端IM

    技術(shù)往事:改變世界的TCP/IP協(xié)議(珍貴多圖、手機(jī)慎點(diǎn))

    通俗易懂-深入理解TCP協(xié)議(上):理論基礎(chǔ)

    網(wǎng)絡(luò)編程懶人入門(一):快速理解網(wǎng)絡(luò)通信協(xié)議(上篇)

    網(wǎng)絡(luò)編程懶人入門(二):快速理解網(wǎng)絡(luò)通信協(xié)議(下篇)

    腦殘式網(wǎng)絡(luò)編程入門(一):跟著動(dòng)畫來(lái)學(xué)TCP三次握手和四次揮手

    腦殘式網(wǎng)絡(luò)編程入門(二):我們?cè)谧x寫Socket時(shí),究竟在讀寫什么?

    網(wǎng)絡(luò)編程入門從未如此簡(jiǎn)單(一):假如你來(lái)設(shè)計(jì)網(wǎng)絡(luò),會(huì)怎么做?

    網(wǎng)絡(luò)編程入門從未如此簡(jiǎn)單(二):假如你來(lái)設(shè)計(jì)TCP協(xié)議,會(huì)怎么做?

    IM開發(fā)者的零基礎(chǔ)通信技術(shù)入門(十一):為什么WiFi信號(hào)差?一文即懂!

    IM開發(fā)者的零基礎(chǔ)通信技術(shù)入門(十二):上網(wǎng)卡頓?網(wǎng)絡(luò)掉線?一文即懂!

    IM開發(fā)者的零基礎(chǔ)通信技術(shù)入門(十三):為什么手機(jī)信號(hào)差?一文即懂!

    IM開發(fā)者的零基礎(chǔ)通信技術(shù)入門(十四):高鐵上無(wú)線上網(wǎng)有多難?一文即懂!

    從根上理解高性能、高并發(fā)(一):深入計(jì)算機(jī)底層,理解線程與線程池

    從根上理解高性能、高并發(fā)(二):深入操作系統(tǒng),理解I/O與零拷貝技術(shù)

    史上最強(qiáng)Java NIO入門:擔(dān)心從入門到放棄的,請(qǐng)讀這篇!

    網(wǎng)頁(yè)端IM通信技術(shù)快速入門:短輪詢、長(zhǎng)輪詢、SSE、WebSocket

    搞懂現(xiàn)代Web端即時(shí)通訊技術(shù)一文就夠:WebSocket、socket.io、SSE

    一套海量在線用戶的移動(dòng)端IM架構(gòu)設(shè)計(jì)實(shí)踐分享(含詳細(xì)圖文)

    一套原創(chuàng)分布式即時(shí)通訊(IM)系統(tǒng)理論架構(gòu)方案

    一套億級(jí)用戶的IM架構(gòu)技術(shù)干貨(上篇):整體架構(gòu)、服務(wù)拆分等

    一套億級(jí)用戶的IM架構(gòu)技術(shù)干貨(下篇):可靠性、有序性、弱網(wǎng)優(yōu)化等

    即時(shí)通訊音視頻開發(fā)(十八):詳解音頻編解碼的原理、演進(jìn)和應(yīng)用選型

    即時(shí)通訊音視頻開發(fā)(十九):零基礎(chǔ),史上最通俗視頻編碼技術(shù)入門

    零基礎(chǔ)入門:實(shí)時(shí)音視頻技術(shù)基礎(chǔ)知識(shí)全面盤點(diǎn)

    零基礎(chǔ)IM開發(fā)入門(一):什么是IM系統(tǒng)?

    零基礎(chǔ)IM開發(fā)入門(二):什么是IM系統(tǒng)的實(shí)時(shí)性?

    零基礎(chǔ)IM開發(fā)入門(三):什么是IM系統(tǒng)的可靠性?

    零基礎(chǔ)IM開發(fā)入門(四):什么是IM系統(tǒng)的消息時(shí)序一致性?

    開源移動(dòng)端IM技術(shù)框架MobileIMSDK:快速入門

    本文已同步發(fā)布于“即時(shí)通訊技術(shù)圈”公眾號(hào)。

    同步發(fā)布鏈接是:http://www.52im.net/thread-3735-1-1.html



    作者:Jack Jiang (點(diǎn)擊作者姓名進(jìn)入Github)
    出處:http://www.52im.net/space-uid-1.html
    交流:歡迎加入即時(shí)通訊開發(fā)交流群 215891622
    討論:http://www.52im.net/
    Jack Jiang同時(shí)是【原創(chuàng)Java Swing外觀工程BeautyEye】【輕量級(jí)移動(dòng)端即時(shí)通訊框架MobileIMSDK】的作者,可前往下載交流。
    本博文 歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處(也可前往 我的52im.net 找到我)。


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    Jack Jiang的 Mail: jb2011@163.com, 聯(lián)系QQ: 413980957, 微信: hellojackjiang
    主站蜘蛛池模板: 久久99亚洲综合精品首页| 特级毛片免费播放| 中文字幕亚洲综合久久菠萝蜜| 黄页网站在线看免费| a级毛片免费全部播放| 国产精品亚洲一区二区三区| 亚洲五月综合网色九月色| 亚洲成av人影院| 亚洲精品在线免费看| 国产亚洲一区区二区在线 | 亚洲国产精品va在线播放| 成人伊人亚洲人综合网站222| 日本永久免费a∨在线视频| 亚洲性在线看高清h片| 精品国产麻豆免费网站| 波多野结衣在线免费视频 | 亚洲AV人无码激艳猛片| 亚洲区不卡顿区在线观看| 国产精品二区三区免费播放心| 啦啦啦高清视频在线观看免费| 国产人成免费视频网站| 8x8×在线永久免费视频| 免费A级毛片无码专区| 污视频在线免费观看| 免费观看久久精彩视频| 中文字幕日本人妻久久久免费| 久久性生大片免费观看性| 久久久精品国产亚洲成人满18免费网站 | 亚洲精品资源在线| 久久久亚洲裙底偷窥综合| 亚洲黄色片在线观看| 亚洲日韩中文字幕天堂不卡 | 美女尿口扒开图片免费 | 亚洲精品亚洲人成在线观看下载| 国产伦一区二区三区免费 | 国产亚洲综合一区柠檬导航| 野花高清在线电影观看免费视频| 成人午夜免费福利视频| 在线视频观看免费视频18| 成人人观看的免费毛片| 国产免费观看黄AV片|