<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

    本文由微信開(kāi)發(fā)團(tuán)隊(duì)工程是由“oneliang”原創(chuàng)發(fā)表于WeMobileDev公眾號(hào),內(nèi)容稍有改動(dòng)。

    1、引言

    Kotlin 是一個(gè)用于現(xiàn)代多平臺(tái)應(yīng)用的靜態(tài)編程語(yǔ)言,由 JetBrains 開(kāi)發(fā)(也就是開(kāi)發(fā)了號(hào)稱Java界最智能的集成開(kāi)發(fā)工具IntelliJ IDEA的公司)。Kotlin可以編譯成Java字節(jié)碼(就像Groovy和Scala一樣),也可以編譯成JavaScript,方便在沒(méi)有JVM的設(shè)備上運(yùn)行。Kotlin已于2017年的Google I/O開(kāi)發(fā)者大會(huì)上正式被宣布為Android官方支持開(kāi)發(fā)語(yǔ)言(見(jiàn)《[資訊] Kotlin成為Android官方開(kāi)發(fā)語(yǔ)言!》)。

    有人說(shuō)Kolin對(duì)于Android的作用,是不是Swift對(duì)于iOS的作用一樣(主要用于降低Objective-C開(kāi)發(fā)門(mén)檻等)。實(shí)際上,Kotlin對(duì)于Android的意義和重要性要遠(yuǎn)大于Swift對(duì)于iOS,因?yàn)椴还苁荗bjective-C還是Swift,它們至少都是蘋(píng)果自已的東西,而悲劇的是Java并不屬于Google。鑒于Google和Oracle(Java的創(chuàng)造者SUN公司早就被Oracle收購(gòu)了)的官司(見(jiàn)《[資訊] Java侵權(quán)案逆轉(zhuǎn):Google需賠88億!》),如何解決掉Java這個(gè)如鯁在喉的歷史遺留,是Android決策者早就在考慮的問(wèn)題,只是恰好選中了Kotlin而已。

    Google官方已在各種場(chǎng)合直接或間接地表明了對(duì)于Kotlin和Java的態(tài)度——那就是Kotlin是 “Over” Java的(即可以理解為Kotlin在ANdroid中的定位是高于Java的)。所以,不管Android開(kāi)發(fā)者有沒(méi)有做好準(zhǔn)備,或者還在糾結(jié)要不要學(xué)習(xí)Kotlin時(shí),都不影響Kotlin在Android中的定位和越來(lái)越明確的地位。但無(wú)論如何,對(duì)于Android開(kāi)發(fā)者來(lái)說(shuō),多學(xué)一門(mén)技術(shù)確實(shí)很痛苦,但提前做好準(zhǔn)備是更明智之選,至少到了Kotlin真的取代Java的那一天,而不至于后懂準(zhǔn)備地太晚。

    作為移動(dòng)端即時(shí)通訊IM應(yīng)用的王者——微信,為了始終保持技術(shù)的領(lǐng)先性,無(wú)論日后Kotlin在微信客戶中的重要性幾何,技術(shù)團(tuán)隊(duì)做好技術(shù)儲(chǔ)備和預(yù)研實(shí)踐是肯定有必要的,于是便有了本文的整理和分享,希望業(yè)界共同學(xué)習(xí)、互相交流。

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

    2、概述

    微信訂閱號(hào)助手的Android App項(xiàng)目首次嘗試使用Kotlin進(jìn)行大規(guī)模的業(yè)務(wù)開(kāi)發(fā)(483個(gè)Kt文件,3.8W行不包含空行的Kt代碼),一開(kāi)始接觸Kotlin的時(shí)候難免會(huì)有點(diǎn)不適應(yīng),但經(jīng)過(guò)幾天的強(qiáng)制使用后,慢慢有些感覺(jué),項(xiàng)目落地后回顧了一下,發(fā)現(xiàn)Kotlin確實(shí)是有它獨(dú)特的風(fēng)味。

    什么是微信訂閱號(hào)助手?

    微信公眾平臺(tái)“訂閱號(hào)助手”APP已正式上架App Store,通過(guò)這款訂閱號(hào)助手APP,公眾號(hào)運(yùn)營(yíng)者可以快捷地編輯和發(fā)表內(nèi)容、方便地處理留言和回復(fù)粉絲消息。

    訂閱號(hào)助手app能將你的iPhone變成一個(gè)隨身的公眾號(hào)“工作室”,無(wú)論身處何地,你都可以發(fā)表內(nèi)容、與讀者互動(dòng)。訂閱號(hào)助手app簡(jiǎn)潔的編輯工具讓每個(gè)人輕松變身為作者,留住即刻的靈感,盡享內(nèi)容創(chuàng)作的樂(lè)趣。訂閱號(hào)助手app讓每個(gè)有才華的個(gè)體都有機(jī)會(huì)被關(guān)注,都有自己的品牌。

    3、“烹飪”準(zhǔn)備

    食材:

    1)Android,主要食材(指Framework、Api等);

    2)Kotlin,食用安全、味鮮(擴(kuò)展函數(shù))、香(重載)、甜(富含糖份Lambda),第二主要食材,切好塊狀;

    3)Java,少量,Kotlin這種食材需要它來(lái)做引子。


    鍋:

    AndroidStudio、Eclipse這兩個(gè)牌子的鍋質(zhì)量都不錯(cuò)。


    調(diào)味料:

    Kotlin Android Extension、Android KTX、AndroidX、Anko等。


    如果沒(méi)有上述這些材料請(qǐng)移步到如下網(wǎng)址"購(gòu)買":

    https://developers.google.com/android

    https://kotlinlang.org/docs/reference

    https://www.oracle.com/java

    4、“烹飪”過(guò)程

    1)開(kāi)火,放少量食用油;

    2)先把Android倒進(jìn)去,伴兩下;

    3)倒少量Java,主要是"字節(jié)碼"和"工具部分",再伴兩下;

    4)把切好塊的Kotlin一塊塊慢慢平鋪在Android上面,把Android蓋??;

    5)慢火煮3-5分鐘,觀察一下這個(gè)過(guò)程:

    Kotlin把Android的味道慢慢釋放出來(lái),比Android + Java更香;

    Kotlin與Java融為一體 (前提是少量Java,如果Java放得太多,香味會(huì)受影響,粘合不夠好,容易松散(NPE));

    6)關(guān)火,燜一會(huì)。

    5、開(kāi)鍋,上菜

    色香味倶全,敬請(qǐng)盡情享受這番獨(dú)特的風(fēng)味。

    5.1 特色風(fēng)味一:食用安全

    食用安全,Nullable or NotNul從源頭抓起。

    Kotlin代碼安全性更強(qiáng):

    varoutput: String

    output = null// Compilation error

    val name: String? = null// Nullable type

    println(name.length())      // Compilation error

    食用安全從從源頭上抓起,只要跟定義不符就編譯不通過(guò),這是Kotlin小而精的一個(gè)優(yōu)點(diǎn),一下子能把整碟"菜"的安全系數(shù)提高,此Code來(lái)自官方文檔。

    5.2 特色風(fēng)味二:鮮

    擴(kuò)展函數(shù),味道鮮美,百吃不厭。

    項(xiàng)目工具類的另一種寫(xiě)法:

    fun String.toIntSafely(defaultValue: Int = 0): Int {

        returntry{

            this.toInt()

        } catch(e: Exception) {

            defaultValue

        }

    }

    fun main(args: Array<String>) {

        println("1".toIntSafely())

    }

    String 轉(zhuǎn) Int,這種需求幾乎很多項(xiàng)目都是需要,像上述Kotlin如果是在Java里面描述的話,估計(jì)會(huì)寫(xiě)成這樣:

    public final class StringUtil{

        private StringUtil() {}

        public static int stringToInt(String string, int defaultValue) {

            //省略

        }

    }

    使用時(shí):

    StringUtil.stringToInt("1", 0);

    大家看到這里可能會(huì)覺(jué)得沒(méi)什么,大家都是工具類,用的時(shí)候有些小差別而已。

    但正因?yàn)檫@些小差別,優(yōu)點(diǎn)就體現(xiàn)出來(lái)了,確實(shí)是鮮美:

    1)不需要記住工具類的名字和方法的名字:假如你是一個(gè)剛接手項(xiàng)目的新人,正準(zhǔn)備做一個(gè)需求開(kāi)發(fā),突然需要這種String to Int的工具,但是不知道工具在哪,這就好比你去到一個(gè)陌生人的家里,想找個(gè)螺絲刀擰個(gè)松掉的螺絲一樣,這“螺絲刀”在哪?除了問(wèn)“主人”之外,要么就是“翻柜子”,這不就顯得效率低么?使用Kotlin的擴(kuò)展函數(shù)就能有效避免前面所說(shuō)的問(wèn)題,接手項(xiàng)目的新人只需要輕輕的“.”一下,滾兩下鼠標(biāo),"toIntSafely"的方法就會(huì)看到。這就為什么你看Kotlin的Java擴(kuò)展庫(kù)很多都是通過(guò)擴(kuò)展函數(shù)來(lái)封裝;

    2)方法的類歸屬更好理解:以上述的"toIntSafely"為例,String.toIntSafely,使得開(kāi)發(fā)者更容易直觀感受到這個(gè)函數(shù)是用于String,不像StringUtil.stringToInt沒(méi)有歸屬可言,純粹就是一個(gè)工具函數(shù),不如Kotlin的寫(xiě)法容易理解;

    3)對(duì)定義函數(shù)者的要求高了:正因體現(xiàn)了函數(shù)的類歸屬,也就使得開(kāi)發(fā)者在定義函數(shù)的時(shí)候需要考慮歸屬給哪個(gè)類還是頂層函數(shù)這些問(wèn)題,歸屬的范圍少了,會(huì)導(dǎo)致不好用,范圍廣了又怕暴露導(dǎo)致濫用或者誤用。

    5.3 特色風(fēng)味三:香

    重載(Overload),回味無(wú)窮。

    雖然這個(gè)概念在面向?qū)ο箢I(lǐng)域用得很多,但Kotlin這個(gè)重載的味道真是令我們吃上癮。

    重載在工具類的場(chǎng)景用得非常多,一個(gè)項(xiàng)目下來(lái)沒(méi)工具類也是不可能。

    例如我們?cè)陧?xiàng)目中會(huì)封裝一些對(duì)話框(Dialog)工具類供開(kāi)發(fā)的同學(xué)一句調(diào)用:

    1)開(kāi)發(fā)的同學(xué)需要在界面顯示一個(gè)Dialog,只想改變Dialog的內(nèi)容,那么Java里面就有showDialog(String message)的寫(xiě)法;

    2)開(kāi)發(fā)的同學(xué)需要在界面顯示一個(gè)Dialog,即想改變Dialog的標(biāo)題,又想改變Dialog的內(nèi)容,那么Java里面就有showDialog(String title, String message)的寫(xiě)法;

    3)開(kāi)發(fā)的同學(xué)想改變Dialog里面Icon的....

    4)開(kāi)發(fā)的同學(xué)想......

    這些場(chǎng)景估計(jì)做Android開(kāi)發(fā)的同學(xué)都會(huì)碰到,其實(shí)不限于Android,Java開(kāi)發(fā)的同學(xué)也經(jīng)常遇到。

    我們看看Kotlin是怎樣把這些需求收攏:

    fun showDialog(title: String = "標(biāo)題", message: String = "內(nèi)容") {

        //TODO

    }

    這個(gè)寫(xiě)法一下子滿足 2的2次方(4) 種重載方法:

    showDialog()

    showDialog("新標(biāo)題")

    showDialog(message = "新內(nèi)容")

    showDialog("新標(biāo)題", "新內(nèi)容")

    這種重載方式有效地減少我們項(xiàng)目中的重載方法數(shù)量,使得我們項(xiàng)目開(kāi)發(fā)更簡(jiǎn)潔和更有效率 ,自然就回味無(wú)窮。

    5.4 特色風(fēng)味四:甜而不膩

    帶了糖,甜而不膩。

    Kotlin里面Function與Lambda既可相互理解,又有其味道(寫(xiě)法)上的一些差異。

    味道 (結(jié)果) 一樣,但味道消去的過(guò)程 (用法) 有差別。

    Function(函數(shù))常用寫(xiě)法:

    fun f(x: Int): Any {

        returnAny()

    }

    用法:

    val y = f(1)

    Function(函數(shù))的一種Lambda寫(xiě)法:

    fun f() = { x: Int -> Any() } 等價(jià)于 fun f(): (Int) -> Any = { x: Int -> Any() }

    用法:

    val y = f()(1) 或 val y = f().invoke(1)

    Lambda寫(xiě)法:

    val f = { x: Int -> Any() } 等價(jià)于 val f: (Int) -> Any = { x: Int -> Any }

    用法:

    val y = f(1) 或 val y = f.invoke(1)

    細(xì)節(jié)點(diǎn):Function時(shí),有"="跟沒(méi)有"="意義不一樣,有"="的時(shí)候可以理解右邊( { x: Int -> Any() } )是 左邊函數(shù)返回類型((Int) -> Any) 的實(shí)現(xiàn)。

    函數(shù)不用置疑,項(xiàng)目里面必備。

    Lambda:

    Lambda,語(yǔ)法糖,這是怎樣的一種成份?

    Lambda是長(zhǎng)這樣的:

    val block: () -> Unit = {}

    val sum: (Int, Int) -> Int = { p1, p2 -> p1 + p2 }

    Lambda令我們的項(xiàng)目減少了很多接口類,尤其是回調(diào)接口,我們項(xiàng)目幾乎沒(méi)有。一般的業(yè)務(wù)場(chǎng)景里面回調(diào)接口都會(huì)用得不少,Lambda能有效減少這種Callback接口的定義,少寫(xiě)不少接口類,事半功倍。

    另lambda里面不能寫(xiě)return,最后一行的值就是返回值。

    從數(shù)學(xué)函數(shù)角度抽象理解:

    函數(shù): y = f(x)

    〉假設(shè)x與y都是Int類型

    可以理解為 Kotlin 函數(shù):

    fun f(x: Int): Int {

        return1 // 這里的返回值就是對(duì)應(yīng)y

    }

    也可以理解為 Lambda:

    val f = { x: Int -> 1 } 等價(jià)于 val f: (Int) -> Int = { x: Int -> 1 }

    使用時(shí)f(1),但是如果像上述那種f(x)的kotlin函數(shù)與f(x)的lambda同時(shí)同名同方法簽名存在,使用上要f(1)與f.invoke(1)來(lái)區(qū)分是函數(shù)調(diào)用還是lambda調(diào)用。

    〉假設(shè)x與y都是Lambda類型

    x是Lambda類型 (Int) -> Int ,y是Lambda類型 (Int) -> Int,可以換算成:

    fun f(x: (Int) -> Int): (Int) -> Int {

        return{ it -> x(it) }

    }

    或這樣:

    fun f(x: (Int) -> Int): (Int) -> Int = { it -> x(it) }

    使用時(shí):

    f { it -> it + 10 }(1) or f { it -> it + 10 }.invoke(1)

    或 Lambda:

    val f: ((Int) -> Int) -> ((Int) -> Int) = { x -> { it -> x(it) } } // val時(shí)要inline

    使用時(shí):

    f.invoke { it -> it + 10 }.invoke(1)

    通過(guò)上述的 替換 能更好地理解和使用Lambda。

    6、如何更好地了解Kotlin這種食材的味道

    Kotlin用于Java領(lǐng)域,中間產(chǎn)物毫無(wú)疑問(wèn)還是字節(jié)碼,因此本質(zhì)還是Java的基礎(chǔ)知識(shí),反編譯Kotlin生成的字節(jié)碼是學(xué)習(xí)Kotlin一種較好的方式,可利用AndroidStudio的Tools來(lái)反編譯kt,能幫助快速理解Kotlin。

    謝謝品嘗這份美味,希望Kotlin這款食材能帶給各位讀者不少Android上的特色的風(fēng)味。

    附錄:QQ、微信團(tuán)隊(duì)原創(chuàng)技術(shù)文章

    微信朋友圈千億訪問(wèn)量背后的技術(shù)挑戰(zhàn)和實(shí)踐總結(jié)

    騰訊技術(shù)分享:騰訊是如何大幅降低帶寬和網(wǎng)絡(luò)流量的(圖片壓縮篇)

    騰訊技術(shù)分享:騰訊是如何大幅降低帶寬和網(wǎng)絡(luò)流量的(音視頻技術(shù)篇)

    微信團(tuán)隊(duì)分享:微信移動(dòng)端的全文檢索多音字問(wèn)題解決方案

    騰訊技術(shù)分享:Android版手機(jī)QQ的緩存監(jiān)控與優(yōu)化實(shí)踐

    微信團(tuán)隊(duì)分享:iOS版微信的高性能通用key-value組件技術(shù)實(shí)踐

    微信團(tuán)隊(duì)分享:iOS版微信是如何防止特殊字符導(dǎo)致的炸群、APP崩潰的?

    騰訊技術(shù)分享:Android手Q的線程死鎖監(jiān)控系統(tǒng)技術(shù)實(shí)踐

    微信團(tuán)隊(duì)原創(chuàng)分享:iOS版微信的內(nèi)存監(jiān)控系統(tǒng)技術(shù)實(shí)踐

    讓互聯(lián)網(wǎng)更快:新一代QUIC協(xié)議在騰訊的技術(shù)實(shí)踐分享

    iOS后臺(tái)喚醒實(shí)戰(zhàn):微信收款到賬語(yǔ)音提醒技術(shù)總結(jié)

    騰訊技術(shù)分享:社交網(wǎng)絡(luò)圖片的帶寬壓縮技術(shù)演進(jìn)之路

    微信團(tuán)隊(duì)分享:視頻圖像的超分辨率技術(shù)原理和應(yīng)用場(chǎng)景

    微信團(tuán)隊(duì)分享:微信每日億次實(shí)時(shí)音視頻聊天背后的技術(shù)解密

    QQ音樂(lè)團(tuán)隊(duì)分享:Android中的圖片壓縮技術(shù)詳解(上篇)

    QQ音樂(lè)團(tuán)隊(duì)分享:Android中的圖片壓縮技術(shù)詳解(下篇)

    騰訊團(tuán)隊(duì)分享:手機(jī)QQ中的人臉識(shí)別酷炫動(dòng)畫(huà)效果實(shí)現(xiàn)詳解

    騰訊團(tuán)隊(duì)分享 :一次手Q聊天界面中圖片顯示bug的追蹤過(guò)程分享

    微信團(tuán)隊(duì)分享:微信Android版小視頻編碼填過(guò)的那些坑》 

    微信手機(jī)端的本地?cái)?shù)據(jù)全文檢索優(yōu)化之路》 

    企業(yè)微信客戶端中組織架構(gòu)數(shù)據(jù)的同步更新方案優(yōu)化實(shí)戰(zhàn)

    微信團(tuán)隊(duì)披露:微信界面卡死超級(jí)bug“15。。。。”的來(lái)龍去脈

    QQ 18年:解密8億月活的QQ后臺(tái)服務(wù)接口隔離技術(shù)

    月活8.89億的超級(jí)IM微信是如何進(jìn)行Android端兼容測(cè)試的

    以手機(jī)QQ為例探討移動(dòng)端IM中的“輕應(yīng)用”

    一篇文章get微信開(kāi)源移動(dòng)端數(shù)據(jù)庫(kù)組件WCDB的一切!

    微信客戶端團(tuán)隊(duì)負(fù)責(zé)人技術(shù)訪談:如何著手客戶端性能監(jiān)控和優(yōu)化

    微信后臺(tái)基于時(shí)間序的海量數(shù)據(jù)冷熱分級(jí)架構(gòu)設(shè)計(jì)實(shí)踐

    微信團(tuán)隊(duì)原創(chuàng)分享:Android版微信的臃腫之困與模塊化實(shí)踐之路

    微信后臺(tái)團(tuán)隊(duì):微信后臺(tái)異步消息隊(duì)列的優(yōu)化升級(jí)實(shí)踐分享

    微信團(tuán)隊(duì)原創(chuàng)分享:微信客戶端SQLite數(shù)據(jù)庫(kù)損壞修復(fù)實(shí)踐》 

    騰訊原創(chuàng)分享(一):如何大幅提升移動(dòng)網(wǎng)絡(luò)下手機(jī)QQ的圖片傳輸速度和成功率》 

    騰訊原創(chuàng)分享(二):如何大幅壓縮移動(dòng)網(wǎng)絡(luò)下APP的流量消耗(下篇)》 

    騰訊原創(chuàng)分享(三):如何大幅壓縮移動(dòng)網(wǎng)絡(luò)下APP的流量消耗(上篇)》 

    微信Mars:微信內(nèi)部正在使用的網(wǎng)絡(luò)層封裝庫(kù),即將開(kāi)源》 

    如約而至:微信自用的移動(dòng)端IM網(wǎng)絡(luò)層跨平臺(tái)組件庫(kù)Mars已正式開(kāi)源》 

    開(kāi)源libco庫(kù):?jiǎn)螜C(jī)千萬(wàn)連接、支撐微信8億用戶的后臺(tái)框架基石 [源碼下載]》 

    微信新一代通信安全解決方案:基于TLS1.3的MMTLS詳解》 

    微信團(tuán)隊(duì)原創(chuàng)分享:Android版微信后臺(tái)?;顚?shí)戰(zhàn)分享(進(jìn)程保活篇)》 

    微信團(tuán)隊(duì)原創(chuàng)分享:Android版微信后臺(tái)?;顚?shí)戰(zhàn)分享(網(wǎng)絡(luò)保活篇)》 

    Android版微信從300KB到30MB的技術(shù)演進(jìn)(PPT講稿) [附件下載]》 

    微信團(tuán)隊(duì)原創(chuàng)分享:Android版微信從300KB到30MB的技術(shù)演進(jìn)》 

    微信技術(shù)總監(jiān)談架構(gòu):微信之道——大道至簡(jiǎn)(演講全文)

    微信技術(shù)總監(jiān)談架構(gòu):微信之道——大道至簡(jiǎn)(PPT講稿) [附件下載]》 

    如何解讀《微信技術(shù)總監(jiān)談架構(gòu):微信之道——大道至簡(jiǎn)》

    微信海量用戶背后的后臺(tái)系統(tǒng)存儲(chǔ)架構(gòu)(視頻+PPT) [附件下載]

    微信異步化改造實(shí)踐:8億月活、單機(jī)千萬(wàn)連接背后的后臺(tái)解決方案》 

    微信朋友圈海量技術(shù)之道PPT [附件下載]》 

    微信對(duì)網(wǎng)絡(luò)影響的技術(shù)試驗(yàn)及分析(論文全文)》 

    一份微信后臺(tái)技術(shù)架構(gòu)的總結(jié)性筆記》 

    架構(gòu)之道:3個(gè)程序員成就微信朋友圈日均10億發(fā)布量[有視頻]》 

    快速裂變:見(jiàn)證微信強(qiáng)大后臺(tái)架構(gòu)從0到1的演進(jìn)歷程(一)

    快速裂變:見(jiàn)證微信強(qiáng)大后臺(tái)架構(gòu)從0到1的演進(jìn)歷程(二)》 

    微信團(tuán)隊(duì)原創(chuàng)分享:Android內(nèi)存泄漏監(jiān)控和優(yōu)化技巧總結(jié)》 

    全面總結(jié)iOS版微信升級(jí)iOS9遇到的各種“坑”》 

    微信團(tuán)隊(duì)原創(chuàng)資源混淆工具:讓你的APK立減1M》 

    微信團(tuán)隊(duì)原創(chuàng)Android資源混淆工具:AndResGuard [有源碼]》 

    Android版微信安裝包“減肥”實(shí)戰(zhàn)記錄》 

    iOS版微信安裝包“減肥”實(shí)戰(zhàn)記錄》 

    移動(dòng)端IM實(shí)踐:iOS版微信界面卡頓監(jiān)測(cè)方案》 

    微信“紅包照片”背后的技術(shù)難題》 

    移動(dòng)端IM實(shí)踐:iOS版微信小視頻功能技術(shù)方案實(shí)錄》 

    移動(dòng)端IM實(shí)踐:Android版微信如何大幅提升交互性能(一)

    移動(dòng)端IM實(shí)踐:Android版微信如何大幅提升交互性能(二)

    移動(dòng)端IM實(shí)踐:實(shí)現(xiàn)Android版微信的智能心跳機(jī)制》 

    移動(dòng)端IM實(shí)踐:WhatsApp、Line、微信的心跳策略分析》 

    移動(dòng)端IM實(shí)踐:谷歌消息推送服務(wù)(GCM)研究(來(lái)自微信)

    移動(dòng)端IM實(shí)踐:iOS版微信的多設(shè)備字體適配方案探討》 

    信鴿團(tuán)隊(duì)原創(chuàng):一起走過(guò) iOS10 上消息推送(APNS)的坑

    騰訊信鴿技術(shù)分享:百億級(jí)實(shí)時(shí)消息推送的實(shí)戰(zhàn)經(jīng)驗(yàn)

    IPv6技術(shù)詳解:基本概念、應(yīng)用現(xiàn)狀、技術(shù)實(shí)踐(上篇)

    IPv6技術(shù)詳解:基本概念、應(yīng)用現(xiàn)狀、技術(shù)實(shí)踐(下篇)

    騰訊TEG團(tuán)隊(duì)原創(chuàng):基于MySQL的分布式數(shù)據(jù)庫(kù)TDSQL十年鍛造經(jīng)驗(yàn)分享

    微信多媒體團(tuán)隊(duì)訪談:音視頻開(kāi)發(fā)的學(xué)習(xí)、微信的音視頻技術(shù)和挑戰(zhàn)等

    了解iOS消息推送一文就夠:史上最全iOS Push技術(shù)詳解

    騰訊技術(shù)分享:微信小程序音視頻技術(shù)背后的故事

    騰訊資深架構(gòu)師干貨總結(jié):一文讀懂大型分布式系統(tǒng)設(shè)計(jì)的方方面面

    微信多媒體團(tuán)隊(duì)梁俊斌訪談:聊一聊我所了解的音視頻技術(shù)

    騰訊音視頻實(shí)驗(yàn)室:使用AI黑科技實(shí)現(xiàn)超低碼率的高清實(shí)時(shí)視頻聊天

    騰訊技術(shù)分享:微信小程序音視頻與WebRTC互通的技術(shù)思路和實(shí)踐

    手把手教你讀取Android版微信和手Q的聊天記錄(僅作技術(shù)研究學(xué)習(xí))

    微信技術(shù)分享:微信的海量IM聊天消息序列號(hào)生成實(shí)踐(算法原理篇)

    微信技術(shù)分享:微信的海量IM聊天消息序列號(hào)生成實(shí)踐(容災(zāi)方案篇)

    騰訊技術(shù)分享:GIF動(dòng)圖技術(shù)詳解及手機(jī)QQ動(dòng)態(tài)表情壓縮技術(shù)實(shí)踐

    微信團(tuán)隊(duì)分享:Kotlin漸被認(rèn)可,Android版微信的技術(shù)嘗鮮之旅

    >> 更多同類文章 ……

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



    作者:Jack Jiang (點(diǎn)擊作者姓名進(jìn)入Github)
    出處:http://www.52im.net/space-uid-1.html
    交流:歡迎加入即時(shí)通訊開(kāi)發(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
    主站蜘蛛池模板: eeuss免费影院| 久久久精品午夜免费不卡| 一本色道久久综合亚洲精品| 免费人成在线观看网站| 亚洲乱码中文论理电影| 四虎永久在线精品免费观看地址| 久久免费国产精品| 亚洲乱码中文字幕小综合| 国产啪亚洲国产精品无码| 最近2019中文字幕免费大全5| 亚洲国产欧美一区二区三区| 亚洲乳大丰满中文字幕| 最新中文字幕电影免费观看| 中国一级特黄的片子免费| 亚洲午夜理论片在线观看| 黑人精品videos亚洲人| 国产麻豆免费观看91| 色欲国产麻豆一精品一AV一免费 | 亚洲人成网站观看在线播放| 18禁美女裸体免费网站| 国产乱子伦精品免费视频| 456亚洲人成在线播放网站| 国产亚洲人成无码网在线观看| 最近2019中文免费字幕| 久久久久国产精品免费网站| 男人和女人高潮免费网站| 亚洲制服丝袜第一页| 亚洲成色WWW久久网站| 国产精品免费看香蕉| 中字幕视频在线永久在线观看免费| 四虎影视无码永久免费| 猫咪免费人成在线网站 | 国产成人精品日本亚洲专| 亚洲精品成人网站在线观看| 国产18禁黄网站免费观看| 最近免费中文字幕4| 亚洲天堂免费在线| 97精品免费视频| 日本一区午夜艳熟免费| 91av免费在线视频| 男人和女人高潮免费网站|