欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java番外雜談之每天掃的二維碼你了解它內(nèi)含的信息嗎

 更新時(shí)間:2022年02月23日 15:26:14   作者:慕楓技術(shù)筆記  
二維碼已經(jīng)成為我們?nèi)粘I钪斜夭豢缮俚慕M成部分了,登錄需要掃一掃二維碼、買東西付錢需要掃一掃二維碼、開會(huì)簽到也需要掃一掃二維碼,那么如此使用的二維碼技術(shù),背后的原理是怎樣的呢?本文將結(jié)合二維碼的發(fā)展歷程以及典型應(yīng)用場景,分析二維碼背后的技術(shù)原理

??二維碼發(fā)展簡史??

條形碼的誕生

在理解二維碼技術(shù)原理之前,我們先來簡單看下它是怎么發(fā)展起來的。早在1948年,伯納德·塞爾沃還是費(fèi)城煤氣科技學(xué)院的一名研究生,在一次偶然的機(jī)會(huì)他得知當(dāng)?shù)氐囊患页械睦习逑胍洪L幫忙設(shè)計(jì)一種可以掃描商品價(jià)格的裝置,用以提高超市內(nèi)貨品銷售的效率。因?yàn)槌欣锏氖浙y員在結(jié)算貨品的時(shí)候每次都需要手動(dòng)輸入架構(gòu),超時(shí)客流量達(dá)的時(shí)候,收銀員結(jié)算效率十分低下。但是院長覺得這是一件非常不容易做到的事情。

然而伯納德·塞爾沃與他的朋友約瑟夫·伍德蘭德卻覺得這是一個(gè)巨大的商機(jī),決定要好好設(shè)計(jì)做出個(gè)可以商用的產(chǎn)品出來。在嘗試了紫外線照射石墨發(fā)光的方案、盲點(diǎn)系統(tǒng)以及點(diǎn)線符號(hào)系統(tǒng)等方案之后,由于當(dāng)時(shí)的技術(shù)限制,都沒有得到廣泛的應(yīng)用。

轉(zhuǎn)眼時(shí)間來到了20世紀(jì)60年代,伍德蘭德始終沒有放棄當(dāng)年那么沒有實(shí)現(xiàn)商業(yè)化應(yīng)用的金點(diǎn)子。此時(shí)他已經(jīng)是IBM的一位工程師了,在公司期間,他不斷闡述自己關(guān)于條形碼的技術(shù)實(shí)現(xiàn)想法,同事不斷強(qiáng)調(diào)條形碼的商業(yè)價(jià)值。與此同時(shí),激光以及計(jì)算機(jī)已經(jīng)開始應(yīng)用起來,條形碼實(shí)現(xiàn)的技術(shù)基礎(chǔ)已經(jīng)完成。大概在1969年,伍德蘭德參與到IBM公司投入的由喬治·勞雷爾負(fù)責(zé)的超市掃描儀和標(biāo)簽研究項(xiàng)目組中,經(jīng)過幾年的潛心研究,IBM終于推出了可識(shí)別的條形碼。

在1974年6月26日的這一天,世界上第一個(gè)條形碼掃描器被安裝在俄亥俄州特洛伊的馬什超市里。第一件被掃描的商品是10包箭牌的多汁水果味口香糖,這包口香糖如今已被美國歷史博物館收藏 。而后,條形碼被廣泛應(yīng)用于商品、書籍、郵政等系統(tǒng)中,極大地提升了業(yè)務(wù)運(yùn)行效率。

我們可以看得出來推動(dòng)技術(shù)進(jìn)步的往往都是現(xiàn)實(shí)生活中的業(yè)務(wù)需求。但是隨著條形碼的廣泛用,它的不足之處逐漸顯現(xiàn)出來,

1、條形碼的數(shù)據(jù)表示內(nèi)容非常有限,只能表示數(shù)字以及字母,無法表示更多的其他字符信息;

2、條形碼表示的數(shù)據(jù)量也非常有限,如果想要包含更多的數(shù)據(jù)只能不斷的進(jìn)行水平拉伸,導(dǎo)致條形碼越來越大,不利于商用;

3、條形碼如果出現(xiàn)變形或者條形丟失就會(huì)造成數(shù)據(jù)的不可獲取,影響業(yè)務(wù)的正常使用;

正因?yàn)闂l形碼存在著這樣以及那樣的不足之處,人們對于出現(xiàn)有一種可以表達(dá)更多信息的的期望與日俱增。

二維碼的橫空出世

雖然二維碼的應(yīng)用在中國大放異彩,但是實(shí)際上它是日本人發(fā)明的。日本 Denso Wave 公司(日本電裝株式會(huì)社(Denso Corporation)旗下的子公司)的騰弘原是二維碼的發(fā)明者。在公司的業(yè)務(wù)中需要對汽車的零部件標(biāo)注屬性信息,包括產(chǎn)地、生產(chǎn)時(shí)間、生產(chǎn)批次等等信息,傳統(tǒng)的條形碼無法滿足大量信息的標(biāo)注,因此需要一種涵蓋更加多信息的標(biāo)注方式。

騰弘原想到既然一維的條形碼沒辦法表達(dá)更多消息,那么是不是可以增加維度來讓其表示更多的信息,這就是二維碼的思考雛形。但是緊接著又遇到了如何讓這個(gè)二維碼能夠?qū)崿F(xiàn)高速的讀取。技術(shù)攻關(guān)小組利用正方形的四個(gè)角中的三個(gè)來作為定位符,然后通過剩余的一個(gè)角來判斷實(shí)際二維碼的方向,從而達(dá)到無論是從什么方向進(jìn)行掃描,都不影響二維碼內(nèi)容的讀取。

經(jīng)過幾年的反復(fù)測試,騰弘原的攻關(guān)小組終于攻克技術(shù)難關(guān),這個(gè)小小的方塊二維碼在信息存儲(chǔ)上相比條形碼提升了300倍,而在二維碼的識(shí)別速度上提升了10倍。在1994年,DENSO WAVE公司面向全日本開始推廣二維碼技術(shù),并將其命名為“Quick Response Code”。時(shí)至今日,二維碼已經(jīng)在全世界范圍內(nèi)得到廣泛應(yīng)用,尤其是在中國可以說是發(fā)揮到了極致。

技術(shù)原理

在網(wǎng)上我們可以輕松找到在線制作二維碼的工具網(wǎng)站,這些網(wǎng)站中,可以轉(zhuǎn)化為二維碼的信息包含了,文本、URL、圖片以及音視頻等等。由此可知二維碼的本質(zhì)實(shí)際就是一種數(shù)據(jù)信息的表現(xiàn)方式。

二維碼實(shí)際上是由于白色方塊以及黑色方塊組成,實(shí)際上就是對應(yīng)計(jì)算機(jī)世界中的0-1二進(jìn)制語言。其中黑色小方塊代表1,白色小方塊代表0。因此實(shí)際上黑白方塊的二維碼組合在一起就是0-1組成的信息組合。而0-1組成的二進(jìn)制數(shù)據(jù)實(shí)現(xiàn)對于信息的編碼,也是計(jì)算機(jī)可以看懂的語言。

(圖片來源于網(wǎng)絡(luò))

手機(jī)進(jìn)行二維碼掃描的時(shí)候,由于二維碼是黑白相間的二位點(diǎn)陣,通過光的反射進(jìn)入手機(jī)攝像頭時(shí)候,手機(jī)中的CMOS感光元件將接收到的光信號(hào)轉(zhuǎn)化為電信號(hào),而二維碼代表的0-1組合實(shí)際在手機(jī)中就是對應(yīng)的高低電位,最終解析為二維碼對應(yīng)的標(biāo)注信息。

??典型應(yīng)用---掃碼登錄??

掃碼登錄是二維碼非常典型的應(yīng)用場景,以前我們登錄網(wǎng)站需要輸入用戶名以及密碼,有時(shí)候還為一時(shí)想不起來密碼是多少而非常著急。自從有了二維碼登錄之后,只要拿出手機(jī)掃一掃web端的二維碼就可以完成登錄操作非常方便,那我們就來分析下二維碼掃描登錄的技術(shù)原理是怎樣的吧。

對于登錄這件事情來說,其本質(zhì)實(shí)際包含了兩件事情,第一件事情是告訴平臺(tái)你是誰,第二件事情是向平臺(tái)證明你就是你不是別人。那傳統(tǒng)的用戶名以及密碼登錄的方式,用戶名實(shí)際就是告訴平臺(tái)你是誰,而密碼就是向平臺(tái)證明你就是你。那么放在二維碼掃碼登錄的場景下,實(shí)際也是需要完成這兩件事情的支撐。下面我們分析下客戶端掃碼登錄掃碼登錄的實(shí)現(xiàn)機(jī)制。

客戶端掃碼登錄

我們在客戶端登錄的時(shí)候,需要輸入用戶名以及密碼信息,此后的客戶端與服務(wù)端的交互過程大致如下所示:

1、首先用戶在客戶端輸入用戶名以及密碼進(jìn)行登錄操作;

2、客戶端攜帶用戶名、密碼以及設(shè)備信息向服務(wù)端發(fā)起登錄請求;

3、服務(wù)端校驗(yàn)用戶名以及密碼信息,同時(shí)將賬號(hào)信息與設(shè)備信息進(jìn)行綁定,并返回token信息;

4、客戶端保存token信息;

5、再次登錄的時(shí)候不需要再傳遞用戶名以及密碼,將token信息以及設(shè)備信息傳遞給服務(wù)端,服務(wù)端校驗(yàn)token以及設(shè)備信息;

這里的token信息實(shí)際就是代替了賬號(hào)以及密碼信息,可以理解為一種數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)了賬號(hào)、設(shè)備等信息,用以后期的服務(wù)端校驗(yàn)。

上面所說的是客戶端登錄的大致步驟,它是客戶端掃碼登錄的基礎(chǔ),接下來我們再看下掃碼登錄的大致業(yè)務(wù)流程,如下所示:

在這個(gè)過程中最重要的是生成臨時(shí)的token,這個(gè)臨時(shí)token實(shí)際就是一種登錄的憑證,并且與二維碼一一對應(yīng),用過一次就會(huì)失效。那為什么要有這個(gè)臨時(shí)的token呢?實(shí)際是為了解決掃碼這個(gè)動(dòng)作與登錄的連接關(guān)系,系統(tǒng)需要確認(rèn)二維碼是被客戶端掃描后進(jìn)行的登錄操作。

微信第三方掃碼登錄

所謂微信第三方掃碼登錄指的是登錄CSDN,但是使用的是微信賬號(hào)進(jìn)行登錄,實(shí)際上就是用微信的賬號(hào)信息來當(dāng)做CSDN賬號(hào)信息使用。它上上述的客戶端登錄的最大不同就在于多了和微信開放平臺(tái)的交互。通過從微信開放平臺(tái)獲取用戶的頭像、用戶名等信息。

??總結(jié)??

本文主要結(jié)合了二維碼的技術(shù)發(fā)展歷程,闡述了二維碼的技術(shù)原理,同時(shí)對二維碼典型的應(yīng)用場景進(jìn)行了技術(shù)原理的分析,相信通過本文大家對于二維碼的原理有了更加深刻的理解。

到此這篇關(guān)于Java番外雜談之每天掃的二維碼你了解它內(nèi)含的信息嗎的文章就介紹到這了,更多相關(guān)Java 二維碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解析springcloud中的Hystrix

    解析springcloud中的Hystrix

    Hystrix是一個(gè)用于處理分布式系統(tǒng)的延遲和容錯(cuò)的開源庫,在分布式系統(tǒng)里,許多依賴不可避免的會(huì)調(diào)用失敗,比如超時(shí)、異常等。這篇文章主要介紹了springcloud中的Hystrix,需要的朋友可以參考下
    2020-10-10
  • java FastJson的簡單用法

    java FastJson的簡單用法

    FastJson是阿里的開源JSON解析庫,可以解析JSON格式的字符串,支持將Java Bean序列化為JSON字符串,也可以從JSON字符串反序列化到JavaBean,這里我介紹一下FastJson的使用,感興趣的朋友一起看看吧
    2021-09-09
  • 關(guān)于eclipse中運(yùn)行tomcat提示端口被占用的4種解決

    關(guān)于eclipse中運(yùn)行tomcat提示端口被占用的4種解決

    這篇文章主要介紹了關(guān)于eclipse中運(yùn)行tomcat提示端口被占用的4種解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • java 中同步方法和同步代碼塊的區(qū)別詳解

    java 中同步方法和同步代碼塊的區(qū)別詳解

    這篇文章主要介紹了java 中同步方法和同步代碼塊的區(qū)別是什么的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 將對象轉(zhuǎn)化為字符串的java實(shí)例

    將對象轉(zhuǎn)化為字符串的java實(shí)例

    這篇文章主要介紹了將對象轉(zhuǎn)化為字符串的java實(shí)例,有需要的朋友可以參考一下
    2013-12-12
  • Mybatis-Plus開發(fā)提速器generator的使用

    Mybatis-Plus開發(fā)提速器generator的使用

    本文就介紹這款基于Mybatis-Plus的代碼自助生成器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 基于mybatis查詢結(jié)果映射不到對象的處理

    基于mybatis查詢結(jié)果映射不到對象的處理

    這篇文章主要介紹了mybatis查詢結(jié)果映射不到對象的處理方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot靜態(tài)資源目錄訪問

    SpringBoot靜態(tài)資源目錄訪問

    今天小編就為大家分享一篇關(guān)于SpringBoot靜態(tài)資源目錄訪問,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 使用SpringAop動(dòng)態(tài)獲取mapper執(zhí)行的SQL,并保存SQL到Log表中

    使用SpringAop動(dòng)態(tài)獲取mapper執(zhí)行的SQL,并保存SQL到Log表中

    這篇文章主要介紹了使用SpringAop動(dòng)態(tài)獲取mapper執(zhí)行的SQL,并保存SQL到Log表中問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java重試機(jī)制使用RPC必須考慮冪等性原理解析

    java重試機(jī)制使用RPC必須考慮冪等性原理解析

    這篇文章主要為大家介紹了java重試機(jī)制使用RPC必須考慮冪等性原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03

最新評論