瀏覽作者:

小幫手

XMPP協議相關基礎概念

1. XMPP
eXtensible Messaging and Presence Protocol可擴展消息處理和現場協議,用於在2個地點之間傳遞小型的結構化數據段的協議。定義了在兩個或更多痛心屍體之間傳遞數據所採用的格式。
2. XMPP服務器
為XMPP節提供路由。
3.應用
在XMPP內部,可以找到由聯繫人組成的花名冊,可以用它們來創建定向或無向社交圖。
當聯繫人上下線時自動發送出席通知,而個人消息和公共消息時XMLPP系統的基礎應用。
有時候開發人選選擇XMPP作為底層技術。
4. XMPP內部功能塊
構建發布-訂閱服務、多人聊天、表單檢索和處理、實時數據傳輸、隱私控制、遠程過程調用。
5. XMPP節
XMPP通信的端點以節為單位來處理輸入和產生輸出。
首先有個XMPP流,然後所有工作都是在這個流上發送和接收XMPP節實現的。
XMPP流有2份XML文檔組成,通信的每個方向均有1份。這些文檔的根節點是<stream:stream>。這個stream節點的子節點由“可陸游的節以及流相關的頂級節點”構成。每個節都是一個XML元素(包括它的子節點)。
XMPP節有3種:<presence>、<message>、<iq>。

閱讀更多

Strophe JS 說明

    • Strophe對像中
      • 命名空間
      • 連接狀態
      • 日誌
      • addConnectionPlugin 添加插件
      • forEachChild
        • 示例,解析Vcard節
      • isTagEqual
      • xmlescape,xmlunescape,serialize
      • escapeNode,unescapeNode
      • 與JID相關的幾個方法getNodeFromJid,getDomainFromJid,getResourceFromJid,getBareJidFromJid
    • Strophe.Builder
      • 示例
    • Strophe.Handler和trophe.TimeHandler
    • SASL
      • Strophe.SASLMechanism 驗證機制
    • Strophe.Connection
      • connect, disconnect斷開連接。
      • send(elem) 發送節, sendIQ(elem, callback, errback, ti​​meout) 發送IQ節
      • addHandler,deleteHandler,addTimedHandler,deleteTimedHandler
      • xmlInput,xmlOutput,rawInput,rawOutput
    • Strohpe.Websocket,Strophe.Bosh 和Strophe.Request

閱讀更多

[Golang] groupcache的簡單範例

大概介紹

其實關於groupcache的介紹網上非常的多,搜索出來清一色都是說的介紹,當然也有配圖如何部署,但是文字與配圖完全不在一個時空,圖也是copy國外的一篇博客。它不像其它的一些緩存數據庫有個服務端,需要客戶端去連接,文檔中明確說明了它就是一個程序庫,所以沒有服務端與客戶端這麼一說,換句話說,它本沒有服務端,又或者是人人都是服務端,食神的感覺油然而生。

主要代碼結構

它的代碼結構也比較清晰,代碼量也不是很大,很適合大家去閱讀學習。主要分為了consistenthash(提供一致性哈希算法的支持),lru(提供了LRU方式清楚緩存的算法),singleflight(保證了多次相同請求只去獲取值一次,減少了資源消耗),還有一些源文件:byteview.go 提供類似於一個數據的容器,http.go提供不同地址間的緩存的溝通的實現,peers.go節點的定義,sinks.go感覺就是一個開闢空間給容器,並和容器交互的一個中間人,groupcache.go整個源碼裡的大當家,其它人都是為它服務的。

閱讀更多

大型的網站網站應該由如下6個子系統架構

一個大型的網站網站應該由如下6個子系統組成

  1. 負載均衡系統
  2. 反向代理系統
  3. Web服務器系統
  4. 分佈式存儲系統
  5. 底層服務系統
  6. 數據庫集群系統

為什麼要做高並發系統設計?

事實上,針對於任何單一的網絡服務器程序,其可承受的同時連接數目是有理論峰值的,通過C++中對TSocket的定義類型:word,我們可以判定這個連接理論峰值是65535,也就是說,你的單個服務器程序,最多可以承受6萬多的用戶同時連接。但是,在實際應用中,能達到一萬人的同時連接並能保證正常的數據交換已經是很不容易了,通常這個值都在2000到5000之間,能達到上萬已經很不錯了。目前的門戶網站動輒幾千萬的訪問量,所以,高並發的系統架構在所難免。

閱讀更多

WOL (Wake On Lan) 網絡喚醒遠端開機功能-在外就能讓電腦開機

網路喚醒-在外就能讓電腦開機

因為在家裡有兩台PC 一台 Windows 10 及一台 Linux CentOS 7,不知道是機器太老還是電源問題,有時就給他突然掛了,回家時竟然看到他在休息,關機在那邊等按開機,後來上網找了一下資料,有關網路開機的方式找到了 WOL (Wake On Lan),所以想要來試試看,後來就設定好了,其實也不難,中間還有遇到一點問題,他的環境是在 LAN 下面執行的,但如果你在外面的話,就要用一些別的方式,如果家裡有分享器支援DMZ功能的話,那可以去設定外部IP指項到內部IP,但又另一個問題,如果你沒有固定IP的話,那就不行了,後來我是用一支沒有用的手機來做遠端 WOL(Wake On Lan),整理一下資料如下。

使用工具

  1. WOL 主機上的設定(Windows 10 / CentOS 7)
  2. Teamviewer HOST
  3. Wake On Lan (Android / 免費)

閱讀更多

MySQL InnoDB四個交易(Transaction)級別

MySQL InnoDB交易的隔離級別有四級,默認是“可重複讀”(REPEATABLE READ)

  1. 未提交讀(Read Uncommitted)
    另一個交易修改了數據,但尚未提交,而本交易中的SELECT會讀到這些未被提交的數據髒讀(Dirty read)( 隔離級別最低,並發性能高 )。
  2. 提交讀(Read Committed)
    本交易讀取到的是最新的數據(其他交易提交後的)。
    狀況是,在同一個交易裡,前後兩次相同的SELECT會讀到不同的結果不重複讀(Don’t repeat)
    會出現不重複讀(Don’t repeat)幻讀(Phantom read)問題(鎖定正在讀取的行)
  3. 可重複讀(Repeatable Read)
    在同一個交易裡,SELECT的結果是交易開始時時間點的狀態,因此,同樣的SELECT操作讀到的結果會是一致的。但是,會有幻讀(Phantom read)現象(稍後解釋)。會出幻讀(Phantom read)(鎖定所讀取的所有行)。
  4. 串行化(Serializable)
    讀操作會隱式獲取共享鎖,可以保證不同交易間的互斥(鎖表)。

閱讀更多

AWS 申請免費 t2.micro 主機流程

如何在AWS上建立一個免費的 Instances EC2 主機?

首先你需要先在AWS註冊一個帳號,還需要綁定你的信用卡(如果你超過他使用的免費額度,他會直接跟你收費)

免費的部份怎麼算呢? 你可以參考他的官網:https://aws.amazon.com/cn/free/

你可以開多個主機嗎? 是可以的,只要你的主機運行每個月不要超過 750 小時,他就不會跟你收費了。

流量的部份怎麼算? 這邊你在查一下,我也沒有認真在看 XD

接下包按照以下七個步驟。

閱讀更多