原创 MQTT協議QoS2 準確一次送達的實現

MQTT QoS熟悉MQTT協議的同學們一定知道,MQTT的publish有三個QoS,0,1,2。他們分別是:QoS0,最多一次送達。也就是發出去就fire掉,沒有後面的事情了。QoS1,至少一次送達。發出去之後必須等待ack,沒有ac

原创 cc2541實現全雙工串口讀寫

爲何要自己寫串口讀寫程序2541的osal封裝已經封裝好了串口的讀寫,爲何要自己實現一次呢?這裏最重要的原因是因爲默認實現的串口讀寫程序會對低功耗功能有影響,以及默認串口程序在進入低功耗的時候會去控制rx,tx,ct,rt腳,而很多時候我

原创 erlang序列化工具性能對比(erlang protobuf和term_to_binary對比)

公司內部最近做了一個性能測試,發現邏輯處理服務的加解包速度不行,於是做了簡單的benchmark,比對了公司用的protobuf庫和term_to_binary的性能差異。想看看性能如何。 測試的protobuf是basho的er

原创 對emqttd做benchmark的時候遇到的幾個坑

爲了測試emqttd在我們的刀片機上面的性能,我們做了一次benchmark,遇到了幾個有意思的問題 使用emqttc全力發送pub反而吞吐下降了 官方使用emqttc做了一個benchmark工具,其中有一個pub端,可以起n個連接,

原创 HTTP POST請求發送兩個TCP包?

今天瞎逛的時候看到有一篇16年的文章,說99%的人理解錯了HTTP中GET與POST的區別。前面大部分文章都沒問題,但是最後有一個,被作者奉爲大boss的區別: 我讀得書少,你不要騙我。於是我隨手拿公司的http服務,做了一次post請

原创 10倍性能!主動服務降級帶來更好的性能

雪崩效應 當一個服務已經負載不了當前的請求壓力的時候,應該主動暫停或者拒絕新到來的服務請求,以保證自身存活,以及防止雪崩效應。 我們舉一個例子來說明雪崩效應。 比如說有一個erlang的進程: 突然收到大量請求,請求數遠大於該進程的處理

原创 編譯鏈接的時候靜態庫順序導致符號未定義問題詳解

前情概要 接入新庫的時候遇到符號位定義問題。有人跟我說改一下庫的順序,就能解決問題。我試了下,嗯,問題是解決了。但是我總覺得庫之間不應該有依賴關係,畢竟鏈接庫就是個找符號的問題,如果有依賴,那a,b兩個庫,相互依賴,順序怎麼整呢?大型的軟

原创 java字符串編碼轉換過程中發生了啥?

背景: 有一個db鏈接,使用了latin1編碼。有一個latin1的表,裏面要存儲UTF8或者GBK的中文。 然後在java代碼層,爲了把正確編碼的中文落庫,使用了網上流傳着的這麼一段編碼轉換的代碼 public static Stri

原创 一個TCP/IP包出現兩個IP地址——IPv4-in-IPv4

今天在處理問題的時候,抓了一個包,發現裏面的IP層很奇怪,有兩層。但是wireshark完美解析了這個包。這讓我很疑惑,爲什麼一個包會有兩個IPv4地址呢? 按道理來說IP包後面就是數據段了,兩個IP包不會有問題嗎?但是隱約又覺得是ok

原创 RocksDB調優指南

本文原味來自rocksdb的英文wiki。翻譯後放在了我的repo中rocksdb-doc-cn,此處只做簡單轉發,並且原文沒有做任何校對,歡迎提修改意見。希望能幫助到有需要的朋友 下面是正文👇 本指南的目的是提供你足夠的信息用於根據自己

原创 gcc expected initializer before ‘class’

今天寫代碼的時候遇到了這個錯誤,想跟大家分享下。 這是一個神奇的編譯錯誤。報錯的地方打開可能完全看不到哪裏有問題,甚至你上網找也不好找到具體出錯的原因。 看報錯內容,應該是class前缺少一些東西導致他認爲出錯了,比如函數定義最後少了一個

原创 java.lang.VerifyError: Expecting a stackmap frame xxxx

最近在測試一個java寫的項目的時候遇到這個坑爹的問題。作爲一個c++開發,看到這個報錯表示慌的不行。這個錯誤後面就是一個Location,報出了具體調用的函數名,然後下面是描述:  Expected a stackmap frame a

原创 smart-deleteion-vim——讓你的回刪更智能

vim提供非常豐富的刪除方式。 normal模式下: x——直接刪除某個字符 dd——刪除整行 dw——從當前光標開始,刪除到單詞末尾 d^——從當前光標開始,往回刪除到行首 d&——從當前光標開始,刪除到行尾 dj——刪除當前行以及下一

原创 Codeforces Round #514 (Div. 2)

嗯,我又來水codeforces了 A. Cashier 很簡單,從頭到尾讀入客人到達的時間,然後跟上一個客人服務結束時間進行求差,然後除以吸菸時間即可(嗯,補一句,吸菸有害健康)。注意處理初始狀態和結束狀態即可。 #include <

原创 Codeforces Round #509 (Div. 2) 解題報告

A - Heist 某個店被搶劫了, 只記得所有的商品是從x開始標記,然後有y個,現在只知道剩下的商品的標號,求最少被偷了多少商品。 很簡單了,排序,然後從頭到位遍歷一邊,看中間缺了多少,就加多少就行 n = int(input())