2013年8月14日
摘要:
基于官方文檔2013.12.19最后一次改動(dòng)。
翻譯人:Weir Zhang (zh.weir)
旁白:水平有限,很多地方只是意譯。不準(zhǔn)確的地方,大家以原版文檔為準(zhǔn)。
原版地址:http://google-styleguide.googlecode.com/svn/trunk/javaguide.html
一、介紹
本文檔為Google Java編程規(guī)范的完整定義。依照此規(guī)范編寫的Java源碼文件可以被稱為Google Style。
和其他編程規(guī)范指南一樣,規(guī)范不僅包括了代碼的結(jié)構(gòu)美學(xué),也包括了其他一些業(yè)界約定俗成的公約和普遍采用的標(biāo)準(zhǔn)。本文檔中的規(guī)范基本都是業(yè)界已經(jīng)達(dá)成共識(shí)的標(biāo)準(zhǔn),我們盡量避免去定義那些還存在爭(zhēng)議的地方。
1.1 術(shù)語(yǔ)說(shuō)明
本文檔除非特殊說(shuō)明,否則:
a、class(類)統(tǒng)指普通的class類型、enum枚舉類型、interfa
閱讀全文
摘要: 背景
事實(shí)上,在前些年,隨著wifi的興起,特別是wifi direct的推出,藍(lán)牙一度沒(méi)落了。然而近一兩年隨著移動(dòng)智能終端指數(shù)級(jí)增長(zhǎng),穿戴式設(shè)備興起,藍(lán)牙4.0推出,特別是低功耗藍(lán)牙(BLE)的推出,藍(lán)牙又煥發(fā)了新的青春氣息。
此次藍(lán)牙的復(fù)興,可以明顯感覺(jué)出人們對(duì)藍(lán)牙與wifi訴求的差異化。wifi的優(yōu)勢(shì)在于傳輸速度,大文件、塊數(shù)據(jù)的傳輸,正很快地向wifi direct切換。而藍(lán)牙的優(yōu)勢(shì)在于多樣化設(shè)備間的無(wú)線連接和數(shù)據(jù)共享。
藍(lán)牙之所以有這個(gè)優(yōu)勢(shì),我想主要原因是藍(lán)牙歷史悠久,有相當(dāng)多現(xiàn)成的設(shè)備間通信標(biāo)準(zhǔn)和協(xié)議。另外藍(lán)牙模塊成本低、體積小,非常適合應(yīng)用于穿戴式設(shè)備等小型設(shè)備。加之新推出的低功耗藍(lán)牙將耗電量降得非常低,穿戴設(shè)備用一個(gè)紐扣電池就能用好幾個(gè)月甚至幾年。
經(jīng)典藍(lán)牙應(yīng)用場(chǎng)景包括藍(lán)牙耳機(jī)、藍(lán)牙音箱、藍(lán)牙鼠標(biāo)、藍(lán)牙鍵盤等。而隨著低功耗藍(lán)牙的推出,穿戴式設(shè)備開(kāi)始流行起來(lái),例如手環(huán)、手表、防丟掛件等。
穿戴式設(shè)備對(duì)藍(lán)牙來(lái)說(shuō)預(yù)示著一種趨勢(shì)。那就是在Android與Arduino讓一切物體智能起來(lái)的時(shí)代,藍(lán)牙可以作為一種強(qiáng)大穩(wěn)定的無(wú)線通信技術(shù),讓一切
閱讀全文
摘要: 一、關(guān)鍵概念:
Generic Attribute Profile (GATT)
通過(guò)BLE連接,讀寫屬性類小數(shù)據(jù)的Profile通用規(guī)范。現(xiàn)在所有的BLE應(yīng)用Profile都是基于GATT的。
Attribute Protocol (ATT)
GATT是基于ATT Protocol的。ATT針對(duì)BLE設(shè)備做了專門的優(yōu)化,具體就是在傳輸過(guò)程中使用盡量少的數(shù)據(jù)。每個(gè)屬性都有一個(gè)唯一的UUID,屬性將以characteristics and services的形式傳輸。
Characteristic
Characteristic可以理解為一個(gè)數(shù)據(jù)類型,它包括一個(gè)value和0至多個(gè)對(duì)次value的描述(Descriptor)。
Descriptor
對(duì)Characteristic的描述,例如范圍、計(jì)量單位等。
Service
Characteristic的集合。例如一個(gè)service叫做“Heart Rate Monitor”,它可能包含多個(gè)Characteris
閱讀全文
摘要: 從最近幾年開(kāi)始,做平臺(tái)的公司都流行起Open API。這是一個(gè)非常好的理念,也受到廣大開(kāi)發(fā)者的歡迎。如今,開(kāi)發(fā)一款軟件,你可以很容易地集成微博、微信、人人網(wǎng)等流行社交媒介的分享功能,做一個(gè)社交應(yīng)用變得越來(lái)越簡(jiǎn)單。
主流社交媒介要集成到第三方應(yīng)用中,最重要的入口就是安全便捷的授權(quán)認(rèn)證系統(tǒng)。讓用戶在享受一鍵分享和各種社交樂(lè)趣的同時(shí),又不用擔(dān)心帳號(hào)安全和隱私泄露等問(wèn)題。而對(duì)于一些有特殊目的的組織或個(gè)人來(lái)說(shuō),攻占這個(gè)授權(quán)認(rèn)證系統(tǒng)意味著自己獲取了信息傳播的入口和渠道,數(shù)量龐大地社交入口往往能帶來(lái)巨大的社會(huì)效應(yīng)。所以,這個(gè)入口就成了軟件安全攻防雙方的必爭(zhēng)之地。
而本文所要講的就是當(dāng)前最為流行的新浪微博Android客戶端SSO授權(quán)認(rèn)證入口的一個(gè)安全缺陷。此缺陷使得第三方APK在一定條件下可以不通過(guò)授權(quán),在不需要人為操作的情況下就可以操作Android手機(jī)用戶的微博。包括關(guān)注、評(píng)論、發(fā)微博等OpenAPI中提供的功能。
閱讀全文
摘要: 最近微信出了5.0,新增了游戲中心,并內(nèi)置了一個(gè)經(jīng)典游戲《飛機(jī)大戰(zhàn)》。游戲其實(shí)很簡(jiǎn)單,但由于可以和好友一起競(jìng)爭(zhēng)排名,一時(shí)間受到大家的追捧,小伙伴們進(jìn)入“全民打飛機(jī)”時(shí)代。
ios 版出來(lái)不久就被破解出了無(wú)敵模式。Android版出后好像一直風(fēng)平浪靜。周末無(wú)事,加之看雪zmworm版主邀請(qǐng),于是花了一天的工夫研究了下。也出了個(gè)Android版的無(wú)敵模式增強(qiáng)版。具體來(lái)說(shuō)就是無(wú)敵、雙排子彈加無(wú)限炸彈。當(dāng)然,這個(gè)不是重點(diǎn),我們的重點(diǎn)當(dāng)然是技術(shù)細(xì)節(jié)啦!
微信的游戲繼承了Android版手機(jī)QQ游戲中心的思想,也采用插件動(dòng)態(tài)加載方式。具體來(lái)說(shuō),就是插件及游戲以jar包形式存在,jar包中有classes.dex及其他資源文件,在運(yùn)行時(shí)動(dòng)態(tài)加載資源及classes.dex代碼。這樣的好處是靈活管理,易于擴(kuò)展。以后更多的游戲只要上架到微信的服務(wù)器,用戶就能在微信應(yīng)用內(nèi)部下載、安裝、運(yùn)行。具體原理可以參考我2011年的一篇文章《Android類動(dòng)態(tài)加載技術(shù)》 。
當(dāng)然,那篇文章講的只是基本原理,而微信在代碼動(dòng)態(tài)加載方面則走得更遠(yuǎn)。針對(duì)插件的管理
閱讀全文