挨踢部落坐診第四期:Java消息隊列的應用場景和作用
原創【51CTO.com原創稿件】活動說明:挨踢部落是為核心開發者提供深度技術交流,解決開發需求,資源共享的服務社群。基于此社群,我們邀請了業界技術大咖對開發需求進行一對一突破,解除開發過程中的絆腳石。以最專業、***效的答復為開發者解決開發難題。
消息隊列
話題關鍵詞:消息隊列、索引、App、路由、接口
部落陣容:51CTO管理團隊;
面向對象:移動開發者、IT運維、數據分析師
參與方式:加入51CTO開發者QQ交流群(群號370892523(已滿)、請加312724475),有任何技術問題,在群里提問,或發給群主小官。
活動詳情:
重慶-小包-Android:我一運行就報這個錯,等待程序接入,這是什么問題?
成都-恩威-云計算:看一下防火墻或者安全規則是否攔截了?打開AndroidManifest.xml代碼文件,注釋掉或者刪除掉這行:
- <uses-sdk android:minSdkVersion="8" /> 即可。
吉林-初見-SE:創建的索引,查詢確實變快了,不過1.6G的數據漲了1G多,"變為2.6G了!這漲了一半的量對勁嗎?我是插入完數據再添加的索引,很慢。表只有兩個列,只給一個列添加了索引,下次試試創建表的時候添加索引有什么區別。
廣州-大數據-益達:肯定不一樣。建表加索引,是結構已經固定,比如采用B-tree,當數據來的時候,才添加索引到索引樹里面了。你整體數據導入后再建索引,數據量越大,B-tree的構建時間越長。只是構建花時間,索引構建時機不同。一般設計在建表的時候就要建索引。設計合理,索引本身就會增加空間。可以理解成是以空間換時間的方式。不合理的索引設計,會導致索引成本增加。你這只有2列。索引主要是為了where條件里面的查詢,可以了。
深圳-圳-Java:請求大神一個問題,Java消息隊列主要用于什么場景?在程序中又起到了什么作用?
1>北京-陽陽-安卓:很明顯,隊列的長度有限,所以不適用于大數據量的,消息如果一直在隊列中,得不到處理,也會有問題。發送消息的時候太多,處理不過來,就放到隊列里,一個個處理。
2>廣州-大數據-益達:最明顯的一個作用,就是防止雪崩。某一時刻數據量突然增大,起到一個緩沖。
3>北京-arige-Android:一般都是異步的,不要求立即響應。打個比喻,你同時只能做一件事,但是你有一個ToDoList,每做完一個,在ToDoList中劃掉一個,有新的分給你的任務,就放到ToDoList后面,這個ToDoList差不多就是一個隊列了,隊列就是一種數據結構,減輕的不止是數據庫的壓力。
4>成都-劉聲杰-后端:消息隊列可以用來實現一些懶操作,很多懶操作,我們都可以用消息隊列來實現,當然還可以用來實現不同語言之間的通訊。懶操作是指一些不及時的操作,耗時的操作,比如發送郵件、圖片處理、數據統計等等。這些不需要立即返回結果的,都可以先用消息隊列保存起來,然后一個個的處理。比如發送郵件的操作,一種是多線程來處理,因為發送郵件需要時間, 如果有了消息隊列,我們僅僅需要將發送郵件所需要的數據放在消息隊列里面,然后另一個專門發送郵件的程序從消息隊列里面一個個的獲取,然后發送。而這時發送郵件的前端,僅僅只需要將數據保存到消息隊列就返回了,不需要等郵件真正的發送出去才返回。你可以發郵件,但是有一個阻塞,如果你不用單獨的線程,就像你要遠程計算一張圖片的大小一樣,還是需要等圖片下載完了,才能夠獲取大小,而這個圖片下載需要時間,是對中間等待時間的優化。
深圳-圳-Java:有誰知道H5如何實現手機錄音?
安徽-Coeus-PHP:需要第三方支持,要是微信開發簡單點,直接調用微信的API就可以了,之前github上有record.js處理這個問題,可以搜一下。https://github.com/mattdiamond/Recorderjs看看行不行 。
安徽-Coeus-PHP:話說關于JAVA學習我有一個疑問,Android是屬于Java WEB前端的范疇嗎?
北京-arige-Android:不屬于吧,Java只是一個語言而已,Android是一個系統,能寫win應用的語言有很多,但是不能說WIN是哪個語言的一部分。
鄭州-白楊-返校學習:曹老師,視覺分辨人臉技術和驗證碼圖形自動填充屬于一個理念嗎?人臉檢測使用什么框架的?
北京-曹洪偉-半吊子全棧工匠 :不一樣。人臉檢測 用的是 OpenCV3,計算機視覺領域著名的開源庫。
上海-小杰-學生:請教下,我這個問題怎么調整?
1>安徽-coeus-PHP:是不是安裝固態硬盤?要把BIOS的硬盤模式修改一下。
2>江蘇-麥克-大數:是不是新的機器,BIOS有個模式改為傳統就行了,目前應該是UEFI模式。
3>南昌-小草-設計/前端:不需要裝固態,這種進PE修改一下硬盤分區,你只需要一個分區助手。應該是重裝系統激活時候提示的吧,一般重新分區就好了。
鄭州-哎呀-php:接口使用HTTPS時,App應用訪問接口加上Token,是否需要再使用簽名?對于一些不需要登錄就能瀏覽的接口安全應該怎么限制呢?也就是不需要權限驗證就能瀏覽,為了防止一些數據抓取,惡心行為,大神們誰給普及下。
1>北京-崔一凡-架構師:一般來說,有Token就可以了。看你的目的了,你的接口設計如果只能讓你的App訪問的話,你和App協商好交互協議就行了,后臺和App約定秘鑰,報文加密傳。每次版本換一個,報文中約定版本號,根據版本號再做點手段。或者你可以設計的復雜點,比如App安裝初始化的時候自動生成秘鑰,發到后臺保存起來,設備標記是不變的。反正無論你怎么考慮安全,都是能被破解的,我也沒有萬無一失的手段,只能多加幾層驗證機制,增加別人破解的成本。
2>安徽-Coeus-PHP:基本上這么做,分配app_key和app_secret,客戶端通過app_key和app_secret去服務端驗證并且換來具有失效性的token_code,然后客戶端在通過token_code為憑證去取數據。
北京-晶晶-lT:我問下,公司網絡,必須在這里配置一下才能上網,不配置的話不能上網,這里面怎么配置?比如現在我有20臺電腦不想讓他們上網,然后要是需要網絡呢,就在這里配置一下就可以上網了。
1>云南-小元素-VBA:其實告訴你一個簡單辦法。MAC封鎖就可以了,路由器有MAC封鎖功能。可以制作網絡IP沖突,找到局域網內能上網的某個IP,修改你計算機MAC,填寫對方MAC就可以了,可以ping下你們LAN中哪個地址可ping通,然后arp -a 就能解析到對方的macle。也可以批量ping下你們公司的IP,寫個bat腳本,或者直接下載MAC工具直接掃,這三個方法都可以。
2>北京-軍閥-嵌入式:把你的IP地址改成他的,然后去路由器表里綁定MAC,如果對方是自動獲取地址就不管用了。
北京-晶晶-lT:紅線的這個路由器端口是不是要配置下?現在紅線的這個我按照綠線那臺配置的,不通,不知道哪里出錯了。
1>北京-RK-Java:你用的是 Cisco Packet Tracer 吧,可以去51CTO看韓立剛老師的關于Packet Tracer的視頻。
2>北京-小蟲-安全:看看你的接口弄錯了沒,華為的模擬器和思科的模擬器配置都不一樣,命令和思科的也不一樣,都是相同的網絡技術做基礎,只是命令上會有一些區別,想學這個,要不就學思科,要不就學華為,命令沒有必要死記硬背,用到的時候打個問號就都出來了。
問號出來的就是在當前地方可以輸入那些命令,后面還有命令的解釋,我記得華為的還有中文的解釋。你輸show ?就會出來show這個后面可以跟那些命令,比如你輸入show和輸入sh效果是一樣的。
每個模式都有自己的命令,帶#號的是進入特權模式,你找本CCNA的書看看,51CTO下載頻道多的是。也可以看HCNA和HCNP,HCNA和HCNP是華為的,CCNA是思科的。敲命令沒啥難度,先把理論看看,然后在敲命令做相關的實驗,這樣會比較好學,給個很簡單的Cisco PT的實例教程,跟著上面敲一遍理解交換和路由理論。***你也可以看看IE。
武漢-華子-運維:Dynamips,Boson NetSim,GNS3,Cisco設備模擬哪家強?有沒有可以同時模擬Cisco和華為多廠家的?
廣州-狄欽dQ-PHP:沒有一個模擬器可以模擬所有的,掌握理論才是最重要的。PT是思科官方模擬器,圖形化前端,簡單易用,目前比較流行的有GNS, Dynamips。
您對這些解答方案是否仍有疑問?歡迎加51CTO開發者QQ交流群 312724475 討論。
下期活動預告:5月9日
關鍵詞:智能客服、深度學習、移動、云平臺
活動回顧:挨踢部落***期:Spark離線分析維度
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】