原创 源碼分析:redis的RDB持久化方式

rdb快照保存有兩種方式,save和bgsave。 相同點: 都會調用rdbSave函數來進行快照保存。 不同點: (1) SAVE 直接調用rdbSave ,阻塞Redis 主進程,直到保存完成爲止。在主進程阻塞期間,服務器不能處理客戶

原创 redis32位內存限制

這周,部署的redis服務器出現oom(out  of memory)錯誤,導致所有的寫操作都失敗,影響了所有線上部署的使用redis的相關應用。 經過分析,發現部署的32位redis實例能使用的最大內存只能爲4G(實際使用不到4G),配

原创 跨多個Activity回傳數據

使用INTENT_FLAG_FORWARD_RESULT標誌。 這個標誌有一個特殊的作用,就是能夠跨Activity傳遞Result。比如A1→A2,此時如果從A2中啓動A3,並且設置的啓動標誌爲FORWARD_RESULT,那麼A3運行

原创 【Android】線程使用Looper開啓循環後,怎麼終止一個線程

1.Looper有2個api可以用來退出循環: quit() quitSafely()   2.知道了api,我們可以在線程中調用以下代碼退出: Looper.myLooper.quit();

原创 【Android】消息隊列之異步消息

異步消息可以理解爲是用來提升消息的重要性,在有異步消息時,會優先處理距當前時間最近的異步消息,同步消息都不會被處理,繪製界面就是一個異步消息; 同步消息:沒有設置爲異步的消息都是同步消息; Message提供setAsynchronous

原创 LockSupport的park與unpark調用順序驗證

1.unpark在thread start之前調用 public static void main(String[] args) throws InterruptedException{ Thread threa

原创 求給定字符串的字典序最大的子序列

鏈接:https://ac.nowcoder.com/acm/problem/15805 來源:牛客網 給定字符串s,s只包含小寫字母,請求出字典序最大的子序列。 子序列:https://en.wikipedia.org/wiki/Sub

原创 lucene自定義排序例子

本人主要是參考lucene實戰一書,不過中文版上總是發現一些錯誤,導致程序並沒有給出想要的結果,還是要看api文檔。 lucene3.X實現自定義排序,主要是實現繼承FieldComparatorSource抽象類的子類和繼承FieldC

原创 字符編碼GBK,UTF-8

        GBK是漢字編碼標準之一,全稱《漢字內碼擴展規範》。GBK編碼,是在GB2312-80標準基礎上的內碼擴展規範,使用了雙字節編碼方案,其編碼範圍從8140至FEFE(剔除xx7F),共23940個碼位,共收錄了21003個

原创 openssl從內存中讀取RSA公鑰

背景:近期需要在項目中進行RSA簽名驗證,廠商會給出pem格式的RSA公鑰。在以往項目中使用openssl讀取RSA公鑰時基本都是從pem文件中讀取,基本沒什麼問題,可最近由於項目需要需要從數據庫中讀取RSA公鑰,經查資料發現openss

原创 URL中的特殊字符

URL中的特殊字符是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那麼就要使用他們的編碼了。編碼的格式爲:%加字符的ASCII碼,即一個百分號%,後面跟對應字符的ASCII(16進制)碼值。例如:  符號   特殊含義 

原创 redis源碼分析:主從模式中從服務器同步策略

從服務器在與主服務器建立連接後向主服務器發送同步命令,要求進行同步。發送同步命令後,將相應的讀操作設爲readSyncBulkPayload。 void syncWithMaster(aeEventLoop *el, int fd, vo

原创 ConcurrentHashMap爲什麼支持完全併發的讀

ConcurrentHashMap完全允許多個讀操作併發進行,讀操作並不需要加鎖。(事實上,ConcurrentHashMap支持完全併發的讀以及一定程度併發的寫。)如果使用傳統的技術,如HashMap中的實現,如果允許可以在hash鏈的

原创 源碼分析:redis主從複製

redis的主從複製,主要過程如下: (1)從服務器的時間事件函數serverCron運行replicationCron函數來發起同步請求. replicationCron()函數位於replication.c文件: void repli

原创 用消息隊列和消息應用狀態表來消除分佈式事務

由於數據量的巨大,大部分Web應用都需要部署很多個數據庫實例。這樣,有些用戶操作就可能需要去修改多個數據庫實例中的數據。傳統的解決方法是使用分佈式事務保證數據的全局一致性,經典的方法是使用兩階段提交協議。 長期以來,分佈式事務提供的優雅的